From 3d20f8902badc689ff932ebd565f117f6254cf0b Mon Sep 17 00:00:00 2001 From: KJack Date: Tue, 14 Nov 2023 06:13:28 -0500 Subject: [PATCH] feat(Core/Instance): InstanceScript: create `Remove` functions (#17702) InstanceScript: create `Remove` helper functions --- src/server/game/Instances/InstanceScript.cpp | 41 +++++++++++++++---- src/server/game/Instances/InstanceScript.h | 15 ++++--- .../instance_blackrock_spire.cpp | 2 +- .../MoltenCore/instance_molten_core.cpp | 6 +-- .../instance_sunwell_plateau.cpp | 4 +- .../AzjolNerub/instance_azjol_nerub.cpp | 4 +- .../RubySanctum/instance_ruby_sanctum.cpp | 4 +- .../instance_drak_tharon_keep.cpp | 4 +- .../Northrend/Gundrak/instance_gundrak.cpp | 4 +- .../instance_icecrown_citadel.cpp | 10 ++--- .../Northrend/Nexus/Nexus/instance_nexus.cpp | 8 ++-- .../BlackTemple/instance_black_temple.cpp | 4 +- .../SerpentShrine/instance_serpent_shrine.cpp | 4 +- .../instance_magtheridons_lair.cpp | 8 ++-- .../Mechanar/instance_mechanar.cpp | 4 +- .../arcatraz/instance_arcatraz.cpp | 2 +- 16 files changed, 77 insertions(+), 47 deletions(-) diff --git a/src/server/game/Instances/InstanceScript.cpp b/src/server/game/Instances/InstanceScript.cpp index 5bc15b670..95eae070f 100644 --- a/src/server/game/Instances/InstanceScript.cpp +++ b/src/server/game/Instances/InstanceScript.cpp @@ -56,26 +56,26 @@ void InstanceScript::SaveToDB() void InstanceScript::OnCreatureCreate(Creature* creature) { - AddObject(creature, true); - AddMinion(creature, true); + AddObject(creature); + AddMinion(creature); } void InstanceScript::OnCreatureRemove(Creature* creature) { - AddObject(creature, false); - AddMinion(creature, false); + RemoveObject(creature); + RemoveMinion(creature); } void InstanceScript::OnGameObjectCreate(GameObject* go) { - AddObject(go, true); - AddDoor(go, true); + AddObject(go); + AddDoor(go); } void InstanceScript::OnGameObjectRemove(GameObject* go) { - AddObject(go, false); - AddDoor(go, false); + RemoveObject(go); + RemoveObject(go); } ObjectGuid InstanceScript::GetObjectGuid(uint32 type) const @@ -262,6 +262,11 @@ void InstanceScript::AddObject(Creature* obj, bool add) } } +void InstanceScript::RemoveObject(Creature* obj) +{ + AddObject(obj, false); +} + void InstanceScript::AddObject(GameObject* obj, bool add) { ObjectInfoMap::const_iterator j = _gameObjectInfo.find(obj->GetEntry()); @@ -271,6 +276,11 @@ void InstanceScript::AddObject(GameObject* obj, bool add) } } +void InstanceScript::RemoveObject(GameObject* obj) +{ + AddObject(obj, false); +} + void InstanceScript::AddObject(WorldObject* obj, uint32 type, bool add) { if (add) @@ -287,6 +297,11 @@ void InstanceScript::AddObject(WorldObject* obj, uint32 type, bool add) } } +void InstanceScript::RemoveObject(WorldObject* obj, uint32 type) +{ + AddObject(obj, type, false); +} + void InstanceScript::AddDoor(GameObject* door, bool add) { DoorInfoMapBounds range = doors.equal_range(door->GetEntry()); @@ -309,6 +324,11 @@ void InstanceScript::AddDoor(GameObject* door, bool add) UpdateDoorState(door); } +void InstanceScript::RemoveDoor(GameObject* door) +{ + AddDoor(door, false); +} + void InstanceScript::AddMinion(Creature* minion, bool add) { MinionInfoMap::iterator itr = minions.find(minion->GetEntry()); @@ -321,6 +341,11 @@ void InstanceScript::AddMinion(Creature* minion, bool add) itr->second.bossInfo->minion.erase(minion); } +void InstanceScript::RemoveMinion(Creature* minion) +{ + AddMinion(minion, false); +} + bool InstanceScript::SetBossState(uint32 id, EncounterState state) { if (id < bosses.size()) diff --git a/src/server/game/Instances/InstanceScript.h b/src/server/game/Instances/InstanceScript.h index da82f1fdc..71ea33391 100644 --- a/src/server/game/Instances/InstanceScript.h +++ b/src/server/game/Instances/InstanceScript.h @@ -275,12 +275,17 @@ protected: void LoadMinionData(MinionData const* data); void LoadObjectData(ObjectData const* creatureData, ObjectData const* gameObjectData); - void AddObject(Creature* obj, bool add); - void AddObject(GameObject* obj, bool add); - void AddObject(WorldObject* obj, uint32 type, bool add); + void AddObject(Creature* obj, bool add = true); + void RemoveObject(Creature* obj); + void AddObject(GameObject* obj, bool add = true); + void RemoveObject(GameObject* obj); + void AddObject(WorldObject* obj, uint32 type, bool add = true); + void RemoveObject(WorldObject* obj, uint32 type); - void AddDoor(GameObject* door, bool add); - void AddMinion(Creature* minion, bool add); + void AddDoor(GameObject* door, bool add = true); + void RemoveDoor(GameObject* door); + void AddMinion(Creature* minion, bool add = true); + void RemoveMinion(Creature* minion); void UpdateDoorState(GameObject* door); void UpdateMinionState(Creature* minion, EncounterState state); diff --git a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/instance_blackrock_spire.cpp b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/instance_blackrock_spire.cpp index 91fd97f24..8977f82ec 100644 --- a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/instance_blackrock_spire.cpp +++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/instance_blackrock_spire.cpp @@ -176,7 +176,7 @@ public: creature->AI()->Talk(SAY_FINKLE_GANG); break; case NPC_CHROMATIC_ELITE_GUARD: - AddMinion(creature, true); + AddMinion(creature); break; } } diff --git a/src/server/scripts/EasternKingdoms/BlackrockMountain/MoltenCore/instance_molten_core.cpp b/src/server/scripts/EasternKingdoms/BlackrockMountain/MoltenCore/instance_molten_core.cpp index f97f3661a..45a2de64e 100644 --- a/src/server/scripts/EasternKingdoms/BlackrockMountain/MoltenCore/instance_molten_core.cpp +++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/MoltenCore/instance_molten_core.cpp @@ -111,7 +111,7 @@ public: case NPC_FLAMEWALKER_HEALER: case NPC_FLAMEWALKER_ELITE: { - AddMinion(creature, true); + AddMinion(creature); break; } } @@ -123,7 +123,7 @@ public: { case NPC_FIRESWORN: { - AddMinion(creature, false); + RemoveMinion(creature); break; } case NPC_FLAMEWALKER: @@ -132,7 +132,7 @@ public: case NPC_FLAMEWALKER_HEALER: case NPC_FLAMEWALKER_ELITE: { - AddMinion(creature, false); + RemoveMinion(creature); break; } } diff --git a/src/server/scripts/EasternKingdoms/SunwellPlateau/instance_sunwell_plateau.cpp b/src/server/scripts/EasternKingdoms/SunwellPlateau/instance_sunwell_plateau.cpp index 39e4c9f8b..5e3e6e2e3 100644 --- a/src/server/scripts/EasternKingdoms/SunwellPlateau/instance_sunwell_plateau.cpp +++ b/src/server/scripts/EasternKingdoms/SunwellPlateau/instance_sunwell_plateau.cpp @@ -154,7 +154,7 @@ public: case GO_FIRE_BARRIER: case GO_MURUS_GATE_1: case GO_MURUS_GATE_2: - AddDoor(go, true); + AddDoor(go); break; case GO_ICE_BARRIER: IceBarrierGUID = go->GetGUID(); @@ -187,7 +187,7 @@ public: case GO_BOSS_COLLISION_1: case GO_BOSS_COLLISION_2: case GO_FORCE_FIELD: - AddDoor(go, false); + RemoveDoor(go); break; default: break; diff --git a/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/instance_azjol_nerub.cpp b/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/instance_azjol_nerub.cpp index 8e747214d..ecdcadef1 100644 --- a/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/instance_azjol_nerub.cpp +++ b/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/instance_azjol_nerub.cpp @@ -87,7 +87,7 @@ public: case GO_ANUBARAK_DOORS1: case GO_ANUBARAK_DOORS2: case GO_ANUBARAK_DOORS3: - AddDoor(go, true); + AddDoor(go); break; } } @@ -100,7 +100,7 @@ public: case GO_ANUBARAK_DOORS1: case GO_ANUBARAK_DOORS2: case GO_ANUBARAK_DOORS3: - AddDoor(go, false); + RemoveDoor(go); break; } } diff --git a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/instance_ruby_sanctum.cpp b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/instance_ruby_sanctum.cpp index 126c0caa2..bd38226f0 100644 --- a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/instance_ruby_sanctum.cpp +++ b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/instance_ruby_sanctum.cpp @@ -125,7 +125,7 @@ public: case GO_BURNING_TREE_3: case GO_BURNING_TREE_4: case GO_TWILIGHT_FLAME_RING: - AddDoor(go, true); + AddDoor(go); break; case GO_FLAME_RING: FlameRingGUID = go->GetGUID(); @@ -143,7 +143,7 @@ public: case GO_BURNING_TREE_2: case GO_BURNING_TREE_3: case GO_BURNING_TREE_4: - AddDoor(go, false); + RemoveDoor(go); break; } } diff --git a/src/server/scripts/Northrend/DraktharonKeep/instance_drak_tharon_keep.cpp b/src/server/scripts/Northrend/DraktharonKeep/instance_drak_tharon_keep.cpp index 0956ff233..5c29b7eca 100644 --- a/src/server/scripts/Northrend/DraktharonKeep/instance_drak_tharon_keep.cpp +++ b/src/server/scripts/Northrend/DraktharonKeep/instance_drak_tharon_keep.cpp @@ -50,7 +50,7 @@ public: case GO_NOVOS_CRYSTAL_2: case GO_NOVOS_CRYSTAL_3: case GO_NOVOS_CRYSTAL_4: - AddDoor(go, true); + AddDoor(go); break; } } @@ -63,7 +63,7 @@ public: case GO_NOVOS_CRYSTAL_2: case GO_NOVOS_CRYSTAL_3: case GO_NOVOS_CRYSTAL_4: - AddDoor(go, false); + RemoveDoor(go); break; } } diff --git a/src/server/scripts/Northrend/Gundrak/instance_gundrak.cpp b/src/server/scripts/Northrend/Gundrak/instance_gundrak.cpp index 3859e54aa..494e0a093 100644 --- a/src/server/scripts/Northrend/Gundrak/instance_gundrak.cpp +++ b/src/server/scripts/Northrend/Gundrak/instance_gundrak.cpp @@ -107,7 +107,7 @@ public: case GO_GAL_DARAH_DOORS0: case GO_GAL_DARAH_DOORS1: case GO_GAL_DARAH_DOORS2: - AddDoor(gameobject, true); + AddDoor(gameobject); break; } } @@ -121,7 +121,7 @@ public: case GO_GAL_DARAH_DOORS0: case GO_GAL_DARAH_DOORS1: case GO_GAL_DARAH_DOORS2: - AddDoor(gameobject, false); + RemoveDoor(gameobject); break; } } diff --git a/src/server/scripts/Northrend/IcecrownCitadel/instance_icecrown_citadel.cpp b/src/server/scripts/Northrend/IcecrownCitadel/instance_icecrown_citadel.cpp index 461daa754..a092c425a 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/instance_icecrown_citadel.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/instance_icecrown_citadel.cpp @@ -727,7 +727,7 @@ public: case GO_SINDRAGOSA_SHORTCUT_EXIT_DOOR: case GO_ICE_WALL: case GO_SINDRAGOSA_ENTRANCE_DOOR: - AddDoor(go, true); + AddDoor(go); break; case GO_SCIENTIST_ENTRANCE: PutricideEnteranceDoorGUID = go->GetGUID(); @@ -737,7 +737,7 @@ public: case GO_DOODAD_ICECROWN_ROOSTPORTCULLIS_01: case GO_DOODAD_ICECROWN_ROOSTPORTCULLIS_04: if (instance->Is25ManRaid()) - AddDoor(go, true); + AddDoor(go); break; case GO_LADY_DEATHWHISPER_ELEVATOR: LadyDeathwisperElevatorGUID = go->GetGUID(); @@ -758,7 +758,7 @@ public: break; case GO_SAURFANG_S_DOOR: DeathbringerSaurfangDoorGUID = go->GetGUID(); - AddDoor(go, true); + AddDoor(go); break; case GO_DEATHBRINGER_S_CACHE_10N: case GO_DEATHBRINGER_S_CACHE_25N: @@ -873,7 +873,7 @@ public: go->SetRespawnTime(7 * DAY); break; case GO_SCOURGE_TRANSPORTER_FIRST: - AddDoor(go, true); + AddDoor(go); ScourgeTransporterFirstGUID = go->GetGUID(); if (GetBossState(DATA_LORD_MARROWGAR) == DONE) go->RemoveGameObjectFlag(GO_FLAG_NOT_SELECTABLE); @@ -911,7 +911,7 @@ public: case GO_SINDRAGOSA_SHORTCUT_EXIT_DOOR: case GO_ICE_WALL: case GO_SCOURGE_TRANSPORTER_FIRST: - AddDoor(go, false); + RemoveDoor(go); break; case GO_THE_SKYBREAKER_A: case GO_ORGRIMS_HAMMER_H: diff --git a/src/server/scripts/Northrend/Nexus/Nexus/instance_nexus.cpp b/src/server/scripts/Northrend/Nexus/Nexus/instance_nexus.cpp index b7c709c8b..ee01108e9 100644 --- a/src/server/scripts/Northrend/Nexus/Nexus/instance_nexus.cpp +++ b/src/server/scripts/Northrend/Nexus/Nexus/instance_nexus.cpp @@ -93,17 +93,17 @@ public: case GO_TELESTRA_SPHERE: if (GetBossState(DATA_TELESTRA_ORB) != DONE && GetBossState(DATA_MAGUS_TELESTRA_EVENT) == DONE) gameObject->RemoveGameObjectFlag(GO_FLAG_NOT_SELECTABLE); - AddDoor(gameObject, true); + AddDoor(gameObject); break; case GO_ANOMALUS_SPHERE: if (GetBossState(DATA_ANOMALUS_ORB) != DONE && GetBossState(DATA_ANOMALUS_EVENT) == DONE) gameObject->RemoveGameObjectFlag(GO_FLAG_NOT_SELECTABLE); - AddDoor(gameObject, true); + AddDoor(gameObject); break; case GO_ORMOROK_SPHERE: if (GetBossState(DATA_ORMOROK_ORB) != DONE && GetBossState(DATA_ORMOROK_EVENT) == DONE) gameObject->RemoveGameObjectFlag(GO_FLAG_NOT_SELECTABLE); - AddDoor(gameObject, true); + AddDoor(gameObject); break; } } @@ -115,7 +115,7 @@ public: case GO_TELESTRA_SPHERE: case GO_ANOMALUS_SPHERE: case GO_ORMOROK_SPHERE: - AddDoor(gameObject, false); + RemoveDoor(gameObject); break; } } diff --git a/src/server/scripts/Outland/BlackTemple/instance_black_temple.cpp b/src/server/scripts/Outland/BlackTemple/instance_black_temple.cpp index 13b27e4df..97abe7ca8 100644 --- a/src/server/scripts/Outland/BlackTemple/instance_black_temple.cpp +++ b/src/server/scripts/Outland/BlackTemple/instance_black_temple.cpp @@ -156,7 +156,7 @@ public: case GO_ILLIDAN_GATE: case GO_ILLIDAN_DOOR_R: case GO_ILLIDAN_DOOR_L: - AddDoor(go, true); + AddDoor(go); break; } } @@ -178,7 +178,7 @@ public: case GO_ILLIDAN_GATE: case GO_ILLIDAN_DOOR_R: case GO_ILLIDAN_DOOR_L: - AddDoor(go, false); + RemoveDoor(go); break; } } diff --git a/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/instance_serpent_shrine.cpp b/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/instance_serpent_shrine.cpp index fdedecd3f..96efecd58 100644 --- a/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/instance_serpent_shrine.cpp +++ b/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/instance_serpent_shrine.cpp @@ -86,7 +86,7 @@ public: case GO_COILFANG_BRIDGE1: case GO_COILFANG_BRIDGE2: case GO_COILFANG_BRIDGE3: - AddDoor(go, true); + AddDoor(go); break; case GO_SHIELD_GENERATOR1: case GO_SHIELD_GENERATOR2: @@ -105,7 +105,7 @@ public: case GO_COILFANG_BRIDGE1: case GO_COILFANG_BRIDGE2: case GO_COILFANG_BRIDGE3: - AddDoor(go, false); + RemoveDoor(go); break; } } diff --git a/src/server/scripts/Outland/HellfireCitadel/MagtheridonsLair/instance_magtheridons_lair.cpp b/src/server/scripts/Outland/HellfireCitadel/MagtheridonsLair/instance_magtheridons_lair.cpp index 33b1c1113..25cd929b7 100644 --- a/src/server/scripts/Outland/HellfireCitadel/MagtheridonsLair/instance_magtheridons_lair.cpp +++ b/src/server/scripts/Outland/HellfireCitadel/MagtheridonsLair/instance_magtheridons_lair.cpp @@ -66,7 +66,7 @@ public: _magtheridonGUID = creature->GetGUID(); break; case NPC_HELLFIRE_CHANNELER: - AddMinion(creature, true); + AddMinion(creature); break; case NPC_HELLFIRE_WARDER: _wardersSet.insert(creature->GetGUID()); @@ -79,7 +79,7 @@ public: switch (creature->GetEntry()) { case NPC_HELLFIRE_CHANNELER: - AddMinion(creature, false); + RemoveMinion(creature); break; } } @@ -89,7 +89,7 @@ public: switch (go->GetEntry()) { case GO_MAGTHERIDON_DOORS: - AddDoor(go, true); + AddDoor(go); break; case GO_MANTICRON_CUBE: _cubesSet.insert(go->GetGUID()); @@ -111,7 +111,7 @@ public: switch (go->GetEntry()) { case GO_MAGTHERIDON_DOORS: - AddDoor(go, false); + RemoveDoor(go); break; case GO_MANTICRON_CUBE: _cubesSet.erase(go->GetGUID()); diff --git a/src/server/scripts/Outland/TempestKeep/Mechanar/instance_mechanar.cpp b/src/server/scripts/Outland/TempestKeep/Mechanar/instance_mechanar.cpp index 9ef1d005c..74793de2c 100644 --- a/src/server/scripts/Outland/TempestKeep/Mechanar/instance_mechanar.cpp +++ b/src/server/scripts/Outland/TempestKeep/Mechanar/instance_mechanar.cpp @@ -50,7 +50,7 @@ public: case GO_DOOR_MOARG_1: case GO_DOOR_MOARG_2: case GO_DOOR_NETHERMANCER: - AddDoor(gameObject, true); + AddDoor(gameObject); break; default: break; @@ -64,7 +64,7 @@ public: case GO_DOOR_MOARG_1: case GO_DOOR_MOARG_2: case GO_DOOR_NETHERMANCER: - AddDoor(gameObject, false); + RemoveDoor(gameObject); break; default: break; diff --git a/src/server/scripts/Outland/TempestKeep/arcatraz/instance_arcatraz.cpp b/src/server/scripts/Outland/TempestKeep/arcatraz/instance_arcatraz.cpp index 3f73ddf87..7f8ea0ebd 100644 --- a/src/server/scripts/Outland/TempestKeep/arcatraz/instance_arcatraz.cpp +++ b/src/server/scripts/Outland/TempestKeep/arcatraz/instance_arcatraz.cpp @@ -55,7 +55,7 @@ public: { case GO_CONTAINMENT_CORE_SECURITY_FIELD_ALPHA: case GO_CONTAINMENT_CORE_SECURITY_FIELD_BETA: - AddDoor(go, true); + AddDoor(go); break; case GO_STASIS_POD_ALPHA: StasisPodGUIDs[0] = go->GetGUID();