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/
/*
 * stats.h
 *	 Header file for stats
 *   ____            _               
 *  |  _ \ ___  __ _| |_ __ ___  ___ 
 *  | |_) / _ \/ _` | | '_ ` _ \/ __|
 *  |  _ <  __/ (_| | | | | | | \__ \
 *  |_| \_\___|\__,_|_|_| |_| |_|___/
 *
 * 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 STAT_H_
#define STAT_H_

class Stat
{
public:
	Stat();
	virtual ~Stat();
	
	bool load(xmlNodePtr curNode);
	void save(xmlNodePtr parentNode, const char* statName) const;
	
	int increaseMax(int amt);
	int decreaseMax(int amt);
	int adjustMax(int amt);
	
	int increase(int amt, bool overMaxOk = false);
	int decrease(int amt);
	int adjust(int amt, bool overMaxOk = false);
	
	short getCur() const;
	short getMax() const;
	short getInitial() const;

	void addCur(short a);
	void addMax(short a);
	int setMax(short newMax, bool allowZero=false);
	int setCur(short newCur);
	void setInitial(short i);
	
	int restore(); // Set a stat to it's maximum value
protected:
	short	cur;
	short	max;
	short	tmpMax;
	short	initial;
};

#endif /*STAT_H_*/