diff options
-rwxr-xr-x | src/server/game/Entities/GameObject/GameObject.cpp | 13 | ||||
-rwxr-xr-x | src/server/game/Entities/GameObject/GameObject.h | 12 |
2 files changed, 23 insertions, 2 deletions
diff --git a/src/server/game/Entities/GameObject/GameObject.cpp b/src/server/game/Entities/GameObject/GameObject.cpp index 3c5521f6b87..4c85977aec5 100755 --- a/src/server/game/Entities/GameObject/GameObject.cpp +++ b/src/server/game/Entities/GameObject/GameObject.cpp @@ -451,7 +451,7 @@ void GameObject::Update(uint32 diff) if (goInfo->trap.spellId) CastSpell(ok, goInfo->trap.spellId); - m_cooldownTime = time(NULL) + 4; // 4 seconds + m_cooldownTime = time(NULL) + goInfo->trap.cooldown ? goInfo->trap.cooldown : uint32(4); // template or 4 seconds if (owner) // || goInfo->trap.charges == 1) SetLootState(GO_JUST_DEACTIVATED); @@ -1048,7 +1048,16 @@ void GameObject::Use(Unit* user) AI()->GossipHello(playerUser); } - switch(GetGoType()) + // If cooldown data present in template + if (uint32 cooldown = GetGOInfo()->GetCooldown()) + { + if (m_cooldownTime > sWorld->GetGameTime()) + return; + + m_cooldownTime = sWorld->GetGameTime() + cooldown; + } + + switch (GetGoType()) { case GAMEOBJECT_TYPE_DOOR: //0 case GAMEOBJECT_TYPE_BUTTON: //1 diff --git a/src/server/game/Entities/GameObject/GameObject.h b/src/server/game/Entities/GameObject/GameObject.h index 6254666fdf6..604a3c8ba55 100755 --- a/src/server/game/Entities/GameObject/GameObject.h +++ b/src/server/game/Entities/GameObject/GameObject.h @@ -495,6 +495,7 @@ struct GameObjectInfo default: return 0; } } + uint32 GetGossipMenuId() const { switch(type) @@ -504,6 +505,7 @@ struct GameObjectInfo default: return 0; } } + uint32 GetEventScriptId() const { switch(type) @@ -514,6 +516,16 @@ struct GameObjectInfo default: return 0; } } + + uint32 GetCooldown() const // Cooldown preventing goober and traps to cast spell + { + switch (type) + { + case GAMEOBJECT_TYPE_TRAP: return trap.cooldown; + case GAMEOBJECT_TYPE_GOOBER: return goober.cooldown; + default: return 0; + } + } }; class OPvPCapturePoint; |