aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/server/game/Entities/GameObject/GameObject.cpp6
-rw-r--r--src/server/game/Entities/GameObject/GameObject.h2
2 files changed, 7 insertions, 1 deletions
diff --git a/src/server/game/Entities/GameObject/GameObject.cpp b/src/server/game/Entities/GameObject/GameObject.cpp
index 8e99560dc0e..0aa37080ce6 100644
--- a/src/server/game/Entities/GameObject/GameObject.cpp
+++ b/src/server/game/Entities/GameObject/GameObject.cpp
@@ -53,6 +53,7 @@ GameObject::GameObject() : WorldObject(false), MapObject(),
m_usetimes = 0;
m_spellId = 0;
m_cooldownTime = 0;
+ m_prevGoState = GO_STATE_ACTIVE;
m_goInfo = nullptr;
m_goData = nullptr;
m_packedRotation = 0;
@@ -260,6 +261,7 @@ bool GameObject::Create(uint32 name_id, Map* map, uint32 /*phaseMask*/, Position
m_model = CreateModel();
// GAMEOBJECT_BYTES_1, index at 0, 1, 2 and 3
SetGoType(GameobjectTypes(goinfo->type));
+ m_prevGoState = go_state;
SetGoState(go_state);
SetGoArtKit(artKit);
@@ -1197,7 +1199,9 @@ void GameObject::ResetDoorOrButton()
if (m_lootState == GO_READY || m_lootState == GO_JUST_DEACTIVATED)
return;
- SwitchDoorOrButton(false);
+ RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_IN_USE);
+ SetGoState(m_prevGoState);
+
SetLootState(GO_JUST_DEACTIVATED);
m_cooldownTime = 0;
}
diff --git a/src/server/game/Entities/GameObject/GameObject.h b/src/server/game/Entities/GameObject/GameObject.h
index f438c0366b8..b2173ad170b 100644
--- a/src/server/game/Entities/GameObject/GameObject.h
+++ b/src/server/game/Entities/GameObject/GameObject.h
@@ -1167,6 +1167,8 @@ class TC_GAME_API GameObject : public WorldObject, public GridObject<GameObject>
bool m_spawnedByDefault;
time_t m_cooldownTime; // used as internal reaction delay time store (not state change reaction).
// For traps this: spell casting cooldown, for doors/buttons: reset time.
+ GOState m_prevGoState; // What state to set whenever resetting
+
GuidSet m_SkillupList;
ObjectGuid m_ritualOwnerGUID; // used for GAMEOBJECT_TYPE_RITUAL where GO is not summoned (no owner)