mirror of
https://github.com/mod-playerbots/azerothcore-wotlk.git
synced 2026-01-27 23:56:25 +00:00
feat(Core/Misc): implement ObjectGuid class (port from TC) (#4885)
This commit is contained in:
@@ -224,13 +224,13 @@ public:
|
||||
void EnterCombat(Unit* who) override
|
||||
{
|
||||
bool valid = true;
|
||||
if (Creature* keleseth = instance->instance->GetCreature(instance->GetData64(DATA_PRINCE_KELESETH_GUID)))
|
||||
if (Creature* keleseth = instance->instance->GetCreature(instance->GetGuidData(DATA_PRINCE_KELESETH_GUID)))
|
||||
if (!keleseth->IsAlive() || keleseth->IsInEvadeMode())
|
||||
valid = false;
|
||||
if (Creature* taldaram = instance->instance->GetCreature(instance->GetData64(DATA_PRINCE_TALDARAM_GUID)))
|
||||
if (Creature* taldaram = instance->instance->GetCreature(instance->GetGuidData(DATA_PRINCE_TALDARAM_GUID)))
|
||||
if (!taldaram->IsAlive() || taldaram->IsInEvadeMode())
|
||||
valid = false;
|
||||
if (Creature* valanar = instance->instance->GetCreature(instance->GetData64(DATA_PRINCE_VALANAR_GUID)))
|
||||
if (Creature* valanar = instance->instance->GetCreature(instance->GetGuidData(DATA_PRINCE_VALANAR_GUID)))
|
||||
if (!valanar->IsAlive() || valanar->IsInEvadeMode())
|
||||
valid = false;
|
||||
if (!valid)
|
||||
@@ -248,10 +248,10 @@ public:
|
||||
me->SetReactState(REACT_AGGRESSIVE);
|
||||
instance->SendEncounterUnit(ENCOUNTER_FRAME_ENGAGE, me);
|
||||
|
||||
if (Creature* taldaram = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_PRINCE_TALDARAM_GUID)))
|
||||
if (Creature* taldaram = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_PRINCE_TALDARAM_GUID)))
|
||||
if (!taldaram->IsInEvadeMode())
|
||||
taldaram->SetInCombatWithZone();
|
||||
if (Creature* valanar = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_PRINCE_VALANAR_GUID)))
|
||||
if (Creature* valanar = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_PRINCE_VALANAR_GUID)))
|
||||
if (!valanar->IsInEvadeMode())
|
||||
valanar->SetInCombatWithZone();
|
||||
|
||||
@@ -289,10 +289,10 @@ public:
|
||||
}
|
||||
|
||||
Talk(SAY_KELESETH_DEATH);
|
||||
if (Creature* taldaram = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_PRINCE_TALDARAM_GUID)))
|
||||
if (Creature* taldaram = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_PRINCE_TALDARAM_GUID)))
|
||||
if (taldaram->IsAlive())
|
||||
Unit::Kill(taldaram, taldaram);
|
||||
if (Creature* valanar = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_PRINCE_VALANAR_GUID)))
|
||||
if (Creature* valanar = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_PRINCE_VALANAR_GUID)))
|
||||
if (valanar->IsAlive())
|
||||
Unit::Kill(valanar, valanar);
|
||||
}
|
||||
@@ -413,9 +413,9 @@ public:
|
||||
me->SetHealth(me->GetMaxHealth());
|
||||
DoAction(ACTION_REMOVE_INVOCATION);
|
||||
_evading = true;
|
||||
if (Creature* taldaram = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_PRINCE_TALDARAM_GUID)))
|
||||
if (Creature* taldaram = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_PRINCE_TALDARAM_GUID)))
|
||||
taldaram->AI()->EnterEvadeMode();
|
||||
if (Creature* valanar = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_PRINCE_VALANAR_GUID)))
|
||||
if (Creature* valanar = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_PRINCE_VALANAR_GUID)))
|
||||
valanar->AI()->EnterEvadeMode();
|
||||
ScriptedAI::EnterEvadeMode();
|
||||
_evading = false;
|
||||
@@ -483,13 +483,13 @@ public:
|
||||
void EnterCombat(Unit* who) override
|
||||
{
|
||||
bool valid = true;
|
||||
if (Creature* keleseth = instance->instance->GetCreature(instance->GetData64(DATA_PRINCE_KELESETH_GUID)))
|
||||
if (Creature* keleseth = instance->instance->GetCreature(instance->GetGuidData(DATA_PRINCE_KELESETH_GUID)))
|
||||
if (!keleseth->IsAlive() || keleseth->IsInEvadeMode())
|
||||
valid = false;
|
||||
if (Creature* taldaram = instance->instance->GetCreature(instance->GetData64(DATA_PRINCE_TALDARAM_GUID)))
|
||||
if (Creature* taldaram = instance->instance->GetCreature(instance->GetGuidData(DATA_PRINCE_TALDARAM_GUID)))
|
||||
if (!taldaram->IsAlive() || taldaram->IsInEvadeMode())
|
||||
valid = false;
|
||||
if (Creature* valanar = instance->instance->GetCreature(instance->GetData64(DATA_PRINCE_VALANAR_GUID)))
|
||||
if (Creature* valanar = instance->instance->GetCreature(instance->GetGuidData(DATA_PRINCE_VALANAR_GUID)))
|
||||
if (!valanar->IsAlive() || valanar->IsInEvadeMode())
|
||||
valid = false;
|
||||
if (!valid)
|
||||
@@ -507,10 +507,10 @@ public:
|
||||
me->SetReactState(REACT_AGGRESSIVE);
|
||||
instance->SendEncounterUnit(ENCOUNTER_FRAME_ENGAGE, me);
|
||||
|
||||
if (Creature* keleseth = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_PRINCE_KELESETH_GUID)))
|
||||
if (Creature* keleseth = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_PRINCE_KELESETH_GUID)))
|
||||
if (!keleseth->IsInEvadeMode())
|
||||
keleseth->SetInCombatWithZone();
|
||||
if (Creature* valanar = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_PRINCE_VALANAR_GUID)))
|
||||
if (Creature* valanar = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_PRINCE_VALANAR_GUID)))
|
||||
if (!valanar->IsInEvadeMode())
|
||||
valanar->SetInCombatWithZone();
|
||||
|
||||
@@ -543,10 +543,10 @@ public:
|
||||
}
|
||||
|
||||
Talk(EMOTE_TALDARAM_DEATH);
|
||||
if (Creature* keleseth = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_PRINCE_KELESETH_GUID)))
|
||||
if (Creature* keleseth = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_PRINCE_KELESETH_GUID)))
|
||||
if (keleseth->IsAlive())
|
||||
Unit::Kill(keleseth, keleseth);
|
||||
if (Creature* valanar = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_PRINCE_VALANAR_GUID)))
|
||||
if (Creature* valanar = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_PRINCE_VALANAR_GUID)))
|
||||
if (valanar->IsAlive())
|
||||
Unit::Kill(valanar, valanar);
|
||||
}
|
||||
@@ -697,9 +697,9 @@ public:
|
||||
me->SetHealth(me->GetMaxHealth());
|
||||
DoAction(ACTION_REMOVE_INVOCATION);
|
||||
_evading = true;
|
||||
if (Creature* keleseth = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_PRINCE_KELESETH_GUID)))
|
||||
if (Creature* keleseth = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_PRINCE_KELESETH_GUID)))
|
||||
keleseth->AI()->EnterEvadeMode();
|
||||
if (Creature* valanar = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_PRINCE_VALANAR_GUID)))
|
||||
if (Creature* valanar = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_PRINCE_VALANAR_GUID)))
|
||||
valanar->AI()->EnterEvadeMode();
|
||||
ScriptedAI::EnterEvadeMode();
|
||||
_evading = false;
|
||||
@@ -767,13 +767,13 @@ public:
|
||||
void EnterCombat(Unit* who) override
|
||||
{
|
||||
bool valid = true;
|
||||
if (Creature* keleseth = instance->instance->GetCreature(instance->GetData64(DATA_PRINCE_KELESETH_GUID)))
|
||||
if (Creature* keleseth = instance->instance->GetCreature(instance->GetGuidData(DATA_PRINCE_KELESETH_GUID)))
|
||||
if (!keleseth->IsAlive() || keleseth->IsInEvadeMode())
|
||||
valid = false;
|
||||
if (Creature* taldaram = instance->instance->GetCreature(instance->GetData64(DATA_PRINCE_TALDARAM_GUID)))
|
||||
if (Creature* taldaram = instance->instance->GetCreature(instance->GetGuidData(DATA_PRINCE_TALDARAM_GUID)))
|
||||
if (!taldaram->IsAlive() || taldaram->IsInEvadeMode())
|
||||
valid = false;
|
||||
if (Creature* valanar = instance->instance->GetCreature(instance->GetData64(DATA_PRINCE_VALANAR_GUID)))
|
||||
if (Creature* valanar = instance->instance->GetCreature(instance->GetGuidData(DATA_PRINCE_VALANAR_GUID)))
|
||||
if (!valanar->IsAlive() || valanar->IsInEvadeMode())
|
||||
valid = false;
|
||||
if (!valid)
|
||||
@@ -793,10 +793,10 @@ public:
|
||||
me->SetReactState(REACT_AGGRESSIVE);
|
||||
instance->SendEncounterUnit(ENCOUNTER_FRAME_ENGAGE, me);
|
||||
|
||||
if (Creature* keleseth = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_PRINCE_KELESETH_GUID)))
|
||||
if (Creature* keleseth = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_PRINCE_KELESETH_GUID)))
|
||||
if (!keleseth->IsInEvadeMode())
|
||||
keleseth->SetInCombatWithZone();
|
||||
if (Creature* taldaram = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_PRINCE_TALDARAM_GUID)))
|
||||
if (Creature* taldaram = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_PRINCE_TALDARAM_GUID)))
|
||||
if (!taldaram->IsInEvadeMode())
|
||||
taldaram->SetInCombatWithZone();
|
||||
|
||||
@@ -838,10 +838,10 @@ public:
|
||||
|
||||
Talk(SAY_VALANAR_DEATH);
|
||||
instance->SetBossState(DATA_BLOOD_PRINCE_COUNCIL, DONE);
|
||||
if (Creature* keleseth = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_PRINCE_KELESETH_GUID)))
|
||||
if (Creature* keleseth = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_PRINCE_KELESETH_GUID)))
|
||||
if (keleseth->IsAlive())
|
||||
Unit::Kill(keleseth, keleseth);
|
||||
if (Creature* taldaram = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_PRINCE_TALDARAM_GUID)))
|
||||
if (Creature* taldaram = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_PRINCE_TALDARAM_GUID)))
|
||||
if (taldaram->IsAlive())
|
||||
Unit::Kill(taldaram, taldaram);
|
||||
}
|
||||
@@ -944,8 +944,8 @@ public:
|
||||
|
||||
bool CheckRoom()
|
||||
{
|
||||
Creature* keleseth = instance->instance->GetCreature(instance->GetData64(DATA_PRINCE_KELESETH_GUID));
|
||||
Creature* taldaram = instance->instance->GetCreature(instance->GetData64(DATA_PRINCE_TALDARAM_GUID));
|
||||
Creature* keleseth = instance->instance->GetCreature(instance->GetGuidData(DATA_PRINCE_KELESETH_GUID));
|
||||
Creature* taldaram = instance->instance->GetCreature(instance->GetGuidData(DATA_PRINCE_TALDARAM_GUID));
|
||||
if (keleseth && taldaram && CheckBoundary(me) && CheckBoundary(keleseth) && CheckBoundary(taldaram))
|
||||
return true;
|
||||
|
||||
@@ -968,10 +968,10 @@ public:
|
||||
case EVENT_INVOCATION_OF_BLOOD:
|
||||
{
|
||||
uint32 visualSpellId = 0;
|
||||
Creature* current = instance->instance->GetCreature(instance->GetData64(invocationOrder[currentInvocationIndex]));
|
||||
Creature* current = instance->instance->GetCreature(instance->GetGuidData(invocationOrder[currentInvocationIndex]));
|
||||
if (++currentInvocationIndex >= 3)
|
||||
currentInvocationIndex = 0;
|
||||
Creature* next = instance->instance->GetCreature(instance->GetData64(invocationOrder[currentInvocationIndex]));
|
||||
Creature* next = instance->instance->GetCreature(instance->GetGuidData(invocationOrder[currentInvocationIndex]));
|
||||
switch (invocationOrder[currentInvocationIndex])
|
||||
{
|
||||
case DATA_PRINCE_KELESETH_GUID:
|
||||
@@ -1036,9 +1036,9 @@ public:
|
||||
me->SetHealth(me->GetMaxHealth());
|
||||
DoAction(ACTION_REMOVE_INVOCATION);
|
||||
_evading = true;
|
||||
if (Creature* keleseth = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_PRINCE_KELESETH_GUID)))
|
||||
if (Creature* keleseth = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_PRINCE_KELESETH_GUID)))
|
||||
keleseth->AI()->EnterEvadeMode();
|
||||
if (Creature* taldaram = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_PRINCE_TALDARAM_GUID)))
|
||||
if (Creature* taldaram = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_PRINCE_TALDARAM_GUID)))
|
||||
taldaram->AI()->EnterEvadeMode();
|
||||
BossAI::EnterEvadeMode();
|
||||
_evading = false;
|
||||
@@ -1127,15 +1127,15 @@ public:
|
||||
me->GetMotionMaster()->MovePoint(POINT_INTRO_DESPAWN, introFinalPos);
|
||||
_events.Reset();
|
||||
|
||||
if (Creature* keleseth = ObjectAccessor::GetCreature(*me, _instance->GetData64(DATA_PRINCE_KELESETH_GUID)))
|
||||
if (Creature* keleseth = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_PRINCE_KELESETH_GUID)))
|
||||
{
|
||||
keleseth->AI()->DoAction(ACTION_STAND_UP);
|
||||
}
|
||||
if (Creature* taldaram = ObjectAccessor::GetCreature(*me, _instance->GetData64(DATA_PRINCE_TALDARAM_GUID)))
|
||||
if (Creature* taldaram = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_PRINCE_TALDARAM_GUID)))
|
||||
{
|
||||
taldaram->AI()->DoAction(ACTION_STAND_UP);
|
||||
}
|
||||
if (Creature* valanar = ObjectAccessor::GetCreature(*me, _instance->GetData64(DATA_PRINCE_VALANAR_GUID)))
|
||||
if (Creature* valanar = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_PRINCE_VALANAR_GUID)))
|
||||
{
|
||||
valanar->AI()->DoAction(ACTION_STAND_UP);
|
||||
}
|
||||
@@ -1240,7 +1240,6 @@ public:
|
||||
{
|
||||
npc_ball_of_flameAI(Creature* creature) : ScriptedAI(creature), _instance(creature->GetInstanceScript())
|
||||
{
|
||||
_chaseGUID = 0;
|
||||
_exploded = false;
|
||||
_started = false;
|
||||
if (me->GetEntry() == NPC_BALL_OF_INFERNO_FLAME)
|
||||
@@ -1249,7 +1248,7 @@ public:
|
||||
}
|
||||
|
||||
InstanceScript* _instance;
|
||||
uint64 _chaseGUID;
|
||||
ObjectGuid _chaseGUID;
|
||||
bool _exploded;
|
||||
bool _started;
|
||||
|
||||
@@ -1276,7 +1275,7 @@ public:
|
||||
}
|
||||
}
|
||||
|
||||
void SetGUID(uint64 guid, int32 /*type*/) override
|
||||
void SetGUID(ObjectGuid guid, int32 /*type*/) override
|
||||
{
|
||||
_chaseGUID = guid;
|
||||
}
|
||||
@@ -1358,7 +1357,7 @@ public:
|
||||
{
|
||||
if (InstanceScript* instance = me->GetInstanceScript())
|
||||
{
|
||||
if (Creature* valanar = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_PRINCE_VALANAR_GUID)))
|
||||
if (Creature* valanar = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_PRINCE_VALANAR_GUID)))
|
||||
{
|
||||
valanar->AI()->JustSummoned(me);
|
||||
}
|
||||
|
||||
@@ -133,18 +133,18 @@ public:
|
||||
|
||||
bool _creditBloodQuickening;
|
||||
bool _killMinchar;
|
||||
uint64 _tankGUID;
|
||||
uint64 _offtankGUID;
|
||||
std::set<uint64> _bloodboltedPlayers;
|
||||
std::set<uint64> _vampires;
|
||||
ObjectGuid _tankGUID;
|
||||
ObjectGuid _offtankGUID;
|
||||
GuidSet _bloodboltedPlayers;
|
||||
GuidSet _vampires;
|
||||
bool bEnteredCombat; // needed for failing an attempt in JustReachedHome()
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
_creditBloodQuickening = false;
|
||||
_killMinchar = false;
|
||||
_tankGUID = 0;
|
||||
_offtankGUID = 0;
|
||||
_tankGUID.Clear();
|
||||
_offtankGUID.Clear();
|
||||
_vampires.clear();
|
||||
CleanAuras();
|
||||
me->SetReactState(REACT_AGGRESSIVE);
|
||||
@@ -202,7 +202,7 @@ public:
|
||||
Map::PlayerList const& pl = me->GetMap()->GetPlayers();
|
||||
for (Map::PlayerList::const_iterator itr = pl.begin(); itr != pl.end(); ++itr)
|
||||
if (Player* p = itr->GetSource())
|
||||
p->KilledMonsterCredit(RAID_MODE(NPC_INFILTRATOR_MINCHAR_BQ, NPC_BLOOD_QUICKENING_CREDIT_25), 0);
|
||||
p->KilledMonsterCredit(RAID_MODE(NPC_INFILTRATOR_MINCHAR_BQ, NPC_BLOOD_QUICKENING_CREDIT_25));
|
||||
if (Creature* minchar = me->FindNearestCreature(NPC_INFILTRATOR_MINCHAR_BQ, 200.0f))
|
||||
{
|
||||
minchar->SetUInt32Value(UNIT_NPC_EMOTESTATE, 0);
|
||||
@@ -369,8 +369,8 @@ public:
|
||||
|
||||
if (target->GetDistance(me->GetVictim()) > 39.0f || me->GetDistance(me->GetVictim()) > 39.0f)
|
||||
{
|
||||
_tankGUID = 0;
|
||||
_offtankGUID = 0;
|
||||
_tankGUID.Clear();
|
||||
_offtankGUID.Clear();
|
||||
events.ScheduleEvent(EVENT_BLOOD_MIRROR, 2500);
|
||||
break;
|
||||
}
|
||||
@@ -514,17 +514,17 @@ public:
|
||||
instance->DoRemoveAurasDueToSpellOnPlayers(PRESENCE_OF_THE_DARKFALLEN);
|
||||
}
|
||||
|
||||
bool WasVampire(uint64 guid)
|
||||
bool WasVampire(ObjectGuid guid)
|
||||
{
|
||||
return _vampires.count(guid) != 0;
|
||||
}
|
||||
|
||||
bool WasBloodbolted(uint64 guid)
|
||||
bool WasBloodbolted(ObjectGuid guid)
|
||||
{
|
||||
return _bloodboltedPlayers.count(guid) != 0;
|
||||
}
|
||||
|
||||
void SetGUID(uint64 guid, int32 type = 0) override
|
||||
void SetGUID(ObjectGuid guid, int32 type = 0) override
|
||||
{
|
||||
switch (type)
|
||||
{
|
||||
@@ -760,7 +760,7 @@ public:
|
||||
void OnApply(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
|
||||
{
|
||||
if (InstanceScript* instance = GetTarget()->GetInstanceScript())
|
||||
if (Creature* bloodQueen = ObjectAccessor::GetCreature(*GetTarget(), instance->GetData64(DATA_BLOOD_QUEEN_LANA_THEL)))
|
||||
if (Creature* bloodQueen = ObjectAccessor::GetCreature(*GetTarget(), instance->GetGuidData(DATA_BLOOD_QUEEN_LANA_THEL)))
|
||||
bloodQueen->AI()->Talk(EMOTE_BLOODTHIRST, GetTarget());
|
||||
}
|
||||
|
||||
@@ -769,7 +769,7 @@ public:
|
||||
Unit* target = GetTarget();
|
||||
if (GetTargetApplication()->GetRemoveMode() == AURA_REMOVE_BY_EXPIRE)
|
||||
if (InstanceScript* instance = target->GetInstanceScript())
|
||||
if (Creature* bloodQueen = ObjectAccessor::GetCreature(*target, instance->GetData64(DATA_BLOOD_QUEEN_LANA_THEL)))
|
||||
if (Creature* bloodQueen = ObjectAccessor::GetCreature(*target, instance->GetGuidData(DATA_BLOOD_QUEEN_LANA_THEL)))
|
||||
if (bloodQueen->IsAlive() && bloodQueen->IsInCombat())
|
||||
{
|
||||
// this needs to be done BEFORE charm aura or we hit an assert in Unit::SetCharmedBy
|
||||
@@ -871,7 +871,7 @@ public:
|
||||
return;
|
||||
|
||||
uint32 spellId = sSpellMgr->GetSpellIdForDifficulty(SPELL_FRENZIED_BLOODTHIRST, GetCaster());
|
||||
GetCaster()->RemoveAura(spellId, 0, 0, AURA_REMOVE_BY_ENEMY_SPELL);
|
||||
GetCaster()->RemoveAura(spellId, ObjectGuid::Empty, 0, AURA_REMOVE_BY_ENEMY_SPELL);
|
||||
GetCaster()->CastSpell(GetCaster(), SPELL_ESSENCE_OF_THE_BLOOD_QUEEN_PLR, TRIGGERED_FULL_MASK);
|
||||
|
||||
if (Aura* aura = GetCaster()->GetAura(SPELL_GUSHING_WOUND))
|
||||
@@ -886,7 +886,7 @@ public:
|
||||
}
|
||||
|
||||
if (InstanceScript* instance = GetCaster()->GetInstanceScript())
|
||||
if (Creature* bloodQueen = ObjectAccessor::GetCreature(*GetCaster(), instance->GetData64(DATA_BLOOD_QUEEN_LANA_THEL)))
|
||||
if (Creature* bloodQueen = ObjectAccessor::GetCreature(*GetCaster(), instance->GetGuidData(DATA_BLOOD_QUEEN_LANA_THEL)))
|
||||
bloodQueen->AI()->SetGUID(GetHitUnit()->GetGUID(), GUID_VAMPIRE);
|
||||
}
|
||||
|
||||
@@ -952,7 +952,7 @@ public:
|
||||
return;
|
||||
|
||||
if (InstanceScript* instance = GetHitUnit()->GetInstanceScript())
|
||||
GetHitUnit()->CastSpell((Unit*)nullptr, GetSpellInfo()->Effects[effIndex].TriggerSpell, true, nullptr, nullptr, instance->GetData64(DATA_BLOOD_QUEEN_LANA_THEL));
|
||||
GetHitUnit()->CastSpell((Unit*)nullptr, GetSpellInfo()->Effects[effIndex].TriggerSpell, true, nullptr, nullptr, instance->GetGuidData(DATA_BLOOD_QUEEN_LANA_THEL));
|
||||
}
|
||||
|
||||
void Register() override
|
||||
|
||||
@@ -299,7 +299,7 @@ public:
|
||||
Talk(SAY_DEATH);
|
||||
|
||||
instance->DoRemoveAurasDueToSpellOnPlayers(SPELL_MARK_OF_THE_FALLEN_CHAMPION);
|
||||
if (Creature* creature = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_SAURFANG_EVENT_NPC)))
|
||||
if (Creature* creature = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_SAURFANG_EVENT_NPC)))
|
||||
creature->AI()->DoAction(ACTION_START_OUTRO);
|
||||
}
|
||||
|
||||
@@ -364,7 +364,7 @@ public:
|
||||
if (type != POINT_MOTION_TYPE && id != POINT_SAURFANG)
|
||||
return;
|
||||
|
||||
instance->HandleGameObject(instance->GetData64(GO_SAURFANG_S_DOOR), false);
|
||||
instance->HandleGameObject(instance->GetGuidData(GO_SAURFANG_S_DOOR), false);
|
||||
}
|
||||
|
||||
void SpellHitTarget(Unit* /*target*/, SpellInfo const* spell) override
|
||||
@@ -485,7 +485,7 @@ public:
|
||||
void EnterEvadeMode() override
|
||||
{
|
||||
BossAI::EnterEvadeMode();
|
||||
if (Creature* creature = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_SAURFANG_EVENT_NPC)))
|
||||
if (Creature* creature = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_SAURFANG_EVENT_NPC)))
|
||||
creature->AI()->DoAction(ACTION_EVADE);
|
||||
}
|
||||
|
||||
@@ -532,7 +532,7 @@ public:
|
||||
if (_events.GetPhaseMask() & PHASE_INTRO_MASK)
|
||||
return;
|
||||
|
||||
Creature* deathbringer = ObjectAccessor::GetCreature(*me, _instance->GetData64(DATA_DEATHBRINGER_SAURFANG));
|
||||
Creature* deathbringer = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_DEATHBRINGER_SAURFANG));
|
||||
if (!deathbringer || deathbringer->IsInEvadeMode())
|
||||
return;
|
||||
|
||||
@@ -550,11 +550,11 @@ public:
|
||||
_events.SetPhase(PHASE_INTRO_H);
|
||||
_events.ScheduleEvent(EVENT_INTRO_HORDE_2, 5000, 0, PHASE_INTRO_H);
|
||||
_events.ScheduleEvent(EVENT_INTRO_HORDE_3, 18500, 0, PHASE_INTRO_H);
|
||||
_instance->HandleGameObject(_instance->GetData64(GO_SAURFANG_S_DOOR), true);
|
||||
_instance->HandleGameObject(_instance->GetGuidData(GO_SAURFANG_S_DOOR), true);
|
||||
|
||||
if (GameObject* teleporter = ObjectAccessor::GetGameObject(*me, _instance->GetData64(GO_SCOURGE_TRANSPORTER_SAURFANG)))
|
||||
if (GameObject* teleporter = ObjectAccessor::GetGameObject(*me, _instance->GetGuidData(GO_SCOURGE_TRANSPORTER_SAURFANG)))
|
||||
{
|
||||
_instance->HandleGameObject(0, false, teleporter);
|
||||
_instance->HandleGameObject(ObjectGuid::Empty, false, teleporter);
|
||||
teleporter->SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_IN_USE);
|
||||
}
|
||||
|
||||
@@ -629,7 +629,7 @@ public:
|
||||
_events.ScheduleEvent(EVENT_INTRO_FINISH, 46700 + 1000 + 9000, 0, PHASE_INTRO_H);
|
||||
break;
|
||||
/*case POINT_CORPSE:
|
||||
if (Creature* deathbringer = ObjectAccessor::GetCreature(*me, _instance->GetData64(DATA_DEATHBRINGER_SAURFANG)))
|
||||
if (Creature* deathbringer = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_DEATHBRINGER_SAURFANG)))
|
||||
{
|
||||
deathbringer->CastSpell(me, SPELL_RIDE_VEHICLE, true);
|
||||
deathbringer->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
||||
@@ -639,7 +639,7 @@ public:
|
||||
_events.ScheduleEvent(EVENT_OUTRO_HORDE_5, 4000);
|
||||
break;
|
||||
case POINT_FINAL:
|
||||
if (Creature* deathbringer = ObjectAccessor::GetCreature(*me, _instance->GetData64(DATA_DEATHBRINGER_SAURFANG)))
|
||||
if (Creature* deathbringer = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_DEATHBRINGER_SAURFANG)))
|
||||
deathbringer->DespawnOrUnsummon();
|
||||
me->DespawnOrUnsummon();
|
||||
break;*/
|
||||
@@ -657,7 +657,7 @@ public:
|
||||
case 0:
|
||||
break;
|
||||
case EVENT_INTRO_HORDE_2:
|
||||
if (Creature* deathbringer = ObjectAccessor::GetCreature(*me, _instance->GetData64(DATA_DEATHBRINGER_SAURFANG)))
|
||||
if (Creature* deathbringer = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_DEATHBRINGER_SAURFANG)))
|
||||
deathbringer->AI()->Talk(SAY_INTRO_HORDE_2);
|
||||
break;
|
||||
case EVENT_INTRO_HORDE_3:
|
||||
@@ -665,7 +665,7 @@ public:
|
||||
me->GetMotionMaster()->MovePoint(POINT_FIRST_STEP, firstStepPos.GetPositionX(), firstStepPos.GetPositionY(), firstStepPos.GetPositionZ());
|
||||
break;
|
||||
case EVENT_INTRO_HORDE_4:
|
||||
if (Creature* deathbringer = ObjectAccessor::GetCreature(*me, _instance->GetData64(DATA_DEATHBRINGER_SAURFANG)))
|
||||
if (Creature* deathbringer = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_DEATHBRINGER_SAURFANG)))
|
||||
deathbringer->AI()->Talk(SAY_INTRO_HORDE_4);
|
||||
break;
|
||||
case EVENT_INTRO_HORDE_5:
|
||||
@@ -684,14 +684,14 @@ public:
|
||||
me->GetMotionMaster()->MoveCharge(chargePos[0].GetPositionX(), chargePos[0].GetPositionY(), chargePos[0].GetPositionZ(), 8.5f, POINT_CHARGE);
|
||||
break;
|
||||
case EVENT_INTRO_HORDE_9:
|
||||
if (Creature* deathbringer = ObjectAccessor::GetCreature(*me, _instance->GetData64(DATA_DEATHBRINGER_SAURFANG)))
|
||||
if (Creature* deathbringer = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_DEATHBRINGER_SAURFANG)))
|
||||
{
|
||||
deathbringer->AI()->DoCast(me, SPELL_GRIP_OF_AGONY);
|
||||
deathbringer->AI()->Talk(SAY_INTRO_HORDE_9);
|
||||
}
|
||||
break;
|
||||
case EVENT_INTRO_FINISH:
|
||||
if (Creature* deathbringer = ObjectAccessor::GetCreature(*me, _instance->GetData64(DATA_DEATHBRINGER_SAURFANG)))
|
||||
if (Creature* deathbringer = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_DEATHBRINGER_SAURFANG)))
|
||||
{
|
||||
deathbringer->AI()->DoAction(ACTION_INTRO_DONE);
|
||||
deathbringer->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC);
|
||||
@@ -701,7 +701,7 @@ public:
|
||||
break;
|
||||
|
||||
/*case EVENT_OUTRO_HORDE_1:
|
||||
if (Creature* deathbringer = ObjectAccessor::GetCreature(*me, _instance->GetData64(DATA_DEATHBRINGER_SAURFANG)))
|
||||
if (Creature* deathbringer = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_DEATHBRINGER_SAURFANG)))
|
||||
me->SetFacingToObject(deathbringer);
|
||||
Talk(SAY_OUTRO_HORDE_2);
|
||||
break;
|
||||
@@ -709,7 +709,7 @@ public:
|
||||
Talk(SAY_OUTRO_HORDE_3);
|
||||
break;
|
||||
case EVENT_OUTRO_HORDE_3:
|
||||
if (Creature* deathbringer = ObjectAccessor::GetCreature(*me, _instance->GetData64(DATA_DEATHBRINGER_SAURFANG)))
|
||||
if (Creature* deathbringer = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_DEATHBRINGER_SAURFANG)))
|
||||
{
|
||||
float x, y, z;
|
||||
deathbringer->GetClosePoint(x, y, z, deathbringer->GetObjectSize());
|
||||
@@ -793,7 +793,7 @@ public:
|
||||
if (_events.GetPhaseMask() & PHASE_INTRO_MASK)
|
||||
return;
|
||||
|
||||
Creature* deathbringer = ObjectAccessor::GetCreature(*me, _instance->GetData64(DATA_DEATHBRINGER_SAURFANG));
|
||||
Creature* deathbringer = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_DEATHBRINGER_SAURFANG));
|
||||
if (!deathbringer || deathbringer->IsInEvadeMode())
|
||||
return;
|
||||
|
||||
@@ -812,11 +812,11 @@ public:
|
||||
_events.ScheduleEvent(EVENT_INTRO_ALLIANCE_2, 2500, 0, PHASE_INTRO_A);
|
||||
_events.ScheduleEvent(EVENT_INTRO_ALLIANCE_3, 20000, 0, PHASE_INTRO_A);
|
||||
_events.ScheduleEvent(EVENT_INTRO_ALLIANCE_4, 2500 + 17500 + 9500, 0, PHASE_INTRO_A);
|
||||
_instance->HandleGameObject(_instance->GetData64(GO_SAURFANG_S_DOOR), true);
|
||||
_instance->HandleGameObject(_instance->GetGuidData(GO_SAURFANG_S_DOOR), true);
|
||||
|
||||
if (GameObject* teleporter = ObjectAccessor::GetGameObject(*me, _instance->GetData64(GO_SCOURGE_TRANSPORTER_SAURFANG)))
|
||||
if (GameObject* teleporter = ObjectAccessor::GetGameObject(*me, _instance->GetGuidData(GO_SCOURGE_TRANSPORTER_SAURFANG)))
|
||||
{
|
||||
_instance->HandleGameObject(0, false, teleporter);
|
||||
_instance->HandleGameObject(ObjectGuid::Empty, false, teleporter);
|
||||
teleporter->SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_IN_USE);
|
||||
}
|
||||
|
||||
@@ -898,11 +898,11 @@ public:
|
||||
case 0:
|
||||
break;
|
||||
case EVENT_INTRO_ALLIANCE_2:
|
||||
if (Creature* deathbringer = ObjectAccessor::GetCreature(*me, _instance->GetData64(DATA_DEATHBRINGER_SAURFANG)))
|
||||
if (Creature* deathbringer = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_DEATHBRINGER_SAURFANG)))
|
||||
deathbringer->AI()->Talk(SAY_INTRO_ALLIANCE_2);
|
||||
break;
|
||||
case EVENT_INTRO_ALLIANCE_3:
|
||||
if (Creature* deathbringer = ObjectAccessor::GetCreature(*me, _instance->GetData64(DATA_DEATHBRINGER_SAURFANG)))
|
||||
if (Creature* deathbringer = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_DEATHBRINGER_SAURFANG)))
|
||||
deathbringer->AI()->Talk(SAY_INTRO_ALLIANCE_3);
|
||||
break;
|
||||
case EVENT_INTRO_ALLIANCE_4:
|
||||
@@ -916,20 +916,20 @@ public:
|
||||
me->GetMotionMaster()->MoveCharge(chargePos[0].GetPositionX(), chargePos[0].GetPositionY(), chargePos[0].GetPositionZ(), 8.5f, POINT_CHARGE);
|
||||
break;
|
||||
case EVENT_INTRO_ALLIANCE_6:
|
||||
if (Creature* deathbringer = ObjectAccessor::GetCreature(*me, _instance->GetData64(DATA_DEATHBRINGER_SAURFANG)))
|
||||
if (Creature* deathbringer = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_DEATHBRINGER_SAURFANG)))
|
||||
{
|
||||
deathbringer->AI()->Talk(SAY_INTRO_ALLIANCE_7);
|
||||
deathbringer->AI()->DoCast(me, SPELL_GRIP_OF_AGONY);
|
||||
}
|
||||
break;
|
||||
case EVENT_INTRO_ALLIANCE_7:
|
||||
if (Creature* deathbringer = ObjectAccessor::GetCreature(*me, _instance->GetData64(DATA_DEATHBRINGER_SAURFANG)))
|
||||
if (Creature* deathbringer = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_DEATHBRINGER_SAURFANG)))
|
||||
{
|
||||
deathbringer->AI()->Talk(SAY_INTRO_ALLIANCE_6);
|
||||
}
|
||||
break;
|
||||
case EVENT_INTRO_FINISH:
|
||||
if (Creature* deathbringer = ObjectAccessor::GetCreature(*me, _instance->GetData64(DATA_DEATHBRINGER_SAURFANG)))
|
||||
if (Creature* deathbringer = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_DEATHBRINGER_SAURFANG)))
|
||||
{
|
||||
deathbringer->AI()->DoAction(ACTION_INTRO_DONE);
|
||||
deathbringer->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC);
|
||||
@@ -1113,7 +1113,7 @@ public:
|
||||
if (Map* map = eventInfo.GetActor()->FindMap())
|
||||
if (InstanceMap* imap = map->ToInstanceMap())
|
||||
if (InstanceScript* isc = imap->GetInstanceScript())
|
||||
if (uint64 sguid = isc->GetData64(3) //DATA_DEATHBRINGER_SAURFANG
|
||||
if (ObjectGuid sguid = isc->GetGuidData(3) //DATA_DEATHBRINGER_SAURFANG
|
||||
if (Creature* saurfang = ObjectAccessor::GetCreature(*eventInfo.GetActor(), sguid))
|
||||
markCount = saurfang->IsAIEnabled ? saurfang->AI()->GetData(123456) : 0; //FALLEN_CHAMPION_CAST_COUNT
|
||||
*/
|
||||
|
||||
@@ -74,10 +74,10 @@ public:
|
||||
{
|
||||
boss_festergutAI(Creature* creature) : BossAI(creature, DATA_FESTERGUT)
|
||||
{
|
||||
_gasDummyGUID = 0;
|
||||
_gasDummyGUID.Clear();
|
||||
}
|
||||
|
||||
uint64 _gasDummyGUID;
|
||||
ObjectGuid _gasDummyGUID;
|
||||
uint32 _maxInoculatedStack;
|
||||
uint32 _inhaleCounter;
|
||||
|
||||
@@ -118,7 +118,7 @@ public:
|
||||
|
||||
if (Creature* gasDummy = me->FindNearestCreature(NPC_GAS_DUMMY, 100.0f, true))
|
||||
_gasDummyGUID = gasDummy->GetGUID();
|
||||
if (Creature* professor = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_PROFESSOR_PUTRICIDE)))
|
||||
if (Creature* professor = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_PROFESSOR_PUTRICIDE)))
|
||||
professor->AI()->DoAction(ACTION_FESTERGUT_COMBAT);
|
||||
}
|
||||
|
||||
@@ -126,7 +126,7 @@ public:
|
||||
{
|
||||
_JustDied();
|
||||
Talk(SAY_DEATH);
|
||||
if (Creature* professor = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_PROFESSOR_PUTRICIDE)))
|
||||
if (Creature* professor = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_PROFESSOR_PUTRICIDE)))
|
||||
professor->AI()->DoAction(ACTION_FESTERGUT_DEATH);
|
||||
|
||||
RemoveBlight();
|
||||
@@ -141,7 +141,7 @@ public:
|
||||
void EnterEvadeMode() override
|
||||
{
|
||||
ScriptedAI::EnterEvadeMode();
|
||||
if (Creature* professor = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_PROFESSOR_PUTRICIDE)))
|
||||
if (Creature* professor = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_PROFESSOR_PUTRICIDE)))
|
||||
professor->AI()->EnterEvadeMode();
|
||||
}
|
||||
|
||||
@@ -238,7 +238,7 @@ public:
|
||||
break;
|
||||
case EVENT_FESTERGUT_GOO:
|
||||
if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, NonTankTargetSelector(me)))
|
||||
if (Creature* professor = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_PROFESSOR_PUTRICIDE)))
|
||||
if (Creature* professor = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_PROFESSOR_PUTRICIDE)))
|
||||
professor->CastSpell(target, SPELL_MALLABLE_GOO_H, true);
|
||||
events.ScheduleEvent(EVENT_FESTERGUT_GOO, urand(15000, 20000));
|
||||
default:
|
||||
@@ -297,7 +297,7 @@ public:
|
||||
caster->ToCreature()->AI()->Talk(EMOTE_PUNGENT_BLIGHT);
|
||||
|
||||
if (InstanceScript* inst = caster->GetInstanceScript())
|
||||
if (Creature* professor = ObjectAccessor::GetCreature(*caster, inst->GetData64(DATA_PROFESSOR_PUTRICIDE)))
|
||||
if (Creature* professor = ObjectAccessor::GetCreature(*caster, inst->GetGuidData(DATA_PROFESSOR_PUTRICIDE)))
|
||||
professor->AI()->DoAction(ACTION_FESTERGUT_GAS);
|
||||
}
|
||||
|
||||
@@ -342,7 +342,7 @@ public:
|
||||
}
|
||||
GetTarget()->CastSpell(GetTarget(), SPELL_INOCULATED, true);
|
||||
if (InstanceScript* instance = GetTarget()->GetInstanceScript())
|
||||
if (Creature* festergut = ObjectAccessor::GetCreature(*GetTarget(), instance->GetData64(DATA_FESTERGUT)))
|
||||
if (Creature* festergut = ObjectAccessor::GetCreature(*GetTarget(), instance->GetGuidData(DATA_FESTERGUT)))
|
||||
festergut->AI()->SetData(DATA_INOCULATED_STACK, inoculatedStack);
|
||||
}
|
||||
|
||||
@@ -463,7 +463,7 @@ public:
|
||||
void JustDied(Unit* /*killer*/) override
|
||||
{
|
||||
if (InstanceScript* _instance = me->GetInstanceScript())
|
||||
if (Creature* festergut = ObjectAccessor::GetCreature(*me, _instance->GetData64(DATA_FESTERGUT)))
|
||||
if (Creature* festergut = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_FESTERGUT)))
|
||||
if (festergut->IsAlive())
|
||||
festergut->AI()->Talk(SAY_STINKY_DEAD);
|
||||
}
|
||||
|
||||
@@ -393,8 +393,13 @@ public:
|
||||
void ResetSlots(TeamId teamId, MotionTransport* t)
|
||||
{
|
||||
_transport = t;
|
||||
memset(_controlledSlots, 0, sizeof(uint64)* MAX_SLOTS);
|
||||
memset(_respawnCooldowns, 0, sizeof(time_t)* MAX_SLOTS);
|
||||
|
||||
for (uint8 i = 0; i < MAX_SLOTS; ++i)
|
||||
{
|
||||
_controlledSlots[i].Clear();
|
||||
_respawnCooldowns[i] = time_t(0);
|
||||
}
|
||||
|
||||
_spawnPoint = teamId == TEAM_HORDE ? &OrgrimsHammerAddsSpawnPos : &SkybreakerAddsSpawnPos;
|
||||
_slotInfo = teamId == TEAM_HORDE ? OrgrimsHammerSlotInfo : SkybreakerSlotInfo;
|
||||
}
|
||||
@@ -440,7 +445,7 @@ public:
|
||||
|
||||
void ClearSlot(PassengerSlots slot)
|
||||
{
|
||||
_controlledSlots[slot] = 0;
|
||||
_controlledSlots[slot].Clear();
|
||||
_respawnCooldowns[slot] = time(nullptr) + _slotInfo[slot].Cooldown;
|
||||
}
|
||||
|
||||
@@ -457,7 +462,7 @@ private:
|
||||
return newPos;
|
||||
}
|
||||
|
||||
uint64 _controlledSlots[MAX_SLOTS];
|
||||
ObjectGuid _controlledSlots[MAX_SLOTS];
|
||||
time_t _respawnCooldowns[MAX_SLOTS];
|
||||
MotionTransport* _transport;
|
||||
Position const* _spawnPoint;
|
||||
@@ -489,7 +494,7 @@ private:
|
||||
class ResetEncounterEvent : public BasicEvent
|
||||
{
|
||||
public:
|
||||
ResetEncounterEvent(Unit* caster, uint32 spellId, uint64 otherTransport) : _caster(caster), _spellId(spellId), _otherTransport(otherTransport) { }
|
||||
ResetEncounterEvent(Unit* caster, uint32 spellId, ObjectGuid otherTransport) : _caster(caster), _spellId(spellId), _otherTransport(otherTransport) { }
|
||||
|
||||
bool Execute(uint64, uint32) override
|
||||
{
|
||||
@@ -497,10 +502,10 @@ public:
|
||||
_caster->GetTransport()->ToMotionTransport()->UnloadNonStaticPassengers();
|
||||
_caster->GetTransport()->AddObjectToRemoveList();
|
||||
|
||||
if (GameObject* go = HashMapHolder<GameObject>::Find(_otherTransport))
|
||||
if (Transport* transport = ObjectAccessor::GetTransport(*_caster, _otherTransport))
|
||||
{
|
||||
go->ToMotionTransport()->UnloadNonStaticPassengers();
|
||||
go->AddObjectToRemoveList();
|
||||
transport->ToMotionTransport()->UnloadNonStaticPassengers();
|
||||
transport->AddObjectToRemoveList();
|
||||
}
|
||||
|
||||
return true;
|
||||
@@ -509,7 +514,7 @@ public:
|
||||
private:
|
||||
Unit* _caster;
|
||||
uint32 _spellId;
|
||||
uint64 _otherTransport;
|
||||
ObjectGuid _otherTransport;
|
||||
};
|
||||
|
||||
class npc_gunship : public CreatureScript
|
||||
@@ -586,7 +591,7 @@ public:
|
||||
}
|
||||
|
||||
uint32 cannonEntry = _teamIdInInstance == TEAM_HORDE ? NPC_HORDE_GUNSHIP_CANNON : NPC_ALLIANCE_GUNSHIP_CANNON;
|
||||
if (GameObject* go = _instance->instance->GetGameObject(_instance->GetData64(DATA_ICECROWN_GUNSHIP_BATTLE)))
|
||||
if (GameObject* go = _instance->instance->GetGameObject(_instance->GetGuidData(DATA_ICECROWN_GUNSHIP_BATTLE)))
|
||||
if (MotionTransport* t = go->ToMotionTransport())
|
||||
{
|
||||
Transport::PassengerSet const& passengers = t->GetStaticPassengers();
|
||||
@@ -598,7 +603,7 @@ public:
|
||||
cannon->CastSpell(cannon, SPELL_EJECT_ALL_PASSENGERS, true);
|
||||
|
||||
WorldPacket data(SMSG_PLAYER_VEHICLE_DATA, cannon->GetPackGUID().size() + 4);
|
||||
data.append(cannon->GetPackGUID());
|
||||
data << cannon->GetPackGUID();
|
||||
data << uint32(0);
|
||||
cannon->SendMessageToSet(&data, true);
|
||||
|
||||
@@ -618,8 +623,8 @@ public:
|
||||
|
||||
if (isVictory)
|
||||
{
|
||||
if (GameObject* go = HashMapHolder<GameObject>::Find(_instance->GetData64(DATA_ICECROWN_GUNSHIP_BATTLE)))
|
||||
if (MotionTransport* otherTransport = go->ToMotionTransport())
|
||||
if (Transport * transport = _instance->instance->GetTransport(_instance->GetGuidData(DATA_ICECROWN_GUNSHIP_BATTLE)))
|
||||
if (MotionTransport* otherTransport = transport->ToMotionTransport())
|
||||
otherTransport->EnableMovement(true);
|
||||
|
||||
me->GetTransport()->ToMotionTransport()->EnableMovement(true);
|
||||
@@ -632,7 +637,7 @@ public:
|
||||
}
|
||||
|
||||
for (uint8 i = 0; i < 2; ++i)
|
||||
if (GameObject* go = _instance->instance->GetGameObject(_instance->GetData64(i == 0 ? DATA_ICECROWN_GUNSHIP_BATTLE : DATA_ENEMY_GUNSHIP)))
|
||||
if (GameObject* go = _instance->instance->GetGameObject(_instance->GetGuidData(i == 0 ? DATA_ICECROWN_GUNSHIP_BATTLE : DATA_ENEMY_GUNSHIP)))
|
||||
if (MotionTransport* t = go->ToMotionTransport())
|
||||
{
|
||||
Transport::PassengerSet const& passengers = t->GetPassengers();
|
||||
@@ -649,16 +654,16 @@ public:
|
||||
else
|
||||
{
|
||||
uint32 teleportSpellId = _teamIdInInstance == TEAM_HORDE ? SPELL_TELEPORT_PLAYERS_ON_RESET_H : SPELL_TELEPORT_PLAYERS_ON_RESET_A;
|
||||
me->m_Events.AddEvent(new ResetEncounterEvent(me, teleportSpellId, _instance->GetData64(DATA_ENEMY_GUNSHIP)), me->m_Events.CalculateTime(8000));
|
||||
me->m_Events.AddEvent(new ResetEncounterEvent(me, teleportSpellId, _instance->GetGuidData(DATA_ENEMY_GUNSHIP)), me->m_Events.CalculateTime(8000));
|
||||
}
|
||||
}
|
||||
|
||||
void SetGUID(uint64 guid, int32 id/* = 0*/) override
|
||||
void SetGUID(ObjectGuid guid, int32 id/* = 0*/) override
|
||||
{
|
||||
if (id != ACTION_SHIP_VISITS_ENEMY && id != ACTION_SHIP_VISITS_SELF)
|
||||
return;
|
||||
|
||||
std::map<uint64, uint32>::iterator itr = _shipVisits.find(guid);
|
||||
std::map<ObjectGuid, uint32>::iterator itr = _shipVisits.find(guid);
|
||||
if (itr == _shipVisits.end())
|
||||
{
|
||||
if (id == ACTION_SHIP_VISITS_ENEMY)
|
||||
@@ -693,7 +698,7 @@ public:
|
||||
if (id != ACTION_SHIP_VISITS_ENEMY)
|
||||
return 0;
|
||||
|
||||
for (std::map<uint64, uint32>::const_iterator itr = _shipVisits.begin(); itr != _shipVisits.end(); ++itr)
|
||||
for (std::map<ObjectGuid, uint32>::const_iterator itr = _shipVisits.begin(); itr != _shipVisits.end(); ++itr)
|
||||
if (itr->second == 0)
|
||||
return 0;
|
||||
|
||||
@@ -703,7 +708,7 @@ public:
|
||||
private:
|
||||
InstanceScript* _instance;
|
||||
TeamId _teamIdInInstance;
|
||||
std::map<uint64, uint32> _shipVisits;
|
||||
std::map<ObjectGuid, uint32> _shipVisits;
|
||||
bool _died;
|
||||
bool _summonedFirstMage;
|
||||
};
|
||||
@@ -951,8 +956,8 @@ public:
|
||||
me->SummonCreature(NPC_TELEPORT_PORTAL, x, y, z, o, TEMPSUMMON_TIMED_DESPAWN, 21000);
|
||||
}
|
||||
|
||||
if (GameObject* go = HashMapHolder<GameObject>::Find(_instance->GetData64(DATA_ICECROWN_GUNSHIP_BATTLE)))
|
||||
if (MotionTransport* skybreaker = go->ToMotionTransport())
|
||||
if (Transport* transport = _instance->instance->GetTransport(_instance->GetGuidData(DATA_ICECROWN_GUNSHIP_BATTLE)))
|
||||
if (MotionTransport* skybreaker = transport->ToMotionTransport())
|
||||
{
|
||||
float x, y, z, o;
|
||||
SkybreakerTeleportExit.GetPosition(x, y, z, o);
|
||||
@@ -1290,8 +1295,8 @@ public:
|
||||
me->SummonCreature(NPC_TELEPORT_PORTAL, x, y, z, o, TEMPSUMMON_TIMED_DESPAWN, 21000);
|
||||
}
|
||||
|
||||
if (GameObject* go = HashMapHolder<GameObject>::Find(_instance->GetData64(DATA_ICECROWN_GUNSHIP_BATTLE)))
|
||||
if (MotionTransport* orgrimsHammer = go->ToMotionTransport())
|
||||
if (Transport* transport = _instance->instance->GetTransport(_instance->GetGuidData(DATA_ICECROWN_GUNSHIP_BATTLE)))
|
||||
if (MotionTransport* orgrimsHammer = transport->ToMotionTransport())
|
||||
{
|
||||
float x, y, z, o;
|
||||
OrgrimsHammerTeleportExit.GetPosition(x, y, z, o);
|
||||
@@ -1570,8 +1575,8 @@ struct npc_gunship_boarding_addAI : public ScriptedAI
|
||||
if (!myTransport)
|
||||
return;
|
||||
|
||||
if (GameObject* go = HashMapHolder<GameObject>::Find(Instance->GetData64(DATA_ICECROWN_GUNSHIP_BATTLE)))
|
||||
if (Transport* destTransport = go->ToTransport())
|
||||
if (Transport* transport = Instance->instance->GetTransport(Instance->GetGuidData(DATA_ICECROWN_GUNSHIP_BATTLE)))
|
||||
if (Transport* destTransport = transport->ToTransport())
|
||||
destTransport->CalculatePassengerPosition(x, y, z, &o);
|
||||
|
||||
float angle = frand(0, M_PI * 2.0f);
|
||||
@@ -2119,7 +2124,7 @@ public:
|
||||
void SelectTransport(WorldObject*& target)
|
||||
{
|
||||
if (InstanceScript* instance = target->GetInstanceScript())
|
||||
target = HashMapHolder<GameObject>::Find(instance->GetData64(DATA_ICECROWN_GUNSHIP_BATTLE));
|
||||
target = instance->instance->GetTransport(instance->GetGuidData(DATA_ICECROWN_GUNSHIP_BATTLE));
|
||||
}
|
||||
|
||||
void RelocateDest(SpellEffIndex /*effIndex*/)
|
||||
@@ -2225,7 +2230,7 @@ public:
|
||||
|
||||
bool operator()(WorldObject* unit)
|
||||
{
|
||||
return unit->GetTransGUID() != _inst->GetData64(DATA_ENEMY_GUNSHIP);
|
||||
return unit->GetTransGUID() != _inst->GetGuidData(DATA_ENEMY_GUNSHIP);
|
||||
}
|
||||
|
||||
private:
|
||||
@@ -2316,7 +2321,7 @@ public:
|
||||
if (Player* player = passenger->ToPlayer())
|
||||
{
|
||||
WorldPacket data(SMSG_CLIENT_CONTROL_UPDATE, GetUnitOwner()->GetPackGUID().size() + 1);
|
||||
data.append(GetUnitOwner()->GetPackGUID());
|
||||
data << GetUnitOwner()->GetPackGUID();
|
||||
data << uint8(value);
|
||||
player->GetSession()->SendPacket(&data);
|
||||
}
|
||||
|
||||
@@ -230,13 +230,13 @@ public:
|
||||
|
||||
struct boss_lady_deathwhisperAI : public BossAI
|
||||
{
|
||||
boss_lady_deathwhisperAI(Creature* creature) : BossAI(creature, DATA_LADY_DEATHWHISPER), _introDone(false), _darnavanGUID(0) { }
|
||||
boss_lady_deathwhisperAI(Creature* creature) : BossAI(creature, DATA_LADY_DEATHWHISPER), _introDone(false) { }
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
if (Creature* darnavan = ObjectAccessor::GetCreature(*me, _darnavanGUID))
|
||||
darnavan->DespawnOrUnsummon();
|
||||
_darnavanGUID = 0;
|
||||
_darnavanGUID.Clear();
|
||||
_waveCounter = 0;
|
||||
_Reset();
|
||||
me->SetPower(POWER_MANA, me->GetMaxPower(POWER_MANA));
|
||||
@@ -369,8 +369,8 @@ public:
|
||||
{
|
||||
// shouldn't be casted on any victim of summoned mobs
|
||||
bool valid = true;
|
||||
for (std::list<uint64>::const_iterator itr = summons.begin(); itr != summons.end(); ++itr)
|
||||
if (Creature* c = ObjectAccessor::GetCreature(*me, (*itr)))
|
||||
for (ObjectGuid const guid : summons)
|
||||
if (Creature* c = ObjectAccessor::GetCreature(*me, guid))
|
||||
if (c->IsAlive() && c->GetVictim() && c->GetVictim()->GetGUID() == plr->GetGUID())
|
||||
{
|
||||
valid = false;
|
||||
@@ -516,10 +516,10 @@ public:
|
||||
for (GroupReference* itr = group->GetFirstMember(); itr != nullptr; itr = itr->next())
|
||||
if (Player* member = itr->GetSource())
|
||||
if (member->IsInMap(owner))
|
||||
member->KilledMonsterCredit(NPC_DARNAVAN_CREDIT, 0);
|
||||
member->KilledMonsterCredit(NPC_DARNAVAN_CREDIT);
|
||||
}
|
||||
else
|
||||
owner->KilledMonsterCredit(NPC_DARNAVAN_CREDIT, 0);
|
||||
owner->KilledMonsterCredit(NPC_DARNAVAN_CREDIT);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -642,7 +642,7 @@ public:
|
||||
|
||||
private:
|
||||
bool _introDone;
|
||||
uint64 _darnavanGUID;
|
||||
ObjectGuid _darnavanGUID;
|
||||
uint32 _waveCounter;
|
||||
};
|
||||
|
||||
@@ -739,7 +739,7 @@ public:
|
||||
DoZoneInCombat(me);
|
||||
me->CastSpell(me, SPELL_FANATIC_S_DETERMINATION);
|
||||
|
||||
if (Creature* ladyDeathwhisper = ObjectAccessor::GetCreature(*me, _instance->GetData64(DATA_LADY_DEATHWHISPER)))
|
||||
if (Creature* ladyDeathwhisper = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_LADY_DEATHWHISPER)))
|
||||
ladyDeathwhisper->AI()->Talk(SAY_ANIMATE_DEAD);
|
||||
break;
|
||||
case EVENT_SPELL_CULTIST_DARK_MARTYRDOM:
|
||||
@@ -860,7 +860,7 @@ public:
|
||||
DoZoneInCombat(me);
|
||||
me->CastSpell(me, SPELL_ADHERENT_S_DETERMINATION);
|
||||
|
||||
if (Creature* ladyDeathwhisper = ObjectAccessor::GetCreature(*me, _instance->GetData64(DATA_LADY_DEATHWHISPER)))
|
||||
if (Creature* ladyDeathwhisper = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_LADY_DEATHWHISPER)))
|
||||
ladyDeathwhisper->AI()->Talk(SAY_ANIMATE_DEAD);
|
||||
break;
|
||||
case EVENT_SPELL_CULTIST_DARK_MARTYRDOM:
|
||||
@@ -898,11 +898,11 @@ public:
|
||||
{
|
||||
me->SetControlled(true, UNIT_STATE_ROOT);
|
||||
unroot_timer = 500;
|
||||
targetGUID = 0;
|
||||
targetGUID.Clear();
|
||||
}
|
||||
|
||||
uint16 unroot_timer;
|
||||
uint64 targetGUID;
|
||||
ObjectGuid targetGUID;
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
@@ -1140,7 +1140,7 @@ public:
|
||||
if (InstanceScript* instance = player->GetInstanceScript())
|
||||
if (instance->GetBossState(DATA_LADY_DEATHWHISPER) != DONE)
|
||||
if (!player->IsGameMaster())
|
||||
if (Creature* ladyDeathwhisper = ObjectAccessor::GetCreature(*player, instance->GetData64(DATA_LADY_DEATHWHISPER)))
|
||||
if (Creature* ladyDeathwhisper = ObjectAccessor::GetCreature(*player, instance->GetGuidData(DATA_LADY_DEATHWHISPER)))
|
||||
ladyDeathwhisper->AI()->DoAction(ACTION_START_INTRO);
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -98,7 +98,7 @@ public:
|
||||
|
||||
bool _introDone;
|
||||
bool _boneSlice;
|
||||
uint64 _lastBoneSliceTargets[3];
|
||||
ObjectGuid _lastBoneSliceTargets[3];
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
@@ -111,7 +111,9 @@ public:
|
||||
events.ScheduleEvent(EVENT_ENRAGE, 600000);
|
||||
|
||||
_boneSlice = false;
|
||||
memset(_lastBoneSliceTargets, 0, 3 * sizeof(uint64));
|
||||
|
||||
for (uint8 i = 0; i < 3; ++i)
|
||||
_lastBoneSliceTargets[i].Clear();
|
||||
|
||||
instance->SetData(DATA_BONED_ACHIEVEMENT, uint32(true));
|
||||
}
|
||||
@@ -135,12 +137,12 @@ public:
|
||||
}
|
||||
}
|
||||
|
||||
uint64 GetGUID(int32 id) const override
|
||||
ObjectGuid GetGUID(int32 id) const override
|
||||
{
|
||||
if (id >= 0 && id <= 2)
|
||||
return _lastBoneSliceTargets[id];
|
||||
|
||||
return (uint64)0;
|
||||
return ObjectGuid::Empty;
|
||||
}
|
||||
|
||||
void UpdateAI(uint32 diff) override
|
||||
@@ -243,7 +245,10 @@ public:
|
||||
DoCastVictim(SPELL_BONE_SLICE);
|
||||
|
||||
if (_boneSlice && me->isAttackReady() && me->GetVictim() && !me->HasUnitState(UNIT_STATE_CASTING) && me->IsWithinMeleeRange(me->GetVictim()))
|
||||
memset(_lastBoneSliceTargets, 0, 3 * sizeof(uint64));
|
||||
{
|
||||
for (uint8 i = 0; i < 3; ++i)
|
||||
_lastBoneSliceTargets[i].Clear();
|
||||
}
|
||||
|
||||
DoMeleeAttackIfReady();
|
||||
}
|
||||
@@ -406,8 +411,8 @@ public:
|
||||
if (u->GetEntry() == NPC_BONE_SPIKE && u->GetTypeId() == TYPEID_UNIT)
|
||||
u->ToCreature()->AI()->DoAction(-1337);
|
||||
|
||||
uint64 petGUID = summoner->GetPetGUID();
|
||||
summoner->SetPetGUID(0);
|
||||
ObjectGuid petGUID = summoner->GetPetGUID();
|
||||
summoner->SetPetGUID(ObjectGuid::Empty);
|
||||
me->CastSpell(summoner, SPELL_IMPALED, true);
|
||||
summoner->CastSpell(me, SPELL_RIDE_VEHICLE, true);
|
||||
//summoner->ClearUnitState(UNIT_STATE_ONVEHICLE);
|
||||
|
||||
@@ -140,7 +140,7 @@ class AbominationDespawner
|
||||
public:
|
||||
explicit AbominationDespawner(Unit* owner) : _owner(owner) { }
|
||||
|
||||
bool operator()(uint64 guid)
|
||||
bool operator()(ObjectGuid guid)
|
||||
{
|
||||
if (Unit* summon = ObjectAccessor::GetUnit(*_owner, guid))
|
||||
{
|
||||
@@ -411,7 +411,7 @@ public:
|
||||
switch (id)
|
||||
{
|
||||
case POINT_FESTERGUT:
|
||||
if (Creature* c = instance->instance->GetCreature(instance->GetData64(DATA_FESTERGUT)))
|
||||
if (Creature* c = instance->instance->GetCreature(instance->GetGuidData(DATA_FESTERGUT)))
|
||||
{
|
||||
if (c->IsInCombat())
|
||||
{
|
||||
@@ -427,7 +427,7 @@ public:
|
||||
}
|
||||
break;
|
||||
case POINT_ROTFACE:
|
||||
if (Creature* c = instance->instance->GetCreature(instance->GetData64(DATA_ROTFACE)))
|
||||
if (Creature* c = instance->instance->GetCreature(instance->GetGuidData(DATA_ROTFACE)))
|
||||
{
|
||||
if (c->IsInCombat())
|
||||
{
|
||||
@@ -730,13 +730,12 @@ public:
|
||||
npc_putricide_oozeAI(Creature* creature, uint32 hitTargetSpellId) : ScriptedAI(creature),
|
||||
_hitTargetSpellId(hitTargetSpellId), _newTargetSelectTimer(0)
|
||||
{
|
||||
targetGUID = 0;
|
||||
me->SetReactState(REACT_PASSIVE);
|
||||
}
|
||||
|
||||
uint64 targetGUID;
|
||||
ObjectGuid targetGUID;
|
||||
|
||||
void SetGUID(uint64 guid, int32 type) override
|
||||
void SetGUID(ObjectGuid guid, int32 type) override
|
||||
{
|
||||
if (type == -1)
|
||||
targetGUID = guid;
|
||||
@@ -745,7 +744,7 @@ public:
|
||||
void IsSummonedBy(Unit* /*summoner*/) override
|
||||
{
|
||||
if (InstanceScript* instance = me->GetInstanceScript())
|
||||
if (Creature* professor = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_PROFESSOR_PUTRICIDE)))
|
||||
if (Creature* professor = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_PROFESSOR_PUTRICIDE)))
|
||||
{
|
||||
if (!professor->IsInCombat())
|
||||
me->DespawnOrUnsummon(1);
|
||||
@@ -756,7 +755,7 @@ public:
|
||||
|
||||
void SelectNewTarget()
|
||||
{
|
||||
targetGUID = 0;
|
||||
targetGUID.Clear();
|
||||
me->InterruptNonMeleeSpells(true);
|
||||
me->AttackStop();
|
||||
me->GetMotionMaster()->Clear();
|
||||
@@ -1274,7 +1273,7 @@ public:
|
||||
|
||||
if (!GetHitUnit()->HasAura(plagueId))
|
||||
{
|
||||
if (Creature* professor = ObjectAccessor::GetCreature(*GetCaster(), instance->GetData64(DATA_PROFESSOR_PUTRICIDE)))
|
||||
if (Creature* professor = ObjectAccessor::GetCreature(*GetCaster(), instance->GetGuidData(DATA_PROFESSOR_PUTRICIDE)))
|
||||
{
|
||||
if (Aura* oldPlague = GetCaster()->GetAura(plagueId, professor->GetGUID()))
|
||||
{
|
||||
@@ -1414,7 +1413,7 @@ public:
|
||||
if (!instance)
|
||||
return SPELL_FAILED_CANT_DO_THAT_RIGHT_NOW;
|
||||
|
||||
Creature* professor = ObjectAccessor::GetCreature(*GetExplTargetUnit(), instance->GetData64(DATA_PROFESSOR_PUTRICIDE));
|
||||
Creature* professor = ObjectAccessor::GetCreature(*GetExplTargetUnit(), instance->GetGuidData(DATA_PROFESSOR_PUTRICIDE));
|
||||
if (!professor)
|
||||
return SPELL_FAILED_CANT_DO_THAT_RIGHT_NOW;
|
||||
|
||||
@@ -1508,7 +1507,7 @@ public:
|
||||
if (!instance)
|
||||
return;
|
||||
|
||||
Creature* putricide = ObjectAccessor::GetCreature(*caster, instance->GetData64(DATA_PROFESSOR_PUTRICIDE));
|
||||
Creature* putricide = ObjectAccessor::GetCreature(*caster, instance->GetGuidData(DATA_PROFESSOR_PUTRICIDE));
|
||||
if (!putricide)
|
||||
return;
|
||||
|
||||
|
||||
@@ -118,13 +118,17 @@ public:
|
||||
}
|
||||
|
||||
uint32 infectionCooldown;
|
||||
uint64 _oozeFloodDummyGUIDs[4][2];
|
||||
ObjectGuid _oozeFloodDummyGUIDs[4][2];
|
||||
uint8 _oozeFloodStage;
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
infectionCooldown = 14000;
|
||||
memset(&_oozeFloodDummyGUIDs, 0, sizeof(_oozeFloodDummyGUIDs));
|
||||
|
||||
for (uint8 i = 0; i < 4; ++i)
|
||||
for (uint8 j = 0; j < 2; ++j)
|
||||
_oozeFloodDummyGUIDs[i][j].Clear();
|
||||
|
||||
_oozeFloodStage = 0;
|
||||
_Reset();
|
||||
events.Reset();
|
||||
@@ -152,7 +156,7 @@ public:
|
||||
Talk(SAY_AGGRO);
|
||||
DoZoneInCombat();
|
||||
|
||||
if (Creature* professor = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_PROFESSOR_PUTRICIDE)))
|
||||
if (Creature* professor = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_PROFESSOR_PUTRICIDE)))
|
||||
professor->AI()->DoAction(ACTION_ROTFACE_COMBAT);
|
||||
|
||||
instance->SetData(DATA_OOZE_DANCE_ACHIEVEMENT, uint32(true)); // reset
|
||||
@@ -178,7 +182,7 @@ public:
|
||||
instance->DoRemoveAurasDueToSpellOnPlayers(MUTATED_INFECTION);
|
||||
_JustDied();
|
||||
Talk(SAY_DEATH);
|
||||
if (Creature* professor = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_PROFESSOR_PUTRICIDE)))
|
||||
if (Creature* professor = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_PROFESSOR_PUTRICIDE)))
|
||||
professor->AI()->DoAction(ACTION_ROTFACE_DEATH);
|
||||
}
|
||||
|
||||
@@ -207,7 +211,7 @@ public:
|
||||
me->SetControlled(false, UNIT_STATE_ROOT);
|
||||
me->DisableRotate(false);
|
||||
ScriptedAI::EnterEvadeMode();
|
||||
if (Creature* professor = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_PROFESSOR_PUTRICIDE)))
|
||||
if (Creature* professor = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_PROFESSOR_PUTRICIDE)))
|
||||
professor->AI()->EnterEvadeMode();
|
||||
}
|
||||
|
||||
@@ -285,7 +289,7 @@ public:
|
||||
events.ScheduleEvent(EVENT_MUTATED_INFECTION, infectionCooldown);
|
||||
break;
|
||||
case EVENT_ROTFACE_OOZE_FLOOD:
|
||||
if (Creature* professor = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_PROFESSOR_PUTRICIDE)))
|
||||
if (Creature* professor = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_PROFESSOR_PUTRICIDE)))
|
||||
{
|
||||
professor->AI()->Talk(SAY_ROTFACE_OOZE_FLOOD);
|
||||
me->CastSpell((Unit*)nullptr, oozeFloodSpells[_oozeFloodStage], true);
|
||||
@@ -304,7 +308,7 @@ public:
|
||||
minDist = -5.0f;
|
||||
|
||||
if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, minDist, true))
|
||||
if (Creature* professor = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_PROFESSOR_PUTRICIDE)))
|
||||
if (Creature* professor = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_PROFESSOR_PUTRICIDE)))
|
||||
professor->CastSpell(target, SPELL_VILE_GAS_H, true); // triggered, to skip LoS check
|
||||
}
|
||||
events.ScheduleEvent(EVENT_ROTFACE_VILE_GAS, urand(15000, 20000));
|
||||
@@ -333,7 +337,7 @@ public:
|
||||
npc_little_oozeAI(Creature* creature) : ScriptedAI(creature), instance(creature->GetInstanceScript())
|
||||
{
|
||||
firstUpdate = true;
|
||||
if (Creature* rotface = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_ROTFACE)))
|
||||
if (Creature* rotface = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_ROTFACE)))
|
||||
rotface->AI()->JustSummoned(me);
|
||||
}
|
||||
|
||||
@@ -352,7 +356,7 @@ public:
|
||||
|
||||
void JustDied(Unit* /*killer*/) override
|
||||
{
|
||||
if (Creature* rotface = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_ROTFACE)))
|
||||
if (Creature* rotface = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_ROTFACE)))
|
||||
rotface->AI()->SummonedCreatureDespawn(me);
|
||||
me->DespawnOrUnsummon(0);
|
||||
}
|
||||
@@ -412,7 +416,7 @@ public:
|
||||
npc_big_oozeAI(Creature* creature) : ScriptedAI(creature), instance(creature->GetInstanceScript())
|
||||
{
|
||||
firstUpdate = true;
|
||||
if (Creature* rotface = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_ROTFACE)))
|
||||
if (Creature* rotface = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_ROTFACE)))
|
||||
rotface->AI()->JustSummoned(me);
|
||||
}
|
||||
|
||||
@@ -428,7 +432,7 @@ public:
|
||||
|
||||
void JustDied(Unit* /*killer*/) override
|
||||
{
|
||||
if (Creature* rotface = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_ROTFACE)))
|
||||
if (Creature* rotface = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_ROTFACE)))
|
||||
rotface->AI()->SummonedCreatureDespawn(me);
|
||||
me->DespawnOrUnsummon();
|
||||
}
|
||||
@@ -650,7 +654,7 @@ public:
|
||||
GetCaster()->RemoveAurasDueToSpell(SPELL_LARGE_OOZE_BUFF_COMBINE);
|
||||
GetCaster()->RemoveAurasDueToSpell(SPELL_LARGE_OOZE_COMBINE);
|
||||
if (InstanceScript* instance = GetCaster()->GetInstanceScript())
|
||||
if (Creature* rotface = ObjectAccessor::GetCreature(*GetCaster(), instance->GetData64(DATA_ROTFACE)))
|
||||
if (Creature* rotface = ObjectAccessor::GetCreature(*GetCaster(), instance->GetGuidData(DATA_ROTFACE)))
|
||||
if (rotface->IsAlive())
|
||||
{
|
||||
if (GetCaster()->GetTypeId() == TYPEID_UNIT)
|
||||
@@ -713,7 +717,7 @@ public:
|
||||
GetCaster()->RemoveAurasDueToSpell(SPELL_LARGE_OOZE_BUFF_COMBINE);
|
||||
GetCaster()->RemoveAurasDueToSpell(SPELL_LARGE_OOZE_COMBINE);
|
||||
if (InstanceScript* instance = GetCaster()->GetInstanceScript())
|
||||
if (Creature* rotface = ObjectAccessor::GetCreature(*GetCaster(), instance->GetData64(DATA_ROTFACE)))
|
||||
if (Creature* rotface = ObjectAccessor::GetCreature(*GetCaster(), instance->GetGuidData(DATA_ROTFACE)))
|
||||
if (rotface->IsAlive())
|
||||
{
|
||||
if (GetCaster()->GetTypeId() == TYPEID_UNIT)
|
||||
@@ -804,7 +808,7 @@ public:
|
||||
GetExplTargetDest()->GetPosition(x, y, z);
|
||||
// let Rotface handle the cast - caster dies before this executes
|
||||
if (InstanceScript* script = GetCaster()->GetInstanceScript())
|
||||
if (Creature* rotface = script->instance->GetCreature(script->GetData64(DATA_ROTFACE)))
|
||||
if (Creature* rotface = script->instance->GetCreature(script->GetGuidData(DATA_ROTFACE)))
|
||||
rotface->CastSpell(x, y, z, triggered_spell_id, true/*, nullptr, nullptr, GetCaster()->GetGUID()*/); // caster not available on clientside, no log in such case
|
||||
}
|
||||
|
||||
@@ -893,7 +897,7 @@ public:
|
||||
{
|
||||
summons.DespawnAll();
|
||||
if (InstanceScript* _instance = me->GetInstanceScript())
|
||||
if (Creature* rotface = ObjectAccessor::GetCreature(*me, _instance->GetData64(DATA_ROTFACE)))
|
||||
if (Creature* rotface = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_ROTFACE)))
|
||||
if (rotface->IsAlive())
|
||||
rotface->AI()->Talk(SAY_PRECIOUS_DIES);
|
||||
}
|
||||
|
||||
@@ -174,7 +174,7 @@ private:
|
||||
class FrostBombExplosion : public BasicEvent
|
||||
{
|
||||
public:
|
||||
FrostBombExplosion(Creature* owner, uint64 sindragosaGUID) : _owner(owner), _sindragosaGUID(sindragosaGUID) { }
|
||||
FrostBombExplosion(Creature* owner, ObjectGuid sindragosaGUID) : _owner(owner), _sindragosaGUID(sindragosaGUID) { }
|
||||
|
||||
bool Execute(uint64 /*eventTime*/, uint32 /*updateTime*/) override
|
||||
{
|
||||
@@ -185,13 +185,13 @@ public:
|
||||
|
||||
private:
|
||||
Creature* _owner;
|
||||
uint64 _sindragosaGUID;
|
||||
ObjectGuid _sindragosaGUID;
|
||||
};
|
||||
|
||||
class IceTombSummonEvent : public BasicEvent
|
||||
{
|
||||
public:
|
||||
IceTombSummonEvent(Unit* owner, uint64 sindragosaGUID) : _owner(owner), _sindragosaGUID(sindragosaGUID) { }
|
||||
IceTombSummonEvent(Unit* owner, ObjectGuid sindragosaGUID) : _owner(owner), _sindragosaGUID(sindragosaGUID) { }
|
||||
|
||||
bool Execute(uint64 /*eventTime*/, uint32 /*updateTime*/) override
|
||||
{
|
||||
@@ -222,7 +222,7 @@ public:
|
||||
|
||||
private:
|
||||
Unit* _owner;
|
||||
uint64 _sindragosaGUID;
|
||||
ObjectGuid _sindragosaGUID;
|
||||
};
|
||||
|
||||
struct LastPhaseIceTombTargetSelector : public acore::unary_function<Unit*, bool>
|
||||
@@ -712,16 +712,15 @@ public:
|
||||
npc_ice_tombAI(Creature* creature) : NullCreatureAI(creature)
|
||||
{
|
||||
me->SetReactState(REACT_PASSIVE);
|
||||
_trappedPlayerGUID = 0;
|
||||
_existenceCheckTimer = 1000;
|
||||
_asphyxiationTimer = 22500;
|
||||
}
|
||||
|
||||
uint64 _trappedPlayerGUID;
|
||||
ObjectGuid _trappedPlayerGUID;
|
||||
uint32 _existenceCheckTimer;
|
||||
uint16 _asphyxiationTimer;
|
||||
|
||||
void SetGUID(uint64 guid, int32 type) override
|
||||
void SetGUID(ObjectGuid guid, int32 type) override
|
||||
{
|
||||
if (type == DATA_TRAPPED_PLAYER)
|
||||
_trappedPlayerGUID = guid;
|
||||
@@ -739,7 +738,7 @@ public:
|
||||
|
||||
if (Player* player = ObjectAccessor::GetPlayer(*me, _trappedPlayerGUID))
|
||||
{
|
||||
_trappedPlayerGUID = 0;
|
||||
_trappedPlayerGUID.Clear();
|
||||
player->RemoveAurasDueToSpell(SPELL_ICE_TOMB_DAMAGE);
|
||||
player->RemoveAurasDueToSpell(SPELL_ASPHYXIATION);
|
||||
player->RemoveAurasDueToSpell(SPELL_ICE_TOMB_UNTARGETABLE);
|
||||
@@ -1273,7 +1272,7 @@ public:
|
||||
|
||||
// for standard creatures check full LOS
|
||||
if (Creature* c = unit->ToCreature())
|
||||
if (!c->IsPet() && c->GetDBTableGUIDLow())
|
||||
if (!c->IsPet() && c->GetSpawnId())
|
||||
return !_caster->IsWithinLOSInMap(unit);
|
||||
|
||||
// for players and pets check only dynamic los (ice block gameobjects)
|
||||
@@ -1375,7 +1374,7 @@ public:
|
||||
{
|
||||
if (!me->isDead())
|
||||
{
|
||||
_instance->SetData(DATA_SINDRAGOSA_FROSTWYRMS, me->GetDBTableGUIDLow()); // this cannot be in Reset because reset also happens on evade
|
||||
_instance->SetData(DATA_SINDRAGOSA_FROSTWYRMS, me->GetSpawnId()); // this cannot be in Reset because reset also happens on evade
|
||||
Reset();
|
||||
}
|
||||
}
|
||||
@@ -1408,7 +1407,7 @@ public:
|
||||
void JustRespawned() override
|
||||
{
|
||||
ScriptedAI::JustRespawned();
|
||||
_instance->SetData(DATA_SINDRAGOSA_FROSTWYRMS, me->GetDBTableGUIDLow()); // this cannot be in Reset because reset also happens on evade
|
||||
_instance->SetData(DATA_SINDRAGOSA_FROSTWYRMS, me->GetSpawnId()); // this cannot be in Reset because reset also happens on evade
|
||||
}
|
||||
|
||||
void JustDied(Unit* /*killer*/) override
|
||||
@@ -1509,7 +1508,7 @@ public:
|
||||
{
|
||||
if (!me->isDead())
|
||||
{
|
||||
_instance->SetData(DATA_SINDRAGOSA_FROSTWYRMS, me->GetDBTableGUIDLow()); // this cannot be in Reset because reset also happens on evade
|
||||
_instance->SetData(DATA_SINDRAGOSA_FROSTWYRMS, me->GetSpawnId()); // this cannot be in Reset because reset also happens on evade
|
||||
Reset();
|
||||
}
|
||||
}
|
||||
@@ -1542,7 +1541,7 @@ public:
|
||||
void JustRespawned() override
|
||||
{
|
||||
ScriptedAI::JustRespawned();
|
||||
_instance->SetData(DATA_SINDRAGOSA_FROSTWYRMS, me->GetDBTableGUIDLow()); // this cannot be in Reset because reset also happens on evade
|
||||
_instance->SetData(DATA_SINDRAGOSA_FROSTWYRMS, me->GetSpawnId()); // this cannot be in Reset because reset also happens on evade
|
||||
}
|
||||
|
||||
void JustDied(Unit* /*killer*/) override
|
||||
@@ -1729,14 +1728,14 @@ public:
|
||||
if (InstanceScript* instance = player->GetInstanceScript())
|
||||
{
|
||||
if (!instance->GetData(DATA_SPINESTALKER))
|
||||
if (Creature* spinestalker = ObjectAccessor::GetCreature(*player, instance->GetData64(DATA_SPINESTALKER)))
|
||||
if (Creature* spinestalker = ObjectAccessor::GetCreature(*player, instance->GetGuidData(DATA_SPINESTALKER)))
|
||||
spinestalker->AI()->DoAction(ACTION_START_FROSTWYRM);
|
||||
|
||||
if (!instance->GetData(DATA_RIMEFANG))
|
||||
if (Creature* rimefang = ObjectAccessor::GetCreature(*player, instance->GetData64(DATA_RIMEFANG)))
|
||||
if (Creature* rimefang = ObjectAccessor::GetCreature(*player, instance->GetGuidData(DATA_RIMEFANG)))
|
||||
rimefang->AI()->DoAction(ACTION_START_FROSTWYRM);
|
||||
|
||||
if (!instance->GetData(DATA_SINDRAGOSA_FROSTWYRMS) && !instance->GetData64(DATA_SINDRAGOSA) && instance->GetBossState(DATA_SINDRAGOSA) != DONE)
|
||||
if (!instance->GetData(DATA_SINDRAGOSA_FROSTWYRMS) && !instance->GetGuidData(DATA_SINDRAGOSA) && instance->GetBossState(DATA_SINDRAGOSA) != DONE)
|
||||
{
|
||||
if (instance->GetData(DATA_HAS_LIMITED_ATTEMPTS) && !instance->GetData(DATA_HEROIC_ATTEMPTS))
|
||||
return true;
|
||||
@@ -1771,7 +1770,7 @@ public:
|
||||
if (!me->isDead())
|
||||
{
|
||||
if (me->GetEntry() == NPC_FROSTWING_WHELP)
|
||||
_instance->SetData(_frostwyrmId, me->GetDBTableGUIDLow()); // this cannot be in Reset because reset also happens on evade
|
||||
_instance->SetData(_frostwyrmId, me->GetSpawnId()); // this cannot be in Reset because reset also happens on evade
|
||||
Reset();
|
||||
}
|
||||
}
|
||||
@@ -1814,7 +1813,7 @@ public:
|
||||
|
||||
// Increase add count
|
||||
if (me->GetEntry() == NPC_FROSTWING_WHELP)
|
||||
_instance->SetData(_frostwyrmId, me->GetDBTableGUIDLow()); // this cannot be in Reset because reset also happens on evade
|
||||
_instance->SetData(_frostwyrmId, me->GetSpawnId()); // this cannot be in Reset because reset also happens on evade
|
||||
}
|
||||
|
||||
void SetData(uint32 type, uint32 data) override
|
||||
|
||||
@@ -729,7 +729,7 @@ public:
|
||||
me->CastSpell((Unit*)nullptr, SPELL_SUMMON_BROKEN_FROSTMOURNE, true);
|
||||
me->CastSpell((Unit*)nullptr, SPELL_SUMMON_BROKEN_FROSTMOURNE_2, false);
|
||||
SetEquipmentSlots(false, EQUIP_BROKEN_FROSTMOURNE);
|
||||
if (Creature* tirion = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_HIGHLORD_TIRION_FORDRING)))
|
||||
if (Creature* tirion = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_HIGHLORD_TIRION_FORDRING)))
|
||||
tirion->AI()->DoAction(ACTION_BREAK_FROSTMOURNE);
|
||||
break;
|
||||
case ACTION_TELEPORT_BACK:
|
||||
@@ -791,7 +791,7 @@ public:
|
||||
me->CastSpell((Unit*)nullptr, SPELL_FURY_OF_FROSTMOURNE, false);
|
||||
me->SetWalk(true);
|
||||
|
||||
if (Creature* tirion = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_HIGHLORD_TIRION_FORDRING)))
|
||||
if (Creature* tirion = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_HIGHLORD_TIRION_FORDRING)))
|
||||
tirion->AI()->DoAction(ACTION_OUTRO);
|
||||
return;
|
||||
}
|
||||
@@ -819,7 +819,7 @@ public:
|
||||
if (!_bFordringMustFallYell && me->GetHealth() < 500000)
|
||||
{
|
||||
_bFordringMustFallYell = true;
|
||||
if (Creature* tirion = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_HIGHLORD_TIRION_FORDRING)))
|
||||
if (Creature* tirion = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_HIGHLORD_TIRION_FORDRING)))
|
||||
{
|
||||
tirion->MonsterYell("The Lich King must fall!", LANG_UNIVERSAL, 0);
|
||||
tirion->PlayDirectSound(17389);
|
||||
@@ -1249,7 +1249,7 @@ public:
|
||||
BossAI::EnterEvadeMode();
|
||||
me->SetReactState(REACT_AGGRESSIVE);
|
||||
|
||||
if (Creature* tirion = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_HIGHLORD_TIRION_FORDRING)))
|
||||
if (Creature* tirion = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_HIGHLORD_TIRION_FORDRING)))
|
||||
tirion->AI()->EnterEvadeMode();
|
||||
}
|
||||
};
|
||||
@@ -1285,7 +1285,7 @@ public:
|
||||
switch (id)
|
||||
{
|
||||
case POINT_TIRION_INTRO:
|
||||
if (Creature* theLichKing = ObjectAccessor::GetCreature(*me, _instance->GetData64(DATA_THE_LICH_KING)))
|
||||
if (Creature* theLichKing = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_THE_LICH_KING)))
|
||||
{
|
||||
if (!theLichKing->IsAlive() || !theLichKing->IsVisible())
|
||||
break;
|
||||
@@ -1351,7 +1351,7 @@ public:
|
||||
|
||||
void sGossipSelect(Player* /*player*/, uint32 sender, uint32 action) override
|
||||
{
|
||||
Creature* theLichKing = ObjectAccessor::GetCreature(*me, _instance->GetData64(DATA_THE_LICH_KING));
|
||||
Creature* theLichKing = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_THE_LICH_KING));
|
||||
if (me->GetCreatureTemplate()->GossipMenuId == sender && !action && me->HasFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP) && theLichKing && !theLichKing->IsInEvadeMode())
|
||||
{
|
||||
if (me->GetMap()->IsHeroic() && !_instance->GetData(DATA_LK_HC_AVAILABLE))
|
||||
@@ -1379,7 +1379,7 @@ public:
|
||||
switch (_events.ExecuteEvent())
|
||||
{
|
||||
case EVENT_INTRO_LK_MOVE:
|
||||
if (Creature* theLichKing = ObjectAccessor::GetCreature(*me, _instance->GetData64(DATA_THE_LICH_KING)))
|
||||
if (Creature* theLichKing = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_THE_LICH_KING)))
|
||||
{
|
||||
Movement::PointsArray path;
|
||||
path.push_back(G3D::Vector3(theLichKing->GetPositionX(), theLichKing->GetPositionY(), theLichKing->GetPositionZ()));
|
||||
@@ -1391,7 +1391,7 @@ public:
|
||||
}
|
||||
break;
|
||||
case EVENT_INTRO_LK_TALK_1:
|
||||
if (Creature* theLichKing = ObjectAccessor::GetCreature(*me, _instance->GetData64(DATA_THE_LICH_KING)))
|
||||
if (Creature* theLichKing = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_THE_LICH_KING)))
|
||||
{
|
||||
theLichKing->AI()->Talk(SAY_LK_INTRO_2);
|
||||
theLichKing->HandleEmoteCommand(EMOTE_ONESHOT_TALK_NO_SHEATHE);
|
||||
@@ -1402,15 +1402,15 @@ public:
|
||||
}
|
||||
break;
|
||||
case EVENT_INTRO_LK_EMOTE_CAST_SHOUT:
|
||||
if (Creature* theLichKing = ObjectAccessor::GetCreature(*me, _instance->GetData64(DATA_THE_LICH_KING)))
|
||||
if (Creature* theLichKing = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_THE_LICH_KING)))
|
||||
theLichKing->CastSpell(theLichKing, SPELL_EMOTE_SHOUT_NO_SHEATH, false);
|
||||
break;
|
||||
case EVENT_INTRO_LK_EMOTE_1:
|
||||
if (Creature* theLichKing = ObjectAccessor::GetCreature(*me, _instance->GetData64(DATA_THE_LICH_KING)))
|
||||
if (Creature* theLichKing = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_THE_LICH_KING)))
|
||||
theLichKing->HandleEmoteCommand(EMOTE_ONESHOT_POINT_NO_SHEATHE);
|
||||
break;
|
||||
case EVENT_INTRO_LK_CAST_FREEZE:
|
||||
if (Creature* theLichKing = ObjectAccessor::GetCreature(*me, _instance->GetData64(DATA_THE_LICH_KING)))
|
||||
if (Creature* theLichKing = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_THE_LICH_KING)))
|
||||
{
|
||||
theLichKing->AI()->Talk(SAY_LK_INTRO_3);
|
||||
theLichKing->CastSpell((Unit*)nullptr, SPELL_ICE_LOCK, false);
|
||||
@@ -1439,7 +1439,7 @@ public:
|
||||
me->GetMotionMaster()->MovePoint(0, TirionCharge);
|
||||
break;
|
||||
case EVENT_INTRO_FINISH:
|
||||
if (Creature* theLichKing = ObjectAccessor::GetCreature(*me, _instance->GetData64(DATA_THE_LICH_KING)))
|
||||
if (Creature* theLichKing = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_THE_LICH_KING)))
|
||||
{
|
||||
theLichKing->SetWalk(false);
|
||||
theLichKing->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC);
|
||||
@@ -1451,7 +1451,7 @@ public:
|
||||
break;
|
||||
|
||||
case EVENT_OUTRO_LK_TALK_1:
|
||||
if (Creature* theLichKing = ObjectAccessor::GetCreature(*me, _instance->GetData64(DATA_THE_LICH_KING)))
|
||||
if (Creature* theLichKing = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_THE_LICH_KING)))
|
||||
{
|
||||
theLichKing->AI()->Talk(SAY_LK_OUTRO_1);
|
||||
theLichKing->CastSpell((Unit*)nullptr, SPELL_FURY_OF_FROSTMOURNE_NO_REZ, true);
|
||||
@@ -1463,25 +1463,25 @@ public:
|
||||
}
|
||||
break;
|
||||
case EVENT_OUTRO_LK_TALK_2:
|
||||
if (Creature* theLichKing = ObjectAccessor::GetCreature(*me, _instance->GetData64(DATA_THE_LICH_KING)))
|
||||
if (Creature* theLichKing = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_THE_LICH_KING)))
|
||||
{
|
||||
theLichKing->AI()->Talk(SAY_LK_OUTRO_2);
|
||||
theLichKing->CastSpell((Unit*)nullptr, SPELL_EMOTE_QUESTION_NO_SHEATH, false);
|
||||
}
|
||||
break;
|
||||
case EVENT_OUTRO_LK_EMOTE_TALK:
|
||||
if (Creature* theLichKing = ObjectAccessor::GetCreature(*me, _instance->GetData64(DATA_THE_LICH_KING)))
|
||||
if (Creature* theLichKing = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_THE_LICH_KING)))
|
||||
theLichKing->HandleEmoteCommand(EMOTE_ONESHOT_TALK_NO_SHEATHE);
|
||||
break;
|
||||
case EVENT_OUTRO_LK_TALK_3:
|
||||
if (Creature* theLichKing = ObjectAccessor::GetCreature(*me, _instance->GetData64(DATA_THE_LICH_KING)))
|
||||
if (Creature* theLichKing = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_THE_LICH_KING)))
|
||||
{
|
||||
theLichKing->SetFacingToObject(me);
|
||||
theLichKing->AI()->Talk(SAY_LK_OUTRO_3);
|
||||
}
|
||||
break;
|
||||
case EVENT_OUTRO_LK_MOVE_CENTER:
|
||||
if (Creature* theLichKing = ObjectAccessor::GetCreature(*me, _instance->GetData64(DATA_THE_LICH_KING)))
|
||||
if (Creature* theLichKing = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_THE_LICH_KING)))
|
||||
{
|
||||
theLichKing->GetMotionMaster()->MovePoint(0, CenterPosition);
|
||||
uint32 travelTime = 1000 * theLichKing->GetExactDist(&CenterPosition) / theLichKing->GetSpeed(MOVE_WALK) + 1000;
|
||||
@@ -1492,14 +1492,14 @@ public:
|
||||
}
|
||||
break;
|
||||
case EVENT_OUTRO_LK_TALK_4:
|
||||
if (Creature* theLichKing = ObjectAccessor::GetCreature(*me, _instance->GetData64(DATA_THE_LICH_KING)))
|
||||
if (Creature* theLichKing = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_THE_LICH_KING)))
|
||||
{
|
||||
theLichKing->SetFacingTo(0.01745329f);
|
||||
theLichKing->AI()->Talk(SAY_LK_OUTRO_4);
|
||||
}
|
||||
break;
|
||||
case EVENT_OUTRO_LK_RAISE_DEAD:
|
||||
if (Creature* theLichKing = ObjectAccessor::GetCreature(*me, _instance->GetData64(DATA_THE_LICH_KING)))
|
||||
if (Creature* theLichKing = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_THE_LICH_KING)))
|
||||
{
|
||||
theLichKing->CastSpell((Unit*)nullptr, SPELL_RAISE_DEAD, false);
|
||||
theLichKing->ClearUnitState(UNIT_STATE_CASTING);
|
||||
@@ -1507,7 +1507,7 @@ public:
|
||||
}
|
||||
break;
|
||||
case EVENT_OUTRO_LK_TALK_5:
|
||||
if (Creature* theLichKing = ObjectAccessor::GetCreature(*me, _instance->GetData64(DATA_THE_LICH_KING)))
|
||||
if (Creature* theLichKing = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_THE_LICH_KING)))
|
||||
{
|
||||
theLichKing->AI()->Talk(SAY_LK_OUTRO_5);
|
||||
_events.ScheduleEvent(EVENT_OUTRO_FORDRING_TALK_1, 7000);
|
||||
@@ -1517,7 +1517,7 @@ public:
|
||||
}
|
||||
break;
|
||||
case EVENT_OUTRO_LK_TALK_6:
|
||||
if (Creature* theLichKing = ObjectAccessor::GetCreature(*me, _instance->GetData64(DATA_THE_LICH_KING)))
|
||||
if (Creature* theLichKing = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_THE_LICH_KING)))
|
||||
{
|
||||
theLichKing->AI()->Talk(SAY_LK_OUTRO_6);
|
||||
me->SetFacingToObject(theLichKing);
|
||||
@@ -1540,7 +1540,7 @@ public:
|
||||
frostmourne->CastSpell((Unit*)nullptr, SPELL_BROKEN_FROSTMOURNE_KNOCK, false);
|
||||
break;
|
||||
case EVENT_OUTRO_SOUL_BARRAGE:
|
||||
if (Creature* theLichKing = ObjectAccessor::GetCreature(*me, _instance->GetData64(DATA_THE_LICH_KING)))
|
||||
if (Creature* theLichKing = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_THE_LICH_KING)))
|
||||
{
|
||||
theLichKing->CastSpell((Unit*)nullptr, SPELL_SOUL_BARRAGE, TRIGGERED_IGNORE_CAST_IN_PROGRESS);
|
||||
sCreatureTextMgr->SendSound(theLichKing, SOUND_PAIN, CHAT_MSG_MONSTER_YELL, 0, TEXT_RANGE_NORMAL, TEAM_NEUTRAL, false);
|
||||
@@ -1573,7 +1573,7 @@ public:
|
||||
{
|
||||
terenas->AI()->Talk(SAY_TERENAS_OUTRO_2);
|
||||
terenas->CastSpell((Unit*)nullptr, SPELL_MASS_RESURRECTION, false);
|
||||
if (Creature* lichKing = ObjectAccessor::GetCreature(*me, _instance->GetData64(DATA_THE_LICH_KING)))
|
||||
if (Creature* lichKing = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_THE_LICH_KING)))
|
||||
{
|
||||
lichKing->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_NPC);
|
||||
me->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_ONESHOT_NONE);
|
||||
@@ -1587,11 +1587,11 @@ public:
|
||||
}
|
||||
break;
|
||||
case EVENT_OUTRO_LK_TALK_7:
|
||||
if (Creature* theLichKing = ObjectAccessor::GetCreature(*me, _instance->GetData64(DATA_THE_LICH_KING)))
|
||||
if (Creature* theLichKing = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_THE_LICH_KING)))
|
||||
theLichKing->AI()->Talk(SAY_LK_OUTRO_7);
|
||||
break;
|
||||
case EVENT_OUTRO_LK_TALK_8:
|
||||
if (Creature* theLichKing = ObjectAccessor::GetCreature(*me, _instance->GetData64(DATA_THE_LICH_KING)))
|
||||
if (Creature* theLichKing = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_THE_LICH_KING)))
|
||||
theLichKing->AI()->Talk(SAY_LK_OUTRO_8);
|
||||
break;
|
||||
case EVENT_OUTRO_FORDRING_TALK_1:
|
||||
@@ -1603,7 +1603,7 @@ public:
|
||||
case EVENT_OUTRO_FORDRING_REMOVE_ICE:
|
||||
me->RemoveAurasDueToSpell(SPELL_ICE_LOCK);
|
||||
SetEquipmentSlots(false, EQUIP_ASHBRINGER_GLOWING);
|
||||
if (Creature* lichKing = ObjectAccessor::GetCreature(*me, _instance->GetData64(DATA_THE_LICH_KING)))
|
||||
if (Creature* lichKing = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_THE_LICH_KING)))
|
||||
{
|
||||
me->SetFacingToObject(lichKing);
|
||||
me->GetMap()->SetZoneMusic(AREA_THE_FROZEN_THRONE, MUSIC_FINAL);
|
||||
@@ -1628,7 +1628,7 @@ public:
|
||||
if (!me->IsAlive())
|
||||
return;
|
||||
|
||||
if (Creature* theLichKing = ObjectAccessor::GetCreature(*me, _instance->GetData64(DATA_THE_LICH_KING)))
|
||||
if (Creature* theLichKing = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_THE_LICH_KING)))
|
||||
if (theLichKing->IsInEvadeMode())
|
||||
{
|
||||
ScriptedAI::EnterEvadeMode();
|
||||
@@ -1671,7 +1671,7 @@ public:
|
||||
|
||||
void FilterTargets(std::list<WorldObject*>& targets)
|
||||
{
|
||||
if (GameObject* platform = ObjectAccessor::GetGameObject(*GetCaster(), GetCaster()->GetInstanceScript()->GetData64(DATA_ARTHAS_PLATFORM)))
|
||||
if (GameObject* platform = ObjectAccessor::GetGameObject(*GetCaster(), GetCaster()->GetInstanceScript()->GetGuidData(DATA_ARTHAS_PLATFORM)))
|
||||
targets.remove_if(HeightDifferenceCheck(platform, 5.0f, false));
|
||||
}
|
||||
|
||||
@@ -2189,12 +2189,12 @@ public:
|
||||
{
|
||||
npc_icc_ice_sphereAI(Creature* creature) : ScriptedAI(creature)
|
||||
{
|
||||
targetGUID = 0;
|
||||
targetGUID.Clear();
|
||||
timer = 250;
|
||||
me->SetReactState(REACT_PASSIVE);
|
||||
}
|
||||
|
||||
uint64 targetGUID;
|
||||
ObjectGuid targetGUID;
|
||||
uint16 timer;
|
||||
|
||||
void DoAction(int32 a) override
|
||||
@@ -2204,7 +2204,7 @@ public:
|
||||
me->RemoveAllAuras();
|
||||
me->CastSpell(me, SPELL_ICE_BURST, true);
|
||||
me->DespawnOrUnsummon(1000);
|
||||
targetGUID = 0;
|
||||
targetGUID.Clear();
|
||||
timer = 9999;
|
||||
me->InterruptNonMeleeSpells(true);
|
||||
me->AttackStop();
|
||||
@@ -2217,7 +2217,7 @@ public:
|
||||
{
|
||||
if (!me->HasAura(SPELL_ICE_SPHERE))
|
||||
me->CastSpell(me, SPELL_ICE_SPHERE, true);
|
||||
targetGUID = 0;
|
||||
targetGUID.Clear();
|
||||
me->InterruptNonMeleeSpells(true);
|
||||
me->AttackStop();
|
||||
me->GetMotionMaster()->Clear();
|
||||
@@ -2325,13 +2325,13 @@ public:
|
||||
void IsSummonedBy(Unit* /*summoner*/) override
|
||||
{
|
||||
// player is the spellcaster so register summon manually
|
||||
if (Creature* lichKing = ObjectAccessor::GetCreature(*me, _instance->GetData64(DATA_THE_LICH_KING)))
|
||||
if (Creature* lichKing = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_THE_LICH_KING)))
|
||||
lichKing->AI()->JustSummoned(me);
|
||||
}
|
||||
|
||||
void JustDied(Unit* /*killer*/) override
|
||||
{
|
||||
if (Creature* lichKing = ObjectAccessor::GetCreature(*me, _instance->GetData64(DATA_THE_LICH_KING)))
|
||||
if (Creature* lichKing = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_THE_LICH_KING)))
|
||||
lichKing->AI()->SummonedCreatureDespawn(me);
|
||||
if (TempSummon* summon = me->ToTempSummon())
|
||||
{
|
||||
@@ -2498,7 +2498,7 @@ public:
|
||||
|
||||
struct npc_valkyr_shadowguardAI : public NullCreatureAI
|
||||
{
|
||||
npc_valkyr_shadowguardAI(Creature* creature) : NullCreatureAI(creature), _grabbedPlayer(0), didbelow50pct(false), dropped(false), _instance(creature->GetInstanceScript())
|
||||
npc_valkyr_shadowguardAI(Creature* creature) : NullCreatureAI(creature), didbelow50pct(false), dropped(false), _instance(creature->GetInstanceScript())
|
||||
{
|
||||
me->SetReactState(REACT_PASSIVE);
|
||||
me->ApplySpellImmune(0, IMMUNITY_STATE, SPELL_AURA_MOD_TAUNT, true);
|
||||
@@ -2510,7 +2510,7 @@ public:
|
||||
|
||||
EventMap _events;
|
||||
Position _destPoint;
|
||||
uint64 _grabbedPlayer;
|
||||
ObjectGuid _grabbedPlayer;
|
||||
bool didbelow50pct;
|
||||
bool dropped;
|
||||
InstanceScript* _instance;
|
||||
@@ -2565,7 +2565,7 @@ public:
|
||||
bool valid = false;
|
||||
if (Player* target = ObjectAccessor::GetPlayer(*me, _grabbedPlayer))
|
||||
if (target->FindMap() == me->GetMap() && target->GetExactDist(me) < 15.0f && !target->GetVehicle())
|
||||
if (GameObject* platform = ObjectAccessor::GetGameObject(*me, _instance->GetData64(DATA_ARTHAS_PLATFORM)))
|
||||
if (GameObject* platform = ObjectAccessor::GetGameObject(*me, _instance->GetGuidData(DATA_ARTHAS_PLATFORM)))
|
||||
{
|
||||
std::list<Creature*> triggers;
|
||||
GetCreatureListWithEntryInGrid(triggers, me, NPC_WORLD_TRIGGER, 150.0f);
|
||||
@@ -2589,7 +2589,7 @@ public:
|
||||
{
|
||||
_events.Reset();
|
||||
_events.ScheduleEvent(EVENT_GRAB_PLAYER, 500);
|
||||
_grabbedPlayer = 0;
|
||||
_grabbedPlayer.Clear();
|
||||
}
|
||||
}
|
||||
break;
|
||||
@@ -2631,7 +2631,7 @@ public:
|
||||
}
|
||||
}
|
||||
|
||||
void SetGUID(uint64 guid, int32 /* = 0*/) override
|
||||
void SetGUID(ObjectGuid guid, int32 /* = 0*/) override
|
||||
{
|
||||
_grabbedPlayer = guid;
|
||||
}
|
||||
@@ -2681,7 +2681,7 @@ public:
|
||||
break;
|
||||
}
|
||||
if (!target)
|
||||
if (Creature* lichKing = ObjectAccessor::GetCreature(*me, _instance->GetData64(DATA_THE_LICH_KING)))
|
||||
if (Creature* lichKing = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_THE_LICH_KING)))
|
||||
target = lichKing->AI()->SelectTarget(SELECT_TARGET_RANDOM, 0, NonTankLKTargetSelector(lichKing, true, false, 100.0f));
|
||||
if (target)
|
||||
me->CastSpell(target, SPELL_LIFE_SIPHON, false);
|
||||
@@ -2804,7 +2804,7 @@ public:
|
||||
targets.remove_if(acore::UnitAuraCheck(true, SPELL_BOSS_HITTIN_YA_AURA)); // done in dbc, but just to be sure xd
|
||||
targets.remove_if(acore::UnitAuraCheck(true, SPELL_HARVEST_SOUL_VALKYR));
|
||||
if (InstanceScript* _instance = caster->GetInstanceScript())
|
||||
if (Creature* lichKing = ObjectAccessor::GetCreature(*caster, _instance->GetData64(DATA_THE_LICH_KING)))
|
||||
if (Creature* lichKing = ObjectAccessor::GetCreature(*caster, _instance->GetGuidData(DATA_THE_LICH_KING)))
|
||||
if (Spell* s = lichKing->GetCurrentSpell(CURRENT_GENERIC_SPELL))
|
||||
if (s->GetSpellInfo()->Id == SPELL_DEFILE && s->m_targets.GetUnitTarget())
|
||||
targets.remove(s->m_targets.GetUnitTarget());
|
||||
@@ -3077,7 +3077,7 @@ public:
|
||||
{
|
||||
// m_originalCaster to allow stacking from different casters, meh
|
||||
if (GetTargetApplication()->GetRemoveMode() == AURA_REMOVE_BY_DEATH)
|
||||
GetTarget()->CastSpell((Unit*)nullptr, SPELL_HARVESTED_SOUL_LK_BUFF, true, nullptr, nullptr, GetTarget()->GetInstanceScript()->GetData64(DATA_THE_LICH_KING));
|
||||
GetTarget()->CastSpell((Unit*)nullptr, SPELL_HARVESTED_SOUL_LK_BUFF, true, nullptr, nullptr, GetTarget()->GetInstanceScript()->GetGuidData(DATA_THE_LICH_KING));
|
||||
}
|
||||
|
||||
void Register() override
|
||||
@@ -3109,7 +3109,7 @@ public:
|
||||
if (!summoner)
|
||||
return;
|
||||
|
||||
if (Creature* lichKing = ObjectAccessor::GetCreature(*me, _instance->GetData64(DATA_THE_LICH_KING)))
|
||||
if (Creature* lichKing = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_THE_LICH_KING)))
|
||||
{
|
||||
me->SetWalk(false);
|
||||
Movement::PointsArray path;
|
||||
@@ -3117,8 +3117,8 @@ public:
|
||||
path.push_back(G3D::Vector3(me->GetPositionX(), me->GetPositionY(), 843.0f));
|
||||
me->GetMotionMaster()->MoveSplinePath(&path);
|
||||
|
||||
uint64 petGUID = summoner->GetPetGUID();
|
||||
summoner->SetPetGUID(0);
|
||||
ObjectGuid petGUID = summoner->GetPetGUID();
|
||||
summoner->SetPetGUID(ObjectGuid::Empty);
|
||||
summoner->StopMoving();
|
||||
me->CastSpell(summoner, SPELL_HARVEST_SOUL_VEHICLE, true);
|
||||
//summoner->ClearUnitState(UNIT_STATE_ONVEHICLE);
|
||||
@@ -3155,24 +3155,24 @@ public:
|
||||
if (summoner->GetTypeId() == TYPEID_PLAYER && !summoner->ToPlayer()->IsBeingTeleported() && summoner->FindMap() == me->GetMap())
|
||||
{
|
||||
if (buff)
|
||||
summoner->CastSpell((Unit*)nullptr, SPELL_HARVESTED_SOUL_LK_BUFF, true, nullptr, nullptr, _instance->GetData64(DATA_THE_LICH_KING));
|
||||
summoner->CastSpell((Unit*)nullptr, SPELL_HARVESTED_SOUL_LK_BUFF, true, nullptr, nullptr, _instance->GetGuidData(DATA_THE_LICH_KING));
|
||||
|
||||
me->CastSpell(summoner, SPELL_HARVEST_SOUL_TELEPORT_BACK, false);
|
||||
}
|
||||
else if (buff)
|
||||
me->CastSpell((Unit*)nullptr, SPELL_HARVESTED_SOUL_LK_BUFF, true, nullptr, nullptr, _instance->GetData64(DATA_THE_LICH_KING));
|
||||
me->CastSpell((Unit*)nullptr, SPELL_HARVESTED_SOUL_LK_BUFF, true, nullptr, nullptr, _instance->GetGuidData(DATA_THE_LICH_KING));
|
||||
|
||||
summoner->RemoveAurasDueToSpell(IsHeroic() ? SPELL_HARVEST_SOULS_TELEPORT : SPELL_HARVEST_SOUL_TELEPORT);
|
||||
}
|
||||
else
|
||||
me->CastSpell((Unit*)nullptr, SPELL_HARVESTED_SOUL_LK_BUFF, true, nullptr, nullptr, _instance->GetData64(DATA_THE_LICH_KING));
|
||||
me->CastSpell((Unit*)nullptr, SPELL_HARVESTED_SOUL_LK_BUFF, true, nullptr, nullptr, _instance->GetGuidData(DATA_THE_LICH_KING));
|
||||
}
|
||||
|
||||
_events.Reset();
|
||||
me->RemoveAllAuras();
|
||||
me->DespawnOrUnsummon(500);
|
||||
|
||||
if (Creature* lichKing = ObjectAccessor::GetCreature(*me, _instance->GetData64(DATA_THE_LICH_KING)))
|
||||
if (Creature* lichKing = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_THE_LICH_KING)))
|
||||
lichKing->AI()->SummonedCreatureDespawn(me);
|
||||
}
|
||||
|
||||
@@ -3207,7 +3207,7 @@ public:
|
||||
}
|
||||
break;
|
||||
case EVENT_MOVE_TO_LICH_KING:
|
||||
if (Creature* lichKing = ObjectAccessor::GetCreature(*me, _instance->GetData64(DATA_THE_LICH_KING)))
|
||||
if (Creature* lichKing = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_THE_LICH_KING)))
|
||||
if (me->GetExactDist(lichKing) > 8.0f)
|
||||
{
|
||||
float dist = float(rand_norm()) * 5.0f + 8.0f;
|
||||
@@ -3219,7 +3219,7 @@ public:
|
||||
}
|
||||
break;
|
||||
case EVENT_DESPAWN_SELF:
|
||||
if (Creature* lichKing = ObjectAccessor::GetCreature(*me, _instance->GetData64(DATA_THE_LICH_KING)))
|
||||
if (Creature* lichKing = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_THE_LICH_KING)))
|
||||
lichKing->AI()->SummonedCreatureDespawn(me);
|
||||
me->DespawnOrUnsummon(1);
|
||||
break;
|
||||
@@ -3333,7 +3333,7 @@ public:
|
||||
_events.ScheduleEvent(EVENT_TELEPORT_BACK, 1000);
|
||||
break;
|
||||
case EVENT_TELEPORT_BACK:
|
||||
if (Creature* lichKing = ObjectAccessor::GetCreature(*me, _instance->GetData64(DATA_THE_LICH_KING)))
|
||||
if (Creature* lichKing = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_THE_LICH_KING)))
|
||||
lichKing->AI()->DoAction(ACTION_TELEPORT_BACK);
|
||||
break;
|
||||
default:
|
||||
@@ -3421,7 +3421,7 @@ public:
|
||||
for (std::list<WorldObject*>::const_iterator itr = unitList.begin(); itr != unitList.end(); ++itr)
|
||||
if (Unit* target = (*itr)->ToUnit())
|
||||
target->RemoveAurasDueToSpell(target->GetMap()->IsHeroic() ? SPELL_HARVEST_SOULS_TELEPORT : SPELL_HARVEST_SOUL_TELEPORT);
|
||||
if (Creature* lichKing = ObjectAccessor::GetCreature(*GetCaster(), _instance->GetData64(DATA_THE_LICH_KING)))
|
||||
if (Creature* lichKing = ObjectAccessor::GetCreature(*GetCaster(), _instance->GetGuidData(DATA_THE_LICH_KING)))
|
||||
lichKing->AI()->DoAction(ACTION_TELEPORT_BACK);
|
||||
if (Creature* spawner = GetCaster()->FindNearestCreature(NPC_WORLD_TRIGGER_INFINITE_AOI, 50.0f, true))
|
||||
{
|
||||
@@ -3474,7 +3474,7 @@ public:
|
||||
|
||||
void JustDied(Unit* /*killer*/) override
|
||||
{
|
||||
if (Creature* terenas = ObjectAccessor::GetCreature(*me, _instance->GetData64(DATA_TERENAS_MENETHIL)))
|
||||
if (Creature* terenas = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_TERENAS_MENETHIL)))
|
||||
terenas->AI()->DoAction(ACTION_TELEPORT_BACK);
|
||||
}
|
||||
|
||||
|
||||
@@ -140,7 +140,7 @@ public:
|
||||
bool operator()(Creature* creature)
|
||||
{
|
||||
return creature->IsAlive() && creature->GetEntry() == NPC_RISEN_ARCHMAGE &&
|
||||
creature->GetDBTableGUIDLow() && !creature->IsInCombat();
|
||||
creature->GetSpawnId() && !creature->IsInCombat();
|
||||
}
|
||||
};
|
||||
|
||||
@@ -159,7 +159,7 @@ struct ManaVoidSelector : public acore::unary_function<Unit*, bool>
|
||||
class DelayedCastEvent : public BasicEvent
|
||||
{
|
||||
public:
|
||||
DelayedCastEvent(Creature* trigger, uint32 spellId, uint64 originalCaster, uint32 despawnTime) : _trigger(trigger), _originalCaster(originalCaster), _spellId(spellId), _despawnTime(despawnTime)
|
||||
DelayedCastEvent(Creature* trigger, uint32 spellId, ObjectGuid originalCaster, uint32 despawnTime) : _trigger(trigger), _originalCaster(originalCaster), _spellId(spellId), _despawnTime(despawnTime)
|
||||
{
|
||||
}
|
||||
|
||||
@@ -173,7 +173,7 @@ public:
|
||||
|
||||
private:
|
||||
Creature* _trigger;
|
||||
uint64 _originalCaster;
|
||||
ObjectGuid _originalCaster;
|
||||
uint32 _spellId;
|
||||
uint32 _despawnTime;
|
||||
};
|
||||
@@ -234,7 +234,7 @@ public:
|
||||
creature->DespawnOrUnsummon();
|
||||
return;
|
||||
case NPC_RISEN_ARCHMAGE:
|
||||
if (!creature->GetDBTableGUIDLow())
|
||||
if (!creature->GetSpawnId())
|
||||
{
|
||||
creature->DespawnOrUnsummon();
|
||||
return;
|
||||
@@ -279,7 +279,7 @@ public:
|
||||
{
|
||||
me->SetReactState(REACT_PASSIVE);
|
||||
_spawnHealth = 1; // just in case if not set below
|
||||
if (CreatureData const* data = sObjectMgr->GetCreatureData(me->GetDBTableGUIDLow()))
|
||||
if (CreatureData const* data = sObjectMgr->GetCreatureData(me->GetSpawnId()))
|
||||
if (data->curhealth)
|
||||
_spawnHealth = data->curhealth;
|
||||
}
|
||||
@@ -338,9 +338,9 @@ public:
|
||||
_events.ScheduleEvent(EVENT_DREAM_SLIP, 3500);
|
||||
_instance->SetBossState(DATA_VALITHRIA_DREAMWALKER, DONE);
|
||||
|
||||
if (Creature* trigger = ObjectAccessor::GetCreature(*me, _instance->GetData64(DATA_VALITHRIA_TRIGGER)))
|
||||
if (Creature* trigger = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_VALITHRIA_TRIGGER)))
|
||||
trigger->AI()->EnterEvadeMode();
|
||||
if (Creature* lichKing = ObjectAccessor::GetCreature(*me, _instance->GetData64(DATA_VALITHRIA_LICH_KING)))
|
||||
if (Creature* lichKing = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_VALITHRIA_LICH_KING)))
|
||||
lichKing->AI()->Reset();
|
||||
}
|
||||
else if (!_over75PercentTalkDone && me->HealthAbovePctHealed(75, heal))
|
||||
@@ -349,7 +349,7 @@ public:
|
||||
Talk(SAY_VALITHRIA_75_PERCENT);
|
||||
}
|
||||
else if (_instance->GetBossState(DATA_VALITHRIA_DREAMWALKER) == NOT_STARTED)
|
||||
if (Creature* trigger = ObjectAccessor::GetCreature(*me, _instance->GetData64(DATA_VALITHRIA_TRIGGER)))
|
||||
if (Creature* trigger = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_VALITHRIA_TRIGGER)))
|
||||
trigger->AI()->DoAction(ACTION_ENTER_COMBAT);
|
||||
}
|
||||
|
||||
@@ -371,7 +371,7 @@ public:
|
||||
_justDied = true;
|
||||
Talk(SAY_VALITHRIA_DEATH);
|
||||
_instance->SendEncounterUnit(ENCOUNTER_FRAME_DISENGAGE, me);
|
||||
if (Creature* trigger = ObjectAccessor::GetCreature(*me, _instance->GetData64(DATA_VALITHRIA_TRIGGER)))
|
||||
if (Creature* trigger = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_VALITHRIA_TRIGGER)))
|
||||
trigger->AI()->EnterEvadeMode();
|
||||
}
|
||||
}
|
||||
@@ -388,7 +388,7 @@ public:
|
||||
me->SetDisplayId(11686);
|
||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
||||
me->DespawnOrUnsummon(4000);
|
||||
if (Creature* lichKing = ObjectAccessor::GetCreature(*me, _instance->GetData64(DATA_VALITHRIA_LICH_KING)))
|
||||
if (Creature* lichKing = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_VALITHRIA_LICH_KING)))
|
||||
lichKing->CastSpell(lichKing, SPELL_SPAWN_CHEST, false);
|
||||
_instance->SetData(DATA_WEEKLY_QUEST_ID, 0); // show hidden npc if necessary
|
||||
}
|
||||
@@ -518,9 +518,9 @@ public:
|
||||
me->setActive(true);
|
||||
me->SetInCombatWithZone();
|
||||
instance->SetBossState(DATA_VALITHRIA_DREAMWALKER, IN_PROGRESS);
|
||||
if (Creature* valithria = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_VALITHRIA_DREAMWALKER)))
|
||||
if (Creature* valithria = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_VALITHRIA_DREAMWALKER)))
|
||||
valithria->AI()->DoAction(ACTION_ENTER_COMBAT);
|
||||
if (Creature* lichKing = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_VALITHRIA_LICH_KING)))
|
||||
if (Creature* lichKing = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_VALITHRIA_LICH_KING)))
|
||||
lichKing->AI()->DoAction(ACTION_ENTER_COMBAT);
|
||||
|
||||
std::list<Creature*> archmages;
|
||||
@@ -712,8 +712,8 @@ public:
|
||||
{
|
||||
me->FinishSpell(CURRENT_CHANNELED_SPELL, false);
|
||||
me->SetInCombatWithZone();
|
||||
if (me->GetDBTableGUIDLow())
|
||||
if (Creature* trigger = ObjectAccessor::GetCreature(*me, _instance->GetData64(DATA_VALITHRIA_TRIGGER)))
|
||||
if (me->GetSpawnId())
|
||||
if (Creature* trigger = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_VALITHRIA_TRIGGER)))
|
||||
trigger->AI()->DoAction(ACTION_ENTER_COMBAT);
|
||||
}
|
||||
|
||||
@@ -726,7 +726,7 @@ public:
|
||||
void JustSummoned(Creature* summon) override
|
||||
{
|
||||
if (summon->GetEntry() == NPC_COLUMN_OF_FROST)
|
||||
summon->m_Events.AddEvent(new DelayedCastEvent(summon, SPELL_COLUMN_OF_FROST_DAMAGE, 0, 8000), summon->m_Events.CalculateTime(2000));
|
||||
summon->m_Events.AddEvent(new DelayedCastEvent(summon, SPELL_COLUMN_OF_FROST_DAMAGE, ObjectGuid::Empty, 8000), summon->m_Events.CalculateTime(2000));
|
||||
else if (summon->GetEntry() == NPC_MANA_VOID)
|
||||
summon->DespawnOrUnsummon(36000);
|
||||
}
|
||||
@@ -734,7 +734,7 @@ public:
|
||||
void UpdateAI(uint32 diff) override
|
||||
{
|
||||
if (!me->IsInCombat())
|
||||
if (me->GetDBTableGUIDLow())
|
||||
if (me->GetSpawnId())
|
||||
if (!me->GetCurrentSpell(CURRENT_CHANNELED_SPELL))
|
||||
me->CastSpell(me, SPELL_CORRUPTION, false);
|
||||
|
||||
@@ -861,7 +861,7 @@ public:
|
||||
me->GetMotionMaster()->Clear(false);
|
||||
me->GetMotionMaster()->MoveIdle();
|
||||
// must use originalCaster the same for all clouds to allow stacking
|
||||
me->CastSpell(me, EMERALD_VIGOR, false, nullptr, nullptr, _instance->GetData64(DATA_VALITHRIA_DREAMWALKER));
|
||||
me->CastSpell(me, EMERALD_VIGOR, false, nullptr, nullptr, _instance->GetGuidData(DATA_VALITHRIA_DREAMWALKER));
|
||||
me->DespawnOrUnsummon(1000);
|
||||
break;
|
||||
default:
|
||||
@@ -959,7 +959,7 @@ public:
|
||||
|
||||
void IsSummonedBy(Unit* /*summoner*/) override
|
||||
{
|
||||
if (Creature* valithria = ObjectAccessor::GetCreature(*me, _instance->GetData64(DATA_VALITHRIA_DREAMWALKER)))
|
||||
if (Creature* valithria = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_VALITHRIA_DREAMWALKER)))
|
||||
AttackStart(valithria);
|
||||
}
|
||||
|
||||
@@ -969,7 +969,7 @@ public:
|
||||
return;
|
||||
|
||||
if (!me->GetVictim())
|
||||
if (Creature* valithria = ObjectAccessor::GetCreature(*me, _instance->GetData64(DATA_VALITHRIA_DREAMWALKER)))
|
||||
if (Creature* valithria = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_VALITHRIA_DREAMWALKER)))
|
||||
if (valithria->IsAlive())
|
||||
AttackStart(valithria);
|
||||
|
||||
@@ -1169,7 +1169,7 @@ public:
|
||||
return;
|
||||
|
||||
if (InstanceScript* instance = GetHitUnit()->GetInstanceScript())
|
||||
GetHitUnit()->CastSpell((Unit*)nullptr, GetSpellInfo()->Effects[effIndex].TriggerSpell, true, nullptr, nullptr, instance->GetData64(DATA_VALITHRIA_DREAMWALKER));
|
||||
GetHitUnit()->CastSpell((Unit*)nullptr, GetSpellInfo()->Effects[effIndex].TriggerSpell, true, nullptr, nullptr, instance->GetGuidData(DATA_VALITHRIA_DREAMWALKER));
|
||||
}
|
||||
|
||||
void Register() override
|
||||
@@ -1326,7 +1326,7 @@ public:
|
||||
if (!GetHitUnit())
|
||||
return;
|
||||
|
||||
GetHitUnit()->CastSpell(GetCaster(), GetSpellInfo()->Effects[effIndex].TriggerSpell, true, nullptr, nullptr, GetCaster()->GetInstanceScript()->GetData64(DATA_VALITHRIA_LICH_KING));
|
||||
GetHitUnit()->CastSpell(GetCaster(), GetSpellInfo()->Effects[effIndex].TriggerSpell, true, nullptr, nullptr, GetCaster()->GetInstanceScript()->GetGuidData(DATA_VALITHRIA_LICH_KING));
|
||||
}
|
||||
|
||||
void Register() override
|
||||
@@ -1410,7 +1410,7 @@ public:
|
||||
if (!GetHitUnit())
|
||||
return;
|
||||
|
||||
GetHitUnit()->CastSpell(GetCaster(), GetSpellInfo()->Effects[effIndex].TriggerSpell, true, nullptr, nullptr, GetCaster()->GetInstanceScript()->GetData64(DATA_VALITHRIA_LICH_KING));
|
||||
GetHitUnit()->CastSpell(GetCaster(), GetSpellInfo()->Effects[effIndex].TriggerSpell, true, nullptr, nullptr, GetCaster()->GetInstanceScript()->GetGuidData(DATA_VALITHRIA_LICH_KING));
|
||||
}
|
||||
|
||||
void Register() override
|
||||
|
||||
@@ -367,9 +367,9 @@ public:
|
||||
void Reset() override
|
||||
{
|
||||
_events.Reset();
|
||||
_theLichKing = 0;
|
||||
_bolvarFordragon = 0;
|
||||
_factionNPC = 0;
|
||||
_theLichKing.Clear();
|
||||
_bolvarFordragon.Clear();
|
||||
_factionNPC.Clear();
|
||||
_damnedKills = 0;
|
||||
}
|
||||
|
||||
@@ -517,7 +517,7 @@ public:
|
||||
case EVENT_SAURFANG_RUN:
|
||||
if (Creature* factionNPC = ObjectAccessor::GetCreature(*me, _factionNPC))
|
||||
{
|
||||
factionNPC->GetMotionMaster()->MovePath(factionNPC->GetDBTableGUIDLow() * 10, false);
|
||||
factionNPC->GetMotionMaster()->MovePath(factionNPC->GetSpawnId() * 10, false);
|
||||
factionNPC->DespawnOrUnsummon(46500);
|
||||
std::list<Creature*> followers;
|
||||
factionNPC->GetCreaturesWithEntryInRange(followers, 30, _instance->GetData(DATA_TEAMID_IN_INSTANCE) == TEAM_HORDE ? NPC_KOR_KRON_GENERAL : NPC_ALLIANCE_COMMANDER);
|
||||
@@ -561,9 +561,9 @@ public:
|
||||
private:
|
||||
EventMap _events;
|
||||
InstanceScript* const _instance;
|
||||
uint64 _theLichKing;
|
||||
uint64 _bolvarFordragon;
|
||||
uint64 _factionNPC;
|
||||
ObjectGuid _theLichKing;
|
||||
ObjectGuid _bolvarFordragon;
|
||||
ObjectGuid _factionNPC;
|
||||
uint16 _damnedKills;
|
||||
};
|
||||
|
||||
@@ -733,10 +733,10 @@ public:
|
||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_IMMUNE_TO_NPC | UNIT_FLAG_IMMUNE_TO_PC);
|
||||
// Load Grid with Sister Svalna
|
||||
me->GetMap()->LoadGrid(4356.71f, 2484.33f);
|
||||
if (Creature* svalna = ObjectAccessor::GetCreature(*me, _instance->GetData64(DATA_SISTER_SVALNA)))
|
||||
if (Creature* svalna = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_SISTER_SVALNA)))
|
||||
svalna->AI()->DoAction(ACTION_START_GAUNTLET);
|
||||
for (uint32 i = 0; i < 4; ++i)
|
||||
if (Creature* crusader = ObjectAccessor::GetCreature(*me, _instance->GetData64(DATA_CAPTAIN_ARNATH + i)))
|
||||
if (Creature* crusader = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_CAPTAIN_ARNATH + i)))
|
||||
crusader->AI()->DoAction(ACTION_START_GAUNTLET);
|
||||
|
||||
Talk(SAY_CROK_INTRO_1);
|
||||
@@ -757,7 +757,7 @@ public:
|
||||
}
|
||||
}
|
||||
|
||||
void SetGUID(uint64 guid, int32 type/* = 0*/) override
|
||||
void SetGUID(ObjectGuid guid, int32 type/* = 0*/) override
|
||||
{
|
||||
if (type == ACTION_VRYKUL_DEATH)
|
||||
{
|
||||
@@ -769,7 +769,7 @@ public:
|
||||
{
|
||||
_handledWP4 = true;
|
||||
Talk(SAY_CROK_FINAL_WP);
|
||||
if (Creature* svalna = ObjectAccessor::GetCreature(*me, _instance->GetData64(DATA_SISTER_SVALNA)))
|
||||
if (Creature* svalna = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_SISTER_SVALNA)))
|
||||
svalna->AI()->DoAction(ACTION_RESURRECT_CAPTAINS);
|
||||
}
|
||||
}
|
||||
@@ -800,7 +800,7 @@ public:
|
||||
{
|
||||
_handledWP4 = true;
|
||||
Talk(SAY_CROK_FINAL_WP);
|
||||
if (Creature* svalna = ObjectAccessor::GetCreature(*me, _instance->GetData64(DATA_SISTER_SVALNA)))
|
||||
if (Creature* svalna = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_SISTER_SVALNA)))
|
||||
svalna->AI()->DoAction(ACTION_RESURRECT_CAPTAINS);
|
||||
}
|
||||
break;
|
||||
@@ -820,12 +820,12 @@ public:
|
||||
break;
|
||||
case 1:
|
||||
minY = 2550.0f;
|
||||
if (Creature* svalna = ObjectAccessor::GetCreature(*me, _instance->GetData64(DATA_SISTER_SVALNA)))
|
||||
if (Creature* svalna = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_SISTER_SVALNA)))
|
||||
svalna->AI()->DoAction(ACTION_KILL_CAPTAIN);
|
||||
break;
|
||||
case 2:
|
||||
minY = 2515.0f;
|
||||
if (Creature* svalna = ObjectAccessor::GetCreature(*me, _instance->GetData64(DATA_SISTER_SVALNA)))
|
||||
if (Creature* svalna = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_SISTER_SVALNA)))
|
||||
svalna->AI()->DoAction(ACTION_KILL_CAPTAIN);
|
||||
break;
|
||||
case 4:
|
||||
@@ -910,7 +910,7 @@ public:
|
||||
switch (_events.ExecuteEvent())
|
||||
{
|
||||
case EVENT_ARNATH_INTRO_2:
|
||||
if (Creature* arnath = ObjectAccessor::GetCreature(*me, _instance->GetData64(DATA_CAPTAIN_ARNATH)))
|
||||
if (Creature* arnath = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_CAPTAIN_ARNATH)))
|
||||
arnath->AI()->Talk(SAY_ARNATH_INTRO_2);
|
||||
break;
|
||||
case EVENT_CROK_INTRO_3:
|
||||
@@ -956,7 +956,7 @@ public:
|
||||
|
||||
private:
|
||||
EventMap _events;
|
||||
std::set<uint64> _aliveTrash;
|
||||
GuidSet _aliveTrash;
|
||||
InstanceScript* _instance;
|
||||
uint32 _currentWPid;
|
||||
uint32 _wipeCheckTimer;
|
||||
@@ -1004,12 +1004,12 @@ public:
|
||||
_JustDied();
|
||||
Talk(SAY_SVALNA_DEATH);
|
||||
|
||||
if (Creature* crok = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_CROK_SCOURGEBANE))) // _isEventDone = true, setActive(false)
|
||||
if (Creature* crok = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_CROK_SCOURGEBANE))) // _isEventDone = true, setActive(false)
|
||||
crok->AI()->DoAction(ACTION_RESET_EVENT);
|
||||
|
||||
uint64 delay = 6000;
|
||||
for (uint32 i = 0; i < 4; ++i)
|
||||
if (Creature* crusader = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_CAPTAIN_ARNATH + i)))
|
||||
if (Creature* crusader = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_CAPTAIN_ARNATH + i)))
|
||||
if (crusader->IsAlive())
|
||||
{
|
||||
if (crusader->GetEntry() == crusader->GetCreatureData()->id)
|
||||
@@ -1033,7 +1033,7 @@ public:
|
||||
}
|
||||
_EnterCombat();
|
||||
me->LowerPlayerDamageReq(me->GetMaxHealth());
|
||||
if (Creature* crok = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_CROK_SCOURGEBANE)))
|
||||
if (Creature* crok = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_CROK_SCOURGEBANE)))
|
||||
{
|
||||
crok->AI()->Talk(SAY_CROK_COMBAT_SVALNA);
|
||||
crok->AI()->AttackStart(me);
|
||||
@@ -1217,7 +1217,7 @@ public:
|
||||
{
|
||||
if (action == ACTION_START_GAUNTLET)
|
||||
{
|
||||
if (Creature* crok = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_CROK_SCOURGEBANE)))
|
||||
if (Creature* crok = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_CROK_SCOURGEBANE)))
|
||||
{
|
||||
FollowAngle = me->GetAngle(crok) + me->GetOrientation();
|
||||
FollowDist = me->GetDistance2d(crok);
|
||||
@@ -1244,7 +1244,7 @@ public:
|
||||
return;
|
||||
|
||||
me->GetMotionMaster()->Clear(false);
|
||||
if (Creature* crok = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_CROK_SCOURGEBANE)))
|
||||
if (Creature* crok = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_CROK_SCOURGEBANE)))
|
||||
me->GetMotionMaster()->MoveFollow(crok, FollowDist, FollowAngle, MOTION_SLOT_IDLE);
|
||||
else
|
||||
me->GetMotionMaster()->MoveTargetedHome();
|
||||
@@ -2327,7 +2327,7 @@ public:
|
||||
{
|
||||
if (InstanceScript* instance = player->GetInstanceScript())
|
||||
if (instance->GetBossState(DATA_SISTER_SVALNA) != DONE)
|
||||
if (Creature* crok = ObjectAccessor::GetCreature(*player, instance->GetData64(DATA_CROK_SCOURGEBANE)))
|
||||
if (Creature* crok = ObjectAccessor::GetCreature(*player, instance->GetGuidData(DATA_CROK_SCOURGEBANE)))
|
||||
{
|
||||
if (!crok->IsAlive())
|
||||
{
|
||||
@@ -3712,7 +3712,7 @@ public:
|
||||
{
|
||||
if (InstanceScript* instance = player->GetInstanceScript())
|
||||
if (instance->GetBossState(DATA_SINDRAGOSA_GAUNTLET) == NOT_STARTED && !player->IsGameMaster())
|
||||
if (Creature* gauntlet = ObjectAccessor::GetCreature(*player, instance->GetData64(NPC_SINDRAGOSA_GAUNTLET)))
|
||||
if (Creature* gauntlet = ObjectAccessor::GetCreature(*player, instance->GetGuidData(NPC_SINDRAGOSA_GAUNTLET)))
|
||||
gauntlet->AI()->DoAction(ACTION_START_GAUNTLET);
|
||||
return true;
|
||||
}
|
||||
@@ -3727,7 +3727,7 @@ public:
|
||||
{
|
||||
if (InstanceScript* instance = player->GetInstanceScript())
|
||||
if (instance->GetData(DATA_PUTRICIDE_TRAP_STATE) == NOT_STARTED && !player->IsGameMaster())
|
||||
if (Creature* trap = ObjectAccessor::GetCreature(*player, instance->GetData64(NPC_PUTRICADES_TRAP)))
|
||||
if (Creature* trap = ObjectAccessor::GetCreature(*player, instance->GetGuidData(NPC_PUTRICADES_TRAP)))
|
||||
trap->AI()->DoAction(ACTION_START_GAUNTLET);
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -160,63 +160,15 @@ public:
|
||||
// pussywizard:
|
||||
IsBuffAvailable = true;
|
||||
WeeklyQuestId10 = 0;
|
||||
PutricideEnteranceDoorGUID = 0;
|
||||
GasReleaseValveGUID = 0;
|
||||
OozeReleaseValveGUID = 0;
|
||||
PutricideEventProgress = 0;
|
||||
LichKingHeroicAvailable = true;
|
||||
LichKingRandomWhisperTimer = 120 * IN_MILLISECONDS;
|
||||
DarkwhisperElevatorTimer = 3000;
|
||||
memset(&WeeklyQuestNpcGUID, 0, sizeof(WeeklyQuestNpcGUID));
|
||||
ScourgeTransporterFirstGUID = 0;
|
||||
|
||||
SetBossNumber(MAX_ENCOUNTERS);
|
||||
LoadDoorData(doorData);
|
||||
TeamIdInInstance = TEAM_NEUTRAL;
|
||||
HeroicAttempts = MaxHeroicAttempts;
|
||||
LadyDeathwhisperGUID = 0;
|
||||
LadyDeathwisperElevatorGUID = 0;
|
||||
GunshipGUID = 0;
|
||||
EnemyGunshipGUID = 0;
|
||||
GunshipArmoryGUID = 0;
|
||||
DeathbringerSaurfangGUID = 0;
|
||||
DeathbringerSaurfangDoorGUID = 0;
|
||||
DeathbringerSaurfangEventGUID = 0;
|
||||
DeathbringersCacheGUID = 0;
|
||||
SaurfangTeleportGUID = 0;
|
||||
PlagueSigilGUID = 0;
|
||||
BloodwingSigilGUID = 0;
|
||||
FrostwingSigilGUID = 0;
|
||||
memset(PutricidePipeGUIDs, 0, 2 * sizeof(uint64));
|
||||
memset(PutricideGateGUIDs, 0, 2 * sizeof(uint64));
|
||||
PutricideCollisionGUID = 0;
|
||||
FestergutGUID = 0;
|
||||
RotfaceGUID = 0;
|
||||
ProfessorPutricideGUID = 0;
|
||||
PutricideTableGUID = 0;
|
||||
memset(BloodCouncilGUIDs, 0, 3 * sizeof(uint64));
|
||||
BloodCouncilControllerGUID = 0;
|
||||
BloodQueenLanaThelGUID = 0;
|
||||
CrokScourgebaneGUID = 0;
|
||||
memset(CrokCaptainGUIDs, 0, 4 * sizeof(uint64));
|
||||
SisterSvalnaGUID = 0;
|
||||
ValithriaDreamwalkerGUID = 0;
|
||||
ValithriaLichKingGUID = 0;
|
||||
ValithriaTriggerGUID = 0;
|
||||
PutricadeTrapGUID = 0;
|
||||
SindragosaGauntletGUID = 0;
|
||||
SindragosaGUID = 0;
|
||||
SpinestalkerGUID = 0;
|
||||
RimefangGUID = 0;
|
||||
TheLichKingTeleportGUID = 0;
|
||||
TheLichKingGUID = 0;
|
||||
HighlordTirionFordringGUID = 0;
|
||||
TerenasMenethilGUID = 0;
|
||||
ArthasPlatformGUID = 0;
|
||||
ArthasPrecipiceGUID = 0;
|
||||
FrozenThroneEdgeGUID = 0;
|
||||
FrozenThroneWindGUID = 0;
|
||||
FrozenThroneWarningGUID = 0;
|
||||
IsBonedEligible = true;
|
||||
IsOozeDanceEligible = true;
|
||||
IsNauseaEligible = true;
|
||||
@@ -279,7 +231,7 @@ public:
|
||||
}
|
||||
|
||||
// apply ICC buff to pets/summons
|
||||
if (GetData(DATA_BUFF_AVAILABLE) && IS_PLAYER_GUID(creature->GetOwnerGUID()) && creature->HasUnitTypeMask(UNIT_MASK_MINION | UNIT_MASK_GUARDIAN | UNIT_MASK_CONTROLABLE_GUARDIAN) && creature->CanHaveThreatList())
|
||||
if (GetData(DATA_BUFF_AVAILABLE) && creature->GetOwnerGUID().IsPlayer() && creature->HasUnitTypeMask(UNIT_MASK_MINION | UNIT_MASK_GUARDIAN | UNIT_MASK_CONTROLABLE_GUARDIAN) && creature->CanHaveThreatList())
|
||||
if (Unit* owner = creature->GetOwner())
|
||||
if (Player* plr = owner->ToPlayer())
|
||||
{
|
||||
@@ -512,10 +464,10 @@ public:
|
||||
void OnCreatureRemove(Creature* creature) override
|
||||
{
|
||||
if (creature->GetEntry() == NPC_SINDRAGOSA)
|
||||
SindragosaGUID = 0;
|
||||
SindragosaGUID.Clear();
|
||||
}
|
||||
|
||||
uint32 GetCreatureEntry(uint32 /*guidLow*/, CreatureData const* data) override
|
||||
uint32 GetCreatureEntry(ObjectGuid::LowType /*guidLow*/, CreatureData const* data) override
|
||||
{
|
||||
if (TeamIdInInstance == TEAM_NEUTRAL)
|
||||
{
|
||||
@@ -560,7 +512,7 @@ public:
|
||||
return entry;
|
||||
}
|
||||
|
||||
uint32 GetGameObjectEntry(uint32 /*guidLow*/, uint32 entry) override
|
||||
uint32 GetGameObjectEntry(ObjectGuid::LowType /*guidLow*/, uint32 entry) override
|
||||
{
|
||||
if (TeamIdInInstance == TEAM_NEUTRAL)
|
||||
{
|
||||
@@ -620,14 +572,14 @@ public:
|
||||
|
||||
if (creature->AI()->GetData(1/*DATA_FROSTWYRM_OWNER*/) == DATA_SPINESTALKER)
|
||||
{
|
||||
SpinestalkerTrash.erase(creature->GetDBTableGUIDLow());
|
||||
SpinestalkerTrash.erase(creature->GetSpawnId());
|
||||
if (SpinestalkerTrash.empty())
|
||||
if (Creature* spinestalk = instance->GetCreature(SpinestalkerGUID))
|
||||
spinestalk->AI()->DoAction(ACTION_START_FROSTWYRM);
|
||||
}
|
||||
else
|
||||
{
|
||||
RimefangTrash.erase(creature->GetDBTableGUIDLow());
|
||||
RimefangTrash.erase(creature->GetSpawnId());
|
||||
if (RimefangTrash.empty())
|
||||
if (Creature* spinestalk = instance->GetCreature(RimefangGUID))
|
||||
spinestalk->AI()->DoAction(ACTION_START_FROSTWYRM);
|
||||
@@ -642,7 +594,7 @@ public:
|
||||
if (GetBossState(DATA_SINDRAGOSA) == DONE)
|
||||
return;
|
||||
|
||||
FrostwyrmGUIDs.erase(creature->GetDBTableGUIDLow());
|
||||
FrostwyrmGUIDs.erase(creature->GetSpawnId());
|
||||
if (FrostwyrmGUIDs.empty())
|
||||
{
|
||||
instance->LoadGrid(SindragosaSpawnPos.GetPositionX(), SindragosaSpawnPos.GetPositionY());
|
||||
@@ -893,7 +845,7 @@ public:
|
||||
break;
|
||||
case GO_THE_SKYBREAKER_A:
|
||||
case GO_ORGRIMS_HAMMER_H:
|
||||
GunshipGUID = 0;
|
||||
GunshipGUID.Clear();
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
@@ -941,7 +893,7 @@ public:
|
||||
return 0;
|
||||
}
|
||||
|
||||
uint64 GetData64(uint32 type) const override
|
||||
ObjectGuid GetGuidData(uint32 type) const override
|
||||
{
|
||||
switch (type)
|
||||
{
|
||||
@@ -1014,7 +966,7 @@ public:
|
||||
break;
|
||||
}
|
||||
|
||||
return 0;
|
||||
return ObjectGuid::Empty;
|
||||
}
|
||||
|
||||
void HandleDropAttempt(bool drop = true)
|
||||
@@ -1681,7 +1633,7 @@ public:
|
||||
uint8 id = urand(0, 15);
|
||||
std::string const& text = sCreatureTextMgr->GetLocalizedChatString(NPC_THE_LICH_KING_LH, 0, 20 + id, 0, LOCALE_enUS);
|
||||
WorldPacket data;
|
||||
ChatHandler::BuildChatPacket(data, CHAT_MSG_MONSTER_WHISPER, LANG_UNIVERSAL, 0, player->GetGUID(), text, CHAT_TAG_NONE, "The Lich King");
|
||||
ChatHandler::BuildChatPacket(data, CHAT_MSG_MONSTER_WHISPER, LANG_UNIVERSAL, ObjectGuid::Empty, player->GetGUID(), text, CHAT_TAG_NONE, "The Lich King");
|
||||
player->SendPlaySound(17235 + id, true);
|
||||
player->SendDirectMessage(&data);
|
||||
}
|
||||
@@ -1900,68 +1852,68 @@ public:
|
||||
// pussywizard:
|
||||
bool IsBuffAvailable;
|
||||
uint32 WeeklyQuestId10; // contains id from 10man for any difficulty (for simplicity)
|
||||
uint64 WeeklyQuestNpcGUID[WeeklyNPCs];
|
||||
uint64 PutricideEnteranceDoorGUID;
|
||||
ObjectGuid WeeklyQuestNpcGUID[WeeklyNPCs];
|
||||
ObjectGuid PutricideEnteranceDoorGUID;
|
||||
uint32 PutricideEventProgress;
|
||||
uint64 GasReleaseValveGUID;
|
||||
uint64 OozeReleaseValveGUID;
|
||||
ObjectGuid GasReleaseValveGUID;
|
||||
ObjectGuid OozeReleaseValveGUID;
|
||||
bool LichKingHeroicAvailable;
|
||||
uint32 LichKingRandomWhisperTimer;
|
||||
uint32 DarkwhisperElevatorTimer;
|
||||
uint64 ScourgeTransporterFirstGUID;
|
||||
ObjectGuid ScourgeTransporterFirstGUID;
|
||||
|
||||
EventMap Events;
|
||||
uint64 LadyDeathwhisperGUID;
|
||||
uint64 LadyDeathwisperElevatorGUID;
|
||||
uint64 GunshipGUID;
|
||||
uint64 EnemyGunshipGUID;
|
||||
uint64 GunshipArmoryGUID;
|
||||
uint64 DeathbringerSaurfangGUID;
|
||||
uint64 DeathbringerSaurfangDoorGUID;
|
||||
uint64 DeathbringerSaurfangEventGUID; // Muradin Bronzebeard or High Overlord Saurfang
|
||||
uint64 DeathbringersCacheGUID;
|
||||
uint64 SaurfangTeleportGUID;
|
||||
uint64 PlagueSigilGUID;
|
||||
uint64 BloodwingSigilGUID;
|
||||
uint64 FrostwingSigilGUID;
|
||||
uint64 PutricidePipeGUIDs[2];
|
||||
uint64 PutricideGateGUIDs[2];
|
||||
uint64 PutricideCollisionGUID;
|
||||
uint64 FestergutGUID;
|
||||
uint64 RotfaceGUID;
|
||||
uint64 ProfessorPutricideGUID;
|
||||
uint64 PutricideTableGUID;
|
||||
uint64 BloodCouncilGUIDs[3];
|
||||
uint64 BloodCouncilControllerGUID;
|
||||
uint64 BloodQueenLanaThelGUID;
|
||||
uint64 CrokScourgebaneGUID;
|
||||
uint64 CrokCaptainGUIDs[4];
|
||||
uint64 SisterSvalnaGUID;
|
||||
uint64 ValithriaDreamwalkerGUID;
|
||||
uint64 ValithriaLichKingGUID;
|
||||
uint64 ValithriaTriggerGUID;
|
||||
uint64 PutricadeTrapGUID;
|
||||
uint64 SindragosaGauntletGUID;
|
||||
uint64 SindragosaGUID;
|
||||
uint64 SpinestalkerGUID;
|
||||
uint64 RimefangGUID;
|
||||
uint64 TheLichKingTeleportGUID;
|
||||
uint64 TheLichKingGUID;
|
||||
uint64 HighlordTirionFordringGUID;
|
||||
uint64 TerenasMenethilGUID;
|
||||
uint64 ArthasPlatformGUID;
|
||||
uint64 ArthasPrecipiceGUID;
|
||||
uint64 FrozenThroneEdgeGUID;
|
||||
uint64 FrozenThroneWindGUID;
|
||||
uint64 FrozenThroneWarningGUID;
|
||||
uint64 FrozenBolvarGUID;
|
||||
uint64 PillarsChainedGUID;
|
||||
uint64 PillarsUnchainedGUID;
|
||||
ObjectGuid LadyDeathwhisperGUID;
|
||||
ObjectGuid LadyDeathwisperElevatorGUID;
|
||||
ObjectGuid GunshipGUID;
|
||||
ObjectGuid EnemyGunshipGUID;
|
||||
ObjectGuid GunshipArmoryGUID;
|
||||
ObjectGuid DeathbringerSaurfangGUID;
|
||||
ObjectGuid DeathbringerSaurfangDoorGUID;
|
||||
ObjectGuid DeathbringerSaurfangEventGUID; // Muradin Bronzebeard or High Overlord Saurfang
|
||||
ObjectGuid DeathbringersCacheGUID;
|
||||
ObjectGuid SaurfangTeleportGUID;
|
||||
ObjectGuid PlagueSigilGUID;
|
||||
ObjectGuid BloodwingSigilGUID;
|
||||
ObjectGuid FrostwingSigilGUID;
|
||||
ObjectGuid PutricidePipeGUIDs[2];
|
||||
ObjectGuid PutricideGateGUIDs[2];
|
||||
ObjectGuid PutricideCollisionGUID;
|
||||
ObjectGuid FestergutGUID;
|
||||
ObjectGuid RotfaceGUID;
|
||||
ObjectGuid ProfessorPutricideGUID;
|
||||
ObjectGuid PutricideTableGUID;
|
||||
ObjectGuid BloodCouncilGUIDs[3];
|
||||
ObjectGuid BloodCouncilControllerGUID;
|
||||
ObjectGuid BloodQueenLanaThelGUID;
|
||||
ObjectGuid CrokScourgebaneGUID;
|
||||
ObjectGuid CrokCaptainGUIDs[4];
|
||||
ObjectGuid SisterSvalnaGUID;
|
||||
ObjectGuid ValithriaDreamwalkerGUID;
|
||||
ObjectGuid ValithriaLichKingGUID;
|
||||
ObjectGuid ValithriaTriggerGUID;
|
||||
ObjectGuid PutricadeTrapGUID;
|
||||
ObjectGuid SindragosaGauntletGUID;
|
||||
ObjectGuid SindragosaGUID;
|
||||
ObjectGuid SpinestalkerGUID;
|
||||
ObjectGuid RimefangGUID;
|
||||
ObjectGuid TheLichKingTeleportGUID;
|
||||
ObjectGuid TheLichKingGUID;
|
||||
ObjectGuid HighlordTirionFordringGUID;
|
||||
ObjectGuid TerenasMenethilGUID;
|
||||
ObjectGuid ArthasPlatformGUID;
|
||||
ObjectGuid ArthasPrecipiceGUID;
|
||||
ObjectGuid FrozenThroneEdgeGUID;
|
||||
ObjectGuid FrozenThroneWindGUID;
|
||||
ObjectGuid FrozenThroneWarningGUID;
|
||||
ObjectGuid FrozenBolvarGUID;
|
||||
ObjectGuid PillarsChainedGUID;
|
||||
ObjectGuid PillarsUnchainedGUID;
|
||||
TeamId TeamIdInInstance;
|
||||
uint32 ColdflameJetsState;
|
||||
std::set<uint32> FrostwyrmGUIDs;
|
||||
std::set<uint32> SpinestalkerTrash;
|
||||
std::set<uint32> RimefangTrash;
|
||||
std::set<ObjectGuid::LowType> FrostwyrmGUIDs;
|
||||
std::set<ObjectGuid::LowType> SpinestalkerTrash;
|
||||
std::set<ObjectGuid::LowType> RimefangTrash;
|
||||
uint32 BloodQuickeningState;
|
||||
uint32 HeroicAttempts;
|
||||
uint16 BloodQuickeningMinutes;
|
||||
|
||||
Reference in New Issue
Block a user