summaryrefslogtreecommitdiff
path: root/src/game-server/abilitycomponent.h
diff options
context:
space:
mode:
authorErik Schilling <ablu.erikschilling@googlemail.com>2013-04-23 23:36:09 +0200
committerErik Schilling <ablu.erikschilling@googlemail.com>2013-08-26 22:56:46 +0200
commitc2f00b2f3ba920cb25333d19a1d37d251342caf8 (patch)
tree5d782446b6679c9f74661d64a3c6d9f778136717 /src/game-server/abilitycomponent.h
parent10c33df8e5a13e7e7b4a3ea203516536582b2f4b (diff)
downloadmanaserv-c2f00b2f3ba920cb25333d19a1d37d251342caf8.tar.gz
manaserv-c2f00b2f3ba920cb25333d19a1d37d251342caf8.tar.bz2
manaserv-c2f00b2f3ba920cb25333d19a1d37d251342caf8.tar.xz
manaserv-c2f00b2f3ba920cb25333d19a1d37d251342caf8.zip
[Abilities] Added support for a global cooldown
Each ability can now define a cooldown that prevents the player from using other abilities for a while. The time of this cooldown can be set to any attribute. The modified value of the attribute is the value of the cooldown in game ticks. The cooldown will be automatically started if the ability has `autoconsume` set to true. Otherwise a script has to call entity:cooldown_ability(ability).
Diffstat (limited to 'src/game-server/abilitycomponent.h')
-rw-r--r--src/game-server/abilitycomponent.h14
1 files changed, 13 insertions, 1 deletions
diff --git a/src/game-server/abilitycomponent.h b/src/game-server/abilitycomponent.h
index ae48e917..c44dcb7f 100644
--- a/src/game-server/abilitycomponent.h
+++ b/src/game-server/abilitycomponent.h
@@ -23,6 +23,7 @@
#include "game-server/abilitymanager.h"
#include "game-server/component.h"
+#include "game-server/timeout.h"
#include <sigc++/signal.h>
@@ -65,13 +66,19 @@ public:
bool setAbilityMana(int id, int mana);
+ void startCooldown(Entity &entity,
+ const AbilityManager::AbilityInfo *abilityInfo);
+ int remainingCooldown() const;
+
sigc::signal<void, int> signal_ability_changed;
sigc::signal<void, int> signal_ability_took;
-
+ sigc::signal<void> signal_cooldown_activated;
private:
bool abilityUseCheck(AbilityMap::iterator it);
void attributeChanged(Entity *entity, unsigned attr);
+ Timeout mCooldown;
+
AbilityMap mAbilities;
};
@@ -105,4 +112,9 @@ inline const AbilityMap &AbilityComponent::getAbilities() const
return mAbilities;
}
+inline int AbilityComponent::remainingCooldown() const
+{
+ return mCooldown.remaining();
+}
+
#endif /* ABILITYCOMPONENT_H_ */