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.
This commit is contained in:
UltraNix
2022-01-17 00:38:57 +01:00
committed by GitHub
parent 19b68ffb57
commit b74fb81b8c
2 changed files with 41 additions and 16 deletions

View File

@@ -305,22 +305,25 @@ 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;
}

View File

@@ -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