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:
+13
-10
@@ -305,22 +305,25 @@ class go_chromaggus_lever : public GameObjectScript
|
|||||||
{
|
{
|
||||||
go_chromaggus_leverAI(GameObject* go) : GameObjectAI(go), _instance(go->GetInstanceScript()) { }
|
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)))
|
if (Creature* creature = _instance->instance->GetCreature(_instance->GetGuidData(DATA_CHROMAGGUS)))
|
||||||
creature->AI()->AttackStart(player);
|
creature->AI()->AttackStart(player);
|
||||||
|
|
||||||
if (GameObject* go = _instance->instance->GetGameObject(_instance->GetGuidData(DATA_GO_CHROMAGGUS_DOOR)))
|
if (GameObject* go = _instance->instance->GetGameObject(_instance->GetGuidData(DATA_GO_CHROMAGGUS_DOOR)))
|
||||||
_instance->HandleGameObject(ObjectGuid::Empty, true, go);
|
_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;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+28
-6
@@ -84,6 +84,9 @@ public:
|
|||||||
case NPC_RAZORGORE:
|
case NPC_RAZORGORE:
|
||||||
razorgoreGUID = creature->GetGUID();
|
razorgoreGUID = creature->GetGUID();
|
||||||
break;
|
break;
|
||||||
|
case NPC_CHROMAGGUS:
|
||||||
|
chromaggusGUID = creature->GetGUID();
|
||||||
|
break;
|
||||||
case NPC_BLACKWING_DRAGON:
|
case NPC_BLACKWING_DRAGON:
|
||||||
case NPC_BLACKWING_TASKMASTER:
|
case NPC_BLACKWING_TASKMASTER:
|
||||||
case NPC_BLACKWING_LEGIONAIRE:
|
case NPC_BLACKWING_LEGIONAIRE:
|
||||||
@@ -92,6 +95,12 @@ public:
|
|||||||
if (CreatureAI* razorAI = razor->AI())
|
if (CreatureAI* razorAI = razor->AI())
|
||||||
razorAI->JustSummoned(creature);
|
razorAI->JustSummoned(creature);
|
||||||
break;
|
break;
|
||||||
|
case NPC_NEFARIAN:
|
||||||
|
nefarianGUID = creature->GetGUID();
|
||||||
|
break;
|
||||||
|
case NPC_VICTOR_NEFARIUS:
|
||||||
|
victorNefariusGUID = creature->GetGUID();
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -114,10 +123,14 @@ public:
|
|||||||
case GO_PORTCULLIS_VAELASTRASZ:
|
case GO_PORTCULLIS_VAELASTRASZ:
|
||||||
case GO_PORTCULLIS_BROODLORD:
|
case GO_PORTCULLIS_BROODLORD:
|
||||||
case GO_PORTCULLIS_THREEDRAGONS:
|
case GO_PORTCULLIS_THREEDRAGONS:
|
||||||
case GO_PORTCULLIS_CHROMAGGUS:
|
|
||||||
case GO_PORTCULLIS_NEFARIAN:
|
case GO_PORTCULLIS_NEFARIAN:
|
||||||
AddDoor(go, true);
|
AddDoor(go, true);
|
||||||
break;
|
break;
|
||||||
|
case GO_PORTCULLIS_CHROMAGGUS:
|
||||||
|
AddDoor(go, true);
|
||||||
|
chromaggusDoorGUID = go->GetGUID();
|
||||||
|
go->SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE);
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -186,7 +199,7 @@ public:
|
|||||||
switch (state)
|
switch (state)
|
||||||
{
|
{
|
||||||
case NOT_STARTED:
|
case NOT_STARTED:
|
||||||
if (Creature* nefarian = instance->GetCreature(GetGuidData(DATA_NEFARIAN)))
|
if (Creature* nefarian = instance->GetCreature(nefarianGUID))
|
||||||
nefarian->DespawnOrUnsummon();
|
nefarian->DespawnOrUnsummon();
|
||||||
break;
|
break;
|
||||||
case FAIL:
|
case FAIL:
|
||||||
@@ -242,6 +255,10 @@ public:
|
|||||||
{
|
{
|
||||||
case DATA_RAZORGORE_THE_UNTAMED:
|
case DATA_RAZORGORE_THE_UNTAMED:
|
||||||
return razorgoreGUID;
|
return razorgoreGUID;
|
||||||
|
case DATA_CHROMAGGUS:
|
||||||
|
return chromaggusGUID;
|
||||||
|
case DATA_GO_CHROMAGGUS_DOOR:
|
||||||
|
return chromaggusDoorGUID;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -279,7 +296,7 @@ public:
|
|||||||
razor->AI()->DoAction(ACTION_PHASE_TWO);
|
razor->AI()->DoAction(ACTION_PHASE_TWO);
|
||||||
break;
|
break;
|
||||||
case EVENT_RESPAWN_NEFARIUS:
|
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->SetPhaseMask(1, true);
|
||||||
nefarius->setActive(true);
|
nefarius->setActive(true);
|
||||||
@@ -292,14 +309,19 @@ public:
|
|||||||
}
|
}
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
// Misc
|
ObjectGuid razorgoreGUID;
|
||||||
EventMap _events;
|
ObjectGuid chromaggusGUID;
|
||||||
|
ObjectGuid chromaggusDoorGUID;
|
||||||
|
ObjectGuid nefarianGUID;
|
||||||
|
ObjectGuid victorNefariusGUID;
|
||||||
|
|
||||||
// Razorgore
|
// Razorgore
|
||||||
ObjectGuid razorgoreGUID;
|
|
||||||
uint8 EggCount;
|
uint8 EggCount;
|
||||||
uint32 EggEvent;
|
uint32 EggEvent;
|
||||||
GuidList EggList;
|
GuidList EggList;
|
||||||
|
|
||||||
|
// Misc
|
||||||
|
EventMap _events;
|
||||||
};
|
};
|
||||||
|
|
||||||
InstanceScript* GetInstanceScript(InstanceMap* map) const
|
InstanceScript* GetInstanceScript(InstanceMap* map) const
|
||||||
|
|||||||
Reference in New Issue
Block a user