aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rwxr-xr-xsrc/server/game/Entities/GameObject/GameObject.cpp13
-rwxr-xr-xsrc/server/game/Entities/GameObject/GameObject.h12
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;