summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorUltraNix <80540499+UltraNix@users.noreply.github.com>2022-01-17 00:38:57 +0100
committerGitHub <noreply@github.com>2022-01-16 20:38:57 -0300
commitb74fb81b8c10a305e64baf62408e7adf8ee8327e (patch)
tree1bba1a5066585bf9581a83390f1c627e14163db8 /src
parent19b68ffb578f6216613ed4cfd84a2304d38c1eed (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')
-rw-r--r--src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_chromaggus.cpp23
-rw-r--r--src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/instance_blackwing_lair.cpp34
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