using GameServ::Types::ItemTypes;\r
using GameServ::Types::Modifiers;\r
using GameServ::Types::Range;\r
+using GameServ::Types::ObjectTypes;\r
\r
#include <string>\r
using std::string;\r
void Uses(const int &value);\r
\r
//! Property get - Item Type\r
- ItemTypes::ItemType Type(void) const;\r
-\r
- //! Property set - Item Type\r
- void Type(const ItemTypes::ItemType &value);\r
+ virtual ItemTypes::ItemType Type(void) const = 0;\r
\r
//! Property get - Modifiers\r
map<Modifiers::Modifier, Range> Modifiers(void) const;\r
//! Property set - Modifiers\r
void Modifiers(const map<Modifiers::Modifier, Range> &modifiers);\r
\r
- //! Use item on a player.\r
- void Use(shared_ptr<GameObject> spPlayer);\r
+ //! Use item on a game object\r
+ virtual void Use(shared_ptr<GameObject> spObject);\r
+ //! Undo item's last effect on a game object\r
+ virtual void Undo(shared_ptr<GameObject> spObject);\r
+\r
+ virtual ItemGO *Clone(void) const = 0;\r
\r
- virtual ItemGO *Clone(void) const;\r
+ virtual ObjectTypes::ObjectType ObjectType(void) const;\r
\r
protected:\r
string mName;\r
unsigned long int mPrice;\r
int mUses;\r
- ItemTypes::ItemType mType;\r
map<Modifiers::Modifier, Range> mModifiers;\r
\r
//! Base class standard modifier applier. Simply adds the modified stat to the correct stat\r
virtual void ApplyModifier(shared_ptr<GameObject> spObject, const Modifiers::Modifier &modifier, Range r);\r
+ virtual void UndoModifier(shared_ptr<GameObject> spObject, const Modifiers::Modifier &modifier, Range r);\r
};\r
}}}\r
#endif
\ No newline at end of file