aboutsummaryrefslogtreecommitdiff
path: root/src/game/InstanceData.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/game/InstanceData.cpp')
-rw-r--r--src/game/InstanceData.cpp37
1 files changed, 37 insertions, 0 deletions
diff --git a/src/game/InstanceData.cpp b/src/game/InstanceData.cpp
index d2b341b2d2c..551db4eb2cb 100644
--- a/src/game/InstanceData.cpp
+++ b/src/game/InstanceData.cpp
@@ -242,3 +242,40 @@ std::string InstanceData::GetBossSaveData()
saveStream << (uint32)i->state << " ";
return saveStream.str();
}
+
+void InstanceData::DoUseDoorOrButton(uint64 uiGuid, uint32 uiWithRestoreTime, bool bUseAlternativeState)
+{
+ if (!uiGuid)
+ return;
+
+ GameObject* pGo = instance->GetGameObject(uiGuid);
+
+ if (pGo)
+ {
+ if (pGo->GetGoType() == GAMEOBJECT_TYPE_DOOR || pGo->GetGoType() == GAMEOBJECT_TYPE_BUTTON)
+ {
+ if (pGo->getLootState() == GO_READY)
+ pGo->UseDoorOrButton(uiWithRestoreTime,bUseAlternativeState);
+ else if (pGo->getLootState() == GO_ACTIVATED)
+ pGo->ResetDoorOrButton();
+ }
+ else
+ error_log("SD2: Script call DoUseDoorOrButton, but gameobject entry %u is type %u.",pGo->GetEntry(),pGo->GetGoType());
+ }
+}
+
+void InstanceData::DoRespawnGameObject(uint64 uiGuid, uint32 uiTimeToDespawn)
+{
+ if (GameObject* pGo = instance->GetGameObject(uiGuid))
+ {
+ //not expect any of these should ever be handled
+ if (pGo->GetGoType()==GAMEOBJECT_TYPE_FISHINGNODE || pGo->GetGoType()==GAMEOBJECT_TYPE_DOOR ||
+ pGo->GetGoType()==GAMEOBJECT_TYPE_BUTTON || pGo->GetGoType()==GAMEOBJECT_TYPE_TRAP)
+ return;
+
+ if (pGo->isSpawned())
+ return;
+
+ pGo->SetRespawnTime(uiTimeToDespawn);
+ }
+}