roh/conf/area/
roh/game/talk/
roh/help/
roh/monsters/ocean/
roh/objects/ocean/
roh/player/
roh/rooms/area/1/
roh/rooms/misc/
roh/rooms/ocean/
roh/src-2.44b/
/*
 * guilds.h
 *	 Header file for guilds
 *   ____            _               
 *  |  _ \ ___  __ _| |_ __ ___  ___ 
 *  | |_) / _ \/ _` | | '_ ` _ \/ __|
 *  |  _ <  __/ (_| | | | | | | \__ \
 *  |_| \_\___|\__,_|_|_| |_| |_|___/
 *
 * Permission to use, modify and distribute is granted via the
 *  Creative Commons - Attribution - Non Commercial - Share Alike 3.0 License
 *    http://creativecommons.org/licenses/by-nc-sa/3.0/
 *  
 * 	Copyright (C) 2007-2009 Jason Mitchell, Randi Mitchell
 * 	   Contributions by Tim Callahan, Jonathan Hseu
 *  Based on Mordor (C) Brooke Paul, Brett J. Vickers, John P. Freeman
 *
 */
#ifndef GUILDS_H_
#define GUILDS_H_


class GuildCreation {
public:
	GuildCreation();

	bool addSupporter(Player* supporter);
	bool removeSupporter(bstring supporterName);
	void renameSupporter(bstring oldName, bstring newName);
	bool saveToXml(xmlNodePtr rootNode) const;

public:
	bstring name;
	bstring leader;
	bstring leaderIp;
	int		status;
	int		numSupporters;
	// first = name
	// second = ip
	std::map<bstring, bstring> supporters;
};


class Guild {
public:
	Guild();
	Guild(xmlNodePtr curNode);
	void recalcLevel();
	int averageLevel();
	bool addMember(bstring memberName);
	bool delMember(bstring memberName);
	bool isMember(bstring memberName);
	void renameMember(bstring oldName, bstring newName);
	void parseGuildMembers(xmlNodePtr cur);
	bool saveToXml(xmlNodePtr rootNode) const;

	static bool requireInside(Player* player, Room* room);
public:

	bstring name;
	unsigned short num;
	bstring leader;
	long	level;		// Sum of everyone's level in the guild
	int		numMembers; // Number of members in the guild
	long	pkillsIn;
	long	pkillsWon;
	Money	bank;
	long	points;		// Points from quests/etc
	std::list<bstring> members;
};



#endif /*GUILDS_H_*/