diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/server/game/Entities/GameObject/GameObject.cpp | 6 | ||||
-rw-r--r-- | src/server/game/Entities/GameObject/GameObject.h | 2 |
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 9db3fc6a402..6e538b935bf 100644 --- a/src/server/game/Entities/GameObject/GameObject.cpp +++ b/src/server/game/Entities/GameObject/GameObject.cpp @@ -49,6 +49,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; @@ -247,6 +248,7 @@ bool GameObject::Create(ObjectGuid::LowType guidlow, uint32 name_id, Map* map, u 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); @@ -1122,7 +1124,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 4fcb31e1722..455e68463e1 100644 --- a/src/server/game/Entities/GameObject/GameObject.h +++ b/src/server/game/Entities/GameObject/GameObject.h @@ -891,6 +891,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 + std::list<ObjectGuid::LowType> m_SkillupList; ObjectGuid m_ritualOwnerGUID; // used for GAMEOBJECT_TYPE_SUMMONING_RITUAL where GO is not summoned (no owner) |