diff options
author | Philipp Sehmisch <mana@crushnet.org> | 2010-05-09 17:03:47 +0200 |
---|---|---|
committer | Philipp Sehmisch <mana@crushnet.org> | 2010-05-09 17:03:47 +0200 |
commit | cfff8488b15d00d6f7e3e7bf6cf9723c1fe91d0b (patch) | |
tree | f1e0e62fa8c06d859f3d9d4b9c8b5cf4cbdbd013 /src | |
parent | 1ef56bda12f9f18f0c91903b330e0422cfd98793 (diff) | |
download | manaserv-cfff8488b15d00d6f7e3e7bf6cf9723c1fe91d0b.tar.gz manaserv-cfff8488b15d00d6f7e3e7bf6cf9723c1fe91d0b.tar.xz manaserv-cfff8488b15d00d6f7e3e7bf6cf9723c1fe91d0b.zip |
Floor items are now removed after a (configurable) time.
Reviewed-by: Thorbjorn Lindeijer
Diffstat (limited to 'src')
-rw-r--r-- | src/game-server/item.cpp | 22 | ||||
-rw-r--r-- | src/game-server/item.hpp | 11 |
2 files changed, 29 insertions, 4 deletions
diff --git a/src/game-server/item.cpp b/src/game-server/item.cpp index 2737be0..91d847d 100644 --- a/src/game-server/item.cpp +++ b/src/game-server/item.cpp @@ -24,9 +24,12 @@ #include "game-server/item.hpp" +#include "common/configuration.hpp" #include "game-server/being.hpp" +#include "game-server/state.hpp" #include "scripting/script.hpp" + ItemType itemTypeFromString (const std::string &name) { static std::map<const std::string, ItemType> table; @@ -130,3 +133,22 @@ bool ItemClass::use(Being *itemUser) mModifiers.applyAttributes(itemUser); return true; } + + +Item::Item(ItemClass *type, int amount) + : Actor(OBJECT_ITEM), mType(type), mAmount(amount) +{ + mLifetime = Configuration::getValue("floorItemDecayTime", 0) * 10; +} + +void Item::update() +{ + if (mLifetime) + { + mLifetime--; + if (!mLifetime) + { + GameState::enqueueRemove(this); + } + } +} diff --git a/src/game-server/item.hpp b/src/game-server/item.hpp index 777f505..4aa84c9 100644 --- a/src/game-server/item.hpp +++ b/src/game-server/item.hpp @@ -269,12 +269,14 @@ class ItemClass unsigned mAttackRange; /**< Attack range when used as a weapon */ }; +/** +* Class for an item stack laying on the floor in the game world +*/ + class Item : public Actor { public: - Item(ItemClass *type, int amount) - : Actor(OBJECT_ITEM), mType(type), mAmount(amount) - {} + Item(ItemClass *type, int amount); ItemClass *getItemClass() const { return mType; } @@ -282,11 +284,12 @@ class Item : public Actor int getAmount() const { return mAmount; } - virtual void update() {} + virtual void update(); private: ItemClass *mType; unsigned char mAmount; + int mLifetime; }; #endif |