feat(Core/Misc): implement ObjectGuid class (port from TC) (#4885)
This commit is contained in:
@@ -26,8 +26,6 @@ public:
|
||||
{
|
||||
SetBossNumber(MAX_ENCOUNTERS);
|
||||
LoadDoorData(doorData);
|
||||
_krikthirGUID = 0;
|
||||
_hadronoxGUID = 0;
|
||||
};
|
||||
|
||||
void OnCreatureCreate(Creature* creature) override
|
||||
@@ -114,8 +112,8 @@ public:
|
||||
}
|
||||
|
||||
private:
|
||||
uint64 _krikthirGUID;
|
||||
uint64 _hadronoxGUID;
|
||||
ObjectGuid _krikthirGUID;
|
||||
ObjectGuid _hadronoxGUID;
|
||||
};
|
||||
|
||||
InstanceScript* GetInstanceScript(InstanceMap* map) const override
|
||||
|
||||
@@ -253,7 +253,7 @@ public:
|
||||
if (me->GetEntry() == NPC_AHNKAHAR_GUARDIAN_ENTRY)
|
||||
{
|
||||
if (InstanceScript* pInstance = me->GetInstanceScript())
|
||||
if (Creature* nadox = ObjectAccessor::GetCreature(*me, pInstance->GetData64(DATA_ELDER_NADOX)))
|
||||
if (Creature* nadox = ObjectAccessor::GetCreature(*me, pInstance->GetGuidData(DATA_ELDER_NADOX)))
|
||||
nadox->AI()->DoAction(ACTION_GUARDIAN_DIED);
|
||||
|
||||
me->RemoveAllAuras();
|
||||
|
||||
@@ -200,9 +200,9 @@ public:
|
||||
}
|
||||
|
||||
uint16 phase = 1;
|
||||
for (std::list<uint64>::iterator itr = summons.begin(); itr != summons.end(); ++itr)
|
||||
for (ObjectGuid guid : summons)
|
||||
{
|
||||
if (Creature* summon = ObjectAccessor::GetCreature(*me, *itr))
|
||||
if (Creature* summon = ObjectAccessor::GetCreature(*me, guid))
|
||||
phase |= summon->GetPhaseMask();
|
||||
}
|
||||
|
||||
|
||||
@@ -144,7 +144,7 @@ public:
|
||||
|
||||
uint8 rnd = urand(0, summons.size() - 1);
|
||||
uint8 loop = 0;
|
||||
for (std::list<uint64>::iterator i = summons.begin(); i != summons.end();)
|
||||
for (GuidList::iterator i = summons.begin(); i != summons.end();)
|
||||
{
|
||||
Creature* summon = ObjectAccessor::GetCreature(*me, *i);
|
||||
if (summon && summon->GetEntry() == NPC_INITIATE && loop >= rnd)
|
||||
@@ -450,7 +450,7 @@ public:
|
||||
if (!pInstance || Killer == me)
|
||||
return;
|
||||
|
||||
Creature* boss = me->GetMap()->GetCreature(pInstance->GetData64(DATA_JEDOGA_SHADOWSEEKER));
|
||||
Creature* boss = me->GetMap()->GetCreature(pInstance->GetGuidData(DATA_JEDOGA_SHADOWSEEKER));
|
||||
if (boss)
|
||||
{
|
||||
if (Timer)
|
||||
@@ -475,7 +475,7 @@ public:
|
||||
{
|
||||
Unit::Kill(me, me);
|
||||
me->DespawnOrUnsummon(5000);
|
||||
Creature* boss = me->GetMap()->GetCreature(pInstance->GetData64(DATA_JEDOGA_SHADOWSEEKER));
|
||||
Creature* boss = me->GetMap()->GetCreature(pInstance->GetGuidData(DATA_JEDOGA_SHADOWSEEKER));
|
||||
if (boss)
|
||||
boss->AI()->DoAction(ACTION_HERALD);
|
||||
}
|
||||
|
||||
@@ -70,7 +70,7 @@ public:
|
||||
InstanceScript* pInstance;
|
||||
EventMap events;
|
||||
SummonList summons;
|
||||
uint64 vanishTarget;
|
||||
ObjectGuid vanishTarget;
|
||||
uint32 vanishDamage;
|
||||
|
||||
void Reset() override
|
||||
@@ -81,7 +81,7 @@ public:
|
||||
events.Reset();
|
||||
summons.DespawnAll();
|
||||
vanishDamage = 0;
|
||||
vanishTarget = 0;
|
||||
vanishTarget.Clear();
|
||||
|
||||
if (pInstance)
|
||||
{
|
||||
@@ -105,7 +105,7 @@ public:
|
||||
me->UpdatePosition(me->GetPositionX(), me->GetPositionY(), DATA_GROUND_POSITION_Z, me->GetOrientation(), true);
|
||||
|
||||
if (pInstance)
|
||||
pInstance->HandleGameObject(pInstance->GetData64(DATA_PRINCE_TALDARAM_PLATFORM), true);
|
||||
pInstance->HandleGameObject(pInstance->GetGuidData(DATA_PRINCE_TALDARAM_PLATFORM), true);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -126,7 +126,7 @@ public:
|
||||
events.Reset();
|
||||
events.ScheduleEvent(EVENT_PRINCE_FLAME_SPHERES, 10000);
|
||||
events.ScheduleEvent(EVENT_PRINCE_BLOODTHIRST, 10000);
|
||||
vanishTarget = 0;
|
||||
vanishTarget.Clear();
|
||||
vanishDamage = 0;
|
||||
}
|
||||
|
||||
@@ -334,7 +334,7 @@ public:
|
||||
if (!pInstance)
|
||||
return false;
|
||||
|
||||
Creature* pPrinceTaldaram = ObjectAccessor::GetCreature(*go, pInstance->GetData64(DATA_PRINCE_TALDARAM));
|
||||
Creature* pPrinceTaldaram = ObjectAccessor::GetCreature(*go, pInstance->GetGuidData(DATA_PRINCE_TALDARAM));
|
||||
if (pPrinceTaldaram && pPrinceTaldaram->IsAlive())
|
||||
{
|
||||
go->SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE);
|
||||
|
||||
@@ -17,14 +17,14 @@ public:
|
||||
{
|
||||
instance_ahnkahet_InstanceScript(Map* pMap) : InstanceScript(pMap) {Initialize();};
|
||||
|
||||
uint64 Elder_Nadox;
|
||||
uint64 Prince_Taldaram;
|
||||
uint64 Jedoga_Shadowseeker;
|
||||
uint64 Herald_Volazj;
|
||||
uint64 Amanitar;
|
||||
ObjectGuid Elder_Nadox;
|
||||
ObjectGuid Prince_Taldaram;
|
||||
ObjectGuid Jedoga_Shadowseeker;
|
||||
ObjectGuid Herald_Volazj;
|
||||
ObjectGuid Amanitar;
|
||||
|
||||
uint64 Prince_TaldaramPlatform;
|
||||
uint64 Prince_TaldaramGate;
|
||||
ObjectGuid Prince_TaldaramPlatform;
|
||||
ObjectGuid Prince_TaldaramGate;
|
||||
|
||||
uint32 m_auiEncounter[MAX_ENCOUNTER];
|
||||
uint32 spheres;
|
||||
@@ -36,14 +36,6 @@ public:
|
||||
{
|
||||
memset(&m_auiEncounter, 0, sizeof(m_auiEncounter));
|
||||
|
||||
Elder_Nadox = 0;
|
||||
Prince_Taldaram = 0;
|
||||
Jedoga_Shadowseeker = 0;
|
||||
Herald_Volazj = 0;
|
||||
Amanitar = 0;
|
||||
|
||||
Prince_TaldaramPlatform = 0;
|
||||
Prince_TaldaramGate = 0;
|
||||
spheres = NOT_STARTED;
|
||||
|
||||
nadoxAchievement = false;
|
||||
@@ -87,7 +79,7 @@ public:
|
||||
case 193564:
|
||||
Prince_TaldaramPlatform = pGo->GetGUID();
|
||||
if (m_auiEncounter[1] == DONE)
|
||||
HandleGameObject(0, true, pGo);
|
||||
HandleGameObject(ObjectGuid::Empty, true, pGo);
|
||||
|
||||
break;
|
||||
case 193093:
|
||||
@@ -113,13 +105,13 @@ public:
|
||||
case 192236:
|
||||
Prince_TaldaramGate = pGo->GetGUID(); // Web gate past Prince Taldaram
|
||||
if (m_auiEncounter[1] == DONE)
|
||||
HandleGameObject(0, true, pGo);
|
||||
HandleGameObject(ObjectGuid::Empty, true, pGo);
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
uint64 GetData64(uint32 identifier) const override
|
||||
ObjectGuid GetGuidData(uint32 identifier) const override
|
||||
{
|
||||
switch(identifier)
|
||||
{
|
||||
@@ -137,7 +129,7 @@ public:
|
||||
return Prince_TaldaramPlatform;
|
||||
}
|
||||
|
||||
return 0;
|
||||
return ObjectGuid::Empty;
|
||||
}
|
||||
|
||||
bool CheckAchievementCriteriaMeet(uint32 criteria_id, Player const* /*source*/, Unit const* /*target*/, uint32 /*miscvalue1*/) override
|
||||
|
||||
@@ -291,7 +291,7 @@ public:
|
||||
// Store dragons
|
||||
for (uint8 i = 0; i < MAX_DRAGONS; ++i)
|
||||
{
|
||||
Creature* dragon = ObjectAccessor::GetCreature(*me, instance->GetData64(dragons[i]));
|
||||
Creature* dragon = ObjectAccessor::GetCreature(*me, instance->GetGuidData(dragons[i]));
|
||||
if (!dragon || !dragon->IsAlive() || instance->GetBossState(dragons[i]) == DONE)
|
||||
{
|
||||
continue;
|
||||
@@ -420,7 +420,7 @@ public:
|
||||
summons.RemoveNotExisting();
|
||||
if (!summons.empty())
|
||||
{
|
||||
for (uint64 const summonGuid : summons)
|
||||
for (ObjectGuid const summonGuid : summons)
|
||||
{
|
||||
Creature* summon = ObjectAccessor::GetCreature(*me, summonGuid);
|
||||
if (summon && summon->GetEntry() == NPC_FIRE_CYCLONE)
|
||||
@@ -486,7 +486,7 @@ public:
|
||||
case EVENT_SARTHARION_CALL_TENEBRON:
|
||||
{
|
||||
Talk(SAY_SARTHARION_CALL_TENEBRON);
|
||||
if (Creature* tenebron = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_TENEBRON)))
|
||||
if (Creature* tenebron = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_TENEBRON)))
|
||||
{
|
||||
tenebron->AI()->DoAction(ACTION_CALL_DRAGON);
|
||||
}
|
||||
@@ -495,7 +495,7 @@ public:
|
||||
case EVENT_SARTHARION_CALL_SHADRON:
|
||||
{
|
||||
Talk(SAY_SARTHARION_CALL_SHADRON);
|
||||
if (Creature* shadron = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_SHADRON)))
|
||||
if (Creature* shadron = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_SHADRON)))
|
||||
{
|
||||
shadron->AI()->DoAction(ACTION_CALL_DRAGON);
|
||||
}
|
||||
@@ -504,7 +504,7 @@ public:
|
||||
case EVENT_SARTHARION_CALL_VESPERON:
|
||||
{
|
||||
Talk(SAY_SARTHARION_CALL_VESPERON);
|
||||
if (Creature* vesperon = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_VESPERON)))
|
||||
if (Creature* vesperon = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_VESPERON)))
|
||||
{
|
||||
vesperon->AI()->DoAction(ACTION_CALL_DRAGON);
|
||||
}
|
||||
@@ -556,7 +556,7 @@ public:
|
||||
uint8 iter = 0;
|
||||
if (!summons.empty())
|
||||
{
|
||||
for (uint64 const summonGuid : summons)
|
||||
for (ObjectGuid const summonGuid : summons)
|
||||
{
|
||||
Creature* summon = ObjectAccessor::GetCreature(*me, summonGuid);
|
||||
if (summon && summon->GetEntry() == NPC_FIRE_CYCLONE && iter == rand)
|
||||
@@ -636,7 +636,7 @@ public:
|
||||
return;
|
||||
}
|
||||
|
||||
for (uint64 const guid : summons)
|
||||
for (ObjectGuid const guid : summons)
|
||||
{
|
||||
Creature* tsunami = ObjectAccessor::GetCreature(*me, guid);
|
||||
if (!tsunami || tsunami->GetEntry() != NPC_FLAME_TSUNAMI)
|
||||
@@ -664,7 +664,7 @@ public:
|
||||
continue;
|
||||
}
|
||||
|
||||
if (Creature* dragon = ObjectAccessor::GetCreature(*me, instance->GetData64(dragons[i])))
|
||||
if (Creature* dragon = ObjectAccessor::GetCreature(*me, instance->GetGuidData(dragons[i])))
|
||||
{
|
||||
if (checkCombat && dragon->IsInCombat())
|
||||
{
|
||||
@@ -706,9 +706,7 @@ public:
|
||||
|
||||
struct boss_sartharion_dragonAI : public BossAI
|
||||
{
|
||||
boss_sartharion_dragonAI(Creature* pCreature, uint32 bossId) : BossAI(pCreature, bossId),
|
||||
portalGUID(0),
|
||||
isCalledBySartharion(false)
|
||||
boss_sartharion_dragonAI(Creature* pCreature, uint32 bossId) : BossAI(pCreature, bossId), isCalledBySartharion(false)
|
||||
{
|
||||
}
|
||||
|
||||
@@ -722,7 +720,7 @@ struct boss_sartharion_dragonAI : public BossAI
|
||||
me->SetSpeed(MOVE_FLIGHT, 1.0f);
|
||||
me->SetCanFly(false);
|
||||
me->ResetLootMode();
|
||||
portalGUID = 0;
|
||||
portalGUID.Clear();
|
||||
isCalledBySartharion = false;
|
||||
instance->DoAction(ACTION_CLEAR_PORTAL);
|
||||
}
|
||||
@@ -788,7 +786,7 @@ struct boss_sartharion_dragonAI : public BossAI
|
||||
// Transfer summons to Sartharion
|
||||
if (isCalledBySartharion && instance->GetBossState(DATA_SARTHARION) == IN_PROGRESS)
|
||||
{
|
||||
if (Creature* sartharion = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_SARTHARION)))
|
||||
if (Creature* sartharion = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_SARTHARION)))
|
||||
{
|
||||
sartharion->AI()->JustSummoned(summon);
|
||||
}
|
||||
@@ -872,7 +870,7 @@ struct boss_sartharion_dragonAI : public BossAI
|
||||
Talk(SAY_SHADRON_DEATH);
|
||||
if (isCalledBySartharion)
|
||||
{
|
||||
if (Creature* sartharion = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_SARTHARION)))
|
||||
if (Creature* sartharion = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_SARTHARION)))
|
||||
{
|
||||
sartharion->RemoveAura(SPELL_GIFT_OF_TWILIGHT_FIRE);
|
||||
}
|
||||
@@ -902,7 +900,7 @@ struct boss_sartharion_dragonAI : public BossAI
|
||||
}
|
||||
else
|
||||
{
|
||||
if (Creature* sartharion = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_SARTHARION)))
|
||||
if (Creature* sartharion = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_SARTHARION)))
|
||||
{
|
||||
sartharion->AI()->DoAction(ACTION_DRAKE_DIED);
|
||||
}
|
||||
@@ -989,12 +987,12 @@ protected:
|
||||
gobj->Delete();
|
||||
}
|
||||
|
||||
portalGUID = 0;
|
||||
portalGUID.Clear();
|
||||
}
|
||||
}
|
||||
|
||||
EventMap extraEvents;
|
||||
uint64 portalGUID;
|
||||
ObjectGuid portalGUID;
|
||||
bool isCalledBySartharion;
|
||||
};
|
||||
|
||||
@@ -1115,7 +1113,7 @@ public:
|
||||
summons.Summon(egg);
|
||||
if (isCalledBySartharion && instance->GetBossState(DATA_SARTHARION) == IN_PROGRESS)
|
||||
{
|
||||
if (Creature* sartharion = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_SARTHARION)))
|
||||
if (Creature* sartharion = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_SARTHARION)))
|
||||
{
|
||||
sartharion->AI()->JustSummoned(egg);
|
||||
}
|
||||
@@ -1131,7 +1129,7 @@ public:
|
||||
{
|
||||
summons.RemoveNotExisting();
|
||||
summons.DespawnEntry(NPC_TWILIGHT_WHELP);
|
||||
for (uint64 const summonGuid : summons)
|
||||
for (ObjectGuid const summonGuid : summons)
|
||||
{
|
||||
Creature const* summon = ObjectAccessor::GetCreature(*me, summonGuid);
|
||||
if (!summon || !summon->IsAlive() || summon->GetEntry() != NPC_TWILIGHT_EGG)
|
||||
@@ -1144,7 +1142,7 @@ public:
|
||||
summons2.Summon(whelp);
|
||||
if (isCalledBySartharion && instance->GetBossState(DATA_SARTHARION) == IN_PROGRESS)
|
||||
{
|
||||
if (Creature* sartharion = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_SARTHARION)))
|
||||
if (Creature* sartharion = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_SARTHARION)))
|
||||
{
|
||||
sartharion->AI()->JustSummoned(whelp);
|
||||
}
|
||||
@@ -1219,7 +1217,7 @@ public:
|
||||
instance->DoAction(ACTION_CLEAR_PORTAL);
|
||||
}
|
||||
|
||||
if (Creature* sartharion = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_SARTHARION)))
|
||||
if (Creature* sartharion = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_SARTHARION)))
|
||||
{
|
||||
sartharion->RemoveAurasDueToSpell(SPELL_GIFT_OF_TWILIGHT_FIRE);
|
||||
}
|
||||
@@ -1534,9 +1532,9 @@ public:
|
||||
|
||||
if (InstanceScript* pInstance = GetCaster()->GetInstanceScript())
|
||||
{
|
||||
if (Creature* sarth = ObjectAccessor::GetCreature(*GetHitUnit(), pInstance->GetData64(DATA_SARTHARION)))
|
||||
if (Creature* sarth = ObjectAccessor::GetCreature(*GetHitUnit(), pInstance->GetGuidData(DATA_SARTHARION)))
|
||||
{
|
||||
sarth->AI()->SetData(DATA_VOLCANO_BLOWS, GetHitUnit()->GetGUIDLow());
|
||||
sarth->AI()->SetData(DATA_VOLCANO_BLOWS, GetHitUnit()->GetGUID().GetCounter());
|
||||
sarth->CastSpell(GetHitUnit(), SPELL_LAVA_STRIKE_SUMMON, true);
|
||||
spawned = true;
|
||||
}
|
||||
|
||||
+11
-16
@@ -20,13 +20,7 @@ public:
|
||||
|
||||
struct instance_obsidian_sanctum_InstanceMapScript : public InstanceScript
|
||||
{
|
||||
instance_obsidian_sanctum_InstanceMapScript(Map* pMap) : InstanceScript(pMap),
|
||||
m_uiSartharionGUID(0),
|
||||
m_uiTenebronGUID(0),
|
||||
m_uiShadronGUID(0),
|
||||
m_uiVesperonGUID(0),
|
||||
m_uiPortalGUID(0),
|
||||
portalCount(0)
|
||||
instance_obsidian_sanctum_InstanceMapScript(Map* pMap) : InstanceScript(pMap), portalCount(0)
|
||||
{
|
||||
SetBossNumber(MAX_ENCOUNTERS);
|
||||
}
|
||||
@@ -61,7 +55,7 @@ public:
|
||||
}
|
||||
}
|
||||
|
||||
uint64 GetData64(uint32 uiData) const override
|
||||
ObjectGuid GetGuidData(uint32 uiData) const override
|
||||
{
|
||||
switch(uiData)
|
||||
{
|
||||
@@ -74,7 +68,8 @@ public:
|
||||
case DATA_VESPERON:
|
||||
return m_uiVesperonGUID;
|
||||
}
|
||||
return 0;
|
||||
|
||||
return ObjectGuid::Empty;
|
||||
}
|
||||
|
||||
bool CheckAchievementCriteriaMeet(uint32 criteria_id, Player const* source, Unit const* /*target*/, uint32 /*miscvalue1*/) override
|
||||
@@ -87,7 +82,7 @@ public:
|
||||
case 7327:
|
||||
{
|
||||
Creature const* sartharion = instance->GetCreature(m_uiSartharionGUID);
|
||||
return sartharion && !sartharion->AI()->GetData(source->GetGUIDLow());
|
||||
return sartharion && !sartharion->AI()->GetData(source->GetGUID().GetCounter());
|
||||
}
|
||||
// Less Is More (10 player) (624)
|
||||
case 7189:
|
||||
@@ -182,7 +177,7 @@ public:
|
||||
}
|
||||
|
||||
DoRemoveAurasDueToSpellOnPlayers(SPELL_TWILIGHT_SHIFT);
|
||||
m_uiPortalGUID = 0;
|
||||
m_uiPortalGUID.Clear();
|
||||
}
|
||||
break;
|
||||
}
|
||||
@@ -232,11 +227,11 @@ public:
|
||||
}
|
||||
|
||||
private:
|
||||
uint64 m_uiSartharionGUID;
|
||||
uint64 m_uiTenebronGUID;
|
||||
uint64 m_uiShadronGUID;
|
||||
uint64 m_uiVesperonGUID;
|
||||
uint64 m_uiPortalGUID;
|
||||
ObjectGuid m_uiSartharionGUID;
|
||||
ObjectGuid m_uiTenebronGUID;
|
||||
ObjectGuid m_uiShadronGUID;
|
||||
ObjectGuid m_uiVesperonGUID;
|
||||
ObjectGuid m_uiPortalGUID;
|
||||
uint8 portalCount;
|
||||
};
|
||||
};
|
||||
|
||||
+3
-3
@@ -168,7 +168,7 @@ public:
|
||||
Talk(SAY_DEATH);
|
||||
BossAI::JustDied(killer);
|
||||
|
||||
if (Creature* xerestrasza = ObjectAccessor::GetCreature(*me, instance->GetData64(NPC_XERESTRASZA)))
|
||||
if (Creature* xerestrasza = ObjectAccessor::GetCreature(*me, instance->GetGuidData(NPC_XERESTRASZA)))
|
||||
xerestrasza->AI()->DoAction(ACTION_BALTHARUS_DEATH);
|
||||
}
|
||||
|
||||
@@ -454,10 +454,10 @@ public:
|
||||
{
|
||||
if (InstanceScript* instance = player->GetInstanceScript())
|
||||
{
|
||||
if (Creature* xerestrasza = ObjectAccessor::GetCreature(*player, instance->GetData64(NPC_XERESTRASZA)))
|
||||
if (Creature* xerestrasza = ObjectAccessor::GetCreature(*player, instance->GetGuidData(NPC_XERESTRASZA)))
|
||||
xerestrasza->AI()->DoAction(ACTION_INTRO_BALTHARUS);
|
||||
|
||||
if (Creature* baltharus = ObjectAccessor::GetCreature(*player, instance->GetData64(NPC_BALTHARUS_THE_WARBORN)))
|
||||
if (Creature* baltharus = ObjectAccessor::GetCreature(*player, instance->GetGuidData(NPC_BALTHARUS_THE_WARBORN)))
|
||||
baltharus->AI()->DoAction(ACTION_INTRO_BALTHARUS);
|
||||
}
|
||||
|
||||
|
||||
+5
-5
@@ -140,16 +140,16 @@ public:
|
||||
{
|
||||
case EVENT_SUMMON_ADDS1:
|
||||
Talk(SAY_ADDS);
|
||||
if (Creature* stalker1 = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_ZARITHRIAN_SPAWN_STALKER_1)))
|
||||
if (Creature* stalker1 = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_ZARITHRIAN_SPAWN_STALKER_1)))
|
||||
stalker1->CastSpell(stalker1, SPELL_SUMMON_FLAMECALLER, false);
|
||||
if (Creature* stalker2 = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_ZARITHRIAN_SPAWN_STALKER_2)))
|
||||
if (Creature* stalker2 = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_ZARITHRIAN_SPAWN_STALKER_2)))
|
||||
stalker2->CastSpell(stalker2, SPELL_SUMMON_FLAMECALLER, false);
|
||||
events.ScheduleEvent(EVENT_SUMMON_ADDS1, 40000);
|
||||
break;
|
||||
case EVENT_SUMMON_ADDS2:
|
||||
if (Creature* stalker1 = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_ZARITHRIAN_SPAWN_STALKER_1)))
|
||||
if (Creature* stalker1 = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_ZARITHRIAN_SPAWN_STALKER_1)))
|
||||
stalker1->CastSpell(stalker1, SPELL_SUMMON_FLAMECALLER, false);
|
||||
if (Creature* stalker2 = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_ZARITHRIAN_SPAWN_STALKER_2)))
|
||||
if (Creature* stalker2 = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_ZARITHRIAN_SPAWN_STALKER_2)))
|
||||
stalker2->CastSpell(stalker2, SPELL_SUMMON_FLAMECALLER, false);
|
||||
events.ScheduleEvent(EVENT_SUMMON_ADDS2, 40000);
|
||||
break;
|
||||
@@ -213,7 +213,7 @@ public:
|
||||
void IsSummonedBy(Unit* /*summoner*/) override
|
||||
{
|
||||
// Let Zarithrian count as summoner. _instance cant be null since we got GetRubySanctumAI
|
||||
if (Creature* zarithrian = ObjectAccessor::GetCreature(*me, _instance->GetData64(NPC_GENERAL_ZARITHRIAN)))
|
||||
if (Creature* zarithrian = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(NPC_GENERAL_ZARITHRIAN)))
|
||||
zarithrian->AI()->JustSummoned(me);
|
||||
}
|
||||
|
||||
|
||||
@@ -275,7 +275,7 @@ public:
|
||||
void JustReachedHome() override
|
||||
{
|
||||
instance->SendEncounterUnit(ENCOUNTER_FRAME_DISENGAGE, me);
|
||||
if (Creature* controller = ObjectAccessor::GetCreature(*me, instance->GetData64(NPC_HALION_CONTROLLER)))
|
||||
if (Creature* controller = ObjectAccessor::GetCreature(*me, instance->GetGuidData(NPC_HALION_CONTROLLER)))
|
||||
controller->AI()->DoAction(ACTION_RESET_ENCOUNTER);
|
||||
BossAI::JustReachedHome();
|
||||
}
|
||||
@@ -312,11 +312,11 @@ public:
|
||||
instance->SendEncounterUnit(ENCOUNTER_FRAME_DISENGAGE, me);
|
||||
me->CastSpell(me, SPELL_CLEAR_DEBUFFS, false);
|
||||
|
||||
if (Creature* twilightHalion = ObjectAccessor::GetCreature(*me, instance->GetData64(NPC_TWILIGHT_HALION)))
|
||||
if (Creature* twilightHalion = ObjectAccessor::GetCreature(*me, instance->GetGuidData(NPC_TWILIGHT_HALION)))
|
||||
if (twilightHalion->IsAlive())
|
||||
Unit::Kill(twilightHalion, twilightHalion);
|
||||
|
||||
if (Creature* controller = ObjectAccessor::GetCreature(*me, instance->GetData64(NPC_HALION_CONTROLLER)))
|
||||
if (Creature* controller = ObjectAccessor::GetCreature(*me, instance->GetGuidData(NPC_HALION_CONTROLLER)))
|
||||
if (controller->IsAlive())
|
||||
Unit::Kill(controller, controller);
|
||||
}
|
||||
@@ -329,7 +329,7 @@ public:
|
||||
if (!attacker || !me->InSamePhase(attacker))
|
||||
return;
|
||||
|
||||
if (Creature* controller = ObjectAccessor::GetCreature(*me, instance->GetData64(NPC_HALION_CONTROLLER)))
|
||||
if (Creature* controller = ObjectAccessor::GetCreature(*me, instance->GetGuidData(NPC_HALION_CONTROLLER)))
|
||||
controller->AI()->SetData(DATA_MATERIAL_DAMAGE_TAKEN, damage);
|
||||
}
|
||||
|
||||
@@ -344,7 +344,7 @@ public:
|
||||
break;
|
||||
case EVENT_TRIGGER_BERSERK:
|
||||
me->CastSpell(me, SPELL_BERSERK, true);
|
||||
if (Creature* twilightHalion = ObjectAccessor::GetCreature(*me, instance->GetData64(NPC_TWILIGHT_HALION)))
|
||||
if (Creature* twilightHalion = ObjectAccessor::GetCreature(*me, instance->GetGuidData(NPC_TWILIGHT_HALION)))
|
||||
twilightHalion->CastSpell(twilightHalion, SPELL_BERSERK, true);
|
||||
break;
|
||||
}
|
||||
@@ -375,8 +375,8 @@ public:
|
||||
events.ScheduleEvent(EVENT_BREATH, urand(10000, 12000));
|
||||
break;
|
||||
case EVENT_ACTIVATE_FIREWALL:
|
||||
instance->HandleGameObject(instance->GetData64(GO_FLAME_RING), false, nullptr);
|
||||
instance->HandleGameObject(instance->GetData64(GO_TWILIGHT_FLAME_RING), false, nullptr);
|
||||
instance->HandleGameObject(instance->GetGuidData(GO_FLAME_RING), false, nullptr);
|
||||
instance->HandleGameObject(instance->GetGuidData(GO_TWILIGHT_FLAME_RING), false, nullptr);
|
||||
break;
|
||||
case EVENT_METEOR_STRIKE:
|
||||
_livingEmberCount = summons.GetEntryCount(NPC_LIVING_EMBER);
|
||||
@@ -424,7 +424,7 @@ public:
|
||||
{
|
||||
boss_twilight_halionAI(Creature* creature) : ScriptedAI(creature), _instance(creature->GetInstanceScript())
|
||||
{
|
||||
Creature* halion = ObjectAccessor::GetCreature(*me, _instance->GetData64(NPC_HALION));
|
||||
Creature* halion = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(NPC_HALION));
|
||||
if (!halion)
|
||||
return;
|
||||
|
||||
@@ -474,7 +474,7 @@ public:
|
||||
|
||||
void JustDied(Unit* killer) override
|
||||
{
|
||||
if (Creature* halion = ObjectAccessor::GetCreature(*me, _instance->GetData64(NPC_HALION)))
|
||||
if (Creature* halion = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(NPC_HALION)))
|
||||
{
|
||||
// Ensure looting
|
||||
if (me->IsDamageEnoughForLootingAndReward())
|
||||
@@ -484,7 +484,7 @@ public:
|
||||
Unit::Kill(killer, halion);
|
||||
}
|
||||
|
||||
if (Creature* controller = ObjectAccessor::GetCreature(*me, _instance->GetData64(NPC_HALION_CONTROLLER)))
|
||||
if (Creature* controller = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(NPC_HALION_CONTROLLER)))
|
||||
if (controller->IsAlive())
|
||||
Unit::Kill(controller, controller);
|
||||
|
||||
@@ -497,7 +497,7 @@ public:
|
||||
if (!attacker || !me->InSamePhase(attacker))
|
||||
return;
|
||||
|
||||
if (Creature* controller = ObjectAccessor::GetCreature(*me, _instance->GetData64(NPC_HALION_CONTROLLER)))
|
||||
if (Creature* controller = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(NPC_HALION_CONTROLLER)))
|
||||
controller->AI()->SetData(DATA_TWILIGHT_DAMAGE_TAKEN, damage);
|
||||
}
|
||||
|
||||
@@ -549,7 +549,7 @@ public:
|
||||
_events.ScheduleEvent(EVENT_SHADOW_PULSARS_SHOOT, 5000);
|
||||
break;
|
||||
case EVENT_SHADOW_PULSARS_SHOOT:
|
||||
if (Creature* orbCarrier = ObjectAccessor::GetCreature(*me, _instance->GetData64(NPC_ORB_CARRIER)))
|
||||
if (Creature* orbCarrier = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(NPC_ORB_CARRIER)))
|
||||
orbCarrier->AI()->DoAction(ACTION_SHOOT);
|
||||
break;
|
||||
}
|
||||
@@ -642,7 +642,7 @@ public:
|
||||
_events.ScheduleEvent(EVENT_INTRO_PROGRESS_4, 500);
|
||||
break;
|
||||
case EVENT_INTRO_PROGRESS_4:
|
||||
if (Creature* halion = ObjectAccessor::GetCreature(*me, _instance->GetData64(NPC_HALION)))
|
||||
if (Creature* halion = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(NPC_HALION)))
|
||||
{
|
||||
halion->SetVisible(true);
|
||||
halion->SetReactState(REACT_AGGRESSIVE);
|
||||
@@ -708,14 +708,14 @@ public:
|
||||
_instance->DoUpdateWorldState(WORLDSTATE_CORPOREALITY_MATERIAL, _corporeality * 10);
|
||||
_instance->DoUpdateWorldState(WORLDSTATE_CORPOREALITY_TWILIGHT, 100 - _corporeality * 10);
|
||||
|
||||
if (Creature* twilightHalion = ObjectAccessor::GetCreature(*me, _instance->GetData64(NPC_TWILIGHT_HALION)))
|
||||
if (Creature* twilightHalion = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(NPC_TWILIGHT_HALION)))
|
||||
{
|
||||
twilightHalion->RemoveAurasDueToSpell(_corporealityReference[MAX_CORPOREALITY_STATE - 1 - oldValue]);
|
||||
twilightHalion->CastSpell(twilightHalion, _corporealityReference[MAX_CORPOREALITY_STATE - 1 - _corporeality], true);
|
||||
twilightHalion->AI()->Talk(oldValue < _corporeality ? EMOTE_CORPOREALITY_TOT : EMOTE_CORPOREALITY_TIT);
|
||||
}
|
||||
|
||||
if (Creature* halion = ObjectAccessor::GetCreature(*me, _instance->GetData64(NPC_HALION)))
|
||||
if (Creature* halion = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(NPC_HALION)))
|
||||
{
|
||||
halion->RemoveAurasDueToSpell(_corporealityReference[oldValue]);
|
||||
halion->CastSpell(halion, _corporealityReference[_corporeality], true);
|
||||
@@ -928,7 +928,7 @@ public:
|
||||
|
||||
void OnRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
|
||||
{
|
||||
GetTarget()->RemoveAurasDueToSpell(_markSpell, 0, 0, AURA_REMOVE_BY_EXPIRE);
|
||||
GetTarget()->RemoveAurasDueToSpell(_markSpell, ObjectGuid::Empty, 0, AURA_REMOVE_BY_EXPIRE);
|
||||
}
|
||||
|
||||
void OnApply(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
|
||||
@@ -978,7 +978,7 @@ public:
|
||||
|
||||
if (Unit* dispelledUnit = GetUnitOwner())
|
||||
if (dispelledUnit->HasAura(_removeSpellId))
|
||||
dispelledUnit->RemoveAurasDueToSpell(_removeSpellId, 0, 0, AURA_REMOVE_BY_EXPIRE);
|
||||
dispelledUnit->RemoveAurasDueToSpell(_removeSpellId, ObjectGuid::Empty, 0, AURA_REMOVE_BY_EXPIRE);
|
||||
}
|
||||
|
||||
void OnRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
|
||||
@@ -1188,7 +1188,7 @@ public:
|
||||
if (!target)
|
||||
return;
|
||||
|
||||
target->RemoveAurasDueToSpell(SPELL_FIERY_COMBUSTION, 0, 0, AURA_REMOVE_BY_ENEMY_SPELL);
|
||||
target->RemoveAurasDueToSpell(SPELL_FIERY_COMBUSTION, ObjectGuid::Empty, 0, AURA_REMOVE_BY_ENEMY_SPELL);
|
||||
if (GetTarget()->GetTypeId() != TYPEID_PLAYER)
|
||||
return;
|
||||
GetTarget()->m_Events.AddEvent(new SendEncounterUnit(GetTarget()->ToPlayer()), GetTarget()->m_Events.CalculateTime(500));
|
||||
@@ -1221,7 +1221,7 @@ public:
|
||||
if (!target)
|
||||
return;
|
||||
|
||||
target->RemoveAurasDueToSpell(SPELL_SOUL_CONSUMPTION, 0, 0, AURA_REMOVE_BY_ENEMY_SPELL);
|
||||
target->RemoveAurasDueToSpell(SPELL_SOUL_CONSUMPTION, ObjectGuid::Empty, 0, AURA_REMOVE_BY_ENEMY_SPELL);
|
||||
}
|
||||
|
||||
void OnRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*handle*/)
|
||||
@@ -1373,8 +1373,8 @@ public:
|
||||
void HandleDummy(SpellEffIndex /*effIndex*/)
|
||||
{
|
||||
InstanceScript* instance = GetCaster()->GetInstanceScript();
|
||||
Creature* controller = ObjectAccessor::GetCreature(*GetCaster(), instance->GetData64(NPC_HALION_CONTROLLER));
|
||||
Creature* halion = ObjectAccessor::GetCreature(*GetCaster(), instance->GetData64(NPC_HALION));
|
||||
Creature* controller = ObjectAccessor::GetCreature(*GetCaster(), instance->GetGuidData(NPC_HALION_CONTROLLER));
|
||||
Creature* halion = ObjectAccessor::GetCreature(*GetCaster(), instance->GetGuidData(NPC_HALION));
|
||||
|
||||
if (!controller || !halion)
|
||||
return;
|
||||
@@ -1449,7 +1449,7 @@ public:
|
||||
me->CastSpell(me, SPELL_BLAZING_AURA, true);
|
||||
|
||||
if (InstanceScript* instance = me->GetInstanceScript())
|
||||
if (Creature* controller = ObjectAccessor::GetCreature(*me, instance->GetData64(NPC_HALION_CONTROLLER)))
|
||||
if (Creature* controller = ObjectAccessor::GetCreature(*me, instance->GetGuidData(NPC_HALION_CONTROLLER)))
|
||||
controller->AI()->JustSummoned(me);
|
||||
}
|
||||
|
||||
|
||||
+11
-22
@@ -34,17 +34,6 @@ public:
|
||||
{
|
||||
SetBossNumber(MAX_ENCOUNTERS);
|
||||
LoadDoorData(doorData);
|
||||
|
||||
BaltharusTheWarbornGUID = 0;
|
||||
XerestraszaGUID = 0;
|
||||
GeneralZarithrianGUID = 0;
|
||||
memset(ZarithrianSpawnStalkerGUID, 0, 2 * sizeof(uint64));
|
||||
|
||||
HalionGUID = 0;
|
||||
TwilightHalionGUID = 0;
|
||||
OrbCarrierGUID = 0;
|
||||
HalionControllerGUID = 0;
|
||||
FlameRingGUID = 0;
|
||||
}
|
||||
|
||||
void OnPlayerEnter(Player* /*player*/) override
|
||||
@@ -138,7 +127,7 @@ public:
|
||||
}
|
||||
}
|
||||
|
||||
uint64 GetData64(uint32 type) const override
|
||||
ObjectGuid GetGuidData(uint32 type) const override
|
||||
{
|
||||
switch (type)
|
||||
{
|
||||
@@ -164,7 +153,7 @@ public:
|
||||
return FlameRingGUID;
|
||||
}
|
||||
|
||||
return 0;
|
||||
return ObjectGuid::Empty;
|
||||
}
|
||||
|
||||
bool SetBossState(uint32 type, EncounterState state) override
|
||||
@@ -255,16 +244,16 @@ public:
|
||||
}
|
||||
|
||||
protected:
|
||||
uint64 BaltharusTheWarbornGUID;
|
||||
uint64 XerestraszaGUID;
|
||||
uint64 GeneralZarithrianGUID;
|
||||
uint64 ZarithrianSpawnStalkerGUID[2];
|
||||
ObjectGuid BaltharusTheWarbornGUID;
|
||||
ObjectGuid XerestraszaGUID;
|
||||
ObjectGuid GeneralZarithrianGUID;
|
||||
ObjectGuid ZarithrianSpawnStalkerGUID[2];
|
||||
|
||||
uint64 HalionGUID;
|
||||
uint64 TwilightHalionGUID;
|
||||
uint64 HalionControllerGUID;
|
||||
uint64 OrbCarrierGUID;
|
||||
uint64 FlameRingGUID;
|
||||
ObjectGuid HalionGUID;
|
||||
ObjectGuid TwilightHalionGUID;
|
||||
ObjectGuid HalionControllerGUID;
|
||||
ObjectGuid OrbCarrierGUID;
|
||||
ObjectGuid FlameRingGUID;
|
||||
};
|
||||
|
||||
InstanceScript* GetInstanceScript(InstanceMap* map) const override
|
||||
|
||||
+6
-6
@@ -210,7 +210,7 @@ public:
|
||||
InstanceScript* pInstance;
|
||||
EventMap events;
|
||||
bool summoned;
|
||||
uint64 MemoryGUID;
|
||||
ObjectGuid MemoryGUID;
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
@@ -220,7 +220,7 @@ public:
|
||||
{
|
||||
if( Creature* memory = ObjectAccessor::GetCreature(*me, MemoryGUID) )
|
||||
memory->DespawnOrUnsummon();
|
||||
MemoryGUID = 0;
|
||||
MemoryGUID.Clear();
|
||||
}
|
||||
me->SetReactState(REACT_PASSIVE);
|
||||
if( pInstance )
|
||||
@@ -259,7 +259,7 @@ public:
|
||||
{
|
||||
if( param == 1 )
|
||||
{
|
||||
MemoryGUID = 0;
|
||||
MemoryGUID.Clear();
|
||||
me->RemoveAura(SPELL_SHIELD);
|
||||
Talk(TEXT_PALETRESS_MEMORY_DEFEATED);
|
||||
}
|
||||
@@ -269,7 +269,7 @@ public:
|
||||
if( Creature* memory = ObjectAccessor::GetCreature(*me, MemoryGUID) )
|
||||
{
|
||||
memory->DespawnOrUnsummon();
|
||||
MemoryGUID = 0;
|
||||
MemoryGUID.Clear();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -403,7 +403,7 @@ public:
|
||||
{
|
||||
me->DespawnOrUnsummon(20000);
|
||||
if( pInstance )
|
||||
if( Creature* paletress = ObjectAccessor::GetCreature(*me, pInstance->GetData64(DATA_PALETRESS)) )
|
||||
if( Creature* paletress = ObjectAccessor::GetCreature(*me, pInstance->GetGuidData(DATA_PALETRESS)) )
|
||||
paletress->AI()->DoAction(1);
|
||||
}
|
||||
|
||||
@@ -598,7 +598,7 @@ public:
|
||||
break;
|
||||
}
|
||||
|
||||
Start(false, true, 0);
|
||||
Start(false, true);
|
||||
uiWaypoint = uiType;
|
||||
}
|
||||
|
||||
|
||||
+2
-2
@@ -162,7 +162,7 @@ public:
|
||||
pInstance->SetData(BOSS_BLACK_KNIGHT, IN_PROGRESS);
|
||||
Talk(TEXT_BK_AGGRO);
|
||||
me->CastSpell((Unit*)nullptr, (pInstance->GetData(DATA_TEAMID_IN_INSTANCE) == TEAM_HORDE ? SPELL_RAISE_DEAD_JAEREN : SPELL_RAISE_DEAD_ARELAS), false);
|
||||
if( Creature* announcer = pInstance->instance->GetCreature(pInstance->GetData64(DATA_ANNOUNCER)) )
|
||||
if( Creature* announcer = pInstance->instance->GetCreature(pInstance->GetGuidData(DATA_ANNOUNCER)) )
|
||||
announcer->DespawnOrUnsummon();
|
||||
|
||||
events.Reset();
|
||||
@@ -327,7 +327,7 @@ public:
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
Start(false, true, 0, nullptr);
|
||||
Start(false, true, ObjectGuid::Empty, nullptr);
|
||||
SetDespawnAtEnd(true);
|
||||
}
|
||||
|
||||
|
||||
+11
-11
@@ -263,7 +263,7 @@ public:
|
||||
break;
|
||||
case EVENT_MOUNT_CHARGE:
|
||||
{
|
||||
std::vector<uint64> LIST;
|
||||
GuidVector LIST;
|
||||
Map::PlayerList const& pl = me->GetMap()->GetPlayers();
|
||||
for( Map::PlayerList::const_iterator itr = pl.begin(); itr != pl.end(); ++itr )
|
||||
if( Player* plr = itr->GetSource() )
|
||||
@@ -294,7 +294,7 @@ public:
|
||||
break;
|
||||
case EVENT_SHIELD_BREAKER:
|
||||
{
|
||||
std::vector<uint64> LIST;
|
||||
GuidVector LIST;
|
||||
Map::PlayerList const& pl = me->GetMap()->GetPlayers();
|
||||
for( Map::PlayerList::const_iterator itr = pl.begin(); itr != pl.end(); ++itr )
|
||||
if( Player* plr = itr->GetSource() )
|
||||
@@ -346,7 +346,7 @@ public:
|
||||
SetDespawnAtEnd(false);
|
||||
me->SetReactState(REACT_PASSIVE);
|
||||
BossOrder = 0;
|
||||
NewMountGUID = 0;
|
||||
NewMountGUID.Clear();
|
||||
me->CastSpell(me, SPELL_BOSS_DEFEND_PERIODIC, true);
|
||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_PACIFIED);
|
||||
|
||||
@@ -379,8 +379,8 @@ public:
|
||||
EventMap events;
|
||||
uint32 BossOrder;
|
||||
bool MountPhase;
|
||||
uint64 NewMountGUID;
|
||||
uint64 UnitTargetGUID;
|
||||
ObjectGuid NewMountGUID;
|
||||
ObjectGuid UnitTargetGUID;
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
@@ -471,7 +471,7 @@ public:
|
||||
if( param == 1 )
|
||||
{
|
||||
MountPhase = false;
|
||||
NewMountGUID = 0;
|
||||
NewMountGUID.Clear();
|
||||
me->SetHealth(me->GetMaxHealth());
|
||||
me->SetRegeneratingHealth(true);
|
||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_PACIFIED);
|
||||
@@ -522,7 +522,7 @@ public:
|
||||
return;
|
||||
}
|
||||
|
||||
Start(false, true, 0, nullptr);
|
||||
Start(false, true);
|
||||
}
|
||||
|
||||
void DamageTaken(Unit*, uint32& damage, DamageEffectType, SpellSchoolMask) override
|
||||
@@ -621,7 +621,7 @@ public:
|
||||
me->CastSpell(me, SPELL_TRAMPLE_AURA, true);
|
||||
if( pInstance )
|
||||
pInstance->SetData(DATA_REACHED_NEW_MOUNT, 0);
|
||||
NewMountGUID = 0;
|
||||
NewMountGUID.Clear();
|
||||
}
|
||||
}
|
||||
else if( id == 9 )
|
||||
@@ -716,7 +716,7 @@ public:
|
||||
break;
|
||||
case EVENT_MOUNT_CHARGE:
|
||||
{
|
||||
std::vector<uint64> LIST;
|
||||
GuidVector LIST;
|
||||
Map::PlayerList const& pl = me->GetMap()->GetPlayers();
|
||||
for( Map::PlayerList::const_iterator itr = pl.begin(); itr != pl.end(); ++itr )
|
||||
if( Player* plr = itr->GetSource() )
|
||||
@@ -747,7 +747,7 @@ public:
|
||||
break;
|
||||
case EVENT_SHIELD_BREAKER:
|
||||
{
|
||||
std::vector<uint64> LIST;
|
||||
GuidVector LIST;
|
||||
Map::PlayerList const& pl = me->GetMap()->GetPlayers();
|
||||
for( Map::PlayerList::const_iterator itr = pl.begin(); itr != pl.end(); ++itr )
|
||||
if( Player* plr = itr->GetSource() )
|
||||
@@ -865,7 +865,7 @@ public:
|
||||
}
|
||||
}
|
||||
}
|
||||
UnitTargetGUID = 0;
|
||||
UnitTargetGUID.Clear();
|
||||
}
|
||||
events.RepeatEvent(urand(15000, 20000));
|
||||
}
|
||||
|
||||
+24
-36
@@ -34,24 +34,24 @@ public:
|
||||
uint32 m_auiEncounter[MAX_ENCOUNTER];
|
||||
std::string str_data;
|
||||
|
||||
std::list<uint64> VehicleList;
|
||||
GuidList VehicleList;
|
||||
EventMap events;
|
||||
uint8 Counter;
|
||||
uint8 temp1, temp2;
|
||||
bool shortver;
|
||||
bool bAchievIveHadWorse;
|
||||
|
||||
uint64 NPC_AnnouncerGUID;
|
||||
uint64 NPC_TirionGUID;
|
||||
uint64 NPC_GrandChampionGUID[3];
|
||||
uint64 NPC_GrandChampionMinionsGUID[3][3];
|
||||
uint64 NPC_ArgentChampionGUID;
|
||||
uint64 NPC_ArgentSoldierGUID[3][3];
|
||||
uint64 NPC_MemoryEntry;
|
||||
uint64 NPC_BlackKnightVehicleGUID;
|
||||
uint64 NPC_BlackKnightGUID;
|
||||
uint64 GO_MainGateGUID;
|
||||
uint64 GO_EnterGateGUID;
|
||||
ObjectGuid NPC_AnnouncerGUID;
|
||||
ObjectGuid NPC_TirionGUID;
|
||||
ObjectGuid NPC_GrandChampionGUID[3];
|
||||
ObjectGuid NPC_GrandChampionMinionsGUID[3][3];
|
||||
ObjectGuid NPC_ArgentChampionGUID;
|
||||
ObjectGuid NPC_ArgentSoldierGUID[3][3];
|
||||
uint32 NPC_MemoryEntry;
|
||||
ObjectGuid NPC_BlackKnightVehicleGUID;
|
||||
ObjectGuid NPC_BlackKnightGUID;
|
||||
ObjectGuid GO_MainGateGUID;
|
||||
ObjectGuid GO_EnterGateGUID;
|
||||
|
||||
void Initialize() override
|
||||
{
|
||||
@@ -68,18 +68,6 @@ public:
|
||||
temp2 = 0;
|
||||
shortver = false;
|
||||
bAchievIveHadWorse = true;
|
||||
|
||||
NPC_AnnouncerGUID = 0;
|
||||
NPC_TirionGUID = 0;
|
||||
memset(&NPC_GrandChampionGUID, 0, sizeof(NPC_GrandChampionGUID));
|
||||
memset(&NPC_GrandChampionMinionsGUID, 0, sizeof(NPC_GrandChampionMinionsGUID));
|
||||
memset(&NPC_ArgentSoldierGUID, 0, sizeof(NPC_ArgentSoldierGUID));
|
||||
NPC_ArgentChampionGUID = 0;
|
||||
NPC_MemoryEntry = 0;
|
||||
NPC_BlackKnightVehicleGUID = 0;
|
||||
NPC_BlackKnightGUID = 0;
|
||||
GO_MainGateGUID = 0;
|
||||
GO_EnterGateGUID = 0;
|
||||
}
|
||||
|
||||
bool IsEncounterInProgress() const override
|
||||
@@ -291,8 +279,8 @@ public:
|
||||
case INSTANCE_PROGRESS_CHAMPION_GROUP_DIED_3:
|
||||
// revert to INSTANCE_PROGRESS_INITIAL
|
||||
{
|
||||
for( std::list<uint64>::const_iterator itr = VehicleList.begin(); itr != VehicleList.end(); ++itr )
|
||||
if( Creature* veh = instance->GetCreature(*itr) )
|
||||
for (ObjectGuid const guid : VehicleList)
|
||||
if (Creature* veh = instance->GetCreature(guid))
|
||||
{
|
||||
veh->DespawnOrUnsummon();
|
||||
veh->SetRespawnTime(3);
|
||||
@@ -303,11 +291,11 @@ public:
|
||||
{
|
||||
if( Creature* c = instance->GetCreature(NPC_GrandChampionMinionsGUID[i][j]) )
|
||||
c->DespawnOrUnsummon();
|
||||
NPC_GrandChampionMinionsGUID[i][j] = 0;
|
||||
NPC_GrandChampionMinionsGUID[i][j].Clear();
|
||||
}
|
||||
if( Creature* c = instance->GetCreature(NPC_GrandChampionGUID[i]) )
|
||||
c->DespawnOrUnsummon();
|
||||
NPC_GrandChampionGUID[i] = 0;
|
||||
NPC_GrandChampionGUID[i].Clear();
|
||||
}
|
||||
if( Creature* c = instance->GetCreature(NPC_AnnouncerGUID) )
|
||||
{
|
||||
@@ -372,14 +360,14 @@ public:
|
||||
{
|
||||
if( Creature* c = instance->GetCreature(NPC_ArgentSoldierGUID[i][j]) )
|
||||
c->DespawnOrUnsummon();
|
||||
NPC_ArgentSoldierGUID[i][j] = 0;
|
||||
NPC_ArgentSoldierGUID[i][j].Clear();
|
||||
}
|
||||
if( Creature* c = instance->GetCreature(NPC_ArgentChampionGUID) )
|
||||
{
|
||||
c->AI()->DoAction(-1); // paletress despawn memory
|
||||
c->DespawnOrUnsummon();
|
||||
}
|
||||
NPC_ArgentChampionGUID = 0;
|
||||
NPC_ArgentChampionGUID.Clear();
|
||||
if( Creature* c = instance->GetCreature(NPC_AnnouncerGUID) )
|
||||
{
|
||||
c->DespawnOrUnsummon();
|
||||
@@ -397,13 +385,13 @@ public:
|
||||
{
|
||||
if( Creature* c = instance->GetCreature(NPC_BlackKnightVehicleGUID) )
|
||||
c->DespawnOrUnsummon();
|
||||
NPC_BlackKnightVehicleGUID = 0;
|
||||
NPC_BlackKnightVehicleGUID.Clear();
|
||||
if( Creature* c = instance->GetCreature(NPC_BlackKnightGUID) )
|
||||
{
|
||||
c->AI()->DoAction(-1);
|
||||
c->DespawnOrUnsummon();
|
||||
}
|
||||
NPC_BlackKnightGUID = 0;
|
||||
NPC_BlackKnightGUID.Clear();
|
||||
if( Creature* c = instance->GetCreature(NPC_AnnouncerGUID) )
|
||||
{
|
||||
c->DespawnOrUnsummon();
|
||||
@@ -444,7 +432,7 @@ public:
|
||||
return 0;
|
||||
}
|
||||
|
||||
uint64 GetData64(uint32 uiData) const override
|
||||
ObjectGuid GetGuidData(uint32 uiData) const override
|
||||
{
|
||||
switch( uiData )
|
||||
{
|
||||
@@ -454,7 +442,7 @@ public:
|
||||
return NPC_ArgentChampionGUID;
|
||||
}
|
||||
|
||||
return 0;
|
||||
return ObjectGuid::Empty;
|
||||
}
|
||||
|
||||
void SetData(uint32 uiType, uint32 uiData) override
|
||||
@@ -579,8 +567,8 @@ public:
|
||||
{
|
||||
Counter = 0;
|
||||
InstanceProgress = INSTANCE_PROGRESS_CHAMPIONS_UNMOUNTED;
|
||||
for( std::list<uint64>::const_iterator itr = VehicleList.begin(); itr != VehicleList.end(); ++itr )
|
||||
if( Creature* veh = instance->GetCreature(*itr) )
|
||||
for (ObjectGuid const guid : VehicleList)
|
||||
if (Creature* veh = instance->GetCreature(guid))
|
||||
veh->DespawnOrUnsummon();
|
||||
events.ScheduleEvent(EVENT_GRAND_CHAMPIONS_MOVE_SIDE, 0);
|
||||
}
|
||||
|
||||
+8
-8
@@ -157,8 +157,8 @@ public:
|
||||
EventMap events;
|
||||
bool bIntro;
|
||||
bool bPhase3;
|
||||
uint64 SphereGUID[6];
|
||||
uint64 BurrowGUID[4];
|
||||
ObjectGuid SphereGUID[6];
|
||||
ObjectGuid BurrowGUID[4];
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
@@ -200,9 +200,9 @@ public:
|
||||
if( !IsHeroic() )
|
||||
events.RescheduleEvent(EVENT_RESPAWN_SPHERE, 4000);
|
||||
|
||||
for( std::list<uint64>::iterator itr = summons.begin(); itr != summons.end(); ++itr )
|
||||
for (ObjectGuid guid : summons)
|
||||
if (pInstance)
|
||||
if(Creature* c = pInstance->instance->GetCreature(*itr) )
|
||||
if (Creature* c = pInstance->instance->GetCreature(guid))
|
||||
{
|
||||
c->GetMotionMaster()->MoveIdle();
|
||||
c->StopMoving();
|
||||
@@ -621,7 +621,7 @@ public:
|
||||
{
|
||||
// I am summoned by another npc (SPELL_EFFECT_FORCE_CAST), inform Anub'arak
|
||||
if (InstanceScript* pInstance = me->GetInstanceScript())
|
||||
if (uint64 guid = pInstance->GetData64(TYPE_ANUBARAK))
|
||||
if (ObjectGuid guid = pInstance->GetGuidData(TYPE_ANUBARAK))
|
||||
if (Creature* anub = pInstance->instance->GetCreature(guid))
|
||||
CAST_AI(boss_anubarak_trial::boss_anubarak_trialAI, anub->AI())->JustSummoned(me);
|
||||
}
|
||||
@@ -743,7 +743,7 @@ public:
|
||||
}
|
||||
|
||||
EventMap events;
|
||||
uint64 TargetGUID;
|
||||
ObjectGuid TargetGUID;
|
||||
|
||||
void DoAction(int32 param) override
|
||||
{
|
||||
@@ -751,7 +751,7 @@ public:
|
||||
{
|
||||
if( Unit* target = ObjectAccessor::GetPlayer(*me, TargetGUID) )
|
||||
target->RemoveAura(SPELL_MARK);
|
||||
TargetGUID = 0;
|
||||
TargetGUID.Clear();
|
||||
me->RemoveAllAuras();
|
||||
me->GetMotionMaster()->MoveIdle();
|
||||
events.Reset();
|
||||
@@ -764,7 +764,7 @@ public:
|
||||
if (TargetGUID)
|
||||
if( Unit* target = ObjectAccessor::GetPlayer(*me, TargetGUID) )
|
||||
target->RemoveAura(SPELL_MARK);
|
||||
TargetGUID = 0;
|
||||
TargetGUID.Clear();
|
||||
if (!next)
|
||||
{
|
||||
events.Reset();
|
||||
|
||||
+17
-17
@@ -76,13 +76,13 @@ public:
|
||||
npc_snobold_vassalAI(Creature* pCreature) : ScriptedAI(pCreature)
|
||||
{
|
||||
pInstance = pCreature->GetInstanceScript();
|
||||
TargetGUID = 0;
|
||||
TargetGUID.Clear();
|
||||
me->SetReactState(REACT_PASSIVE);
|
||||
}
|
||||
|
||||
InstanceScript* pInstance;
|
||||
EventMap events;
|
||||
uint64 TargetGUID;
|
||||
ObjectGuid TargetGUID;
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
@@ -124,7 +124,7 @@ public:
|
||||
me->CombatStop(true);
|
||||
me->SetHealth(me->GetMaxHealth());
|
||||
if( pInstance )
|
||||
if( Creature* gormok = ObjectAccessor::GetCreature(*me, pInstance->GetData64(TYPE_GORMOK)) )
|
||||
if( Creature* gormok = ObjectAccessor::GetCreature(*me, pInstance->GetGuidData(TYPE_GORMOK)) )
|
||||
if( gormok->IsAlive() )
|
||||
if( Vehicle* vk = gormok->GetVehicleKit() )
|
||||
for( uint8 i = 0; i < 4; ++i )
|
||||
@@ -134,7 +134,7 @@ public:
|
||||
Reset();
|
||||
break;
|
||||
}
|
||||
TargetGUID = 0;
|
||||
TargetGUID.Clear();
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -161,9 +161,9 @@ public:
|
||||
{
|
||||
if( t->GetTypeId() != TYPEID_PLAYER && pInstance )
|
||||
{
|
||||
std::vector<uint64> validPlayers;
|
||||
GuidVector validPlayers;
|
||||
Map::PlayerList const& pl = me->GetMap()->GetPlayers();
|
||||
Creature* gormok = ObjectAccessor::GetCreature(*me, pInstance->GetData64(TYPE_GORMOK));
|
||||
Creature* gormok = ObjectAccessor::GetCreature(*me, pInstance->GetGuidData(TYPE_GORMOK));
|
||||
|
||||
for( Map::PlayerList::const_iterator itr = pl.begin(); itr != pl.end(); ++itr )
|
||||
{
|
||||
@@ -234,13 +234,13 @@ public:
|
||||
InstanceScript* pInstance;
|
||||
EventMap events;
|
||||
SummonList summons;
|
||||
uint64 PlayerGUID;
|
||||
ObjectGuid PlayerGUID;
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
events.Reset();
|
||||
summons.DespawnAll();
|
||||
PlayerGUID = 0;
|
||||
PlayerGUID.Clear();
|
||||
}
|
||||
|
||||
void EnterCombat(Unit* /*who*/) override
|
||||
@@ -298,7 +298,7 @@ public:
|
||||
for( uint8 i = 0; i < 4; ++i )
|
||||
if( Unit* snobold = vk->GetPassenger(i) )
|
||||
{
|
||||
std::vector<uint64> validPlayers;
|
||||
GuidVector validPlayers;
|
||||
Map::PlayerList const& pl = me->GetMap()->GetPlayers();
|
||||
for( Map::PlayerList::const_iterator itr = pl.begin(); itr != pl.end(); ++itr )
|
||||
{
|
||||
@@ -358,7 +358,7 @@ public:
|
||||
snobold->ToCreature()->DespawnOrUnsummon();
|
||||
}
|
||||
}
|
||||
PlayerGUID = 0;
|
||||
PlayerGUID.Clear();
|
||||
}
|
||||
break;
|
||||
}
|
||||
@@ -561,7 +561,7 @@ struct boss_jormungarAI : public ScriptedAI
|
||||
|
||||
// second one submerge 1.5sec after the first one, used also for synchronizing
|
||||
if( pInstance )
|
||||
if( Creature* c = ObjectAccessor::GetCreature(*me, pInstance->GetData64(_TYPE_OTHER)) )
|
||||
if( Creature* c = ObjectAccessor::GetCreature(*me, pInstance->GetGuidData(_TYPE_OTHER)) )
|
||||
c->AI()->DoAction(-1);
|
||||
|
||||
events.Reset();
|
||||
@@ -647,7 +647,7 @@ struct boss_jormungarAI : public ScriptedAI
|
||||
{
|
||||
if( pInstance )
|
||||
{
|
||||
if( Creature* c = pInstance->instance->GetCreature(pInstance->GetData64(_TYPE_OTHER)) )
|
||||
if( Creature* c = pInstance->instance->GetCreature(pInstance->GetGuidData(_TYPE_OTHER)) )
|
||||
if( c->IsAlive() )
|
||||
c->AI()->DoAction(-2);
|
||||
pInstance->SetData(TYPE_JORMUNGAR, DONE);
|
||||
@@ -776,7 +776,7 @@ public:
|
||||
|
||||
InstanceScript* pInstance;
|
||||
EventMap events;
|
||||
uint64 TargetGUID;
|
||||
ObjectGuid TargetGUID;
|
||||
float destX, destY, destZ;
|
||||
|
||||
void AttackStart(Unit* who) override
|
||||
@@ -882,7 +882,7 @@ public:
|
||||
me->SetReactState(REACT_PASSIVE);
|
||||
me->AttackStop();
|
||||
me->GetMotionMaster()->MoveJump(Locs[LOC_CENTER].GetPositionX(), Locs[LOC_CENTER].GetPositionY(), Locs[LOC_CENTER].GetPositionZ(), 40.0f, 12.0f);
|
||||
me->SetUInt64Value(UNIT_FIELD_TARGET, 0);
|
||||
me->SetGuidValue(UNIT_FIELD_TARGET, ObjectGuid::Empty);
|
||||
events.Reset();
|
||||
events.RescheduleEvent(EVENT_SPELL_MASSIVE_CRASH, 2000);
|
||||
break;
|
||||
@@ -893,10 +893,10 @@ public:
|
||||
events.RescheduleEvent(EVENT_GAZE, 2000);
|
||||
break;
|
||||
case EVENT_GAZE:
|
||||
if( Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, 500.0f, true) )
|
||||
if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, 500.0f, true) )
|
||||
{
|
||||
TargetGUID = target->GetGUID();
|
||||
me->SetUInt64Value(UNIT_FIELD_TARGET, TargetGUID);
|
||||
me->SetGuidValue(UNIT_FIELD_TARGET, TargetGUID);
|
||||
me->SetFacingToObject(target);
|
||||
Talk(EMOTE_TRAMPLE_STARE, target);
|
||||
me->HandleEmoteCommand(EMOTE_ONESHOT_ROAR);
|
||||
@@ -958,7 +958,7 @@ public:
|
||||
me->DisableSpline();
|
||||
me->GetMotionMaster()->Clear();
|
||||
me->GetMotionMaster()->MoveCharge(destX, destY, destZ + 1.0f, 65.0f);
|
||||
me->SetUInt64Value(UNIT_FIELD_TARGET, 0);
|
||||
me->SetGuidValue(UNIT_FIELD_TARGET, ObjectGuid::Empty);
|
||||
events.RescheduleEvent(EVENT_CHECK_TRAMPLE_PLAYERS, 100);
|
||||
|
||||
break;
|
||||
|
||||
+2
-2
@@ -187,7 +187,7 @@ struct boss_twin_valkyrAI : public ScriptedAI
|
||||
|
||||
Creature* GetSister()
|
||||
{
|
||||
return ObjectAccessor::GetCreature(*me, pInstance->GetData64(me->GetEntry() == NPC_DARKBANE ? NPC_LIGHTBANE : NPC_DARKBANE));
|
||||
return ObjectAccessor::GetCreature(*me, pInstance->GetGuidData(me->GetEntry() == NPC_DARKBANE ? NPC_LIGHTBANE : NPC_DARKBANE));
|
||||
}
|
||||
|
||||
/*void AttackStart(Unit* victim)
|
||||
@@ -371,7 +371,7 @@ struct boss_twin_valkyrAI : public ScriptedAI
|
||||
events.RepeatEvent(urand(45000,50000));
|
||||
*/
|
||||
|
||||
std::vector<uint64> tList;
|
||||
GuidVector tList;
|
||||
Map::PlayerList const& pList = me->GetMap()->GetPlayers();
|
||||
if (pList.getSize())
|
||||
{
|
||||
|
||||
+50
-72
@@ -34,30 +34,30 @@ public:
|
||||
std::string str_data;
|
||||
EventMap events;
|
||||
|
||||
uint64 NPC_BarrettGUID;
|
||||
uint64 NPC_TirionGUID;
|
||||
uint64 NPC_FizzlebangGUID;
|
||||
uint64 NPC_GarroshGUID;
|
||||
uint64 NPC_VarianGUID;
|
||||
ObjectGuid NPC_BarrettGUID;
|
||||
ObjectGuid NPC_TirionGUID;
|
||||
ObjectGuid NPC_FizzlebangGUID;
|
||||
ObjectGuid NPC_GarroshGUID;
|
||||
ObjectGuid NPC_VarianGUID;
|
||||
|
||||
uint64 NPC_GormokGUID;
|
||||
uint64 NPC_DreadscaleGUID;
|
||||
uint64 NPC_AcidmawGUID;
|
||||
uint64 NPC_IcehowlGUID;
|
||||
uint64 NPC_JaraxxusGUID;
|
||||
std::vector<uint64> NPC_ChampionGUIDs;
|
||||
uint64 NPC_LightbaneGUID;
|
||||
uint64 NPC_DarkbaneGUID;
|
||||
uint64 NPC_LichKingGUID;
|
||||
uint64 NPC_AnubarakGUID;
|
||||
ObjectGuid NPC_GormokGUID;
|
||||
ObjectGuid NPC_DreadscaleGUID;
|
||||
ObjectGuid NPC_AcidmawGUID;
|
||||
ObjectGuid NPC_IcehowlGUID;
|
||||
ObjectGuid NPC_JaraxxusGUID;
|
||||
GuidVector NPC_ChampionGUIDs;
|
||||
ObjectGuid NPC_LightbaneGUID;
|
||||
ObjectGuid NPC_DarkbaneGUID;
|
||||
ObjectGuid NPC_LichKingGUID;
|
||||
ObjectGuid NPC_AnubarakGUID;
|
||||
|
||||
uint64 NPC_PurpleGroundGUID;
|
||||
uint64 NPC_PortalGUID;
|
||||
ObjectGuid NPC_PurpleGroundGUID;
|
||||
ObjectGuid NPC_PortalGUID;
|
||||
|
||||
uint64 GO_MainGateGUID;
|
||||
uint64 GO_EnterGateGUID;
|
||||
uint64 GO_WebDoorGUID;
|
||||
uint64 GO_FloorGUID;
|
||||
ObjectGuid GO_MainGateGUID;
|
||||
ObjectGuid GO_EnterGateGUID;
|
||||
ObjectGuid GO_WebDoorGUID;
|
||||
ObjectGuid GO_FloorGUID;
|
||||
|
||||
void SpawnAnubArak()
|
||||
{
|
||||
@@ -72,8 +72,8 @@ public:
|
||||
}
|
||||
|
||||
// move corpses
|
||||
const uint64 npcs[4] = { NPC_IcehowlGUID, NPC_JaraxxusGUID, NPC_LightbaneGUID, NPC_DarkbaneGUID };
|
||||
for (const uint64 i : npcs)
|
||||
const ObjectGuid npcs[4] = { NPC_IcehowlGUID, NPC_JaraxxusGUID, NPC_LightbaneGUID, NPC_DarkbaneGUID };
|
||||
for (const ObjectGuid i : npcs)
|
||||
{
|
||||
if (Creature* c = instance->GetCreature(i))
|
||||
{
|
||||
@@ -161,30 +161,7 @@ public:
|
||||
events.Reset();
|
||||
events.RescheduleEvent(EVENT_CHECK_PLAYERS, 0);
|
||||
|
||||
NPC_BarrettGUID = 0;
|
||||
NPC_TirionGUID = 0;
|
||||
NPC_FizzlebangGUID = 0;
|
||||
NPC_GarroshGUID = 0;
|
||||
NPC_VarianGUID = 0;
|
||||
|
||||
NPC_GormokGUID = 0;
|
||||
NPC_DreadscaleGUID = 0;
|
||||
NPC_AcidmawGUID = 0;
|
||||
NPC_IcehowlGUID = 0;
|
||||
NPC_JaraxxusGUID = 0;
|
||||
NPC_ChampionGUIDs.clear();
|
||||
NPC_LightbaneGUID = 0;
|
||||
NPC_DarkbaneGUID = 0;
|
||||
NPC_LichKingGUID = 0;
|
||||
NPC_AnubarakGUID = 0;
|
||||
|
||||
NPC_PurpleGroundGUID = 0;
|
||||
NPC_PortalGUID = 0;
|
||||
|
||||
GO_MainGateGUID = 0;
|
||||
GO_EnterGateGUID = 0;
|
||||
GO_WebDoorGUID = 0;
|
||||
GO_FloorGUID = 0;
|
||||
}
|
||||
|
||||
bool IsEncounterInProgress() const override
|
||||
@@ -425,8 +402,8 @@ public:
|
||||
InstanceProgress = INSTANCE_PROGRESS_FACTION_CHAMPIONS_DEAD;
|
||||
events.RescheduleEvent(EVENT_SCENE_FACTION_CHAMPIONS_DEAD, 2500);
|
||||
|
||||
for( std::vector<uint64>::iterator itr = NPC_ChampionGUIDs.begin(); itr != NPC_ChampionGUIDs.end(); ++itr )
|
||||
if( Creature* c = instance->GetCreature(*itr) )
|
||||
for (ObjectGuid guid : NPC_ChampionGUIDs)
|
||||
if (Creature* c = instance->GetCreature(guid))
|
||||
c->DespawnOrUnsummon(15000);
|
||||
NPC_ChampionGUIDs.clear();
|
||||
|
||||
@@ -478,10 +455,10 @@ public:
|
||||
{
|
||||
EncounterStatus = IN_PROGRESS;
|
||||
AchievementTimer = 0;
|
||||
for( std::vector<uint64>::iterator itr = NPC_ChampionGUIDs.begin(); itr != NPC_ChampionGUIDs.end(); ++itr )
|
||||
if( Creature* c = instance->GetCreature(*itr) )
|
||||
if( !c->IsInCombat() )
|
||||
if( Unit* target = c->SelectNearestTarget(200.0f) )
|
||||
for (ObjectGuid guid : NPC_ChampionGUIDs)
|
||||
if (Creature* c = instance->GetCreature(guid))
|
||||
if (!c->IsInCombat())
|
||||
if (Unit* target = c->SelectNearestTarget(200.0f))
|
||||
c->AI()->AttackStart(target);
|
||||
}
|
||||
break;
|
||||
@@ -549,7 +526,7 @@ public:
|
||||
return 0;
|
||||
}
|
||||
|
||||
uint64 GetData64(uint32 type) const override
|
||||
ObjectGuid GetGuidData(uint32 type) const override
|
||||
{
|
||||
switch( type )
|
||||
{
|
||||
@@ -566,7 +543,8 @@ public:
|
||||
case TYPE_ANUBARAK:
|
||||
return NPC_AnubarakGUID;
|
||||
}
|
||||
return 0;
|
||||
|
||||
return ObjectGuid::Empty;
|
||||
}
|
||||
|
||||
void Update(uint32 diff) override
|
||||
@@ -866,10 +844,10 @@ public:
|
||||
c->SetFacingTo(M_PI / 2);
|
||||
if( Creature* c = instance->GetCreature(NPC_PurpleGroundGUID) )
|
||||
c->DespawnOrUnsummon();
|
||||
NPC_PurpleGroundGUID = 0;
|
||||
NPC_PurpleGroundGUID.Clear();
|
||||
if( Creature* c = instance->GetCreature(NPC_PortalGUID) )
|
||||
c->DespawnOrUnsummon();
|
||||
NPC_PortalGUID = 0;
|
||||
NPC_PortalGUID.Clear();
|
||||
|
||||
events.RescheduleEvent(EVENT_SCENE_106, 10000);
|
||||
break;
|
||||
@@ -1115,8 +1093,8 @@ public:
|
||||
}
|
||||
case EVENT_CHAMPIONS_ATTACK:
|
||||
{
|
||||
for( std::vector<uint64>::iterator itr = NPC_ChampionGUIDs.begin(); itr != NPC_ChampionGUIDs.end(); ++itr )
|
||||
if( Creature* c = instance->GetCreature(*itr) )
|
||||
for (ObjectGuid guid : NPC_ChampionGUIDs)
|
||||
if (Creature* c = instance->GetCreature(guid))
|
||||
{
|
||||
c->SetReactState(REACT_AGGRESSIVE);
|
||||
c->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
||||
@@ -1469,16 +1447,16 @@ public:
|
||||
c->AI()->DoAction(-1); // despawn summons
|
||||
c->DespawnOrUnsummon();
|
||||
}
|
||||
NPC_GormokGUID = 0;
|
||||
NPC_GormokGUID.Clear();
|
||||
if( Creature* c = instance->GetCreature(NPC_AcidmawGUID) )
|
||||
c->DespawnOrUnsummon();
|
||||
NPC_AcidmawGUID = 0;
|
||||
NPC_AcidmawGUID.Clear();
|
||||
if( Creature* c = instance->GetCreature(NPC_DreadscaleGUID) )
|
||||
c->DespawnOrUnsummon();
|
||||
NPC_DreadscaleGUID = 0;
|
||||
NPC_DreadscaleGUID.Clear();
|
||||
if( Creature* c = instance->GetCreature(NPC_IcehowlGUID) )
|
||||
c->DespawnOrUnsummon();
|
||||
NPC_IcehowlGUID = 0;
|
||||
NPC_IcehowlGUID.Clear();
|
||||
northrendBeastsMask = 0;
|
||||
break;
|
||||
case INSTANCE_PROGRESS_BEASTS_DEAD:
|
||||
@@ -1486,16 +1464,16 @@ public:
|
||||
c->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP);
|
||||
if( Creature* c = instance->GetCreature(NPC_FizzlebangGUID) )
|
||||
c->DespawnOrUnsummon();
|
||||
NPC_FizzlebangGUID = 0;
|
||||
NPC_FizzlebangGUID.Clear();
|
||||
if( Creature* c = instance->GetCreature(NPC_JaraxxusGUID) )
|
||||
c->DespawnOrUnsummon();
|
||||
NPC_JaraxxusGUID = 0;
|
||||
NPC_JaraxxusGUID.Clear();
|
||||
if( Creature* c = instance->GetCreature(NPC_PurpleGroundGUID) )
|
||||
c->DespawnOrUnsummon();
|
||||
NPC_PurpleGroundGUID = 0;
|
||||
NPC_PurpleGroundGUID.Clear();
|
||||
if( Creature* c = instance->GetCreature(NPC_PortalGUID) )
|
||||
c->DespawnOrUnsummon();
|
||||
NPC_PortalGUID = 0;
|
||||
NPC_PortalGUID.Clear();
|
||||
break;
|
||||
case INSTANCE_PROGRESS_JARAXXUS_INTRO_DONE:
|
||||
if( Creature* c = instance->GetCreature(NPC_JaraxxusGUID) )
|
||||
@@ -1515,8 +1493,8 @@ public:
|
||||
case INSTANCE_PROGRESS_JARAXXUS_DEAD:
|
||||
if( Creature* c = instance->GetCreature(NPC_BarrettGUID) )
|
||||
c->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP);
|
||||
for( std::vector<uint64>::iterator itr = NPC_ChampionGUIDs.begin(); itr != NPC_ChampionGUIDs.end(); ++itr )
|
||||
if( Creature* c = instance->GetCreature(*itr) )
|
||||
for (ObjectGuid guid : NPC_ChampionGUIDs)
|
||||
if (Creature* c = instance->GetCreature(guid))
|
||||
c->DespawnOrUnsummon();
|
||||
NPC_ChampionGUIDs.clear();
|
||||
break;
|
||||
@@ -1528,13 +1506,13 @@ public:
|
||||
c->AI()->DoAction(-1);
|
||||
c->DespawnOrUnsummon();
|
||||
}
|
||||
NPC_DarkbaneGUID = 0;
|
||||
NPC_DarkbaneGUID.Clear();
|
||||
if( Creature* c = instance->GetCreature(NPC_LightbaneGUID) )
|
||||
{
|
||||
c->AI()->DoAction(-1);
|
||||
c->DespawnOrUnsummon();
|
||||
}
|
||||
NPC_LightbaneGUID = 0;
|
||||
NPC_LightbaneGUID.Clear();
|
||||
break;
|
||||
case INSTANCE_PROGRESS_VALKYR_DEAD:
|
||||
case INSTANCE_PROGRESS_ANUB_ARAK:
|
||||
@@ -1558,14 +1536,14 @@ public:
|
||||
}
|
||||
if( Creature* c = instance->GetCreature(NPC_LichKingGUID) )
|
||||
c->DespawnOrUnsummon();
|
||||
NPC_LichKingGUID = 0;
|
||||
NPC_LichKingGUID.Clear();
|
||||
|
||||
if( Creature* c = instance->GetCreature(NPC_AnubarakGUID) )
|
||||
{
|
||||
c->AI()->DoAction(-1);
|
||||
c->DespawnOrUnsummon();
|
||||
}
|
||||
NPC_AnubarakGUID = 0;
|
||||
NPC_AnubarakGUID.Clear();
|
||||
|
||||
break;
|
||||
case INSTANCE_PROGRESS_DONE:
|
||||
|
||||
@@ -77,7 +77,10 @@ public:
|
||||
BossAI::Reset();
|
||||
instance->SetBossState(DATA_NOVOS_CRYSTALS, IN_PROGRESS);
|
||||
instance->SetBossState(DATA_NOVOS_CRYSTALS, NOT_STARTED);
|
||||
_crystalCounter = _summonTargetRightGUID = _summonTargetLeftGUID = _stage = 0;
|
||||
_crystalCounter = 0;
|
||||
_summonTargetRightGUID.Clear();
|
||||
_summonTargetLeftGUID.Clear();
|
||||
_stage = 0;
|
||||
|
||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_DISABLE_MOVE);
|
||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
||||
@@ -133,7 +136,7 @@ public:
|
||||
}
|
||||
}
|
||||
|
||||
me->SetUInt64Value(UNIT_FIELD_TARGET, 0);
|
||||
me->SetGuidValue(UNIT_FIELD_TARGET, ObjectGuid::Empty);
|
||||
me->RemoveAllAuras();
|
||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
||||
@@ -240,8 +243,8 @@ public:
|
||||
private:
|
||||
uint8 _crystalCounter;
|
||||
uint8 _stage;
|
||||
uint64 _summonTargetRightGUID;
|
||||
uint64 _summonTargetLeftGUID;
|
||||
ObjectGuid _summonTargetRightGUID;
|
||||
ObjectGuid _summonTargetLeftGUID;
|
||||
|
||||
bool _achievement;
|
||||
};
|
||||
|
||||
@@ -221,7 +221,7 @@ public:
|
||||
void UpdateAI(uint32 diff) override
|
||||
{
|
||||
if (pInstance)
|
||||
if (Creature* b = pInstance->instance->GetCreature(pInstance->GetData64(DATA_BRONJAHM)))
|
||||
if (Creature* b = pInstance->instance->GetCreature(pInstance->GetGuidData(DATA_BRONJAHM)))
|
||||
{
|
||||
if (me->GetExactDist2d(b) <= 2.0f)
|
||||
{
|
||||
|
||||
@@ -140,7 +140,7 @@ public:
|
||||
me->SetOrientation(me->GetAngle(target));
|
||||
me->SetControlled(true, UNIT_STATE_ROOT);
|
||||
me->DisableRotate(true);
|
||||
me->SetUInt64Value(UNIT_FIELD_TARGET, 0);
|
||||
me->SetGuidValue(UNIT_FIELD_TARGET, ObjectGuid::Empty);
|
||||
me->SetReactState(REACT_PASSIVE);
|
||||
me->GetMotionMaster()->Clear(false);
|
||||
me->GetMotionMaster()->MoveIdle();
|
||||
@@ -337,7 +337,7 @@ public:
|
||||
t->ToCreature()->SetReactState(REACT_AGGRESSIVE);
|
||||
if (t->GetVictim())
|
||||
{
|
||||
t->SetUInt64Value(UNIT_FIELD_TARGET, t->GetVictim()->GetGUID());
|
||||
t->SetGuidValue(UNIT_FIELD_TARGET, t->GetVictim()->GetGUID());
|
||||
t->GetMotionMaster()->MoveChase(t->GetVictim());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -24,25 +24,18 @@ public:
|
||||
uint32 m_auiEncounter[MAX_ENCOUNTER];
|
||||
TeamId teamIdInInstance;
|
||||
std::string str_data;
|
||||
uint64 NPC_BronjahmGUID;
|
||||
uint64 NPC_DevourerGUID;
|
||||
ObjectGuid NPC_BronjahmGUID;
|
||||
ObjectGuid NPC_DevourerGUID;
|
||||
|
||||
uint64 NPC_LeaderFirstGUID;
|
||||
uint64 NPC_LeaderSecondGUID;
|
||||
uint64 NPC_GuardFirstGUID;
|
||||
uint64 NPC_GuardSecondGUID;
|
||||
ObjectGuid NPC_LeaderFirstGUID;
|
||||
ObjectGuid NPC_LeaderSecondGUID;
|
||||
ObjectGuid NPC_GuardFirstGUID;
|
||||
ObjectGuid NPC_GuardSecondGUID;
|
||||
|
||||
void Initialize() override
|
||||
{
|
||||
memset(&m_auiEncounter, 0, sizeof(m_auiEncounter));
|
||||
teamIdInInstance = TEAM_NEUTRAL;
|
||||
NPC_BronjahmGUID = 0;
|
||||
NPC_DevourerGUID = 0;
|
||||
|
||||
NPC_LeaderFirstGUID = 0;
|
||||
NPC_LeaderSecondGUID = 0;
|
||||
NPC_GuardFirstGUID = 0;
|
||||
NPC_GuardSecondGUID = 0;
|
||||
}
|
||||
|
||||
bool IsEncounterInProgress() const override
|
||||
@@ -150,7 +143,7 @@ public:
|
||||
SaveToDB();
|
||||
}
|
||||
|
||||
uint64 GetData64(uint32 type) const override
|
||||
ObjectGuid GetGuidData(uint32 type) const override
|
||||
{
|
||||
switch (type)
|
||||
{
|
||||
@@ -158,7 +151,7 @@ public:
|
||||
return NPC_BronjahmGUID;
|
||||
}
|
||||
|
||||
return 0;
|
||||
return ObjectGuid::Empty;
|
||||
}
|
||||
|
||||
bool CheckAchievementCriteriaMeet(uint32 criteria_id, Player const* /*source*/, Unit const* /*target*/, uint32 /*miscvalue1*/) override
|
||||
|
||||
+59
-59
@@ -210,7 +210,7 @@ public:
|
||||
if (pInstance)
|
||||
{
|
||||
me->SetVisible(true);
|
||||
if (Creature* c = pInstance->instance->GetCreature(pInstance->GetData64(NPC_DARK_RANGER_LORALEN)))
|
||||
if (Creature* c = pInstance->instance->GetCreature(pInstance->GetGuidData(NPC_DARK_RANGER_LORALEN)))
|
||||
c->SetVisible(true);
|
||||
}
|
||||
break;
|
||||
@@ -229,7 +229,7 @@ public:
|
||||
shortver = false;
|
||||
me->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_ONESHOT_NONE);
|
||||
me->GetMotionMaster()->MovePoint(0, MoveThronePos);
|
||||
if (Creature* c = pInstance->instance->GetCreature(pInstance->GetData64(NPC_DARK_RANGER_LORALEN)))
|
||||
if (Creature* c = pInstance->instance->GetCreature(pInstance->GetGuidData(NPC_DARK_RANGER_LORALEN)))
|
||||
c->GetMotionMaster()->MovePoint(0, LoralenFollowPos);
|
||||
// Begining of intro is differents between factions as the speech sequence and timers are differents.
|
||||
if (me->GetEntry() == NPC_JAINA_PART1)
|
||||
@@ -241,7 +241,7 @@ public:
|
||||
shortver = true;
|
||||
me->SetUInt32Value(UNIT_NPC_EMOTESTATE, (me->GetEntry() == NPC_JAINA_PART1 ? EMOTE_STATE_READY2H : EMOTE_STATE_READY1H));
|
||||
me->GetMotionMaster()->MovePoint(0, MoveThronePos);
|
||||
if (Creature* c = pInstance->instance->GetCreature(pInstance->GetData64(NPC_DARK_RANGER_LORALEN)))
|
||||
if (Creature* c = pInstance->instance->GetCreature(pInstance->GetGuidData(NPC_DARK_RANGER_LORALEN)))
|
||||
c->GetMotionMaster()->MovePoint(0, LoralenFollowPos);
|
||||
events.ScheduleEvent(EVENT_INTRO_LK_1, 0);
|
||||
break;
|
||||
@@ -256,13 +256,13 @@ public:
|
||||
events.ScheduleEvent(EVENT_INTRO_A2_3, 10000);
|
||||
break;
|
||||
case EVENT_INTRO_A2_3:
|
||||
pInstance->HandleGameObject(pInstance->GetData64(GO_FROSTMOURNE), true);
|
||||
pInstance->HandleGameObject(pInstance->GetGuidData(GO_FROSTMOURNE), true);
|
||||
me->CastSpell(me, SPELL_FROSTMOURNE_SPAWN_SOUND, true);
|
||||
me->CastSpell(me, SPELL_ARCANE_CAST_VISUAL, false);
|
||||
events.ScheduleEvent(EVENT_INTRO_A2_4, 10000);
|
||||
break;
|
||||
case EVENT_INTRO_A2_4:
|
||||
if (Creature* pUther = ObjectAccessor::GetCreature(*me, pInstance->GetData64(NPC_UTHER)))
|
||||
if (Creature* pUther = ObjectAccessor::GetCreature(*me, pInstance->GetGuidData(NPC_UTHER)))
|
||||
{
|
||||
pUther->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_ONESHOT_NONE);
|
||||
pUther->SetVisible(true);
|
||||
@@ -272,7 +272,7 @@ public:
|
||||
events.ScheduleEvent(EVENT_INTRO_A2_5, 2000);
|
||||
break;
|
||||
case EVENT_INTRO_A2_5:
|
||||
if (Creature* pUther = ObjectAccessor::GetCreature(*me, pInstance->GetData64(NPC_UTHER)))
|
||||
if (Creature* pUther = ObjectAccessor::GetCreature(*me, pInstance->GetGuidData(NPC_UTHER)))
|
||||
pUther->AI()->Talk(SAY_UTHER_INTRO_A2_1);
|
||||
events.ScheduleEvent(EVENT_INTRO_A2_6, 3000);
|
||||
break;
|
||||
@@ -281,7 +281,7 @@ public:
|
||||
events.ScheduleEvent(EVENT_INTRO_A2_7, 6000);
|
||||
break;
|
||||
case EVENT_INTRO_A2_7:
|
||||
if (Creature* pUther = ObjectAccessor::GetCreature(*me, pInstance->GetData64(NPC_UTHER)))
|
||||
if (Creature* pUther = ObjectAccessor::GetCreature(*me, pInstance->GetGuidData(NPC_UTHER)))
|
||||
pUther->AI()->Talk(SAY_UTHER_INTRO_A2_2);
|
||||
events.ScheduleEvent(EVENT_INTRO_A2_8, 6500);
|
||||
break;
|
||||
@@ -290,7 +290,7 @@ public:
|
||||
events.ScheduleEvent(EVENT_INTRO_A2_9, 2000);
|
||||
break;
|
||||
case EVENT_INTRO_A2_9:
|
||||
if (Creature* pUther = ObjectAccessor::GetCreature(*me, pInstance->GetData64(NPC_UTHER)))
|
||||
if (Creature* pUther = ObjectAccessor::GetCreature(*me, pInstance->GetGuidData(NPC_UTHER)))
|
||||
pUther->AI()->Talk(SAY_UTHER_INTRO_A2_3);
|
||||
events.ScheduleEvent(EVENT_INTRO_A2_10, 9000);
|
||||
break;
|
||||
@@ -299,7 +299,7 @@ public:
|
||||
events.ScheduleEvent(EVENT_INTRO_A2_11, 5000);
|
||||
break;
|
||||
case EVENT_INTRO_A2_11:
|
||||
if (Creature* pUther = ObjectAccessor::GetCreature(*me, pInstance->GetData64(NPC_UTHER)))
|
||||
if (Creature* pUther = ObjectAccessor::GetCreature(*me, pInstance->GetGuidData(NPC_UTHER)))
|
||||
pUther->AI()->Talk(SAY_UTHER_INTRO_A2_4);
|
||||
events.ScheduleEvent(EVENT_INTRO_A2_12, 11000);
|
||||
break;
|
||||
@@ -308,7 +308,7 @@ public:
|
||||
events.ScheduleEvent(EVENT_INTRO_A2_13, 4000);
|
||||
break;
|
||||
case EVENT_INTRO_A2_13:
|
||||
if (Creature* pUther = ObjectAccessor::GetCreature(*me, pInstance->GetData64(NPC_UTHER)))
|
||||
if (Creature* pUther = ObjectAccessor::GetCreature(*me, pInstance->GetGuidData(NPC_UTHER)))
|
||||
pUther->AI()->Talk(SAY_UTHER_INTRO_A2_5);
|
||||
events.ScheduleEvent(EVENT_INTRO_A2_14, 12500);
|
||||
break;
|
||||
@@ -317,12 +317,12 @@ public:
|
||||
events.ScheduleEvent(EVENT_INTRO_A2_15, 10000);
|
||||
break;
|
||||
case EVENT_INTRO_A2_15:
|
||||
if (Creature* pUther = ObjectAccessor::GetCreature(*me, pInstance->GetData64(NPC_UTHER)))
|
||||
if (Creature* pUther = ObjectAccessor::GetCreature(*me, pInstance->GetGuidData(NPC_UTHER)))
|
||||
pUther->AI()->Talk(SAY_UTHER_INTRO_A2_6);
|
||||
events.ScheduleEvent(EVENT_INTRO_A2_16, 24000);
|
||||
break;
|
||||
case EVENT_INTRO_A2_16:
|
||||
if (Creature* pUther = ObjectAccessor::GetCreature(*me, pInstance->GetData64(NPC_UTHER)))
|
||||
if (Creature* pUther = ObjectAccessor::GetCreature(*me, pInstance->GetGuidData(NPC_UTHER)))
|
||||
pUther->AI()->Talk(SAY_UTHER_INTRO_A2_7);
|
||||
events.ScheduleEvent(EVENT_INTRO_A2_17, 4000);
|
||||
break;
|
||||
@@ -331,7 +331,7 @@ public:
|
||||
events.ScheduleEvent(EVENT_INTRO_A2_18, 2000);
|
||||
break;
|
||||
case EVENT_INTRO_A2_18:
|
||||
if (Creature* pUther = ObjectAccessor::GetCreature(*me, pInstance->GetData64(NPC_UTHER)))
|
||||
if (Creature* pUther = ObjectAccessor::GetCreature(*me, pInstance->GetGuidData(NPC_UTHER)))
|
||||
{
|
||||
pUther->HandleEmoteCommand(EMOTE_ONESHOT_NO);
|
||||
pUther->AI()->Talk(SAY_UTHER_INTRO_A2_8);
|
||||
@@ -350,13 +350,13 @@ public:
|
||||
break;
|
||||
case EVENT_INTRO_H2_3:
|
||||
Talk(SAY_SYLVANAS_INTRO_3);
|
||||
pInstance->HandleGameObject(pInstance->GetData64(GO_FROSTMOURNE), true);
|
||||
pInstance->HandleGameObject(pInstance->GetGuidData(GO_FROSTMOURNE), true);
|
||||
me->CastSpell(me, SPELL_FROSTMOURNE_SPAWN_SOUND, true);
|
||||
me->CastSpell(me, SPELL_ARCANE_CAST_VISUAL, false);
|
||||
events.ScheduleEvent(EVENT_INTRO_H2_4, 6000);
|
||||
break;
|
||||
case EVENT_INTRO_H2_4:
|
||||
if (Creature* pUther = pInstance->instance->GetCreature(pInstance->GetData64(NPC_UTHER)))
|
||||
if (Creature* pUther = pInstance->instance->GetCreature(pInstance->GetGuidData(NPC_UTHER)))
|
||||
{
|
||||
pUther->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_ONESHOT_NONE);
|
||||
pUther->SetVisible(true);
|
||||
@@ -366,7 +366,7 @@ public:
|
||||
events.ScheduleEvent(EVENT_INTRO_H2_5, 2000);
|
||||
break;
|
||||
case EVENT_INTRO_H2_5:
|
||||
if (Creature* pUther = ObjectAccessor::GetCreature(*me, pInstance->GetData64(NPC_UTHER)))
|
||||
if (Creature* pUther = ObjectAccessor::GetCreature(*me, pInstance->GetGuidData(NPC_UTHER)))
|
||||
pUther->AI()->Talk(SAY_UTHER_INTRO_H2_1);
|
||||
events.ScheduleEvent(EVENT_INTRO_H2_6, 11000);
|
||||
break;
|
||||
@@ -375,7 +375,7 @@ public:
|
||||
events.ScheduleEvent(EVENT_INTRO_H2_7, 3000);
|
||||
break;
|
||||
case EVENT_INTRO_H2_7:
|
||||
if (Creature* pUther = ObjectAccessor::GetCreature(*me, pInstance->GetData64(NPC_UTHER)))
|
||||
if (Creature* pUther = ObjectAccessor::GetCreature(*me, pInstance->GetGuidData(NPC_UTHER)))
|
||||
pUther->AI()->Talk(SAY_UTHER_INTRO_H2_2);
|
||||
events.ScheduleEvent(EVENT_INTRO_H2_8, 6000);
|
||||
break;
|
||||
@@ -384,7 +384,7 @@ public:
|
||||
events.ScheduleEvent(EVENT_INTRO_H2_9, 5000);
|
||||
break;
|
||||
case EVENT_INTRO_H2_9:
|
||||
if (Creature* pUther = ObjectAccessor::GetCreature(*me, pInstance->GetData64(NPC_UTHER)))
|
||||
if (Creature* pUther = ObjectAccessor::GetCreature(*me, pInstance->GetGuidData(NPC_UTHER)))
|
||||
pUther->AI()->Talk(SAY_UTHER_INTRO_H2_3);
|
||||
events.ScheduleEvent(EVENT_INTRO_H2_10, 19000);
|
||||
break;
|
||||
@@ -393,7 +393,7 @@ public:
|
||||
events.ScheduleEvent(EVENT_INTRO_H2_11, 1500);
|
||||
break;
|
||||
case EVENT_INTRO_H2_11:
|
||||
if (Creature* pUther = ObjectAccessor::GetCreature(*me, pInstance->GetData64(NPC_UTHER)))
|
||||
if (Creature* pUther = ObjectAccessor::GetCreature(*me, pInstance->GetGuidData(NPC_UTHER)))
|
||||
pUther->AI()->Talk(SAY_UTHER_INTRO_H2_4);
|
||||
events.ScheduleEvent(EVENT_INTRO_H2_12, 19500);
|
||||
break;
|
||||
@@ -402,7 +402,7 @@ public:
|
||||
events.ScheduleEvent(EVENT_INTRO_H2_13, 2000);
|
||||
break;
|
||||
case EVENT_INTRO_H2_13:
|
||||
if (Creature* pUther = ObjectAccessor::GetCreature(*me, pInstance->GetData64(NPC_UTHER)))
|
||||
if (Creature* pUther = ObjectAccessor::GetCreature(*me, pInstance->GetGuidData(NPC_UTHER)))
|
||||
{
|
||||
pUther->HandleEmoteCommand(EMOTE_ONESHOT_NO);
|
||||
pUther->AI()->Talk(SAY_UTHER_INTRO_H2_5);
|
||||
@@ -410,7 +410,7 @@ public:
|
||||
events.ScheduleEvent(EVENT_INTRO_H2_14, 12000);
|
||||
break;
|
||||
case EVENT_INTRO_H2_14:
|
||||
if (Creature* pUther = ObjectAccessor::GetCreature(*me, pInstance->GetData64(NPC_UTHER)))
|
||||
if (Creature* pUther = ObjectAccessor::GetCreature(*me, pInstance->GetGuidData(NPC_UTHER)))
|
||||
pUther->AI()->Talk(SAY_UTHER_INTRO_H2_6);
|
||||
events.ScheduleEvent(EVENT_INTRO_H2_15, 8000);
|
||||
break;
|
||||
@@ -421,15 +421,15 @@ public:
|
||||
|
||||
// Remaining Intro Events common for both faction
|
||||
case EVENT_INTRO_LK_1:
|
||||
if (Creature* pLichKing = pInstance->instance->GetCreature(pInstance->GetData64(NPC_LICH_KING_EVENT)))
|
||||
if (Creature* pLichKing = pInstance->instance->GetCreature(pInstance->GetGuidData(NPC_LICH_KING_EVENT)))
|
||||
{
|
||||
pInstance->HandleGameObject(pInstance->GetData64(GO_ARTHAS_DOOR), true);
|
||||
pInstance->HandleGameObject(pInstance->GetGuidData(GO_ARTHAS_DOOR), true);
|
||||
pLichKing->SetVisible(true);
|
||||
pLichKing->GetMotionMaster()->MovePoint(0, LichKingMoveThronePos, false);
|
||||
}
|
||||
|
||||
if (!shortver)
|
||||
if (Creature* pUther = ObjectAccessor::GetCreature(*me, pInstance->GetData64(NPC_UTHER)))
|
||||
if (Creature* pUther = ObjectAccessor::GetCreature(*me, pInstance->GetGuidData(NPC_UTHER)))
|
||||
{
|
||||
if (me->GetEntry() == NPC_JAINA_PART1)
|
||||
pUther->AI()->Talk(SAY_UTHER_INTRO_A2_9);
|
||||
@@ -444,52 +444,52 @@ public:
|
||||
|
||||
case EVENT_INTRO_LK_1_2:
|
||||
if (!shortver)
|
||||
if (Creature* pUther = ObjectAccessor::GetCreature(*me, pInstance->GetData64(NPC_UTHER)))
|
||||
if (Creature* pUther = ObjectAccessor::GetCreature(*me, pInstance->GetGuidData(NPC_UTHER)))
|
||||
pUther->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_STATE_COWER);
|
||||
break;
|
||||
|
||||
case EVENT_INTRO_LK_1_3:
|
||||
pInstance->HandleGameObject(pInstance->GetData64(GO_ARTHAS_DOOR), false);
|
||||
pInstance->HandleGameObject(pInstance->GetGuidData(GO_ARTHAS_DOOR), false);
|
||||
break;
|
||||
|
||||
case EVENT_INTRO_LK_2:
|
||||
if (!shortver)
|
||||
if (Creature* pLichKing = ObjectAccessor::GetCreature(*me, pInstance->GetData64(NPC_LICH_KING_EVENT)))
|
||||
if (Creature* pLichKing = ObjectAccessor::GetCreature(*me, pInstance->GetGuidData(NPC_LICH_KING_EVENT)))
|
||||
pLichKing->AI()->Talk(SAY_LK_INTRO_1);
|
||||
events.ScheduleEvent(EVENT_INTRO_LK_3, 2000);
|
||||
break;
|
||||
|
||||
case EVENT_INTRO_LK_3:
|
||||
if (!shortver)
|
||||
if (Creature* pUther = ObjectAccessor::GetCreature(*me, pInstance->GetData64(NPC_UTHER)))
|
||||
if (Creature* pUther = ObjectAccessor::GetCreature(*me, pInstance->GetGuidData(NPC_UTHER)))
|
||||
pUther->SetVisible(false);
|
||||
events.ScheduleEvent(EVENT_INTRO_LK_4, 4000);
|
||||
break;
|
||||
|
||||
case EVENT_INTRO_LK_4:
|
||||
if (Creature* pLichKing = ObjectAccessor::GetCreature(*me, pInstance->GetData64(NPC_LICH_KING_EVENT)))
|
||||
if (Creature* pLichKing = ObjectAccessor::GetCreature(*me, pInstance->GetGuidData(NPC_LICH_KING_EVENT)))
|
||||
pLichKing->AI()->Talk(SAY_LK_INTRO_2);
|
||||
events.ScheduleEvent(EVENT_INTRO_LK_4_2, 10000);
|
||||
break;
|
||||
|
||||
case EVENT_INTRO_LK_4_2:
|
||||
if (Creature* pLichKing = ObjectAccessor::GetCreature(*me, pInstance->GetData64(NPC_LICH_KING_EVENT)))
|
||||
if (Creature* pLichKing = ObjectAccessor::GetCreature(*me, pInstance->GetGuidData(NPC_LICH_KING_EVENT)))
|
||||
{
|
||||
pLichKing->LoadEquipment(1, true);
|
||||
pLichKing->SendMovementFlagUpdate();
|
||||
pLichKing->CastSpell(pLichKing, SPELL_FROSTMOURNE_EQUIP, false);
|
||||
pInstance->HandleGameObject(pInstance->GetData64(GO_FROSTMOURNE), false);
|
||||
pInstance->HandleGameObject(pInstance->GetGuidData(GO_FROSTMOURNE), false);
|
||||
events.ScheduleEvent(EVENT_INTRO_LK_4_3, 1750);
|
||||
}
|
||||
events.ScheduleEvent(EVENT_INTRO_LK_5, 6000);
|
||||
break;
|
||||
|
||||
case EVENT_INTRO_LK_4_3:
|
||||
if (GameObject* go = pInstance->instance->GetGameObject(pInstance->GetData64(GO_FROSTMOURNE)))
|
||||
if (GameObject* go = pInstance->instance->GetGameObject(pInstance->GetGuidData(GO_FROSTMOURNE)))
|
||||
go->SetPhaseMask(2, true);
|
||||
break;
|
||||
case EVENT_INTRO_LK_5:
|
||||
if (Creature* pFalric = ObjectAccessor::GetCreature(*me, pInstance->GetData64(DATA_FALRIC)))
|
||||
if (Creature* pFalric = ObjectAccessor::GetCreature(*me, pInstance->GetGuidData(DATA_FALRIC)))
|
||||
{
|
||||
pFalric->UpdatePosition(5274.9f, 2039.2f, 709.319f, 5.4619f, true);
|
||||
pFalric->StopMovingOnCurrentPos();
|
||||
@@ -501,7 +501,7 @@ public:
|
||||
a->SetDuration(8000);
|
||||
}
|
||||
}
|
||||
if (Creature* pMarwyn = ObjectAccessor::GetCreature(*me, pInstance->GetData64(DATA_MARWYN)))
|
||||
if (Creature* pMarwyn = ObjectAccessor::GetCreature(*me, pInstance->GetGuidData(DATA_MARWYN)))
|
||||
{
|
||||
pMarwyn->UpdatePosition(5343.77f, 1973.86f, 709.319f, 2.35173f, true);
|
||||
pMarwyn->StopMovingOnCurrentPos();
|
||||
@@ -514,7 +514,7 @@ public:
|
||||
}
|
||||
}
|
||||
|
||||
if (Creature* pLichKing = ObjectAccessor::GetCreature(*me, pInstance->GetData64(NPC_LICH_KING_EVENT)))
|
||||
if (Creature* pLichKing = ObjectAccessor::GetCreature(*me, pInstance->GetGuidData(NPC_LICH_KING_EVENT)))
|
||||
pLichKing->AI()->Talk(SAY_LK_INTRO_3);
|
||||
|
||||
events.ScheduleEvent(EVENT_INTRO_LK_5_2, 5000);
|
||||
@@ -522,30 +522,30 @@ public:
|
||||
break;
|
||||
|
||||
case EVENT_INTRO_LK_5_2:
|
||||
if (Creature* pLichKing = ObjectAccessor::GetCreature(*me, pInstance->GetData64(NPC_LICH_KING_EVENT)))
|
||||
if (Creature* pLichKing = ObjectAccessor::GetCreature(*me, pInstance->GetGuidData(NPC_LICH_KING_EVENT)))
|
||||
pLichKing->GetMotionMaster()->MovePoint(0, LichKingMoveAwayPos, false);
|
||||
break;
|
||||
|
||||
case EVENT_INTRO_LK_6:
|
||||
if (Creature* pFalric = ObjectAccessor::GetCreature(*me, pInstance->GetData64(DATA_FALRIC)))
|
||||
if (Creature* pFalric = ObjectAccessor::GetCreature(*me, pInstance->GetGuidData(DATA_FALRIC)))
|
||||
pFalric->AI()->Talk(SAY_FALRIC_INTRO_1);
|
||||
|
||||
events.ScheduleEvent(EVENT_INTRO_LK_7, 2000);
|
||||
break;
|
||||
|
||||
case EVENT_INTRO_LK_7:
|
||||
if (Creature* pMarwyn = ObjectAccessor::GetCreature(*me, pInstance->GetData64(DATA_MARWYN)))
|
||||
if (Creature* pMarwyn = ObjectAccessor::GetCreature(*me, pInstance->GetGuidData(DATA_MARWYN)))
|
||||
pMarwyn->AI()->Talk(SAY_MARWYN_INTRO_1);
|
||||
|
||||
events.ScheduleEvent(EVENT_INTRO_LK_8, 2000);
|
||||
break;
|
||||
|
||||
case EVENT_INTRO_LK_8:
|
||||
if (Creature* pFalric = ObjectAccessor::GetCreature(*me, pInstance->GetData64(DATA_FALRIC)))
|
||||
if (Creature* pFalric = ObjectAccessor::GetCreature(*me, pInstance->GetGuidData(DATA_FALRIC)))
|
||||
pFalric->AI()->Talk(SAY_FALRIC_INTRO_2);
|
||||
pInstance->SetData(ACTION_SHOW_TRASH, 1);
|
||||
|
||||
pInstance->HandleGameObject(pInstance->GetData64(GO_ARTHAS_DOOR), true);
|
||||
pInstance->HandleGameObject(pInstance->GetGuidData(GO_ARTHAS_DOOR), true);
|
||||
|
||||
events.ScheduleEvent(EVENT_INTRO_LK_9, 5000);
|
||||
break;
|
||||
@@ -557,20 +557,20 @@ public:
|
||||
Talk(SAY_SYLVANAS_INTRO_END);
|
||||
|
||||
me->GetMotionMaster()->MovePoint(0, LichKingMoveAwayPos, false);
|
||||
if (Creature* c = pInstance->instance->GetCreature(pInstance->GetData64(NPC_DARK_RANGER_LORALEN)))
|
||||
if (Creature* c = pInstance->instance->GetCreature(pInstance->GetGuidData(NPC_DARK_RANGER_LORALEN)))
|
||||
c->GetMotionMaster()->MovePoint(0, LichKingMoveAwayPos, false);
|
||||
events.ScheduleEvent(EVENT_INTRO_END, 14000);
|
||||
break;
|
||||
|
||||
case EVENT_INTRO_END:
|
||||
pInstance->HandleGameObject(pInstance->GetData64(GO_ARTHAS_DOOR), false);
|
||||
pInstance->HandleGameObject(pInstance->GetData64(GO_FRONT_DOOR), false);
|
||||
pInstance->HandleGameObject(pInstance->GetGuidData(GO_ARTHAS_DOOR), false);
|
||||
pInstance->HandleGameObject(pInstance->GetGuidData(GO_FRONT_DOOR), false);
|
||||
events.ScheduleEvent(EVENT_INTRO_END_SET, 10000);
|
||||
break;
|
||||
case EVENT_INTRO_END_SET:
|
||||
if (Creature* pLichKing = ObjectAccessor::GetCreature(*me, pInstance->GetData64(NPC_LICH_KING_EVENT)))
|
||||
if (Creature* pLichKing = ObjectAccessor::GetCreature(*me, pInstance->GetGuidData(NPC_LICH_KING_EVENT)))
|
||||
pLichKing->SetVisible(false);
|
||||
if (Creature* c = pInstance->instance->GetCreature(pInstance->GetData64(NPC_DARK_RANGER_LORALEN)))
|
||||
if (Creature* c = pInstance->instance->GetCreature(pInstance->GetGuidData(NPC_DARK_RANGER_LORALEN)))
|
||||
c->SetVisible(false);
|
||||
me->SetVisible(false);
|
||||
pInstance->SetData(DATA_INTRO, DONE);
|
||||
@@ -1395,7 +1395,7 @@ public:
|
||||
else
|
||||
me->RemoveAura(SPELL_REMORSELESS_WINTER);
|
||||
|
||||
if (Creature* c = pInstance->instance->GetCreature(pInstance->GetData64(NPC_SYLVANAS_PART2)))
|
||||
if (Creature* c = pInstance->instance->GetCreature(pInstance->GetGuidData(NPC_SYLVANAS_PART2)))
|
||||
c->AI()->DoAction(ACTION_INFORM_WALL_DESTROYED);
|
||||
}
|
||||
}
|
||||
@@ -1411,7 +1411,7 @@ public:
|
||||
{
|
||||
Talk(SAY_LK_IW_1);
|
||||
me->SetOrientation(4.15f);
|
||||
if (Creature* c = pInstance->instance->GetCreature(pInstance->GetData64(NPC_ICE_WALL_TARGET)))
|
||||
if (Creature* c = pInstance->instance->GetCreature(pInstance->GetGuidData(NPC_ICE_WALL_TARGET)))
|
||||
{
|
||||
me->CastSpell(c, SPELL_SUMMON_ICE_WALL, false);
|
||||
events.ScheduleEvent(EVENT_LK_REMORSELESS_WINTER, 4000);
|
||||
@@ -1468,7 +1468,7 @@ public:
|
||||
case EVENT_LK_CHECK_COMBAT:
|
||||
if (me->isActiveObject()) // during fight
|
||||
{
|
||||
if (Creature* leader = pInstance->instance->GetCreature(pInstance->GetData64(NPC_SYLVANAS_PART2)))
|
||||
if (Creature* leader = pInstance->instance->GetCreature(pInstance->GetGuidData(NPC_SYLVANAS_PART2)))
|
||||
if (leader->IsAlive() && leader->GetPositionX() < 5575.0f && me->GetExactDist2d(leader) <= 12.5f && !leader->HasAura(SPELL_HARVEST_SOUL) && me->HasAura(SPELL_REMORSELESS_WINTER))
|
||||
{
|
||||
me->GetMotionMaster()->MovementExpired();
|
||||
@@ -1506,7 +1506,7 @@ public:
|
||||
events.ScheduleEvent(EVENT_LK_CHECK_COMBAT, 1000);
|
||||
break;
|
||||
case EVENT_LK_KILL_LEADER:
|
||||
if (Creature* leader = pInstance->instance->GetCreature(pInstance->GetData64(NPC_SYLVANAS_PART2)))
|
||||
if (Creature* leader = pInstance->instance->GetCreature(pInstance->GetGuidData(NPC_SYLVANAS_PART2)))
|
||||
{
|
||||
leader->CastSpell(leader, SPELL_HOR_SUICIDE, true);
|
||||
Unit::Kill(me, leader);
|
||||
@@ -1591,7 +1591,7 @@ public:
|
||||
break;
|
||||
case EVENT_LK_SUMMON_NEXT_ICE_WALL:
|
||||
Talk(SAY_LK_IW_1 + currentWall);
|
||||
if (Creature* c = pInstance->instance->GetCreature(pInstance->GetData64(NPC_ICE_WALL_TARGET + currentWall)))
|
||||
if (Creature* c = pInstance->instance->GetCreature(pInstance->GetGuidData(NPC_ICE_WALL_TARGET + currentWall)))
|
||||
me->CastSpell(c, SPELL_SUMMON_ICE_WALL, false);
|
||||
break;
|
||||
}
|
||||
@@ -1693,12 +1693,12 @@ public:
|
||||
switch(events.ExecuteEvent())
|
||||
{
|
||||
case EVENT_LK_SAY_AGGRO:
|
||||
if (Creature* c = pInstance->instance->GetCreature(pInstance->GetData64(NPC_LICH_KING_BOSS)))
|
||||
if (Creature* c = pInstance->instance->GetCreature(pInstance->GetGuidData(NPC_LICH_KING_BOSS)))
|
||||
c->AI()->Talk(me->GetEntry() == NPC_JAINA_PART2 ? SAY_LK_AGGRO_ALLY : SAY_LK_AGGRO_HORDE);
|
||||
events.ScheduleEvent(me->GetEntry() == NPC_JAINA_PART2 ? EVENT_JAINA_IMMOBILIZE_LK : EVENT_SYLVANAS_IMMOBILIZE_JUMP, 12000);
|
||||
break;
|
||||
case EVENT_JAINA_IMMOBILIZE_LK:
|
||||
if (Creature* c = pInstance->instance->GetCreature(pInstance->GetData64(NPC_LICH_KING_BOSS)))
|
||||
if (Creature* c = pInstance->instance->GetCreature(pInstance->GetGuidData(NPC_LICH_KING_BOSS)))
|
||||
{
|
||||
c->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_ONESHOT_NONE);
|
||||
me->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_ONESHOT_NONE);
|
||||
@@ -1707,7 +1707,7 @@ public:
|
||||
}
|
||||
break;
|
||||
case EVENT_SYLVANAS_IMMOBILIZE_JUMP:
|
||||
if (Creature* c = pInstance->instance->GetCreature(pInstance->GetData64(NPC_LICH_KING_BOSS)))
|
||||
if (Creature* c = pInstance->instance->GetCreature(pInstance->GetGuidData(NPC_LICH_KING_BOSS)))
|
||||
{
|
||||
c->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_ONESHOT_NONE);
|
||||
me->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_ONESHOT_NONE);
|
||||
@@ -1716,7 +1716,7 @@ public:
|
||||
}
|
||||
break;
|
||||
case EVENT_SYLVANAS_DARK_BINDING:
|
||||
if (Creature* c = pInstance->instance->GetCreature(pInstance->GetData64(NPC_LICH_KING_BOSS)))
|
||||
if (Creature* c = pInstance->instance->GetCreature(pInstance->GetGuidData(NPC_LICH_KING_BOSS)))
|
||||
me->CastSpell(c, SPELL_SYLVANAS_DARK_BINDING, false);
|
||||
events.ScheduleEvent(EVENT_SAY_LEAVE, 3500);
|
||||
break;
|
||||
@@ -1725,7 +1725,7 @@ public:
|
||||
Map::PlayerList const& pl = pInstance->instance->GetPlayers();
|
||||
for (Map::PlayerList::const_iterator itr = pl.begin(); itr != pl.end(); ++itr)
|
||||
if (Player* p = itr->GetSource())
|
||||
p->KilledMonsterCredit(me->GetEntry(), 0); // for quest
|
||||
p->KilledMonsterCredit(me->GetEntry()); // for quest
|
||||
|
||||
Talk(me->GetEntry() == NPC_JAINA_PART2 ? SAY_JAINA_LEAVE : SAY_SYLVANAS_LEAVE);
|
||||
me->GetMotionMaster()->MovePoint(0, LeaderEscapePos);
|
||||
@@ -1742,7 +1742,7 @@ public:
|
||||
pInstance->SetData(ACTION_START_LK_FIGHT, 1);
|
||||
me->setActive(true);
|
||||
MoveToNextStopPoint();
|
||||
if (Creature* c = pInstance->instance->GetCreature(pInstance->GetData64(NPC_LICH_KING_BOSS)))
|
||||
if (Creature* c = pInstance->instance->GetCreature(pInstance->GetGuidData(NPC_LICH_KING_BOSS)))
|
||||
{
|
||||
c->setActive(true);
|
||||
c->SetInCombatWithZone();
|
||||
@@ -1831,7 +1831,7 @@ public:
|
||||
{
|
||||
me->SetCorpseDelay(10);
|
||||
if (InstanceScript* pInstance = me->GetInstanceScript())
|
||||
if (Creature* lk = pInstance->instance->GetCreature(pInstance->GetData64(NPC_LICH_KING_BOSS)))
|
||||
if (Creature* lk = pInstance->instance->GetCreature(pInstance->GetGuidData(NPC_LICH_KING_BOSS)))
|
||||
lk->AI()->DoAction(ACTION_INFORM_TRASH_DIED);
|
||||
}
|
||||
};
|
||||
@@ -1900,7 +1900,7 @@ public:
|
||||
{
|
||||
me->SetCorpseDelay(10);
|
||||
if (InstanceScript* pInstance = me->GetInstanceScript())
|
||||
if (Creature* lk = pInstance->instance->GetCreature(pInstance->GetData64(NPC_LICH_KING_BOSS)))
|
||||
if (Creature* lk = pInstance->instance->GetCreature(pInstance->GetGuidData(NPC_LICH_KING_BOSS)))
|
||||
lk->AI()->DoAction(ACTION_INFORM_TRASH_DIED);
|
||||
}
|
||||
};
|
||||
@@ -1965,7 +1965,7 @@ public:
|
||||
{
|
||||
me->SetCorpseDelay(10);
|
||||
if (InstanceScript* pInstance = me->GetInstanceScript())
|
||||
if (Creature* lk = pInstance->instance->GetCreature(pInstance->GetData64(NPC_LICH_KING_BOSS)))
|
||||
if (Creature* lk = pInstance->instance->GetCreature(pInstance->GetGuidData(NPC_LICH_KING_BOSS)))
|
||||
lk->AI()->DoAction(ACTION_INFORM_TRASH_DIED);
|
||||
}
|
||||
};
|
||||
|
||||
+30
-55
@@ -117,28 +117,28 @@ public:
|
||||
|
||||
uint32 EncounterMask;
|
||||
TeamId TeamIdInInstance;
|
||||
uint64 NPC_FalricGUID;
|
||||
uint64 NPC_MarwynGUID;
|
||||
uint64 NPC_LichKingIntroGUID;
|
||||
uint64 NPC_LeaderIntroGUID;
|
||||
uint64 NPC_GuardGUID;
|
||||
uint64 NPC_UtherGUID;
|
||||
uint64 NPC_LichKingGUID;
|
||||
uint64 NPC_LeaderGUID;
|
||||
uint64 NPC_IceWallTargetGUID[4];
|
||||
uint64 NPC_AltarBunnyGUID;
|
||||
uint64 NPC_QuelDelarGUID;
|
||||
uint64 NPC_ShipCaptainGUID;
|
||||
uint64 GO_FrostmourneGUID;
|
||||
uint64 GO_FrostmourneAltarGUID;
|
||||
uint64 GO_FrontDoorGUID;
|
||||
uint64 GO_ArthasDoorGUID;
|
||||
uint64 GO_CaveInGUID;
|
||||
uint64 GO_DoorBeforeThroneGUID;
|
||||
uint64 GO_DoorAfterThroneGUID;
|
||||
uint64 GO_IceWallGUID;
|
||||
ObjectGuid NPC_FalricGUID;
|
||||
ObjectGuid NPC_MarwynGUID;
|
||||
ObjectGuid NPC_LichKingIntroGUID;
|
||||
ObjectGuid NPC_LeaderIntroGUID;
|
||||
ObjectGuid NPC_GuardGUID;
|
||||
ObjectGuid NPC_UtherGUID;
|
||||
ObjectGuid NPC_LichKingGUID;
|
||||
ObjectGuid NPC_LeaderGUID;
|
||||
ObjectGuid NPC_IceWallTargetGUID[4];
|
||||
ObjectGuid NPC_AltarBunnyGUID;
|
||||
ObjectGuid NPC_QuelDelarGUID;
|
||||
ObjectGuid NPC_ShipCaptainGUID;
|
||||
ObjectGuid GO_FrostmourneGUID;
|
||||
ObjectGuid GO_FrostmourneAltarGUID;
|
||||
ObjectGuid GO_FrontDoorGUID;
|
||||
ObjectGuid GO_ArthasDoorGUID;
|
||||
ObjectGuid GO_CaveInGUID;
|
||||
ObjectGuid GO_DoorBeforeThroneGUID;
|
||||
ObjectGuid GO_DoorAfterThroneGUID;
|
||||
ObjectGuid GO_IceWallGUID;
|
||||
|
||||
uint64 NPC_TrashGUID[NUM_OF_TRASH];
|
||||
ObjectGuid NPC_TrashGUID[NUM_OF_TRASH];
|
||||
bool TrashActive[NUM_OF_TRASH];
|
||||
uint8 TrashCounter;
|
||||
uint32 chosenComposition[8][5];
|
||||
@@ -152,8 +152,8 @@ public:
|
||||
bool IsDuringLKFight;
|
||||
uint32 BatteredHiltStatus;
|
||||
|
||||
uint64 NPC_FrostswornGeneralGUID;
|
||||
uint64 NPC_SpiritualReflectionGUID[5];
|
||||
ObjectGuid NPC_FrostswornGeneralGUID;
|
||||
ObjectGuid NPC_SpiritualReflectionGUID[5];
|
||||
|
||||
uint32 outroTimer;
|
||||
uint8 outroStep;
|
||||
@@ -163,28 +163,6 @@ public:
|
||||
{
|
||||
EncounterMask = 0;
|
||||
TeamIdInInstance = TEAM_NEUTRAL;
|
||||
NPC_FalricGUID = 0;
|
||||
NPC_MarwynGUID = 0;
|
||||
NPC_LichKingIntroGUID = 0;
|
||||
NPC_LeaderIntroGUID = 0;
|
||||
NPC_GuardGUID = 0;
|
||||
NPC_UtherGUID = 0;
|
||||
NPC_LichKingGUID = 0;
|
||||
NPC_LeaderGUID = 0;
|
||||
memset(&NPC_IceWallTargetGUID, 0, sizeof(NPC_IceWallTargetGUID));
|
||||
NPC_AltarBunnyGUID = 0;
|
||||
NPC_QuelDelarGUID = 0;
|
||||
NPC_ShipCaptainGUID = 0;
|
||||
GO_FrostmourneGUID = 0;
|
||||
GO_FrostmourneAltarGUID = 0;
|
||||
GO_FrontDoorGUID = 0;
|
||||
GO_ArthasDoorGUID = 0;
|
||||
GO_CaveInGUID = 0;
|
||||
GO_DoorBeforeThroneGUID = 0;
|
||||
GO_DoorAfterThroneGUID = 0;
|
||||
GO_IceWallGUID = 0;
|
||||
|
||||
memset(&NPC_TrashGUID, 0, sizeof(NPC_TrashGUID));
|
||||
memset(&TrashActive, 0, sizeof(TrashActive));
|
||||
TrashCounter = 0;
|
||||
memset(&chosenComposition, 0, sizeof(chosenComposition));
|
||||
@@ -198,9 +176,6 @@ public:
|
||||
IsDuringLKFight = false;
|
||||
BatteredHiltStatus = 0;
|
||||
|
||||
NPC_FrostswornGeneralGUID = 0;
|
||||
memset(&NPC_SpiritualReflectionGUID, 0, sizeof(NPC_SpiritualReflectionGUID));
|
||||
|
||||
outroTimer = 0;
|
||||
outroStep = 0;
|
||||
T1 = nullptr;
|
||||
@@ -378,7 +353,7 @@ public:
|
||||
{
|
||||
case GO_FROSTMOURNE:
|
||||
GO_FrostmourneGUID = go->GetGUID();
|
||||
HandleGameObject(0, false, go);
|
||||
HandleGameObject(ObjectGuid::Empty, false, go);
|
||||
if (EncounterMask & (1 << DATA_INTRO))
|
||||
go->SetPhaseMask(2, true);
|
||||
break;
|
||||
@@ -387,11 +362,11 @@ public:
|
||||
break;
|
||||
case GO_FRONT_DOOR:
|
||||
GO_FrontDoorGUID = go->GetGUID();
|
||||
HandleGameObject(0, true, go);
|
||||
HandleGameObject(ObjectGuid::Empty, true, go);
|
||||
break;
|
||||
case GO_ARTHAS_DOOR:
|
||||
GO_ArthasDoorGUID = go->GetGUID();
|
||||
HandleGameObject(0, (EncounterMask & (1 << DATA_MARWYN)), go);
|
||||
HandleGameObject(ObjectGuid::Empty, (EncounterMask & (1 << DATA_MARWYN)), go);
|
||||
break;
|
||||
case GO_CAVE_IN:
|
||||
GO_CaveInGUID = go->GetGUID();
|
||||
@@ -573,7 +548,7 @@ public:
|
||||
[[fallthrough]];
|
||||
case ACTION_DELETE_ICE_WALL:
|
||||
HandleGameObject(GO_IceWallGUID, true);
|
||||
GO_IceWallGUID = 0;
|
||||
GO_IceWallGUID.Clear();
|
||||
break;
|
||||
case DATA_LICH_KING:
|
||||
if (data == DONE)
|
||||
@@ -683,7 +658,7 @@ public:
|
||||
return 0;
|
||||
}
|
||||
|
||||
uint64 GetData64(uint32 type) const override
|
||||
ObjectGuid GetGuidData(uint32 type) const override
|
||||
{
|
||||
switch(type)
|
||||
{
|
||||
@@ -714,7 +689,7 @@ public:
|
||||
return GO_FrontDoorGUID;
|
||||
}
|
||||
|
||||
return 0;
|
||||
return ObjectGuid::Empty;
|
||||
}
|
||||
|
||||
std::string GetSaveData() override
|
||||
@@ -1198,7 +1173,7 @@ public:
|
||||
outroTimer = 0;
|
||||
for (Map::PlayerList::const_iterator itr = instance->GetPlayers().begin(); itr != instance->GetPlayers().end(); ++itr)
|
||||
if (Player* p = itr->GetSource())
|
||||
p->KilledMonsterCredit(NPC_WRATH_OF_THE_LICH_KING_CREDIT, 0);
|
||||
p->KilledMonsterCredit(NPC_WRATH_OF_THE_LICH_KING_CREDIT);
|
||||
if (TeamIdInInstance == TEAM_ALLIANCE)
|
||||
if (Creature* c = instance->GetCreature(NPC_LeaderGUID))
|
||||
{
|
||||
|
||||
@@ -114,7 +114,7 @@ public:
|
||||
{
|
||||
phase = 1;
|
||||
me->SetReactState(REACT_PASSIVE);
|
||||
me->SetTarget(0);
|
||||
me->SetTarget();
|
||||
me->SendMeleeAttackStop(me->GetVictim());
|
||||
events.DelayEvents(8000);
|
||||
me->CastSpell(me, SPELL_THUNDERING_STOMP, false);
|
||||
@@ -127,7 +127,7 @@ public:
|
||||
events.CancelEvent(EVENT_SPELL_CHILLING_WAVE);
|
||||
phase = 2;
|
||||
me->SetReactState(REACT_PASSIVE);
|
||||
me->SetTarget(0);
|
||||
me->SetTarget();
|
||||
me->SendMeleeAttackStop(me->GetVictim());
|
||||
events.DelayEvents(8000);
|
||||
me->CastSpell(me, SPELL_THUNDERING_STOMP, false);
|
||||
|
||||
@@ -307,7 +307,7 @@ public:
|
||||
{
|
||||
pInstance->SetData(DATA_INSTANCE_PROGRESS, INSTANCE_PROGRESS_FINISHED_KRICK_SCENE);
|
||||
|
||||
if (Creature* c = pInstance->instance->GetCreature(pInstance->GetData64(DATA_LEADER_FIRST_GUID)))
|
||||
if (Creature* c = pInstance->instance->GetCreature(pInstance->GetGuidData(DATA_LEADER_FIRST_GUID)))
|
||||
{
|
||||
c->GetMotionMaster()->Clear();
|
||||
c->UpdatePosition(SBSLeaderStartPos, true);
|
||||
@@ -322,7 +322,7 @@ public:
|
||||
Talk(SAY_OUTRO_KRICK_1);
|
||||
if (pInstance)
|
||||
{
|
||||
if (Creature* c = pInstance->instance->GetCreature(pInstance->GetData64(DATA_LEADER_FIRST_GUID)))
|
||||
if (Creature* c = pInstance->instance->GetCreature(pInstance->GetGuidData(DATA_LEADER_FIRST_GUID)))
|
||||
{
|
||||
float angle = me->GetAngle(c);
|
||||
me->SetFacingTo(angle);
|
||||
@@ -332,7 +332,7 @@ public:
|
||||
}
|
||||
|
||||
for (uint8 i = 0; i < 2; ++i)
|
||||
if (Creature* c = pInstance->instance->GetCreature(pInstance->GetData64(DATA_GUARD_1_GUID + i)))
|
||||
if (Creature* c = pInstance->instance->GetCreature(pInstance->GetGuidData(DATA_GUARD_1_GUID + i)))
|
||||
c->DespawnOrUnsummon();
|
||||
}
|
||||
|
||||
@@ -341,13 +341,13 @@ public:
|
||||
case 2:
|
||||
if (pInstance)
|
||||
{
|
||||
if (Creature* c = pInstance->instance->GetCreature(pInstance->GetData64(DATA_TYRANNUS_EVENT_GUID)))
|
||||
if (Creature* c = pInstance->instance->GetCreature(pInstance->GetGuidData(DATA_TYRANNUS_EVENT_GUID)))
|
||||
{
|
||||
c->setActive(true);
|
||||
c->UpdatePosition(SBSTyrannusStartPos, true);
|
||||
c->SetHomePosition(SBSTyrannusStartPos);
|
||||
}
|
||||
if (Creature* c = pInstance->instance->GetCreature(pInstance->GetData64(DATA_LEADER_FIRST_GUID)))
|
||||
if (Creature* c = pInstance->instance->GetCreature(pInstance->GetGuidData(DATA_LEADER_FIRST_GUID)))
|
||||
c->AI()->Talk(c->GetEntry() == NPC_JAINA_PART1 ? SAY_JAINA_KRICK_1 : SAY_SYLVANAS_KRICK_1);
|
||||
}
|
||||
|
||||
@@ -361,9 +361,9 @@ public:
|
||||
case 4:
|
||||
if (pInstance)
|
||||
{
|
||||
if (Creature* c = pInstance->instance->GetCreature(pInstance->GetData64(DATA_TYRANNUS_EVENT_GUID)))
|
||||
if (Creature* c = pInstance->instance->GetCreature(pInstance->GetGuidData(DATA_TYRANNUS_EVENT_GUID)))
|
||||
c->GetMotionMaster()->MovePath(PATH_BEGIN_VALUE + 10, false);
|
||||
if (Creature* c = pInstance->instance->GetCreature(pInstance->GetData64(DATA_LEADER_FIRST_GUID)))
|
||||
if (Creature* c = pInstance->instance->GetCreature(pInstance->GetGuidData(DATA_LEADER_FIRST_GUID)))
|
||||
c->AI()->Talk(c->GetEntry() == NPC_JAINA_PART1 ? SAY_JAINA_KRICK_2 : SAY_SYLVANAS_KRICK_2);
|
||||
}
|
||||
|
||||
@@ -376,7 +376,7 @@ public:
|
||||
break;
|
||||
case 6:
|
||||
if (pInstance)
|
||||
if (Creature* c = pInstance->instance->GetCreature(pInstance->GetData64(DATA_TYRANNUS_EVENT_GUID)))
|
||||
if (Creature* c = pInstance->instance->GetCreature(pInstance->GetGuidData(DATA_TYRANNUS_EVENT_GUID)))
|
||||
{
|
||||
c->SetFacingToObject(me);
|
||||
c->AI()->Talk(SAY_TYRANNUS_KRICK_1);
|
||||
@@ -401,7 +401,7 @@ public:
|
||||
break;
|
||||
case 9:
|
||||
if (pInstance)
|
||||
if (Creature* c = pInstance->instance->GetCreature(pInstance->GetData64(DATA_TYRANNUS_EVENT_GUID)))
|
||||
if (Creature* c = pInstance->instance->GetCreature(pInstance->GetGuidData(DATA_TYRANNUS_EVENT_GUID)))
|
||||
c->CastSpell(c, 69753, false);
|
||||
|
||||
me->SetReactState(REACT_PASSIVE);
|
||||
@@ -419,7 +419,7 @@ public:
|
||||
break;
|
||||
case 10:
|
||||
if (pInstance)
|
||||
if (Creature* c = pInstance->instance->GetCreature(pInstance->GetData64(DATA_TYRANNUS_EVENT_GUID)))
|
||||
if (Creature* c = pInstance->instance->GetCreature(pInstance->GetGuidData(DATA_TYRANNUS_EVENT_GUID)))
|
||||
c->AI()->Talk(SAY_TYRANNUS_KRICK_2);
|
||||
|
||||
events.RescheduleEvent(11, 9000);
|
||||
@@ -427,9 +427,9 @@ public:
|
||||
case 11:
|
||||
if (pInstance)
|
||||
{
|
||||
if (Creature* c = pInstance->instance->GetCreature(pInstance->GetData64(DATA_TYRANNUS_EVENT_GUID)))
|
||||
if (Creature* c = pInstance->instance->GetCreature(pInstance->GetGuidData(DATA_TYRANNUS_EVENT_GUID)))
|
||||
c->GetMotionMaster()->MovePoint(1, 809.39f, 74.69f, 541.54f);
|
||||
if (Creature* c = pInstance->instance->GetCreature(pInstance->GetData64(DATA_LEADER_FIRST_GUID)))
|
||||
if (Creature* c = pInstance->instance->GetCreature(pInstance->GetGuidData(DATA_LEADER_FIRST_GUID)))
|
||||
{
|
||||
c->AI()->Talk(c->GetEntry() == NPC_JAINA_PART1 ? SAY_JAINA_KRICK_3 : SAY_SYLVANAS_KRICK_3);
|
||||
c->GetMotionMaster()->MovePath(PATH_BEGIN_VALUE + 11, false);
|
||||
|
||||
@@ -51,7 +51,7 @@ public:
|
||||
{
|
||||
pInstance = me->GetInstanceScript();
|
||||
me->SetReactState(REACT_PASSIVE);
|
||||
if (Creature* c = pInstance->instance->GetCreature(pInstance->GetData64(DATA_RIMEFANG_GUID)))
|
||||
if (Creature* c = pInstance->instance->GetCreature(pInstance->GetGuidData(DATA_RIMEFANG_GUID)))
|
||||
{
|
||||
c->SetCanFly(true);
|
||||
}
|
||||
@@ -68,13 +68,13 @@ public:
|
||||
{
|
||||
if (!pInstance)
|
||||
return;
|
||||
if (Creature* c = pInstance->instance->GetCreature(pInstance->GetData64(DATA_MARTIN_OR_GORKUN_GUID)))
|
||||
if (Creature* c = pInstance->instance->GetCreature(pInstance->GetGuidData(DATA_MARTIN_OR_GORKUN_GUID)))
|
||||
{
|
||||
c->AI()->DoAction(1);
|
||||
c->DespawnOrUnsummon();
|
||||
pInstance->SetData64(DATA_MARTIN_OR_GORKUN_GUID, 0);
|
||||
pInstance->SetGuidData(DATA_MARTIN_OR_GORKUN_GUID, ObjectGuid::Empty);
|
||||
}
|
||||
if (Creature* c = pInstance->instance->GetCreature(pInstance->GetData64(DATA_RIMEFANG_GUID)))
|
||||
if (Creature* c = pInstance->instance->GetCreature(pInstance->GetGuidData(DATA_RIMEFANG_GUID)))
|
||||
{
|
||||
c->GetMotionMaster()->Clear();
|
||||
c->GetMotionMaster()->MoveIdle();
|
||||
@@ -93,7 +93,7 @@ public:
|
||||
if (param == 1)
|
||||
{
|
||||
Position exitPos = {1023.46f, 159.12f, 628.2f, 5.23f};
|
||||
if (Creature* c = pInstance->instance->GetCreature(pInstance->GetData64(DATA_RIMEFANG_GUID)))
|
||||
if (Creature* c = pInstance->instance->GetCreature(pInstance->GetGuidData(DATA_RIMEFANG_GUID)))
|
||||
{
|
||||
c->RemoveAura(46598);
|
||||
c->GetMotionMaster()->Clear();
|
||||
@@ -166,13 +166,13 @@ public:
|
||||
break;
|
||||
case EVENT_RIMEFANG_SPELL_ICY_BLAST:
|
||||
if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, 190.0f, true))
|
||||
if (Creature* c = pInstance->instance->GetCreature(pInstance->GetData64(DATA_RIMEFANG_GUID)))
|
||||
if (Creature* c = pInstance->instance->GetCreature(pInstance->GetGuidData(DATA_RIMEFANG_GUID)))
|
||||
c->CastSpell(target, RIMEFANG_SPELL_ICY_BLAST, false);
|
||||
events.RepeatEvent(5000);
|
||||
break;
|
||||
case EVENT_SPELL_MARK_OF_RIMEFANG:
|
||||
if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, 190.0f, true))
|
||||
if (Creature* c = pInstance->instance->GetCreature(pInstance->GetData64(DATA_RIMEFANG_GUID)))
|
||||
if (Creature* c = pInstance->instance->GetCreature(pInstance->GetGuidData(DATA_RIMEFANG_GUID)))
|
||||
{
|
||||
Talk(SAY_MARK);
|
||||
c->AI()->Talk(EMOTE_RIMEFANG_ICEBOLT, target);
|
||||
|
||||
@@ -21,21 +21,21 @@ public:
|
||||
uint32 InstanceProgress;
|
||||
std::string str_data;
|
||||
|
||||
uint64 NPC_LeaderFirstGUID;
|
||||
uint64 NPC_LeaderSecondGUID;
|
||||
uint64 NPC_TyrannusEventGUID;
|
||||
uint64 NPC_Necrolyte1GUID;
|
||||
uint64 NPC_Necrolyte2GUID;
|
||||
uint64 NPC_GuardFirstGUID;
|
||||
uint64 NPC_GuardSecondGUID;
|
||||
uint64 NPC_SindragosaGUID;
|
||||
ObjectGuid NPC_LeaderFirstGUID;
|
||||
ObjectGuid NPC_LeaderSecondGUID;
|
||||
ObjectGuid NPC_TyrannusEventGUID;
|
||||
ObjectGuid NPC_Necrolyte1GUID;
|
||||
ObjectGuid NPC_Necrolyte2GUID;
|
||||
ObjectGuid NPC_GuardFirstGUID;
|
||||
ObjectGuid NPC_GuardSecondGUID;
|
||||
ObjectGuid NPC_SindragosaGUID;
|
||||
|
||||
uint64 NPC_GarfrostGUID;
|
||||
uint64 NPC_MartinOrGorkunGUID;
|
||||
uint64 NPC_RimefangGUID;
|
||||
uint64 NPC_TyrannusGUID;
|
||||
ObjectGuid NPC_GarfrostGUID;
|
||||
ObjectGuid NPC_MartinOrGorkunGUID;
|
||||
ObjectGuid NPC_RimefangGUID;
|
||||
ObjectGuid NPC_TyrannusGUID;
|
||||
|
||||
uint64 GO_IceWallGUID;
|
||||
ObjectGuid GO_IceWallGUID;
|
||||
|
||||
bool bAchievEleven;
|
||||
bool bAchievDontLookUp;
|
||||
@@ -46,22 +46,6 @@ public:
|
||||
teamIdInInstance = TEAM_NEUTRAL;
|
||||
InstanceProgress = INSTANCE_PROGRESS_NONE;
|
||||
|
||||
NPC_LeaderFirstGUID = 0;
|
||||
NPC_LeaderSecondGUID = 0;
|
||||
NPC_TyrannusEventGUID = 0;
|
||||
NPC_Necrolyte1GUID = 0;
|
||||
NPC_Necrolyte2GUID = 0;
|
||||
NPC_GuardFirstGUID = 0;
|
||||
NPC_GuardSecondGUID = 0;
|
||||
NPC_SindragosaGUID = 0;
|
||||
|
||||
NPC_GarfrostGUID = 0;
|
||||
NPC_MartinOrGorkunGUID = 0;
|
||||
NPC_RimefangGUID = 0;
|
||||
NPC_TyrannusGUID = 0;
|
||||
|
||||
GO_IceWallGUID = 0;
|
||||
|
||||
bAchievEleven = true;
|
||||
bAchievDontLookUp = true;
|
||||
}
|
||||
@@ -77,11 +61,11 @@ public:
|
||||
void OnPlayerEnter(Player* /*plr*/) override
|
||||
{
|
||||
instance->LoadGrid(LeaderIntroPos.GetPositionX(), LeaderIntroPos.GetPositionY());
|
||||
if (Creature* c = instance->GetCreature(GetData64(DATA_LEADER_FIRST_GUID)))
|
||||
if (Creature* c = instance->GetCreature(GetGuidData(DATA_LEADER_FIRST_GUID)))
|
||||
c->AI()->SetData(DATA_START_INTRO, 0);
|
||||
}
|
||||
|
||||
uint32 GetCreatureEntry(uint32 /*guidLow*/, CreatureData const* data) override
|
||||
uint32 GetCreatureEntry(ObjectGuid::LowType /*guidLow*/, CreatureData const* data) override
|
||||
{
|
||||
if (teamIdInInstance == TEAM_NEUTRAL)
|
||||
{
|
||||
@@ -303,7 +287,7 @@ public:
|
||||
SaveToDB();
|
||||
}
|
||||
|
||||
void SetData64(uint32 type, uint64 data) override
|
||||
void SetGuidData(uint32 type, ObjectGuid data) override
|
||||
{
|
||||
switch(type)
|
||||
{
|
||||
@@ -338,7 +322,7 @@ public:
|
||||
return 0;
|
||||
}
|
||||
|
||||
uint64 GetData64(uint32 type) const override
|
||||
ObjectGuid GetGuidData(uint32 type) const override
|
||||
{
|
||||
switch (type)
|
||||
{
|
||||
@@ -368,7 +352,7 @@ public:
|
||||
return NPC_SindragosaGUID;
|
||||
}
|
||||
|
||||
return 0;
|
||||
return ObjectGuid::Empty;
|
||||
}
|
||||
|
||||
bool CheckAchievementCriteriaMeet(uint32 criteria_id, Player const* /*source*/, Unit const* /*target*/, uint32 /*miscvalue1*/) override
|
||||
|
||||
@@ -94,7 +94,7 @@ public:
|
||||
break;
|
||||
case 2:
|
||||
if (pInstance)
|
||||
if (Creature* c = pInstance->instance->GetCreature(pInstance->GetData64(DATA_TYRANNUS_EVENT_GUID)))
|
||||
if (Creature* c = pInstance->instance->GetCreature(pInstance->GetGuidData(DATA_TYRANNUS_EVENT_GUID)))
|
||||
{
|
||||
c->setActive(true);
|
||||
c->AI()->Talk(SAY_TYRANNUS_INTRO_1);
|
||||
@@ -104,7 +104,7 @@ public:
|
||||
break;
|
||||
case 3:
|
||||
if (pInstance)
|
||||
if (Creature* c = pInstance->instance->GetCreature(pInstance->GetData64(DATA_TYRANNUS_EVENT_GUID)))
|
||||
if (Creature* c = pInstance->instance->GetCreature(pInstance->GetGuidData(DATA_TYRANNUS_EVENT_GUID)))
|
||||
c->AI()->Talk(SAY_TYRANNUS_INTRO_2);
|
||||
|
||||
events.RescheduleEvent(4, 14000);
|
||||
@@ -112,8 +112,8 @@ public:
|
||||
case 4:
|
||||
if (pInstance)
|
||||
{
|
||||
Creature* n1 = pInstance->instance->GetCreature(pInstance->GetData64(DATA_NECROLYTE_1_GUID));
|
||||
Creature* n2 = pInstance->instance->GetCreature(pInstance->GetData64(DATA_NECROLYTE_2_GUID));
|
||||
Creature* n1 = pInstance->instance->GetCreature(pInstance->GetGuidData(DATA_NECROLYTE_1_GUID));
|
||||
Creature* n2 = pInstance->instance->GetCreature(pInstance->GetGuidData(DATA_NECROLYTE_2_GUID));
|
||||
if (n1 && n2)
|
||||
{
|
||||
if (!n1->IsInCombat() && n1->IsAlive())
|
||||
@@ -157,7 +157,7 @@ public:
|
||||
break;
|
||||
case 6:
|
||||
if (pInstance)
|
||||
if (Creature* c = pInstance->instance->GetCreature(pInstance->GetData64(DATA_TYRANNUS_EVENT_GUID)))
|
||||
if (Creature* c = pInstance->instance->GetCreature(pInstance->GetGuidData(DATA_TYRANNUS_EVENT_GUID)))
|
||||
c->AI()->Talk(SAY_TYRANNUS_INTRO_3);
|
||||
|
||||
events.RescheduleEvent(7, 5000);
|
||||
@@ -165,9 +165,9 @@ public:
|
||||
case 7:
|
||||
if (pInstance)
|
||||
{
|
||||
if (Creature* n1 = pInstance->instance->GetCreature(pInstance->GetData64(DATA_NECROLYTE_1_GUID)))
|
||||
if (Creature* n1 = pInstance->instance->GetCreature(pInstance->GetGuidData(DATA_NECROLYTE_1_GUID)))
|
||||
n1->AI()->DoAction(1337); // remove invincibility
|
||||
if (Creature* n2 = pInstance->instance->GetCreature(pInstance->GetData64(DATA_NECROLYTE_2_GUID)))
|
||||
if (Creature* n2 = pInstance->instance->GetCreature(pInstance->GetGuidData(DATA_NECROLYTE_2_GUID)))
|
||||
n2->AI()->DoAction(1337); // remove invincibility
|
||||
|
||||
for (SummonList::iterator itr = summons.begin(); itr != summons.end(); ++itr)
|
||||
@@ -193,7 +193,7 @@ public:
|
||||
break;
|
||||
case 8:
|
||||
if (pInstance)
|
||||
if (Creature* c = pInstance->instance->GetCreature(pInstance->GetData64(DATA_TYRANNUS_EVENT_GUID)))
|
||||
if (Creature* c = pInstance->instance->GetCreature(pInstance->GetGuidData(DATA_TYRANNUS_EVENT_GUID)))
|
||||
c->CastSpell(c, 69753, false);
|
||||
|
||||
events.RescheduleEvent(9, 400);
|
||||
@@ -235,7 +235,7 @@ public:
|
||||
case 12:
|
||||
if (pInstance)
|
||||
{
|
||||
if (Creature* c = pInstance->instance->GetCreature(pInstance->GetData64(DATA_TYRANNUS_EVENT_GUID)))
|
||||
if (Creature* c = pInstance->instance->GetCreature(pInstance->GetGuidData(DATA_TYRANNUS_EVENT_GUID)))
|
||||
c->AI()->Talk(SAY_TYRANNUS_INTRO_4);
|
||||
|
||||
for (SummonList::iterator itr = summons.begin(); itr != summons.end(); ++itr)
|
||||
@@ -285,7 +285,7 @@ public:
|
||||
{
|
||||
me->CastSpell(me, 59514, false);
|
||||
for (uint8 i = 0; i < 2; ++i)
|
||||
if (Creature* c = pInstance->instance->GetCreature(pInstance->GetData64(DATA_GUARD_1_GUID + i)))
|
||||
if (Creature* c = pInstance->instance->GetCreature(pInstance->GetGuidData(DATA_GUARD_1_GUID + i)))
|
||||
c->CastSpell(c, 70513, false);
|
||||
}
|
||||
}
|
||||
@@ -295,13 +295,13 @@ public:
|
||||
case 15:
|
||||
if (pInstance)
|
||||
{
|
||||
if (Creature* c = pInstance->instance->GetCreature(pInstance->GetData64(DATA_TYRANNUS_EVENT_GUID)))
|
||||
if (Creature* c = pInstance->instance->GetCreature(pInstance->GetGuidData(DATA_TYRANNUS_EVENT_GUID)))
|
||||
c->GetMotionMaster()->MovePoint(0, SBSTyrannusStartPos);
|
||||
|
||||
if (me->GetEntry() == NPC_JAINA_PART1)
|
||||
{
|
||||
for (uint8 i = 0; i < 2; ++i)
|
||||
if (Creature* c = pInstance->instance->GetCreature(pInstance->GetData64(DATA_GUARD_1_GUID + i)))
|
||||
if (Creature* c = pInstance->instance->GetCreature(pInstance->GetGuidData(DATA_GUARD_1_GUID + i)))
|
||||
c->CastSpell(c, 70464, false);
|
||||
}
|
||||
}
|
||||
@@ -313,7 +313,7 @@ public:
|
||||
if (pInstance)
|
||||
{
|
||||
for (uint8 i = 0; i < 2; ++i)
|
||||
if (Creature* c = pInstance->instance->GetCreature(pInstance->GetData64(DATA_GUARD_1_GUID + i)))
|
||||
if (Creature* c = pInstance->instance->GetCreature(pInstance->GetGuidData(DATA_GUARD_1_GUID + i)))
|
||||
c->SetUInt32Value(UNIT_NPC_EMOTESTATE, 0);
|
||||
|
||||
for (SummonList::iterator itr = summons.begin(); itr != summons.end(); ++itr)
|
||||
@@ -403,11 +403,11 @@ public:
|
||||
|
||||
if (me->GetPositionY() < 206.0f)
|
||||
{
|
||||
pInstance->SetData64(DATA_NECROLYTE_1_GUID, me->GetGUID());
|
||||
pInstance->SetGuidData(DATA_NECROLYTE_1_GUID, me->GetGUID());
|
||||
}
|
||||
else
|
||||
{
|
||||
pInstance->SetData64(DATA_NECROLYTE_2_GUID, me->GetGUID());
|
||||
pInstance->SetGuidData(DATA_NECROLYTE_2_GUID, me->GetGUID());
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -428,7 +428,7 @@ public:
|
||||
events.RescheduleEvent(1, 0);
|
||||
events.RescheduleEvent(2, urand(5000, 9000));
|
||||
|
||||
if (Creature* c = pInstance->instance->GetCreature(pInstance->GetData64(DATA_LEADER_FIRST_GUID)))
|
||||
if (Creature* c = pInstance->instance->GetCreature(pInstance->GetGuidData(DATA_LEADER_FIRST_GUID)))
|
||||
c->AI()->SetData(DATA_START_INTRO, 0);
|
||||
}
|
||||
|
||||
@@ -524,7 +524,7 @@ public:
|
||||
case 1:
|
||||
{
|
||||
if (pInstance)
|
||||
if (Creature* c = pInstance->instance->GetCreature(pInstance->GetData64(DATA_GARFROST_GUID)))
|
||||
if (Creature* c = pInstance->instance->GetCreature(pInstance->GetGuidData(DATA_GARFROST_GUID)))
|
||||
{
|
||||
float angle = c->GetAngle(me);
|
||||
float x = c->GetPositionX() + cos(angle) * 12.0f;
|
||||
@@ -573,14 +573,12 @@ public:
|
||||
{
|
||||
pInstance = me->GetInstanceScript();
|
||||
killsLeft = 0;
|
||||
deathbringerGUID[0] = 0;
|
||||
deathbringerGUID[1] = 0;
|
||||
}
|
||||
|
||||
InstanceScript* pInstance;
|
||||
EventMap events;
|
||||
uint32 killsLeft;
|
||||
uint64 deathbringerGUID[2];
|
||||
ObjectGuid deathbringerGUID[2];
|
||||
|
||||
void MovementInform(uint32 type, uint32 id) override
|
||||
{
|
||||
@@ -916,7 +914,7 @@ public:
|
||||
events.RescheduleEvent(2, 15000);
|
||||
|
||||
if (pInstance)
|
||||
if (Creature* c = pInstance->instance->GetCreature(pInstance->GetData64(DATA_TYRANNUS_GUID)))
|
||||
if (Creature* c = pInstance->instance->GetCreature(pInstance->GetGuidData(DATA_TYRANNUS_GUID)))
|
||||
{
|
||||
c->AI()->Talk(SAY_PREFIGHT_1);
|
||||
c->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC);
|
||||
@@ -960,8 +958,8 @@ public:
|
||||
|
||||
TSSpawnPos.GetAngle(&TSMidPos);
|
||||
|
||||
for (std::list<uint64>::iterator itr = summons.begin(); itr != summons.end(); ++itr)
|
||||
if (Creature* c = pInstance->instance->GetCreature(*itr))
|
||||
for (ObjectGuid guid : summons)
|
||||
if (Creature* c = pInstance->instance->GetCreature(guid))
|
||||
{
|
||||
float hx, hy, hz, ho;
|
||||
c->GetHomePosition(hx, hy, hz, ho);
|
||||
@@ -974,10 +972,10 @@ public:
|
||||
else if (p == 3)
|
||||
{
|
||||
if (pInstance)
|
||||
if (Creature* c = pInstance->instance->GetCreature(pInstance->GetData64(DATA_SINDRAGOSA_GUID)))
|
||||
if (Creature* c = pInstance->instance->GetCreature(pInstance->GetGuidData(DATA_SINDRAGOSA_GUID)))
|
||||
{
|
||||
for (std::list<uint64>::iterator itr = summons.begin(); itr != summons.end(); ++itr)
|
||||
if (Creature* s = pInstance->instance->GetCreature(*itr))
|
||||
for (ObjectGuid guid : summons)
|
||||
if (Creature* s = pInstance->instance->GetCreature(guid))
|
||||
if (s->IsAlive())
|
||||
Unit::Kill(c, s);
|
||||
if (me->IsAlive())
|
||||
@@ -1022,14 +1020,14 @@ public:
|
||||
break;
|
||||
case 3:
|
||||
if (pInstance)
|
||||
if (Creature* c = pInstance->instance->GetCreature(pInstance->GetData64(DATA_TYRANNUS_GUID)))
|
||||
if (Creature* c = pInstance->instance->GetCreature(pInstance->GetGuidData(DATA_TYRANNUS_GUID)))
|
||||
c->AI()->Talk(SAY_PREFIGHT_2);
|
||||
|
||||
me->SetFacingTo(5.26f);
|
||||
me->SetOrientation(5.26f);
|
||||
me->SetHomePosition(*me);
|
||||
for (std::list<uint64>::iterator itr = summons.begin(); itr != summons.end(); ++itr)
|
||||
if (Creature* c = pInstance->instance->GetCreature(*itr))
|
||||
for (ObjectGuid guid : summons)
|
||||
if (Creature* c = pInstance->instance->GetCreature(guid))
|
||||
{
|
||||
c->SetFacingTo(5.26f);
|
||||
c->SetOrientation(5.26f);
|
||||
@@ -1041,14 +1039,14 @@ public:
|
||||
break;
|
||||
case 4:
|
||||
if (pInstance)
|
||||
if (Creature* c = pInstance->instance->GetCreature(pInstance->GetData64(DATA_TYRANNUS_GUID)))
|
||||
if (Creature* c = pInstance->instance->GetCreature(pInstance->GetGuidData(DATA_TYRANNUS_GUID)))
|
||||
c->AI()->DoAction(1);
|
||||
break;
|
||||
case 5:
|
||||
me->SetFacingTo(TSCenterPos.GetOrientation());
|
||||
Talk(me->GetEntry() == NPC_MARTIN_VICTUS_2 ? SAY_GENERAL_ALLIANCE_OUTRO_1 : SAY_GENERAL_HORDE_OUTRO_1);
|
||||
if (pInstance)
|
||||
if (Creature* c = pInstance->instance->GetCreature(pInstance->GetData64(DATA_LEADER_SECOND_GUID)))
|
||||
if (Creature* c = pInstance->instance->GetCreature(pInstance->GetGuidData(DATA_LEADER_SECOND_GUID)))
|
||||
c->AI()->DoAction(1);
|
||||
break;
|
||||
case 10:
|
||||
@@ -1058,8 +1056,8 @@ public:
|
||||
float offset = frand(0.0f, 10.0f);
|
||||
c->GetMotionMaster()->MovePoint(0, 1047.0f + offset, 118.0f + offset, 628.2f);
|
||||
c->SetHomePosition(*me);
|
||||
for (std::list<uint64>::iterator itr = summons.begin(); itr != summons.end(); ++itr)
|
||||
if (Creature* s = pInstance->instance->GetCreature(*itr))
|
||||
for (ObjectGuid guid : summons)
|
||||
if (Creature* s = pInstance->instance->GetCreature(guid))
|
||||
{
|
||||
if (s->GetEntry() == NPC_FALLEN_WARRIOR)
|
||||
continue;
|
||||
@@ -1137,20 +1135,20 @@ public:
|
||||
npc_pos_leader_secondAI(Creature* creature) : NullCreatureAI(creature)
|
||||
{
|
||||
pInstance = me->GetInstanceScript();
|
||||
barrierGUID = 0;
|
||||
barrierGUID.Clear();
|
||||
events.Reset();
|
||||
me->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_QUESTGIVER);
|
||||
|
||||
if (pInstance)
|
||||
{
|
||||
if (Creature* c = pInstance->instance->GetCreature(pInstance->GetData64(DATA_RIMEFANG_GUID)))
|
||||
if (Creature* c = pInstance->instance->GetCreature(pInstance->GetGuidData(DATA_RIMEFANG_GUID)))
|
||||
{
|
||||
c->RemoveAllAuras();
|
||||
c->GetMotionMaster()->Clear();
|
||||
c->GetMotionMaster()->MoveIdle();
|
||||
c->SetVisible(false);
|
||||
}
|
||||
if (Creature* c = pInstance->instance->GetCreature(pInstance->GetData64(DATA_MARTIN_OR_GORKUN_GUID)))
|
||||
if (Creature* c = pInstance->instance->GetCreature(pInstance->GetGuidData(DATA_MARTIN_OR_GORKUN_GUID)))
|
||||
{
|
||||
c->AI()->DoAction(2);
|
||||
}
|
||||
@@ -1159,7 +1157,7 @@ public:
|
||||
|
||||
InstanceScript* pInstance;
|
||||
EventMap events;
|
||||
uint64 barrierGUID;
|
||||
ObjectGuid barrierGUID;
|
||||
|
||||
void DoAction(int32 p) override
|
||||
{
|
||||
@@ -1222,7 +1220,7 @@ public:
|
||||
break;
|
||||
case 2:
|
||||
if (pInstance)
|
||||
if (Creature* c = pInstance->instance->GetCreature(pInstance->GetData64(DATA_MARTIN_OR_GORKUN_GUID)))
|
||||
if (Creature* c = pInstance->instance->GetCreature(pInstance->GetGuidData(DATA_MARTIN_OR_GORKUN_GUID)))
|
||||
c->AI()->Talk(SAY_GENERAL_OUTRO_2);
|
||||
|
||||
events.RescheduleEvent(3, me->GetEntry() == NPC_JAINA_PART2 ? 7000 : 8000);
|
||||
@@ -1242,9 +1240,9 @@ public:
|
||||
break;
|
||||
case 5:
|
||||
if (pInstance)
|
||||
if (Creature* x = pInstance->instance->GetCreature(pInstance->GetData64(DATA_MARTIN_OR_GORKUN_GUID)))
|
||||
if (Creature* x = pInstance->instance->GetCreature(pInstance->GetGuidData(DATA_MARTIN_OR_GORKUN_GUID)))
|
||||
{
|
||||
if (Creature* c = pInstance->instance->GetCreature(pInstance->GetData64(DATA_SINDRAGOSA_GUID)))
|
||||
if (Creature* c = pInstance->instance->GetCreature(pInstance->GetGuidData(DATA_SINDRAGOSA_GUID)))
|
||||
c->CastSpell(x->GetPositionX(), x->GetPositionY(), x->GetPositionZ(), SPELL_SINDRAGOSA_FROST_BOMB_POS, true);
|
||||
}
|
||||
|
||||
@@ -1253,18 +1251,18 @@ public:
|
||||
break;
|
||||
case 6:
|
||||
if (pInstance)
|
||||
if (Creature* c = pInstance->instance->GetCreature(pInstance->GetData64(DATA_SINDRAGOSA_GUID)))
|
||||
if (Creature* c = pInstance->instance->GetCreature(pInstance->GetGuidData(DATA_SINDRAGOSA_GUID)))
|
||||
c->GetMotionMaster()->MovePoint(0, TSSindragosaPos1);
|
||||
|
||||
events.RescheduleEvent(7, 4500);
|
||||
break;
|
||||
case 7:
|
||||
if (pInstance)
|
||||
if (Creature* c = pInstance->instance->GetCreature(pInstance->GetData64(DATA_SINDRAGOSA_GUID)))
|
||||
if (Creature* c = pInstance->instance->GetCreature(pInstance->GetGuidData(DATA_SINDRAGOSA_GUID)))
|
||||
c->SetVisible(false);
|
||||
if (GameObject* barrier = pInstance->instance->GetGameObject(barrierGUID))
|
||||
barrier->Delete();
|
||||
barrierGUID = 0;
|
||||
barrierGUID.Clear();
|
||||
|
||||
events.RescheduleEvent(8, 2000);
|
||||
break;
|
||||
@@ -1272,7 +1270,7 @@ public:
|
||||
me->GetMotionMaster()->MovePath(me->GetEntry() == NPC_JAINA_PART2 ? PATH_BEGIN_VALUE + 16 : PATH_BEGIN_VALUE + 17, false);
|
||||
break;
|
||||
case 10:
|
||||
if (Creature* x = pInstance->instance->GetCreature(pInstance->GetData64(DATA_MARTIN_OR_GORKUN_GUID)))
|
||||
if (Creature* x = pInstance->instance->GetCreature(pInstance->GetGuidData(DATA_MARTIN_OR_GORKUN_GUID)))
|
||||
x->AI()->DoAction(3);
|
||||
|
||||
break;
|
||||
@@ -1540,7 +1538,7 @@ public:
|
||||
if (inst->GetData(DATA_INSTANCE_PROGRESS) < INSTANCE_PROGRESS_AFTER_TUNNEL_WARN)
|
||||
return false;
|
||||
|
||||
if (inst->GetData(DATA_GARFROST) == DONE && inst->GetData(DATA_ICK) == DONE && inst->GetData(DATA_TYRANNUS) != DONE && !inst->GetData64(DATA_MARTIN_OR_GORKUN_GUID))
|
||||
if (inst->GetData(DATA_GARFROST) == DONE && inst->GetData(DATA_ICK) == DONE && inst->GetData(DATA_TYRANNUS) != DONE && !inst->GetGuidData(DATA_MARTIN_OR_GORKUN_GUID))
|
||||
{
|
||||
if (Creature* c = inst->instance->SummonCreature(NPC_GORKUN_IRONSKULL_2, TSSpawnPos))
|
||||
c->GetMotionMaster()->MovePoint(0, TSMidPos);
|
||||
|
||||
@@ -343,7 +343,7 @@ public:
|
||||
{
|
||||
if (me->ToTempSummon())
|
||||
{
|
||||
if (who->GetTypeId() == TYPEID_PLAYER || IS_PLAYER_GUID(who->GetOwnerGUID()))
|
||||
if (who->GetTypeId() == TYPEID_PLAYER || who->GetOwnerGUID().IsPlayer())
|
||||
if (Unit* summoner = me->ToTempSummon()->GetSummoner())
|
||||
summoner->GetAI()->DoAction(ACTION_INFORM);
|
||||
return;
|
||||
|
||||
@@ -60,7 +60,7 @@ public:
|
||||
}
|
||||
|
||||
uint8 phaseCounter;
|
||||
std::set<uint64> impaledList;
|
||||
GuidSet impaledList;
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
|
||||
@@ -32,10 +32,10 @@ public:
|
||||
{
|
||||
}
|
||||
|
||||
uint64 _sladRanAltarGUID;
|
||||
uint64 _moorabiAltarGUID;
|
||||
uint64 _drakkariAltarGUID;
|
||||
uint64 _bridgeGUIDs[6];
|
||||
ObjectGuid _sladRanAltarGUID;
|
||||
ObjectGuid _moorabiAltarGUID;
|
||||
ObjectGuid _drakkariAltarGUID;
|
||||
ObjectGuid _bridgeGUIDs[6];
|
||||
uint32 _keysInCount;
|
||||
uint32 _activateTimer;
|
||||
|
||||
@@ -44,12 +44,8 @@ public:
|
||||
SetBossNumber(MAX_ENCOUNTERS);
|
||||
LoadDoorData(doorData);
|
||||
|
||||
_sladRanAltarGUID = 0;
|
||||
_moorabiAltarGUID = 0;
|
||||
_drakkariAltarGUID = 0;
|
||||
_keysInCount = 0;
|
||||
_activateTimer = 0;
|
||||
memset(&_bridgeGUIDs, 0, sizeof(_bridgeGUIDs));
|
||||
}
|
||||
|
||||
void OnGameObjectCreate(GameObject* gameobject) override
|
||||
|
||||
@@ -224,13 +224,13 @@ public:
|
||||
void EnterCombat(Unit* who) override
|
||||
{
|
||||
bool valid = true;
|
||||
if (Creature* keleseth = instance->instance->GetCreature(instance->GetData64(DATA_PRINCE_KELESETH_GUID)))
|
||||
if (Creature* keleseth = instance->instance->GetCreature(instance->GetGuidData(DATA_PRINCE_KELESETH_GUID)))
|
||||
if (!keleseth->IsAlive() || keleseth->IsInEvadeMode())
|
||||
valid = false;
|
||||
if (Creature* taldaram = instance->instance->GetCreature(instance->GetData64(DATA_PRINCE_TALDARAM_GUID)))
|
||||
if (Creature* taldaram = instance->instance->GetCreature(instance->GetGuidData(DATA_PRINCE_TALDARAM_GUID)))
|
||||
if (!taldaram->IsAlive() || taldaram->IsInEvadeMode())
|
||||
valid = false;
|
||||
if (Creature* valanar = instance->instance->GetCreature(instance->GetData64(DATA_PRINCE_VALANAR_GUID)))
|
||||
if (Creature* valanar = instance->instance->GetCreature(instance->GetGuidData(DATA_PRINCE_VALANAR_GUID)))
|
||||
if (!valanar->IsAlive() || valanar->IsInEvadeMode())
|
||||
valid = false;
|
||||
if (!valid)
|
||||
@@ -248,10 +248,10 @@ public:
|
||||
me->SetReactState(REACT_AGGRESSIVE);
|
||||
instance->SendEncounterUnit(ENCOUNTER_FRAME_ENGAGE, me);
|
||||
|
||||
if (Creature* taldaram = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_PRINCE_TALDARAM_GUID)))
|
||||
if (Creature* taldaram = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_PRINCE_TALDARAM_GUID)))
|
||||
if (!taldaram->IsInEvadeMode())
|
||||
taldaram->SetInCombatWithZone();
|
||||
if (Creature* valanar = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_PRINCE_VALANAR_GUID)))
|
||||
if (Creature* valanar = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_PRINCE_VALANAR_GUID)))
|
||||
if (!valanar->IsInEvadeMode())
|
||||
valanar->SetInCombatWithZone();
|
||||
|
||||
@@ -289,10 +289,10 @@ public:
|
||||
}
|
||||
|
||||
Talk(SAY_KELESETH_DEATH);
|
||||
if (Creature* taldaram = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_PRINCE_TALDARAM_GUID)))
|
||||
if (Creature* taldaram = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_PRINCE_TALDARAM_GUID)))
|
||||
if (taldaram->IsAlive())
|
||||
Unit::Kill(taldaram, taldaram);
|
||||
if (Creature* valanar = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_PRINCE_VALANAR_GUID)))
|
||||
if (Creature* valanar = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_PRINCE_VALANAR_GUID)))
|
||||
if (valanar->IsAlive())
|
||||
Unit::Kill(valanar, valanar);
|
||||
}
|
||||
@@ -413,9 +413,9 @@ public:
|
||||
me->SetHealth(me->GetMaxHealth());
|
||||
DoAction(ACTION_REMOVE_INVOCATION);
|
||||
_evading = true;
|
||||
if (Creature* taldaram = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_PRINCE_TALDARAM_GUID)))
|
||||
if (Creature* taldaram = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_PRINCE_TALDARAM_GUID)))
|
||||
taldaram->AI()->EnterEvadeMode();
|
||||
if (Creature* valanar = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_PRINCE_VALANAR_GUID)))
|
||||
if (Creature* valanar = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_PRINCE_VALANAR_GUID)))
|
||||
valanar->AI()->EnterEvadeMode();
|
||||
ScriptedAI::EnterEvadeMode();
|
||||
_evading = false;
|
||||
@@ -483,13 +483,13 @@ public:
|
||||
void EnterCombat(Unit* who) override
|
||||
{
|
||||
bool valid = true;
|
||||
if (Creature* keleseth = instance->instance->GetCreature(instance->GetData64(DATA_PRINCE_KELESETH_GUID)))
|
||||
if (Creature* keleseth = instance->instance->GetCreature(instance->GetGuidData(DATA_PRINCE_KELESETH_GUID)))
|
||||
if (!keleseth->IsAlive() || keleseth->IsInEvadeMode())
|
||||
valid = false;
|
||||
if (Creature* taldaram = instance->instance->GetCreature(instance->GetData64(DATA_PRINCE_TALDARAM_GUID)))
|
||||
if (Creature* taldaram = instance->instance->GetCreature(instance->GetGuidData(DATA_PRINCE_TALDARAM_GUID)))
|
||||
if (!taldaram->IsAlive() || taldaram->IsInEvadeMode())
|
||||
valid = false;
|
||||
if (Creature* valanar = instance->instance->GetCreature(instance->GetData64(DATA_PRINCE_VALANAR_GUID)))
|
||||
if (Creature* valanar = instance->instance->GetCreature(instance->GetGuidData(DATA_PRINCE_VALANAR_GUID)))
|
||||
if (!valanar->IsAlive() || valanar->IsInEvadeMode())
|
||||
valid = false;
|
||||
if (!valid)
|
||||
@@ -507,10 +507,10 @@ public:
|
||||
me->SetReactState(REACT_AGGRESSIVE);
|
||||
instance->SendEncounterUnit(ENCOUNTER_FRAME_ENGAGE, me);
|
||||
|
||||
if (Creature* keleseth = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_PRINCE_KELESETH_GUID)))
|
||||
if (Creature* keleseth = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_PRINCE_KELESETH_GUID)))
|
||||
if (!keleseth->IsInEvadeMode())
|
||||
keleseth->SetInCombatWithZone();
|
||||
if (Creature* valanar = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_PRINCE_VALANAR_GUID)))
|
||||
if (Creature* valanar = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_PRINCE_VALANAR_GUID)))
|
||||
if (!valanar->IsInEvadeMode())
|
||||
valanar->SetInCombatWithZone();
|
||||
|
||||
@@ -543,10 +543,10 @@ public:
|
||||
}
|
||||
|
||||
Talk(EMOTE_TALDARAM_DEATH);
|
||||
if (Creature* keleseth = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_PRINCE_KELESETH_GUID)))
|
||||
if (Creature* keleseth = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_PRINCE_KELESETH_GUID)))
|
||||
if (keleseth->IsAlive())
|
||||
Unit::Kill(keleseth, keleseth);
|
||||
if (Creature* valanar = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_PRINCE_VALANAR_GUID)))
|
||||
if (Creature* valanar = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_PRINCE_VALANAR_GUID)))
|
||||
if (valanar->IsAlive())
|
||||
Unit::Kill(valanar, valanar);
|
||||
}
|
||||
@@ -697,9 +697,9 @@ public:
|
||||
me->SetHealth(me->GetMaxHealth());
|
||||
DoAction(ACTION_REMOVE_INVOCATION);
|
||||
_evading = true;
|
||||
if (Creature* keleseth = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_PRINCE_KELESETH_GUID)))
|
||||
if (Creature* keleseth = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_PRINCE_KELESETH_GUID)))
|
||||
keleseth->AI()->EnterEvadeMode();
|
||||
if (Creature* valanar = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_PRINCE_VALANAR_GUID)))
|
||||
if (Creature* valanar = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_PRINCE_VALANAR_GUID)))
|
||||
valanar->AI()->EnterEvadeMode();
|
||||
ScriptedAI::EnterEvadeMode();
|
||||
_evading = false;
|
||||
@@ -767,13 +767,13 @@ public:
|
||||
void EnterCombat(Unit* who) override
|
||||
{
|
||||
bool valid = true;
|
||||
if (Creature* keleseth = instance->instance->GetCreature(instance->GetData64(DATA_PRINCE_KELESETH_GUID)))
|
||||
if (Creature* keleseth = instance->instance->GetCreature(instance->GetGuidData(DATA_PRINCE_KELESETH_GUID)))
|
||||
if (!keleseth->IsAlive() || keleseth->IsInEvadeMode())
|
||||
valid = false;
|
||||
if (Creature* taldaram = instance->instance->GetCreature(instance->GetData64(DATA_PRINCE_TALDARAM_GUID)))
|
||||
if (Creature* taldaram = instance->instance->GetCreature(instance->GetGuidData(DATA_PRINCE_TALDARAM_GUID)))
|
||||
if (!taldaram->IsAlive() || taldaram->IsInEvadeMode())
|
||||
valid = false;
|
||||
if (Creature* valanar = instance->instance->GetCreature(instance->GetData64(DATA_PRINCE_VALANAR_GUID)))
|
||||
if (Creature* valanar = instance->instance->GetCreature(instance->GetGuidData(DATA_PRINCE_VALANAR_GUID)))
|
||||
if (!valanar->IsAlive() || valanar->IsInEvadeMode())
|
||||
valid = false;
|
||||
if (!valid)
|
||||
@@ -793,10 +793,10 @@ public:
|
||||
me->SetReactState(REACT_AGGRESSIVE);
|
||||
instance->SendEncounterUnit(ENCOUNTER_FRAME_ENGAGE, me);
|
||||
|
||||
if (Creature* keleseth = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_PRINCE_KELESETH_GUID)))
|
||||
if (Creature* keleseth = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_PRINCE_KELESETH_GUID)))
|
||||
if (!keleseth->IsInEvadeMode())
|
||||
keleseth->SetInCombatWithZone();
|
||||
if (Creature* taldaram = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_PRINCE_TALDARAM_GUID)))
|
||||
if (Creature* taldaram = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_PRINCE_TALDARAM_GUID)))
|
||||
if (!taldaram->IsInEvadeMode())
|
||||
taldaram->SetInCombatWithZone();
|
||||
|
||||
@@ -838,10 +838,10 @@ public:
|
||||
|
||||
Talk(SAY_VALANAR_DEATH);
|
||||
instance->SetBossState(DATA_BLOOD_PRINCE_COUNCIL, DONE);
|
||||
if (Creature* keleseth = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_PRINCE_KELESETH_GUID)))
|
||||
if (Creature* keleseth = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_PRINCE_KELESETH_GUID)))
|
||||
if (keleseth->IsAlive())
|
||||
Unit::Kill(keleseth, keleseth);
|
||||
if (Creature* taldaram = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_PRINCE_TALDARAM_GUID)))
|
||||
if (Creature* taldaram = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_PRINCE_TALDARAM_GUID)))
|
||||
if (taldaram->IsAlive())
|
||||
Unit::Kill(taldaram, taldaram);
|
||||
}
|
||||
@@ -944,8 +944,8 @@ public:
|
||||
|
||||
bool CheckRoom()
|
||||
{
|
||||
Creature* keleseth = instance->instance->GetCreature(instance->GetData64(DATA_PRINCE_KELESETH_GUID));
|
||||
Creature* taldaram = instance->instance->GetCreature(instance->GetData64(DATA_PRINCE_TALDARAM_GUID));
|
||||
Creature* keleseth = instance->instance->GetCreature(instance->GetGuidData(DATA_PRINCE_KELESETH_GUID));
|
||||
Creature* taldaram = instance->instance->GetCreature(instance->GetGuidData(DATA_PRINCE_TALDARAM_GUID));
|
||||
if (keleseth && taldaram && CheckBoundary(me) && CheckBoundary(keleseth) && CheckBoundary(taldaram))
|
||||
return true;
|
||||
|
||||
@@ -968,10 +968,10 @@ public:
|
||||
case EVENT_INVOCATION_OF_BLOOD:
|
||||
{
|
||||
uint32 visualSpellId = 0;
|
||||
Creature* current = instance->instance->GetCreature(instance->GetData64(invocationOrder[currentInvocationIndex]));
|
||||
Creature* current = instance->instance->GetCreature(instance->GetGuidData(invocationOrder[currentInvocationIndex]));
|
||||
if (++currentInvocationIndex >= 3)
|
||||
currentInvocationIndex = 0;
|
||||
Creature* next = instance->instance->GetCreature(instance->GetData64(invocationOrder[currentInvocationIndex]));
|
||||
Creature* next = instance->instance->GetCreature(instance->GetGuidData(invocationOrder[currentInvocationIndex]));
|
||||
switch (invocationOrder[currentInvocationIndex])
|
||||
{
|
||||
case DATA_PRINCE_KELESETH_GUID:
|
||||
@@ -1036,9 +1036,9 @@ public:
|
||||
me->SetHealth(me->GetMaxHealth());
|
||||
DoAction(ACTION_REMOVE_INVOCATION);
|
||||
_evading = true;
|
||||
if (Creature* keleseth = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_PRINCE_KELESETH_GUID)))
|
||||
if (Creature* keleseth = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_PRINCE_KELESETH_GUID)))
|
||||
keleseth->AI()->EnterEvadeMode();
|
||||
if (Creature* taldaram = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_PRINCE_TALDARAM_GUID)))
|
||||
if (Creature* taldaram = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_PRINCE_TALDARAM_GUID)))
|
||||
taldaram->AI()->EnterEvadeMode();
|
||||
BossAI::EnterEvadeMode();
|
||||
_evading = false;
|
||||
@@ -1127,15 +1127,15 @@ public:
|
||||
me->GetMotionMaster()->MovePoint(POINT_INTRO_DESPAWN, introFinalPos);
|
||||
_events.Reset();
|
||||
|
||||
if (Creature* keleseth = ObjectAccessor::GetCreature(*me, _instance->GetData64(DATA_PRINCE_KELESETH_GUID)))
|
||||
if (Creature* keleseth = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_PRINCE_KELESETH_GUID)))
|
||||
{
|
||||
keleseth->AI()->DoAction(ACTION_STAND_UP);
|
||||
}
|
||||
if (Creature* taldaram = ObjectAccessor::GetCreature(*me, _instance->GetData64(DATA_PRINCE_TALDARAM_GUID)))
|
||||
if (Creature* taldaram = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_PRINCE_TALDARAM_GUID)))
|
||||
{
|
||||
taldaram->AI()->DoAction(ACTION_STAND_UP);
|
||||
}
|
||||
if (Creature* valanar = ObjectAccessor::GetCreature(*me, _instance->GetData64(DATA_PRINCE_VALANAR_GUID)))
|
||||
if (Creature* valanar = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_PRINCE_VALANAR_GUID)))
|
||||
{
|
||||
valanar->AI()->DoAction(ACTION_STAND_UP);
|
||||
}
|
||||
@@ -1240,7 +1240,6 @@ public:
|
||||
{
|
||||
npc_ball_of_flameAI(Creature* creature) : ScriptedAI(creature), _instance(creature->GetInstanceScript())
|
||||
{
|
||||
_chaseGUID = 0;
|
||||
_exploded = false;
|
||||
_started = false;
|
||||
if (me->GetEntry() == NPC_BALL_OF_INFERNO_FLAME)
|
||||
@@ -1249,7 +1248,7 @@ public:
|
||||
}
|
||||
|
||||
InstanceScript* _instance;
|
||||
uint64 _chaseGUID;
|
||||
ObjectGuid _chaseGUID;
|
||||
bool _exploded;
|
||||
bool _started;
|
||||
|
||||
@@ -1276,7 +1275,7 @@ public:
|
||||
}
|
||||
}
|
||||
|
||||
void SetGUID(uint64 guid, int32 /*type*/) override
|
||||
void SetGUID(ObjectGuid guid, int32 /*type*/) override
|
||||
{
|
||||
_chaseGUID = guid;
|
||||
}
|
||||
@@ -1358,7 +1357,7 @@ public:
|
||||
{
|
||||
if (InstanceScript* instance = me->GetInstanceScript())
|
||||
{
|
||||
if (Creature* valanar = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_PRINCE_VALANAR_GUID)))
|
||||
if (Creature* valanar = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_PRINCE_VALANAR_GUID)))
|
||||
{
|
||||
valanar->AI()->JustSummoned(me);
|
||||
}
|
||||
|
||||
@@ -133,18 +133,18 @@ public:
|
||||
|
||||
bool _creditBloodQuickening;
|
||||
bool _killMinchar;
|
||||
uint64 _tankGUID;
|
||||
uint64 _offtankGUID;
|
||||
std::set<uint64> _bloodboltedPlayers;
|
||||
std::set<uint64> _vampires;
|
||||
ObjectGuid _tankGUID;
|
||||
ObjectGuid _offtankGUID;
|
||||
GuidSet _bloodboltedPlayers;
|
||||
GuidSet _vampires;
|
||||
bool bEnteredCombat; // needed for failing an attempt in JustReachedHome()
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
_creditBloodQuickening = false;
|
||||
_killMinchar = false;
|
||||
_tankGUID = 0;
|
||||
_offtankGUID = 0;
|
||||
_tankGUID.Clear();
|
||||
_offtankGUID.Clear();
|
||||
_vampires.clear();
|
||||
CleanAuras();
|
||||
me->SetReactState(REACT_AGGRESSIVE);
|
||||
@@ -202,7 +202,7 @@ public:
|
||||
Map::PlayerList const& pl = me->GetMap()->GetPlayers();
|
||||
for (Map::PlayerList::const_iterator itr = pl.begin(); itr != pl.end(); ++itr)
|
||||
if (Player* p = itr->GetSource())
|
||||
p->KilledMonsterCredit(RAID_MODE(NPC_INFILTRATOR_MINCHAR_BQ, NPC_BLOOD_QUICKENING_CREDIT_25), 0);
|
||||
p->KilledMonsterCredit(RAID_MODE(NPC_INFILTRATOR_MINCHAR_BQ, NPC_BLOOD_QUICKENING_CREDIT_25));
|
||||
if (Creature* minchar = me->FindNearestCreature(NPC_INFILTRATOR_MINCHAR_BQ, 200.0f))
|
||||
{
|
||||
minchar->SetUInt32Value(UNIT_NPC_EMOTESTATE, 0);
|
||||
@@ -369,8 +369,8 @@ public:
|
||||
|
||||
if (target->GetDistance(me->GetVictim()) > 39.0f || me->GetDistance(me->GetVictim()) > 39.0f)
|
||||
{
|
||||
_tankGUID = 0;
|
||||
_offtankGUID = 0;
|
||||
_tankGUID.Clear();
|
||||
_offtankGUID.Clear();
|
||||
events.ScheduleEvent(EVENT_BLOOD_MIRROR, 2500);
|
||||
break;
|
||||
}
|
||||
@@ -514,17 +514,17 @@ public:
|
||||
instance->DoRemoveAurasDueToSpellOnPlayers(PRESENCE_OF_THE_DARKFALLEN);
|
||||
}
|
||||
|
||||
bool WasVampire(uint64 guid)
|
||||
bool WasVampire(ObjectGuid guid)
|
||||
{
|
||||
return _vampires.count(guid) != 0;
|
||||
}
|
||||
|
||||
bool WasBloodbolted(uint64 guid)
|
||||
bool WasBloodbolted(ObjectGuid guid)
|
||||
{
|
||||
return _bloodboltedPlayers.count(guid) != 0;
|
||||
}
|
||||
|
||||
void SetGUID(uint64 guid, int32 type = 0) override
|
||||
void SetGUID(ObjectGuid guid, int32 type = 0) override
|
||||
{
|
||||
switch (type)
|
||||
{
|
||||
@@ -760,7 +760,7 @@ public:
|
||||
void OnApply(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
|
||||
{
|
||||
if (InstanceScript* instance = GetTarget()->GetInstanceScript())
|
||||
if (Creature* bloodQueen = ObjectAccessor::GetCreature(*GetTarget(), instance->GetData64(DATA_BLOOD_QUEEN_LANA_THEL)))
|
||||
if (Creature* bloodQueen = ObjectAccessor::GetCreature(*GetTarget(), instance->GetGuidData(DATA_BLOOD_QUEEN_LANA_THEL)))
|
||||
bloodQueen->AI()->Talk(EMOTE_BLOODTHIRST, GetTarget());
|
||||
}
|
||||
|
||||
@@ -769,7 +769,7 @@ public:
|
||||
Unit* target = GetTarget();
|
||||
if (GetTargetApplication()->GetRemoveMode() == AURA_REMOVE_BY_EXPIRE)
|
||||
if (InstanceScript* instance = target->GetInstanceScript())
|
||||
if (Creature* bloodQueen = ObjectAccessor::GetCreature(*target, instance->GetData64(DATA_BLOOD_QUEEN_LANA_THEL)))
|
||||
if (Creature* bloodQueen = ObjectAccessor::GetCreature(*target, instance->GetGuidData(DATA_BLOOD_QUEEN_LANA_THEL)))
|
||||
if (bloodQueen->IsAlive() && bloodQueen->IsInCombat())
|
||||
{
|
||||
// this needs to be done BEFORE charm aura or we hit an assert in Unit::SetCharmedBy
|
||||
@@ -871,7 +871,7 @@ public:
|
||||
return;
|
||||
|
||||
uint32 spellId = sSpellMgr->GetSpellIdForDifficulty(SPELL_FRENZIED_BLOODTHIRST, GetCaster());
|
||||
GetCaster()->RemoveAura(spellId, 0, 0, AURA_REMOVE_BY_ENEMY_SPELL);
|
||||
GetCaster()->RemoveAura(spellId, ObjectGuid::Empty, 0, AURA_REMOVE_BY_ENEMY_SPELL);
|
||||
GetCaster()->CastSpell(GetCaster(), SPELL_ESSENCE_OF_THE_BLOOD_QUEEN_PLR, TRIGGERED_FULL_MASK);
|
||||
|
||||
if (Aura* aura = GetCaster()->GetAura(SPELL_GUSHING_WOUND))
|
||||
@@ -886,7 +886,7 @@ public:
|
||||
}
|
||||
|
||||
if (InstanceScript* instance = GetCaster()->GetInstanceScript())
|
||||
if (Creature* bloodQueen = ObjectAccessor::GetCreature(*GetCaster(), instance->GetData64(DATA_BLOOD_QUEEN_LANA_THEL)))
|
||||
if (Creature* bloodQueen = ObjectAccessor::GetCreature(*GetCaster(), instance->GetGuidData(DATA_BLOOD_QUEEN_LANA_THEL)))
|
||||
bloodQueen->AI()->SetGUID(GetHitUnit()->GetGUID(), GUID_VAMPIRE);
|
||||
}
|
||||
|
||||
@@ -952,7 +952,7 @@ public:
|
||||
return;
|
||||
|
||||
if (InstanceScript* instance = GetHitUnit()->GetInstanceScript())
|
||||
GetHitUnit()->CastSpell((Unit*)nullptr, GetSpellInfo()->Effects[effIndex].TriggerSpell, true, nullptr, nullptr, instance->GetData64(DATA_BLOOD_QUEEN_LANA_THEL));
|
||||
GetHitUnit()->CastSpell((Unit*)nullptr, GetSpellInfo()->Effects[effIndex].TriggerSpell, true, nullptr, nullptr, instance->GetGuidData(DATA_BLOOD_QUEEN_LANA_THEL));
|
||||
}
|
||||
|
||||
void Register() override
|
||||
|
||||
@@ -299,7 +299,7 @@ public:
|
||||
Talk(SAY_DEATH);
|
||||
|
||||
instance->DoRemoveAurasDueToSpellOnPlayers(SPELL_MARK_OF_THE_FALLEN_CHAMPION);
|
||||
if (Creature* creature = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_SAURFANG_EVENT_NPC)))
|
||||
if (Creature* creature = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_SAURFANG_EVENT_NPC)))
|
||||
creature->AI()->DoAction(ACTION_START_OUTRO);
|
||||
}
|
||||
|
||||
@@ -364,7 +364,7 @@ public:
|
||||
if (type != POINT_MOTION_TYPE && id != POINT_SAURFANG)
|
||||
return;
|
||||
|
||||
instance->HandleGameObject(instance->GetData64(GO_SAURFANG_S_DOOR), false);
|
||||
instance->HandleGameObject(instance->GetGuidData(GO_SAURFANG_S_DOOR), false);
|
||||
}
|
||||
|
||||
void SpellHitTarget(Unit* /*target*/, SpellInfo const* spell) override
|
||||
@@ -485,7 +485,7 @@ public:
|
||||
void EnterEvadeMode() override
|
||||
{
|
||||
BossAI::EnterEvadeMode();
|
||||
if (Creature* creature = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_SAURFANG_EVENT_NPC)))
|
||||
if (Creature* creature = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_SAURFANG_EVENT_NPC)))
|
||||
creature->AI()->DoAction(ACTION_EVADE);
|
||||
}
|
||||
|
||||
@@ -532,7 +532,7 @@ public:
|
||||
if (_events.GetPhaseMask() & PHASE_INTRO_MASK)
|
||||
return;
|
||||
|
||||
Creature* deathbringer = ObjectAccessor::GetCreature(*me, _instance->GetData64(DATA_DEATHBRINGER_SAURFANG));
|
||||
Creature* deathbringer = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_DEATHBRINGER_SAURFANG));
|
||||
if (!deathbringer || deathbringer->IsInEvadeMode())
|
||||
return;
|
||||
|
||||
@@ -550,11 +550,11 @@ public:
|
||||
_events.SetPhase(PHASE_INTRO_H);
|
||||
_events.ScheduleEvent(EVENT_INTRO_HORDE_2, 5000, 0, PHASE_INTRO_H);
|
||||
_events.ScheduleEvent(EVENT_INTRO_HORDE_3, 18500, 0, PHASE_INTRO_H);
|
||||
_instance->HandleGameObject(_instance->GetData64(GO_SAURFANG_S_DOOR), true);
|
||||
_instance->HandleGameObject(_instance->GetGuidData(GO_SAURFANG_S_DOOR), true);
|
||||
|
||||
if (GameObject* teleporter = ObjectAccessor::GetGameObject(*me, _instance->GetData64(GO_SCOURGE_TRANSPORTER_SAURFANG)))
|
||||
if (GameObject* teleporter = ObjectAccessor::GetGameObject(*me, _instance->GetGuidData(GO_SCOURGE_TRANSPORTER_SAURFANG)))
|
||||
{
|
||||
_instance->HandleGameObject(0, false, teleporter);
|
||||
_instance->HandleGameObject(ObjectGuid::Empty, false, teleporter);
|
||||
teleporter->SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_IN_USE);
|
||||
}
|
||||
|
||||
@@ -629,7 +629,7 @@ public:
|
||||
_events.ScheduleEvent(EVENT_INTRO_FINISH, 46700 + 1000 + 9000, 0, PHASE_INTRO_H);
|
||||
break;
|
||||
/*case POINT_CORPSE:
|
||||
if (Creature* deathbringer = ObjectAccessor::GetCreature(*me, _instance->GetData64(DATA_DEATHBRINGER_SAURFANG)))
|
||||
if (Creature* deathbringer = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_DEATHBRINGER_SAURFANG)))
|
||||
{
|
||||
deathbringer->CastSpell(me, SPELL_RIDE_VEHICLE, true);
|
||||
deathbringer->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
||||
@@ -639,7 +639,7 @@ public:
|
||||
_events.ScheduleEvent(EVENT_OUTRO_HORDE_5, 4000);
|
||||
break;
|
||||
case POINT_FINAL:
|
||||
if (Creature* deathbringer = ObjectAccessor::GetCreature(*me, _instance->GetData64(DATA_DEATHBRINGER_SAURFANG)))
|
||||
if (Creature* deathbringer = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_DEATHBRINGER_SAURFANG)))
|
||||
deathbringer->DespawnOrUnsummon();
|
||||
me->DespawnOrUnsummon();
|
||||
break;*/
|
||||
@@ -657,7 +657,7 @@ public:
|
||||
case 0:
|
||||
break;
|
||||
case EVENT_INTRO_HORDE_2:
|
||||
if (Creature* deathbringer = ObjectAccessor::GetCreature(*me, _instance->GetData64(DATA_DEATHBRINGER_SAURFANG)))
|
||||
if (Creature* deathbringer = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_DEATHBRINGER_SAURFANG)))
|
||||
deathbringer->AI()->Talk(SAY_INTRO_HORDE_2);
|
||||
break;
|
||||
case EVENT_INTRO_HORDE_3:
|
||||
@@ -665,7 +665,7 @@ public:
|
||||
me->GetMotionMaster()->MovePoint(POINT_FIRST_STEP, firstStepPos.GetPositionX(), firstStepPos.GetPositionY(), firstStepPos.GetPositionZ());
|
||||
break;
|
||||
case EVENT_INTRO_HORDE_4:
|
||||
if (Creature* deathbringer = ObjectAccessor::GetCreature(*me, _instance->GetData64(DATA_DEATHBRINGER_SAURFANG)))
|
||||
if (Creature* deathbringer = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_DEATHBRINGER_SAURFANG)))
|
||||
deathbringer->AI()->Talk(SAY_INTRO_HORDE_4);
|
||||
break;
|
||||
case EVENT_INTRO_HORDE_5:
|
||||
@@ -684,14 +684,14 @@ public:
|
||||
me->GetMotionMaster()->MoveCharge(chargePos[0].GetPositionX(), chargePos[0].GetPositionY(), chargePos[0].GetPositionZ(), 8.5f, POINT_CHARGE);
|
||||
break;
|
||||
case EVENT_INTRO_HORDE_9:
|
||||
if (Creature* deathbringer = ObjectAccessor::GetCreature(*me, _instance->GetData64(DATA_DEATHBRINGER_SAURFANG)))
|
||||
if (Creature* deathbringer = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_DEATHBRINGER_SAURFANG)))
|
||||
{
|
||||
deathbringer->AI()->DoCast(me, SPELL_GRIP_OF_AGONY);
|
||||
deathbringer->AI()->Talk(SAY_INTRO_HORDE_9);
|
||||
}
|
||||
break;
|
||||
case EVENT_INTRO_FINISH:
|
||||
if (Creature* deathbringer = ObjectAccessor::GetCreature(*me, _instance->GetData64(DATA_DEATHBRINGER_SAURFANG)))
|
||||
if (Creature* deathbringer = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_DEATHBRINGER_SAURFANG)))
|
||||
{
|
||||
deathbringer->AI()->DoAction(ACTION_INTRO_DONE);
|
||||
deathbringer->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC);
|
||||
@@ -701,7 +701,7 @@ public:
|
||||
break;
|
||||
|
||||
/*case EVENT_OUTRO_HORDE_1:
|
||||
if (Creature* deathbringer = ObjectAccessor::GetCreature(*me, _instance->GetData64(DATA_DEATHBRINGER_SAURFANG)))
|
||||
if (Creature* deathbringer = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_DEATHBRINGER_SAURFANG)))
|
||||
me->SetFacingToObject(deathbringer);
|
||||
Talk(SAY_OUTRO_HORDE_2);
|
||||
break;
|
||||
@@ -709,7 +709,7 @@ public:
|
||||
Talk(SAY_OUTRO_HORDE_3);
|
||||
break;
|
||||
case EVENT_OUTRO_HORDE_3:
|
||||
if (Creature* deathbringer = ObjectAccessor::GetCreature(*me, _instance->GetData64(DATA_DEATHBRINGER_SAURFANG)))
|
||||
if (Creature* deathbringer = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_DEATHBRINGER_SAURFANG)))
|
||||
{
|
||||
float x, y, z;
|
||||
deathbringer->GetClosePoint(x, y, z, deathbringer->GetObjectSize());
|
||||
@@ -793,7 +793,7 @@ public:
|
||||
if (_events.GetPhaseMask() & PHASE_INTRO_MASK)
|
||||
return;
|
||||
|
||||
Creature* deathbringer = ObjectAccessor::GetCreature(*me, _instance->GetData64(DATA_DEATHBRINGER_SAURFANG));
|
||||
Creature* deathbringer = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_DEATHBRINGER_SAURFANG));
|
||||
if (!deathbringer || deathbringer->IsInEvadeMode())
|
||||
return;
|
||||
|
||||
@@ -812,11 +812,11 @@ public:
|
||||
_events.ScheduleEvent(EVENT_INTRO_ALLIANCE_2, 2500, 0, PHASE_INTRO_A);
|
||||
_events.ScheduleEvent(EVENT_INTRO_ALLIANCE_3, 20000, 0, PHASE_INTRO_A);
|
||||
_events.ScheduleEvent(EVENT_INTRO_ALLIANCE_4, 2500 + 17500 + 9500, 0, PHASE_INTRO_A);
|
||||
_instance->HandleGameObject(_instance->GetData64(GO_SAURFANG_S_DOOR), true);
|
||||
_instance->HandleGameObject(_instance->GetGuidData(GO_SAURFANG_S_DOOR), true);
|
||||
|
||||
if (GameObject* teleporter = ObjectAccessor::GetGameObject(*me, _instance->GetData64(GO_SCOURGE_TRANSPORTER_SAURFANG)))
|
||||
if (GameObject* teleporter = ObjectAccessor::GetGameObject(*me, _instance->GetGuidData(GO_SCOURGE_TRANSPORTER_SAURFANG)))
|
||||
{
|
||||
_instance->HandleGameObject(0, false, teleporter);
|
||||
_instance->HandleGameObject(ObjectGuid::Empty, false, teleporter);
|
||||
teleporter->SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_IN_USE);
|
||||
}
|
||||
|
||||
@@ -898,11 +898,11 @@ public:
|
||||
case 0:
|
||||
break;
|
||||
case EVENT_INTRO_ALLIANCE_2:
|
||||
if (Creature* deathbringer = ObjectAccessor::GetCreature(*me, _instance->GetData64(DATA_DEATHBRINGER_SAURFANG)))
|
||||
if (Creature* deathbringer = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_DEATHBRINGER_SAURFANG)))
|
||||
deathbringer->AI()->Talk(SAY_INTRO_ALLIANCE_2);
|
||||
break;
|
||||
case EVENT_INTRO_ALLIANCE_3:
|
||||
if (Creature* deathbringer = ObjectAccessor::GetCreature(*me, _instance->GetData64(DATA_DEATHBRINGER_SAURFANG)))
|
||||
if (Creature* deathbringer = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_DEATHBRINGER_SAURFANG)))
|
||||
deathbringer->AI()->Talk(SAY_INTRO_ALLIANCE_3);
|
||||
break;
|
||||
case EVENT_INTRO_ALLIANCE_4:
|
||||
@@ -916,20 +916,20 @@ public:
|
||||
me->GetMotionMaster()->MoveCharge(chargePos[0].GetPositionX(), chargePos[0].GetPositionY(), chargePos[0].GetPositionZ(), 8.5f, POINT_CHARGE);
|
||||
break;
|
||||
case EVENT_INTRO_ALLIANCE_6:
|
||||
if (Creature* deathbringer = ObjectAccessor::GetCreature(*me, _instance->GetData64(DATA_DEATHBRINGER_SAURFANG)))
|
||||
if (Creature* deathbringer = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_DEATHBRINGER_SAURFANG)))
|
||||
{
|
||||
deathbringer->AI()->Talk(SAY_INTRO_ALLIANCE_7);
|
||||
deathbringer->AI()->DoCast(me, SPELL_GRIP_OF_AGONY);
|
||||
}
|
||||
break;
|
||||
case EVENT_INTRO_ALLIANCE_7:
|
||||
if (Creature* deathbringer = ObjectAccessor::GetCreature(*me, _instance->GetData64(DATA_DEATHBRINGER_SAURFANG)))
|
||||
if (Creature* deathbringer = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_DEATHBRINGER_SAURFANG)))
|
||||
{
|
||||
deathbringer->AI()->Talk(SAY_INTRO_ALLIANCE_6);
|
||||
}
|
||||
break;
|
||||
case EVENT_INTRO_FINISH:
|
||||
if (Creature* deathbringer = ObjectAccessor::GetCreature(*me, _instance->GetData64(DATA_DEATHBRINGER_SAURFANG)))
|
||||
if (Creature* deathbringer = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_DEATHBRINGER_SAURFANG)))
|
||||
{
|
||||
deathbringer->AI()->DoAction(ACTION_INTRO_DONE);
|
||||
deathbringer->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC);
|
||||
@@ -1113,7 +1113,7 @@ public:
|
||||
if (Map* map = eventInfo.GetActor()->FindMap())
|
||||
if (InstanceMap* imap = map->ToInstanceMap())
|
||||
if (InstanceScript* isc = imap->GetInstanceScript())
|
||||
if (uint64 sguid = isc->GetData64(3) //DATA_DEATHBRINGER_SAURFANG
|
||||
if (ObjectGuid sguid = isc->GetGuidData(3) //DATA_DEATHBRINGER_SAURFANG
|
||||
if (Creature* saurfang = ObjectAccessor::GetCreature(*eventInfo.GetActor(), sguid))
|
||||
markCount = saurfang->IsAIEnabled ? saurfang->AI()->GetData(123456) : 0; //FALLEN_CHAMPION_CAST_COUNT
|
||||
*/
|
||||
|
||||
@@ -74,10 +74,10 @@ public:
|
||||
{
|
||||
boss_festergutAI(Creature* creature) : BossAI(creature, DATA_FESTERGUT)
|
||||
{
|
||||
_gasDummyGUID = 0;
|
||||
_gasDummyGUID.Clear();
|
||||
}
|
||||
|
||||
uint64 _gasDummyGUID;
|
||||
ObjectGuid _gasDummyGUID;
|
||||
uint32 _maxInoculatedStack;
|
||||
uint32 _inhaleCounter;
|
||||
|
||||
@@ -118,7 +118,7 @@ public:
|
||||
|
||||
if (Creature* gasDummy = me->FindNearestCreature(NPC_GAS_DUMMY, 100.0f, true))
|
||||
_gasDummyGUID = gasDummy->GetGUID();
|
||||
if (Creature* professor = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_PROFESSOR_PUTRICIDE)))
|
||||
if (Creature* professor = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_PROFESSOR_PUTRICIDE)))
|
||||
professor->AI()->DoAction(ACTION_FESTERGUT_COMBAT);
|
||||
}
|
||||
|
||||
@@ -126,7 +126,7 @@ public:
|
||||
{
|
||||
_JustDied();
|
||||
Talk(SAY_DEATH);
|
||||
if (Creature* professor = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_PROFESSOR_PUTRICIDE)))
|
||||
if (Creature* professor = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_PROFESSOR_PUTRICIDE)))
|
||||
professor->AI()->DoAction(ACTION_FESTERGUT_DEATH);
|
||||
|
||||
RemoveBlight();
|
||||
@@ -141,7 +141,7 @@ public:
|
||||
void EnterEvadeMode() override
|
||||
{
|
||||
ScriptedAI::EnterEvadeMode();
|
||||
if (Creature* professor = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_PROFESSOR_PUTRICIDE)))
|
||||
if (Creature* professor = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_PROFESSOR_PUTRICIDE)))
|
||||
professor->AI()->EnterEvadeMode();
|
||||
}
|
||||
|
||||
@@ -238,7 +238,7 @@ public:
|
||||
break;
|
||||
case EVENT_FESTERGUT_GOO:
|
||||
if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, NonTankTargetSelector(me)))
|
||||
if (Creature* professor = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_PROFESSOR_PUTRICIDE)))
|
||||
if (Creature* professor = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_PROFESSOR_PUTRICIDE)))
|
||||
professor->CastSpell(target, SPELL_MALLABLE_GOO_H, true);
|
||||
events.ScheduleEvent(EVENT_FESTERGUT_GOO, urand(15000, 20000));
|
||||
default:
|
||||
@@ -297,7 +297,7 @@ public:
|
||||
caster->ToCreature()->AI()->Talk(EMOTE_PUNGENT_BLIGHT);
|
||||
|
||||
if (InstanceScript* inst = caster->GetInstanceScript())
|
||||
if (Creature* professor = ObjectAccessor::GetCreature(*caster, inst->GetData64(DATA_PROFESSOR_PUTRICIDE)))
|
||||
if (Creature* professor = ObjectAccessor::GetCreature(*caster, inst->GetGuidData(DATA_PROFESSOR_PUTRICIDE)))
|
||||
professor->AI()->DoAction(ACTION_FESTERGUT_GAS);
|
||||
}
|
||||
|
||||
@@ -342,7 +342,7 @@ public:
|
||||
}
|
||||
GetTarget()->CastSpell(GetTarget(), SPELL_INOCULATED, true);
|
||||
if (InstanceScript* instance = GetTarget()->GetInstanceScript())
|
||||
if (Creature* festergut = ObjectAccessor::GetCreature(*GetTarget(), instance->GetData64(DATA_FESTERGUT)))
|
||||
if (Creature* festergut = ObjectAccessor::GetCreature(*GetTarget(), instance->GetGuidData(DATA_FESTERGUT)))
|
||||
festergut->AI()->SetData(DATA_INOCULATED_STACK, inoculatedStack);
|
||||
}
|
||||
|
||||
@@ -463,7 +463,7 @@ public:
|
||||
void JustDied(Unit* /*killer*/) override
|
||||
{
|
||||
if (InstanceScript* _instance = me->GetInstanceScript())
|
||||
if (Creature* festergut = ObjectAccessor::GetCreature(*me, _instance->GetData64(DATA_FESTERGUT)))
|
||||
if (Creature* festergut = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_FESTERGUT)))
|
||||
if (festergut->IsAlive())
|
||||
festergut->AI()->Talk(SAY_STINKY_DEAD);
|
||||
}
|
||||
|
||||
@@ -393,8 +393,13 @@ public:
|
||||
void ResetSlots(TeamId teamId, MotionTransport* t)
|
||||
{
|
||||
_transport = t;
|
||||
memset(_controlledSlots, 0, sizeof(uint64)* MAX_SLOTS);
|
||||
memset(_respawnCooldowns, 0, sizeof(time_t)* MAX_SLOTS);
|
||||
|
||||
for (uint8 i = 0; i < MAX_SLOTS; ++i)
|
||||
{
|
||||
_controlledSlots[i].Clear();
|
||||
_respawnCooldowns[i] = time_t(0);
|
||||
}
|
||||
|
||||
_spawnPoint = teamId == TEAM_HORDE ? &OrgrimsHammerAddsSpawnPos : &SkybreakerAddsSpawnPos;
|
||||
_slotInfo = teamId == TEAM_HORDE ? OrgrimsHammerSlotInfo : SkybreakerSlotInfo;
|
||||
}
|
||||
@@ -440,7 +445,7 @@ public:
|
||||
|
||||
void ClearSlot(PassengerSlots slot)
|
||||
{
|
||||
_controlledSlots[slot] = 0;
|
||||
_controlledSlots[slot].Clear();
|
||||
_respawnCooldowns[slot] = time(nullptr) + _slotInfo[slot].Cooldown;
|
||||
}
|
||||
|
||||
@@ -457,7 +462,7 @@ private:
|
||||
return newPos;
|
||||
}
|
||||
|
||||
uint64 _controlledSlots[MAX_SLOTS];
|
||||
ObjectGuid _controlledSlots[MAX_SLOTS];
|
||||
time_t _respawnCooldowns[MAX_SLOTS];
|
||||
MotionTransport* _transport;
|
||||
Position const* _spawnPoint;
|
||||
@@ -489,7 +494,7 @@ private:
|
||||
class ResetEncounterEvent : public BasicEvent
|
||||
{
|
||||
public:
|
||||
ResetEncounterEvent(Unit* caster, uint32 spellId, uint64 otherTransport) : _caster(caster), _spellId(spellId), _otherTransport(otherTransport) { }
|
||||
ResetEncounterEvent(Unit* caster, uint32 spellId, ObjectGuid otherTransport) : _caster(caster), _spellId(spellId), _otherTransport(otherTransport) { }
|
||||
|
||||
bool Execute(uint64, uint32) override
|
||||
{
|
||||
@@ -497,10 +502,10 @@ public:
|
||||
_caster->GetTransport()->ToMotionTransport()->UnloadNonStaticPassengers();
|
||||
_caster->GetTransport()->AddObjectToRemoveList();
|
||||
|
||||
if (GameObject* go = HashMapHolder<GameObject>::Find(_otherTransport))
|
||||
if (Transport* transport = ObjectAccessor::GetTransport(*_caster, _otherTransport))
|
||||
{
|
||||
go->ToMotionTransport()->UnloadNonStaticPassengers();
|
||||
go->AddObjectToRemoveList();
|
||||
transport->ToMotionTransport()->UnloadNonStaticPassengers();
|
||||
transport->AddObjectToRemoveList();
|
||||
}
|
||||
|
||||
return true;
|
||||
@@ -509,7 +514,7 @@ public:
|
||||
private:
|
||||
Unit* _caster;
|
||||
uint32 _spellId;
|
||||
uint64 _otherTransport;
|
||||
ObjectGuid _otherTransport;
|
||||
};
|
||||
|
||||
class npc_gunship : public CreatureScript
|
||||
@@ -586,7 +591,7 @@ public:
|
||||
}
|
||||
|
||||
uint32 cannonEntry = _teamIdInInstance == TEAM_HORDE ? NPC_HORDE_GUNSHIP_CANNON : NPC_ALLIANCE_GUNSHIP_CANNON;
|
||||
if (GameObject* go = _instance->instance->GetGameObject(_instance->GetData64(DATA_ICECROWN_GUNSHIP_BATTLE)))
|
||||
if (GameObject* go = _instance->instance->GetGameObject(_instance->GetGuidData(DATA_ICECROWN_GUNSHIP_BATTLE)))
|
||||
if (MotionTransport* t = go->ToMotionTransport())
|
||||
{
|
||||
Transport::PassengerSet const& passengers = t->GetStaticPassengers();
|
||||
@@ -598,7 +603,7 @@ public:
|
||||
cannon->CastSpell(cannon, SPELL_EJECT_ALL_PASSENGERS, true);
|
||||
|
||||
WorldPacket data(SMSG_PLAYER_VEHICLE_DATA, cannon->GetPackGUID().size() + 4);
|
||||
data.append(cannon->GetPackGUID());
|
||||
data << cannon->GetPackGUID();
|
||||
data << uint32(0);
|
||||
cannon->SendMessageToSet(&data, true);
|
||||
|
||||
@@ -618,8 +623,8 @@ public:
|
||||
|
||||
if (isVictory)
|
||||
{
|
||||
if (GameObject* go = HashMapHolder<GameObject>::Find(_instance->GetData64(DATA_ICECROWN_GUNSHIP_BATTLE)))
|
||||
if (MotionTransport* otherTransport = go->ToMotionTransport())
|
||||
if (Transport * transport = _instance->instance->GetTransport(_instance->GetGuidData(DATA_ICECROWN_GUNSHIP_BATTLE)))
|
||||
if (MotionTransport* otherTransport = transport->ToMotionTransport())
|
||||
otherTransport->EnableMovement(true);
|
||||
|
||||
me->GetTransport()->ToMotionTransport()->EnableMovement(true);
|
||||
@@ -632,7 +637,7 @@ public:
|
||||
}
|
||||
|
||||
for (uint8 i = 0; i < 2; ++i)
|
||||
if (GameObject* go = _instance->instance->GetGameObject(_instance->GetData64(i == 0 ? DATA_ICECROWN_GUNSHIP_BATTLE : DATA_ENEMY_GUNSHIP)))
|
||||
if (GameObject* go = _instance->instance->GetGameObject(_instance->GetGuidData(i == 0 ? DATA_ICECROWN_GUNSHIP_BATTLE : DATA_ENEMY_GUNSHIP)))
|
||||
if (MotionTransport* t = go->ToMotionTransport())
|
||||
{
|
||||
Transport::PassengerSet const& passengers = t->GetPassengers();
|
||||
@@ -649,16 +654,16 @@ public:
|
||||
else
|
||||
{
|
||||
uint32 teleportSpellId = _teamIdInInstance == TEAM_HORDE ? SPELL_TELEPORT_PLAYERS_ON_RESET_H : SPELL_TELEPORT_PLAYERS_ON_RESET_A;
|
||||
me->m_Events.AddEvent(new ResetEncounterEvent(me, teleportSpellId, _instance->GetData64(DATA_ENEMY_GUNSHIP)), me->m_Events.CalculateTime(8000));
|
||||
me->m_Events.AddEvent(new ResetEncounterEvent(me, teleportSpellId, _instance->GetGuidData(DATA_ENEMY_GUNSHIP)), me->m_Events.CalculateTime(8000));
|
||||
}
|
||||
}
|
||||
|
||||
void SetGUID(uint64 guid, int32 id/* = 0*/) override
|
||||
void SetGUID(ObjectGuid guid, int32 id/* = 0*/) override
|
||||
{
|
||||
if (id != ACTION_SHIP_VISITS_ENEMY && id != ACTION_SHIP_VISITS_SELF)
|
||||
return;
|
||||
|
||||
std::map<uint64, uint32>::iterator itr = _shipVisits.find(guid);
|
||||
std::map<ObjectGuid, uint32>::iterator itr = _shipVisits.find(guid);
|
||||
if (itr == _shipVisits.end())
|
||||
{
|
||||
if (id == ACTION_SHIP_VISITS_ENEMY)
|
||||
@@ -693,7 +698,7 @@ public:
|
||||
if (id != ACTION_SHIP_VISITS_ENEMY)
|
||||
return 0;
|
||||
|
||||
for (std::map<uint64, uint32>::const_iterator itr = _shipVisits.begin(); itr != _shipVisits.end(); ++itr)
|
||||
for (std::map<ObjectGuid, uint32>::const_iterator itr = _shipVisits.begin(); itr != _shipVisits.end(); ++itr)
|
||||
if (itr->second == 0)
|
||||
return 0;
|
||||
|
||||
@@ -703,7 +708,7 @@ public:
|
||||
private:
|
||||
InstanceScript* _instance;
|
||||
TeamId _teamIdInInstance;
|
||||
std::map<uint64, uint32> _shipVisits;
|
||||
std::map<ObjectGuid, uint32> _shipVisits;
|
||||
bool _died;
|
||||
bool _summonedFirstMage;
|
||||
};
|
||||
@@ -951,8 +956,8 @@ public:
|
||||
me->SummonCreature(NPC_TELEPORT_PORTAL, x, y, z, o, TEMPSUMMON_TIMED_DESPAWN, 21000);
|
||||
}
|
||||
|
||||
if (GameObject* go = HashMapHolder<GameObject>::Find(_instance->GetData64(DATA_ICECROWN_GUNSHIP_BATTLE)))
|
||||
if (MotionTransport* skybreaker = go->ToMotionTransport())
|
||||
if (Transport* transport = _instance->instance->GetTransport(_instance->GetGuidData(DATA_ICECROWN_GUNSHIP_BATTLE)))
|
||||
if (MotionTransport* skybreaker = transport->ToMotionTransport())
|
||||
{
|
||||
float x, y, z, o;
|
||||
SkybreakerTeleportExit.GetPosition(x, y, z, o);
|
||||
@@ -1290,8 +1295,8 @@ public:
|
||||
me->SummonCreature(NPC_TELEPORT_PORTAL, x, y, z, o, TEMPSUMMON_TIMED_DESPAWN, 21000);
|
||||
}
|
||||
|
||||
if (GameObject* go = HashMapHolder<GameObject>::Find(_instance->GetData64(DATA_ICECROWN_GUNSHIP_BATTLE)))
|
||||
if (MotionTransport* orgrimsHammer = go->ToMotionTransport())
|
||||
if (Transport* transport = _instance->instance->GetTransport(_instance->GetGuidData(DATA_ICECROWN_GUNSHIP_BATTLE)))
|
||||
if (MotionTransport* orgrimsHammer = transport->ToMotionTransport())
|
||||
{
|
||||
float x, y, z, o;
|
||||
OrgrimsHammerTeleportExit.GetPosition(x, y, z, o);
|
||||
@@ -1570,8 +1575,8 @@ struct npc_gunship_boarding_addAI : public ScriptedAI
|
||||
if (!myTransport)
|
||||
return;
|
||||
|
||||
if (GameObject* go = HashMapHolder<GameObject>::Find(Instance->GetData64(DATA_ICECROWN_GUNSHIP_BATTLE)))
|
||||
if (Transport* destTransport = go->ToTransport())
|
||||
if (Transport* transport = Instance->instance->GetTransport(Instance->GetGuidData(DATA_ICECROWN_GUNSHIP_BATTLE)))
|
||||
if (Transport* destTransport = transport->ToTransport())
|
||||
destTransport->CalculatePassengerPosition(x, y, z, &o);
|
||||
|
||||
float angle = frand(0, M_PI * 2.0f);
|
||||
@@ -2119,7 +2124,7 @@ public:
|
||||
void SelectTransport(WorldObject*& target)
|
||||
{
|
||||
if (InstanceScript* instance = target->GetInstanceScript())
|
||||
target = HashMapHolder<GameObject>::Find(instance->GetData64(DATA_ICECROWN_GUNSHIP_BATTLE));
|
||||
target = instance->instance->GetTransport(instance->GetGuidData(DATA_ICECROWN_GUNSHIP_BATTLE));
|
||||
}
|
||||
|
||||
void RelocateDest(SpellEffIndex /*effIndex*/)
|
||||
@@ -2225,7 +2230,7 @@ public:
|
||||
|
||||
bool operator()(WorldObject* unit)
|
||||
{
|
||||
return unit->GetTransGUID() != _inst->GetData64(DATA_ENEMY_GUNSHIP);
|
||||
return unit->GetTransGUID() != _inst->GetGuidData(DATA_ENEMY_GUNSHIP);
|
||||
}
|
||||
|
||||
private:
|
||||
@@ -2316,7 +2321,7 @@ public:
|
||||
if (Player* player = passenger->ToPlayer())
|
||||
{
|
||||
WorldPacket data(SMSG_CLIENT_CONTROL_UPDATE, GetUnitOwner()->GetPackGUID().size() + 1);
|
||||
data.append(GetUnitOwner()->GetPackGUID());
|
||||
data << GetUnitOwner()->GetPackGUID();
|
||||
data << uint8(value);
|
||||
player->GetSession()->SendPacket(&data);
|
||||
}
|
||||
|
||||
@@ -230,13 +230,13 @@ public:
|
||||
|
||||
struct boss_lady_deathwhisperAI : public BossAI
|
||||
{
|
||||
boss_lady_deathwhisperAI(Creature* creature) : BossAI(creature, DATA_LADY_DEATHWHISPER), _introDone(false), _darnavanGUID(0) { }
|
||||
boss_lady_deathwhisperAI(Creature* creature) : BossAI(creature, DATA_LADY_DEATHWHISPER), _introDone(false) { }
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
if (Creature* darnavan = ObjectAccessor::GetCreature(*me, _darnavanGUID))
|
||||
darnavan->DespawnOrUnsummon();
|
||||
_darnavanGUID = 0;
|
||||
_darnavanGUID.Clear();
|
||||
_waveCounter = 0;
|
||||
_Reset();
|
||||
me->SetPower(POWER_MANA, me->GetMaxPower(POWER_MANA));
|
||||
@@ -369,8 +369,8 @@ public:
|
||||
{
|
||||
// shouldn't be casted on any victim of summoned mobs
|
||||
bool valid = true;
|
||||
for (std::list<uint64>::const_iterator itr = summons.begin(); itr != summons.end(); ++itr)
|
||||
if (Creature* c = ObjectAccessor::GetCreature(*me, (*itr)))
|
||||
for (ObjectGuid const guid : summons)
|
||||
if (Creature* c = ObjectAccessor::GetCreature(*me, guid))
|
||||
if (c->IsAlive() && c->GetVictim() && c->GetVictim()->GetGUID() == plr->GetGUID())
|
||||
{
|
||||
valid = false;
|
||||
@@ -516,10 +516,10 @@ public:
|
||||
for (GroupReference* itr = group->GetFirstMember(); itr != nullptr; itr = itr->next())
|
||||
if (Player* member = itr->GetSource())
|
||||
if (member->IsInMap(owner))
|
||||
member->KilledMonsterCredit(NPC_DARNAVAN_CREDIT, 0);
|
||||
member->KilledMonsterCredit(NPC_DARNAVAN_CREDIT);
|
||||
}
|
||||
else
|
||||
owner->KilledMonsterCredit(NPC_DARNAVAN_CREDIT, 0);
|
||||
owner->KilledMonsterCredit(NPC_DARNAVAN_CREDIT);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -642,7 +642,7 @@ public:
|
||||
|
||||
private:
|
||||
bool _introDone;
|
||||
uint64 _darnavanGUID;
|
||||
ObjectGuid _darnavanGUID;
|
||||
uint32 _waveCounter;
|
||||
};
|
||||
|
||||
@@ -739,7 +739,7 @@ public:
|
||||
DoZoneInCombat(me);
|
||||
me->CastSpell(me, SPELL_FANATIC_S_DETERMINATION);
|
||||
|
||||
if (Creature* ladyDeathwhisper = ObjectAccessor::GetCreature(*me, _instance->GetData64(DATA_LADY_DEATHWHISPER)))
|
||||
if (Creature* ladyDeathwhisper = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_LADY_DEATHWHISPER)))
|
||||
ladyDeathwhisper->AI()->Talk(SAY_ANIMATE_DEAD);
|
||||
break;
|
||||
case EVENT_SPELL_CULTIST_DARK_MARTYRDOM:
|
||||
@@ -860,7 +860,7 @@ public:
|
||||
DoZoneInCombat(me);
|
||||
me->CastSpell(me, SPELL_ADHERENT_S_DETERMINATION);
|
||||
|
||||
if (Creature* ladyDeathwhisper = ObjectAccessor::GetCreature(*me, _instance->GetData64(DATA_LADY_DEATHWHISPER)))
|
||||
if (Creature* ladyDeathwhisper = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_LADY_DEATHWHISPER)))
|
||||
ladyDeathwhisper->AI()->Talk(SAY_ANIMATE_DEAD);
|
||||
break;
|
||||
case EVENT_SPELL_CULTIST_DARK_MARTYRDOM:
|
||||
@@ -898,11 +898,11 @@ public:
|
||||
{
|
||||
me->SetControlled(true, UNIT_STATE_ROOT);
|
||||
unroot_timer = 500;
|
||||
targetGUID = 0;
|
||||
targetGUID.Clear();
|
||||
}
|
||||
|
||||
uint16 unroot_timer;
|
||||
uint64 targetGUID;
|
||||
ObjectGuid targetGUID;
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
@@ -1140,7 +1140,7 @@ public:
|
||||
if (InstanceScript* instance = player->GetInstanceScript())
|
||||
if (instance->GetBossState(DATA_LADY_DEATHWHISPER) != DONE)
|
||||
if (!player->IsGameMaster())
|
||||
if (Creature* ladyDeathwhisper = ObjectAccessor::GetCreature(*player, instance->GetData64(DATA_LADY_DEATHWHISPER)))
|
||||
if (Creature* ladyDeathwhisper = ObjectAccessor::GetCreature(*player, instance->GetGuidData(DATA_LADY_DEATHWHISPER)))
|
||||
ladyDeathwhisper->AI()->DoAction(ACTION_START_INTRO);
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -98,7 +98,7 @@ public:
|
||||
|
||||
bool _introDone;
|
||||
bool _boneSlice;
|
||||
uint64 _lastBoneSliceTargets[3];
|
||||
ObjectGuid _lastBoneSliceTargets[3];
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
@@ -111,7 +111,9 @@ public:
|
||||
events.ScheduleEvent(EVENT_ENRAGE, 600000);
|
||||
|
||||
_boneSlice = false;
|
||||
memset(_lastBoneSliceTargets, 0, 3 * sizeof(uint64));
|
||||
|
||||
for (uint8 i = 0; i < 3; ++i)
|
||||
_lastBoneSliceTargets[i].Clear();
|
||||
|
||||
instance->SetData(DATA_BONED_ACHIEVEMENT, uint32(true));
|
||||
}
|
||||
@@ -135,12 +137,12 @@ public:
|
||||
}
|
||||
}
|
||||
|
||||
uint64 GetGUID(int32 id) const override
|
||||
ObjectGuid GetGUID(int32 id) const override
|
||||
{
|
||||
if (id >= 0 && id <= 2)
|
||||
return _lastBoneSliceTargets[id];
|
||||
|
||||
return (uint64)0;
|
||||
return ObjectGuid::Empty;
|
||||
}
|
||||
|
||||
void UpdateAI(uint32 diff) override
|
||||
@@ -243,7 +245,10 @@ public:
|
||||
DoCastVictim(SPELL_BONE_SLICE);
|
||||
|
||||
if (_boneSlice && me->isAttackReady() && me->GetVictim() && !me->HasUnitState(UNIT_STATE_CASTING) && me->IsWithinMeleeRange(me->GetVictim()))
|
||||
memset(_lastBoneSliceTargets, 0, 3 * sizeof(uint64));
|
||||
{
|
||||
for (uint8 i = 0; i < 3; ++i)
|
||||
_lastBoneSliceTargets[i].Clear();
|
||||
}
|
||||
|
||||
DoMeleeAttackIfReady();
|
||||
}
|
||||
@@ -406,8 +411,8 @@ public:
|
||||
if (u->GetEntry() == NPC_BONE_SPIKE && u->GetTypeId() == TYPEID_UNIT)
|
||||
u->ToCreature()->AI()->DoAction(-1337);
|
||||
|
||||
uint64 petGUID = summoner->GetPetGUID();
|
||||
summoner->SetPetGUID(0);
|
||||
ObjectGuid petGUID = summoner->GetPetGUID();
|
||||
summoner->SetPetGUID(ObjectGuid::Empty);
|
||||
me->CastSpell(summoner, SPELL_IMPALED, true);
|
||||
summoner->CastSpell(me, SPELL_RIDE_VEHICLE, true);
|
||||
//summoner->ClearUnitState(UNIT_STATE_ONVEHICLE);
|
||||
|
||||
@@ -140,7 +140,7 @@ class AbominationDespawner
|
||||
public:
|
||||
explicit AbominationDespawner(Unit* owner) : _owner(owner) { }
|
||||
|
||||
bool operator()(uint64 guid)
|
||||
bool operator()(ObjectGuid guid)
|
||||
{
|
||||
if (Unit* summon = ObjectAccessor::GetUnit(*_owner, guid))
|
||||
{
|
||||
@@ -411,7 +411,7 @@ public:
|
||||
switch (id)
|
||||
{
|
||||
case POINT_FESTERGUT:
|
||||
if (Creature* c = instance->instance->GetCreature(instance->GetData64(DATA_FESTERGUT)))
|
||||
if (Creature* c = instance->instance->GetCreature(instance->GetGuidData(DATA_FESTERGUT)))
|
||||
{
|
||||
if (c->IsInCombat())
|
||||
{
|
||||
@@ -427,7 +427,7 @@ public:
|
||||
}
|
||||
break;
|
||||
case POINT_ROTFACE:
|
||||
if (Creature* c = instance->instance->GetCreature(instance->GetData64(DATA_ROTFACE)))
|
||||
if (Creature* c = instance->instance->GetCreature(instance->GetGuidData(DATA_ROTFACE)))
|
||||
{
|
||||
if (c->IsInCombat())
|
||||
{
|
||||
@@ -730,13 +730,12 @@ public:
|
||||
npc_putricide_oozeAI(Creature* creature, uint32 hitTargetSpellId) : ScriptedAI(creature),
|
||||
_hitTargetSpellId(hitTargetSpellId), _newTargetSelectTimer(0)
|
||||
{
|
||||
targetGUID = 0;
|
||||
me->SetReactState(REACT_PASSIVE);
|
||||
}
|
||||
|
||||
uint64 targetGUID;
|
||||
ObjectGuid targetGUID;
|
||||
|
||||
void SetGUID(uint64 guid, int32 type) override
|
||||
void SetGUID(ObjectGuid guid, int32 type) override
|
||||
{
|
||||
if (type == -1)
|
||||
targetGUID = guid;
|
||||
@@ -745,7 +744,7 @@ public:
|
||||
void IsSummonedBy(Unit* /*summoner*/) override
|
||||
{
|
||||
if (InstanceScript* instance = me->GetInstanceScript())
|
||||
if (Creature* professor = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_PROFESSOR_PUTRICIDE)))
|
||||
if (Creature* professor = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_PROFESSOR_PUTRICIDE)))
|
||||
{
|
||||
if (!professor->IsInCombat())
|
||||
me->DespawnOrUnsummon(1);
|
||||
@@ -756,7 +755,7 @@ public:
|
||||
|
||||
void SelectNewTarget()
|
||||
{
|
||||
targetGUID = 0;
|
||||
targetGUID.Clear();
|
||||
me->InterruptNonMeleeSpells(true);
|
||||
me->AttackStop();
|
||||
me->GetMotionMaster()->Clear();
|
||||
@@ -1274,7 +1273,7 @@ public:
|
||||
|
||||
if (!GetHitUnit()->HasAura(plagueId))
|
||||
{
|
||||
if (Creature* professor = ObjectAccessor::GetCreature(*GetCaster(), instance->GetData64(DATA_PROFESSOR_PUTRICIDE)))
|
||||
if (Creature* professor = ObjectAccessor::GetCreature(*GetCaster(), instance->GetGuidData(DATA_PROFESSOR_PUTRICIDE)))
|
||||
{
|
||||
if (Aura* oldPlague = GetCaster()->GetAura(plagueId, professor->GetGUID()))
|
||||
{
|
||||
@@ -1414,7 +1413,7 @@ public:
|
||||
if (!instance)
|
||||
return SPELL_FAILED_CANT_DO_THAT_RIGHT_NOW;
|
||||
|
||||
Creature* professor = ObjectAccessor::GetCreature(*GetExplTargetUnit(), instance->GetData64(DATA_PROFESSOR_PUTRICIDE));
|
||||
Creature* professor = ObjectAccessor::GetCreature(*GetExplTargetUnit(), instance->GetGuidData(DATA_PROFESSOR_PUTRICIDE));
|
||||
if (!professor)
|
||||
return SPELL_FAILED_CANT_DO_THAT_RIGHT_NOW;
|
||||
|
||||
@@ -1508,7 +1507,7 @@ public:
|
||||
if (!instance)
|
||||
return;
|
||||
|
||||
Creature* putricide = ObjectAccessor::GetCreature(*caster, instance->GetData64(DATA_PROFESSOR_PUTRICIDE));
|
||||
Creature* putricide = ObjectAccessor::GetCreature(*caster, instance->GetGuidData(DATA_PROFESSOR_PUTRICIDE));
|
||||
if (!putricide)
|
||||
return;
|
||||
|
||||
|
||||
@@ -118,13 +118,17 @@ public:
|
||||
}
|
||||
|
||||
uint32 infectionCooldown;
|
||||
uint64 _oozeFloodDummyGUIDs[4][2];
|
||||
ObjectGuid _oozeFloodDummyGUIDs[4][2];
|
||||
uint8 _oozeFloodStage;
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
infectionCooldown = 14000;
|
||||
memset(&_oozeFloodDummyGUIDs, 0, sizeof(_oozeFloodDummyGUIDs));
|
||||
|
||||
for (uint8 i = 0; i < 4; ++i)
|
||||
for (uint8 j = 0; j < 2; ++j)
|
||||
_oozeFloodDummyGUIDs[i][j].Clear();
|
||||
|
||||
_oozeFloodStage = 0;
|
||||
_Reset();
|
||||
events.Reset();
|
||||
@@ -152,7 +156,7 @@ public:
|
||||
Talk(SAY_AGGRO);
|
||||
DoZoneInCombat();
|
||||
|
||||
if (Creature* professor = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_PROFESSOR_PUTRICIDE)))
|
||||
if (Creature* professor = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_PROFESSOR_PUTRICIDE)))
|
||||
professor->AI()->DoAction(ACTION_ROTFACE_COMBAT);
|
||||
|
||||
instance->SetData(DATA_OOZE_DANCE_ACHIEVEMENT, uint32(true)); // reset
|
||||
@@ -178,7 +182,7 @@ public:
|
||||
instance->DoRemoveAurasDueToSpellOnPlayers(MUTATED_INFECTION);
|
||||
_JustDied();
|
||||
Talk(SAY_DEATH);
|
||||
if (Creature* professor = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_PROFESSOR_PUTRICIDE)))
|
||||
if (Creature* professor = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_PROFESSOR_PUTRICIDE)))
|
||||
professor->AI()->DoAction(ACTION_ROTFACE_DEATH);
|
||||
}
|
||||
|
||||
@@ -207,7 +211,7 @@ public:
|
||||
me->SetControlled(false, UNIT_STATE_ROOT);
|
||||
me->DisableRotate(false);
|
||||
ScriptedAI::EnterEvadeMode();
|
||||
if (Creature* professor = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_PROFESSOR_PUTRICIDE)))
|
||||
if (Creature* professor = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_PROFESSOR_PUTRICIDE)))
|
||||
professor->AI()->EnterEvadeMode();
|
||||
}
|
||||
|
||||
@@ -285,7 +289,7 @@ public:
|
||||
events.ScheduleEvent(EVENT_MUTATED_INFECTION, infectionCooldown);
|
||||
break;
|
||||
case EVENT_ROTFACE_OOZE_FLOOD:
|
||||
if (Creature* professor = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_PROFESSOR_PUTRICIDE)))
|
||||
if (Creature* professor = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_PROFESSOR_PUTRICIDE)))
|
||||
{
|
||||
professor->AI()->Talk(SAY_ROTFACE_OOZE_FLOOD);
|
||||
me->CastSpell((Unit*)nullptr, oozeFloodSpells[_oozeFloodStage], true);
|
||||
@@ -304,7 +308,7 @@ public:
|
||||
minDist = -5.0f;
|
||||
|
||||
if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, minDist, true))
|
||||
if (Creature* professor = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_PROFESSOR_PUTRICIDE)))
|
||||
if (Creature* professor = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_PROFESSOR_PUTRICIDE)))
|
||||
professor->CastSpell(target, SPELL_VILE_GAS_H, true); // triggered, to skip LoS check
|
||||
}
|
||||
events.ScheduleEvent(EVENT_ROTFACE_VILE_GAS, urand(15000, 20000));
|
||||
@@ -333,7 +337,7 @@ public:
|
||||
npc_little_oozeAI(Creature* creature) : ScriptedAI(creature), instance(creature->GetInstanceScript())
|
||||
{
|
||||
firstUpdate = true;
|
||||
if (Creature* rotface = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_ROTFACE)))
|
||||
if (Creature* rotface = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_ROTFACE)))
|
||||
rotface->AI()->JustSummoned(me);
|
||||
}
|
||||
|
||||
@@ -352,7 +356,7 @@ public:
|
||||
|
||||
void JustDied(Unit* /*killer*/) override
|
||||
{
|
||||
if (Creature* rotface = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_ROTFACE)))
|
||||
if (Creature* rotface = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_ROTFACE)))
|
||||
rotface->AI()->SummonedCreatureDespawn(me);
|
||||
me->DespawnOrUnsummon(0);
|
||||
}
|
||||
@@ -412,7 +416,7 @@ public:
|
||||
npc_big_oozeAI(Creature* creature) : ScriptedAI(creature), instance(creature->GetInstanceScript())
|
||||
{
|
||||
firstUpdate = true;
|
||||
if (Creature* rotface = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_ROTFACE)))
|
||||
if (Creature* rotface = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_ROTFACE)))
|
||||
rotface->AI()->JustSummoned(me);
|
||||
}
|
||||
|
||||
@@ -428,7 +432,7 @@ public:
|
||||
|
||||
void JustDied(Unit* /*killer*/) override
|
||||
{
|
||||
if (Creature* rotface = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_ROTFACE)))
|
||||
if (Creature* rotface = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_ROTFACE)))
|
||||
rotface->AI()->SummonedCreatureDespawn(me);
|
||||
me->DespawnOrUnsummon();
|
||||
}
|
||||
@@ -650,7 +654,7 @@ public:
|
||||
GetCaster()->RemoveAurasDueToSpell(SPELL_LARGE_OOZE_BUFF_COMBINE);
|
||||
GetCaster()->RemoveAurasDueToSpell(SPELL_LARGE_OOZE_COMBINE);
|
||||
if (InstanceScript* instance = GetCaster()->GetInstanceScript())
|
||||
if (Creature* rotface = ObjectAccessor::GetCreature(*GetCaster(), instance->GetData64(DATA_ROTFACE)))
|
||||
if (Creature* rotface = ObjectAccessor::GetCreature(*GetCaster(), instance->GetGuidData(DATA_ROTFACE)))
|
||||
if (rotface->IsAlive())
|
||||
{
|
||||
if (GetCaster()->GetTypeId() == TYPEID_UNIT)
|
||||
@@ -713,7 +717,7 @@ public:
|
||||
GetCaster()->RemoveAurasDueToSpell(SPELL_LARGE_OOZE_BUFF_COMBINE);
|
||||
GetCaster()->RemoveAurasDueToSpell(SPELL_LARGE_OOZE_COMBINE);
|
||||
if (InstanceScript* instance = GetCaster()->GetInstanceScript())
|
||||
if (Creature* rotface = ObjectAccessor::GetCreature(*GetCaster(), instance->GetData64(DATA_ROTFACE)))
|
||||
if (Creature* rotface = ObjectAccessor::GetCreature(*GetCaster(), instance->GetGuidData(DATA_ROTFACE)))
|
||||
if (rotface->IsAlive())
|
||||
{
|
||||
if (GetCaster()->GetTypeId() == TYPEID_UNIT)
|
||||
@@ -804,7 +808,7 @@ public:
|
||||
GetExplTargetDest()->GetPosition(x, y, z);
|
||||
// let Rotface handle the cast - caster dies before this executes
|
||||
if (InstanceScript* script = GetCaster()->GetInstanceScript())
|
||||
if (Creature* rotface = script->instance->GetCreature(script->GetData64(DATA_ROTFACE)))
|
||||
if (Creature* rotface = script->instance->GetCreature(script->GetGuidData(DATA_ROTFACE)))
|
||||
rotface->CastSpell(x, y, z, triggered_spell_id, true/*, nullptr, nullptr, GetCaster()->GetGUID()*/); // caster not available on clientside, no log in such case
|
||||
}
|
||||
|
||||
@@ -893,7 +897,7 @@ public:
|
||||
{
|
||||
summons.DespawnAll();
|
||||
if (InstanceScript* _instance = me->GetInstanceScript())
|
||||
if (Creature* rotface = ObjectAccessor::GetCreature(*me, _instance->GetData64(DATA_ROTFACE)))
|
||||
if (Creature* rotface = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_ROTFACE)))
|
||||
if (rotface->IsAlive())
|
||||
rotface->AI()->Talk(SAY_PRECIOUS_DIES);
|
||||
}
|
||||
|
||||
@@ -174,7 +174,7 @@ private:
|
||||
class FrostBombExplosion : public BasicEvent
|
||||
{
|
||||
public:
|
||||
FrostBombExplosion(Creature* owner, uint64 sindragosaGUID) : _owner(owner), _sindragosaGUID(sindragosaGUID) { }
|
||||
FrostBombExplosion(Creature* owner, ObjectGuid sindragosaGUID) : _owner(owner), _sindragosaGUID(sindragosaGUID) { }
|
||||
|
||||
bool Execute(uint64 /*eventTime*/, uint32 /*updateTime*/) override
|
||||
{
|
||||
@@ -185,13 +185,13 @@ public:
|
||||
|
||||
private:
|
||||
Creature* _owner;
|
||||
uint64 _sindragosaGUID;
|
||||
ObjectGuid _sindragosaGUID;
|
||||
};
|
||||
|
||||
class IceTombSummonEvent : public BasicEvent
|
||||
{
|
||||
public:
|
||||
IceTombSummonEvent(Unit* owner, uint64 sindragosaGUID) : _owner(owner), _sindragosaGUID(sindragosaGUID) { }
|
||||
IceTombSummonEvent(Unit* owner, ObjectGuid sindragosaGUID) : _owner(owner), _sindragosaGUID(sindragosaGUID) { }
|
||||
|
||||
bool Execute(uint64 /*eventTime*/, uint32 /*updateTime*/) override
|
||||
{
|
||||
@@ -222,7 +222,7 @@ public:
|
||||
|
||||
private:
|
||||
Unit* _owner;
|
||||
uint64 _sindragosaGUID;
|
||||
ObjectGuid _sindragosaGUID;
|
||||
};
|
||||
|
||||
struct LastPhaseIceTombTargetSelector : public acore::unary_function<Unit*, bool>
|
||||
@@ -712,16 +712,15 @@ public:
|
||||
npc_ice_tombAI(Creature* creature) : NullCreatureAI(creature)
|
||||
{
|
||||
me->SetReactState(REACT_PASSIVE);
|
||||
_trappedPlayerGUID = 0;
|
||||
_existenceCheckTimer = 1000;
|
||||
_asphyxiationTimer = 22500;
|
||||
}
|
||||
|
||||
uint64 _trappedPlayerGUID;
|
||||
ObjectGuid _trappedPlayerGUID;
|
||||
uint32 _existenceCheckTimer;
|
||||
uint16 _asphyxiationTimer;
|
||||
|
||||
void SetGUID(uint64 guid, int32 type) override
|
||||
void SetGUID(ObjectGuid guid, int32 type) override
|
||||
{
|
||||
if (type == DATA_TRAPPED_PLAYER)
|
||||
_trappedPlayerGUID = guid;
|
||||
@@ -739,7 +738,7 @@ public:
|
||||
|
||||
if (Player* player = ObjectAccessor::GetPlayer(*me, _trappedPlayerGUID))
|
||||
{
|
||||
_trappedPlayerGUID = 0;
|
||||
_trappedPlayerGUID.Clear();
|
||||
player->RemoveAurasDueToSpell(SPELL_ICE_TOMB_DAMAGE);
|
||||
player->RemoveAurasDueToSpell(SPELL_ASPHYXIATION);
|
||||
player->RemoveAurasDueToSpell(SPELL_ICE_TOMB_UNTARGETABLE);
|
||||
@@ -1273,7 +1272,7 @@ public:
|
||||
|
||||
// for standard creatures check full LOS
|
||||
if (Creature* c = unit->ToCreature())
|
||||
if (!c->IsPet() && c->GetDBTableGUIDLow())
|
||||
if (!c->IsPet() && c->GetSpawnId())
|
||||
return !_caster->IsWithinLOSInMap(unit);
|
||||
|
||||
// for players and pets check only dynamic los (ice block gameobjects)
|
||||
@@ -1375,7 +1374,7 @@ public:
|
||||
{
|
||||
if (!me->isDead())
|
||||
{
|
||||
_instance->SetData(DATA_SINDRAGOSA_FROSTWYRMS, me->GetDBTableGUIDLow()); // this cannot be in Reset because reset also happens on evade
|
||||
_instance->SetData(DATA_SINDRAGOSA_FROSTWYRMS, me->GetSpawnId()); // this cannot be in Reset because reset also happens on evade
|
||||
Reset();
|
||||
}
|
||||
}
|
||||
@@ -1408,7 +1407,7 @@ public:
|
||||
void JustRespawned() override
|
||||
{
|
||||
ScriptedAI::JustRespawned();
|
||||
_instance->SetData(DATA_SINDRAGOSA_FROSTWYRMS, me->GetDBTableGUIDLow()); // this cannot be in Reset because reset also happens on evade
|
||||
_instance->SetData(DATA_SINDRAGOSA_FROSTWYRMS, me->GetSpawnId()); // this cannot be in Reset because reset also happens on evade
|
||||
}
|
||||
|
||||
void JustDied(Unit* /*killer*/) override
|
||||
@@ -1509,7 +1508,7 @@ public:
|
||||
{
|
||||
if (!me->isDead())
|
||||
{
|
||||
_instance->SetData(DATA_SINDRAGOSA_FROSTWYRMS, me->GetDBTableGUIDLow()); // this cannot be in Reset because reset also happens on evade
|
||||
_instance->SetData(DATA_SINDRAGOSA_FROSTWYRMS, me->GetSpawnId()); // this cannot be in Reset because reset also happens on evade
|
||||
Reset();
|
||||
}
|
||||
}
|
||||
@@ -1542,7 +1541,7 @@ public:
|
||||
void JustRespawned() override
|
||||
{
|
||||
ScriptedAI::JustRespawned();
|
||||
_instance->SetData(DATA_SINDRAGOSA_FROSTWYRMS, me->GetDBTableGUIDLow()); // this cannot be in Reset because reset also happens on evade
|
||||
_instance->SetData(DATA_SINDRAGOSA_FROSTWYRMS, me->GetSpawnId()); // this cannot be in Reset because reset also happens on evade
|
||||
}
|
||||
|
||||
void JustDied(Unit* /*killer*/) override
|
||||
@@ -1729,14 +1728,14 @@ public:
|
||||
if (InstanceScript* instance = player->GetInstanceScript())
|
||||
{
|
||||
if (!instance->GetData(DATA_SPINESTALKER))
|
||||
if (Creature* spinestalker = ObjectAccessor::GetCreature(*player, instance->GetData64(DATA_SPINESTALKER)))
|
||||
if (Creature* spinestalker = ObjectAccessor::GetCreature(*player, instance->GetGuidData(DATA_SPINESTALKER)))
|
||||
spinestalker->AI()->DoAction(ACTION_START_FROSTWYRM);
|
||||
|
||||
if (!instance->GetData(DATA_RIMEFANG))
|
||||
if (Creature* rimefang = ObjectAccessor::GetCreature(*player, instance->GetData64(DATA_RIMEFANG)))
|
||||
if (Creature* rimefang = ObjectAccessor::GetCreature(*player, instance->GetGuidData(DATA_RIMEFANG)))
|
||||
rimefang->AI()->DoAction(ACTION_START_FROSTWYRM);
|
||||
|
||||
if (!instance->GetData(DATA_SINDRAGOSA_FROSTWYRMS) && !instance->GetData64(DATA_SINDRAGOSA) && instance->GetBossState(DATA_SINDRAGOSA) != DONE)
|
||||
if (!instance->GetData(DATA_SINDRAGOSA_FROSTWYRMS) && !instance->GetGuidData(DATA_SINDRAGOSA) && instance->GetBossState(DATA_SINDRAGOSA) != DONE)
|
||||
{
|
||||
if (instance->GetData(DATA_HAS_LIMITED_ATTEMPTS) && !instance->GetData(DATA_HEROIC_ATTEMPTS))
|
||||
return true;
|
||||
@@ -1771,7 +1770,7 @@ public:
|
||||
if (!me->isDead())
|
||||
{
|
||||
if (me->GetEntry() == NPC_FROSTWING_WHELP)
|
||||
_instance->SetData(_frostwyrmId, me->GetDBTableGUIDLow()); // this cannot be in Reset because reset also happens on evade
|
||||
_instance->SetData(_frostwyrmId, me->GetSpawnId()); // this cannot be in Reset because reset also happens on evade
|
||||
Reset();
|
||||
}
|
||||
}
|
||||
@@ -1814,7 +1813,7 @@ public:
|
||||
|
||||
// Increase add count
|
||||
if (me->GetEntry() == NPC_FROSTWING_WHELP)
|
||||
_instance->SetData(_frostwyrmId, me->GetDBTableGUIDLow()); // this cannot be in Reset because reset also happens on evade
|
||||
_instance->SetData(_frostwyrmId, me->GetSpawnId()); // this cannot be in Reset because reset also happens on evade
|
||||
}
|
||||
|
||||
void SetData(uint32 type, uint32 data) override
|
||||
|
||||
@@ -729,7 +729,7 @@ public:
|
||||
me->CastSpell((Unit*)nullptr, SPELL_SUMMON_BROKEN_FROSTMOURNE, true);
|
||||
me->CastSpell((Unit*)nullptr, SPELL_SUMMON_BROKEN_FROSTMOURNE_2, false);
|
||||
SetEquipmentSlots(false, EQUIP_BROKEN_FROSTMOURNE);
|
||||
if (Creature* tirion = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_HIGHLORD_TIRION_FORDRING)))
|
||||
if (Creature* tirion = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_HIGHLORD_TIRION_FORDRING)))
|
||||
tirion->AI()->DoAction(ACTION_BREAK_FROSTMOURNE);
|
||||
break;
|
||||
case ACTION_TELEPORT_BACK:
|
||||
@@ -791,7 +791,7 @@ public:
|
||||
me->CastSpell((Unit*)nullptr, SPELL_FURY_OF_FROSTMOURNE, false);
|
||||
me->SetWalk(true);
|
||||
|
||||
if (Creature* tirion = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_HIGHLORD_TIRION_FORDRING)))
|
||||
if (Creature* tirion = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_HIGHLORD_TIRION_FORDRING)))
|
||||
tirion->AI()->DoAction(ACTION_OUTRO);
|
||||
return;
|
||||
}
|
||||
@@ -819,7 +819,7 @@ public:
|
||||
if (!_bFordringMustFallYell && me->GetHealth() < 500000)
|
||||
{
|
||||
_bFordringMustFallYell = true;
|
||||
if (Creature* tirion = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_HIGHLORD_TIRION_FORDRING)))
|
||||
if (Creature* tirion = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_HIGHLORD_TIRION_FORDRING)))
|
||||
{
|
||||
tirion->MonsterYell("The Lich King must fall!", LANG_UNIVERSAL, 0);
|
||||
tirion->PlayDirectSound(17389);
|
||||
@@ -1249,7 +1249,7 @@ public:
|
||||
BossAI::EnterEvadeMode();
|
||||
me->SetReactState(REACT_AGGRESSIVE);
|
||||
|
||||
if (Creature* tirion = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_HIGHLORD_TIRION_FORDRING)))
|
||||
if (Creature* tirion = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_HIGHLORD_TIRION_FORDRING)))
|
||||
tirion->AI()->EnterEvadeMode();
|
||||
}
|
||||
};
|
||||
@@ -1285,7 +1285,7 @@ public:
|
||||
switch (id)
|
||||
{
|
||||
case POINT_TIRION_INTRO:
|
||||
if (Creature* theLichKing = ObjectAccessor::GetCreature(*me, _instance->GetData64(DATA_THE_LICH_KING)))
|
||||
if (Creature* theLichKing = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_THE_LICH_KING)))
|
||||
{
|
||||
if (!theLichKing->IsAlive() || !theLichKing->IsVisible())
|
||||
break;
|
||||
@@ -1351,7 +1351,7 @@ public:
|
||||
|
||||
void sGossipSelect(Player* /*player*/, uint32 sender, uint32 action) override
|
||||
{
|
||||
Creature* theLichKing = ObjectAccessor::GetCreature(*me, _instance->GetData64(DATA_THE_LICH_KING));
|
||||
Creature* theLichKing = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_THE_LICH_KING));
|
||||
if (me->GetCreatureTemplate()->GossipMenuId == sender && !action && me->HasFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP) && theLichKing && !theLichKing->IsInEvadeMode())
|
||||
{
|
||||
if (me->GetMap()->IsHeroic() && !_instance->GetData(DATA_LK_HC_AVAILABLE))
|
||||
@@ -1379,7 +1379,7 @@ public:
|
||||
switch (_events.ExecuteEvent())
|
||||
{
|
||||
case EVENT_INTRO_LK_MOVE:
|
||||
if (Creature* theLichKing = ObjectAccessor::GetCreature(*me, _instance->GetData64(DATA_THE_LICH_KING)))
|
||||
if (Creature* theLichKing = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_THE_LICH_KING)))
|
||||
{
|
||||
Movement::PointsArray path;
|
||||
path.push_back(G3D::Vector3(theLichKing->GetPositionX(), theLichKing->GetPositionY(), theLichKing->GetPositionZ()));
|
||||
@@ -1391,7 +1391,7 @@ public:
|
||||
}
|
||||
break;
|
||||
case EVENT_INTRO_LK_TALK_1:
|
||||
if (Creature* theLichKing = ObjectAccessor::GetCreature(*me, _instance->GetData64(DATA_THE_LICH_KING)))
|
||||
if (Creature* theLichKing = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_THE_LICH_KING)))
|
||||
{
|
||||
theLichKing->AI()->Talk(SAY_LK_INTRO_2);
|
||||
theLichKing->HandleEmoteCommand(EMOTE_ONESHOT_TALK_NO_SHEATHE);
|
||||
@@ -1402,15 +1402,15 @@ public:
|
||||
}
|
||||
break;
|
||||
case EVENT_INTRO_LK_EMOTE_CAST_SHOUT:
|
||||
if (Creature* theLichKing = ObjectAccessor::GetCreature(*me, _instance->GetData64(DATA_THE_LICH_KING)))
|
||||
if (Creature* theLichKing = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_THE_LICH_KING)))
|
||||
theLichKing->CastSpell(theLichKing, SPELL_EMOTE_SHOUT_NO_SHEATH, false);
|
||||
break;
|
||||
case EVENT_INTRO_LK_EMOTE_1:
|
||||
if (Creature* theLichKing = ObjectAccessor::GetCreature(*me, _instance->GetData64(DATA_THE_LICH_KING)))
|
||||
if (Creature* theLichKing = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_THE_LICH_KING)))
|
||||
theLichKing->HandleEmoteCommand(EMOTE_ONESHOT_POINT_NO_SHEATHE);
|
||||
break;
|
||||
case EVENT_INTRO_LK_CAST_FREEZE:
|
||||
if (Creature* theLichKing = ObjectAccessor::GetCreature(*me, _instance->GetData64(DATA_THE_LICH_KING)))
|
||||
if (Creature* theLichKing = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_THE_LICH_KING)))
|
||||
{
|
||||
theLichKing->AI()->Talk(SAY_LK_INTRO_3);
|
||||
theLichKing->CastSpell((Unit*)nullptr, SPELL_ICE_LOCK, false);
|
||||
@@ -1439,7 +1439,7 @@ public:
|
||||
me->GetMotionMaster()->MovePoint(0, TirionCharge);
|
||||
break;
|
||||
case EVENT_INTRO_FINISH:
|
||||
if (Creature* theLichKing = ObjectAccessor::GetCreature(*me, _instance->GetData64(DATA_THE_LICH_KING)))
|
||||
if (Creature* theLichKing = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_THE_LICH_KING)))
|
||||
{
|
||||
theLichKing->SetWalk(false);
|
||||
theLichKing->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC);
|
||||
@@ -1451,7 +1451,7 @@ public:
|
||||
break;
|
||||
|
||||
case EVENT_OUTRO_LK_TALK_1:
|
||||
if (Creature* theLichKing = ObjectAccessor::GetCreature(*me, _instance->GetData64(DATA_THE_LICH_KING)))
|
||||
if (Creature* theLichKing = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_THE_LICH_KING)))
|
||||
{
|
||||
theLichKing->AI()->Talk(SAY_LK_OUTRO_1);
|
||||
theLichKing->CastSpell((Unit*)nullptr, SPELL_FURY_OF_FROSTMOURNE_NO_REZ, true);
|
||||
@@ -1463,25 +1463,25 @@ public:
|
||||
}
|
||||
break;
|
||||
case EVENT_OUTRO_LK_TALK_2:
|
||||
if (Creature* theLichKing = ObjectAccessor::GetCreature(*me, _instance->GetData64(DATA_THE_LICH_KING)))
|
||||
if (Creature* theLichKing = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_THE_LICH_KING)))
|
||||
{
|
||||
theLichKing->AI()->Talk(SAY_LK_OUTRO_2);
|
||||
theLichKing->CastSpell((Unit*)nullptr, SPELL_EMOTE_QUESTION_NO_SHEATH, false);
|
||||
}
|
||||
break;
|
||||
case EVENT_OUTRO_LK_EMOTE_TALK:
|
||||
if (Creature* theLichKing = ObjectAccessor::GetCreature(*me, _instance->GetData64(DATA_THE_LICH_KING)))
|
||||
if (Creature* theLichKing = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_THE_LICH_KING)))
|
||||
theLichKing->HandleEmoteCommand(EMOTE_ONESHOT_TALK_NO_SHEATHE);
|
||||
break;
|
||||
case EVENT_OUTRO_LK_TALK_3:
|
||||
if (Creature* theLichKing = ObjectAccessor::GetCreature(*me, _instance->GetData64(DATA_THE_LICH_KING)))
|
||||
if (Creature* theLichKing = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_THE_LICH_KING)))
|
||||
{
|
||||
theLichKing->SetFacingToObject(me);
|
||||
theLichKing->AI()->Talk(SAY_LK_OUTRO_3);
|
||||
}
|
||||
break;
|
||||
case EVENT_OUTRO_LK_MOVE_CENTER:
|
||||
if (Creature* theLichKing = ObjectAccessor::GetCreature(*me, _instance->GetData64(DATA_THE_LICH_KING)))
|
||||
if (Creature* theLichKing = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_THE_LICH_KING)))
|
||||
{
|
||||
theLichKing->GetMotionMaster()->MovePoint(0, CenterPosition);
|
||||
uint32 travelTime = 1000 * theLichKing->GetExactDist(&CenterPosition) / theLichKing->GetSpeed(MOVE_WALK) + 1000;
|
||||
@@ -1492,14 +1492,14 @@ public:
|
||||
}
|
||||
break;
|
||||
case EVENT_OUTRO_LK_TALK_4:
|
||||
if (Creature* theLichKing = ObjectAccessor::GetCreature(*me, _instance->GetData64(DATA_THE_LICH_KING)))
|
||||
if (Creature* theLichKing = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_THE_LICH_KING)))
|
||||
{
|
||||
theLichKing->SetFacingTo(0.01745329f);
|
||||
theLichKing->AI()->Talk(SAY_LK_OUTRO_4);
|
||||
}
|
||||
break;
|
||||
case EVENT_OUTRO_LK_RAISE_DEAD:
|
||||
if (Creature* theLichKing = ObjectAccessor::GetCreature(*me, _instance->GetData64(DATA_THE_LICH_KING)))
|
||||
if (Creature* theLichKing = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_THE_LICH_KING)))
|
||||
{
|
||||
theLichKing->CastSpell((Unit*)nullptr, SPELL_RAISE_DEAD, false);
|
||||
theLichKing->ClearUnitState(UNIT_STATE_CASTING);
|
||||
@@ -1507,7 +1507,7 @@ public:
|
||||
}
|
||||
break;
|
||||
case EVENT_OUTRO_LK_TALK_5:
|
||||
if (Creature* theLichKing = ObjectAccessor::GetCreature(*me, _instance->GetData64(DATA_THE_LICH_KING)))
|
||||
if (Creature* theLichKing = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_THE_LICH_KING)))
|
||||
{
|
||||
theLichKing->AI()->Talk(SAY_LK_OUTRO_5);
|
||||
_events.ScheduleEvent(EVENT_OUTRO_FORDRING_TALK_1, 7000);
|
||||
@@ -1517,7 +1517,7 @@ public:
|
||||
}
|
||||
break;
|
||||
case EVENT_OUTRO_LK_TALK_6:
|
||||
if (Creature* theLichKing = ObjectAccessor::GetCreature(*me, _instance->GetData64(DATA_THE_LICH_KING)))
|
||||
if (Creature* theLichKing = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_THE_LICH_KING)))
|
||||
{
|
||||
theLichKing->AI()->Talk(SAY_LK_OUTRO_6);
|
||||
me->SetFacingToObject(theLichKing);
|
||||
@@ -1540,7 +1540,7 @@ public:
|
||||
frostmourne->CastSpell((Unit*)nullptr, SPELL_BROKEN_FROSTMOURNE_KNOCK, false);
|
||||
break;
|
||||
case EVENT_OUTRO_SOUL_BARRAGE:
|
||||
if (Creature* theLichKing = ObjectAccessor::GetCreature(*me, _instance->GetData64(DATA_THE_LICH_KING)))
|
||||
if (Creature* theLichKing = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_THE_LICH_KING)))
|
||||
{
|
||||
theLichKing->CastSpell((Unit*)nullptr, SPELL_SOUL_BARRAGE, TRIGGERED_IGNORE_CAST_IN_PROGRESS);
|
||||
sCreatureTextMgr->SendSound(theLichKing, SOUND_PAIN, CHAT_MSG_MONSTER_YELL, 0, TEXT_RANGE_NORMAL, TEAM_NEUTRAL, false);
|
||||
@@ -1573,7 +1573,7 @@ public:
|
||||
{
|
||||
terenas->AI()->Talk(SAY_TERENAS_OUTRO_2);
|
||||
terenas->CastSpell((Unit*)nullptr, SPELL_MASS_RESURRECTION, false);
|
||||
if (Creature* lichKing = ObjectAccessor::GetCreature(*me, _instance->GetData64(DATA_THE_LICH_KING)))
|
||||
if (Creature* lichKing = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_THE_LICH_KING)))
|
||||
{
|
||||
lichKing->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_NPC);
|
||||
me->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_ONESHOT_NONE);
|
||||
@@ -1587,11 +1587,11 @@ public:
|
||||
}
|
||||
break;
|
||||
case EVENT_OUTRO_LK_TALK_7:
|
||||
if (Creature* theLichKing = ObjectAccessor::GetCreature(*me, _instance->GetData64(DATA_THE_LICH_KING)))
|
||||
if (Creature* theLichKing = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_THE_LICH_KING)))
|
||||
theLichKing->AI()->Talk(SAY_LK_OUTRO_7);
|
||||
break;
|
||||
case EVENT_OUTRO_LK_TALK_8:
|
||||
if (Creature* theLichKing = ObjectAccessor::GetCreature(*me, _instance->GetData64(DATA_THE_LICH_KING)))
|
||||
if (Creature* theLichKing = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_THE_LICH_KING)))
|
||||
theLichKing->AI()->Talk(SAY_LK_OUTRO_8);
|
||||
break;
|
||||
case EVENT_OUTRO_FORDRING_TALK_1:
|
||||
@@ -1603,7 +1603,7 @@ public:
|
||||
case EVENT_OUTRO_FORDRING_REMOVE_ICE:
|
||||
me->RemoveAurasDueToSpell(SPELL_ICE_LOCK);
|
||||
SetEquipmentSlots(false, EQUIP_ASHBRINGER_GLOWING);
|
||||
if (Creature* lichKing = ObjectAccessor::GetCreature(*me, _instance->GetData64(DATA_THE_LICH_KING)))
|
||||
if (Creature* lichKing = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_THE_LICH_KING)))
|
||||
{
|
||||
me->SetFacingToObject(lichKing);
|
||||
me->GetMap()->SetZoneMusic(AREA_THE_FROZEN_THRONE, MUSIC_FINAL);
|
||||
@@ -1628,7 +1628,7 @@ public:
|
||||
if (!me->IsAlive())
|
||||
return;
|
||||
|
||||
if (Creature* theLichKing = ObjectAccessor::GetCreature(*me, _instance->GetData64(DATA_THE_LICH_KING)))
|
||||
if (Creature* theLichKing = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_THE_LICH_KING)))
|
||||
if (theLichKing->IsInEvadeMode())
|
||||
{
|
||||
ScriptedAI::EnterEvadeMode();
|
||||
@@ -1671,7 +1671,7 @@ public:
|
||||
|
||||
void FilterTargets(std::list<WorldObject*>& targets)
|
||||
{
|
||||
if (GameObject* platform = ObjectAccessor::GetGameObject(*GetCaster(), GetCaster()->GetInstanceScript()->GetData64(DATA_ARTHAS_PLATFORM)))
|
||||
if (GameObject* platform = ObjectAccessor::GetGameObject(*GetCaster(), GetCaster()->GetInstanceScript()->GetGuidData(DATA_ARTHAS_PLATFORM)))
|
||||
targets.remove_if(HeightDifferenceCheck(platform, 5.0f, false));
|
||||
}
|
||||
|
||||
@@ -2189,12 +2189,12 @@ public:
|
||||
{
|
||||
npc_icc_ice_sphereAI(Creature* creature) : ScriptedAI(creature)
|
||||
{
|
||||
targetGUID = 0;
|
||||
targetGUID.Clear();
|
||||
timer = 250;
|
||||
me->SetReactState(REACT_PASSIVE);
|
||||
}
|
||||
|
||||
uint64 targetGUID;
|
||||
ObjectGuid targetGUID;
|
||||
uint16 timer;
|
||||
|
||||
void DoAction(int32 a) override
|
||||
@@ -2204,7 +2204,7 @@ public:
|
||||
me->RemoveAllAuras();
|
||||
me->CastSpell(me, SPELL_ICE_BURST, true);
|
||||
me->DespawnOrUnsummon(1000);
|
||||
targetGUID = 0;
|
||||
targetGUID.Clear();
|
||||
timer = 9999;
|
||||
me->InterruptNonMeleeSpells(true);
|
||||
me->AttackStop();
|
||||
@@ -2217,7 +2217,7 @@ public:
|
||||
{
|
||||
if (!me->HasAura(SPELL_ICE_SPHERE))
|
||||
me->CastSpell(me, SPELL_ICE_SPHERE, true);
|
||||
targetGUID = 0;
|
||||
targetGUID.Clear();
|
||||
me->InterruptNonMeleeSpells(true);
|
||||
me->AttackStop();
|
||||
me->GetMotionMaster()->Clear();
|
||||
@@ -2325,13 +2325,13 @@ public:
|
||||
void IsSummonedBy(Unit* /*summoner*/) override
|
||||
{
|
||||
// player is the spellcaster so register summon manually
|
||||
if (Creature* lichKing = ObjectAccessor::GetCreature(*me, _instance->GetData64(DATA_THE_LICH_KING)))
|
||||
if (Creature* lichKing = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_THE_LICH_KING)))
|
||||
lichKing->AI()->JustSummoned(me);
|
||||
}
|
||||
|
||||
void JustDied(Unit* /*killer*/) override
|
||||
{
|
||||
if (Creature* lichKing = ObjectAccessor::GetCreature(*me, _instance->GetData64(DATA_THE_LICH_KING)))
|
||||
if (Creature* lichKing = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_THE_LICH_KING)))
|
||||
lichKing->AI()->SummonedCreatureDespawn(me);
|
||||
if (TempSummon* summon = me->ToTempSummon())
|
||||
{
|
||||
@@ -2498,7 +2498,7 @@ public:
|
||||
|
||||
struct npc_valkyr_shadowguardAI : public NullCreatureAI
|
||||
{
|
||||
npc_valkyr_shadowguardAI(Creature* creature) : NullCreatureAI(creature), _grabbedPlayer(0), didbelow50pct(false), dropped(false), _instance(creature->GetInstanceScript())
|
||||
npc_valkyr_shadowguardAI(Creature* creature) : NullCreatureAI(creature), didbelow50pct(false), dropped(false), _instance(creature->GetInstanceScript())
|
||||
{
|
||||
me->SetReactState(REACT_PASSIVE);
|
||||
me->ApplySpellImmune(0, IMMUNITY_STATE, SPELL_AURA_MOD_TAUNT, true);
|
||||
@@ -2510,7 +2510,7 @@ public:
|
||||
|
||||
EventMap _events;
|
||||
Position _destPoint;
|
||||
uint64 _grabbedPlayer;
|
||||
ObjectGuid _grabbedPlayer;
|
||||
bool didbelow50pct;
|
||||
bool dropped;
|
||||
InstanceScript* _instance;
|
||||
@@ -2565,7 +2565,7 @@ public:
|
||||
bool valid = false;
|
||||
if (Player* target = ObjectAccessor::GetPlayer(*me, _grabbedPlayer))
|
||||
if (target->FindMap() == me->GetMap() && target->GetExactDist(me) < 15.0f && !target->GetVehicle())
|
||||
if (GameObject* platform = ObjectAccessor::GetGameObject(*me, _instance->GetData64(DATA_ARTHAS_PLATFORM)))
|
||||
if (GameObject* platform = ObjectAccessor::GetGameObject(*me, _instance->GetGuidData(DATA_ARTHAS_PLATFORM)))
|
||||
{
|
||||
std::list<Creature*> triggers;
|
||||
GetCreatureListWithEntryInGrid(triggers, me, NPC_WORLD_TRIGGER, 150.0f);
|
||||
@@ -2589,7 +2589,7 @@ public:
|
||||
{
|
||||
_events.Reset();
|
||||
_events.ScheduleEvent(EVENT_GRAB_PLAYER, 500);
|
||||
_grabbedPlayer = 0;
|
||||
_grabbedPlayer.Clear();
|
||||
}
|
||||
}
|
||||
break;
|
||||
@@ -2631,7 +2631,7 @@ public:
|
||||
}
|
||||
}
|
||||
|
||||
void SetGUID(uint64 guid, int32 /* = 0*/) override
|
||||
void SetGUID(ObjectGuid guid, int32 /* = 0*/) override
|
||||
{
|
||||
_grabbedPlayer = guid;
|
||||
}
|
||||
@@ -2681,7 +2681,7 @@ public:
|
||||
break;
|
||||
}
|
||||
if (!target)
|
||||
if (Creature* lichKing = ObjectAccessor::GetCreature(*me, _instance->GetData64(DATA_THE_LICH_KING)))
|
||||
if (Creature* lichKing = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_THE_LICH_KING)))
|
||||
target = lichKing->AI()->SelectTarget(SELECT_TARGET_RANDOM, 0, NonTankLKTargetSelector(lichKing, true, false, 100.0f));
|
||||
if (target)
|
||||
me->CastSpell(target, SPELL_LIFE_SIPHON, false);
|
||||
@@ -2804,7 +2804,7 @@ public:
|
||||
targets.remove_if(acore::UnitAuraCheck(true, SPELL_BOSS_HITTIN_YA_AURA)); // done in dbc, but just to be sure xd
|
||||
targets.remove_if(acore::UnitAuraCheck(true, SPELL_HARVEST_SOUL_VALKYR));
|
||||
if (InstanceScript* _instance = caster->GetInstanceScript())
|
||||
if (Creature* lichKing = ObjectAccessor::GetCreature(*caster, _instance->GetData64(DATA_THE_LICH_KING)))
|
||||
if (Creature* lichKing = ObjectAccessor::GetCreature(*caster, _instance->GetGuidData(DATA_THE_LICH_KING)))
|
||||
if (Spell* s = lichKing->GetCurrentSpell(CURRENT_GENERIC_SPELL))
|
||||
if (s->GetSpellInfo()->Id == SPELL_DEFILE && s->m_targets.GetUnitTarget())
|
||||
targets.remove(s->m_targets.GetUnitTarget());
|
||||
@@ -3077,7 +3077,7 @@ public:
|
||||
{
|
||||
// m_originalCaster to allow stacking from different casters, meh
|
||||
if (GetTargetApplication()->GetRemoveMode() == AURA_REMOVE_BY_DEATH)
|
||||
GetTarget()->CastSpell((Unit*)nullptr, SPELL_HARVESTED_SOUL_LK_BUFF, true, nullptr, nullptr, GetTarget()->GetInstanceScript()->GetData64(DATA_THE_LICH_KING));
|
||||
GetTarget()->CastSpell((Unit*)nullptr, SPELL_HARVESTED_SOUL_LK_BUFF, true, nullptr, nullptr, GetTarget()->GetInstanceScript()->GetGuidData(DATA_THE_LICH_KING));
|
||||
}
|
||||
|
||||
void Register() override
|
||||
@@ -3109,7 +3109,7 @@ public:
|
||||
if (!summoner)
|
||||
return;
|
||||
|
||||
if (Creature* lichKing = ObjectAccessor::GetCreature(*me, _instance->GetData64(DATA_THE_LICH_KING)))
|
||||
if (Creature* lichKing = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_THE_LICH_KING)))
|
||||
{
|
||||
me->SetWalk(false);
|
||||
Movement::PointsArray path;
|
||||
@@ -3117,8 +3117,8 @@ public:
|
||||
path.push_back(G3D::Vector3(me->GetPositionX(), me->GetPositionY(), 843.0f));
|
||||
me->GetMotionMaster()->MoveSplinePath(&path);
|
||||
|
||||
uint64 petGUID = summoner->GetPetGUID();
|
||||
summoner->SetPetGUID(0);
|
||||
ObjectGuid petGUID = summoner->GetPetGUID();
|
||||
summoner->SetPetGUID(ObjectGuid::Empty);
|
||||
summoner->StopMoving();
|
||||
me->CastSpell(summoner, SPELL_HARVEST_SOUL_VEHICLE, true);
|
||||
//summoner->ClearUnitState(UNIT_STATE_ONVEHICLE);
|
||||
@@ -3155,24 +3155,24 @@ public:
|
||||
if (summoner->GetTypeId() == TYPEID_PLAYER && !summoner->ToPlayer()->IsBeingTeleported() && summoner->FindMap() == me->GetMap())
|
||||
{
|
||||
if (buff)
|
||||
summoner->CastSpell((Unit*)nullptr, SPELL_HARVESTED_SOUL_LK_BUFF, true, nullptr, nullptr, _instance->GetData64(DATA_THE_LICH_KING));
|
||||
summoner->CastSpell((Unit*)nullptr, SPELL_HARVESTED_SOUL_LK_BUFF, true, nullptr, nullptr, _instance->GetGuidData(DATA_THE_LICH_KING));
|
||||
|
||||
me->CastSpell(summoner, SPELL_HARVEST_SOUL_TELEPORT_BACK, false);
|
||||
}
|
||||
else if (buff)
|
||||
me->CastSpell((Unit*)nullptr, SPELL_HARVESTED_SOUL_LK_BUFF, true, nullptr, nullptr, _instance->GetData64(DATA_THE_LICH_KING));
|
||||
me->CastSpell((Unit*)nullptr, SPELL_HARVESTED_SOUL_LK_BUFF, true, nullptr, nullptr, _instance->GetGuidData(DATA_THE_LICH_KING));
|
||||
|
||||
summoner->RemoveAurasDueToSpell(IsHeroic() ? SPELL_HARVEST_SOULS_TELEPORT : SPELL_HARVEST_SOUL_TELEPORT);
|
||||
}
|
||||
else
|
||||
me->CastSpell((Unit*)nullptr, SPELL_HARVESTED_SOUL_LK_BUFF, true, nullptr, nullptr, _instance->GetData64(DATA_THE_LICH_KING));
|
||||
me->CastSpell((Unit*)nullptr, SPELL_HARVESTED_SOUL_LK_BUFF, true, nullptr, nullptr, _instance->GetGuidData(DATA_THE_LICH_KING));
|
||||
}
|
||||
|
||||
_events.Reset();
|
||||
me->RemoveAllAuras();
|
||||
me->DespawnOrUnsummon(500);
|
||||
|
||||
if (Creature* lichKing = ObjectAccessor::GetCreature(*me, _instance->GetData64(DATA_THE_LICH_KING)))
|
||||
if (Creature* lichKing = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_THE_LICH_KING)))
|
||||
lichKing->AI()->SummonedCreatureDespawn(me);
|
||||
}
|
||||
|
||||
@@ -3207,7 +3207,7 @@ public:
|
||||
}
|
||||
break;
|
||||
case EVENT_MOVE_TO_LICH_KING:
|
||||
if (Creature* lichKing = ObjectAccessor::GetCreature(*me, _instance->GetData64(DATA_THE_LICH_KING)))
|
||||
if (Creature* lichKing = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_THE_LICH_KING)))
|
||||
if (me->GetExactDist(lichKing) > 8.0f)
|
||||
{
|
||||
float dist = float(rand_norm()) * 5.0f + 8.0f;
|
||||
@@ -3219,7 +3219,7 @@ public:
|
||||
}
|
||||
break;
|
||||
case EVENT_DESPAWN_SELF:
|
||||
if (Creature* lichKing = ObjectAccessor::GetCreature(*me, _instance->GetData64(DATA_THE_LICH_KING)))
|
||||
if (Creature* lichKing = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_THE_LICH_KING)))
|
||||
lichKing->AI()->SummonedCreatureDespawn(me);
|
||||
me->DespawnOrUnsummon(1);
|
||||
break;
|
||||
@@ -3333,7 +3333,7 @@ public:
|
||||
_events.ScheduleEvent(EVENT_TELEPORT_BACK, 1000);
|
||||
break;
|
||||
case EVENT_TELEPORT_BACK:
|
||||
if (Creature* lichKing = ObjectAccessor::GetCreature(*me, _instance->GetData64(DATA_THE_LICH_KING)))
|
||||
if (Creature* lichKing = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_THE_LICH_KING)))
|
||||
lichKing->AI()->DoAction(ACTION_TELEPORT_BACK);
|
||||
break;
|
||||
default:
|
||||
@@ -3421,7 +3421,7 @@ public:
|
||||
for (std::list<WorldObject*>::const_iterator itr = unitList.begin(); itr != unitList.end(); ++itr)
|
||||
if (Unit* target = (*itr)->ToUnit())
|
||||
target->RemoveAurasDueToSpell(target->GetMap()->IsHeroic() ? SPELL_HARVEST_SOULS_TELEPORT : SPELL_HARVEST_SOUL_TELEPORT);
|
||||
if (Creature* lichKing = ObjectAccessor::GetCreature(*GetCaster(), _instance->GetData64(DATA_THE_LICH_KING)))
|
||||
if (Creature* lichKing = ObjectAccessor::GetCreature(*GetCaster(), _instance->GetGuidData(DATA_THE_LICH_KING)))
|
||||
lichKing->AI()->DoAction(ACTION_TELEPORT_BACK);
|
||||
if (Creature* spawner = GetCaster()->FindNearestCreature(NPC_WORLD_TRIGGER_INFINITE_AOI, 50.0f, true))
|
||||
{
|
||||
@@ -3474,7 +3474,7 @@ public:
|
||||
|
||||
void JustDied(Unit* /*killer*/) override
|
||||
{
|
||||
if (Creature* terenas = ObjectAccessor::GetCreature(*me, _instance->GetData64(DATA_TERENAS_MENETHIL)))
|
||||
if (Creature* terenas = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_TERENAS_MENETHIL)))
|
||||
terenas->AI()->DoAction(ACTION_TELEPORT_BACK);
|
||||
}
|
||||
|
||||
|
||||
@@ -140,7 +140,7 @@ public:
|
||||
bool operator()(Creature* creature)
|
||||
{
|
||||
return creature->IsAlive() && creature->GetEntry() == NPC_RISEN_ARCHMAGE &&
|
||||
creature->GetDBTableGUIDLow() && !creature->IsInCombat();
|
||||
creature->GetSpawnId() && !creature->IsInCombat();
|
||||
}
|
||||
};
|
||||
|
||||
@@ -159,7 +159,7 @@ struct ManaVoidSelector : public acore::unary_function<Unit*, bool>
|
||||
class DelayedCastEvent : public BasicEvent
|
||||
{
|
||||
public:
|
||||
DelayedCastEvent(Creature* trigger, uint32 spellId, uint64 originalCaster, uint32 despawnTime) : _trigger(trigger), _originalCaster(originalCaster), _spellId(spellId), _despawnTime(despawnTime)
|
||||
DelayedCastEvent(Creature* trigger, uint32 spellId, ObjectGuid originalCaster, uint32 despawnTime) : _trigger(trigger), _originalCaster(originalCaster), _spellId(spellId), _despawnTime(despawnTime)
|
||||
{
|
||||
}
|
||||
|
||||
@@ -173,7 +173,7 @@ public:
|
||||
|
||||
private:
|
||||
Creature* _trigger;
|
||||
uint64 _originalCaster;
|
||||
ObjectGuid _originalCaster;
|
||||
uint32 _spellId;
|
||||
uint32 _despawnTime;
|
||||
};
|
||||
@@ -234,7 +234,7 @@ public:
|
||||
creature->DespawnOrUnsummon();
|
||||
return;
|
||||
case NPC_RISEN_ARCHMAGE:
|
||||
if (!creature->GetDBTableGUIDLow())
|
||||
if (!creature->GetSpawnId())
|
||||
{
|
||||
creature->DespawnOrUnsummon();
|
||||
return;
|
||||
@@ -279,7 +279,7 @@ public:
|
||||
{
|
||||
me->SetReactState(REACT_PASSIVE);
|
||||
_spawnHealth = 1; // just in case if not set below
|
||||
if (CreatureData const* data = sObjectMgr->GetCreatureData(me->GetDBTableGUIDLow()))
|
||||
if (CreatureData const* data = sObjectMgr->GetCreatureData(me->GetSpawnId()))
|
||||
if (data->curhealth)
|
||||
_spawnHealth = data->curhealth;
|
||||
}
|
||||
@@ -338,9 +338,9 @@ public:
|
||||
_events.ScheduleEvent(EVENT_DREAM_SLIP, 3500);
|
||||
_instance->SetBossState(DATA_VALITHRIA_DREAMWALKER, DONE);
|
||||
|
||||
if (Creature* trigger = ObjectAccessor::GetCreature(*me, _instance->GetData64(DATA_VALITHRIA_TRIGGER)))
|
||||
if (Creature* trigger = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_VALITHRIA_TRIGGER)))
|
||||
trigger->AI()->EnterEvadeMode();
|
||||
if (Creature* lichKing = ObjectAccessor::GetCreature(*me, _instance->GetData64(DATA_VALITHRIA_LICH_KING)))
|
||||
if (Creature* lichKing = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_VALITHRIA_LICH_KING)))
|
||||
lichKing->AI()->Reset();
|
||||
}
|
||||
else if (!_over75PercentTalkDone && me->HealthAbovePctHealed(75, heal))
|
||||
@@ -349,7 +349,7 @@ public:
|
||||
Talk(SAY_VALITHRIA_75_PERCENT);
|
||||
}
|
||||
else if (_instance->GetBossState(DATA_VALITHRIA_DREAMWALKER) == NOT_STARTED)
|
||||
if (Creature* trigger = ObjectAccessor::GetCreature(*me, _instance->GetData64(DATA_VALITHRIA_TRIGGER)))
|
||||
if (Creature* trigger = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_VALITHRIA_TRIGGER)))
|
||||
trigger->AI()->DoAction(ACTION_ENTER_COMBAT);
|
||||
}
|
||||
|
||||
@@ -371,7 +371,7 @@ public:
|
||||
_justDied = true;
|
||||
Talk(SAY_VALITHRIA_DEATH);
|
||||
_instance->SendEncounterUnit(ENCOUNTER_FRAME_DISENGAGE, me);
|
||||
if (Creature* trigger = ObjectAccessor::GetCreature(*me, _instance->GetData64(DATA_VALITHRIA_TRIGGER)))
|
||||
if (Creature* trigger = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_VALITHRIA_TRIGGER)))
|
||||
trigger->AI()->EnterEvadeMode();
|
||||
}
|
||||
}
|
||||
@@ -388,7 +388,7 @@ public:
|
||||
me->SetDisplayId(11686);
|
||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
||||
me->DespawnOrUnsummon(4000);
|
||||
if (Creature* lichKing = ObjectAccessor::GetCreature(*me, _instance->GetData64(DATA_VALITHRIA_LICH_KING)))
|
||||
if (Creature* lichKing = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_VALITHRIA_LICH_KING)))
|
||||
lichKing->CastSpell(lichKing, SPELL_SPAWN_CHEST, false);
|
||||
_instance->SetData(DATA_WEEKLY_QUEST_ID, 0); // show hidden npc if necessary
|
||||
}
|
||||
@@ -518,9 +518,9 @@ public:
|
||||
me->setActive(true);
|
||||
me->SetInCombatWithZone();
|
||||
instance->SetBossState(DATA_VALITHRIA_DREAMWALKER, IN_PROGRESS);
|
||||
if (Creature* valithria = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_VALITHRIA_DREAMWALKER)))
|
||||
if (Creature* valithria = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_VALITHRIA_DREAMWALKER)))
|
||||
valithria->AI()->DoAction(ACTION_ENTER_COMBAT);
|
||||
if (Creature* lichKing = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_VALITHRIA_LICH_KING)))
|
||||
if (Creature* lichKing = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_VALITHRIA_LICH_KING)))
|
||||
lichKing->AI()->DoAction(ACTION_ENTER_COMBAT);
|
||||
|
||||
std::list<Creature*> archmages;
|
||||
@@ -712,8 +712,8 @@ public:
|
||||
{
|
||||
me->FinishSpell(CURRENT_CHANNELED_SPELL, false);
|
||||
me->SetInCombatWithZone();
|
||||
if (me->GetDBTableGUIDLow())
|
||||
if (Creature* trigger = ObjectAccessor::GetCreature(*me, _instance->GetData64(DATA_VALITHRIA_TRIGGER)))
|
||||
if (me->GetSpawnId())
|
||||
if (Creature* trigger = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_VALITHRIA_TRIGGER)))
|
||||
trigger->AI()->DoAction(ACTION_ENTER_COMBAT);
|
||||
}
|
||||
|
||||
@@ -726,7 +726,7 @@ public:
|
||||
void JustSummoned(Creature* summon) override
|
||||
{
|
||||
if (summon->GetEntry() == NPC_COLUMN_OF_FROST)
|
||||
summon->m_Events.AddEvent(new DelayedCastEvent(summon, SPELL_COLUMN_OF_FROST_DAMAGE, 0, 8000), summon->m_Events.CalculateTime(2000));
|
||||
summon->m_Events.AddEvent(new DelayedCastEvent(summon, SPELL_COLUMN_OF_FROST_DAMAGE, ObjectGuid::Empty, 8000), summon->m_Events.CalculateTime(2000));
|
||||
else if (summon->GetEntry() == NPC_MANA_VOID)
|
||||
summon->DespawnOrUnsummon(36000);
|
||||
}
|
||||
@@ -734,7 +734,7 @@ public:
|
||||
void UpdateAI(uint32 diff) override
|
||||
{
|
||||
if (!me->IsInCombat())
|
||||
if (me->GetDBTableGUIDLow())
|
||||
if (me->GetSpawnId())
|
||||
if (!me->GetCurrentSpell(CURRENT_CHANNELED_SPELL))
|
||||
me->CastSpell(me, SPELL_CORRUPTION, false);
|
||||
|
||||
@@ -861,7 +861,7 @@ public:
|
||||
me->GetMotionMaster()->Clear(false);
|
||||
me->GetMotionMaster()->MoveIdle();
|
||||
// must use originalCaster the same for all clouds to allow stacking
|
||||
me->CastSpell(me, EMERALD_VIGOR, false, nullptr, nullptr, _instance->GetData64(DATA_VALITHRIA_DREAMWALKER));
|
||||
me->CastSpell(me, EMERALD_VIGOR, false, nullptr, nullptr, _instance->GetGuidData(DATA_VALITHRIA_DREAMWALKER));
|
||||
me->DespawnOrUnsummon(1000);
|
||||
break;
|
||||
default:
|
||||
@@ -959,7 +959,7 @@ public:
|
||||
|
||||
void IsSummonedBy(Unit* /*summoner*/) override
|
||||
{
|
||||
if (Creature* valithria = ObjectAccessor::GetCreature(*me, _instance->GetData64(DATA_VALITHRIA_DREAMWALKER)))
|
||||
if (Creature* valithria = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_VALITHRIA_DREAMWALKER)))
|
||||
AttackStart(valithria);
|
||||
}
|
||||
|
||||
@@ -969,7 +969,7 @@ public:
|
||||
return;
|
||||
|
||||
if (!me->GetVictim())
|
||||
if (Creature* valithria = ObjectAccessor::GetCreature(*me, _instance->GetData64(DATA_VALITHRIA_DREAMWALKER)))
|
||||
if (Creature* valithria = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_VALITHRIA_DREAMWALKER)))
|
||||
if (valithria->IsAlive())
|
||||
AttackStart(valithria);
|
||||
|
||||
@@ -1169,7 +1169,7 @@ public:
|
||||
return;
|
||||
|
||||
if (InstanceScript* instance = GetHitUnit()->GetInstanceScript())
|
||||
GetHitUnit()->CastSpell((Unit*)nullptr, GetSpellInfo()->Effects[effIndex].TriggerSpell, true, nullptr, nullptr, instance->GetData64(DATA_VALITHRIA_DREAMWALKER));
|
||||
GetHitUnit()->CastSpell((Unit*)nullptr, GetSpellInfo()->Effects[effIndex].TriggerSpell, true, nullptr, nullptr, instance->GetGuidData(DATA_VALITHRIA_DREAMWALKER));
|
||||
}
|
||||
|
||||
void Register() override
|
||||
@@ -1326,7 +1326,7 @@ public:
|
||||
if (!GetHitUnit())
|
||||
return;
|
||||
|
||||
GetHitUnit()->CastSpell(GetCaster(), GetSpellInfo()->Effects[effIndex].TriggerSpell, true, nullptr, nullptr, GetCaster()->GetInstanceScript()->GetData64(DATA_VALITHRIA_LICH_KING));
|
||||
GetHitUnit()->CastSpell(GetCaster(), GetSpellInfo()->Effects[effIndex].TriggerSpell, true, nullptr, nullptr, GetCaster()->GetInstanceScript()->GetGuidData(DATA_VALITHRIA_LICH_KING));
|
||||
}
|
||||
|
||||
void Register() override
|
||||
@@ -1410,7 +1410,7 @@ public:
|
||||
if (!GetHitUnit())
|
||||
return;
|
||||
|
||||
GetHitUnit()->CastSpell(GetCaster(), GetSpellInfo()->Effects[effIndex].TriggerSpell, true, nullptr, nullptr, GetCaster()->GetInstanceScript()->GetData64(DATA_VALITHRIA_LICH_KING));
|
||||
GetHitUnit()->CastSpell(GetCaster(), GetSpellInfo()->Effects[effIndex].TriggerSpell, true, nullptr, nullptr, GetCaster()->GetInstanceScript()->GetGuidData(DATA_VALITHRIA_LICH_KING));
|
||||
}
|
||||
|
||||
void Register() override
|
||||
|
||||
@@ -367,9 +367,9 @@ public:
|
||||
void Reset() override
|
||||
{
|
||||
_events.Reset();
|
||||
_theLichKing = 0;
|
||||
_bolvarFordragon = 0;
|
||||
_factionNPC = 0;
|
||||
_theLichKing.Clear();
|
||||
_bolvarFordragon.Clear();
|
||||
_factionNPC.Clear();
|
||||
_damnedKills = 0;
|
||||
}
|
||||
|
||||
@@ -517,7 +517,7 @@ public:
|
||||
case EVENT_SAURFANG_RUN:
|
||||
if (Creature* factionNPC = ObjectAccessor::GetCreature(*me, _factionNPC))
|
||||
{
|
||||
factionNPC->GetMotionMaster()->MovePath(factionNPC->GetDBTableGUIDLow() * 10, false);
|
||||
factionNPC->GetMotionMaster()->MovePath(factionNPC->GetSpawnId() * 10, false);
|
||||
factionNPC->DespawnOrUnsummon(46500);
|
||||
std::list<Creature*> followers;
|
||||
factionNPC->GetCreaturesWithEntryInRange(followers, 30, _instance->GetData(DATA_TEAMID_IN_INSTANCE) == TEAM_HORDE ? NPC_KOR_KRON_GENERAL : NPC_ALLIANCE_COMMANDER);
|
||||
@@ -561,9 +561,9 @@ public:
|
||||
private:
|
||||
EventMap _events;
|
||||
InstanceScript* const _instance;
|
||||
uint64 _theLichKing;
|
||||
uint64 _bolvarFordragon;
|
||||
uint64 _factionNPC;
|
||||
ObjectGuid _theLichKing;
|
||||
ObjectGuid _bolvarFordragon;
|
||||
ObjectGuid _factionNPC;
|
||||
uint16 _damnedKills;
|
||||
};
|
||||
|
||||
@@ -733,10 +733,10 @@ public:
|
||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_IMMUNE_TO_NPC | UNIT_FLAG_IMMUNE_TO_PC);
|
||||
// Load Grid with Sister Svalna
|
||||
me->GetMap()->LoadGrid(4356.71f, 2484.33f);
|
||||
if (Creature* svalna = ObjectAccessor::GetCreature(*me, _instance->GetData64(DATA_SISTER_SVALNA)))
|
||||
if (Creature* svalna = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_SISTER_SVALNA)))
|
||||
svalna->AI()->DoAction(ACTION_START_GAUNTLET);
|
||||
for (uint32 i = 0; i < 4; ++i)
|
||||
if (Creature* crusader = ObjectAccessor::GetCreature(*me, _instance->GetData64(DATA_CAPTAIN_ARNATH + i)))
|
||||
if (Creature* crusader = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_CAPTAIN_ARNATH + i)))
|
||||
crusader->AI()->DoAction(ACTION_START_GAUNTLET);
|
||||
|
||||
Talk(SAY_CROK_INTRO_1);
|
||||
@@ -757,7 +757,7 @@ public:
|
||||
}
|
||||
}
|
||||
|
||||
void SetGUID(uint64 guid, int32 type/* = 0*/) override
|
||||
void SetGUID(ObjectGuid guid, int32 type/* = 0*/) override
|
||||
{
|
||||
if (type == ACTION_VRYKUL_DEATH)
|
||||
{
|
||||
@@ -769,7 +769,7 @@ public:
|
||||
{
|
||||
_handledWP4 = true;
|
||||
Talk(SAY_CROK_FINAL_WP);
|
||||
if (Creature* svalna = ObjectAccessor::GetCreature(*me, _instance->GetData64(DATA_SISTER_SVALNA)))
|
||||
if (Creature* svalna = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_SISTER_SVALNA)))
|
||||
svalna->AI()->DoAction(ACTION_RESURRECT_CAPTAINS);
|
||||
}
|
||||
}
|
||||
@@ -800,7 +800,7 @@ public:
|
||||
{
|
||||
_handledWP4 = true;
|
||||
Talk(SAY_CROK_FINAL_WP);
|
||||
if (Creature* svalna = ObjectAccessor::GetCreature(*me, _instance->GetData64(DATA_SISTER_SVALNA)))
|
||||
if (Creature* svalna = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_SISTER_SVALNA)))
|
||||
svalna->AI()->DoAction(ACTION_RESURRECT_CAPTAINS);
|
||||
}
|
||||
break;
|
||||
@@ -820,12 +820,12 @@ public:
|
||||
break;
|
||||
case 1:
|
||||
minY = 2550.0f;
|
||||
if (Creature* svalna = ObjectAccessor::GetCreature(*me, _instance->GetData64(DATA_SISTER_SVALNA)))
|
||||
if (Creature* svalna = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_SISTER_SVALNA)))
|
||||
svalna->AI()->DoAction(ACTION_KILL_CAPTAIN);
|
||||
break;
|
||||
case 2:
|
||||
minY = 2515.0f;
|
||||
if (Creature* svalna = ObjectAccessor::GetCreature(*me, _instance->GetData64(DATA_SISTER_SVALNA)))
|
||||
if (Creature* svalna = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_SISTER_SVALNA)))
|
||||
svalna->AI()->DoAction(ACTION_KILL_CAPTAIN);
|
||||
break;
|
||||
case 4:
|
||||
@@ -910,7 +910,7 @@ public:
|
||||
switch (_events.ExecuteEvent())
|
||||
{
|
||||
case EVENT_ARNATH_INTRO_2:
|
||||
if (Creature* arnath = ObjectAccessor::GetCreature(*me, _instance->GetData64(DATA_CAPTAIN_ARNATH)))
|
||||
if (Creature* arnath = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_CAPTAIN_ARNATH)))
|
||||
arnath->AI()->Talk(SAY_ARNATH_INTRO_2);
|
||||
break;
|
||||
case EVENT_CROK_INTRO_3:
|
||||
@@ -956,7 +956,7 @@ public:
|
||||
|
||||
private:
|
||||
EventMap _events;
|
||||
std::set<uint64> _aliveTrash;
|
||||
GuidSet _aliveTrash;
|
||||
InstanceScript* _instance;
|
||||
uint32 _currentWPid;
|
||||
uint32 _wipeCheckTimer;
|
||||
@@ -1004,12 +1004,12 @@ public:
|
||||
_JustDied();
|
||||
Talk(SAY_SVALNA_DEATH);
|
||||
|
||||
if (Creature* crok = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_CROK_SCOURGEBANE))) // _isEventDone = true, setActive(false)
|
||||
if (Creature* crok = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_CROK_SCOURGEBANE))) // _isEventDone = true, setActive(false)
|
||||
crok->AI()->DoAction(ACTION_RESET_EVENT);
|
||||
|
||||
uint64 delay = 6000;
|
||||
for (uint32 i = 0; i < 4; ++i)
|
||||
if (Creature* crusader = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_CAPTAIN_ARNATH + i)))
|
||||
if (Creature* crusader = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_CAPTAIN_ARNATH + i)))
|
||||
if (crusader->IsAlive())
|
||||
{
|
||||
if (crusader->GetEntry() == crusader->GetCreatureData()->id)
|
||||
@@ -1033,7 +1033,7 @@ public:
|
||||
}
|
||||
_EnterCombat();
|
||||
me->LowerPlayerDamageReq(me->GetMaxHealth());
|
||||
if (Creature* crok = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_CROK_SCOURGEBANE)))
|
||||
if (Creature* crok = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_CROK_SCOURGEBANE)))
|
||||
{
|
||||
crok->AI()->Talk(SAY_CROK_COMBAT_SVALNA);
|
||||
crok->AI()->AttackStart(me);
|
||||
@@ -1217,7 +1217,7 @@ public:
|
||||
{
|
||||
if (action == ACTION_START_GAUNTLET)
|
||||
{
|
||||
if (Creature* crok = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_CROK_SCOURGEBANE)))
|
||||
if (Creature* crok = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_CROK_SCOURGEBANE)))
|
||||
{
|
||||
FollowAngle = me->GetAngle(crok) + me->GetOrientation();
|
||||
FollowDist = me->GetDistance2d(crok);
|
||||
@@ -1244,7 +1244,7 @@ public:
|
||||
return;
|
||||
|
||||
me->GetMotionMaster()->Clear(false);
|
||||
if (Creature* crok = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_CROK_SCOURGEBANE)))
|
||||
if (Creature* crok = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_CROK_SCOURGEBANE)))
|
||||
me->GetMotionMaster()->MoveFollow(crok, FollowDist, FollowAngle, MOTION_SLOT_IDLE);
|
||||
else
|
||||
me->GetMotionMaster()->MoveTargetedHome();
|
||||
@@ -2327,7 +2327,7 @@ public:
|
||||
{
|
||||
if (InstanceScript* instance = player->GetInstanceScript())
|
||||
if (instance->GetBossState(DATA_SISTER_SVALNA) != DONE)
|
||||
if (Creature* crok = ObjectAccessor::GetCreature(*player, instance->GetData64(DATA_CROK_SCOURGEBANE)))
|
||||
if (Creature* crok = ObjectAccessor::GetCreature(*player, instance->GetGuidData(DATA_CROK_SCOURGEBANE)))
|
||||
{
|
||||
if (!crok->IsAlive())
|
||||
{
|
||||
@@ -3712,7 +3712,7 @@ public:
|
||||
{
|
||||
if (InstanceScript* instance = player->GetInstanceScript())
|
||||
if (instance->GetBossState(DATA_SINDRAGOSA_GAUNTLET) == NOT_STARTED && !player->IsGameMaster())
|
||||
if (Creature* gauntlet = ObjectAccessor::GetCreature(*player, instance->GetData64(NPC_SINDRAGOSA_GAUNTLET)))
|
||||
if (Creature* gauntlet = ObjectAccessor::GetCreature(*player, instance->GetGuidData(NPC_SINDRAGOSA_GAUNTLET)))
|
||||
gauntlet->AI()->DoAction(ACTION_START_GAUNTLET);
|
||||
return true;
|
||||
}
|
||||
@@ -3727,7 +3727,7 @@ public:
|
||||
{
|
||||
if (InstanceScript* instance = player->GetInstanceScript())
|
||||
if (instance->GetData(DATA_PUTRICIDE_TRAP_STATE) == NOT_STARTED && !player->IsGameMaster())
|
||||
if (Creature* trap = ObjectAccessor::GetCreature(*player, instance->GetData64(NPC_PUTRICADES_TRAP)))
|
||||
if (Creature* trap = ObjectAccessor::GetCreature(*player, instance->GetGuidData(NPC_PUTRICADES_TRAP)))
|
||||
trap->AI()->DoAction(ACTION_START_GAUNTLET);
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -160,63 +160,15 @@ public:
|
||||
// pussywizard:
|
||||
IsBuffAvailable = true;
|
||||
WeeklyQuestId10 = 0;
|
||||
PutricideEnteranceDoorGUID = 0;
|
||||
GasReleaseValveGUID = 0;
|
||||
OozeReleaseValveGUID = 0;
|
||||
PutricideEventProgress = 0;
|
||||
LichKingHeroicAvailable = true;
|
||||
LichKingRandomWhisperTimer = 120 * IN_MILLISECONDS;
|
||||
DarkwhisperElevatorTimer = 3000;
|
||||
memset(&WeeklyQuestNpcGUID, 0, sizeof(WeeklyQuestNpcGUID));
|
||||
ScourgeTransporterFirstGUID = 0;
|
||||
|
||||
SetBossNumber(MAX_ENCOUNTERS);
|
||||
LoadDoorData(doorData);
|
||||
TeamIdInInstance = TEAM_NEUTRAL;
|
||||
HeroicAttempts = MaxHeroicAttempts;
|
||||
LadyDeathwhisperGUID = 0;
|
||||
LadyDeathwisperElevatorGUID = 0;
|
||||
GunshipGUID = 0;
|
||||
EnemyGunshipGUID = 0;
|
||||
GunshipArmoryGUID = 0;
|
||||
DeathbringerSaurfangGUID = 0;
|
||||
DeathbringerSaurfangDoorGUID = 0;
|
||||
DeathbringerSaurfangEventGUID = 0;
|
||||
DeathbringersCacheGUID = 0;
|
||||
SaurfangTeleportGUID = 0;
|
||||
PlagueSigilGUID = 0;
|
||||
BloodwingSigilGUID = 0;
|
||||
FrostwingSigilGUID = 0;
|
||||
memset(PutricidePipeGUIDs, 0, 2 * sizeof(uint64));
|
||||
memset(PutricideGateGUIDs, 0, 2 * sizeof(uint64));
|
||||
PutricideCollisionGUID = 0;
|
||||
FestergutGUID = 0;
|
||||
RotfaceGUID = 0;
|
||||
ProfessorPutricideGUID = 0;
|
||||
PutricideTableGUID = 0;
|
||||
memset(BloodCouncilGUIDs, 0, 3 * sizeof(uint64));
|
||||
BloodCouncilControllerGUID = 0;
|
||||
BloodQueenLanaThelGUID = 0;
|
||||
CrokScourgebaneGUID = 0;
|
||||
memset(CrokCaptainGUIDs, 0, 4 * sizeof(uint64));
|
||||
SisterSvalnaGUID = 0;
|
||||
ValithriaDreamwalkerGUID = 0;
|
||||
ValithriaLichKingGUID = 0;
|
||||
ValithriaTriggerGUID = 0;
|
||||
PutricadeTrapGUID = 0;
|
||||
SindragosaGauntletGUID = 0;
|
||||
SindragosaGUID = 0;
|
||||
SpinestalkerGUID = 0;
|
||||
RimefangGUID = 0;
|
||||
TheLichKingTeleportGUID = 0;
|
||||
TheLichKingGUID = 0;
|
||||
HighlordTirionFordringGUID = 0;
|
||||
TerenasMenethilGUID = 0;
|
||||
ArthasPlatformGUID = 0;
|
||||
ArthasPrecipiceGUID = 0;
|
||||
FrozenThroneEdgeGUID = 0;
|
||||
FrozenThroneWindGUID = 0;
|
||||
FrozenThroneWarningGUID = 0;
|
||||
IsBonedEligible = true;
|
||||
IsOozeDanceEligible = true;
|
||||
IsNauseaEligible = true;
|
||||
@@ -279,7 +231,7 @@ public:
|
||||
}
|
||||
|
||||
// apply ICC buff to pets/summons
|
||||
if (GetData(DATA_BUFF_AVAILABLE) && IS_PLAYER_GUID(creature->GetOwnerGUID()) && creature->HasUnitTypeMask(UNIT_MASK_MINION | UNIT_MASK_GUARDIAN | UNIT_MASK_CONTROLABLE_GUARDIAN) && creature->CanHaveThreatList())
|
||||
if (GetData(DATA_BUFF_AVAILABLE) && creature->GetOwnerGUID().IsPlayer() && creature->HasUnitTypeMask(UNIT_MASK_MINION | UNIT_MASK_GUARDIAN | UNIT_MASK_CONTROLABLE_GUARDIAN) && creature->CanHaveThreatList())
|
||||
if (Unit* owner = creature->GetOwner())
|
||||
if (Player* plr = owner->ToPlayer())
|
||||
{
|
||||
@@ -512,10 +464,10 @@ public:
|
||||
void OnCreatureRemove(Creature* creature) override
|
||||
{
|
||||
if (creature->GetEntry() == NPC_SINDRAGOSA)
|
||||
SindragosaGUID = 0;
|
||||
SindragosaGUID.Clear();
|
||||
}
|
||||
|
||||
uint32 GetCreatureEntry(uint32 /*guidLow*/, CreatureData const* data) override
|
||||
uint32 GetCreatureEntry(ObjectGuid::LowType /*guidLow*/, CreatureData const* data) override
|
||||
{
|
||||
if (TeamIdInInstance == TEAM_NEUTRAL)
|
||||
{
|
||||
@@ -560,7 +512,7 @@ public:
|
||||
return entry;
|
||||
}
|
||||
|
||||
uint32 GetGameObjectEntry(uint32 /*guidLow*/, uint32 entry) override
|
||||
uint32 GetGameObjectEntry(ObjectGuid::LowType /*guidLow*/, uint32 entry) override
|
||||
{
|
||||
if (TeamIdInInstance == TEAM_NEUTRAL)
|
||||
{
|
||||
@@ -620,14 +572,14 @@ public:
|
||||
|
||||
if (creature->AI()->GetData(1/*DATA_FROSTWYRM_OWNER*/) == DATA_SPINESTALKER)
|
||||
{
|
||||
SpinestalkerTrash.erase(creature->GetDBTableGUIDLow());
|
||||
SpinestalkerTrash.erase(creature->GetSpawnId());
|
||||
if (SpinestalkerTrash.empty())
|
||||
if (Creature* spinestalk = instance->GetCreature(SpinestalkerGUID))
|
||||
spinestalk->AI()->DoAction(ACTION_START_FROSTWYRM);
|
||||
}
|
||||
else
|
||||
{
|
||||
RimefangTrash.erase(creature->GetDBTableGUIDLow());
|
||||
RimefangTrash.erase(creature->GetSpawnId());
|
||||
if (RimefangTrash.empty())
|
||||
if (Creature* spinestalk = instance->GetCreature(RimefangGUID))
|
||||
spinestalk->AI()->DoAction(ACTION_START_FROSTWYRM);
|
||||
@@ -642,7 +594,7 @@ public:
|
||||
if (GetBossState(DATA_SINDRAGOSA) == DONE)
|
||||
return;
|
||||
|
||||
FrostwyrmGUIDs.erase(creature->GetDBTableGUIDLow());
|
||||
FrostwyrmGUIDs.erase(creature->GetSpawnId());
|
||||
if (FrostwyrmGUIDs.empty())
|
||||
{
|
||||
instance->LoadGrid(SindragosaSpawnPos.GetPositionX(), SindragosaSpawnPos.GetPositionY());
|
||||
@@ -893,7 +845,7 @@ public:
|
||||
break;
|
||||
case GO_THE_SKYBREAKER_A:
|
||||
case GO_ORGRIMS_HAMMER_H:
|
||||
GunshipGUID = 0;
|
||||
GunshipGUID.Clear();
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
@@ -941,7 +893,7 @@ public:
|
||||
return 0;
|
||||
}
|
||||
|
||||
uint64 GetData64(uint32 type) const override
|
||||
ObjectGuid GetGuidData(uint32 type) const override
|
||||
{
|
||||
switch (type)
|
||||
{
|
||||
@@ -1014,7 +966,7 @@ public:
|
||||
break;
|
||||
}
|
||||
|
||||
return 0;
|
||||
return ObjectGuid::Empty;
|
||||
}
|
||||
|
||||
void HandleDropAttempt(bool drop = true)
|
||||
@@ -1681,7 +1633,7 @@ public:
|
||||
uint8 id = urand(0, 15);
|
||||
std::string const& text = sCreatureTextMgr->GetLocalizedChatString(NPC_THE_LICH_KING_LH, 0, 20 + id, 0, LOCALE_enUS);
|
||||
WorldPacket data;
|
||||
ChatHandler::BuildChatPacket(data, CHAT_MSG_MONSTER_WHISPER, LANG_UNIVERSAL, 0, player->GetGUID(), text, CHAT_TAG_NONE, "The Lich King");
|
||||
ChatHandler::BuildChatPacket(data, CHAT_MSG_MONSTER_WHISPER, LANG_UNIVERSAL, ObjectGuid::Empty, player->GetGUID(), text, CHAT_TAG_NONE, "The Lich King");
|
||||
player->SendPlaySound(17235 + id, true);
|
||||
player->SendDirectMessage(&data);
|
||||
}
|
||||
@@ -1900,68 +1852,68 @@ public:
|
||||
// pussywizard:
|
||||
bool IsBuffAvailable;
|
||||
uint32 WeeklyQuestId10; // contains id from 10man for any difficulty (for simplicity)
|
||||
uint64 WeeklyQuestNpcGUID[WeeklyNPCs];
|
||||
uint64 PutricideEnteranceDoorGUID;
|
||||
ObjectGuid WeeklyQuestNpcGUID[WeeklyNPCs];
|
||||
ObjectGuid PutricideEnteranceDoorGUID;
|
||||
uint32 PutricideEventProgress;
|
||||
uint64 GasReleaseValveGUID;
|
||||
uint64 OozeReleaseValveGUID;
|
||||
ObjectGuid GasReleaseValveGUID;
|
||||
ObjectGuid OozeReleaseValveGUID;
|
||||
bool LichKingHeroicAvailable;
|
||||
uint32 LichKingRandomWhisperTimer;
|
||||
uint32 DarkwhisperElevatorTimer;
|
||||
uint64 ScourgeTransporterFirstGUID;
|
||||
ObjectGuid ScourgeTransporterFirstGUID;
|
||||
|
||||
EventMap Events;
|
||||
uint64 LadyDeathwhisperGUID;
|
||||
uint64 LadyDeathwisperElevatorGUID;
|
||||
uint64 GunshipGUID;
|
||||
uint64 EnemyGunshipGUID;
|
||||
uint64 GunshipArmoryGUID;
|
||||
uint64 DeathbringerSaurfangGUID;
|
||||
uint64 DeathbringerSaurfangDoorGUID;
|
||||
uint64 DeathbringerSaurfangEventGUID; // Muradin Bronzebeard or High Overlord Saurfang
|
||||
uint64 DeathbringersCacheGUID;
|
||||
uint64 SaurfangTeleportGUID;
|
||||
uint64 PlagueSigilGUID;
|
||||
uint64 BloodwingSigilGUID;
|
||||
uint64 FrostwingSigilGUID;
|
||||
uint64 PutricidePipeGUIDs[2];
|
||||
uint64 PutricideGateGUIDs[2];
|
||||
uint64 PutricideCollisionGUID;
|
||||
uint64 FestergutGUID;
|
||||
uint64 RotfaceGUID;
|
||||
uint64 ProfessorPutricideGUID;
|
||||
uint64 PutricideTableGUID;
|
||||
uint64 BloodCouncilGUIDs[3];
|
||||
uint64 BloodCouncilControllerGUID;
|
||||
uint64 BloodQueenLanaThelGUID;
|
||||
uint64 CrokScourgebaneGUID;
|
||||
uint64 CrokCaptainGUIDs[4];
|
||||
uint64 SisterSvalnaGUID;
|
||||
uint64 ValithriaDreamwalkerGUID;
|
||||
uint64 ValithriaLichKingGUID;
|
||||
uint64 ValithriaTriggerGUID;
|
||||
uint64 PutricadeTrapGUID;
|
||||
uint64 SindragosaGauntletGUID;
|
||||
uint64 SindragosaGUID;
|
||||
uint64 SpinestalkerGUID;
|
||||
uint64 RimefangGUID;
|
||||
uint64 TheLichKingTeleportGUID;
|
||||
uint64 TheLichKingGUID;
|
||||
uint64 HighlordTirionFordringGUID;
|
||||
uint64 TerenasMenethilGUID;
|
||||
uint64 ArthasPlatformGUID;
|
||||
uint64 ArthasPrecipiceGUID;
|
||||
uint64 FrozenThroneEdgeGUID;
|
||||
uint64 FrozenThroneWindGUID;
|
||||
uint64 FrozenThroneWarningGUID;
|
||||
uint64 FrozenBolvarGUID;
|
||||
uint64 PillarsChainedGUID;
|
||||
uint64 PillarsUnchainedGUID;
|
||||
ObjectGuid LadyDeathwhisperGUID;
|
||||
ObjectGuid LadyDeathwisperElevatorGUID;
|
||||
ObjectGuid GunshipGUID;
|
||||
ObjectGuid EnemyGunshipGUID;
|
||||
ObjectGuid GunshipArmoryGUID;
|
||||
ObjectGuid DeathbringerSaurfangGUID;
|
||||
ObjectGuid DeathbringerSaurfangDoorGUID;
|
||||
ObjectGuid DeathbringerSaurfangEventGUID; // Muradin Bronzebeard or High Overlord Saurfang
|
||||
ObjectGuid DeathbringersCacheGUID;
|
||||
ObjectGuid SaurfangTeleportGUID;
|
||||
ObjectGuid PlagueSigilGUID;
|
||||
ObjectGuid BloodwingSigilGUID;
|
||||
ObjectGuid FrostwingSigilGUID;
|
||||
ObjectGuid PutricidePipeGUIDs[2];
|
||||
ObjectGuid PutricideGateGUIDs[2];
|
||||
ObjectGuid PutricideCollisionGUID;
|
||||
ObjectGuid FestergutGUID;
|
||||
ObjectGuid RotfaceGUID;
|
||||
ObjectGuid ProfessorPutricideGUID;
|
||||
ObjectGuid PutricideTableGUID;
|
||||
ObjectGuid BloodCouncilGUIDs[3];
|
||||
ObjectGuid BloodCouncilControllerGUID;
|
||||
ObjectGuid BloodQueenLanaThelGUID;
|
||||
ObjectGuid CrokScourgebaneGUID;
|
||||
ObjectGuid CrokCaptainGUIDs[4];
|
||||
ObjectGuid SisterSvalnaGUID;
|
||||
ObjectGuid ValithriaDreamwalkerGUID;
|
||||
ObjectGuid ValithriaLichKingGUID;
|
||||
ObjectGuid ValithriaTriggerGUID;
|
||||
ObjectGuid PutricadeTrapGUID;
|
||||
ObjectGuid SindragosaGauntletGUID;
|
||||
ObjectGuid SindragosaGUID;
|
||||
ObjectGuid SpinestalkerGUID;
|
||||
ObjectGuid RimefangGUID;
|
||||
ObjectGuid TheLichKingTeleportGUID;
|
||||
ObjectGuid TheLichKingGUID;
|
||||
ObjectGuid HighlordTirionFordringGUID;
|
||||
ObjectGuid TerenasMenethilGUID;
|
||||
ObjectGuid ArthasPlatformGUID;
|
||||
ObjectGuid ArthasPrecipiceGUID;
|
||||
ObjectGuid FrozenThroneEdgeGUID;
|
||||
ObjectGuid FrozenThroneWindGUID;
|
||||
ObjectGuid FrozenThroneWarningGUID;
|
||||
ObjectGuid FrozenBolvarGUID;
|
||||
ObjectGuid PillarsChainedGUID;
|
||||
ObjectGuid PillarsUnchainedGUID;
|
||||
TeamId TeamIdInInstance;
|
||||
uint32 ColdflameJetsState;
|
||||
std::set<uint32> FrostwyrmGUIDs;
|
||||
std::set<uint32> SpinestalkerTrash;
|
||||
std::set<uint32> RimefangTrash;
|
||||
std::set<ObjectGuid::LowType> FrostwyrmGUIDs;
|
||||
std::set<ObjectGuid::LowType> SpinestalkerTrash;
|
||||
std::set<ObjectGuid::LowType> RimefangTrash;
|
||||
uint32 BloodQuickeningState;
|
||||
uint32 HeroicAttempts;
|
||||
uint16 BloodQuickeningMinutes;
|
||||
|
||||
@@ -87,7 +87,7 @@ public:
|
||||
SummonCryptGuards();
|
||||
if (pInstance)
|
||||
{
|
||||
if (GameObject* go = me->GetMap()->GetGameObject(pInstance->GetData64(DATA_ANUB_GATE)))
|
||||
if (GameObject* go = me->GetMap()->GetGameObject(pInstance->GetGuidData(DATA_ANUB_GATE)))
|
||||
{
|
||||
go->SetGoState(GO_STATE_ACTIVE);
|
||||
}
|
||||
@@ -151,7 +151,7 @@ public:
|
||||
Talk(SAY_AGGRO);
|
||||
if (pInstance)
|
||||
{
|
||||
if (GameObject* go = me->GetMap()->GetGameObject(pInstance->GetData64(DATA_ANUB_GATE)))
|
||||
if (GameObject* go = me->GetMap()->GetGameObject(pInstance->GetGuidData(DATA_ANUB_GATE)))
|
||||
{
|
||||
go->SetGoState(GO_STATE_READY);
|
||||
}
|
||||
@@ -183,7 +183,7 @@ public:
|
||||
{
|
||||
if (!me->IsInCombat() && sayGreet)
|
||||
{
|
||||
for (std::list<uint64>::iterator itr = summons.begin(); itr != summons.end(); ++itr)
|
||||
for (SummonList::iterator itr = summons.begin(); itr != summons.end(); ++itr)
|
||||
{
|
||||
if (pInstance)
|
||||
{
|
||||
|
||||
@@ -92,7 +92,7 @@ public:
|
||||
SummonHelpers();
|
||||
if (pInstance)
|
||||
{
|
||||
if (GameObject* go = me->GetMap()->GetGameObject(pInstance->GetData64(DATA_FAERLINA_WEB)))
|
||||
if (GameObject* go = me->GetMap()->GetGameObject(pInstance->GetGuidData(DATA_FAERLINA_WEB)))
|
||||
{
|
||||
go->SetGoState(GO_STATE_ACTIVE);
|
||||
}
|
||||
@@ -111,7 +111,7 @@ public:
|
||||
events.SetPhase(1);
|
||||
if (pInstance)
|
||||
{
|
||||
if (GameObject* go = me->GetMap()->GetGameObject(pInstance->GetData64(DATA_FAERLINA_WEB)))
|
||||
if (GameObject* go = me->GetMap()->GetGameObject(pInstance->GetGuidData(DATA_FAERLINA_WEB)))
|
||||
{
|
||||
go->SetGoState(GO_STATE_READY);
|
||||
}
|
||||
@@ -149,7 +149,7 @@ public:
|
||||
Talk(SAY_DEATH);
|
||||
if (pInstance)
|
||||
{
|
||||
if (GameObject* go = me->GetMap()->GetGameObject(pInstance->GetData64(DATA_FAERLINA_WEB)))
|
||||
if (GameObject* go = me->GetMap()->GetGameObject(pInstance->GetGuidData(DATA_FAERLINA_WEB)))
|
||||
{
|
||||
go->SetGoState(GO_STATE_ACTIVE);
|
||||
}
|
||||
@@ -160,7 +160,7 @@ public:
|
||||
{
|
||||
if (!me->IsInCombat() && sayGreet)
|
||||
{
|
||||
for (std::list<uint64>::iterator itr = summons.begin(); itr != summons.end(); ++itr)
|
||||
for (SummonList::iterator itr = summons.begin(); itr != summons.end(); ++itr)
|
||||
{
|
||||
if (pInstance)
|
||||
{
|
||||
|
||||
@@ -193,7 +193,7 @@ public:
|
||||
}
|
||||
if (pInstance)
|
||||
{
|
||||
if (GameObject* go = me->GetMap()->GetGameObject(pInstance->GetData64(DATA_HORSEMEN_GATE)))
|
||||
if (GameObject* go = me->GetMap()->GetGameObject(pInstance->GetGuidData(DATA_HORSEMEN_GATE)))
|
||||
{
|
||||
if (pInstance->GetBossState(BOSS_GOTHIK) == DONE)
|
||||
{
|
||||
@@ -270,7 +270,7 @@ public:
|
||||
player->SummonGameObject(RAID_MODE(GO_HORSEMEN_CHEST_10, GO_HORSEMEN_CHEST_25), 2514.8f, -2944.9f, 245.55f, 5.51f, 0, 0, 0, 0, 0);
|
||||
}
|
||||
}
|
||||
if (GameObject* go = me->GetMap()->GetGameObject(pInstance->GetData64(DATA_HORSEMEN_GATE)))
|
||||
if (GameObject* go = me->GetMap()->GetGameObject(pInstance->GetGuidData(DATA_HORSEMEN_GATE)))
|
||||
{
|
||||
go->SetGoState(GO_STATE_ACTIVE);
|
||||
}
|
||||
@@ -292,7 +292,7 @@ public:
|
||||
}
|
||||
if (pInstance)
|
||||
{
|
||||
if (GameObject* go = me->GetMap()->GetGameObject(pInstance->GetData64(DATA_HORSEMEN_GATE)))
|
||||
if (GameObject* go = me->GetMap()->GetGameObject(pInstance->GetGuidData(DATA_HORSEMEN_GATE)))
|
||||
{
|
||||
go->SetGoState(GO_STATE_READY);
|
||||
}
|
||||
|
||||
@@ -217,15 +217,15 @@ public:
|
||||
me->NearTeleportTo(2642.139f, -3386.959f, 285.492f, 6.265f);
|
||||
if (pInstance)
|
||||
{
|
||||
if (GameObject* go = me->GetMap()->GetGameObject(pInstance->GetData64(DATA_GOTHIK_ENTER_GATE)))
|
||||
if (GameObject* go = me->GetMap()->GetGameObject(pInstance->GetGuidData(DATA_GOTHIK_ENTER_GATE)))
|
||||
{
|
||||
go->SetGoState(GO_STATE_ACTIVE);
|
||||
}
|
||||
if (GameObject* go = me->GetMap()->GetGameObject(pInstance->GetData64(DATA_GOTHIK_INNER_GATE)))
|
||||
if (GameObject* go = me->GetMap()->GetGameObject(pInstance->GetGuidData(DATA_GOTHIK_INNER_GATE)))
|
||||
{
|
||||
go->SetGoState(GO_STATE_ACTIVE);
|
||||
}
|
||||
if (GameObject* go = me->GetMap()->GetGameObject(pInstance->GetData64(DATA_GOTHIK_EXIT_GATE)))
|
||||
if (GameObject* go = me->GetMap()->GetGameObject(pInstance->GetGuidData(DATA_GOTHIK_EXIT_GATE)))
|
||||
{
|
||||
go->SetGoState(GO_STATE_READY);
|
||||
}
|
||||
@@ -245,11 +245,11 @@ public:
|
||||
events.ScheduleEvent(EVENT_CHECK_PLAYERS, 120000);
|
||||
if (pInstance)
|
||||
{
|
||||
if (GameObject* go = me->GetMap()->GetGameObject(pInstance->GetData64(DATA_GOTHIK_ENTER_GATE)))
|
||||
if (GameObject* go = me->GetMap()->GetGameObject(pInstance->GetGuidData(DATA_GOTHIK_ENTER_GATE)))
|
||||
{
|
||||
go->SetGoState(GO_STATE_READY);
|
||||
}
|
||||
if (GameObject* go = me->GetMap()->GetGameObject(pInstance->GetData64(DATA_GOTHIK_INNER_GATE)))
|
||||
if (GameObject* go = me->GetMap()->GetGameObject(pInstance->GetGuidData(DATA_GOTHIK_INNER_GATE)))
|
||||
{
|
||||
go->SetGoState(GO_STATE_READY);
|
||||
}
|
||||
@@ -294,15 +294,15 @@ public:
|
||||
summons.DespawnAll();
|
||||
if (pInstance)
|
||||
{
|
||||
if (GameObject* go = me->GetMap()->GetGameObject(pInstance->GetData64(DATA_GOTHIK_ENTER_GATE)))
|
||||
if (GameObject* go = me->GetMap()->GetGameObject(pInstance->GetGuidData(DATA_GOTHIK_ENTER_GATE)))
|
||||
{
|
||||
go->SetGoState(GO_STATE_ACTIVE);
|
||||
}
|
||||
if (GameObject* go = me->GetMap()->GetGameObject(pInstance->GetData64(DATA_GOTHIK_INNER_GATE)))
|
||||
if (GameObject* go = me->GetMap()->GetGameObject(pInstance->GetGuidData(DATA_GOTHIK_INNER_GATE)))
|
||||
{
|
||||
go->SetGoState(GO_STATE_ACTIVE);
|
||||
}
|
||||
if (GameObject* go = me->GetMap()->GetGameObject(pInstance->GetData64(DATA_GOTHIK_EXIT_GATE)))
|
||||
if (GameObject* go = me->GetMap()->GetGameObject(pInstance->GetGuidData(DATA_GOTHIK_EXIT_GATE)))
|
||||
{
|
||||
go->SetGoState(GO_STATE_ACTIVE);
|
||||
}
|
||||
@@ -447,7 +447,7 @@ public:
|
||||
case EVENT_CHECK_HEALTH:
|
||||
if (me->HealthBelowPct(30) && pInstance)
|
||||
{
|
||||
if (GameObject* go = me->GetMap()->GetGameObject(pInstance->GetData64(DATA_GOTHIK_INNER_GATE)))
|
||||
if (GameObject* go = me->GetMap()->GetGameObject(pInstance->GetGuidData(DATA_GOTHIK_INNER_GATE)))
|
||||
{
|
||||
go->SetGoState(GO_STATE_ACTIVE);
|
||||
}
|
||||
@@ -482,7 +482,7 @@ public:
|
||||
case EVENT_CHECK_PLAYERS:
|
||||
if (!CheckGroupSplitted())
|
||||
{
|
||||
if (GameObject* go = me->GetMap()->GetGameObject(pInstance->GetData64(DATA_GOTHIK_INNER_GATE)))
|
||||
if (GameObject* go = me->GetMap()->GetGameObject(pInstance->GetGuidData(DATA_GOTHIK_INNER_GATE)))
|
||||
{
|
||||
go->SetGoState(GO_STATE_ACTIVE);
|
||||
}
|
||||
|
||||
@@ -79,10 +79,7 @@ public:
|
||||
me->GetCreaturesWithEntryInRange(StichedGiants, 300.0f, NPC_STICHED_GIANT);
|
||||
for (std::list<Creature*>::const_iterator itr = StichedGiants.begin(); itr != StichedGiants.end(); ++itr)
|
||||
{
|
||||
if ((*itr)->GetGUID())
|
||||
{
|
||||
(*itr)->ToCreature()->AI()->AttackStart(me->GetVictim());
|
||||
}
|
||||
(*itr)->ToCreature()->AI()->AttackStart(me->GetVictim());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -75,7 +75,7 @@ public:
|
||||
moveRight = true;
|
||||
if (pInstance)
|
||||
{
|
||||
if (GameObject* go = me->GetMap()->GetGameObject(pInstance->GetData64(DATA_HEIGAN_ENTER_GATE)))
|
||||
if (GameObject* go = me->GetMap()->GetGameObject(pInstance->GetGuidData(DATA_HEIGAN_ENTER_GATE)))
|
||||
{
|
||||
go->SetGoState(GO_STATE_ACTIVE);
|
||||
}
|
||||
@@ -107,7 +107,7 @@ public:
|
||||
Talk(SAY_AGGRO);
|
||||
if (pInstance)
|
||||
{
|
||||
if (GameObject* go = me->GetMap()->GetGameObject(pInstance->GetData64(DATA_HEIGAN_ENTER_GATE)))
|
||||
if (GameObject* go = me->GetMap()->GetGameObject(pInstance->GetGuidData(DATA_HEIGAN_ENTER_GATE)))
|
||||
{
|
||||
go->SetGoState(GO_STATE_READY);
|
||||
}
|
||||
|
||||
@@ -210,12 +210,12 @@ public:
|
||||
summons.DespawnAll();
|
||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_DISABLE_MOVE);
|
||||
me->SetReactState(REACT_AGGRESSIVE);
|
||||
if (GameObject* go = me->GetMap()->GetGameObject(pInstance->GetData64(DATA_KELTHUZAD_FLOOR)))
|
||||
if (GameObject* go = me->GetMap()->GetGameObject(pInstance->GetGuidData(DATA_KELTHUZAD_FLOOR)))
|
||||
{
|
||||
go->SetPhaseMask(1, true);
|
||||
go->SetGoState(GO_STATE_READY);
|
||||
}
|
||||
if (GameObject* go = me->GetMap()->GetGameObject(pInstance->GetData64(DATA_KELTHUZAD_GATE)))
|
||||
if (GameObject* go = me->GetMap()->GetGameObject(pInstance->GetGuidData(DATA_KELTHUZAD_GATE)))
|
||||
{
|
||||
if(!_justSpawned) // Don't open the door if we just spawned and are still doing the conversation
|
||||
{
|
||||
@@ -223,19 +223,19 @@ public:
|
||||
}
|
||||
}
|
||||
_justSpawned = false;
|
||||
if (GameObject* go = me->GetMap()->GetGameObject(pInstance->GetData64(DATA_KELTHUZAD_PORTAL_1)))
|
||||
if (GameObject* go = me->GetMap()->GetGameObject(pInstance->GetGuidData(DATA_KELTHUZAD_PORTAL_1)))
|
||||
{
|
||||
go->SetGoState(GO_STATE_READY);
|
||||
}
|
||||
if (GameObject* go = me->GetMap()->GetGameObject(pInstance->GetData64(DATA_KELTHUZAD_PORTAL_2)))
|
||||
if (GameObject* go = me->GetMap()->GetGameObject(pInstance->GetGuidData(DATA_KELTHUZAD_PORTAL_2)))
|
||||
{
|
||||
go->SetGoState(GO_STATE_READY);
|
||||
}
|
||||
if (GameObject* go = me->GetMap()->GetGameObject(pInstance->GetData64(DATA_KELTHUZAD_PORTAL_3)))
|
||||
if (GameObject* go = me->GetMap()->GetGameObject(pInstance->GetGuidData(DATA_KELTHUZAD_PORTAL_3)))
|
||||
{
|
||||
go->SetGoState(GO_STATE_READY);
|
||||
}
|
||||
if (GameObject* go = me->GetMap()->GetGameObject(pInstance->GetData64(DATA_KELTHUZAD_PORTAL_4)))
|
||||
if (GameObject* go = me->GetMap()->GetGameObject(pInstance->GetGuidData(DATA_KELTHUZAD_PORTAL_4)))
|
||||
{
|
||||
go->SetGoState(GO_STATE_READY);
|
||||
}
|
||||
@@ -270,7 +270,7 @@ public:
|
||||
Talk(SAY_DEATH);
|
||||
if (pInstance)
|
||||
{
|
||||
if (GameObject* go = me->GetMap()->GetGameObject(pInstance->GetData64(DATA_KELTHUZAD_GATE)))
|
||||
if (GameObject* go = me->GetMap()->GetGameObject(pInstance->GetGuidData(DATA_KELTHUZAD_GATE)))
|
||||
{
|
||||
go->SetGoState(GO_STATE_ACTIVE);
|
||||
}
|
||||
@@ -289,7 +289,7 @@ public:
|
||||
Talk(SAY_SUMMON_MINIONS);
|
||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_DISABLE_MOVE);
|
||||
me->RemoveAllAttackers();
|
||||
me->SetTarget(0);
|
||||
me->SetTarget();
|
||||
me->SetReactState(REACT_PASSIVE);
|
||||
me->CastSpell(me, SPELL_KELTHUZAD_CHANNEL, false);
|
||||
events.ScheduleEvent(EVENT_SPAWN_POOL, 5000);
|
||||
@@ -300,13 +300,13 @@ public:
|
||||
events.ScheduleEvent(EVENT_ENRAGE, 900000);
|
||||
if (pInstance)
|
||||
{
|
||||
if (GameObject* go = me->GetMap()->GetGameObject(pInstance->GetData64(DATA_KELTHUZAD_FLOOR)))
|
||||
if (GameObject* go = me->GetMap()->GetGameObject(pInstance->GetGuidData(DATA_KELTHUZAD_FLOOR)))
|
||||
{
|
||||
events.ScheduleEvent(EVENT_FLOOR_CHANGE, 15000);
|
||||
go->SetGoState(GO_STATE_ACTIVE);
|
||||
}
|
||||
}
|
||||
if (GameObject* go = me->GetMap()->GetGameObject(pInstance->GetData64(DATA_KELTHUZAD_GATE)))
|
||||
if (GameObject* go = me->GetMap()->GetGameObject(pInstance->GetGuidData(DATA_KELTHUZAD_GATE)))
|
||||
{
|
||||
go->SetGoState(GO_STATE_READY);
|
||||
}
|
||||
@@ -342,7 +342,7 @@ public:
|
||||
case EVENT_FLOOR_CHANGE:
|
||||
if (pInstance)
|
||||
{
|
||||
if (GameObject* go = me->GetMap()->GetGameObject(pInstance->GetData64(DATA_KELTHUZAD_FLOOR)))
|
||||
if (GameObject* go = me->GetMap()->GetGameObject(pInstance->GetGuidData(DATA_KELTHUZAD_FLOOR)))
|
||||
{
|
||||
events.ScheduleEvent(EVENT_FLOOR_CHANGE, 15000);
|
||||
go->SetGoState(GO_STATE_READY);
|
||||
@@ -451,19 +451,19 @@ public:
|
||||
Talk(SAY_REQUEST_AID);
|
||||
events.DelayEvents(5500);
|
||||
events.ScheduleEvent(EVENT_P3_LICH_KING_SAY, 5000);
|
||||
if (GameObject* go = me->GetMap()->GetGameObject(pInstance->GetData64(DATA_KELTHUZAD_PORTAL_1)))
|
||||
if (GameObject* go = me->GetMap()->GetGameObject(pInstance->GetGuidData(DATA_KELTHUZAD_PORTAL_1)))
|
||||
{
|
||||
go->SetGoState(GO_STATE_ACTIVE);
|
||||
}
|
||||
if (GameObject* go = me->GetMap()->GetGameObject(pInstance->GetData64(DATA_KELTHUZAD_PORTAL_2)))
|
||||
if (GameObject* go = me->GetMap()->GetGameObject(pInstance->GetGuidData(DATA_KELTHUZAD_PORTAL_2)))
|
||||
{
|
||||
go->SetGoState(GO_STATE_ACTIVE);
|
||||
}
|
||||
if (GameObject* go = me->GetMap()->GetGameObject(pInstance->GetData64(DATA_KELTHUZAD_PORTAL_3)))
|
||||
if (GameObject* go = me->GetMap()->GetGameObject(pInstance->GetGuidData(DATA_KELTHUZAD_PORTAL_3)))
|
||||
{
|
||||
go->SetGoState(GO_STATE_ACTIVE);
|
||||
}
|
||||
if (GameObject* go = me->GetMap()->GetGameObject(pInstance->GetData64(DATA_KELTHUZAD_PORTAL_4)))
|
||||
if (GameObject* go = me->GetMap()->GetGameObject(pInstance->GetGuidData(DATA_KELTHUZAD_PORTAL_4)))
|
||||
{
|
||||
go->SetGoState(GO_STATE_ACTIVE);
|
||||
}
|
||||
@@ -474,7 +474,7 @@ public:
|
||||
case EVENT_P3_LICH_KING_SAY:
|
||||
if (pInstance)
|
||||
{
|
||||
if (Creature* cr = ObjectAccessor::GetCreature(*me, pInstance->GetData64(DATA_LICH_KING_BOSS)))
|
||||
if (Creature* cr = ObjectAccessor::GetCreature(*me, pInstance->GetGuidData(DATA_LICH_KING_BOSS)))
|
||||
{
|
||||
cr->AI()->Talk(SAY_ANSWER_REQUEST);
|
||||
}
|
||||
|
||||
@@ -67,7 +67,7 @@ public:
|
||||
if (pInstance)
|
||||
{
|
||||
pInstance->SetData(BOSS_LOATHEB, NOT_STARTED);
|
||||
if (GameObject* go = me->GetMap()->GetGameObject(pInstance->GetData64(DATA_LOATHEB_GATE)))
|
||||
if (GameObject* go = me->GetMap()->GetGameObject(pInstance->GetGuidData(DATA_LOATHEB_GATE)))
|
||||
{
|
||||
go->SetGoState(GO_STATE_ACTIVE);
|
||||
}
|
||||
@@ -108,7 +108,7 @@ public:
|
||||
if (pInstance)
|
||||
{
|
||||
pInstance->SetData(BOSS_LOATHEB, IN_PROGRESS);
|
||||
if (GameObject* go = me->GetMap()->GetGameObject(pInstance->GetData64(DATA_LOATHEB_GATE)))
|
||||
if (GameObject* go = me->GetMap()->GetGameObject(pInstance->GetGuidData(DATA_LOATHEB_GATE)))
|
||||
{
|
||||
go->SetGoState(GO_STATE_READY);
|
||||
}
|
||||
|
||||
@@ -88,7 +88,7 @@ public:
|
||||
summons.DespawnAll();
|
||||
if (pInstance)
|
||||
{
|
||||
if (GameObject* go = me->GetMap()->GetGameObject(pInstance->GetData64(DATA_MAEXXNA_GATE)))
|
||||
if (GameObject* go = me->GetMap()->GetGameObject(pInstance->GetGuidData(DATA_MAEXXNA_GATE)))
|
||||
{
|
||||
go->SetGoState(GO_STATE_ACTIVE);
|
||||
}
|
||||
@@ -107,7 +107,7 @@ public:
|
||||
events.ScheduleEvent(EVENT_SUMMON_SPIDERLINGS, 30000);
|
||||
if (pInstance)
|
||||
{
|
||||
if (GameObject* go = me->GetMap()->GetGameObject(pInstance->GetData64(DATA_MAEXXNA_GATE)))
|
||||
if (GameObject* go = me->GetMap()->GetGameObject(pInstance->GetGuidData(DATA_MAEXXNA_GATE)))
|
||||
{
|
||||
go->SetGoState(GO_STATE_READY);
|
||||
}
|
||||
@@ -219,12 +219,14 @@ public:
|
||||
|
||||
struct boss_maexxna_webwrapAI : public NullCreatureAI
|
||||
{
|
||||
explicit boss_maexxna_webwrapAI(Creature* c) : NullCreatureAI(c), victimGUID(0) {}
|
||||
explicit boss_maexxna_webwrapAI(Creature* c) : NullCreatureAI(c) {}
|
||||
|
||||
uint64 victimGUID;
|
||||
void SetGUID(uint64 guid, int32 /*param*/) override
|
||||
ObjectGuid victimGUID;
|
||||
|
||||
void SetGUID(ObjectGuid guid, int32 /*param*/) override
|
||||
{
|
||||
victimGUID = guid;
|
||||
|
||||
if (me->m_spells[0] && victimGUID)
|
||||
{
|
||||
if (Unit* victim = ObjectAccessor::GetUnit(*me, victimGUID))
|
||||
|
||||
@@ -140,7 +140,7 @@ public:
|
||||
timesInBalcony = 0;
|
||||
if (pInstance)
|
||||
{
|
||||
if (GameObject* go = me->GetMap()->GetGameObject(pInstance->GetData64(DATA_NOTH_ENTRY_GATE)))
|
||||
if (GameObject* go = me->GetMap()->GetGameObject(pInstance->GetGuidData(DATA_NOTH_ENTRY_GATE)))
|
||||
{
|
||||
go->SetGoState(GO_STATE_ACTIVE);
|
||||
}
|
||||
@@ -160,7 +160,7 @@ public:
|
||||
StartGroundPhase();
|
||||
if (pInstance)
|
||||
{
|
||||
if (GameObject* go = me->GetMap()->GetGameObject(pInstance->GetData64(DATA_NOTH_ENTRY_GATE)))
|
||||
if (GameObject* go = me->GetMap()->GetGameObject(pInstance->GetGuidData(DATA_NOTH_ENTRY_GATE)))
|
||||
{
|
||||
go->SetGoState(GO_STATE_READY);
|
||||
}
|
||||
@@ -184,7 +184,7 @@ public:
|
||||
Talk(SAY_DEATH);
|
||||
if (pInstance)
|
||||
{
|
||||
if (GameObject* go = me->GetMap()->GetGameObject(pInstance->GetData64(DATA_NOTH_ENTRY_GATE)))
|
||||
if (GameObject* go = me->GetMap()->GetGameObject(pInstance->GetGuidData(DATA_NOTH_ENTRY_GATE)))
|
||||
{
|
||||
go->SetGoState(GO_STATE_ACTIVE);
|
||||
}
|
||||
|
||||
@@ -86,8 +86,8 @@ public:
|
||||
InstanceScript* pInstance;
|
||||
uint8 iceboltCount{};
|
||||
uint32 spawnTimer{};
|
||||
std::list<uint64> blockList;
|
||||
uint64 currentTarget{};
|
||||
GuidList blockList;
|
||||
ObjectGuid currentTarget;
|
||||
|
||||
void InitializeAI() override
|
||||
{
|
||||
@@ -118,7 +118,7 @@ public:
|
||||
events.Reset();
|
||||
iceboltCount = 0;
|
||||
spawnTimer = 0;
|
||||
currentTarget = 0;
|
||||
currentTarget.Clear();
|
||||
blockList.clear();
|
||||
}
|
||||
|
||||
@@ -191,12 +191,12 @@ public:
|
||||
|
||||
bool IsValidExplosionTarget(WorldObject* target)
|
||||
{
|
||||
for (std::list<uint64>::const_iterator itr = blockList.begin(); itr != blockList.end(); ++itr)
|
||||
for (ObjectGuid const guid : blockList)
|
||||
{
|
||||
if (target->GetGUID() == (*itr))
|
||||
if (target->GetGUID() == guid)
|
||||
return false;
|
||||
|
||||
if (Unit* block = ObjectAccessor::GetUnit(*me, *itr))
|
||||
if (Unit* block = ObjectAccessor::GetUnit(*me, guid))
|
||||
{
|
||||
if (block->IsInBetween(me, target, 2.0f) && block->IsWithinDist(target, 10.0f))
|
||||
return false;
|
||||
@@ -293,7 +293,7 @@ public:
|
||||
me->SendMeleeAttackStop(me->GetVictim());
|
||||
me->HandleEmoteCommand(EMOTE_ONESHOT_LIFTOFF);
|
||||
me->SetDisableGravity(true);
|
||||
currentTarget = 0;
|
||||
currentTarget.Clear();
|
||||
events.ScheduleEvent(EVENT_FLIGHT_ICEBOLT, 3000);
|
||||
iceboltCount = RAID_MODE(2, 3);
|
||||
return;
|
||||
@@ -316,7 +316,7 @@ public:
|
||||
bool inList = false;
|
||||
if (!blockList.empty())
|
||||
{
|
||||
for (std::list<uint64>::const_iterator itr = blockList.begin(); itr != blockList.end(); ++itr)
|
||||
for (GuidList::const_iterator itr = blockList.begin(); itr != blockList.end(); ++itr)
|
||||
{
|
||||
if ((*i)->getTarget()->GetGUID() == *itr)
|
||||
{
|
||||
@@ -349,7 +349,7 @@ public:
|
||||
return;
|
||||
}
|
||||
case EVENT_FLIGHT_BREATH:
|
||||
currentTarget = 0;
|
||||
currentTarget.Clear();
|
||||
Talk(EMOTE_BREATH);
|
||||
me->CastSpell(me, SPELL_FROST_MISSILE, false);
|
||||
events.ScheduleEvent(EVENT_FLIGHT_SPELL_EXPLOSION, 8500);
|
||||
@@ -361,7 +361,7 @@ public:
|
||||
case EVENT_FLIGHT_START_LAND:
|
||||
if (!blockList.empty())
|
||||
{
|
||||
for (std::list<uint64>::const_iterator itr = blockList.begin(); itr != blockList.end(); ++itr)
|
||||
for (GuidList::const_iterator itr = blockList.begin(); itr != blockList.end(); ++itr)
|
||||
{
|
||||
if (Unit* block = ObjectAccessor::GetUnit(*me, *itr))
|
||||
{
|
||||
|
||||
@@ -178,7 +178,7 @@ public:
|
||||
}
|
||||
if (pInstance)
|
||||
{
|
||||
if (GameObject* go = me->GetMap()->GetGameObject(pInstance->GetData64(DATA_THADDIUS_GATE)))
|
||||
if (GameObject* go = me->GetMap()->GetGameObject(pInstance->GetGuidData(DATA_THADDIUS_GATE)))
|
||||
{
|
||||
if (pInstance->GetBossState(BOSS_GLUTH) == DONE)
|
||||
{
|
||||
@@ -208,7 +208,7 @@ public:
|
||||
{
|
||||
pInstance->DoRemoveAurasDueToSpellOnPlayers(28059);
|
||||
pInstance->DoRemoveAurasDueToSpellOnPlayers(28084);
|
||||
if (GameObject* go = me->GetMap()->GetGameObject(pInstance->GetData64(DATA_THADDIUS_GATE)))
|
||||
if (GameObject* go = me->GetMap()->GetGameObject(pInstance->GetGuidData(DATA_THADDIUS_GATE)))
|
||||
{
|
||||
go->SetGoState(GO_STATE_ACTIVE);
|
||||
}
|
||||
@@ -365,7 +365,6 @@ public:
|
||||
{
|
||||
pInstance = me->GetInstanceScript();
|
||||
overload = false;
|
||||
myCoil = 0;
|
||||
}
|
||||
|
||||
InstanceScript* pInstance;
|
||||
@@ -373,7 +372,7 @@ public:
|
||||
uint32 pullTimer{};
|
||||
uint32 visualTimer{};
|
||||
bool overload;
|
||||
uint64 myCoil;
|
||||
ObjectGuid myCoil;
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
@@ -421,11 +420,11 @@ public:
|
||||
}
|
||||
if (pInstance)
|
||||
{
|
||||
if (GameObject* go = me->GetMap()->GetGameObject(pInstance->GetData64(DATA_THADDIUS_GATE)))
|
||||
if (GameObject* go = me->GetMap()->GetGameObject(pInstance->GetGuidData(DATA_THADDIUS_GATE)))
|
||||
{
|
||||
go->SetGoState(GO_STATE_READY);
|
||||
}
|
||||
if (Creature* cr = ObjectAccessor::GetCreature(*me, pInstance->GetData64(DATA_THADDIUS_BOSS)))
|
||||
if (Creature* cr = ObjectAccessor::GetCreature(*me, pInstance->GetGuidData(DATA_THADDIUS_BOSS)))
|
||||
{
|
||||
cr->AI()->AttackStart(pWho);
|
||||
cr->AddThreat(pWho, 10.0f);
|
||||
@@ -461,7 +460,7 @@ public:
|
||||
Talk(me->GetEntry() == NPC_STALAGG ? EMOTE_STAL_DEATH : EMOTE_FEUG_DEATH);
|
||||
if (pInstance)
|
||||
{
|
||||
if (Creature* cr = ObjectAccessor::GetCreature(*me, pInstance->GetData64(DATA_THADDIUS_BOSS)))
|
||||
if (Creature* cr = ObjectAccessor::GetCreature(*me, pInstance->GetGuidData(DATA_THADDIUS_BOSS)))
|
||||
{
|
||||
cr->AI()->DoAction(ACTION_SUMMON_DIED);
|
||||
}
|
||||
@@ -530,7 +529,7 @@ public:
|
||||
events.RepeatEvent(20000);
|
||||
if (pInstance)
|
||||
{
|
||||
if (Creature* feugen = ObjectAccessor::GetCreature(*me, pInstance->GetData64(DATA_FEUGEN_BOSS)))
|
||||
if (Creature* feugen = ObjectAccessor::GetCreature(*me, pInstance->GetGuidData(DATA_FEUGEN_BOSS)))
|
||||
{
|
||||
if (!feugen->IsAlive() || !feugen->GetVictim() || !me->GetVictim())
|
||||
return;
|
||||
@@ -734,7 +733,7 @@ public:
|
||||
if (!instance || instance->GetData(DATA_HAD_THADDIUS_GREET) || instance->GetBossState(BOSS_THADDIUS) == DONE)
|
||||
return true;
|
||||
|
||||
if (Creature* thaddius = ObjectAccessor::GetCreature(*player, instance->GetData64(DATA_THADDIUS_BOSS)))
|
||||
if (Creature* thaddius = ObjectAccessor::GetCreature(*player, instance->GetGuidData(DATA_THADDIUS_BOSS)))
|
||||
{
|
||||
thaddius->AI()->Talk(SAY_GREET);
|
||||
}
|
||||
|
||||
@@ -55,54 +55,8 @@ public:
|
||||
for (auto& i : HeiganEruption)
|
||||
i.clear();
|
||||
|
||||
// GOs
|
||||
_patchwerkGateGUID = 0;
|
||||
_gluthGateGUID = 0;
|
||||
_nothEntryGateGUID = 0;
|
||||
_nothExitGateGUID = 0;
|
||||
_heiganGateGUID = 0;
|
||||
_heiganGateExitGUID = 0;
|
||||
_loathebGateGUID = 0;
|
||||
_anubGateGUID = 0;
|
||||
_anubNextGateGUID = 0;
|
||||
_faerlinaWebGUID = 0;
|
||||
_faerlinaGateGUID = 0;
|
||||
_maexxnaGateGUID = 0;
|
||||
_thaddiusGateGUID = 0;
|
||||
_horsemanGateGUID = 0;
|
||||
_kelthuzadFloorGUID = 0;
|
||||
_kelthuzadGateGUID = 0;
|
||||
_kelthuzadPortal1GUID = 0;
|
||||
_kelthuzadPortal2GUID = 0;
|
||||
_kelthuzadPortal3GUID = 0;
|
||||
_kelthuzadPortal4GUID = 0;
|
||||
_sapphironGateGUID = 0;
|
||||
_horsemanPortalGUID = 0;
|
||||
_loathebPortalGUID = 0;
|
||||
_maexxnaPortalGUID = 0;
|
||||
_thaddiusPortalGUID = 0;
|
||||
_deathknightEyePortalGUID = 0;
|
||||
_plagueEyePortalGUID = 0;
|
||||
_spiderEyePortalGUID = 0;
|
||||
_abomEyePortalGUID = 0;
|
||||
_deathknightGlowEyePortalGUID = 0;
|
||||
_plagueGlowEyePortalGUID = 0;
|
||||
_spiderGlowEyePortalGUID = 0;
|
||||
_abomGlowEyePortalGUID = 0;
|
||||
|
||||
// NPCs
|
||||
PatchwerkRoomTrash.clear();
|
||||
_patchwerkGUID = 0;
|
||||
_thaddiusGUID = 0;
|
||||
_stalaggGUID = 0;
|
||||
_feugenGUID = 0;
|
||||
_zeliekGUID = 0;
|
||||
_rivendareGUID = 0;
|
||||
_blaumeuxGUID = 0;
|
||||
_korthazzGUID = 0;
|
||||
_sapphironGUID = 0;
|
||||
_kelthuzadGUID = 0;
|
||||
_lichkingGUID = 0;
|
||||
|
||||
// Controls
|
||||
_horsemanKilled = 0;
|
||||
@@ -126,56 +80,56 @@ public:
|
||||
std::set<GameObject*> HeiganEruption[4];
|
||||
|
||||
// GOs
|
||||
uint64 _patchwerkGateGUID;
|
||||
uint64 _gluthGateGUID;
|
||||
uint64 _nothEntryGateGUID;
|
||||
uint64 _nothExitGateGUID;
|
||||
uint64 _heiganGateGUID;
|
||||
uint64 _heiganGateExitGUID;
|
||||
uint64 _loathebGateGUID;
|
||||
uint64 _anubGateGUID;
|
||||
uint64 _anubNextGateGUID;
|
||||
uint64 _faerlinaWebGUID;
|
||||
uint64 _faerlinaGateGUID;
|
||||
uint64 _maexxnaGateGUID;
|
||||
uint64 _thaddiusGateGUID;
|
||||
uint64 _gothikEnterGateGUID{};
|
||||
uint64 _gothikInnerGateGUID{};
|
||||
uint64 _gothikExitGateGUID{};
|
||||
uint64 _horsemanGateGUID;
|
||||
uint64 _kelthuzadFloorGUID;
|
||||
uint64 _kelthuzadGateGUID;
|
||||
uint64 _kelthuzadPortal1GUID;
|
||||
uint64 _kelthuzadPortal2GUID;
|
||||
uint64 _kelthuzadPortal3GUID;
|
||||
uint64 _kelthuzadPortal4GUID;
|
||||
uint64 _sapphironGateGUID;
|
||||
uint64 _horsemanPortalGUID;
|
||||
uint64 _loathebPortalGUID;
|
||||
uint64 _maexxnaPortalGUID;
|
||||
uint64 _thaddiusPortalGUID;
|
||||
uint64 _deathknightEyePortalGUID;
|
||||
uint64 _plagueEyePortalGUID;
|
||||
uint64 _spiderEyePortalGUID;
|
||||
uint64 _abomEyePortalGUID;
|
||||
uint64 _deathknightGlowEyePortalGUID;
|
||||
uint64 _plagueGlowEyePortalGUID;
|
||||
uint64 _spiderGlowEyePortalGUID;
|
||||
uint64 _abomGlowEyePortalGUID;
|
||||
ObjectGuid _patchwerkGateGUID;
|
||||
ObjectGuid _gluthGateGUID;
|
||||
ObjectGuid _nothEntryGateGUID;
|
||||
ObjectGuid _nothExitGateGUID;
|
||||
ObjectGuid _heiganGateGUID;
|
||||
ObjectGuid _heiganGateExitGUID;
|
||||
ObjectGuid _loathebGateGUID;
|
||||
ObjectGuid _anubGateGUID;
|
||||
ObjectGuid _anubNextGateGUID;
|
||||
ObjectGuid _faerlinaWebGUID;
|
||||
ObjectGuid _faerlinaGateGUID;
|
||||
ObjectGuid _maexxnaGateGUID;
|
||||
ObjectGuid _thaddiusGateGUID;
|
||||
ObjectGuid _gothikEnterGateGUID;
|
||||
ObjectGuid _gothikInnerGateGUID;
|
||||
ObjectGuid _gothikExitGateGUID{};
|
||||
ObjectGuid _horsemanGateGUID;
|
||||
ObjectGuid _kelthuzadFloorGUID;
|
||||
ObjectGuid _kelthuzadGateGUID;
|
||||
ObjectGuid _kelthuzadPortal1GUID;
|
||||
ObjectGuid _kelthuzadPortal2GUID;
|
||||
ObjectGuid _kelthuzadPortal3GUID;
|
||||
ObjectGuid _kelthuzadPortal4GUID;
|
||||
ObjectGuid _sapphironGateGUID;
|
||||
ObjectGuid _horsemanPortalGUID;
|
||||
ObjectGuid _loathebPortalGUID;
|
||||
ObjectGuid _maexxnaPortalGUID;
|
||||
ObjectGuid _thaddiusPortalGUID;
|
||||
ObjectGuid _deathknightEyePortalGUID;
|
||||
ObjectGuid _plagueEyePortalGUID;
|
||||
ObjectGuid _spiderEyePortalGUID;
|
||||
ObjectGuid _abomEyePortalGUID;
|
||||
ObjectGuid _deathknightGlowEyePortalGUID;
|
||||
ObjectGuid _plagueGlowEyePortalGUID;
|
||||
ObjectGuid _spiderGlowEyePortalGUID;
|
||||
ObjectGuid _abomGlowEyePortalGUID;
|
||||
|
||||
// NPCs
|
||||
std::list<uint64> PatchwerkRoomTrash;
|
||||
uint64 _patchwerkGUID;
|
||||
uint64 _thaddiusGUID;
|
||||
uint64 _stalaggGUID;
|
||||
uint64 _feugenGUID;
|
||||
uint64 _zeliekGUID;
|
||||
uint64 _rivendareGUID;
|
||||
uint64 _blaumeuxGUID;
|
||||
uint64 _korthazzGUID;
|
||||
uint64 _sapphironGUID;
|
||||
uint64 _kelthuzadGUID;
|
||||
uint64 _lichkingGUID;
|
||||
GuidList PatchwerkRoomTrash;
|
||||
ObjectGuid _patchwerkGUID;
|
||||
ObjectGuid _thaddiusGUID;
|
||||
ObjectGuid _stalaggGUID;
|
||||
ObjectGuid _feugenGUID;
|
||||
ObjectGuid _zeliekGUID;
|
||||
ObjectGuid _rivendareGUID;
|
||||
ObjectGuid _blaumeuxGUID;
|
||||
ObjectGuid _korthazzGUID;
|
||||
ObjectGuid _sapphironGUID;
|
||||
ObjectGuid _kelthuzadGUID;
|
||||
ObjectGuid _lichkingGUID;
|
||||
|
||||
// Controls
|
||||
uint8 _horsemanKilled;
|
||||
@@ -1075,7 +1029,7 @@ public:
|
||||
}
|
||||
}
|
||||
|
||||
uint64 GetData64(uint32 id) const override
|
||||
ObjectGuid GetGuidData(uint32 id) const override
|
||||
{
|
||||
switch (id)
|
||||
{
|
||||
@@ -1124,10 +1078,11 @@ public:
|
||||
return _feugenGUID;
|
||||
case DATA_LICH_KING_BOSS:
|
||||
return _lichkingGUID;
|
||||
|
||||
default:
|
||||
return 0;
|
||||
break;
|
||||
}
|
||||
|
||||
return ObjectGuid::Empty;
|
||||
}
|
||||
|
||||
std::string GetSaveData() override
|
||||
|
||||
@@ -328,7 +328,7 @@ public:
|
||||
|
||||
if (me->GetVictim() && me->GetVictim()->GetGUID() == victim->GetGUID() && !me->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_PACIFIED))
|
||||
{
|
||||
if (!me->GetUInt64Value(UNIT_FIELD_TARGET))
|
||||
if (!me->GetGuidValue(UNIT_FIELD_TARGET))
|
||||
me->SetTarget(victim->GetGUID());
|
||||
}
|
||||
else if (me->Attack(victim, true))
|
||||
@@ -336,7 +336,7 @@ public:
|
||||
if (!me->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_PACIFIED))
|
||||
me->GetMotionMaster()->MoveChase(victim);
|
||||
else
|
||||
me->SetTarget(0);
|
||||
me->SetTarget();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -449,7 +449,7 @@ public:
|
||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_PACIFIED);
|
||||
|
||||
me->SendMeleeAttackStop(me->GetVictim());
|
||||
me->SetTarget((uint64)0);
|
||||
me->SetTarget();
|
||||
|
||||
me->GetMotionMaster()->MoveIdle();
|
||||
me->StopMoving();
|
||||
@@ -518,10 +518,10 @@ public:
|
||||
pPlayer->SetUnitMovementFlags(MOVEMENTFLAG_NONE);
|
||||
pPlayer->SetDisableGravity(true, true);
|
||||
WorldPacket data(SMSG_SPLINE_MOVE_UNROOT, 8);
|
||||
data.append(pPlayer->GetPackGUID());
|
||||
data << pPlayer->GetPackGUID();
|
||||
pPlayer->SendMessageToSet(&data, true);
|
||||
|
||||
pPlayer->SetUInt64Value(PLAYER_FARSIGHT, vp->GetGUID());
|
||||
pPlayer->SetGuidValue(PLAYER_FARSIGHT, vp->GetGUID());
|
||||
c->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
||||
}
|
||||
}
|
||||
@@ -553,7 +553,7 @@ public:
|
||||
Talk(SAY_END_P1);
|
||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_PACIFIED);
|
||||
me->SendMeleeAttackStop();
|
||||
me->SetTarget((uint64)0);
|
||||
me->SetTarget();
|
||||
me->GetMotionMaster()->MoveIdle();
|
||||
me->DisableSpline();
|
||||
me->GetMotionMaster()->MovePoint(MI_POINT_CENTER_GROUND_PH_2, CenterPos);
|
||||
@@ -655,7 +655,7 @@ public:
|
||||
break;
|
||||
case EVENT_CLEAR_TARGET:
|
||||
me->SendMeleeAttackStop();
|
||||
me->SetTarget(0);
|
||||
me->SetTarget();
|
||||
break;
|
||||
case EVENT_CHECK_TRASH_DEAD:
|
||||
{
|
||||
@@ -664,7 +664,7 @@ public:
|
||||
else
|
||||
{
|
||||
me->SendMeleeAttackStop();
|
||||
me->SetTarget(0);
|
||||
me->SetTarget();
|
||||
events.CancelEventGroup(1);
|
||||
summons.DespawnAll();
|
||||
// start phase 3
|
||||
@@ -883,7 +883,7 @@ public:
|
||||
plr->MonsterMoveWithSpeed(me->GetPositionX(), me->GetPositionY(), me->GetPositionZ(), speed);
|
||||
plr->RemoveAura(SPELL_FREEZE_ANIM);
|
||||
plr->SetDisableGravity(false, true);
|
||||
plr->SetUInt64Value(PLAYER_FARSIGHT, 0);;
|
||||
plr->SetGuidValue(PLAYER_FARSIGHT, ObjectGuid::Empty);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1007,7 +1007,7 @@ public:
|
||||
if (CheckTimer <= diff)
|
||||
{
|
||||
if (pInstance)
|
||||
if (Creature* c = pInstance->instance->GetCreature(pInstance->GetData64(DATA_MALYGOS_GUID)))
|
||||
if (Creature* c = pInstance->instance->GetCreature(pInstance->GetGuidData(DATA_MALYGOS_GUID)))
|
||||
if (me->IsWithinDist3d(c, 12.0f))
|
||||
{
|
||||
me->CastSpell(c, SPELL_POWER_SPARK_MALYGOS_BUFF, true);
|
||||
@@ -1024,7 +1024,7 @@ public:
|
||||
if (MoveTimer <= diff)
|
||||
{
|
||||
if (pInstance)
|
||||
if (Creature* c = pInstance->instance->GetCreature(pInstance->GetData64(DATA_MALYGOS_GUID)))
|
||||
if (Creature* c = pInstance->instance->GetCreature(pInstance->GetGuidData(DATA_MALYGOS_GUID)))
|
||||
me->GetMotionMaster()->MovePoint(0, *c);
|
||||
MoveTimer = 2000;
|
||||
}
|
||||
@@ -1168,7 +1168,7 @@ public:
|
||||
break;
|
||||
case EVENT_SCION_OF_ETERNITY_ARCANE_BARRAGE:
|
||||
{
|
||||
std::vector<uint64> guids;
|
||||
GuidVector guids;
|
||||
Map::PlayerList const& PlayerList = me->GetMap()->GetPlayers();
|
||||
if (!PlayerList.isEmpty())
|
||||
for (Map::PlayerList::const_iterator i = PlayerList.begin(); i != PlayerList.end(); ++i)
|
||||
@@ -1462,11 +1462,10 @@ public:
|
||||
{
|
||||
PrepareSpellScript(spell_eoe_ph3_surge_of_power_SpellScript);
|
||||
|
||||
uint64 DrakeGUID[3];
|
||||
ObjectGuid DrakeGUID[3];
|
||||
|
||||
bool Load() override
|
||||
{
|
||||
memset(&DrakeGUID, 0, sizeof(DrakeGUID));
|
||||
if (Unit* caster = GetCaster())
|
||||
if (Creature* c = caster->ToCreature())
|
||||
{
|
||||
|
||||
@@ -96,11 +96,11 @@ const uint32 MalygosIntroIntervals[] = {18000, 19000, 21000, 18000, 15000};
|
||||
class EoEDrakeEnterVehicleEvent : public BasicEvent
|
||||
{
|
||||
public:
|
||||
EoEDrakeEnterVehicleEvent(Creature& owner, uint64 playerGUID) : _owner(owner), _playerGUID(playerGUID) { }
|
||||
EoEDrakeEnterVehicleEvent(Creature& owner, ObjectGuid playerGUID) : _owner(owner), _playerGUID(playerGUID) { }
|
||||
bool Execute(uint64 /*eventTime*/, uint32 /*updateTime*/) override;
|
||||
private:
|
||||
Creature& _owner;
|
||||
uint64 _playerGUID;
|
||||
ObjectGuid _playerGUID;
|
||||
};
|
||||
|
||||
template <class AI, class T>
|
||||
|
||||
@@ -37,20 +37,16 @@ public:
|
||||
uint32 EncounterStatus;
|
||||
std::string str_data;
|
||||
|
||||
uint64 NPC_MalygosGUID;
|
||||
uint64 GO_IrisGUID;
|
||||
uint64 GO_ExitPortalGUID;
|
||||
uint64 GO_PlatformGUID;
|
||||
ObjectGuid NPC_MalygosGUID;
|
||||
ObjectGuid GO_IrisGUID;
|
||||
ObjectGuid GO_ExitPortalGUID;
|
||||
ObjectGuid GO_PlatformGUID;
|
||||
bool bPokeAchiev;
|
||||
|
||||
void Initialize() override
|
||||
{
|
||||
EncounterStatus = NOT_STARTED;
|
||||
|
||||
NPC_MalygosGUID = 0;
|
||||
GO_IrisGUID = 0;
|
||||
GO_ExitPortalGUID = 0;
|
||||
GO_PlatformGUID = 0;
|
||||
bPokeAchiev = false;
|
||||
}
|
||||
|
||||
@@ -173,14 +169,15 @@ public:
|
||||
}
|
||||
}
|
||||
|
||||
uint64 GetData64(uint32 type) const override
|
||||
ObjectGuid GetGuidData(uint32 type) const override
|
||||
{
|
||||
switch(type)
|
||||
{
|
||||
case DATA_MALYGOS_GUID:
|
||||
return NPC_MalygosGUID;
|
||||
}
|
||||
return 0;
|
||||
|
||||
return ObjectGuid::Empty;
|
||||
}
|
||||
|
||||
void ProcessEvent(WorldObject* /*unit*/, uint32 eventId) override
|
||||
|
||||
@@ -152,7 +152,7 @@ public:
|
||||
for(Map::PlayerList::const_iterator itr = pList.begin(); itr != pList.end(); ++itr)
|
||||
if (Aura* aur = itr->GetSource()->GetAura(SPELL_INTENSE_COLD_TRIGGER))
|
||||
if (aur->GetStackAmount() > 2)
|
||||
aGuids.insert(itr->GetSource()->GetGUIDLow());
|
||||
aGuids.insert(itr->GetSource()->GetGUID().GetCounter());
|
||||
events.ScheduleEvent(EVENT_ACHIEVEMENT_CHECK, 500);
|
||||
break;
|
||||
}
|
||||
@@ -191,7 +191,7 @@ public:
|
||||
if (!target)
|
||||
return false;
|
||||
|
||||
return target->GetAI()->GetData(player->GetGUIDLow());
|
||||
return target->GetAI()->GetData(player->GetGUID().GetCounter());
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@@ -184,7 +184,7 @@ public:
|
||||
}
|
||||
|
||||
int32 _damageTimer;
|
||||
uint64 _gameObjectGUID;
|
||||
ObjectGuid _gameObjectGUID;
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
|
||||
@@ -92,7 +92,7 @@ public:
|
||||
{
|
||||
pInstance->SetData(DATA_DRAKOS, DONE);
|
||||
for( uint8 i = 0; i < 3; ++i )
|
||||
if( uint64 guid = pInstance->GetData64(DATA_DCD_1 + i) )
|
||||
if( ObjectGuid guid = pInstance->GetGuidData(DATA_DCD_1 + i) )
|
||||
if( GameObject* pGo = ObjectAccessor::GetGameObject(*me, guid) )
|
||||
if( pGo->GetGoState() != GO_STATE_ACTIVE )
|
||||
{
|
||||
|
||||
@@ -24,14 +24,14 @@ public:
|
||||
instance_oculus_InstanceMapScript(Map* pMap) : InstanceScript(pMap) { Initialize(); }
|
||||
|
||||
uint32 m_auiEncounter[MAX_ENCOUNTER];
|
||||
uint64 DragonCageDoorGUID[3];
|
||||
uint64 EregosCacheGUID;
|
||||
ObjectGuid DragonCageDoorGUID[3];
|
||||
ObjectGuid EregosCacheGUID;
|
||||
uint32 CentrifugeCount;
|
||||
|
||||
uint64 uiDrakosGUID;
|
||||
uint64 uiVarosGUID;
|
||||
uint64 uiUromGUID;
|
||||
uint64 uiEregosGUID;
|
||||
ObjectGuid uiDrakosGUID;
|
||||
ObjectGuid uiVarosGUID;
|
||||
ObjectGuid uiUromGUID;
|
||||
ObjectGuid uiEregosGUID;
|
||||
|
||||
bool bAmberVoid;
|
||||
bool bEmeraldVoid;
|
||||
@@ -39,18 +39,12 @@ public:
|
||||
|
||||
void Initialize() override
|
||||
{
|
||||
EregosCacheGUID = 0;
|
||||
uiDrakosGUID = 0;
|
||||
uiVarosGUID = 0;
|
||||
uiUromGUID = 0;
|
||||
uiEregosGUID = 0;
|
||||
CentrifugeCount = 0;
|
||||
bAmberVoid = false;
|
||||
bEmeraldVoid = false;
|
||||
bRubyVoid = false;
|
||||
|
||||
memset(&m_auiEncounter, 0, sizeof(m_auiEncounter));
|
||||
memset(&DragonCageDoorGUID, 0, sizeof(DragonCageDoorGUID));
|
||||
}
|
||||
|
||||
void OnCreatureCreate(Creature* pCreature) override
|
||||
@@ -200,7 +194,7 @@ public:
|
||||
return 0;
|
||||
}
|
||||
|
||||
uint64 GetData64(uint32 identifier) const override
|
||||
ObjectGuid GetGuidData(uint32 identifier) const override
|
||||
{
|
||||
switch( identifier )
|
||||
{
|
||||
@@ -218,7 +212,7 @@ public:
|
||||
return DragonCageDoorGUID[identifier - 100];
|
||||
}
|
||||
|
||||
return 0;
|
||||
return ObjectGuid::Empty;
|
||||
}
|
||||
|
||||
std::string GetSaveData() override
|
||||
|
||||
@@ -62,7 +62,7 @@ enum DrakeGiverTexts
|
||||
class npc_oculus_drakegiver : public CreatureScript
|
||||
{
|
||||
public:
|
||||
std::unordered_map<uint32, bool>openedMenu;
|
||||
std::unordered_map<ObjectGuid, bool>openedMenu;
|
||||
|
||||
npc_oculus_drakegiver() : CreatureScript("npc_oculus_drakegiver") { }
|
||||
|
||||
@@ -887,7 +887,7 @@ public:
|
||||
{
|
||||
PrepareAuraScript(spell_oculus_rider_auraAuraScript);
|
||||
|
||||
uint64 _drakeGUID;
|
||||
ObjectGuid _drakeGUID;
|
||||
|
||||
void HandleOnEffectApply(AuraEffect const* aurEff, AuraEffectHandleModes /*mode*/)
|
||||
{
|
||||
|
||||
@@ -125,7 +125,7 @@ public:
|
||||
AddWaypoint(13, 1281.2f, -26.8f, 33.5f, 0);
|
||||
AddWaypoint(14, 1262, -26.9f, 33.5f, 0);
|
||||
|
||||
Start(true, false, 0, nullptr, false, true);
|
||||
Start(true, false, ObjectGuid::Empty, nullptr, false, true);
|
||||
}
|
||||
|
||||
InstanceScript* m_pInstance;
|
||||
@@ -372,14 +372,14 @@ public:
|
||||
npc_stormforged_lieutenantAI(Creature* creature) : ScriptedAI(creature) { }
|
||||
|
||||
EventMap events;
|
||||
uint64 BjarngrimGUID;
|
||||
ObjectGuid BjarngrimGUID;
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
if (me->IsSummon())
|
||||
BjarngrimGUID = me->ToTempSummon()->GetSummonerGUID();
|
||||
else
|
||||
BjarngrimGUID = 0;
|
||||
BjarngrimGUID.Clear();
|
||||
}
|
||||
|
||||
void EnterCombat(Unit*) override
|
||||
|
||||
@@ -361,7 +361,7 @@ public:
|
||||
{
|
||||
if (me->GetEntry() == NPC_BRITTLE_GOLEM && param == ACTION_SHATTER)
|
||||
{
|
||||
if (Creature* volkhan = ObjectAccessor::GetCreature(*me, m_pInstance->GetData64(TYPE_VOLKHAN)))
|
||||
if (Creature* volkhan = ObjectAccessor::GetCreature(*me, m_pInstance->GetGuidData(TYPE_VOLKHAN)))
|
||||
volkhan->AI()->DoAction(ACTION_DESTROYED);
|
||||
|
||||
me->CastSpell(me, me->GetMap()->IsHeroic() ? SPELL_SHATTER_H : SPELL_SHATTER_N, true);
|
||||
@@ -444,7 +444,7 @@ public:
|
||||
{
|
||||
npc_hol_monumentAI(Creature* creature) : ScriptedAI(creature)
|
||||
{
|
||||
_attackGUID = 0;
|
||||
_attackGUID.Clear();
|
||||
_isActive = urand(0, 1);
|
||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
||||
me->CastSpell(me, SPELL_FREEZE_ANIM, true);
|
||||
@@ -452,7 +452,7 @@ public:
|
||||
|
||||
EventMap events;
|
||||
bool _isActive;
|
||||
uint64 _attackGUID;
|
||||
ObjectGuid _attackGUID;
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
|
||||
+12
-22
@@ -22,16 +22,16 @@ public:
|
||||
|
||||
uint32 m_auiEncounter[MAX_ENCOUNTER];
|
||||
|
||||
uint64 m_uiGeneralBjarngrimGUID;
|
||||
uint64 m_uiIonarGUID;
|
||||
uint64 m_uiLokenGUID;
|
||||
uint64 m_uiVolkhanGUID;
|
||||
ObjectGuid m_uiGeneralBjarngrimGUID;
|
||||
ObjectGuid m_uiIonarGUID;
|
||||
ObjectGuid m_uiLokenGUID;
|
||||
ObjectGuid m_uiVolkhanGUID;
|
||||
|
||||
uint64 m_uiBjarngrimDoorGUID;
|
||||
uint64 m_uiVolkhanDoorGUID;
|
||||
uint64 m_uiIonarDoorGUID;
|
||||
uint64 m_uiLokenDoorGUID;
|
||||
uint64 m_uiLokenGlobeGUID;
|
||||
ObjectGuid m_uiBjarngrimDoorGUID;
|
||||
ObjectGuid m_uiVolkhanDoorGUID;
|
||||
ObjectGuid m_uiIonarDoorGUID;
|
||||
ObjectGuid m_uiLokenDoorGUID;
|
||||
ObjectGuid m_uiLokenGlobeGUID;
|
||||
|
||||
bool volkhanAchievement;
|
||||
bool bjarngrimAchievement;
|
||||
@@ -40,17 +40,6 @@ public:
|
||||
{
|
||||
memset(&m_auiEncounter, 0, sizeof(m_auiEncounter));
|
||||
|
||||
m_uiGeneralBjarngrimGUID = 0;
|
||||
m_uiVolkhanGUID = 0;
|
||||
m_uiIonarGUID = 0;
|
||||
m_uiLokenGUID = 0;
|
||||
|
||||
m_uiBjarngrimDoorGUID = 0;
|
||||
m_uiVolkhanDoorGUID = 0;
|
||||
m_uiIonarDoorGUID = 0;
|
||||
m_uiLokenDoorGUID = 0;
|
||||
m_uiLokenGlobeGUID = 0;
|
||||
|
||||
volkhanAchievement = false;
|
||||
bjarngrimAchievement = false;
|
||||
}
|
||||
@@ -219,7 +208,7 @@ public:
|
||||
return m_auiEncounter[uiType];
|
||||
}
|
||||
|
||||
uint64 GetData64(uint32 uiData) const override
|
||||
ObjectGuid GetGuidData(uint32 uiData) const override
|
||||
{
|
||||
switch(uiData)
|
||||
{
|
||||
@@ -232,7 +221,8 @@ public:
|
||||
case TYPE_LOKEN:
|
||||
return m_uiLokenGUID;
|
||||
}
|
||||
return 0;
|
||||
|
||||
return ObjectGuid::Empty;
|
||||
}
|
||||
};
|
||||
};
|
||||
|
||||
@@ -132,13 +132,13 @@ public:
|
||||
if (pInstance->GetData(BOSS_TRIBUNAL_OF_AGES) == DONE)
|
||||
{
|
||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
||||
if (GameObject* doors = me->GetMap()->GetGameObject(pInstance->GetData64(GO_SJONNIR_DOOR)))
|
||||
if (GameObject* doors = me->GetMap()->GetGameObject(pInstance->GetGuidData(GO_SJONNIR_DOOR)))
|
||||
doors->SetGoState(GO_STATE_ACTIVE);
|
||||
|
||||
if (GameObject* console = me->GetMap()->GetGameObject( pInstance->GetData64(GO_SJONNIR_CONSOLE)))
|
||||
if (GameObject* console = me->GetMap()->GetGameObject( pInstance->GetGuidData(GO_SJONNIR_CONSOLE)))
|
||||
console->SetGoState(GO_STATE_READY);
|
||||
|
||||
if (Creature* brann = ObjectAccessor::GetCreature(*me, pInstance->GetData64(NPC_BRANN)))
|
||||
if (Creature* brann = ObjectAccessor::GetCreature(*me, pInstance->GetGuidData(NPC_BRANN)))
|
||||
{
|
||||
brann->setDeathState(JUST_DIED);
|
||||
brann->Respawn();
|
||||
@@ -165,11 +165,11 @@ public:
|
||||
{
|
||||
pInstance->SetData(BOSS_SJONNIR, IN_PROGRESS);
|
||||
|
||||
if (GameObject* doors = me->GetMap()->GetGameObject(pInstance->GetData64(GO_SJONNIR_DOOR)))
|
||||
if (GameObject* doors = me->GetMap()->GetGameObject(pInstance->GetGuidData(GO_SJONNIR_DOOR)))
|
||||
doors->SetGoState(GO_STATE_READY);
|
||||
|
||||
if (pInstance->GetData(BOSS_TRIBUNAL_OF_AGES) == DONE)
|
||||
if (Creature* brann = ObjectAccessor::GetCreature(*me, pInstance->GetData64(NPC_BRANN)))
|
||||
if (Creature* brann = ObjectAccessor::GetCreature(*me, pInstance->GetGuidData(NPC_BRANN)))
|
||||
brann->AI()->DoAction(3);
|
||||
}
|
||||
}
|
||||
@@ -205,7 +205,7 @@ public:
|
||||
events.ScheduleEvent(EVENT_SUMMON, 1500);
|
||||
|
||||
if (pInstance)
|
||||
if (Creature* brann = ObjectAccessor::GetCreature(*me, pInstance->GetData64(NPC_BRANN)))
|
||||
if (Creature* brann = ObjectAccessor::GetCreature(*me, pInstance->GetGuidData(NPC_BRANN)))
|
||||
{
|
||||
brann->MonsterYell("What in the name o' Madoran did THAT do? Oh! Wait: I just about got it...", LANG_UNIVERSAL, 0);
|
||||
brann->PlayDirectSound(14276);
|
||||
@@ -214,7 +214,7 @@ public:
|
||||
|
||||
if (HealthBelowPct(20))
|
||||
{
|
||||
if (Creature* brann = ObjectAccessor::GetCreature(*me, pInstance->GetData64(NPC_BRANN)))
|
||||
if (Creature* brann = ObjectAccessor::GetCreature(*me, pInstance->GetGuidData(NPC_BRANN)))
|
||||
{
|
||||
brann->MonsterYell("Ha, that did it! Help's a-comin'! Take this, ya glowin' iron brute!", LANG_UNIVERSAL, 0);
|
||||
brann->PlayDirectSound(14277);
|
||||
@@ -261,7 +261,7 @@ public:
|
||||
}
|
||||
case EVENT_SUMMON_SPEACH:
|
||||
{
|
||||
if (Creature* brann = ObjectAccessor::GetCreature(*me, pInstance->GetData64(NPC_BRANN)))
|
||||
if (Creature* brann = ObjectAccessor::GetCreature(*me, pInstance->GetGuidData(NPC_BRANN)))
|
||||
{
|
||||
brann->MonsterYell("This is a wee bit trickier that before... Oh, bloody--incomin'!", LANG_UNIVERSAL, 0);
|
||||
brann->PlayDirectSound(14275);
|
||||
@@ -314,10 +314,10 @@ public:
|
||||
if (pInstance)
|
||||
{
|
||||
pInstance->SetData(BOSS_SJONNIR, DONE);
|
||||
if (GameObject* sd = me->GetMap()->GetGameObject(pInstance->GetData64(GO_SJONNIR_DOOR)))
|
||||
if (GameObject* sd = me->GetMap()->GetGameObject(pInstance->GetGuidData(GO_SJONNIR_DOOR)))
|
||||
sd->SetGoState(GO_STATE_ACTIVE);
|
||||
|
||||
if (Creature* brann = ObjectAccessor::GetCreature(*me, pInstance->GetData64(NPC_BRANN)))
|
||||
if (Creature* brann = ObjectAccessor::GetCreature(*me, pInstance->GetGuidData(NPC_BRANN)))
|
||||
brann->AI()->DoAction(4);
|
||||
}
|
||||
}
|
||||
@@ -333,7 +333,7 @@ public:
|
||||
void ActivatePipe(uint8 side)
|
||||
{
|
||||
if (pInstance)
|
||||
if (GameObject* pipe = me->GetMap()->GetGameObject(pInstance->GetData64(side == POS_GEN_RIGHT ? GO_RIGHT_PIPE : GO_LEFT_PIPE)))
|
||||
if (GameObject* pipe = me->GetMap()->GetGameObject(pInstance->GetGuidData(side == POS_GEN_RIGHT ? GO_RIGHT_PIPE : GO_LEFT_PIPE)))
|
||||
pipe->SendCustomAnim(0);
|
||||
}
|
||||
|
||||
@@ -423,7 +423,7 @@ public:
|
||||
void JustDied(Unit* /*killer*/) override
|
||||
{
|
||||
if (InstanceScript* pInstance = me->GetInstanceScript())
|
||||
if (Creature* sjonnir = ObjectAccessor::GetCreature(*me, pInstance->GetData64(NPC_SJONNIR)))
|
||||
if (Creature* sjonnir = ObjectAccessor::GetCreature(*me, pInstance->GetGuidData(NPC_SJONNIR)))
|
||||
sjonnir->AI()->DoAction(ACTION_SLUG_KILLED);
|
||||
}
|
||||
void UpdateAI(uint32 diff) override
|
||||
|
||||
@@ -224,16 +224,15 @@ public:
|
||||
{
|
||||
brann_bronzebeardAI(Creature* c) : npc_escortAI(c), summons(me)
|
||||
{
|
||||
AbedneumGUID = MarnakGUID = KaddrakGUID = 0;
|
||||
pInstance = c->GetInstanceScript();
|
||||
}
|
||||
|
||||
InstanceScript* pInstance;
|
||||
EventMap events;
|
||||
SummonList summons;
|
||||
uint64 AbedneumGUID;
|
||||
uint64 MarnakGUID;
|
||||
uint64 KaddrakGUID;
|
||||
ObjectGuid AbedneumGUID;
|
||||
ObjectGuid MarnakGUID;
|
||||
ObjectGuid KaddrakGUID;
|
||||
uint8 WaveNum;
|
||||
|
||||
bool TalkEvent;
|
||||
@@ -255,21 +254,21 @@ public:
|
||||
|
||||
GameObject* go = nullptr;
|
||||
if (headMask & 0x1) // Kaddrak
|
||||
if ((go = me->GetMap()->GetGameObject(pInstance->GetData64(GO_KADDRAK))))
|
||||
if ((go = me->GetMap()->GetGameObject(pInstance->GetGuidData(GO_KADDRAK))))
|
||||
activate ? go->SendCustomAnim(0) : go->SetGoState(GO_STATE_READY);
|
||||
|
||||
if (headMask & 0x2) // Marnak
|
||||
if ((go = me->GetMap()->GetGameObject(pInstance->GetData64(GO_MARNAK))))
|
||||
if ((go = me->GetMap()->GetGameObject(pInstance->GetGuidData(GO_MARNAK))))
|
||||
activate ? go->SendCustomAnim(0) : go->SetGoState(GO_STATE_READY);
|
||||
|
||||
if (headMask & 0x4) // Abedneum
|
||||
if ((go = me->GetMap()->GetGameObject(pInstance->GetData64(GO_ABEDNEUM))))
|
||||
if ((go = me->GetMap()->GetGameObject(pInstance->GetGuidData(GO_ABEDNEUM))))
|
||||
activate ? go->SendCustomAnim(0) : go->SetGoState(GO_STATE_READY);
|
||||
}
|
||||
|
||||
void ResetEvent()
|
||||
{
|
||||
if (GameObject* tribunal = ObjectAccessor::GetGameObject(*me, pInstance->GetData64(GO_TRIBUNAL_CONSOLE)))
|
||||
if (GameObject* tribunal = ObjectAccessor::GetGameObject(*me, pInstance->GetGuidData(GO_TRIBUNAL_CONSOLE)))
|
||||
tribunal->SetGoState(GO_STATE_READY);
|
||||
|
||||
events.Reset();
|
||||
@@ -322,7 +321,7 @@ public:
|
||||
switch (action)
|
||||
{
|
||||
case ACTION_START_EVENT:
|
||||
Start(false, true, 0, 0, true, false);
|
||||
Start(false, true, ObjectGuid::Empty, 0, true, false);
|
||||
break;
|
||||
case ACTION_START_TRIBUNAL:
|
||||
{
|
||||
@@ -363,13 +362,13 @@ public:
|
||||
Reset();
|
||||
break;
|
||||
case ACTION_WIPE_START:
|
||||
Start(false, true, 0, 0, true, false);
|
||||
Start(false, true, ObjectGuid::Empty, 0, true, false);
|
||||
SetNextWaypoint(20, false);
|
||||
ResetEvent();
|
||||
me->SetUInt32Value(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_NONE);
|
||||
break;
|
||||
case ACTION_OPEN_DOOR:
|
||||
if (GameObject* door = ObjectAccessor::GetGameObject(*me, pInstance->GetData64(GO_SJONNIR_DOOR)))
|
||||
if (GameObject* door = ObjectAccessor::GetGameObject(*me, pInstance->GetGuidData(GO_SJONNIR_DOOR)))
|
||||
door->SetGoState(GO_STATE_ACTIVE);
|
||||
SetEscortPaused(false);
|
||||
me->RemoveAura(58506);
|
||||
@@ -513,7 +512,7 @@ public:
|
||||
}
|
||||
case EVENT_GO_TO_SJONNIR:
|
||||
{
|
||||
if (GameObject* door = ObjectAccessor::GetGameObject(*me, pInstance->GetData64(GO_SJONNIR_DOOR)))
|
||||
if (GameObject* door = ObjectAccessor::GetGameObject(*me, pInstance->GetGuidData(GO_SJONNIR_DOOR)))
|
||||
door->SetGoState(GO_STATE_ACTIVE);
|
||||
SetEscortPaused(false);
|
||||
ResetEvent();
|
||||
@@ -588,7 +587,7 @@ public:
|
||||
ResetEvent();
|
||||
if(pInstance)
|
||||
{
|
||||
if (Creature* brann = ObjectAccessor::GetCreature(*me, pInstance->GetData64(NPC_BRANN)))
|
||||
if (Creature* brann = ObjectAccessor::GetCreature(*me, pInstance->GetGuidData(NPC_BRANN)))
|
||||
{
|
||||
brann->setDeathState(JUST_DIED);
|
||||
brann->Respawn();
|
||||
@@ -653,7 +652,7 @@ void brann_bronzebeard::brann_bronzebeardAI::WaypointReached(uint32 id)
|
||||
if(pInstance)
|
||||
{
|
||||
pInstance->SetData(BOSS_TRIBUNAL_OF_AGES, IN_PROGRESS);
|
||||
if (GameObject* tribunal = ObjectAccessor::GetGameObject(*me, pInstance->GetData64(GO_TRIBUNAL_CONSOLE)))
|
||||
if (GameObject* tribunal = ObjectAccessor::GetGameObject(*me, pInstance->GetGuidData(GO_TRIBUNAL_CONSOLE)))
|
||||
tribunal->SetGoState(GO_STATE_ACTIVE);
|
||||
}
|
||||
break;
|
||||
@@ -664,7 +663,7 @@ void brann_bronzebeard::brann_bronzebeardAI::WaypointReached(uint32 id)
|
||||
{
|
||||
pInstance->SetData(BRANN_BRONZEBEARD, 5);
|
||||
me->SetUInt32Value(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP | UNIT_NPC_FLAG_QUESTGIVER);
|
||||
if (Creature* cr = ObjectAccessor::GetCreature(*me, pInstance->GetData64(NPC_SJONNIR)))
|
||||
if (Creature* cr = ObjectAccessor::GetCreature(*me, pInstance->GetGuidData(NPC_SJONNIR)))
|
||||
cr->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
||||
me->SetOrientation(3.132660f);
|
||||
DoCast(me, 58506, false);
|
||||
@@ -677,7 +676,7 @@ void brann_bronzebeard::brann_bronzebeardAI::WaypointReached(uint32 id)
|
||||
SetEscortPaused(true);
|
||||
me->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_STATE_USE_STANDING);
|
||||
if (pInstance)
|
||||
if (GameObject* console = ObjectAccessor::GetGameObject(*me, pInstance->GetData64(GO_SJONNIR_CONSOLE)))
|
||||
if (GameObject* console = ObjectAccessor::GetGameObject(*me, pInstance->GetGuidData(GO_SJONNIR_CONSOLE)))
|
||||
console->SetGoState(GO_STATE_ACTIVE);
|
||||
|
||||
break;
|
||||
|
||||
@@ -22,19 +22,19 @@ public:
|
||||
|
||||
uint32 Encounter[MAX_ENCOUNTER];
|
||||
|
||||
uint64 goKaddrakGUID;
|
||||
uint64 goMarnakGUID;
|
||||
uint64 goAbedneumGUID;
|
||||
uint64 goTribunalConsoleGUID;
|
||||
uint64 goSkyRoomFloorGUID;
|
||||
uint64 goSjonnirConsoleGUID;
|
||||
uint64 goSjonnirDoorGUID;
|
||||
uint64 goLeftPipeGUID;
|
||||
uint64 goRightPipeGUID;
|
||||
uint64 goTribunalDoorGUID;
|
||||
ObjectGuid goKaddrakGUID;
|
||||
ObjectGuid goMarnakGUID;
|
||||
ObjectGuid goAbedneumGUID;
|
||||
ObjectGuid goTribunalConsoleGUID;
|
||||
ObjectGuid goSkyRoomFloorGUID;
|
||||
ObjectGuid goSjonnirConsoleGUID;
|
||||
ObjectGuid goSjonnirDoorGUID;
|
||||
ObjectGuid goLeftPipeGUID;
|
||||
ObjectGuid goRightPipeGUID;
|
||||
ObjectGuid goTribunalDoorGUID;
|
||||
|
||||
uint64 SjonnirGUID;
|
||||
uint64 BrannGUID;
|
||||
ObjectGuid SjonnirGUID;
|
||||
ObjectGuid BrannGUID;
|
||||
|
||||
bool brannAchievement;
|
||||
bool sjonnirAchievement;
|
||||
@@ -45,20 +45,6 @@ public:
|
||||
{
|
||||
memset(&Encounter, 0, sizeof(Encounter));
|
||||
|
||||
goKaddrakGUID = 0;
|
||||
goMarnakGUID = 0;
|
||||
goAbedneumGUID = 0;
|
||||
goTribunalConsoleGUID = 0;
|
||||
goSkyRoomFloorGUID = 0;
|
||||
goSjonnirConsoleGUID = 0;
|
||||
goSjonnirDoorGUID = 0;
|
||||
goLeftPipeGUID = 0;
|
||||
goRightPipeGUID = 0;
|
||||
goTribunalDoorGUID = 0;
|
||||
|
||||
SjonnirGUID = 0;
|
||||
BrannGUID = 0;
|
||||
|
||||
brannAchievement = false;
|
||||
sjonnirAchievement = false;
|
||||
isMaidenOfGriefDead = false;
|
||||
@@ -132,9 +118,9 @@ public:
|
||||
}
|
||||
}
|
||||
|
||||
uint64 GetData64(uint32 id) const override
|
||||
ObjectGuid GetGuidData(uint32 id) const override
|
||||
{
|
||||
switch(id)
|
||||
switch (id)
|
||||
{
|
||||
case GO_TRIBUNAL_CONSOLE:
|
||||
return goTribunalConsoleGUID;
|
||||
@@ -160,12 +146,13 @@ public:
|
||||
case NPC_BRANN:
|
||||
return BrannGUID;
|
||||
}
|
||||
return 0;
|
||||
|
||||
return ObjectGuid::Empty;
|
||||
}
|
||||
|
||||
uint32 GetData(uint32 id) const override
|
||||
{
|
||||
switch(id)
|
||||
switch (id)
|
||||
{
|
||||
case BOSS_KRYSTALLUS:
|
||||
case BOSS_MAIDEN_OF_GRIEF:
|
||||
@@ -174,18 +161,20 @@ public:
|
||||
case BRANN_BRONZEBEARD:
|
||||
return Encounter[id];
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
bool CheckAchievementCriteriaMeet(uint32 criteria_id, Player const* /*source*/, Unit const* /*target*/, uint32 /*miscvalue1*/) override
|
||||
{
|
||||
switch(criteria_id)
|
||||
switch (criteria_id)
|
||||
{
|
||||
case 7590: // Brann Spankin' New (2154)
|
||||
return brannAchievement;
|
||||
case 7593: // Abuse the Ooze (2155)
|
||||
return sjonnirAchievement;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
@@ -637,7 +637,7 @@ public:
|
||||
case EVENT_INTRO_FINISH:
|
||||
events.Reset();
|
||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC);
|
||||
if (Creature* brann = ObjectAccessor::GetCreature(*me, m_pInstance->GetData64(NPC_BRANN_BRONZBEARD_ALG)))
|
||||
if (Creature* brann = ObjectAccessor::GetCreature(*me, m_pInstance->GetGuidData(NPC_BRANN_BRONZBEARD_ALG)))
|
||||
brann->AI()->DoAction(ACTION_FINISH_INTRO);
|
||||
break;
|
||||
case EVENT_START_COMBAT:
|
||||
@@ -875,7 +875,7 @@ public:
|
||||
me->GetMotionMaster()->MovePoint(_currentPoint, BrannIntroWaypoint[_currentPoint]);
|
||||
break;
|
||||
case EVENT_SUMMON_ALGALON:
|
||||
if (me->GetInstanceScript() && !me->GetInstanceScript()->GetData64(TYPE_ALGALON))
|
||||
if (me->GetInstanceScript() && !me->GetInstanceScript()->GetGuidData(TYPE_ALGALON))
|
||||
if (Creature* algalon = me->GetMap()->SummonCreature(NPC_ALGALON, AlgalonSummonPos))
|
||||
algalon->AI()->DoAction(ACTION_START_INTRO);
|
||||
break;
|
||||
@@ -1119,10 +1119,10 @@ public:
|
||||
if (InstanceScript* instance = go->GetInstanceScript())
|
||||
{
|
||||
instance->SetData(DATA_ALGALON_SUMMON_STATE, 1);
|
||||
if (GameObject* sigil = ObjectAccessor::GetGameObject(*go, instance->GetData64(GO_DOODAD_UL_SIGILDOOR_01)))
|
||||
if (GameObject* sigil = ObjectAccessor::GetGameObject(*go, instance->GetGuidData(GO_DOODAD_UL_SIGILDOOR_01)))
|
||||
sigil->SetGoState(GO_STATE_ACTIVE);
|
||||
|
||||
if (GameObject* sigil = ObjectAccessor::GetGameObject(*go, instance->GetData64(GO_DOODAD_UL_SIGILDOOR_02)))
|
||||
if (GameObject* sigil = ObjectAccessor::GetGameObject(*go, instance->GetGuidData(GO_DOODAD_UL_SIGILDOOR_02)))
|
||||
sigil->SetGoState(GO_STATE_ACTIVE);
|
||||
}
|
||||
|
||||
|
||||
@@ -132,7 +132,7 @@ bool IsEncounterComplete(InstanceScript* pInstance, Creature* me)
|
||||
|
||||
for (uint8 i = 0; i < 3; ++i)
|
||||
{
|
||||
uint64 guid = pInstance->GetData64(DATA_STEELBREAKER + i);
|
||||
ObjectGuid guid = pInstance->GetGuidData(DATA_STEELBREAKER + i);
|
||||
if (!guid)
|
||||
return false;
|
||||
|
||||
@@ -155,7 +155,7 @@ void RespawnAssemblyOfIron(InstanceScript* pInstance, Creature* me)
|
||||
|
||||
for (uint8 i = 0; i < 3; ++i)
|
||||
{
|
||||
uint64 guid = pInstance->GetData64(DATA_STEELBREAKER + i);
|
||||
ObjectGuid guid = pInstance->GetGuidData(DATA_STEELBREAKER + i);
|
||||
if (!guid)
|
||||
return;
|
||||
|
||||
@@ -166,14 +166,14 @@ void RespawnAssemblyOfIron(InstanceScript* pInstance, Creature* me)
|
||||
return;
|
||||
}
|
||||
|
||||
void RestoreAssemblyHealth(uint64 guid1, uint64 guid2, Creature* me)
|
||||
void RestoreAssemblyHealth(ObjectGuid guid1, ObjectGuid guid2, Creature* me)
|
||||
{
|
||||
if(Creature* cr = ObjectAccessor::GetCreature(*me, guid1))
|
||||
if(cr->IsAlive())
|
||||
if (Creature* cr = ObjectAccessor::GetCreature(*me, guid1))
|
||||
if (cr->IsAlive())
|
||||
cr->SetHealth(cr->GetMaxHealth());
|
||||
|
||||
if(Creature* cr2 = ObjectAccessor::GetCreature(*me, guid2))
|
||||
if(cr2->IsAlive())
|
||||
if (Creature* cr2 = ObjectAccessor::GetCreature(*me, guid2))
|
||||
if (cr2->IsAlive())
|
||||
cr2->SetHealth(cr2->GetMaxHealth());
|
||||
}
|
||||
|
||||
@@ -229,7 +229,7 @@ public:
|
||||
if (!pInstance)
|
||||
return;
|
||||
|
||||
if (Creature* boss = ObjectAccessor::GetCreature(*me, pInstance->GetData64(DATA_STEELBREAKER + urand(0, 2))))
|
||||
if (Creature* boss = ObjectAccessor::GetCreature(*me, pInstance->GetGuidData(DATA_STEELBREAKER + urand(0, 2))))
|
||||
{
|
||||
switch (boss->GetEntry())
|
||||
{
|
||||
@@ -246,7 +246,7 @@ public:
|
||||
}
|
||||
|
||||
for (uint8 i = 0; i < 3; ++i)
|
||||
if (Creature* boss = ObjectAccessor::GetCreature(*me, pInstance->GetData64(DATA_STEELBREAKER + i)))
|
||||
if (Creature* boss = ObjectAccessor::GetCreature(*me, pInstance->GetGuidData(DATA_STEELBREAKER + i)))
|
||||
if (!boss->IsInCombat())
|
||||
boss->AI()->AttackStart(who);
|
||||
}
|
||||
@@ -286,7 +286,7 @@ public:
|
||||
}
|
||||
else
|
||||
{
|
||||
RestoreAssemblyHealth(pInstance->GetData64(DATA_BRUNDIR), pInstance->GetData64(DATA_MOLGEIM), me);
|
||||
RestoreAssemblyHealth(pInstance->GetGuidData(DATA_BRUNDIR), pInstance->GetGuidData(DATA_MOLGEIM), me);
|
||||
me->CastSpell(me, SPELL_SUPERCHARGE, true);
|
||||
Talk(SAY_STEELBREAKER_DEATH);
|
||||
}
|
||||
@@ -423,7 +423,7 @@ public:
|
||||
return;
|
||||
|
||||
for (uint8 i = 0; i < 3; ++i)
|
||||
if (Creature* boss = ObjectAccessor::GetCreature(*me, pInstance->GetData64(DATA_STEELBREAKER + i)))
|
||||
if (Creature* boss = ObjectAccessor::GetCreature(*me, pInstance->GetGuidData(DATA_STEELBREAKER + i)))
|
||||
if (!boss->IsInCombat())
|
||||
boss->AI()->AttackStart(who);
|
||||
}
|
||||
@@ -464,7 +464,7 @@ public:
|
||||
}
|
||||
else
|
||||
{
|
||||
RestoreAssemblyHealth(pInstance->GetData64(DATA_STEELBREAKER), pInstance->GetData64(DATA_BRUNDIR), me);
|
||||
RestoreAssemblyHealth(pInstance->GetGuidData(DATA_STEELBREAKER), pInstance->GetGuidData(DATA_BRUNDIR), me);
|
||||
me->CastSpell(me, SPELL_SUPERCHARGE, true);
|
||||
Talk(SAY_MOLGEIM_DEATH);
|
||||
}
|
||||
@@ -642,7 +642,7 @@ public:
|
||||
return;
|
||||
|
||||
for (uint8 i = 0; i < 3; ++i)
|
||||
if (Creature* boss = ObjectAccessor::GetCreature(*me, pInstance->GetData64(DATA_STEELBREAKER + i)))
|
||||
if (Creature* boss = ObjectAccessor::GetCreature(*me, pInstance->GetGuidData(DATA_STEELBREAKER + i)))
|
||||
if (!boss->IsInCombat())
|
||||
boss->AI()->AttackStart(who);
|
||||
}
|
||||
@@ -684,7 +684,7 @@ public:
|
||||
}
|
||||
else
|
||||
{
|
||||
RestoreAssemblyHealth(pInstance->GetData64(DATA_STEELBREAKER), pInstance->GetData64(DATA_MOLGEIM), me);
|
||||
RestoreAssemblyHealth(pInstance->GetGuidData(DATA_STEELBREAKER), pInstance->GetGuidData(DATA_MOLGEIM), me);
|
||||
me->CastSpell(me, SPELL_SUPERCHARGE, true);
|
||||
Talk(SAY_BRUNDIR_DEATH);
|
||||
}
|
||||
@@ -788,7 +788,7 @@ public:
|
||||
me->CombatStop();
|
||||
me->StopMoving();
|
||||
me->SetReactState(REACT_PASSIVE);
|
||||
me->SetUInt64Value(UNIT_FIELD_TARGET, 0);
|
||||
me->SetGuidValue(UNIT_FIELD_TARGET, ObjectGuid::Empty);
|
||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_STUNNED);
|
||||
me->SendMonsterMove(_flyTarget->GetPositionX(), _flyTarget->GetPositionY(), _flyTarget->GetPositionZ() + 15, 1500, SPLINEFLAG_FLYING);
|
||||
|
||||
@@ -869,7 +869,7 @@ public:
|
||||
void HandleInstaKill(SpellEffIndex /*effIndex*/)
|
||||
{
|
||||
if (InstanceScript* instance = GetCaster()->GetInstanceScript())
|
||||
if (Creature* Steelbreaker = ObjectAccessor::GetCreature(*GetCaster(), instance->GetData64(DATA_STEELBREAKER)))
|
||||
if (Creature* Steelbreaker = ObjectAccessor::GetCreature(*GetCaster(), instance->GetGuidData(DATA_STEELBREAKER)))
|
||||
Steelbreaker->AI()->DoAction(ACTION_ADD_CHARGE);
|
||||
}
|
||||
|
||||
@@ -898,7 +898,7 @@ public:
|
||||
{
|
||||
PreventDefaultAction();
|
||||
if (aurEff->GetTickNumber() % 2 == 0)
|
||||
GetTarget()->CastSpell(GetTarget(), SPELL_RUNE_OF_SUMMONING_SUMMON, true, nullptr, aurEff, GetTarget()->IsSummon() ? GetTarget()->ToTempSummon()->GetSummonerGUID() : 0);
|
||||
GetTarget()->CastSpell(GetTarget(), SPELL_RUNE_OF_SUMMONING_SUMMON, true, nullptr, aurEff, GetTarget()->IsSummon() ? GetTarget()->ToTempSummon()->GetSummonerGUID() : ObjectGuid::Empty);
|
||||
}
|
||||
|
||||
void OnRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
|
||||
@@ -949,7 +949,7 @@ public:
|
||||
return false;
|
||||
|
||||
if (InstanceScript* instance = target->GetInstanceScript())
|
||||
if (Creature* cr = ObjectAccessor::GetCreature(*target, instance->GetData64(DATA_BRUNDIR)))
|
||||
if (Creature* cr = ObjectAccessor::GetCreature(*target, instance->GetGuidData(DATA_BRUNDIR)))
|
||||
return cr->AI()->GetData(DATA_BRUNDIR);
|
||||
|
||||
return false;
|
||||
|
||||
@@ -291,7 +291,7 @@ public:
|
||||
void EnterCombat(Unit*) override
|
||||
{
|
||||
if (me->GetInstanceScript())
|
||||
if (Creature* cr = ObjectAccessor::GetCreature(*me, me->GetInstanceScript()->GetData64(TYPE_AURIAYA)))
|
||||
if (Creature* cr = ObjectAccessor::GetCreature(*me, me->GetInstanceScript()->GetGuidData(TYPE_AURIAYA)))
|
||||
cr->SetInCombatWithZone();
|
||||
}
|
||||
|
||||
@@ -367,7 +367,7 @@ public:
|
||||
{
|
||||
// inform about our death, start timer
|
||||
if (me->GetInstanceScript())
|
||||
if (Creature* cr = ObjectAccessor::GetCreature(*me, me->GetInstanceScript()->GetData64(TYPE_AURIAYA)))
|
||||
if (Creature* cr = ObjectAccessor::GetCreature(*me, me->GetInstanceScript()->GetGuidData(TYPE_AURIAYA)))
|
||||
cr->AI()->DoAction(_feralEssenceStack ? ACTION_FERAL_DEATH_WITH_STACK : ACTION_FERAL_DEATH);
|
||||
|
||||
if (_feralEssenceStack)
|
||||
@@ -464,7 +464,7 @@ public:
|
||||
{
|
||||
if (target)
|
||||
if (InstanceScript* instance = target->GetInstanceScript())
|
||||
if (Creature* cr = ObjectAccessor::GetCreature(*target, instance->GetData64(TYPE_AURIAYA)))
|
||||
if (Creature* cr = ObjectAccessor::GetCreature(*target, instance->GetGuidData(TYPE_AURIAYA)))
|
||||
return cr->AI()->GetData(DATA_CRAZY_CAT);
|
||||
|
||||
return false;
|
||||
@@ -480,7 +480,7 @@ public:
|
||||
{
|
||||
if (target)
|
||||
if (InstanceScript* instance = target->GetInstanceScript())
|
||||
if (Creature* cr = ObjectAccessor::GetCreature(*target, instance->GetData64(TYPE_AURIAYA)))
|
||||
if (Creature* cr = ObjectAccessor::GetCreature(*target, instance->GetGuidData(TYPE_AURIAYA)))
|
||||
return cr->AI()->GetData(DATA_NINE_LIVES);
|
||||
|
||||
return false;
|
||||
|
||||
@@ -534,24 +534,24 @@ void boss_flame_leviathan::boss_flame_leviathanAI::TurnGates(bool _start, bool _
|
||||
{
|
||||
// first one is ALWAYS turned on, unless leviathan is beaten
|
||||
GameObject* go = nullptr;
|
||||
if ((go = ObjectAccessor::GetGameObject(*me, m_pInstance->GetData64(DATA_LIGHTNING_WALL2))))
|
||||
if ((go = ObjectAccessor::GetGameObject(*me, m_pInstance->GetGuidData(DATA_LIGHTNING_WALL2))))
|
||||
go->SetGoState(GO_STATE_READY);
|
||||
|
||||
if (m_pInstance->GetData(TYPE_LEVIATHAN) == NOT_STARTED)
|
||||
if ((go = ObjectAccessor::GetGameObject(*me, m_pInstance->GetData64(GO_LEVIATHAN_DOORS))))
|
||||
if ((go = ObjectAccessor::GetGameObject(*me, m_pInstance->GetGuidData(GO_LEVIATHAN_DOORS))))
|
||||
go->SetGoState(GO_STATE_ACTIVE_ALTERNATIVE);
|
||||
}
|
||||
else
|
||||
{
|
||||
GameObject* go = nullptr;
|
||||
if (_death)
|
||||
if ((go = ObjectAccessor::GetGameObject(*me, m_pInstance->GetData64(DATA_LIGHTNING_WALL1))))
|
||||
if ((go = ObjectAccessor::GetGameObject(*me, m_pInstance->GetGuidData(DATA_LIGHTNING_WALL1))))
|
||||
go->SetGoState(GO_STATE_ACTIVE);
|
||||
|
||||
if ((go = ObjectAccessor::GetGameObject(*me, m_pInstance->GetData64(DATA_LIGHTNING_WALL2))))
|
||||
if ((go = ObjectAccessor::GetGameObject(*me, m_pInstance->GetGuidData(DATA_LIGHTNING_WALL2))))
|
||||
go->SetGoState(GO_STATE_ACTIVE);
|
||||
|
||||
if ((go = ObjectAccessor::GetGameObject(*me, m_pInstance->GetData64(GO_LEVIATHAN_DOORS))))
|
||||
if ((go = ObjectAccessor::GetGameObject(*me, m_pInstance->GetGuidData(GO_LEVIATHAN_DOORS))))
|
||||
{
|
||||
if (m_pInstance->GetData(TYPE_LEVIATHAN) == SPECIAL || m_pInstance->GetData(TYPE_LEVIATHAN) == DONE)
|
||||
go->SetGoState(GO_STATE_ACTIVE_ALTERNATIVE);
|
||||
@@ -569,16 +569,16 @@ void boss_flame_leviathan::boss_flame_leviathanAI::TurnHealStations(bool _apply)
|
||||
GameObject* go = nullptr;
|
||||
if (_apply)
|
||||
{
|
||||
if ((go = ObjectAccessor::GetGameObject(*me, m_pInstance->GetData64(DATA_REPAIR_STATION1))))
|
||||
if ((go = ObjectAccessor::GetGameObject(*me, m_pInstance->GetGuidData(DATA_REPAIR_STATION1))))
|
||||
go->SetLootState(GO_READY);
|
||||
if ((go = ObjectAccessor::GetGameObject(*me, m_pInstance->GetData64(DATA_REPAIR_STATION2))))
|
||||
if ((go = ObjectAccessor::GetGameObject(*me, m_pInstance->GetGuidData(DATA_REPAIR_STATION2))))
|
||||
go->SetLootState(GO_READY);
|
||||
}
|
||||
else
|
||||
{
|
||||
if ((go = ObjectAccessor::GetGameObject(*me, m_pInstance->GetData64(DATA_REPAIR_STATION1))))
|
||||
if ((go = ObjectAccessor::GetGameObject(*me, m_pInstance->GetGuidData(DATA_REPAIR_STATION1))))
|
||||
go->SetLootState(GO_ACTIVATED);
|
||||
if ((go = ObjectAccessor::GetGameObject(*me, m_pInstance->GetData64(DATA_REPAIR_STATION2))))
|
||||
if ((go = ObjectAccessor::GetGameObject(*me, m_pInstance->GetGuidData(DATA_REPAIR_STATION2))))
|
||||
go->SetLootState(GO_ACTIVATED);
|
||||
}
|
||||
}
|
||||
@@ -800,7 +800,7 @@ public:
|
||||
if (Unit* device = vehicle->GetPassenger(SEAT_DEVICE))
|
||||
device->SetUInt32Value(UNIT_FIELD_FLAGS, 0); // unselectable
|
||||
|
||||
if (Creature* leviathan = ObjectAccessor::GetCreature(*me, _instance->GetData64(TYPE_LEVIATHAN)))
|
||||
if (Creature* leviathan = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(TYPE_LEVIATHAN)))
|
||||
leviathan->AI()->DoAction(ACTION_DESTROYED_TURRET);
|
||||
}
|
||||
|
||||
@@ -1066,7 +1066,7 @@ public:
|
||||
{
|
||||
summons.DespawnAll();
|
||||
_spellTimer = 0;
|
||||
Start(false, false, 0, nullptr, false, true);
|
||||
Start(false, false, ObjectGuid::Empty, nullptr, false, true);
|
||||
if (Aura* aur = me->AddAura(SPELL_FREYA_DUMMY_YELLOW, me))
|
||||
{
|
||||
aur->SetMaxDuration(-1);
|
||||
@@ -1633,7 +1633,7 @@ public:
|
||||
//! Vehicle must be in use by player
|
||||
bool playerFound = false;
|
||||
for (SeatMap::const_iterator itr = vehicle->Seats.begin(); itr != vehicle->Seats.end() && !playerFound; ++itr)
|
||||
if (IS_PLAYER_GUID(itr->second.Passenger.Guid))
|
||||
if (itr->second.Passenger.Guid.IsPlayer())
|
||||
playerFound = true;
|
||||
|
||||
return !playerFound;
|
||||
|
||||
@@ -260,7 +260,6 @@ public:
|
||||
if (!me->IsAlive())
|
||||
if (m_pInstance)
|
||||
m_pInstance->SetData(TYPE_FREYA, DONE);
|
||||
memset(_elderGUID, 0, sizeof(_elderGUID));
|
||||
}
|
||||
|
||||
InstanceScript* m_pInstance;
|
||||
@@ -275,7 +274,7 @@ public:
|
||||
bool _backToNature;
|
||||
uint8 _deforestation;
|
||||
|
||||
uint64 _elderGUID[3];
|
||||
ObjectGuid _elderGUID[3];
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
@@ -292,7 +291,8 @@ public:
|
||||
|
||||
if (Creature* elder = ObjectAccessor::GetCreature(*me, _elderGUID[i]))
|
||||
elder->AI()->EnterEvadeMode();
|
||||
_elderGUID[i] = 0;
|
||||
|
||||
_elderGUID[i].Clear();
|
||||
}
|
||||
|
||||
_lumberjacked = 0;
|
||||
@@ -503,7 +503,7 @@ public:
|
||||
|
||||
// HARD MODE CHECKS
|
||||
Creature* elder = nullptr;
|
||||
elder = ObjectAccessor::GetCreature(*me, m_pInstance->GetData64(NPC_ELDER_STONEBARK));
|
||||
elder = ObjectAccessor::GetCreature(*me, m_pInstance->GetGuidData(NPC_ELDER_STONEBARK));
|
||||
if (elder && elder->IsAlive())
|
||||
{
|
||||
elder->CastSpell(elder, SPELL_DRAINED_OF_POWER, true);
|
||||
@@ -514,7 +514,7 @@ public:
|
||||
_elderGUID[0] = elder->GetGUID();
|
||||
}
|
||||
|
||||
elder = ObjectAccessor::GetCreature(*me, m_pInstance->GetData64(NPC_ELDER_IRONBRANCH));
|
||||
elder = ObjectAccessor::GetCreature(*me, m_pInstance->GetGuidData(NPC_ELDER_IRONBRANCH));
|
||||
if (elder && elder->IsAlive())
|
||||
{
|
||||
elder->CastSpell(elder, SPELL_DRAINED_OF_POWER, true);
|
||||
@@ -525,7 +525,7 @@ public:
|
||||
_elderGUID[1] = elder->GetGUID();
|
||||
}
|
||||
|
||||
elder = ObjectAccessor::GetCreature(*me, m_pInstance->GetData64(NPC_ELDER_BRIGHTLEAF));
|
||||
elder = ObjectAccessor::GetCreature(*me, m_pInstance->GetGuidData(NPC_ELDER_BRIGHTLEAF));
|
||||
if (elder && elder->IsAlive())
|
||||
{
|
||||
elder->CastSpell(elder, SPELL_DRAINED_OF_POWER, true);
|
||||
@@ -713,7 +713,7 @@ public:
|
||||
|
||||
// Lumberjacked
|
||||
if (me->GetInstanceScript())
|
||||
if (Creature* freya = ObjectAccessor::GetCreature(*me, me->GetInstanceScript()->GetData64(TYPE_FREYA)))
|
||||
if (Creature* freya = ObjectAccessor::GetCreature(*me, me->GetInstanceScript()->GetGuidData(TYPE_FREYA)))
|
||||
freya->AI()->DoAction(ACTION_LUMBERJACKED);
|
||||
}
|
||||
|
||||
@@ -819,7 +819,7 @@ public:
|
||||
|
||||
// Lumberjacked
|
||||
if (me->GetInstanceScript())
|
||||
if (Creature* freya = ObjectAccessor::GetCreature(*me, me->GetInstanceScript()->GetData64(TYPE_FREYA)))
|
||||
if (Creature* freya = ObjectAccessor::GetCreature(*me, me->GetInstanceScript()->GetGuidData(TYPE_FREYA)))
|
||||
freya->AI()->DoAction(ACTION_LUMBERJACKED);
|
||||
}
|
||||
|
||||
@@ -940,7 +940,7 @@ public:
|
||||
|
||||
// Lumberjacked
|
||||
if (me->GetInstanceScript())
|
||||
if (Creature* freya = ObjectAccessor::GetCreature(*me, me->GetInstanceScript()->GetData64(TYPE_FREYA)))
|
||||
if (Creature* freya = ObjectAccessor::GetCreature(*me, me->GetInstanceScript()->GetGuidData(TYPE_FREYA)))
|
||||
freya->AI()->DoAction(ACTION_LUMBERJACKED);
|
||||
}
|
||||
|
||||
@@ -1108,13 +1108,13 @@ public:
|
||||
{
|
||||
boss_freya_summonsAI(Creature* pCreature) : ScriptedAI(pCreature)
|
||||
{
|
||||
_freyaGUID = me->GetInstanceScript() ? me->GetInstanceScript()->GetData64(TYPE_FREYA) : 0;
|
||||
_freyaGUID = me->GetInstanceScript() ? me->GetInstanceScript()->GetGuidData(TYPE_FREYA) : ObjectGuid::Empty;
|
||||
_isTrio = me->GetEntry() == NPC_ANCIENT_WATER_SPIRIT || me->GetEntry() == NPC_STORM_LASHER || me->GetEntry() == NPC_SNAPLASHER;
|
||||
_hasDied = false;
|
||||
}
|
||||
|
||||
EventMap events;
|
||||
uint64 _freyaGUID;
|
||||
ObjectGuid _freyaGUID;
|
||||
uint8 _stackCount;
|
||||
bool _hasDied;
|
||||
bool _isTrio;
|
||||
@@ -1251,10 +1251,10 @@ public:
|
||||
{
|
||||
boss_freya_nature_bombAI(Creature* pCreature) : NullCreatureAI(pCreature)
|
||||
{
|
||||
_goGUID = 0;
|
||||
_goGUID.Clear();
|
||||
}
|
||||
|
||||
uint64 _goGUID;
|
||||
ObjectGuid _goGUID;
|
||||
uint32 _explodeTimer;
|
||||
|
||||
void Reset() override
|
||||
|
||||
@@ -232,7 +232,7 @@ public:
|
||||
{
|
||||
me->setAttackTimer(BASE_ATTACK, 2000);
|
||||
Player* target = players.at(urand(0, players.size() - 1));
|
||||
me->SetUInt64Value(UNIT_FIELD_TARGET, target->GetGUID());
|
||||
me->SetGuidValue(UNIT_FIELD_TARGET, target->GetGUID());
|
||||
me->CastSpell(target, SPELL_VEZAX_SHADOW_CRASH, false);
|
||||
events.ScheduleEvent(EVENT_RESTORE_TARGET, 750);
|
||||
}
|
||||
@@ -240,7 +240,7 @@ public:
|
||||
break;
|
||||
case EVENT_RESTORE_TARGET:
|
||||
if (me->GetVictim())
|
||||
me->SetUInt64Value(UNIT_FIELD_TARGET, me->GetVictim()->GetGUID());
|
||||
me->SetGuidValue(UNIT_FIELD_TARGET, me->GetVictim()->GetGUID());
|
||||
break;
|
||||
case EVENT_SPELL_SEARING_FLAMES:
|
||||
if(!me->HasAura(SPELL_SARONITE_BARRIER))
|
||||
@@ -291,8 +291,8 @@ public:
|
||||
events.RepeatEvent(30000);
|
||||
else
|
||||
{
|
||||
for( std::list<uint64>::iterator itr = summons.begin(); itr != summons.end(); ++itr )
|
||||
if( Creature* sv = ObjectAccessor::GetCreature(*me, *itr) )
|
||||
for (ObjectGuid guid : summons)
|
||||
if (Creature* sv = ObjectAccessor::GetCreature(*me, guid))
|
||||
{
|
||||
sv->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
||||
sv->GetMotionMaster()->MoveIdle();
|
||||
@@ -413,7 +413,7 @@ public:
|
||||
|
||||
// killed saronite vapors, hard mode unavailable
|
||||
if( pInstance )
|
||||
if( Creature* vezax = ObjectAccessor::GetCreature(*me, pInstance->GetData64(TYPE_VEZAX)) )
|
||||
if( Creature* vezax = ObjectAccessor::GetCreature(*me, pInstance->GetGuidData(TYPE_VEZAX)) )
|
||||
vezax->AI()->DoAction(1);
|
||||
}
|
||||
};
|
||||
@@ -435,7 +435,7 @@ public:
|
||||
{
|
||||
pInstance = pCreature->GetInstanceScript();
|
||||
if( pInstance )
|
||||
if( Creature* vezax = ObjectAccessor::GetCreature(*me, pInstance->GetData64(TYPE_VEZAX)) )
|
||||
if( Creature* vezax = ObjectAccessor::GetCreature(*me, pInstance->GetGuidData(TYPE_VEZAX)) )
|
||||
vezax->AI()->JustSummoned(me);
|
||||
timer = 0;
|
||||
me->SetInCombatWithZone();
|
||||
@@ -449,7 +449,7 @@ public:
|
||||
me->DespawnOrUnsummon(3000);
|
||||
|
||||
if( pInstance )
|
||||
if( Creature* vezax = ObjectAccessor::GetCreature(*me, pInstance->GetData64(TYPE_VEZAX)) )
|
||||
if( Creature* vezax = ObjectAccessor::GetCreature(*me, pInstance->GetGuidData(TYPE_VEZAX)) )
|
||||
vezax->AI()->DoAction(2);
|
||||
}
|
||||
|
||||
|
||||
@@ -209,7 +209,7 @@ public:
|
||||
InstanceScript* pInstance;
|
||||
EventMap events;
|
||||
SummonList summons;
|
||||
uint64 Helpers[8]{ };
|
||||
ObjectGuid Helpers[8];
|
||||
bool berserk{ false };
|
||||
bool bAchievCheese{ true };
|
||||
bool bAchievGettingCold{ true };
|
||||
@@ -472,7 +472,7 @@ public:
|
||||
|
||||
Creature* GetHelper(uint8 index)
|
||||
{
|
||||
return (Helpers[index] ? ObjectAccessor::GetCreature(*me, Helpers[index]) : nullptr);
|
||||
return Helpers[index] ? ObjectAccessor::GetCreature(*me, Helpers[index]) : nullptr;
|
||||
}
|
||||
|
||||
void SpawnHelpers()
|
||||
@@ -647,7 +647,7 @@ public:
|
||||
{
|
||||
if (pInstance && doneBy)
|
||||
if (pInstance->GetData(TYPE_HODIR) == NOT_STARTED)
|
||||
if (Creature* hodir = ObjectAccessor::GetCreature(*me, pInstance->GetData64(TYPE_HODIR)))
|
||||
if (Creature* hodir = ObjectAccessor::GetCreature(*me, pInstance->GetGuidData(TYPE_HODIR)))
|
||||
hodir->AI()->AttackStart(doneBy);
|
||||
}
|
||||
|
||||
@@ -705,7 +705,7 @@ public:
|
||||
{
|
||||
if( GameObject* fire = me->FindNearestGameObject(194300, 1.0f) )
|
||||
{
|
||||
fire->SetOwnerGUID(0);
|
||||
fire->SetOwnerGUID(ObjectGuid::Empty);
|
||||
fire->Delete();
|
||||
}
|
||||
me->DespawnOrUnsummon(); // this will remove DynObjects
|
||||
@@ -783,7 +783,7 @@ public:
|
||||
{
|
||||
if( !me->HasAura(SPELL_FLASH_FREEZE_TRAPPED_NPC) )
|
||||
if( pInstance )
|
||||
if( uint64 g = pInstance->GetData64(TYPE_HODIR) )
|
||||
if( ObjectGuid g = pInstance->GetGuidData(TYPE_HODIR) )
|
||||
if( Creature* hodir = ObjectAccessor::GetCreature(*me, g) )
|
||||
{
|
||||
AttackStart(hodir);
|
||||
@@ -816,7 +816,7 @@ public:
|
||||
void JustDied(Unit* /*killer*/) override
|
||||
{
|
||||
if (pInstance)
|
||||
if (Creature* hodir = pInstance->instance->GetCreature(pInstance->GetData64(TYPE_HODIR)))
|
||||
if (Creature* hodir = pInstance->instance->GetCreature(pInstance->GetGuidData(TYPE_HODIR)))
|
||||
hodir->AI()->SetData(4, 1);
|
||||
}
|
||||
};
|
||||
@@ -879,7 +879,7 @@ public:
|
||||
{
|
||||
if( !me->HasAura(SPELL_FLASH_FREEZE_TRAPPED_NPC) )
|
||||
if( pInstance )
|
||||
if( uint64 g = pInstance->GetData64(TYPE_HODIR) )
|
||||
if( ObjectGuid g = pInstance->GetGuidData(TYPE_HODIR) )
|
||||
if( Creature* hodir = ObjectAccessor::GetCreature(*me, g) )
|
||||
{
|
||||
AttackStart(hodir);
|
||||
@@ -913,7 +913,7 @@ public:
|
||||
void JustDied(Unit* /*killer*/) override
|
||||
{
|
||||
if (pInstance)
|
||||
if (Creature* hodir = pInstance->instance->GetCreature(pInstance->GetData64(TYPE_HODIR)))
|
||||
if (Creature* hodir = pInstance->instance->GetCreature(pInstance->GetGuidData(TYPE_HODIR)))
|
||||
hodir->AI()->SetData(4, 1);
|
||||
}
|
||||
};
|
||||
@@ -983,7 +983,7 @@ public:
|
||||
{
|
||||
if( !me->HasAura(SPELL_FLASH_FREEZE_TRAPPED_NPC) )
|
||||
if( pInstance )
|
||||
if( uint64 g = pInstance->GetData64(TYPE_HODIR) )
|
||||
if( ObjectGuid g = pInstance->GetGuidData(TYPE_HODIR) )
|
||||
if( Creature* hodir = ObjectAccessor::GetCreature(*me, g) )
|
||||
{
|
||||
AttackStart(hodir);
|
||||
@@ -1013,7 +1013,7 @@ public:
|
||||
void JustDied(Unit* /*killer*/) override
|
||||
{
|
||||
if (pInstance)
|
||||
if (Creature* hodir = pInstance->instance->GetCreature(pInstance->GetData64(TYPE_HODIR)))
|
||||
if (Creature* hodir = pInstance->instance->GetCreature(pInstance->GetGuidData(TYPE_HODIR)))
|
||||
hodir->AI()->SetData(4, 1);
|
||||
}
|
||||
};
|
||||
@@ -1077,7 +1077,7 @@ public:
|
||||
{
|
||||
if( !me->HasAura(SPELL_FLASH_FREEZE_TRAPPED_NPC) )
|
||||
if( pInstance )
|
||||
if( uint64 g = pInstance->GetData64(TYPE_HODIR) )
|
||||
if( ObjectGuid g = pInstance->GetGuidData(TYPE_HODIR) )
|
||||
if( Creature* hodir = ObjectAccessor::GetCreature(*me, g) )
|
||||
{
|
||||
AttackStart(hodir);
|
||||
@@ -1128,7 +1128,7 @@ public:
|
||||
void JustDied(Unit* /*killer*/) override
|
||||
{
|
||||
if (pInstance)
|
||||
if (Creature* hodir = pInstance->instance->GetCreature(pInstance->GetData64(TYPE_HODIR)))
|
||||
if (Creature* hodir = pInstance->instance->GetCreature(pInstance->GetGuidData(TYPE_HODIR)))
|
||||
hodir->AI()->SetData(4, 1);
|
||||
}
|
||||
};
|
||||
@@ -1236,7 +1236,7 @@ public:
|
||||
{
|
||||
if (GetStackAmount() == 2) // increasing from 2 to 3 (not checking >= to improve performance)
|
||||
if (InstanceScript* pInstance = target->GetInstanceScript())
|
||||
if (Creature* hodir = pInstance->instance->GetCreature(pInstance->GetData64(TYPE_HODIR)))
|
||||
if (Creature* hodir = pInstance->instance->GetCreature(pInstance->GetGuidData(TYPE_HODIR)))
|
||||
hodir->AI()->SetData(2, 1);
|
||||
ModStackAmount(1);
|
||||
counter = 0;
|
||||
|
||||
@@ -115,7 +115,7 @@ public:
|
||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
||||
me->SetReactState(REACT_AGGRESSIVE);
|
||||
if (InstanceScript* instance = me->GetInstanceScript())
|
||||
if (Creature* ignis = ObjectAccessor::GetCreature(*me, instance->GetData64(TYPE_IGNIS)))
|
||||
if (Creature* ignis = ObjectAccessor::GetCreature(*me, instance->GetGuidData(TYPE_IGNIS)))
|
||||
{
|
||||
ignis->CastSpell(ignis, SPELL_STRENGTH_OF_THE_CREATOR, true);
|
||||
AttackStart(ignis->GetVictim());
|
||||
@@ -147,7 +147,7 @@ public:
|
||||
Unit::Kill(attacker, me);
|
||||
|
||||
if (InstanceScript* instance = me->GetInstanceScript())
|
||||
if (Creature* ignis = ObjectAccessor::GetCreature(*me, instance->GetData64(TYPE_IGNIS)))
|
||||
if (Creature* ignis = ObjectAccessor::GetCreature(*me, instance->GetGuidData(TYPE_IGNIS)))
|
||||
ignis->AI()->SetData(1337, 0);
|
||||
}
|
||||
}
|
||||
@@ -155,7 +155,7 @@ public:
|
||||
void JustDied(Unit* /*killer*/) override
|
||||
{
|
||||
if (InstanceScript* instance = me->GetInstanceScript())
|
||||
if (Creature* ignis = ObjectAccessor::GetCreature(*me, instance->GetData64(TYPE_IGNIS)))
|
||||
if (Creature* ignis = ObjectAccessor::GetCreature(*me, instance->GetGuidData(TYPE_IGNIS)))
|
||||
ignis->RemoveAuraFromStack(SPELL_STRENGTH_OF_THE_CREATOR);
|
||||
}
|
||||
|
||||
@@ -385,7 +385,7 @@ public:
|
||||
std::list<Creature*> icl;
|
||||
me->GetCreaturesWithEntryInRange(icl, 300.0f, NPC_IRON_CONSTRUCT);
|
||||
|
||||
std::vector<uint64> playerGUIDs;
|
||||
GuidVector playerGUIDs;
|
||||
Map::PlayerList const& pl = me->GetMap()->GetPlayers();
|
||||
Player* temp = nullptr;
|
||||
|
||||
|
||||
@@ -137,8 +137,7 @@ public:
|
||||
|
||||
struct boss_kologarnAI : public ScriptedAI
|
||||
{
|
||||
boss_kologarnAI(Creature* pCreature) : ScriptedAI(pCreature), vehicle(me->GetVehicleKit()),
|
||||
_left(0), _right(0), summons(me), breathReady(false)
|
||||
boss_kologarnAI(Creature* pCreature) : ScriptedAI(pCreature), vehicle(me->GetVehicleKit()), summons(me), breathReady(false)
|
||||
{
|
||||
m_pInstance = me->GetInstanceScript();
|
||||
eyebeamTarget = nullptr;
|
||||
@@ -149,7 +148,7 @@ public:
|
||||
InstanceScript* m_pInstance;
|
||||
|
||||
Vehicle* vehicle;
|
||||
uint64 _left, _right;
|
||||
ObjectGuid _left, _right;
|
||||
EventMap events;
|
||||
SummonList summons;
|
||||
|
||||
@@ -323,7 +322,7 @@ public:
|
||||
// left arm
|
||||
if (who->GetGUID() == _left)
|
||||
{
|
||||
_left = 0;
|
||||
_left.Clear();
|
||||
if (me->IsInCombat())
|
||||
{
|
||||
Talk(SAY_LEFT_ARM_GONE);
|
||||
@@ -332,7 +331,7 @@ public:
|
||||
}
|
||||
else
|
||||
{
|
||||
_right = 0;
|
||||
_right.Clear();
|
||||
if (me->IsInCombat())
|
||||
{
|
||||
Talk(SAY_RIGHT_ARM_GONE);
|
||||
@@ -524,7 +523,7 @@ public:
|
||||
{
|
||||
if (!_combatStarted)
|
||||
if (InstanceScript* instance = me->GetInstanceScript())
|
||||
if (Creature* cr = ObjectAccessor::GetCreature(*me, instance->GetData64(TYPE_KOLOGARN)))
|
||||
if (Creature* cr = ObjectAccessor::GetCreature(*me, instance->GetGuidData(TYPE_KOLOGARN)))
|
||||
{
|
||||
_combatStarted = true;
|
||||
if (!cr->IsInCombat() && who)
|
||||
@@ -561,7 +560,7 @@ public:
|
||||
cr->CastSpell(cr, SPELL_RUBBLE_FALL, true);
|
||||
|
||||
if (me->GetInstanceScript())
|
||||
if (Creature* kologarn = ObjectAccessor::GetCreature(*me, me->GetInstanceScript()->GetData64(TYPE_KOLOGARN)))
|
||||
if (Creature* kologarn = ObjectAccessor::GetCreature(*me, me->GetInstanceScript()->GetGuidData(TYPE_KOLOGARN)))
|
||||
for (uint8 i = 0; i < 5; ++i)
|
||||
if (Creature* cr2 = kologarn->SummonCreature(NPC_RUBBLE_SUMMON, cr->GetPositionX() + irand(-5, 5), cr->GetPositionY() + irand(-5, 5), cr->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 5000))
|
||||
{
|
||||
@@ -572,7 +571,7 @@ public:
|
||||
}
|
||||
|
||||
if (me->GetInstanceScript())
|
||||
if (Creature* cr = ObjectAccessor::GetCreature(*me, me->GetInstanceScript()->GetData64(TYPE_KOLOGARN)))
|
||||
if (Creature* cr = ObjectAccessor::GetCreature(*me, me->GetInstanceScript()->GetGuidData(TYPE_KOLOGARN)))
|
||||
cr->AI()->DoAction(DATA_KOLOGARN_RUBBLE_ACHIEV);
|
||||
|
||||
me->ExitVehicle();
|
||||
@@ -605,7 +604,7 @@ public:
|
||||
if (damage > 0 && !_damaged && me->GetInstanceScript())
|
||||
{
|
||||
_damaged = true;
|
||||
if (Creature* cr = ObjectAccessor::GetCreature(*me, me->GetInstanceScript()->GetData64(TYPE_KOLOGARN)))
|
||||
if (Creature* cr = ObjectAccessor::GetCreature(*me, me->GetInstanceScript()->GetGuidData(TYPE_KOLOGARN)))
|
||||
cr->AI()->DoAction(DATA_KOLOGARN_LOOKS_ACHIEV);
|
||||
}
|
||||
}
|
||||
@@ -615,7 +614,7 @@ public:
|
||||
if (justSpawned)
|
||||
{
|
||||
me->DespawnOrUnsummon(10000);
|
||||
if (Creature* cr = ObjectAccessor::GetCreature(*me, m_pInstance->GetData64(TYPE_KOLOGARN)))
|
||||
if (Creature* cr = ObjectAccessor::GetCreature(*me, m_pInstance->GetGuidData(TYPE_KOLOGARN)))
|
||||
{
|
||||
me->CastSpell(cr, me->GetEntry() == NPC_EYE_LEFT ? SPELL_FOCUSED_EYEBEAM_LEFT : SPELL_FOCUSED_EYEBEAM_RIGHT, true);
|
||||
}
|
||||
@@ -818,7 +817,7 @@ public:
|
||||
{
|
||||
if (target)
|
||||
if (InstanceScript* instance = target->GetInstanceScript())
|
||||
if (Creature* cr = ObjectAccessor::GetCreature(*target, instance->GetData64(TYPE_KOLOGARN)))
|
||||
if (Creature* cr = ObjectAccessor::GetCreature(*target, instance->GetGuidData(TYPE_KOLOGARN)))
|
||||
return cr->AI()->GetData(DATA_KOLOGARN_LOOKS_ACHIEV);
|
||||
|
||||
return false;
|
||||
@@ -834,7 +833,7 @@ public:
|
||||
{
|
||||
if (target)
|
||||
if (InstanceScript* instance = target->GetInstanceScript())
|
||||
if (Creature* cr = ObjectAccessor::GetCreature(*target, instance->GetData64(TYPE_KOLOGARN)))
|
||||
if (Creature* cr = ObjectAccessor::GetCreature(*target, instance->GetGuidData(TYPE_KOLOGARN)))
|
||||
return cr->AI()->GetData(DATA_KOLOGARN_RUBBLE_ACHIEV);
|
||||
|
||||
return false;
|
||||
@@ -850,7 +849,7 @@ public:
|
||||
{
|
||||
if (target)
|
||||
if (InstanceScript* instance = target->GetInstanceScript())
|
||||
if (Creature* cr = ObjectAccessor::GetCreature(*target, instance->GetData64(TYPE_KOLOGARN)))
|
||||
if (Creature* cr = ObjectAccessor::GetCreature(*target, instance->GetGuidData(TYPE_KOLOGARN)))
|
||||
return cr->AI()->GetData(DATA_KOLOGARN_ARMS_ACHIEV);
|
||||
|
||||
return false;
|
||||
|
||||
@@ -267,10 +267,10 @@ enum ComputerTalks
|
||||
TALK_COMPUTER_ZERO = 12,
|
||||
};
|
||||
|
||||
#define GetMimiron() ObjectAccessor::GetCreature(*me, pInstance->GetData64(TYPE_MIMIRON))
|
||||
#define GetLMK2() ObjectAccessor::GetCreature(*me, pInstance->GetData64(DATA_MIMIRON_LEVIATHAN_MKII))
|
||||
#define GetVX001() ObjectAccessor::GetCreature(*me, pInstance->GetData64(DATA_MIMIRON_VX001))
|
||||
#define GetACU() ObjectAccessor::GetCreature(*me, pInstance->GetData64(DATA_MIMIRON_ACU))
|
||||
#define GetMimiron() ObjectAccessor::GetCreature(*me, pInstance->GetGuidData(TYPE_MIMIRON))
|
||||
#define GetLMK2() ObjectAccessor::GetCreature(*me, pInstance->GetGuidData(DATA_MIMIRON_LEVIATHAN_MKII))
|
||||
#define GetVX001() ObjectAccessor::GetCreature(*me, pInstance->GetGuidData(DATA_MIMIRON_VX001))
|
||||
#define GetACU() ObjectAccessor::GetCreature(*me, pInstance->GetGuidData(DATA_MIMIRON_ACU))
|
||||
|
||||
class boss_mimiron : public CreatureScript
|
||||
{
|
||||
@@ -779,7 +779,7 @@ public:
|
||||
|
||||
if( pInstance )
|
||||
for( uint16 i = 0; i < 3; ++i )
|
||||
if( uint64 guid = pInstance->GetData64(DATA_GO_MIMIRON_DOOR_1 + i) )
|
||||
if( ObjectGuid guid = pInstance->GetGuidData(DATA_GO_MIMIRON_DOOR_1 + i) )
|
||||
if( GameObject* door = ObjectAccessor::GetGameObject(*me, guid) )
|
||||
if( door->GetGoState() != GO_STATE_ACTIVE )
|
||||
{
|
||||
@@ -862,7 +862,7 @@ public:
|
||||
{
|
||||
if( pInstance )
|
||||
for( uint16 i = 0; i < 3; ++i )
|
||||
if( uint64 guid = pInstance->GetData64(DATA_GO_MIMIRON_DOOR_1 + i) )
|
||||
if( ObjectGuid guid = pInstance->GetGuidData(DATA_GO_MIMIRON_DOOR_1 + i) )
|
||||
if( GameObject* door = ObjectAccessor::GetGameObject(*me, guid) )
|
||||
if( door->GetGoState() != GO_STATE_ACTIVE )
|
||||
{
|
||||
@@ -893,7 +893,7 @@ public:
|
||||
{
|
||||
if( pInstance )
|
||||
for( uint16 i = 0; i < 3; ++i )
|
||||
if( uint64 guid = pInstance->GetData64(DATA_GO_MIMIRON_DOOR_1 + i) )
|
||||
if( ObjectGuid guid = pInstance->GetGuidData(DATA_GO_MIMIRON_DOOR_1 + i) )
|
||||
if( GameObject* door = ObjectAccessor::GetGameObject(*me, guid) )
|
||||
if( door->GetGoState() != GO_STATE_READY )
|
||||
{
|
||||
@@ -2257,7 +2257,7 @@ public:
|
||||
if(instance->GetData(TYPE_MIMIRON) != NOT_STARTED)
|
||||
return false;
|
||||
|
||||
if (Creature* c = ObjectAccessor::GetCreature(*go, instance->GetData64(TYPE_MIMIRON)))
|
||||
if (Creature* c = ObjectAccessor::GetCreature(*go, instance->GetGuidData(TYPE_MIMIRON)))
|
||||
{
|
||||
c->AI()->SetData(0, 7);
|
||||
c->AI()->AttackStart(player);
|
||||
@@ -2292,7 +2292,7 @@ public:
|
||||
}
|
||||
}
|
||||
|
||||
std::list<uint64> FlameList;
|
||||
GuidList FlameList;
|
||||
EventMap events;
|
||||
uint32 CreateTime;
|
||||
|
||||
@@ -2314,15 +2314,15 @@ public:
|
||||
}
|
||||
}
|
||||
|
||||
void RemoveFlame(uint64 guid)
|
||||
void RemoveFlame(ObjectGuid guid)
|
||||
{
|
||||
FlameList.remove(guid);
|
||||
}
|
||||
|
||||
void RemoveAll()
|
||||
{
|
||||
for( std::list<uint64>::iterator itr = FlameList.begin(); itr != FlameList.end(); ++itr )
|
||||
if (Creature* c = ObjectAccessor::GetCreature(*me, (*itr)))
|
||||
for (ObjectGuid guid : FlameList)
|
||||
if (Creature* c = ObjectAccessor::GetCreature(*me, guid))
|
||||
c->DespawnOrUnsummon();
|
||||
FlameList.clear();
|
||||
me->DespawnOrUnsummon();
|
||||
|
||||
@@ -127,8 +127,8 @@ public:
|
||||
InstanceScript* pInstance;
|
||||
EventMap events;
|
||||
SummonList summons;
|
||||
uint64 ExpeditionEngineerGUIDs[3];
|
||||
uint64 CommanderGUID;
|
||||
ObjectGuid ExpeditionEngineerGUIDs[3];
|
||||
ObjectGuid CommanderGUID;
|
||||
float cords[4][2];
|
||||
bool bGroundPhase;
|
||||
bool startPath;
|
||||
@@ -138,8 +138,11 @@ public:
|
||||
{
|
||||
events.Reset();
|
||||
summons.DespawnAll();
|
||||
memset(&ExpeditionEngineerGUIDs, 0, sizeof(ExpeditionEngineerGUIDs));
|
||||
CommanderGUID = 0;
|
||||
|
||||
for (uint8 i = 0; i < 3; ++i)
|
||||
ExpeditionEngineerGUIDs[i].Clear();
|
||||
|
||||
CommanderGUID.Clear();
|
||||
bGroundPhase = false;
|
||||
flyTimes = 0;
|
||||
|
||||
@@ -206,11 +209,11 @@ public:
|
||||
case SPELL_LAUNCH_CHAIN:
|
||||
{
|
||||
uint32 spell = 0;
|
||||
if( caster->GetGUID() == pInstance->GetData64(DATA_HARPOON_FIRE_STATE_1) )
|
||||
if( caster->GetGUID() == pInstance->GetGuidData(DATA_HARPOON_FIRE_STATE_1) )
|
||||
spell = SPELL_CHAIN_1;
|
||||
else if( caster->GetGUID() == pInstance->GetData64(DATA_HARPOON_FIRE_STATE_2) )
|
||||
else if( caster->GetGUID() == pInstance->GetGuidData(DATA_HARPOON_FIRE_STATE_2) )
|
||||
spell = SPELL_CHAIN_2;
|
||||
else if( caster->GetGUID() == pInstance->GetData64(DATA_HARPOON_FIRE_STATE_3) )
|
||||
else if( caster->GetGUID() == pInstance->GetGuidData(DATA_HARPOON_FIRE_STATE_3) )
|
||||
spell = SPELL_CHAIN_3;
|
||||
else
|
||||
spell = SPELL_CHAIN_4;
|
||||
@@ -243,7 +246,7 @@ public:
|
||||
events.CancelEvent(EVENT_SPELL_FIREBALL);
|
||||
events.CancelEvent(EVENT_SPELL_DEVOURING_FLAME);
|
||||
events.CancelEvent(EVENT_SUMMON_MOLE_MACHINES);
|
||||
me->SetTarget(0);
|
||||
me->SetTarget();
|
||||
me->SendMeleeAttackStop(me->GetVictim());
|
||||
me->GetMotionMaster()->MoveLand(0, CORDS_GROUND, 25.0f);
|
||||
}
|
||||
@@ -444,7 +447,7 @@ public:
|
||||
me->SetInCombatWithZone(); // just in case
|
||||
if (pInstance)
|
||||
for( int i = 0; i < 4; ++i )
|
||||
if( uint64 guid = pInstance->GetData64(DATA_HARPOON_FIRE_STATE_1 + i) )
|
||||
if( ObjectGuid guid = pInstance->GetGuidData(DATA_HARPOON_FIRE_STATE_1 + i) )
|
||||
if( Creature* hfs = ObjectAccessor::GetCreature(*me, guid) )
|
||||
{
|
||||
me->SummonCreature(34188, hfs->GetPositionX(), hfs->GetPositionY(), hfs->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN, 22000);
|
||||
@@ -594,7 +597,7 @@ public:
|
||||
if (instance->GetData(TYPE_RAZORSCALE) == DONE)
|
||||
return true;
|
||||
|
||||
Creature* razorscale = ObjectAccessor::GetCreature(*creature, instance->GetData64(TYPE_RAZORSCALE));
|
||||
Creature* razorscale = ObjectAccessor::GetCreature(*creature, instance->GetGuidData(TYPE_RAZORSCALE));
|
||||
if (!razorscale || razorscale->IsInCombat())
|
||||
return true;
|
||||
|
||||
@@ -614,12 +617,12 @@ public:
|
||||
if (!instance || instance->GetData(TYPE_RAZORSCALE) == DONE)
|
||||
return true;
|
||||
|
||||
Creature* razorscale = ObjectAccessor::GetCreature(*creature, instance->GetData64(TYPE_RAZORSCALE));
|
||||
Creature* razorscale = ObjectAccessor::GetCreature(*creature, instance->GetGuidData(TYPE_RAZORSCALE));
|
||||
if (razorscale && !razorscale->IsInCombat())
|
||||
{
|
||||
// reset npcs NPC_HARPOON_FIRE_STATE
|
||||
for (uint8 i = 0; i < 4; ++i)
|
||||
if (Creature* hfs = ObjectAccessor::GetCreature(*creature, instance->GetData64(DATA_HARPOON_FIRE_STATE_1 + i)))
|
||||
if (Creature* hfs = ObjectAccessor::GetCreature(*creature, instance->GetGuidData(DATA_HARPOON_FIRE_STATE_1 + i)))
|
||||
hfs->AI()->SetData(1, 0);
|
||||
|
||||
if (razorscale->AI())
|
||||
@@ -696,11 +699,11 @@ public:
|
||||
{
|
||||
if (pInstance)
|
||||
{
|
||||
if( me->GetGUID() == pInstance->GetData64(DATA_HARPOON_FIRE_STATE_1) )
|
||||
if( me->GetGUID() == pInstance->GetGuidData(DATA_HARPOON_FIRE_STATE_1) )
|
||||
return GO_HARPOON_GUN_1;
|
||||
else if( me->GetGUID() == pInstance->GetData64(DATA_HARPOON_FIRE_STATE_2) )
|
||||
else if( me->GetGUID() == pInstance->GetGuidData(DATA_HARPOON_FIRE_STATE_2) )
|
||||
return GO_HARPOON_GUN_2;
|
||||
else if( me->GetGUID() == pInstance->GetData64(DATA_HARPOON_FIRE_STATE_3) )
|
||||
else if( me->GetGUID() == pInstance->GetGuidData(DATA_HARPOON_FIRE_STATE_3) )
|
||||
return GO_HARPOON_GUN_3;
|
||||
else
|
||||
return GO_HARPOON_GUN_4;
|
||||
@@ -745,7 +748,7 @@ public:
|
||||
case 3: // shoot
|
||||
if (pInstance)
|
||||
{
|
||||
Creature* razorscale = ObjectAccessor::GetCreature(*me, pInstance->GetData64(TYPE_RAZORSCALE));
|
||||
Creature* razorscale = ObjectAccessor::GetCreature(*me, pInstance->GetGuidData(TYPE_RAZORSCALE));
|
||||
if (!razorscale)
|
||||
return;
|
||||
if (!razorscale->HasAura(value))
|
||||
@@ -787,13 +790,13 @@ public:
|
||||
InstanceScript* pInstance;
|
||||
bool working;
|
||||
uint16 timer;
|
||||
uint64 fixingGUID;
|
||||
ObjectGuid fixingGUID;
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
working = false;
|
||||
timer = 0;
|
||||
fixingGUID = 0;
|
||||
fixingGUID.Clear();
|
||||
}
|
||||
|
||||
void SetData(uint32 id, uint32 /*value*/) override
|
||||
@@ -803,7 +806,7 @@ public:
|
||||
case 1: // start/resume repairing
|
||||
working = true;
|
||||
timer = 0;
|
||||
fixingGUID = 0;
|
||||
fixingGUID.Clear();
|
||||
break;
|
||||
case 2: // stop repairing
|
||||
Reset();
|
||||
@@ -834,14 +837,14 @@ public:
|
||||
|
||||
c->AI()->SetData(2, 0);
|
||||
if (c->AI()->GetData(2))
|
||||
fixingGUID = 0;
|
||||
fixingGUID.Clear();
|
||||
}
|
||||
}
|
||||
|
||||
if (!fixingGUID)
|
||||
{
|
||||
Creature* razorscale = nullptr;
|
||||
if( uint64 rsGUID = pInstance->GetData64(TYPE_RAZORSCALE) )
|
||||
if( ObjectGuid rsGUID = pInstance->GetGuidData(TYPE_RAZORSCALE) )
|
||||
razorscale = ObjectAccessor::GetCreature(*me, rsGUID);
|
||||
|
||||
if( !razorscale || !razorscale->IsInCombat() )
|
||||
@@ -852,7 +855,7 @@ public:
|
||||
}
|
||||
|
||||
for( int i = 0; i < 4; ++i )
|
||||
if( uint64 fs_GUID = pInstance->GetData64(DATA_HARPOON_FIRE_STATE_1 + i) )
|
||||
if( ObjectGuid fs_GUID = pInstance->GetGuidData(DATA_HARPOON_FIRE_STATE_1 + i) )
|
||||
if( Creature* fs = ObjectAccessor::GetCreature(*me, fs_GUID) )
|
||||
if (!fs->AI()->GetData(2))
|
||||
{
|
||||
@@ -890,7 +893,7 @@ public:
|
||||
return true;
|
||||
|
||||
Creature* rs = nullptr;
|
||||
if( uint64 rsGUID = pInstance->GetData64(TYPE_RAZORSCALE) )
|
||||
if( ObjectGuid rsGUID = pInstance->GetGuidData(TYPE_RAZORSCALE) )
|
||||
rs = ObjectAccessor::GetCreature(*go, rsGUID);
|
||||
|
||||
if( !rs || !rs->IsInCombat() )
|
||||
@@ -922,7 +925,7 @@ public:
|
||||
break;
|
||||
}
|
||||
|
||||
if( uint64 g = pInstance->GetData64(npc) )
|
||||
if( ObjectGuid g = pInstance->GetGuidData(npc) )
|
||||
if( Creature* hfs = ObjectAccessor::GetCreature(*go, g) )
|
||||
hfs->AI()->SetData(3, spell);
|
||||
|
||||
|
||||
@@ -355,7 +355,7 @@ public:
|
||||
GameObject* GetThorimObject(uint32 entry)
|
||||
{
|
||||
if (m_pInstance)
|
||||
return ObjectAccessor::GetGameObject(*me, m_pInstance->GetData64(entry));
|
||||
return ObjectAccessor::GetGameObject(*me, m_pInstance->GetGuidData(entry));
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
@@ -845,7 +845,7 @@ public:
|
||||
else if (param == ACTION_SIF_START_DOMINION)
|
||||
{
|
||||
if (me->GetInstanceScript())
|
||||
if (Creature* cr = ObjectAccessor::GetCreature(*me, me->GetInstanceScript()->GetData64(TYPE_THORIM)))
|
||||
if (Creature* cr = ObjectAccessor::GetCreature(*me, me->GetInstanceScript()->GetGuidData(TYPE_THORIM)))
|
||||
me->CastSpell(cr, SPELL_TOUCH_OF_DOMINION, false);
|
||||
|
||||
events.ScheduleEvent(EVENT_SIF_FINISH_DOMINION, 150000);
|
||||
@@ -938,7 +938,7 @@ public:
|
||||
{
|
||||
InitWaypoint();
|
||||
Reset();
|
||||
Start(false, true, 0);
|
||||
Start(false, true);
|
||||
}
|
||||
|
||||
uint32 Timer;
|
||||
@@ -1024,7 +1024,7 @@ public:
|
||||
{
|
||||
InitWaypoint();
|
||||
Reset();
|
||||
Start(false, true, 0);
|
||||
Start(false, true);
|
||||
SetDespawnAtEnd(false);
|
||||
}
|
||||
|
||||
@@ -1130,10 +1130,10 @@ public:
|
||||
|
||||
void DamageTaken(Unit* who, uint32&, DamageEffectType, SpellSchoolMask) override
|
||||
{
|
||||
if (!_playerAttack && who && (who->GetTypeId() == TYPEID_PLAYER || IS_PLAYER_GUID(who->GetOwnerGUID())))
|
||||
if (!_playerAttack && who && (who->GetTypeId() == TYPEID_PLAYER || who->GetOwnerGUID().IsPlayer()))
|
||||
{
|
||||
if (me->GetInstanceScript())
|
||||
if (Creature* thorim = ObjectAccessor::GetCreature(*me, me->GetInstanceScript()->GetData64(TYPE_THORIM)))
|
||||
if (Creature* thorim = ObjectAccessor::GetCreature(*me, me->GetInstanceScript()->GetGuidData(TYPE_THORIM)))
|
||||
{
|
||||
if (!thorim->IsInCombat())
|
||||
{
|
||||
@@ -1154,7 +1154,7 @@ public:
|
||||
void JustDied(Unit*) override
|
||||
{
|
||||
if (me->GetInstanceScript())
|
||||
if (Creature* thorim = ObjectAccessor::GetCreature(*me, me->GetInstanceScript()->GetData64(TYPE_THORIM)))
|
||||
if (Creature* thorim = ObjectAccessor::GetCreature(*me, me->GetInstanceScript()->GetGuidData(TYPE_THORIM)))
|
||||
thorim->AI()->DoAction(ACTION_START_TRASH_DIED);
|
||||
}
|
||||
|
||||
@@ -1379,7 +1379,7 @@ public:
|
||||
bool _leftHand;
|
||||
bool _checkTarget;
|
||||
float _nextTriggerPos;
|
||||
uint64 _triggerLeftGUID[2], _triggerRightGUID[2];
|
||||
ObjectGuid _triggerLeftGUID[2], _triggerRightGUID[2];
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
@@ -1404,7 +1404,7 @@ public:
|
||||
void JustDied(Unit*) override
|
||||
{
|
||||
if (me->GetInstanceScript())
|
||||
if (GameObject* go = ObjectAccessor::GetGameObject(*me, me->GetInstanceScript()->GetData64(DATA_THORIM_FIRST_DOORS)))
|
||||
if (GameObject* go = ObjectAccessor::GetGameObject(*me, me->GetInstanceScript()->GetGuidData(DATA_THORIM_FIRST_DOORS)))
|
||||
go->SetGoState(GO_STATE_ACTIVE);
|
||||
}
|
||||
|
||||
@@ -1533,10 +1533,10 @@ public:
|
||||
{
|
||||
if (InstanceScript* pInstance = me->GetInstanceScript())
|
||||
{
|
||||
if (GameObject* go = ObjectAccessor::GetGameObject(*me, pInstance->GetData64(DATA_THORIM_SECOND_DOORS)))
|
||||
if (GameObject* go = ObjectAccessor::GetGameObject(*me, pInstance->GetGuidData(DATA_THORIM_SECOND_DOORS)))
|
||||
go->SetGoState(GO_STATE_ACTIVE);
|
||||
|
||||
if (Creature* thorim = ObjectAccessor::GetCreature(*me, pInstance->GetData64(TYPE_THORIM)))
|
||||
if (Creature* thorim = ObjectAccessor::GetCreature(*me, pInstance->GetGuidData(TYPE_THORIM)))
|
||||
thorim->AI()->DoAction(ACTION_ALLOW_HIT);
|
||||
}
|
||||
}
|
||||
@@ -1805,7 +1805,7 @@ public:
|
||||
bool OnCheck(Player* player, Unit*) override
|
||||
{
|
||||
if (InstanceScript* instance = player->GetInstanceScript())
|
||||
if (Creature* cr = ObjectAccessor::GetCreature(*player, instance->GetData64(TYPE_THORIM)))
|
||||
if (Creature* cr = ObjectAccessor::GetCreature(*player, instance->GetGuidData(TYPE_THORIM)))
|
||||
return cr->AI()->GetData(DATA_HIT_BY_LIGHTNING);
|
||||
|
||||
return false;
|
||||
@@ -1820,7 +1820,7 @@ public:
|
||||
bool OnCheck(Player* player, Unit*) override
|
||||
{
|
||||
if (InstanceScript* instance = player->GetInstanceScript())
|
||||
if (Creature* cr = ObjectAccessor::GetCreature(*player, instance->GetData64(TYPE_THORIM)))
|
||||
if (Creature* cr = ObjectAccessor::GetCreature(*player, instance->GetGuidData(TYPE_THORIM)))
|
||||
return cr->AI()->GetData(DATA_LOSE_YOUR_ILLUSION);
|
||||
|
||||
return false;
|
||||
|
||||
@@ -160,7 +160,7 @@ public:
|
||||
{
|
||||
m_pInstance->DoStopTimedAchievement(ACHIEVEMENT_TIMED_TYPE_EVENT, ACHIEVEMENT_MUST_DECONSTRUCT_FASTER);
|
||||
m_pInstance->SetData(TYPE_XT002, NOT_STARTED);
|
||||
if (GameObject* pGo = ObjectAccessor::GetGameObject(*me, m_pInstance->GetData64(GO_XT002_DOORS)))
|
||||
if (GameObject* pGo = ObjectAccessor::GetGameObject(*me, m_pInstance->GetGuidData(GO_XT002_DOORS)))
|
||||
pGo->SetGoState(GO_STATE_ACTIVE);
|
||||
}
|
||||
}
|
||||
@@ -197,7 +197,7 @@ public:
|
||||
{
|
||||
m_pInstance->DoStartTimedAchievement(ACHIEVEMENT_TIMED_TYPE_EVENT, ACHIEVEMENT_MUST_DECONSTRUCT_FASTER);
|
||||
m_pInstance->SetData(TYPE_XT002, IN_PROGRESS);
|
||||
if (GameObject* pGo = ObjectAccessor::GetGameObject(*me, m_pInstance->GetData64(GO_XT002_DOORS)))
|
||||
if (GameObject* pGo = ObjectAccessor::GetGameObject(*me, m_pInstance->GetGuidData(GO_XT002_DOORS)))
|
||||
pGo->SetGoState(GO_STATE_READY);
|
||||
}
|
||||
|
||||
@@ -231,7 +231,7 @@ public:
|
||||
if (m_pInstance)
|
||||
{
|
||||
m_pInstance->SetData(TYPE_XT002, DONE);
|
||||
if (GameObject* pGo = ObjectAccessor::GetGameObject(*me, m_pInstance->GetData64(GO_XT002_DOORS)))
|
||||
if (GameObject* pGo = ObjectAccessor::GetGameObject(*me, m_pInstance->GetGuidData(GO_XT002_DOORS)))
|
||||
pGo->SetGoState(GO_STATE_ACTIVE);
|
||||
}
|
||||
|
||||
@@ -458,7 +458,7 @@ public:
|
||||
}
|
||||
else if (param == ACTION_HIDE_HEART)
|
||||
{
|
||||
if (Creature* pXT002 = ObjectAccessor::GetCreature(*me, me->GetInstanceScript()->GetData64(TYPE_XT002)))
|
||||
if (Creature* pXT002 = ObjectAccessor::GetCreature(*me, me->GetInstanceScript()->GetGuidData(TYPE_XT002)))
|
||||
if (pXT002->AI())
|
||||
{
|
||||
pXT002->AI()->DoAction(_damageDone);
|
||||
@@ -524,7 +524,7 @@ public:
|
||||
{
|
||||
me->SetVisible(false);
|
||||
if (me->GetInstanceScript())
|
||||
if (Creature* XT002 = ObjectAccessor::GetCreature(*me, me->GetInstanceScript()->GetData64(TYPE_XT002)))
|
||||
if (Creature* XT002 = ObjectAccessor::GetCreature(*me, me->GetInstanceScript()->GetGuidData(TYPE_XT002)))
|
||||
if (XT002->AI())
|
||||
XT002->AI()->DoAction(ACTION_HEART_BROKEN);
|
||||
}
|
||||
@@ -566,7 +566,7 @@ public:
|
||||
me->SetWalk(true);
|
||||
|
||||
if (me->GetInstanceScript())
|
||||
if (Creature* pXT002 = ObjectAccessor::GetCreature(*me, me->GetInstanceScript()->GetData64(TYPE_XT002)))
|
||||
if (Creature* pXT002 = ObjectAccessor::GetCreature(*me, me->GetInstanceScript()->GetGuidData(TYPE_XT002)))
|
||||
{
|
||||
if (pXT002->GetPositionZ() > 411.0f) // he is on stairs... idiot cryness protection
|
||||
me->GetMotionMaster()->MovePoint(0, 884.028931f, -14.593809f, 409.786987f);
|
||||
@@ -597,7 +597,7 @@ public:
|
||||
|
||||
// we reached the target :)
|
||||
if (type == FOLLOW_MOTION_TYPE && me->GetInstanceScript())
|
||||
if (Creature* pXT002 = ObjectAccessor::GetCreature(*me, me->GetInstanceScript()->GetData64(TYPE_XT002)))
|
||||
if (Creature* pXT002 = ObjectAccessor::GetCreature(*me, me->GetInstanceScript()->GetGuidData(TYPE_XT002)))
|
||||
{
|
||||
if (pXT002->IsAlive())
|
||||
{
|
||||
@@ -617,7 +617,7 @@ public:
|
||||
if (!_locked)
|
||||
{
|
||||
if (me->GetInstanceScript())
|
||||
if (Creature* pXT002 = ObjectAccessor::GetCreature(*me, me->GetInstanceScript()->GetData64(TYPE_XT002)))
|
||||
if (Creature* pXT002 = ObjectAccessor::GetCreature(*me, me->GetInstanceScript()->GetGuidData(TYPE_XT002)))
|
||||
{
|
||||
me->GetMotionMaster()->MoveFollow(pXT002, 0.0f, 0.0f);
|
||||
_locked = true;
|
||||
@@ -737,7 +737,7 @@ public:
|
||||
me->SetUnitMovementFlags(MOVEMENTFLAG_WALKING);
|
||||
|
||||
if (me->GetInstanceScript())
|
||||
if (Creature* pXT002 = ObjectAccessor::GetCreature(*me, me->GetInstanceScript()->GetData64(TYPE_XT002)))
|
||||
if (Creature* pXT002 = ObjectAccessor::GetCreature(*me, me->GetInstanceScript()->GetGuidData(TYPE_XT002)))
|
||||
{
|
||||
if (pXT002->GetPositionZ() > 411.0f) // he is on stairs... idiot cryness protection
|
||||
me->GetMotionMaster()->MovePoint(0, 884.028931f, -14.593809f, 409.786987f);
|
||||
@@ -754,8 +754,8 @@ public:
|
||||
_boomed = true; // Prevent recursive calls
|
||||
|
||||
WorldPacket data(SMSG_SPELLINSTAKILLLOG, 8 + 8 + 4);
|
||||
data << uint64(me->GetGUID());
|
||||
data << uint64(me->GetGUID());
|
||||
data << me->GetGUID();
|
||||
data << me->GetGUID();
|
||||
data << uint32(SPELL_BOOM);
|
||||
me->SendMessageToSet(&data, false);
|
||||
|
||||
@@ -804,7 +804,7 @@ public:
|
||||
if (!_locked)
|
||||
{
|
||||
if (me->GetInstanceScript())
|
||||
if (Creature* pXT002 = ObjectAccessor::GetCreature(*me, me->GetInstanceScript()->GetData64(TYPE_XT002)))
|
||||
if (Creature* pXT002 = ObjectAccessor::GetCreature(*me, me->GetInstanceScript()->GetGuidData(TYPE_XT002)))
|
||||
{
|
||||
me->GetMotionMaster()->MoveFollow(pXT002, 0.0f, 0.0f);
|
||||
_locked = true;
|
||||
@@ -1047,7 +1047,7 @@ public:
|
||||
{
|
||||
if (target)
|
||||
if (InstanceScript* instance = target->GetInstanceScript())
|
||||
if (Creature* cr = ObjectAccessor::GetCreature(*target, instance->GetData64(TYPE_XT002)))
|
||||
if (Creature* cr = ObjectAccessor::GetCreature(*target, instance->GetGuidData(TYPE_XT002)))
|
||||
return cr->AI()->GetData(DATA_XT002_NERF_ENGINEERING);
|
||||
|
||||
return false;
|
||||
@@ -1063,7 +1063,7 @@ public:
|
||||
{
|
||||
if (target)
|
||||
if (InstanceScript* instance = target->GetInstanceScript())
|
||||
if (Creature* cr = ObjectAccessor::GetCreature(*target, instance->GetData64(TYPE_XT002)))
|
||||
if (Creature* cr = ObjectAccessor::GetCreature(*target, instance->GetGuidData(TYPE_XT002)))
|
||||
return cr->AI()->GetData(DATA_XT002_GRAVITY_ACHIEV);
|
||||
|
||||
return false;
|
||||
|
||||
@@ -341,7 +341,7 @@ public:
|
||||
SummonList summons;
|
||||
|
||||
uint32 _initFight;
|
||||
uint64 _keepersGUID[4];
|
||||
ObjectGuid _keepersGUID[4];
|
||||
uint8 _summonedGuardiansCount;
|
||||
uint32 _p2TalkTimer;
|
||||
bool _secondPhase;
|
||||
@@ -427,7 +427,10 @@ public:
|
||||
SpawnClouds();
|
||||
|
||||
_initFight = 1;
|
||||
memset(_keepersGUID, 0, sizeof(_keepersGUID));
|
||||
|
||||
for (uint8 i = 0; i < 4; ++i)
|
||||
_keepersGUID[i].Clear();
|
||||
|
||||
_summonedGuardiansCount = 0;
|
||||
_p2TalkTimer = 0;
|
||||
_secondPhase = false;
|
||||
@@ -440,7 +443,7 @@ public:
|
||||
m_pInstance->DoStopTimedAchievement(ACHIEVEMENT_TIMED_TYPE_EVENT, CRITERIA_NOT_GETTING_OLDER);
|
||||
m_pInstance->DoRemoveAurasDueToSpellOnPlayers(SPELL_SANITY);
|
||||
m_pInstance->SetData(TYPE_YOGGSARON, NOT_STARTED);
|
||||
if (GameObject* go = ObjectAccessor::GetGameObject(*me, m_pInstance->GetData64(GO_YOGG_SARON_DOORS)))
|
||||
if (GameObject* go = ObjectAccessor::GetGameObject(*me, m_pInstance->GetGuidData(GO_YOGG_SARON_DOORS)))
|
||||
go->SetGoState(GO_STATE_ACTIVE);
|
||||
}
|
||||
}
|
||||
@@ -766,7 +769,7 @@ public:
|
||||
me->SummonCreature(NPC_VOICE_OF_YOGG_SARON, me->GetPositionX(), me->GetPositionY(), me->GetPositionZ());
|
||||
|
||||
if (m_pInstance)
|
||||
if (GameObject* go = ObjectAccessor::GetGameObject(*me, m_pInstance->GetData64(GO_YOGG_SARON_DOORS)))
|
||||
if (GameObject* go = ObjectAccessor::GetGameObject(*me, m_pInstance->GetGuidData(GO_YOGG_SARON_DOORS)))
|
||||
go->SetGoState(GO_STATE_READY);
|
||||
|
||||
events.ScheduleEvent(EVENT_SARA_P1_SPELLS, 0, 1, EVENT_PHASE_ONE);
|
||||
@@ -883,7 +886,7 @@ public:
|
||||
{
|
||||
InitWaypoint();
|
||||
Reset();
|
||||
Start(false, true, 0, 0, false, true);
|
||||
Start(false, true, ObjectGuid::Empty, nullptr, false, true);
|
||||
}
|
||||
|
||||
uint32 _checkTimer;
|
||||
@@ -895,7 +898,7 @@ public:
|
||||
|
||||
_isSummoning = false;
|
||||
if (me->GetInstanceScript())
|
||||
if (Creature* sara = ObjectAccessor::GetCreature(*me, me->GetInstanceScript()->GetData64(NPC_SARA)))
|
||||
if (Creature* sara = ObjectAccessor::GetCreature(*me, me->GetInstanceScript()->GetGuidData(NPC_SARA)))
|
||||
sara->AI()->JustSummoned(cr);
|
||||
}
|
||||
|
||||
@@ -1069,9 +1072,9 @@ public:
|
||||
if (m_pInstance)
|
||||
{
|
||||
m_pInstance->SetData(TYPE_YOGGSARON, DONE);
|
||||
if (Creature* sara = ObjectAccessor::GetCreature(*me, m_pInstance->GetData64(NPC_SARA)))
|
||||
if (Creature* sara = ObjectAccessor::GetCreature(*me, m_pInstance->GetGuidData(NPC_SARA)))
|
||||
sara->AI()->DoAction(ACTION_YOGG_SARON_DEATH);
|
||||
if (GameObject* go = ObjectAccessor::GetGameObject(*me, m_pInstance->GetData64(GO_YOGG_SARON_DOORS)))
|
||||
if (GameObject* go = ObjectAccessor::GetGameObject(*me, m_pInstance->GetGuidData(GO_YOGG_SARON_DOORS)))
|
||||
go->SetGoState(GO_STATE_ACTIVE);
|
||||
}
|
||||
|
||||
@@ -1345,7 +1348,7 @@ public:
|
||||
{
|
||||
// Stun
|
||||
if (me->GetInstanceScript())
|
||||
if(Creature* sara = ObjectAccessor::GetCreature(*me, me->GetInstanceScript()->GetData64(NPC_SARA)))
|
||||
if(Creature* sara = ObjectAccessor::GetCreature(*me, me->GetInstanceScript()->GetGuidData(NPC_SARA)))
|
||||
sara->AI()->DoAction(MINUTE * IN_MILLISECONDS - std::min((uint32)MINUTE * IN_MILLISECONDS, _induceTimer));
|
||||
|
||||
_induceTimer = 0;
|
||||
@@ -1412,7 +1415,7 @@ public:
|
||||
|
||||
me->CastSpell(me, SPELL_BRAIN_HURT_VISUAL, true);
|
||||
if (me->GetInstanceScript())
|
||||
if(Creature* sara = ObjectAccessor::GetCreature(*me, me->GetInstanceScript()->GetData64(NPC_SARA)))
|
||||
if(Creature* sara = ObjectAccessor::GetCreature(*me, me->GetInstanceScript()->GetGuidData(NPC_SARA)))
|
||||
sara->AI()->DoAction(ACTION_BRAIN_DAMAGED);
|
||||
}
|
||||
}
|
||||
@@ -1601,11 +1604,11 @@ public:
|
||||
{
|
||||
SetCombatMovement(false);
|
||||
_checkTimer = 1;
|
||||
_playerGUID = 0;
|
||||
_playerGUID.Clear();
|
||||
}
|
||||
|
||||
uint32 _checkTimer;
|
||||
uint64 _playerGUID;
|
||||
ObjectGuid _playerGUID;
|
||||
|
||||
Unit* SelectConstrictTarget()
|
||||
{
|
||||
@@ -1877,17 +1880,17 @@ public:
|
||||
bool _running;
|
||||
int32 _checkTimer;
|
||||
uint8 _step;
|
||||
uint64 _championGUID;
|
||||
uint64 _yoggGUID;
|
||||
ObjectGuid _championGUID;
|
||||
ObjectGuid _yoggGUID;
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
_running = true;
|
||||
_checkTimer = 0;
|
||||
_step = 0;
|
||||
_championGUID = 0;
|
||||
_championGUID.Clear();
|
||||
if (me->GetInstanceScript())
|
||||
_yoggGUID = me->GetInstanceScript()->GetData64(TYPE_YOGGSARON);
|
||||
_yoggGUID = me->GetInstanceScript()->GetGuidData(TYPE_YOGGSARON);
|
||||
}
|
||||
|
||||
void NextStep(const uint32 time)
|
||||
@@ -1896,7 +1899,7 @@ public:
|
||||
_checkTimer = time;
|
||||
}
|
||||
|
||||
void Say(std::string text, uint64 guid, bool yell, uint32 soundId)
|
||||
void Say(std::string text, ObjectGuid guid, bool yell, uint32 soundId)
|
||||
{
|
||||
Creature* creature = guid ? ObjectAccessor::GetCreature(*me, guid) : me;
|
||||
if (!creature)
|
||||
@@ -1946,7 +1949,7 @@ public:
|
||||
case 1:
|
||||
if (Creature* cr = me->FindNearestCreature(NPC_IMMOLATED_CHAMPION, 50))
|
||||
_championGUID = cr->GetGUID();
|
||||
Say("Your resilience is admirable.", 0, false, LK_1);
|
||||
Say("Your resilience is admirable.", ObjectGuid::Empty, false, LK_1);
|
||||
NextStep(7000);
|
||||
break;
|
||||
case 2:
|
||||
@@ -1958,7 +1961,7 @@ public:
|
||||
NextStep(6500);
|
||||
break;
|
||||
case 4:
|
||||
Say("I will break you as I broke him.", 0, false, LK_2);
|
||||
Say("I will break you as I broke him.", ObjectGuid::Empty, false, LK_2);
|
||||
NextStep(7500);
|
||||
break;
|
||||
case 5:
|
||||
@@ -1991,17 +1994,17 @@ public:
|
||||
bool _running;
|
||||
int32 _checkTimer;
|
||||
uint8 _step;
|
||||
uint64 _garonaGUID;
|
||||
uint64 _yoggGUID;
|
||||
ObjectGuid _garonaGUID;
|
||||
ObjectGuid _yoggGUID;
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
_running = true;
|
||||
_checkTimer = 0;
|
||||
_step = 0;
|
||||
_garonaGUID = 0;
|
||||
_garonaGUID.Clear();
|
||||
if (me->GetInstanceScript())
|
||||
_yoggGUID = me->GetInstanceScript()->GetData64(TYPE_YOGGSARON);
|
||||
_yoggGUID = me->GetInstanceScript()->GetGuidData(TYPE_YOGGSARON);
|
||||
}
|
||||
|
||||
void NextStep(const uint32 time)
|
||||
@@ -2010,7 +2013,7 @@ public:
|
||||
_checkTimer = time;
|
||||
}
|
||||
|
||||
void Say(std::string text, uint64 guid, bool yell, uint32 soundId)
|
||||
void Say(std::string text, ObjectGuid guid, bool yell, uint32 soundId)
|
||||
{
|
||||
Creature* creature = guid ? ObjectAccessor::GetCreature(*me, guid) : me;
|
||||
if (!creature)
|
||||
@@ -2080,7 +2083,7 @@ public:
|
||||
NextStep(2500);
|
||||
break;
|
||||
case 6:
|
||||
Say("We will hold until the reinforcements come. As long as men with stout hearts are manning the walls and throne Stormwind will hold.", 0, false, LL_1);
|
||||
Say("We will hold until the reinforcements come. As long as men with stout hearts are manning the walls and throne Stormwind will hold.", ObjectGuid::Empty, false, LL_1);
|
||||
NextStep(10000);
|
||||
break;
|
||||
case 7:
|
||||
@@ -2113,7 +2116,7 @@ public:
|
||||
bool _running;
|
||||
int32 _checkTimer;
|
||||
uint8 _step;
|
||||
uint64 _yoggGUID;
|
||||
ObjectGuid _yoggGUID;
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
@@ -2121,7 +2124,7 @@ public:
|
||||
_checkTimer = 0;
|
||||
_step = 0;
|
||||
if (me->GetInstanceScript())
|
||||
_yoggGUID = me->GetInstanceScript()->GetData64(TYPE_YOGGSARON);
|
||||
_yoggGUID = me->GetInstanceScript()->GetGuidData(TYPE_YOGGSARON);
|
||||
}
|
||||
|
||||
void NextStep(const uint32 time)
|
||||
@@ -2130,9 +2133,9 @@ public:
|
||||
_checkTimer = time;
|
||||
}
|
||||
|
||||
void Say(std::string text, uint64 guid, bool yell, uint32 soundId)
|
||||
void Say(std::string text, ObjectGuid guid, bool yell, uint32 soundId)
|
||||
{
|
||||
Creature* creature = guid ? ObjectAccessor::GetCreature(*me, guid) : me;
|
||||
Creature* creature = !guid ? ObjectAccessor::GetCreature(*me, guid) : me;
|
||||
if (!creature)
|
||||
return;
|
||||
|
||||
@@ -2178,7 +2181,7 @@ public:
|
||||
NextStep(5000);
|
||||
break;
|
||||
case 1:
|
||||
Say("It is done... All have been given that which must be given. I now seal the Dragon Soul forever...", 0, false, NEL_1);
|
||||
Say("It is done... All have been given that which must be given. I now seal the Dragon Soul forever...", ObjectGuid::Empty, false, NEL_1);
|
||||
NextStep(10000);
|
||||
break;
|
||||
case 2:
|
||||
@@ -2187,7 +2190,7 @@ public:
|
||||
NextStep(4000);
|
||||
break;
|
||||
case 3:
|
||||
Say("For it to be as it must, yes.", 0, false, NEL_2);
|
||||
Say("For it to be as it must, yes.", ObjectGuid::Empty, false, NEL_2);
|
||||
NextStep(4000);
|
||||
break;
|
||||
case 4:
|
||||
@@ -2223,7 +2226,7 @@ public:
|
||||
}
|
||||
|
||||
EventMap events;
|
||||
std::vector<uint64> _targets;
|
||||
GuidVector _targets;
|
||||
uint32 _current;
|
||||
|
||||
void Reset() override
|
||||
@@ -2237,7 +2240,7 @@ public:
|
||||
{
|
||||
// Drive Me Crazy achievement failed
|
||||
if (me->GetInstanceScript())
|
||||
if (Creature* yogg = ObjectAccessor::GetCreature(*me, me->GetInstanceScript()->GetData64(TYPE_YOGGSARON)))
|
||||
if (Creature* yogg = ObjectAccessor::GetCreature(*me, me->GetInstanceScript()->GetGuidData(TYPE_YOGGSARON)))
|
||||
yogg->AI()->DoAction(ACTION_FAILED_DRIVE_ME_CRAZY);
|
||||
|
||||
events.ScheduleEvent(40, 8000);
|
||||
@@ -2252,7 +2255,7 @@ public:
|
||||
{
|
||||
case 40:
|
||||
{
|
||||
uint64 _guid = _targets.at(_current);
|
||||
ObjectGuid _guid = _targets.at(_current);
|
||||
++_current;
|
||||
|
||||
if (Player* player = ObjectAccessor::GetPlayer(*me, _guid))
|
||||
@@ -2365,7 +2368,7 @@ public:
|
||||
}
|
||||
|
||||
protected:
|
||||
uint64 _targetGUID;
|
||||
ObjectGuid _targetGUID;
|
||||
};
|
||||
|
||||
AuraScript* GetAuraScript() const override
|
||||
@@ -2969,7 +2972,7 @@ public:
|
||||
bool OnCheck(Player* player, Unit* /*target*/ /*Yogg-Saron*/) override
|
||||
{
|
||||
if (player->GetInstanceScript())
|
||||
if (Creature* sara = ObjectAccessor::GetCreature(*player, player->GetInstanceScript()->GetData64(NPC_SARA)))
|
||||
if (Creature* sara = ObjectAccessor::GetCreature(*player, player->GetInstanceScript()->GetGuidData(NPC_SARA)))
|
||||
return sara->GetAI()->GetData(DATA_GET_KEEPERS_COUNT) <= _keepersCount;
|
||||
|
||||
return false;
|
||||
@@ -2990,7 +2993,7 @@ public:
|
||||
bool OnCheck(Player* player, Unit* /*target*/ /*Yogg-Saron*/) override
|
||||
{
|
||||
if (player->GetInstanceScript())
|
||||
if (Creature* sara = ObjectAccessor::GetCreature(*player, player->GetInstanceScript()->GetData64(NPC_BRAIN_OF_YOGG_SARON)))
|
||||
if (Creature* sara = ObjectAccessor::GetCreature(*player, player->GetInstanceScript()->GetGuidData(NPC_BRAIN_OF_YOGG_SARON)))
|
||||
return sara->GetAI()->GetData(DATA_GET_CURRENT_ILLUSION) == _requiredIllusion;
|
||||
|
||||
return false;
|
||||
|
||||
@@ -37,164 +37,111 @@ public:
|
||||
int m_difficulty;
|
||||
|
||||
// Bosses
|
||||
uint64 m_uiLeviathanGUID;
|
||||
uint64 m_uiIgnisGUID;
|
||||
uint64 m_uiRazorscaleGUID;
|
||||
uint64 m_uiXT002GUID;
|
||||
uint64 m_auiAssemblyGUIDs[3];
|
||||
uint64 m_uiKologarnGUID;
|
||||
uint64 m_uiAuriayaGUID;
|
||||
uint64 m_uiMimironGUID;
|
||||
uint64 m_uiHodirGUID;
|
||||
uint64 m_uiThorimGUID;
|
||||
uint64 m_uiFreyaGUID;
|
||||
uint64 m_uiVezaxGUID;
|
||||
uint64 m_uiYoggSaronGUID;
|
||||
uint64 m_uiAlgalonGUID;
|
||||
ObjectGuid m_uiLeviathanGUID;
|
||||
ObjectGuid m_uiIgnisGUID;
|
||||
ObjectGuid m_uiRazorscaleGUID;
|
||||
ObjectGuid m_uiXT002GUID;
|
||||
ObjectGuid m_auiAssemblyGUIDs[3];
|
||||
ObjectGuid m_uiKologarnGUID;
|
||||
ObjectGuid m_uiAuriayaGUID;
|
||||
ObjectGuid m_uiMimironGUID;
|
||||
ObjectGuid m_uiHodirGUID;
|
||||
ObjectGuid m_uiThorimGUID;
|
||||
ObjectGuid m_uiFreyaGUID;
|
||||
ObjectGuid m_uiVezaxGUID;
|
||||
ObjectGuid m_uiYoggSaronGUID;
|
||||
ObjectGuid m_uiAlgalonGUID;
|
||||
|
||||
// Flame Leviathan
|
||||
uint64 m_leviathanDoorsGUID;
|
||||
uint64 m_leviathanVisualTowers[4][2];
|
||||
uint64 m_RepairSGUID[2];
|
||||
uint64 m_lightningWalls[2];
|
||||
ObjectGuid m_leviathanDoorsGUID;
|
||||
ObjectGuid m_leviathanVisualTowers[4][2];
|
||||
ObjectGuid m_RepairSGUID[2];
|
||||
ObjectGuid m_lightningWalls[2];
|
||||
bool m_leviathanTowers[4];
|
||||
std::list<uint64> _leviathanVehicles;
|
||||
GuidList _leviathanVehicles;
|
||||
uint32 m_unbrokenAchievement;
|
||||
uint32 m_mageBarrier;
|
||||
|
||||
// Razorscale
|
||||
uint64 m_RazorscaleHarpoonFireStateGUID[4];
|
||||
ObjectGuid m_RazorscaleHarpoonFireStateGUID[4];
|
||||
|
||||
// XT-002
|
||||
uint64 m_xt002DoorsGUID;
|
||||
ObjectGuid m_xt002DoorsGUID;
|
||||
|
||||
// Kologarn
|
||||
uint64 KologarnDoorGUID;
|
||||
ObjectGuid KologarnDoorGUID;
|
||||
|
||||
// Assembly of Iron
|
||||
uint64 m_assemblyDoorsGUID;
|
||||
uint64 m_archivumDoorsGUID;
|
||||
ObjectGuid m_assemblyDoorsGUID;
|
||||
ObjectGuid m_archivumDoorsGUID;
|
||||
|
||||
// Thorim
|
||||
uint64 m_thorimGameobjectsGUID[5];
|
||||
ObjectGuid m_thorimGameobjectsGUID[5];
|
||||
|
||||
// Hodir's chests
|
||||
bool hmHodir;
|
||||
uint64 m_hodirNormalChest;
|
||||
uint64 m_hodirHardmodeChest;
|
||||
ObjectGuid m_hodirNormalChest;
|
||||
ObjectGuid m_hodirHardmodeChest;
|
||||
Position normalChestPosition = { 1967.152588f, -204.188461f, 432.686951f, 5.50957f };
|
||||
Position hardChestPosition = { 2035.94600f, -202.084885f, 432.686859f, 3.164077f };
|
||||
|
||||
// Mimiron
|
||||
uint64 m_MimironDoor[3];
|
||||
uint64 m_MimironLeviathanMKIIguid;
|
||||
uint64 m_MimironVX001guid;
|
||||
uint64 m_MimironACUguid;
|
||||
ObjectGuid m_MimironDoor[3];
|
||||
ObjectGuid m_MimironLeviathanMKIIguid;
|
||||
ObjectGuid m_MimironVX001guid;
|
||||
ObjectGuid m_MimironACUguid;
|
||||
|
||||
// Freya
|
||||
uint64 m_FreyaElder[3];
|
||||
ObjectGuid m_FreyaElder[3];
|
||||
uint32 m_conspeedatoryAttempt;
|
||||
|
||||
// Yogg-Saron
|
||||
uint64 m_saraGUID;
|
||||
uint64 m_yoggsaronBrainGUID;
|
||||
uint64 m_yoggsaronDoorsGUID;
|
||||
ObjectGuid m_saraGUID;
|
||||
ObjectGuid m_yoggsaronBrainGUID;
|
||||
ObjectGuid m_yoggsaronDoorsGUID;
|
||||
|
||||
// Algalon
|
||||
uint64 m_algalonSigilDoorGUID[3];
|
||||
uint64 m_algalonFloorGUID[2];
|
||||
uint64 m_algalonUniverseGUID;
|
||||
uint64 m_algalonTrapdoorGUID;
|
||||
uint64 m_brannBronzebeardAlgGUID;
|
||||
uint64 m_brannBronzebeardBaseCamp;
|
||||
ObjectGuid m_algalonSigilDoorGUID[3];
|
||||
ObjectGuid m_algalonFloorGUID[2];
|
||||
ObjectGuid m_algalonUniverseGUID;
|
||||
ObjectGuid m_algalonTrapdoorGUID;
|
||||
ObjectGuid m_brannBronzebeardAlgGUID;
|
||||
ObjectGuid m_brannBronzebeardBaseCamp;
|
||||
uint32 m_algalonTimer;
|
||||
|
||||
// Shared
|
||||
EventMap _events;
|
||||
bool m_mimironTramUsed;
|
||||
uint64 m_mimironTramGUID;
|
||||
uint64 m_keepersgateGUID;
|
||||
uint64 m_keepersGossipGUID[4];
|
||||
ObjectGuid m_mimironTramGUID;
|
||||
ObjectGuid m_keepersgateGUID;
|
||||
ObjectGuid m_keepersGossipGUID[4];
|
||||
|
||||
void Initialize() override
|
||||
{
|
||||
// Bosses
|
||||
memset(&m_auiEncounter, 0, sizeof(m_auiEncounter));
|
||||
C_of_Ulduar_MASK = 0;
|
||||
memset(&m_auiAssemblyGUIDs, 0, sizeof(m_auiAssemblyGUIDs));
|
||||
m_uiLeviathanGUID = 0;
|
||||
m_uiIgnisGUID = 0;
|
||||
m_uiRazorscaleGUID = 0;
|
||||
m_uiXT002GUID = 0;
|
||||
m_uiKologarnGUID = 0;
|
||||
m_uiAuriayaGUID = 0;
|
||||
m_uiMimironGUID = 0;
|
||||
m_uiHodirGUID = 0;
|
||||
m_uiThorimGUID = 0;
|
||||
m_uiFreyaGUID = 0;
|
||||
m_uiVezaxGUID = 0;
|
||||
m_uiYoggSaronGUID = 0;
|
||||
m_uiAlgalonGUID = 0;
|
||||
|
||||
// Flame Leviathan
|
||||
memset(&m_leviathanTowers, 1, sizeof(m_leviathanTowers));
|
||||
memset(&m_leviathanVisualTowers, 0, sizeof(m_leviathanVisualTowers));
|
||||
memset(&m_RepairSGUID, 0, sizeof(m_RepairSGUID));
|
||||
memset(&m_lightningWalls, 0, sizeof(m_lightningWalls));
|
||||
m_leviathanDoorsGUID = 0;
|
||||
for (uint8 i = 0; i < 4; ++i)
|
||||
m_leviathanTowers[i] = false;
|
||||
|
||||
_leviathanVehicles.clear();
|
||||
m_unbrokenAchievement = 1;
|
||||
m_mageBarrier = 0;
|
||||
m_brannBronzebeardBaseCamp = 0;
|
||||
|
||||
// Razorscale
|
||||
memset(&m_RazorscaleHarpoonFireStateGUID, 0, sizeof(m_RazorscaleHarpoonFireStateGUID));
|
||||
|
||||
// XT-002
|
||||
m_xt002DoorsGUID = 0;
|
||||
|
||||
// Kologarn Door
|
||||
// Assembly of Iron
|
||||
m_assemblyDoorsGUID = 0;
|
||||
m_archivumDoorsGUID = 0;
|
||||
|
||||
// Thorim
|
||||
memset(&m_thorimGameobjectsGUID, 0, sizeof(m_thorimGameobjectsGUID));
|
||||
|
||||
// Hodir
|
||||
m_hodirNormalChest = 0;
|
||||
m_hodirHardmodeChest = 0;
|
||||
hmHodir = true; // If players fail the Hardmode then becomes false
|
||||
|
||||
// Mimiron
|
||||
memset(&m_MimironDoor, 0, sizeof(m_MimironDoor));
|
||||
m_MimironLeviathanMKIIguid = 0;
|
||||
m_MimironVX001guid = 0;
|
||||
m_MimironACUguid = 0;
|
||||
|
||||
// Freya
|
||||
memset(&m_FreyaElder, 0, sizeof(m_FreyaElder));
|
||||
m_conspeedatoryAttempt = 0;
|
||||
|
||||
// Yogg-Saron
|
||||
m_saraGUID = 0;
|
||||
m_yoggsaronBrainGUID = 0;
|
||||
m_yoggsaronDoorsGUID = 0;
|
||||
|
||||
// Algalon
|
||||
memset(&m_algalonSigilDoorGUID, 0, sizeof(m_algalonSigilDoorGUID));
|
||||
memset(&m_algalonFloorGUID, 0, sizeof(m_algalonFloorGUID));
|
||||
m_algalonUniverseGUID = 0;
|
||||
m_algalonTrapdoorGUID = 0;
|
||||
m_brannBronzebeardAlgGUID = 0;
|
||||
m_algalonTimer = 0;
|
||||
|
||||
// Shared
|
||||
_events.Reset();
|
||||
memset(&m_keepersGossipGUID, 0, sizeof(m_keepersGossipGUID));
|
||||
m_mimironTramUsed = false;
|
||||
m_mimironTramGUID = 0;
|
||||
m_keepersgateGUID = 0;
|
||||
}
|
||||
|
||||
void FillInitialWorldStates(WorldPacket& packet) override
|
||||
@@ -457,7 +404,7 @@ public:
|
||||
{
|
||||
case NPC_BRANN_BRONZBEARD_ALG:
|
||||
if (m_brannBronzebeardAlgGUID == creature->GetGUID())
|
||||
m_brannBronzebeardAlgGUID = 0;
|
||||
m_brannBronzebeardAlgGUID.Clear();
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -468,7 +415,7 @@ public:
|
||||
go->SetGoState(state);
|
||||
}
|
||||
|
||||
void ShowKeeperGossip(uint8 type, Creature* cr, uint64 guid = 0)
|
||||
void ShowKeeperGossip(uint8 type, Creature* cr, ObjectGuid guid = ObjectGuid::Empty)
|
||||
{
|
||||
if (!cr)
|
||||
{
|
||||
@@ -739,7 +686,7 @@ public:
|
||||
{
|
||||
hmHodir = false;
|
||||
go->Delete();
|
||||
m_hodirHardmodeChest = 0;
|
||||
m_hodirHardmodeChest.Clear();
|
||||
}
|
||||
break;
|
||||
case TYPE_WATCHERS:
|
||||
@@ -788,27 +735,27 @@ public:
|
||||
return;
|
||||
case TYPE_ALGALON:
|
||||
m_auiEncounter[type] = data;
|
||||
if (GameObject* go = instance->GetGameObject(GetData64(GO_DOODAD_UL_SIGILDOOR_03)))
|
||||
if (GameObject* go = instance->GetGameObject(GetGuidData(GO_DOODAD_UL_SIGILDOOR_03)))
|
||||
{
|
||||
go->SetGoState(data != IN_PROGRESS ? GO_STATE_ACTIVE : GO_STATE_READY);
|
||||
go->EnableCollision(false);
|
||||
}
|
||||
if (GameObject* go = instance->GetGameObject(GetData64(GO_DOODAD_UL_UNIVERSEFLOOR_01)))
|
||||
if (GameObject* go = instance->GetGameObject(GetGuidData(GO_DOODAD_UL_UNIVERSEFLOOR_01)))
|
||||
{
|
||||
go->SetGoState(data != IN_PROGRESS ? GO_STATE_ACTIVE : GO_STATE_READY);
|
||||
go->EnableCollision(false);
|
||||
}
|
||||
if (GameObject* go = instance->GetGameObject(GetData64(GO_DOODAD_UL_UNIVERSEFLOOR_02)))
|
||||
if (GameObject* go = instance->GetGameObject(GetGuidData(GO_DOODAD_UL_UNIVERSEFLOOR_02)))
|
||||
{
|
||||
go->SetGoState(data == IN_PROGRESS ? GO_STATE_ACTIVE : GO_STATE_READY);
|
||||
go->EnableCollision(false);
|
||||
}
|
||||
if (GameObject* go = instance->GetGameObject(GetData64(GO_DOODAD_UL_UNIVERSEGLOBE01)))
|
||||
if (GameObject* go = instance->GetGameObject(GetGuidData(GO_DOODAD_UL_UNIVERSEGLOBE01)))
|
||||
{
|
||||
go->SetGoState(data == IN_PROGRESS ? GO_STATE_ACTIVE : GO_STATE_READY);
|
||||
go->EnableCollision(false);
|
||||
}
|
||||
if (GameObject* go = instance->GetGameObject(GetData64(GO_DOODAD_UL_ULDUAR_TRAPDOOR_03)))
|
||||
if (GameObject* go = instance->GetGameObject(GetGuidData(GO_DOODAD_UL_ULDUAR_TRAPDOOR_03)))
|
||||
{
|
||||
go->SetGoState(data == IN_PROGRESS ? GO_STATE_ACTIVE : GO_STATE_READY);
|
||||
go->EnableCollision(false);
|
||||
@@ -848,7 +795,7 @@ public:
|
||||
if (type == TYPE_FREYA && data == DONE)
|
||||
{
|
||||
std::list<GameObject*> goList;
|
||||
if (Creature* freya = instance->GetCreature(GetData64(TYPE_FREYA)))
|
||||
if (Creature* freya = instance->GetCreature(GetGuidData(TYPE_FREYA)))
|
||||
{
|
||||
freya->GetGameObjectListWithEntryInGrid(goList, 191019 /*Adder's Tongue*/, 333.0f);
|
||||
freya->GetGameObjectListWithEntryInGrid(goList, 190176 /*Frost Lotus*/, 333.0f);
|
||||
@@ -873,9 +820,9 @@ public:
|
||||
}
|
||||
}
|
||||
|
||||
uint64 GetData64(uint32 data) const override
|
||||
ObjectGuid GetGuidData(uint32 data) const override
|
||||
{
|
||||
switch(data)
|
||||
switch (data)
|
||||
{
|
||||
// Bosses
|
||||
case TYPE_LEVIATHAN:
|
||||
@@ -998,7 +945,7 @@ public:
|
||||
return m_brannBronzebeardAlgGUID;
|
||||
}
|
||||
|
||||
return 0;
|
||||
return ObjectGuid::Empty;
|
||||
}
|
||||
|
||||
uint32 GetData(uint32 type) const override
|
||||
@@ -1272,8 +1219,8 @@ void instance_ulduar::instance_ulduar_InstanceMapScript::SpawnLeviathanEncounter
|
||||
{
|
||||
if (!_leviathanVehicles.empty())
|
||||
{
|
||||
for (std::list<uint64>::iterator itr = _leviathanVehicles.begin(); itr != _leviathanVehicles.end(); ++itr)
|
||||
if (Creature* cr = instance->GetCreature(*itr))
|
||||
for (ObjectGuid guid : _leviathanVehicles)
|
||||
if (Creature* cr = instance->GetCreature(guid))
|
||||
if (Vehicle* veh = cr->GetVehicleKit())
|
||||
veh->Dismiss();
|
||||
|
||||
|
||||
@@ -148,11 +148,11 @@ public:
|
||||
{
|
||||
npc_ulduar_storm_tempered_keeperAI(Creature* creature) : ScriptedAI(creature)
|
||||
{
|
||||
otherGUID = 0;
|
||||
otherGUID.Clear();
|
||||
}
|
||||
|
||||
EventMap events;
|
||||
uint64 otherGUID;
|
||||
ObjectGuid otherGUID;
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
|
||||
@@ -106,13 +106,13 @@ public:
|
||||
InstanceScript* pInstance;
|
||||
EventMap events;
|
||||
SummonList summons;
|
||||
uint64 ValkyrGUID;
|
||||
uint64 ThrowGUID;
|
||||
ObjectGuid ValkyrGUID;
|
||||
ObjectGuid ThrowGUID;
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
ValkyrGUID = 0;
|
||||
ThrowGUID = 0;
|
||||
ValkyrGUID.Clear();
|
||||
ThrowGUID.Clear();
|
||||
events.Reset();
|
||||
summons.DespawnAll();
|
||||
me->SetDisplayId(DISPLAYID_DEFAULT);
|
||||
@@ -367,7 +367,7 @@ public:
|
||||
c->DespawnOrUnsummon();
|
||||
summons.DespawnAll();
|
||||
}
|
||||
ThrowGUID = 0;
|
||||
ThrowGUID.Clear();
|
||||
SetEquipmentSlots(true);
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -55,7 +55,7 @@ public:
|
||||
|
||||
struct npc_frost_tombAI : public NullCreatureAI
|
||||
{
|
||||
npc_frost_tombAI(Creature* c) : NullCreatureAI(c), PrisonerGUID(0)
|
||||
npc_frost_tombAI(Creature* c) : NullCreatureAI(c)
|
||||
{
|
||||
if (TempSummon* t = c->ToTempSummon())
|
||||
if (Unit* s = t->GetSummoner())
|
||||
@@ -70,7 +70,7 @@ public:
|
||||
c->CastSpell(s, SPELL_FROST_TOMB_AURA, true);
|
||||
}
|
||||
}
|
||||
uint64 PrisonerGUID;
|
||||
ObjectGuid PrisonerGUID;
|
||||
|
||||
void JustDied(Unit* killer) override
|
||||
{
|
||||
|
||||
@@ -120,7 +120,7 @@ public:
|
||||
if (pInstance)
|
||||
{
|
||||
pInstance->SetData(DATA_DALRONN_AND_SKARVALD, IN_PROGRESS);
|
||||
if (Creature* dalronn = pInstance->instance->GetCreature(pInstance->GetData64(DATA_DALRONN)))
|
||||
if (Creature* dalronn = pInstance->instance->GetCreature(pInstance->GetGuidData(DATA_DALRONN)))
|
||||
{
|
||||
if (!dalronn->IsInCombat() && who)
|
||||
{
|
||||
@@ -146,7 +146,7 @@ public:
|
||||
|
||||
if (pInstance)
|
||||
{
|
||||
if (Creature* dalronn = pInstance->instance->GetCreature(pInstance->GetData64(DATA_DALRONN)))
|
||||
if (Creature* dalronn = pInstance->instance->GetCreature(pInstance->GetGuidData(DATA_DALRONN)))
|
||||
{
|
||||
if (dalronn->isDead())
|
||||
{
|
||||
@@ -288,7 +288,7 @@ public:
|
||||
if (pInstance)
|
||||
{
|
||||
pInstance->SetData(DATA_DALRONN_AND_SKARVALD, IN_PROGRESS);
|
||||
if (Creature* skarvald = pInstance->instance->GetCreature(pInstance->GetData64(DATA_SKARVALD)))
|
||||
if (Creature* skarvald = pInstance->instance->GetCreature(pInstance->GetGuidData(DATA_SKARVALD)))
|
||||
{
|
||||
if (!skarvald->IsInCombat() && who)
|
||||
{
|
||||
@@ -320,7 +320,7 @@ public:
|
||||
|
||||
if (pInstance)
|
||||
{
|
||||
if (Creature* skarvald = pInstance->instance->GetCreature(pInstance->GetData64(DATA_SKARVALD)))
|
||||
if (Creature* skarvald = pInstance->instance->GetCreature(pInstance->GetGuidData(DATA_SKARVALD)))
|
||||
{
|
||||
if (skarvald->isDead())
|
||||
{
|
||||
|
||||
@@ -25,19 +25,19 @@ public:
|
||||
uint32 ForgeEventMask;
|
||||
std::string str_data;
|
||||
|
||||
uint64 GO_ForgeBellowGUID[3];
|
||||
uint64 GO_ForgeFireGUID[3];
|
||||
uint64 GO_ForgeAnvilGUID[3];
|
||||
uint64 GO_PortcullisGUID[2];
|
||||
ObjectGuid GO_ForgeBellowGUID[3];
|
||||
ObjectGuid GO_ForgeFireGUID[3];
|
||||
ObjectGuid GO_ForgeAnvilGUID[3];
|
||||
ObjectGuid GO_PortcullisGUID[2];
|
||||
|
||||
uint64 NPC_KelesethGUID;
|
||||
uint64 NPC_DalronnGUID;
|
||||
uint64 NPC_SkarvaldGUID;
|
||||
uint64 NPC_DalronnGhostGUID;
|
||||
uint64 NPC_SkarvaldGhostGUID;
|
||||
uint64 NPC_IngvarGUID;
|
||||
uint64 NPC_DarkRangerMarrahGUID;
|
||||
uint64 NPC_SpecialDrakeGUID;
|
||||
ObjectGuid NPC_KelesethGUID;
|
||||
ObjectGuid NPC_DalronnGUID;
|
||||
ObjectGuid NPC_SkarvaldGUID;
|
||||
ObjectGuid NPC_DalronnGhostGUID;
|
||||
ObjectGuid NPC_SkarvaldGhostGUID;
|
||||
ObjectGuid NPC_IngvarGUID;
|
||||
ObjectGuid NPC_DarkRangerMarrahGUID;
|
||||
ObjectGuid NPC_SpecialDrakeGUID;
|
||||
bool bRocksAchiev;
|
||||
|
||||
void Initialize() override
|
||||
@@ -45,19 +45,6 @@ public:
|
||||
memset(&m_auiEncounter, 0, sizeof(m_auiEncounter));
|
||||
ForgeEventMask = 0;
|
||||
|
||||
memset(&GO_ForgeBellowGUID, 0, sizeof(GO_ForgeBellowGUID));
|
||||
memset(&GO_ForgeFireGUID, 0, sizeof(GO_ForgeFireGUID));
|
||||
memset(&GO_ForgeAnvilGUID, 0, sizeof(GO_ForgeAnvilGUID));
|
||||
memset(&GO_PortcullisGUID, 0, sizeof(GO_PortcullisGUID));
|
||||
|
||||
NPC_KelesethGUID = 0;
|
||||
NPC_DalronnGUID = 0;
|
||||
NPC_SkarvaldGUID = 0;
|
||||
NPC_DalronnGhostGUID = 0;
|
||||
NPC_SkarvaldGhostGUID = 0;
|
||||
NPC_IngvarGUID = 0;
|
||||
NPC_DarkRangerMarrahGUID = 0;
|
||||
NPC_SpecialDrakeGUID = 0;
|
||||
bRocksAchiev = true;
|
||||
}
|
||||
|
||||
@@ -123,47 +110,47 @@ public:
|
||||
{
|
||||
case GO_BELLOW_1:
|
||||
GO_ForgeBellowGUID[0] = go->GetGUID();
|
||||
if (ForgeEventMask & 1) HandleGameObject(0, true, go);
|
||||
if (ForgeEventMask & 1) HandleGameObject(ObjectGuid::Empty, true, go);
|
||||
break;
|
||||
case GO_BELLOW_2:
|
||||
GO_ForgeBellowGUID[1] = go->GetGUID();
|
||||
if (ForgeEventMask & 2) HandleGameObject(0, true, go);
|
||||
if (ForgeEventMask & 2) HandleGameObject(ObjectGuid::Empty, true, go);
|
||||
break;
|
||||
case GO_BELLOW_3:
|
||||
GO_ForgeBellowGUID[2] = go->GetGUID();
|
||||
if (ForgeEventMask & 4) HandleGameObject(0, true, go);
|
||||
if (ForgeEventMask & 4) HandleGameObject(ObjectGuid::Empty, true, go);
|
||||
break;
|
||||
case GO_FORGEFIRE_1:
|
||||
GO_ForgeFireGUID[0] = go->GetGUID();
|
||||
if (ForgeEventMask & 1) HandleGameObject(0, true, go);
|
||||
if (ForgeEventMask & 1) HandleGameObject(ObjectGuid::Empty, true, go);
|
||||
break;
|
||||
case GO_FORGEFIRE_2:
|
||||
GO_ForgeFireGUID[1] = go->GetGUID();
|
||||
if (ForgeEventMask & 2) HandleGameObject(0, true, go);
|
||||
if (ForgeEventMask & 2) HandleGameObject(ObjectGuid::Empty, true, go);
|
||||
break;
|
||||
case GO_FORGEFIRE_3:
|
||||
GO_ForgeFireGUID[2] = go->GetGUID();
|
||||
if (ForgeEventMask & 4) HandleGameObject(0, true, go);
|
||||
if (ForgeEventMask & 4) HandleGameObject(ObjectGuid::Empty, true, go);
|
||||
break;
|
||||
case GO_GLOWING_ANVIL_1:
|
||||
GO_ForgeAnvilGUID[0] = go->GetGUID();
|
||||
if (ForgeEventMask & 1) HandleGameObject(0, true, go);
|
||||
if (ForgeEventMask & 1) HandleGameObject(ObjectGuid::Empty, true, go);
|
||||
break;
|
||||
case GO_GLOWING_ANVIL_2:
|
||||
GO_ForgeAnvilGUID[1] = go->GetGUID();
|
||||
if (ForgeEventMask & 2) HandleGameObject(0, true, go);
|
||||
if (ForgeEventMask & 2) HandleGameObject(ObjectGuid::Empty, true, go);
|
||||
break;
|
||||
case GO_GLOWING_ANVIL_3:
|
||||
GO_ForgeAnvilGUID[2] = go->GetGUID();
|
||||
if (ForgeEventMask & 4) HandleGameObject(0, true, go);
|
||||
if (ForgeEventMask & 4) HandleGameObject(ObjectGuid::Empty, true, go);
|
||||
break;
|
||||
case GO_GIANT_PORTCULLIS_1:
|
||||
GO_PortcullisGUID[0] = go->GetGUID();
|
||||
if (m_auiEncounter[2] == DONE) HandleGameObject(0, true, go);
|
||||
if (m_auiEncounter[2] == DONE) HandleGameObject(ObjectGuid::Empty, true, go);
|
||||
break;
|
||||
case GO_GIANT_PORTCULLIS_2:
|
||||
GO_PortcullisGUID[1] = go->GetGUID();
|
||||
if (m_auiEncounter[2] == DONE) HandleGameObject(0, true, go);
|
||||
if (m_auiEncounter[2] == DONE) HandleGameObject(ObjectGuid::Empty, true, go);
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -197,10 +184,10 @@ public:
|
||||
c->AI()->DoAction(-1);
|
||||
c->DespawnOrUnsummon();
|
||||
}
|
||||
NPC_DalronnGhostGUID = 0;
|
||||
NPC_DalronnGhostGUID.Clear();
|
||||
if( Creature* c = instance->GetCreature(NPC_SkarvaldGhostGUID) )
|
||||
c->DespawnOrUnsummon();
|
||||
NPC_SkarvaldGhostGUID = 0;
|
||||
NPC_SkarvaldGhostGUID.Clear();
|
||||
}
|
||||
if (data == DONE)
|
||||
{
|
||||
@@ -209,10 +196,10 @@ public:
|
||||
c->AI()->DoAction(-1);
|
||||
c->DespawnOrUnsummon();
|
||||
}
|
||||
NPC_DalronnGhostGUID = 0;
|
||||
NPC_DalronnGhostGUID.Clear();
|
||||
if( Creature* c = instance->GetCreature(NPC_SkarvaldGhostGUID) )
|
||||
c->DespawnOrUnsummon();
|
||||
NPC_SkarvaldGhostGUID = 0;
|
||||
NPC_SkarvaldGhostGUID.Clear();
|
||||
}
|
||||
|
||||
m_auiEncounter[1] = data;
|
||||
@@ -284,9 +271,9 @@ public:
|
||||
}
|
||||
}
|
||||
|
||||
uint64 GetData64(uint32 id) const override
|
||||
ObjectGuid GetGuidData(uint32 id) const override
|
||||
{
|
||||
switch(id)
|
||||
switch (id)
|
||||
{
|
||||
case DATA_KELESETH:
|
||||
return NPC_KelesethGUID;
|
||||
@@ -297,12 +284,13 @@ public:
|
||||
case DATA_INGVAR:
|
||||
return NPC_IngvarGUID;
|
||||
}
|
||||
return 0;
|
||||
|
||||
return ObjectGuid::Empty;
|
||||
}
|
||||
|
||||
uint32 GetData(uint32 id) const override
|
||||
{
|
||||
switch(id)
|
||||
switch (id)
|
||||
{
|
||||
case DATA_KELESETH:
|
||||
case DATA_DALRONN_AND_SKARVALD:
|
||||
@@ -313,6 +301,7 @@ public:
|
||||
case DATA_FORGE_3:
|
||||
return ForgeEventMask & (uint32)(1 << (id - 100));
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
@@ -114,7 +114,7 @@ public:
|
||||
InstanceScript* m_pInstance;
|
||||
EventMap events;
|
||||
SummonList summons;
|
||||
uint64 OrbGUID;
|
||||
ObjectGuid OrbGUID;
|
||||
uint8 Counter;
|
||||
uint8 RandomUnfreeze[4];
|
||||
|
||||
@@ -140,7 +140,7 @@ public:
|
||||
events.Reset();
|
||||
summons.DoAction(ACTION_DESPAWN_ADDS);
|
||||
summons.DespawnAll();
|
||||
OrbGUID = 0;
|
||||
OrbGUID.Clear();
|
||||
Counter = 0;
|
||||
me->CastSpell(me, SPELL_FREEZE, true);
|
||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_NOT_SELECTABLE);
|
||||
@@ -151,7 +151,7 @@ public:
|
||||
m_pInstance->SetData(DATA_GORTOK_PALEHOOF, NOT_STARTED);
|
||||
|
||||
// Reset statue
|
||||
if (GameObject* statisGenerator = m_pInstance->instance->GetGameObject(m_pInstance->GetData64(STATIS_GENERATOR)))
|
||||
if (GameObject* statisGenerator = m_pInstance->instance->GetGameObject(m_pInstance->GetGuidData(STATIS_GENERATOR)))
|
||||
{
|
||||
statisGenerator->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE);
|
||||
statisGenerator->SetGoState(GO_STATE_READY);
|
||||
@@ -160,7 +160,7 @@ public:
|
||||
// Reset mini bosses
|
||||
for(uint8 i = 0; i < 4; ++i)
|
||||
{
|
||||
if(Creature* Animal = ObjectAccessor::GetCreature(*me, m_pInstance->GetData64(DATA_NPC_FRENZIED_WORGEN + i)))
|
||||
if(Creature* Animal = ObjectAccessor::GetCreature(*me, m_pInstance->GetGuidData(DATA_NPC_FRENZIED_WORGEN + i)))
|
||||
{
|
||||
Animal->SetPosition(Animal->GetHomePosition());
|
||||
Animal->StopMovingOnCurrentPos();
|
||||
@@ -228,7 +228,7 @@ public:
|
||||
{
|
||||
if (Creature* orb = ObjectAccessor::GetCreature(*me, OrbGUID))
|
||||
{
|
||||
if (Creature* miniBoss = ObjectAccessor::GetCreature(*me, m_pInstance->GetData64(DATA_NPC_FRENZIED_WORGEN + RandomUnfreeze[Counter])))
|
||||
if (Creature* miniBoss = ObjectAccessor::GetCreature(*me, m_pInstance->GetGuidData(DATA_NPC_FRENZIED_WORGEN + RandomUnfreeze[Counter])))
|
||||
{
|
||||
Counter++;
|
||||
miniBoss->AI()->DoAction(ACTION_UNFREEZE);
|
||||
@@ -244,7 +244,7 @@ public:
|
||||
{
|
||||
if (Creature* orb = ObjectAccessor::GetCreature(*me, OrbGUID))
|
||||
{
|
||||
if (Creature* miniBoss = ObjectAccessor::GetCreature(*me, m_pInstance->GetData64(DATA_NPC_FRENZIED_WORGEN + RandomUnfreeze[Counter - 1])))
|
||||
if (Creature* miniBoss = ObjectAccessor::GetCreature(*me, m_pInstance->GetGuidData(DATA_NPC_FRENZIED_WORGEN + RandomUnfreeze[Counter - 1])))
|
||||
{
|
||||
miniBoss->AI()->DoAction(ACTION_UNFREEZE2);
|
||||
orb->RemoveAurasDueToSpell(SPELL_AWAKEN_SUBBOSS);
|
||||
@@ -443,7 +443,7 @@ public:
|
||||
{
|
||||
if (m_pInstance)
|
||||
{
|
||||
if (Creature* palehoof = ObjectAccessor::GetCreature(*me, m_pInstance->GetData64(DATA_GORTOK_PALEHOOF)))
|
||||
if (Creature* palehoof = ObjectAccessor::GetCreature(*me, m_pInstance->GetGuidData(DATA_GORTOK_PALEHOOF)))
|
||||
palehoof->AI()->DoAction(ACTION_MINIBOSS_DIED);
|
||||
}
|
||||
}
|
||||
@@ -553,7 +553,7 @@ public:
|
||||
{
|
||||
if (m_pInstance)
|
||||
{
|
||||
if (Creature* palehoof = ObjectAccessor::GetCreature(*me, m_pInstance->GetData64(DATA_GORTOK_PALEHOOF)))
|
||||
if (Creature* palehoof = ObjectAccessor::GetCreature(*me, m_pInstance->GetGuidData(DATA_GORTOK_PALEHOOF)))
|
||||
palehoof->AI()->DoAction(ACTION_MINIBOSS_DIED);
|
||||
}
|
||||
}
|
||||
@@ -661,7 +661,7 @@ public:
|
||||
{
|
||||
if (m_pInstance)
|
||||
{
|
||||
if (Creature* palehoof = ObjectAccessor::GetCreature(*me, m_pInstance->GetData64(DATA_GORTOK_PALEHOOF)))
|
||||
if (Creature* palehoof = ObjectAccessor::GetCreature(*me, m_pInstance->GetGuidData(DATA_GORTOK_PALEHOOF)))
|
||||
palehoof->AI()->DoAction(ACTION_MINIBOSS_DIED);
|
||||
}
|
||||
}
|
||||
@@ -769,7 +769,7 @@ public:
|
||||
{
|
||||
if (m_pInstance)
|
||||
{
|
||||
if (Creature* palehoof = ObjectAccessor::GetCreature(*me, m_pInstance->GetData64(DATA_GORTOK_PALEHOOF)))
|
||||
if (Creature* palehoof = ObjectAccessor::GetCreature(*me, m_pInstance->GetGuidData(DATA_GORTOK_PALEHOOF)))
|
||||
palehoof->AI()->DoAction(ACTION_MINIBOSS_DIED);
|
||||
}
|
||||
}
|
||||
@@ -785,7 +785,7 @@ public:
|
||||
{
|
||||
InstanceScript* pInstance = go->GetInstanceScript();
|
||||
|
||||
Creature* pPalehoof = ObjectAccessor::GetCreature(*go, pInstance ? pInstance->GetData64(DATA_GORTOK_PALEHOOF) : 0);
|
||||
Creature* pPalehoof = ObjectAccessor::GetCreature(*go, pInstance ? pInstance->GetGuidData(DATA_GORTOK_PALEHOOF) : ObjectGuid::Empty);
|
||||
if (pPalehoof && pPalehoof->IsAlive())
|
||||
{
|
||||
// maybe these are hacks :(
|
||||
|
||||
@@ -113,7 +113,7 @@ public:
|
||||
InstanceScript* m_pInstance;
|
||||
EventMap events;
|
||||
SummonList summons;
|
||||
uint64 GraufGUID;
|
||||
ObjectGuid GraufGUID;
|
||||
bool SecondPhase, EventStarted;
|
||||
|
||||
void Reset() override
|
||||
@@ -239,7 +239,7 @@ public:
|
||||
if (m_pInstance)
|
||||
{
|
||||
m_pInstance->SetData(DATA_SKADI_THE_RUTHLESS, DONE);
|
||||
m_pInstance->HandleGameObject(m_pInstance->GetData64(SKADI_DOOR), true);
|
||||
m_pInstance->HandleGameObject(m_pInstance->GetGuidData(SKADI_DOOR), true);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -495,7 +495,7 @@ public:
|
||||
uint8 count = m_pInstance->GetData(SKADI_HITS) + 1;
|
||||
m_pInstance->SetData(SKADI_HITS, count);
|
||||
|
||||
if (Creature* grauf = ObjectAccessor::GetCreature(*pPlayer, m_pInstance->GetData64(DATA_GRAUF)))
|
||||
if (Creature* grauf = ObjectAccessor::GetCreature(*pPlayer, m_pInstance->GetGuidData(DATA_GRAUF)))
|
||||
{
|
||||
if (count >= 3)
|
||||
{
|
||||
|
||||
@@ -101,10 +101,10 @@ public:
|
||||
{
|
||||
instance = creature->GetInstanceScript();
|
||||
Started = false;
|
||||
ArthasGUID = 0;
|
||||
ArthasGUID.Clear();
|
||||
}
|
||||
|
||||
uint64 ArthasGUID;
|
||||
ObjectGuid ArthasGUID;
|
||||
bool Started;
|
||||
InstanceScript* instance;
|
||||
EventMap events;
|
||||
@@ -152,7 +152,7 @@ public:
|
||||
if (instance)
|
||||
{
|
||||
instance->SetData(DATA_SVALA_SORROWGRAVE, IN_PROGRESS);
|
||||
if (GameObject* mirror = ObjectAccessor::GetGameObject(*me, instance->GetData64(GO_SVALA_MIRROR)))
|
||||
if (GameObject* mirror = ObjectAccessor::GetGameObject(*me, instance->GetGuidData(GO_SVALA_MIRROR)))
|
||||
mirror->SetGoState(GO_STATE_READY);
|
||||
}
|
||||
}
|
||||
@@ -227,7 +227,7 @@ public:
|
||||
case 30:
|
||||
{
|
||||
WorldPacket data(SMSG_SPLINE_MOVE_SET_HOVER, 9);
|
||||
data.append(me->GetPackGUID());
|
||||
data << me->GetPackGUID();
|
||||
me->SendMessageToSet(&data, false);
|
||||
break;
|
||||
}
|
||||
@@ -263,7 +263,7 @@ public:
|
||||
case EVENT_SVALA_TALK7:
|
||||
me->SetFacingTo(M_PI / 2.0f);
|
||||
Talk(TALK_INTRO_S3);
|
||||
if (GameObject* mirror = ObjectAccessor::GetGameObject(*me, instance->GetData64(GO_SVALA_MIRROR)))
|
||||
if (GameObject* mirror = ObjectAccessor::GetGameObject(*me, instance->GetGuidData(GO_SVALA_MIRROR)))
|
||||
mirror->SetGoState(GO_STATE_ACTIVE);
|
||||
events2.ScheduleEvent(EVENT_SVALA_TALK8, 13000);
|
||||
break;
|
||||
|
||||
+18
-32
@@ -20,20 +20,20 @@ public:
|
||||
{
|
||||
instance_utgarde_pinnacle_InstanceMapScript(Map* pMap) : InstanceScript(pMap) {Initialize();};
|
||||
|
||||
uint64 SvalaSorrowgrave;
|
||||
uint64 GortokPalehoof;
|
||||
uint64 SkadiRuthless;
|
||||
uint64 KingYmiron;
|
||||
uint64 FrenziedWorgen;
|
||||
uint64 RavenousFurbolg;
|
||||
uint64 MassiveJormungar;
|
||||
uint64 FerociousRhino;
|
||||
uint64 Grauf;
|
||||
ObjectGuid SvalaSorrowgrave;
|
||||
ObjectGuid GortokPalehoof;
|
||||
ObjectGuid SkadiRuthless;
|
||||
ObjectGuid KingYmiron;
|
||||
ObjectGuid FrenziedWorgen;
|
||||
ObjectGuid RavenousFurbolg;
|
||||
ObjectGuid MassiveJormungar;
|
||||
ObjectGuid FerociousRhino;
|
||||
ObjectGuid Grauf;
|
||||
|
||||
uint64 SvalaMirrorGUID;
|
||||
uint64 SkadiRuthlessDoor;
|
||||
uint64 YmironDoor;
|
||||
uint64 StatisGenerator;
|
||||
ObjectGuid SvalaMirrorGUID;
|
||||
ObjectGuid SkadiRuthlessDoor;
|
||||
ObjectGuid YmironDoor;
|
||||
ObjectGuid StatisGenerator;
|
||||
uint32 FightStatus;
|
||||
uint32 Encounters[MAX_ENCOUNTERS];
|
||||
uint8 SkadiHits;
|
||||
@@ -45,22 +45,8 @@ public:
|
||||
|
||||
void Initialize() override
|
||||
{
|
||||
SvalaSorrowgrave = 0;
|
||||
GortokPalehoof = 0;
|
||||
SkadiRuthless = 0;
|
||||
KingYmiron = 0;
|
||||
FrenziedWorgen = 0;
|
||||
RavenousFurbolg = 0;
|
||||
MassiveJormungar = 0;
|
||||
FerociousRhino = 0;
|
||||
Grauf = 0;
|
||||
|
||||
SvalaMirrorGUID = 0;
|
||||
StatisGenerator = 0;
|
||||
SkadiHits = 0;
|
||||
SkadiInRange = 0;
|
||||
SkadiRuthlessDoor = 0;
|
||||
YmironDoor = 0;
|
||||
FightStatus = 0;
|
||||
|
||||
svalaAchievement = false;
|
||||
@@ -120,12 +106,12 @@ public:
|
||||
case GO_SKADI_THE_RUTHLESS_DOOR:
|
||||
SkadiRuthlessDoor = pGo->GetGUID();
|
||||
if (Encounters[DATA_SKADI_THE_RUTHLESS] == DONE)
|
||||
HandleGameObject(0, true, pGo);
|
||||
HandleGameObject(ObjectGuid::Empty, true, pGo);
|
||||
break;
|
||||
case GO_KING_YMIRON_DOOR:
|
||||
YmironDoor = pGo->GetGUID();
|
||||
if (Encounters[DATA_KING_YMIRON] == DONE)
|
||||
HandleGameObject(0, true, pGo);
|
||||
HandleGameObject(ObjectGuid::Empty, true, pGo);
|
||||
break;
|
||||
case GO_GORK_PALEHOOF_SPHERE:
|
||||
StatisGenerator = pGo->GetGUID();
|
||||
@@ -254,9 +240,9 @@ public:
|
||||
return 0;
|
||||
}
|
||||
|
||||
uint64 GetData64(uint32 identifier) const override
|
||||
ObjectGuid GetGuidData(uint32 identifier) const override
|
||||
{
|
||||
switch(identifier)
|
||||
switch (identifier)
|
||||
{
|
||||
case DATA_SVALA_SORROWGRAVE:
|
||||
return SvalaSorrowgrave;
|
||||
@@ -286,7 +272,7 @@ public:
|
||||
return SvalaMirrorGUID;
|
||||
}
|
||||
|
||||
return 0;
|
||||
return ObjectGuid::Empty;
|
||||
}
|
||||
};
|
||||
};
|
||||
|
||||
@@ -215,7 +215,7 @@ public:
|
||||
void JustSummoned(Creature* cr) override
|
||||
{
|
||||
if (InstanceScript* pInstance = me->GetInstanceScript())
|
||||
if (Creature* toravon = ObjectAccessor::GetCreature(*me, pInstance->GetData64(EVENT_TORAVON)))
|
||||
if (Creature* toravon = ObjectAccessor::GetCreature(*me, pInstance->GetGuidData(EVENT_TORAVON)))
|
||||
if (toravon->AI())
|
||||
toravon->AI()->JustSummoned(cr);
|
||||
}
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user