diff options
| author | UltraNix <80540499+UltraNix@users.noreply.github.com> | 2022-01-17 00:38:57 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-01-16 20:38:57 -0300 |
| commit | b74fb81b8c10a305e64baf62408e7adf8ee8327e (patch) | |
| tree | 1bba1a5066585bf9581a83390f1c627e14163db8 /src | |
| parent | 19b68ffb578f6216613ed4cfd84a2304d38c1eed (diff) | |
fix(Scripts/Instances): Fixed some problems with getting proper unit'… (#10193)
* fix(Scripts/Instances): Fixed some problems with getting proper unit's GUID in BlackwingLair raid.
Fixes #5054
Fixes #10156
* Update.
Diffstat (limited to 'src')
2 files changed, 41 insertions, 16 deletions
diff --git a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_chromaggus.cpp b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_chromaggus.cpp index 9d6bcb9036..cb2df3ce8b 100644 --- a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_chromaggus.cpp +++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_chromaggus.cpp @@ -305,21 +305,24 @@ class go_chromaggus_lever : public GameObjectScript { go_chromaggus_leverAI(GameObject* go) : GameObjectAI(go), _instance(go->GetInstanceScript()) { } - bool OnGossipHello(Player* player) + bool GossipHello(Player* player, bool reportUse) override { - if (_instance->GetBossState(DATA_CHROMAGGUS) != DONE && _instance->GetBossState(DATA_CHROMAGGUS) != IN_PROGRESS) + if (reportUse) { - _instance->SetBossState(DATA_CHROMAGGUS, IN_PROGRESS); + if (_instance->GetBossState(DATA_CHROMAGGUS) != DONE && _instance->GetBossState(DATA_CHROMAGGUS) != IN_PROGRESS) + { + _instance->SetBossState(DATA_CHROMAGGUS, IN_PROGRESS); - if (Creature* creature = _instance->instance->GetCreature(_instance->GetGuidData(DATA_CHROMAGGUS))) - creature->AI()->AttackStart(player); + if (Creature* creature = _instance->instance->GetCreature(_instance->GetGuidData(DATA_CHROMAGGUS))) + creature->AI()->AttackStart(player); - if (GameObject* go = _instance->instance->GetGameObject(_instance->GetGuidData(DATA_GO_CHROMAGGUS_DOOR))) - _instance->HandleGameObject(ObjectGuid::Empty, true, go); - } + if (GameObject* go = _instance->instance->GetGameObject(_instance->GetGuidData(DATA_GO_CHROMAGGUS_DOOR))) + _instance->HandleGameObject(ObjectGuid::Empty, true, go); + } - me->SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE | GO_FLAG_IN_USE); - me->SetGoState(GO_STATE_ACTIVE); + me->SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE | GO_FLAG_IN_USE); + me->SetGoState(GO_STATE_ACTIVE); + } return true; } diff --git a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/instance_blackwing_lair.cpp b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/instance_blackwing_lair.cpp index bc8b29bedd..5c92c51596 100644 --- a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/instance_blackwing_lair.cpp +++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/instance_blackwing_lair.cpp @@ -84,6 +84,9 @@ public: case NPC_RAZORGORE: razorgoreGUID = creature->GetGUID(); break; + case NPC_CHROMAGGUS: + chromaggusGUID = creature->GetGUID(); + break; case NPC_BLACKWING_DRAGON: case NPC_BLACKWING_TASKMASTER: case NPC_BLACKWING_LEGIONAIRE: @@ -92,6 +95,12 @@ public: if (CreatureAI* razorAI = razor->AI()) razorAI->JustSummoned(creature); break; + case NPC_NEFARIAN: + nefarianGUID = creature->GetGUID(); + break; + case NPC_VICTOR_NEFARIUS: + victorNefariusGUID = creature->GetGUID(); + break; default: break; } @@ -114,10 +123,14 @@ public: case GO_PORTCULLIS_VAELASTRASZ: case GO_PORTCULLIS_BROODLORD: case GO_PORTCULLIS_THREEDRAGONS: - case GO_PORTCULLIS_CHROMAGGUS: case GO_PORTCULLIS_NEFARIAN: AddDoor(go, true); break; + case GO_PORTCULLIS_CHROMAGGUS: + AddDoor(go, true); + chromaggusDoorGUID = go->GetGUID(); + go->SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE); + break; default: break; } @@ -186,7 +199,7 @@ public: switch (state) { case NOT_STARTED: - if (Creature* nefarian = instance->GetCreature(GetGuidData(DATA_NEFARIAN))) + if (Creature* nefarian = instance->GetCreature(nefarianGUID)) nefarian->DespawnOrUnsummon(); break; case FAIL: @@ -242,6 +255,10 @@ public: { case DATA_RAZORGORE_THE_UNTAMED: return razorgoreGUID; + case DATA_CHROMAGGUS: + return chromaggusGUID; + case DATA_GO_CHROMAGGUS_DOOR: + return chromaggusDoorGUID; default: break; } @@ -279,7 +296,7 @@ public: razor->AI()->DoAction(ACTION_PHASE_TWO); break; case EVENT_RESPAWN_NEFARIUS: - if (Creature* nefarius = instance->GetCreature(GetGuidData(DATA_LORD_VICTOR_NEFARIUS))) + if (Creature* nefarius = instance->GetCreature(victorNefariusGUID)) { nefarius->SetPhaseMask(1, true); nefarius->setActive(true); @@ -292,14 +309,19 @@ public: } protected: - // Misc - EventMap _events; + ObjectGuid razorgoreGUID; + ObjectGuid chromaggusGUID; + ObjectGuid chromaggusDoorGUID; + ObjectGuid nefarianGUID; + ObjectGuid victorNefariusGUID; // Razorgore - ObjectGuid razorgoreGUID; uint8 EggCount; uint32 EggEvent; GuidList EggList; + + // Misc + EventMap _events; }; InstanceScript* GetInstanceScript(InstanceMap* map) const |
