feat(Core/Misc): implement ObjectGuid class (port from TC) (#4885)

This commit is contained in:
UltraNix
2021-04-25 22:18:03 +02:00
committed by GitHub
parent 91081f4ad8
commit f4c226423d
568 changed files with 10655 additions and 11019 deletions

View File

@@ -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);
}

View File

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

View File

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

View File

@@ -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);
}

View File

@@ -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);
}

View File

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

View File

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

View File

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

View File

@@ -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);
}

View File

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

View File

@@ -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);
}

View File

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

View File

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

View File

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