*code cleanup
*totally destroyed m_creature, use "me" for future coding --HG-- branch : trunk
This commit is contained in:
@@ -66,8 +66,8 @@ struct boss_amanitarAI : public ScriptedAI
|
||||
uiBoltTimer = urand(15*IN_MILISECONDS,30*IN_MILISECONDS);
|
||||
uiSpawnTimer = 0;
|
||||
|
||||
m_creature->SetMeleeDamageSchool(SPELL_SCHOOL_NATURE);
|
||||
m_creature->ApplySpellImmune(0, IMMUNITY_SCHOOL, SPELL_SCHOOL_MASK_NATURE, true);
|
||||
me->SetMeleeDamageSchool(SPELL_SCHOOL_NATURE);
|
||||
me->ApplySpellImmune(0, IMMUNITY_SCHOOL, SPELL_SCHOOL_MASK_NATURE, true);
|
||||
|
||||
if (pInstance)
|
||||
{
|
||||
@@ -93,7 +93,7 @@ struct boss_amanitarAI : public ScriptedAI
|
||||
if (pInstance)
|
||||
pInstance->SetData(DATA_AMANITAR_EVENT, IN_PROGRESS);
|
||||
|
||||
DoCast(m_creature, SPELL_MINI, false);
|
||||
DoCast(me, SPELL_MINI, false);
|
||||
}
|
||||
|
||||
void SpawnAdds()
|
||||
@@ -106,10 +106,10 @@ struct boss_amanitarAI : public ScriptedAI
|
||||
{
|
||||
Position pos;
|
||||
victim->GetPosition(&pos);
|
||||
m_creature->GetRandomNearPosition(pos, float(urand(5,80)));
|
||||
m_creature->SummonCreature(NPC_POISONOUS_MUSHROOM, pos, TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN, 30*IN_MILISECONDS);
|
||||
m_creature->GetRandomNearPosition(pos, float(urand(5,80)));
|
||||
m_creature->SummonCreature(NPC_HEALTHY_MUSHROOM, pos, TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN, 30*IN_MILISECONDS);
|
||||
me->GetRandomNearPosition(pos, float(urand(5,80)));
|
||||
me->SummonCreature(NPC_POISONOUS_MUSHROOM, pos, TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN, 30*IN_MILISECONDS);
|
||||
me->GetRandomNearPosition(pos, float(urand(5,80)));
|
||||
me->SummonCreature(NPC_HEALTHY_MUSHROOM, pos, TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN, 30*IN_MILISECONDS);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -159,10 +159,10 @@ struct mob_amanitar_mushroomsAI : public Scripted_NoMovementAI
|
||||
|
||||
void Reset()
|
||||
{
|
||||
DoCast(m_creature, SPELL_PUTRID_MUSHROOM, true); // Hack, to make the mushrooms visible, can't find orig. spell...
|
||||
DoCast(me, SPELL_PUTRID_MUSHROOM, true); // Hack, to make the mushrooms visible, can't find orig. spell...
|
||||
|
||||
if (m_creature->GetEntry() == NPC_POISONOUS_MUSHROOM)
|
||||
DoCast(m_creature, SPELL_POISONOUS_MUSHROOM_VISUAL_AURA, true);
|
||||
if (me->GetEntry() == NPC_POISONOUS_MUSHROOM)
|
||||
DoCast(me, SPELL_POISONOUS_MUSHROOM_VISUAL_AURA, true);
|
||||
|
||||
uiAuraTimer = 0;
|
||||
uiDeathTimer = 30*IN_MILISECONDS;
|
||||
@@ -173,9 +173,9 @@ struct mob_amanitar_mushroomsAI : public Scripted_NoMovementAI
|
||||
if (!killer)
|
||||
return;
|
||||
|
||||
if (m_creature->GetEntry() == NPC_HEALTHY_MUSHROOM && killer->GetTypeId() == TYPEID_PLAYER)
|
||||
if (me->GetEntry() == NPC_HEALTHY_MUSHROOM && killer->GetTypeId() == TYPEID_PLAYER)
|
||||
{
|
||||
m_creature->InterruptNonMeleeSpells(false);
|
||||
me->InterruptNonMeleeSpells(false);
|
||||
DoCast(killer, SPELL_HEALTHY_MUSHROOM_POTENT_FUNGUS, false);
|
||||
}
|
||||
}
|
||||
@@ -185,17 +185,17 @@ struct mob_amanitar_mushroomsAI : public Scripted_NoMovementAI
|
||||
|
||||
void UpdateAI(const uint32 diff)
|
||||
{
|
||||
if (m_creature->GetEntry() == NPC_POISONOUS_MUSHROOM)
|
||||
if (me->GetEntry() == NPC_POISONOUS_MUSHROOM)
|
||||
{
|
||||
if (uiAuraTimer <= diff)
|
||||
{
|
||||
DoCast(m_creature, SPELL_POISONOUS_MUSHROOM_VISUAL_AREA, true);
|
||||
DoCast(m_creature, SPELL_POISONOUS_MUSHROOM_POISON_CLOUD, false);
|
||||
DoCast(me, SPELL_POISONOUS_MUSHROOM_VISUAL_AREA, true);
|
||||
DoCast(me, SPELL_POISONOUS_MUSHROOM_POISON_CLOUD, false);
|
||||
uiAuraTimer = 7*IN_MILISECONDS;
|
||||
} else uiAuraTimer -= diff;
|
||||
}
|
||||
if (uiDeathTimer <= diff)
|
||||
m_creature->DisappearAndDie();
|
||||
me->DisappearAndDie();
|
||||
else uiDeathTimer -= diff;
|
||||
}
|
||||
};
|
||||
|
||||
@@ -93,7 +93,7 @@ struct boss_elder_nadoxAI : public ScriptedAI
|
||||
|
||||
void EnterCombat(Unit *who)
|
||||
{
|
||||
DoScriptText(SAY_DEATH,m_creature);
|
||||
DoScriptText(SAY_DEATH,me);
|
||||
|
||||
if (pInstance)
|
||||
pInstance->SetData(DATA_ELDER_NADOX_EVENT, IN_PROGRESS);
|
||||
@@ -101,12 +101,12 @@ struct boss_elder_nadoxAI : public ScriptedAI
|
||||
|
||||
void KilledUnit(Unit *victim)
|
||||
{
|
||||
DoScriptText(RAND(SAY_SLAY_1,SAY_SLAY_2,SAY_SLAY_3), m_creature);
|
||||
DoScriptText(RAND(SAY_SLAY_1,SAY_SLAY_2,SAY_SLAY_3), me);
|
||||
}
|
||||
|
||||
void JustDied(Unit* killer)
|
||||
{
|
||||
DoScriptText(SAY_SLAY_3,m_creature); //SAY_SLAY_3 on death?
|
||||
DoScriptText(SAY_SLAY_3,me); //SAY_SLAY_3 on death?
|
||||
|
||||
if (pInstance)
|
||||
{
|
||||
@@ -123,14 +123,14 @@ struct boss_elder_nadoxAI : public ScriptedAI
|
||||
|
||||
if (uiPlagueTimer <= diff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(), SPELL_BROOD_PLAGUE);
|
||||
DoCast(me->getVictim(), SPELL_BROOD_PLAGUE);
|
||||
uiPlagueTimer = 15*IN_MILISECONDS;
|
||||
} else uiPlagueTimer -= diff;
|
||||
|
||||
if (IsHeroic())
|
||||
if (uiRagueTimer <= diff)
|
||||
{
|
||||
if (Creature *pSwarmer = m_creature->FindNearestCreature(MOB_AHNKAHAR_SWARMER, 35))
|
||||
if (Creature *pSwarmer = me->FindNearestCreature(MOB_AHNKAHAR_SWARMER, 35))
|
||||
{
|
||||
DoCast(pSwarmer, H_SPELL_BROOD_RAGE, true);
|
||||
uiRagueTimer = 15*IN_MILISECONDS;
|
||||
@@ -139,31 +139,31 @@ struct boss_elder_nadoxAI : public ScriptedAI
|
||||
|
||||
if (uiSwarmerSpawnTimer <= diff)
|
||||
{
|
||||
DoCast(m_creature, SPELL_SUMMON_SWARMERS, true);
|
||||
DoCast(m_creature, SPELL_SUMMON_SWARMERS);
|
||||
DoCast(me, SPELL_SUMMON_SWARMERS, true);
|
||||
DoCast(me, SPELL_SUMMON_SWARMERS);
|
||||
if (urand(1,3) == 3) // 33% chance of dialog
|
||||
DoScriptText(RAND(SAY_EGG_SAC_1,SAY_EGG_SAC_2), m_creature);
|
||||
DoScriptText(RAND(SAY_EGG_SAC_1,SAY_EGG_SAC_2), me);
|
||||
|
||||
uiSwarmerSpawnTimer = 10*IN_MILISECONDS;
|
||||
} else uiSwarmerSpawnTimer -= diff;
|
||||
|
||||
if (!bGuardSpawned && uiGuardSpawnTimer <= diff)
|
||||
{
|
||||
m_creature->MonsterTextEmote(EMOTE_HATCHES,m_creature->GetGUID(),true);
|
||||
DoCast(m_creature, SPELL_SUMMON_SWARM_GUARD);
|
||||
me->MonsterTextEmote(EMOTE_HATCHES,me->GetGUID(),true);
|
||||
DoCast(me, SPELL_SUMMON_SWARM_GUARD);
|
||||
bGuardSpawned = true;
|
||||
} else uiGuardSpawnTimer -= diff;
|
||||
|
||||
if (uiEnragueTimer <= diff)
|
||||
{
|
||||
if (m_creature->HasAura(SPELL_ENRAGE,0))
|
||||
if (me->HasAura(SPELL_ENRAGE,0))
|
||||
return;
|
||||
|
||||
float x, y, z, o;
|
||||
m_creature->GetHomePosition(x, y, z, o);
|
||||
me->GetHomePosition(x, y, z, o);
|
||||
if (z < 24)
|
||||
if (!m_creature->IsNonMeleeSpellCasted(false))
|
||||
DoCast(m_creature, SPELL_ENRAGE, true);
|
||||
if (!me->IsNonMeleeSpellCasted(false))
|
||||
DoCast(me, SPELL_ENRAGE, true);
|
||||
|
||||
uiEnragueTimer = 5*IN_MILISECONDS;
|
||||
} else uiEnragueTimer -= diff;
|
||||
@@ -195,14 +195,14 @@ struct mob_ahnkahar_nerubianAI : public ScriptedAI
|
||||
|
||||
void Reset()
|
||||
{
|
||||
if (m_creature->GetEntry() == MOB_AHNKAHAR_GUARDIAN_ENTRY) //magic numbers are bad!
|
||||
DoCast(m_creature, SPELL_GUARDIAN_AURA, true);
|
||||
if (me->GetEntry() == MOB_AHNKAHAR_GUARDIAN_ENTRY) //magic numbers are bad!
|
||||
DoCast(me, SPELL_GUARDIAN_AURA, true);
|
||||
uiSprintTimer = 10*IN_MILISECONDS;
|
||||
}
|
||||
|
||||
void JustDied(Unit *killer)
|
||||
{
|
||||
if (m_creature->GetEntry() == MOB_AHNKAHAR_GUARDIAN_ENTRY)
|
||||
if (me->GetEntry() == MOB_AHNKAHAR_GUARDIAN_ENTRY)
|
||||
DeadAhnkaharGuardian = true;
|
||||
}
|
||||
|
||||
@@ -213,14 +213,14 @@ struct mob_ahnkahar_nerubianAI : public ScriptedAI
|
||||
if (!UpdateVictim())
|
||||
return;
|
||||
|
||||
if (m_creature->GetEntry() == MOB_AHNKAHAR_GUARDIAN_ENTRY)
|
||||
m_creature->RemoveAurasDueToSpell(SPELL_GUARDIAN_AURA);
|
||||
if (me->GetEntry() == MOB_AHNKAHAR_GUARDIAN_ENTRY)
|
||||
me->RemoveAurasDueToSpell(SPELL_GUARDIAN_AURA);
|
||||
|
||||
if (pInstance)
|
||||
{
|
||||
if (pInstance->GetData(DATA_ELDER_NADOX_EVENT) != IN_PROGRESS)
|
||||
{
|
||||
m_creature->DisappearAndDie();
|
||||
me->DisappearAndDie();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -229,7 +229,7 @@ struct mob_ahnkahar_nerubianAI : public ScriptedAI
|
||||
|
||||
if (uiSprintTimer <= diff)
|
||||
{
|
||||
DoCast(m_creature, SPELL_SPRINT);
|
||||
DoCast(me, SPELL_SPRINT);
|
||||
uiSprintTimer = 25*IN_MILISECONDS;
|
||||
} else uiSprintTimer -= diff;
|
||||
|
||||
|
||||
@@ -66,7 +66,7 @@ enum Achievements
|
||||
|
||||
struct boss_volazjAI : public ScriptedAI
|
||||
{
|
||||
boss_volazjAI(Creature* pCreature) : ScriptedAI(pCreature),Summons(m_creature)
|
||||
boss_volazjAI(Creature* pCreature) : ScriptedAI(pCreature),Summons(me)
|
||||
{
|
||||
pInstance = pCreature->GetInstanceData();
|
||||
}
|
||||
@@ -119,7 +119,7 @@ struct boss_volazjAI : public ScriptedAI
|
||||
// phase mask
|
||||
pTarget->CastSpell(pTarget, SPELL_INSANITY_TARGET+insanityHandled, true);
|
||||
// summon twisted party members for this target
|
||||
Map::PlayerList const &players = m_creature->GetMap()->GetPlayers();
|
||||
Map::PlayerList const &players = me->GetMap()->GetPlayers();
|
||||
for (Map::PlayerList::const_iterator i = players.begin(); i != players.end(); ++i)
|
||||
{
|
||||
Player *plr = i->getSource();
|
||||
@@ -163,7 +163,7 @@ struct boss_volazjAI : public ScriptedAI
|
||||
|
||||
void EnterCombat(Unit* who)
|
||||
{
|
||||
DoScriptText(SAY_AGGRO, m_creature);
|
||||
DoScriptText(SAY_AGGRO, me);
|
||||
|
||||
if (pInstance)
|
||||
pInstance->SetData(DATA_HERALD_VOLAZJ, IN_PROGRESS);
|
||||
@@ -207,7 +207,7 @@ struct boss_volazjAI : public ScriptedAI
|
||||
// Check if all summons in this phase killed
|
||||
for (SummonList::const_iterator iter = Summons.begin(); iter != Summons.end(); ++iter)
|
||||
{
|
||||
if (Creature *visage = Unit::GetCreature(*m_creature, *iter))
|
||||
if (Creature *visage = Unit::GetCreature(*me, *iter))
|
||||
{
|
||||
// Not all are dead
|
||||
if (phase == visage->GetPhaseMask())
|
||||
@@ -220,7 +220,7 @@ struct boss_volazjAI : public ScriptedAI
|
||||
// Roll Insanity
|
||||
uint32 spell = GetSpellForPhaseMask(phase);
|
||||
uint32 spell2 = GetSpellForPhaseMask(nextPhase);
|
||||
Map* pMap = m_creature->GetMap();
|
||||
Map* pMap = me->GetMap();
|
||||
if (!pMap)
|
||||
return;
|
||||
|
||||
@@ -261,13 +261,13 @@ struct boss_volazjAI : public ScriptedAI
|
||||
|
||||
if (uiMindFlayTimer <= diff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(), SPELL_MIND_FLAY);
|
||||
DoCast(me->getVictim(), SPELL_MIND_FLAY);
|
||||
uiMindFlayTimer = 20*IN_MILISECONDS;
|
||||
} else uiMindFlayTimer -= diff;
|
||||
|
||||
if (uiShadowBoltVolleyTimer <= diff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(), SPELL_SHADOW_BOLT_VOLLEY);
|
||||
DoCast(me->getVictim(), SPELL_SHADOW_BOLT_VOLLEY);
|
||||
uiShadowBoltVolleyTimer = 5*IN_MILISECONDS;
|
||||
} else uiShadowBoltVolleyTimer -= diff;
|
||||
|
||||
@@ -284,7 +284,7 @@ struct boss_volazjAI : public ScriptedAI
|
||||
}
|
||||
void JustDied(Unit* killer)
|
||||
{
|
||||
DoScriptText(SAY_DEATH_1, m_creature);
|
||||
DoScriptText(SAY_DEATH_1, me);
|
||||
|
||||
if (pInstance)
|
||||
{
|
||||
@@ -298,7 +298,7 @@ struct boss_volazjAI : public ScriptedAI
|
||||
|
||||
void KilledUnit(Unit *victim)
|
||||
{
|
||||
DoScriptText(RAND(SAY_SLAY_1,SAY_SLAY_2,SAY_SLAY_3), m_creature);
|
||||
DoScriptText(RAND(SAY_SLAY_1,SAY_SLAY_2,SAY_SLAY_3), me);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@@ -120,8 +120,8 @@ struct boss_jedoga_shadowseekerAI : public ScriptedAI
|
||||
if (!pInstance || (who->GetTypeId() == TYPEID_UNIT && who->GetEntry() == NPC_JEDOGA_CONTROLLER))
|
||||
return;
|
||||
|
||||
DoScriptText(TEXT_AGGRO, m_creature);
|
||||
m_creature->SetInCombatWithZone();
|
||||
DoScriptText(TEXT_AGGRO, me);
|
||||
me->SetInCombatWithZone();
|
||||
pInstance->SetData(DATA_JEDOGA_SHADOWSEEKER_EVENT, IN_PROGRESS);
|
||||
}
|
||||
|
||||
@@ -138,12 +138,12 @@ struct boss_jedoga_shadowseekerAI : public ScriptedAI
|
||||
if (!Victim || Victim->GetTypeId() != TYPEID_PLAYER)
|
||||
return;
|
||||
|
||||
DoScriptText(RAND(TEXT_SLAY_1, TEXT_SLAY_2, TEXT_SLAY_3), m_creature);
|
||||
DoScriptText(RAND(TEXT_SLAY_1, TEXT_SLAY_2, TEXT_SLAY_3), me);
|
||||
}
|
||||
|
||||
void JustDied(Unit* Killer)
|
||||
{
|
||||
DoScriptText(TEXT_DEATH, m_creature);
|
||||
DoScriptText(TEXT_DEATH, me);
|
||||
if (pInstance)
|
||||
pInstance->SetData(DATA_JEDOGA_SHADOWSEEKER_EVENT, DONE);
|
||||
}
|
||||
@@ -153,29 +153,29 @@ struct boss_jedoga_shadowseekerAI : public ScriptedAI
|
||||
if (!pInstance || !who || (who->GetTypeId() == TYPEID_UNIT && who->GetEntry() == NPC_JEDOGA_CONTROLLER))
|
||||
return;
|
||||
|
||||
if (!bPreDone && who->GetTypeId() == TYPEID_PLAYER && m_creature->GetDistance(who) < 100.0f)
|
||||
if (!bPreDone && who->GetTypeId() == TYPEID_PLAYER && me->GetDistance(who) < 100.0f)
|
||||
{
|
||||
DoScriptText(RAND(TEXT_PREACHING_1, TEXT_PREACHING_2, TEXT_PREACHING_3, TEXT_PREACHING_4, TEXT_PREACHING_5), m_creature);
|
||||
DoScriptText(RAND(TEXT_PREACHING_1, TEXT_PREACHING_2, TEXT_PREACHING_3, TEXT_PREACHING_4, TEXT_PREACHING_5), me);
|
||||
bPreDone = true;
|
||||
}
|
||||
|
||||
if (pInstance->GetData(DATA_JEDOGA_SHADOWSEEKER_EVENT) != IN_PROGRESS || !bOnGround)
|
||||
return;
|
||||
|
||||
if (!m_creature->getVictim() && who->isTargetableForAttack() && m_creature->IsHostileTo(who) && who->isInAccessiblePlaceFor(m_creature))
|
||||
if (!me->getVictim() && who->isTargetableForAttack() && me->IsHostileTo(who) && who->isInAccessiblePlaceFor(me))
|
||||
{
|
||||
float attackRadius = m_creature->GetAttackDistance(who);
|
||||
if (m_creature->IsWithinDistInMap(who, attackRadius) && m_creature->IsWithinLOSInMap(who))
|
||||
float attackRadius = me->GetAttackDistance(who);
|
||||
if (me->IsWithinDistInMap(who, attackRadius) && me->IsWithinLOSInMap(who))
|
||||
{
|
||||
if (!m_creature->getVictim())
|
||||
if (!me->getVictim())
|
||||
{
|
||||
who->RemoveAurasByType(SPELL_AURA_MOD_STEALTH);
|
||||
AttackStart(who);
|
||||
}
|
||||
else if (m_creature->GetMap()->IsDungeon())
|
||||
else if (me->GetMap()->IsDungeon())
|
||||
{
|
||||
who->SetInCombatWith(m_creature);
|
||||
m_creature->AddThreat(who, 0.0f);
|
||||
who->SetInCombatWith(me);
|
||||
me->AddThreat(who, 0.0f);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -189,35 +189,35 @@ struct boss_jedoga_shadowseekerAI : public ScriptedAI
|
||||
bOpFerokFail = false;
|
||||
|
||||
pInstance->SetData(DATA_JEDOGA_TRIGGER_SWITCH, 0);
|
||||
m_creature->GetMotionMaster()->MovePoint(1, JedogaPosition[1]);
|
||||
/* m_creature->SetUnitMovementFlags(MOVEMENTFLAG_JUMPING);
|
||||
m_creature->SendMonsterMove(JedogaPosition[1], MOVEFLAG_JUMP, 0);
|
||||
m_creature->Relocate(JedogaPosition[1][0], JedogaPosition[1][1], JedogaPosition[1][2], JedogaPosition[1][3]);
|
||||
m_creature->SetUnitMovementFlags(MOVEMENTFLAG_WALK_MODE);
|
||||
me->GetMotionMaster()->MovePoint(1, JedogaPosition[1]);
|
||||
/* me->SetUnitMovementFlags(MOVEMENTFLAG_JUMPING);
|
||||
me->SendMonsterMove(JedogaPosition[1], MOVEFLAG_JUMP, 0);
|
||||
me->Relocate(JedogaPosition[1][0], JedogaPosition[1][1], JedogaPosition[1][2], JedogaPosition[1][3]);
|
||||
me->SetUnitMovementFlags(MOVEMENTFLAG_WALK_MODE);
|
||||
*/
|
||||
m_creature->ApplySpellImmune(0, IMMUNITY_DAMAGE, SPELL_SCHOOL_MASK_NORMAL, false);
|
||||
m_creature->ApplySpellImmune(0, IMMUNITY_DAMAGE, SPELL_SCHOOL_MASK_MAGIC, false);
|
||||
m_creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE + UNIT_FLAG_NON_ATTACKABLE);
|
||||
me->ApplySpellImmune(0, IMMUNITY_DAMAGE, SPELL_SCHOOL_MASK_NORMAL, false);
|
||||
me->ApplySpellImmune(0, IMMUNITY_DAMAGE, SPELL_SCHOOL_MASK_MAGIC, false);
|
||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE + UNIT_FLAG_NON_ATTACKABLE);
|
||||
|
||||
m_creature->RemoveAurasDueToSpell(SPELL_SPHERE_VISUAL);
|
||||
me->RemoveAurasDueToSpell(SPELL_SPHERE_VISUAL);
|
||||
|
||||
bOnGround = true;
|
||||
|
||||
if (UpdateVictim())
|
||||
{
|
||||
AttackStart(m_creature->getVictim());
|
||||
m_creature->GetMotionMaster()->MoveChase(m_creature->getVictim());
|
||||
AttackStart(me->getVictim());
|
||||
me->GetMotionMaster()->MoveChase(me->getVictim());
|
||||
}
|
||||
else
|
||||
{
|
||||
if (Unit* pTarget = Unit::GetUnit(*m_creature, pInstance->GetData64(DATA_PL_JEDOGA_TARGET)))
|
||||
if (Unit* pTarget = Unit::GetUnit(*me, pInstance->GetData64(DATA_PL_JEDOGA_TARGET)))
|
||||
{
|
||||
AttackStart(pTarget);
|
||||
pInstance->SetData(DATA_JEDOGA_RESET_INITIANDS, 0);
|
||||
if (pInstance->GetData(DATA_JEDOGA_SHADOWSEEKER_EVENT) != IN_PROGRESS)
|
||||
EnterCombat(pTarget);
|
||||
}
|
||||
else if (!m_creature->isInCombat())
|
||||
else if (!me->isInCombat())
|
||||
EnterEvadeMode();
|
||||
}
|
||||
}
|
||||
@@ -227,21 +227,21 @@ struct boss_jedoga_shadowseekerAI : public ScriptedAI
|
||||
if (!pInstance)
|
||||
return;
|
||||
|
||||
m_creature->ApplySpellImmune(0, IMMUNITY_DAMAGE, SPELL_SCHOOL_MASK_NORMAL, true);
|
||||
m_creature->ApplySpellImmune(0, IMMUNITY_DAMAGE, SPELL_SCHOOL_MASK_MAGIC, true);
|
||||
m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE + UNIT_FLAG_NON_ATTACKABLE);
|
||||
me->ApplySpellImmune(0, IMMUNITY_DAMAGE, SPELL_SCHOOL_MASK_NORMAL, true);
|
||||
me->ApplySpellImmune(0, IMMUNITY_DAMAGE, SPELL_SCHOOL_MASK_MAGIC, true);
|
||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE + UNIT_FLAG_NON_ATTACKABLE);
|
||||
|
||||
m_creature->AttackStop();
|
||||
m_creature->RemoveAllAuras();
|
||||
m_creature->LoadCreaturesAddon();
|
||||
m_creature->GetMotionMaster()->MovePoint(0, JedogaPosition[0]);
|
||||
/* m_creature->SetUnitMovementFlags(MOVEMENTFLAG_JUMPING);
|
||||
m_creature->SendMonsterMove(JedogaPosition[0][0], JedogaPosition[0][1], JedogaPosition[0][2], 0, MOVEFLAG_JUMP, 0);
|
||||
m_creature->Relocate(JedogaPosition[0][0], JedogaPosition[0][1], JedogaPosition[0][2], JedogaPosition[0][3]);
|
||||
m_creature->SetUnitMovementFlags(MOVEMENTFLAG_LEVITATING);
|
||||
m_creature->GetMotionMaster()->Clear();
|
||||
m_creature->GetMotionMaster()->MoveIdle();
|
||||
m_creature->StopMoving();
|
||||
me->AttackStop();
|
||||
me->RemoveAllAuras();
|
||||
me->LoadCreaturesAddon();
|
||||
me->GetMotionMaster()->MovePoint(0, JedogaPosition[0]);
|
||||
/* me->SetUnitMovementFlags(MOVEMENTFLAG_JUMPING);
|
||||
me->SendMonsterMove(JedogaPosition[0][0], JedogaPosition[0][1], JedogaPosition[0][2], 0, MOVEFLAG_JUMP, 0);
|
||||
me->Relocate(JedogaPosition[0][0], JedogaPosition[0][1], JedogaPosition[0][2], JedogaPosition[0][3]);
|
||||
me->SetUnitMovementFlags(MOVEMENTFLAG_LEVITATING);
|
||||
me->GetMotionMaster()->Clear();
|
||||
me->GetMotionMaster()->MoveIdle();
|
||||
me->StopMoving();
|
||||
*/
|
||||
|
||||
pInstance->SetData(DATA_JEDOGA_TRIGGER_SWITCH, 1);
|
||||
@@ -260,7 +260,7 @@ struct boss_jedoga_shadowseekerAI : public ScriptedAI
|
||||
|
||||
if (opfer)
|
||||
{
|
||||
DoScriptText(RAND(TEXT_SACRIFICE_1_1, TEXT_SACRIFICE_1_2), m_creature);
|
||||
DoScriptText(RAND(TEXT_SACRIFICE_1_1, TEXT_SACRIFICE_1_2), me);
|
||||
pInstance->SetData64(DATA_ADD_JEDOGA_OPFER, opfer);
|
||||
} else
|
||||
bCanDown = true;
|
||||
@@ -268,10 +268,10 @@ struct boss_jedoga_shadowseekerAI : public ScriptedAI
|
||||
|
||||
void Opfern()
|
||||
{
|
||||
DoScriptText(RAND(TEXT_SACRIFICE_2_1, TEXT_SACRIFICE_2_2), m_creature);
|
||||
DoScriptText(RAND(TEXT_SACRIFICE_2_1, TEXT_SACRIFICE_2_2), me);
|
||||
|
||||
m_creature->InterruptNonMeleeSpells(false);
|
||||
DoCast(m_creature, SPELL_GIFT_OF_THE_HERALD, false);
|
||||
me->InterruptNonMeleeSpells(false);
|
||||
DoCast(me, SPELL_GIFT_OF_THE_HERALD, false);
|
||||
|
||||
bOpFerok = false;
|
||||
bCanDown = true;
|
||||
@@ -303,14 +303,14 @@ struct boss_jedoga_shadowseekerAI : public ScriptedAI
|
||||
|
||||
if (uiCycloneTimer <= diff)
|
||||
{
|
||||
DoCast(m_creature, SPELL_CYCLONE_STRIKE, false);
|
||||
DoCast(me, SPELL_CYCLONE_STRIKE, false);
|
||||
uiCycloneTimer = urand(15*IN_MILISECONDS,30*IN_MILISECONDS);
|
||||
} else uiCycloneTimer -= diff;
|
||||
|
||||
if (uiBoltTimer <= diff)
|
||||
{
|
||||
if (Unit* pTarget = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true))
|
||||
m_creature->CastSpell(pTarget, DUNGEON_MODE(SPELL_LIGHTNING_BOLT, SPELL_LIGHTNING_BOLT_H), false);
|
||||
me->CastSpell(pTarget, DUNGEON_MODE(SPELL_LIGHTNING_BOLT, SPELL_LIGHTNING_BOLT_H), false);
|
||||
|
||||
uiBoltTimer = urand(15*IN_MILISECONDS,30*IN_MILISECONDS);
|
||||
} else uiBoltTimer -= diff;
|
||||
@@ -318,7 +318,7 @@ struct boss_jedoga_shadowseekerAI : public ScriptedAI
|
||||
if (uiThunderTimer <= diff)
|
||||
{
|
||||
if (Unit* pTarget = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true))
|
||||
m_creature->CastSpell(pTarget, DUNGEON_MODE(SPELL_THUNDERSHOCK, SPELL_THUNDERSHOCK_H), false);
|
||||
me->CastSpell(pTarget, DUNGEON_MODE(SPELL_THUNDERSHOCK, SPELL_THUNDERSHOCK_H), false);
|
||||
|
||||
uiThunderTimer = urand(15*IN_MILISECONDS,30*IN_MILISECONDS);
|
||||
} else uiThunderTimer -= diff;
|
||||
@@ -356,17 +356,17 @@ struct mob_jedoga_initiandAI : public ScriptedAI
|
||||
|
||||
if (pInstance->GetData(DATA_JEDOGA_SHADOWSEEKER_EVENT) != IN_PROGRESS)
|
||||
{
|
||||
m_creature->RemoveAurasDueToSpell(SPELL_SPHERE_VISUAL);
|
||||
m_creature->ApplySpellImmune(0, IMMUNITY_DAMAGE, SPELL_SCHOOL_MASK_NORMAL, false);
|
||||
m_creature->ApplySpellImmune(0, IMMUNITY_DAMAGE, SPELL_SCHOOL_MASK_MAGIC, false);
|
||||
m_creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE + UNIT_FLAG_NON_ATTACKABLE);
|
||||
me->RemoveAurasDueToSpell(SPELL_SPHERE_VISUAL);
|
||||
me->ApplySpellImmune(0, IMMUNITY_DAMAGE, SPELL_SCHOOL_MASK_NORMAL, false);
|
||||
me->ApplySpellImmune(0, IMMUNITY_DAMAGE, SPELL_SCHOOL_MASK_MAGIC, false);
|
||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE + UNIT_FLAG_NON_ATTACKABLE);
|
||||
}
|
||||
else
|
||||
{
|
||||
DoCast(m_creature, SPELL_SPHERE_VISUAL, false);
|
||||
m_creature->ApplySpellImmune(0, IMMUNITY_DAMAGE, SPELL_SCHOOL_MASK_NORMAL, true);
|
||||
m_creature->ApplySpellImmune(0, IMMUNITY_DAMAGE, SPELL_SCHOOL_MASK_MAGIC, true);
|
||||
m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE + UNIT_FLAG_NON_ATTACKABLE);
|
||||
DoCast(me, SPELL_SPHERE_VISUAL, false);
|
||||
me->ApplySpellImmune(0, IMMUNITY_DAMAGE, SPELL_SCHOOL_MASK_NORMAL, true);
|
||||
me->ApplySpellImmune(0, IMMUNITY_DAMAGE, SPELL_SCHOOL_MASK_MAGIC, true);
|
||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE + UNIT_FLAG_NON_ATTACKABLE);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -376,7 +376,7 @@ struct mob_jedoga_initiandAI : public ScriptedAI
|
||||
|
||||
if (bWalking)
|
||||
{
|
||||
Creature* boss = m_creature->GetMap()->GetCreature(pInstance->GetData64(DATA_JEDOGA_SHADOWSEEKER));
|
||||
Creature* boss = me->GetMap()->GetCreature(pInstance->GetData64(DATA_JEDOGA_SHADOWSEEKER));
|
||||
if (boss && !CAST_AI(boss_jedoga_shadowseekerAI, boss->AI())->bOpFerok) CAST_AI(boss_jedoga_shadowseekerAI, boss->AI())->bOpFerokFail = true;
|
||||
|
||||
if (Killer->GetTypeId() == TYPEID_PLAYER) pInstance->SetData(DATA_INITIAND_KILLED, 1);
|
||||
@@ -414,12 +414,12 @@ struct mob_jedoga_initiandAI : public ScriptedAI
|
||||
{
|
||||
case 1:
|
||||
{
|
||||
Creature* boss = m_creature->GetMap()->GetCreature(pInstance->GetData64(DATA_JEDOGA_SHADOWSEEKER));
|
||||
Creature* boss = me->GetMap()->GetCreature(pInstance->GetData64(DATA_JEDOGA_SHADOWSEEKER));
|
||||
if (boss)
|
||||
{
|
||||
CAST_AI(boss_jedoga_shadowseekerAI, boss->AI())->bOpFerok = true;
|
||||
CAST_AI(boss_jedoga_shadowseekerAI, boss->AI())->bOpFerokFail = false;
|
||||
m_creature->Kill(m_creature);
|
||||
me->Kill(me);
|
||||
}
|
||||
}
|
||||
break;
|
||||
@@ -430,41 +430,41 @@ struct mob_jedoga_initiandAI : public ScriptedAI
|
||||
{
|
||||
if (pInstance && bCheckTimer <= diff)
|
||||
{
|
||||
if (m_creature->GetGUID() == pInstance->GetData64(DATA_ADD_JEDOGA_OPFER) && !bWalking)
|
||||
if (me->GetGUID() == pInstance->GetData64(DATA_ADD_JEDOGA_OPFER) && !bWalking)
|
||||
{
|
||||
m_creature->RemoveAurasDueToSpell(SPELL_SPHERE_VISUAL);
|
||||
m_creature->ApplySpellImmune(0, IMMUNITY_DAMAGE, SPELL_SCHOOL_MASK_NORMAL, false);
|
||||
m_creature->ApplySpellImmune(0, IMMUNITY_DAMAGE, SPELL_SCHOOL_MASK_MAGIC, false);
|
||||
m_creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE + UNIT_FLAG_NON_ATTACKABLE);
|
||||
me->RemoveAurasDueToSpell(SPELL_SPHERE_VISUAL);
|
||||
me->ApplySpellImmune(0, IMMUNITY_DAMAGE, SPELL_SCHOOL_MASK_NORMAL, false);
|
||||
me->ApplySpellImmune(0, IMMUNITY_DAMAGE, SPELL_SCHOOL_MASK_MAGIC, false);
|
||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE + UNIT_FLAG_NON_ATTACKABLE);
|
||||
|
||||
float distance = m_creature->GetDistance(JedogaPosition[1]);
|
||||
float distance = me->GetDistance(JedogaPosition[1]);
|
||||
|
||||
if (distance < 9.0f)
|
||||
m_creature->SetSpeed(MOVE_WALK, 0.5f, true);
|
||||
me->SetSpeed(MOVE_WALK, 0.5f, true);
|
||||
else if (distance < 15.0f)
|
||||
m_creature->SetSpeed(MOVE_WALK, 0.75f, true);
|
||||
me->SetSpeed(MOVE_WALK, 0.75f, true);
|
||||
else if (distance < 20.0f)
|
||||
m_creature->SetSpeed(MOVE_WALK, 1.0f, true);
|
||||
me->SetSpeed(MOVE_WALK, 1.0f, true);
|
||||
|
||||
m_creature->GetMotionMaster()->Clear(false);
|
||||
m_creature->GetMotionMaster()->MovePoint(1, JedogaPosition[1]);
|
||||
me->GetMotionMaster()->Clear(false);
|
||||
me->GetMotionMaster()->MovePoint(1, JedogaPosition[1]);
|
||||
bWalking = true;
|
||||
}
|
||||
if (!bWalking)
|
||||
{
|
||||
if (pInstance->GetData(DATA_JEDOGA_SHADOWSEEKER_EVENT) != IN_PROGRESS && m_creature->HasAura(SPELL_SPHERE_VISUAL))
|
||||
if (pInstance->GetData(DATA_JEDOGA_SHADOWSEEKER_EVENT) != IN_PROGRESS && me->HasAura(SPELL_SPHERE_VISUAL))
|
||||
{
|
||||
m_creature->RemoveAurasDueToSpell(SPELL_SPHERE_VISUAL);
|
||||
m_creature->ApplySpellImmune(0, IMMUNITY_DAMAGE, SPELL_SCHOOL_MASK_NORMAL, false);
|
||||
m_creature->ApplySpellImmune(0, IMMUNITY_DAMAGE, SPELL_SCHOOL_MASK_MAGIC, false);
|
||||
m_creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE + UNIT_FLAG_NON_ATTACKABLE);
|
||||
me->RemoveAurasDueToSpell(SPELL_SPHERE_VISUAL);
|
||||
me->ApplySpellImmune(0, IMMUNITY_DAMAGE, SPELL_SCHOOL_MASK_NORMAL, false);
|
||||
me->ApplySpellImmune(0, IMMUNITY_DAMAGE, SPELL_SCHOOL_MASK_MAGIC, false);
|
||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE + UNIT_FLAG_NON_ATTACKABLE);
|
||||
}
|
||||
if (pInstance->GetData(DATA_JEDOGA_SHADOWSEEKER_EVENT) == IN_PROGRESS && !m_creature->HasAura(SPELL_SPHERE_VISUAL))
|
||||
if (pInstance->GetData(DATA_JEDOGA_SHADOWSEEKER_EVENT) == IN_PROGRESS && !me->HasAura(SPELL_SPHERE_VISUAL))
|
||||
{
|
||||
DoCast(m_creature, SPELL_SPHERE_VISUAL, false);
|
||||
m_creature->ApplySpellImmune(0, IMMUNITY_DAMAGE, SPELL_SCHOOL_MASK_NORMAL, true);
|
||||
m_creature->ApplySpellImmune(0, IMMUNITY_DAMAGE, SPELL_SCHOOL_MASK_MAGIC, true);
|
||||
m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE + UNIT_FLAG_NON_ATTACKABLE);
|
||||
DoCast(me, SPELL_SPHERE_VISUAL, false);
|
||||
me->ApplySpellImmune(0, IMMUNITY_DAMAGE, SPELL_SCHOOL_MASK_NORMAL, true);
|
||||
me->ApplySpellImmune(0, IMMUNITY_DAMAGE, SPELL_SCHOOL_MASK_MAGIC, true);
|
||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE + UNIT_FLAG_NON_ATTACKABLE);
|
||||
}
|
||||
}
|
||||
bCheckTimer = 2*IN_MILISECONDS;
|
||||
@@ -517,35 +517,35 @@ struct npc_jedogas_aufseher_triggerAI : public Scripted_NoMovementAI
|
||||
if (!pInstance)
|
||||
return;
|
||||
|
||||
if (!bRemoved && m_creature->GetPositionX() > 440.0f)
|
||||
if (!bRemoved && me->GetPositionX() > 440.0f)
|
||||
{
|
||||
if (pInstance->GetData(DATA_PRINCE_TALDARAM_EVENT) == DONE)
|
||||
{
|
||||
m_creature->InterruptNonMeleeSpells(true);
|
||||
me->InterruptNonMeleeSpells(true);
|
||||
bRemoved = true;
|
||||
return;
|
||||
}
|
||||
if (!bCasted)
|
||||
{
|
||||
DoCast(m_creature, SPELL_BEAM_VISUAL_JEDOGAS_AUFSEHER_1, false);
|
||||
DoCast(me, SPELL_BEAM_VISUAL_JEDOGAS_AUFSEHER_1, false);
|
||||
bCasted = true;
|
||||
}
|
||||
}
|
||||
if (!bRemoved2 && m_creature->GetPositionX() < 440.0f)
|
||||
if (!bRemoved2 && me->GetPositionX() < 440.0f)
|
||||
{
|
||||
if (!bCasted2 && pInstance->GetData(DATA_JEDOGA_TRIGGER_SWITCH))
|
||||
{
|
||||
DoCast(m_creature, SPELL_BEAM_VISUAL_JEDOGAS_AUFSEHER_2, false);
|
||||
DoCast(me, SPELL_BEAM_VISUAL_JEDOGAS_AUFSEHER_2, false);
|
||||
bCasted2 = true;
|
||||
}
|
||||
if (bCasted2 && !pInstance->GetData(DATA_JEDOGA_TRIGGER_SWITCH))
|
||||
{
|
||||
m_creature->InterruptNonMeleeSpells(true);
|
||||
me->InterruptNonMeleeSpells(true);
|
||||
bCasted2 = false;
|
||||
}
|
||||
if (!bRemoved2 && pInstance->GetData(DATA_JEDOGA_SHADOWSEEKER_EVENT) == DONE)
|
||||
{
|
||||
m_creature->InterruptNonMeleeSpells(true);
|
||||
me->InterruptNonMeleeSpells(true);
|
||||
bRemoved2 = true;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -78,8 +78,8 @@ struct boss_taldaramAI : public ScriptedAI
|
||||
boss_taldaramAI(Creature *c) : ScriptedAI(c)
|
||||
{
|
||||
pInstance = c->GetInstanceData();
|
||||
m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_OOC_NOT_ATTACKABLE);
|
||||
m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_OOC_NOT_ATTACKABLE);
|
||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
||||
}
|
||||
|
||||
uint32 uiBloodthirstTimer;
|
||||
@@ -114,7 +114,7 @@ struct boss_taldaramAI : public ScriptedAI
|
||||
{
|
||||
if (pInstance)
|
||||
pInstance->SetData(DATA_PRINCE_TALDARAM_EVENT, IN_PROGRESS);
|
||||
DoScriptText(SAY_AGGRO, m_creature);
|
||||
DoScriptText(SAY_AGGRO, me);
|
||||
}
|
||||
|
||||
void UpdateAI(const uint32 diff)
|
||||
@@ -129,7 +129,7 @@ struct boss_taldaramAI : public ScriptedAI
|
||||
{
|
||||
Creature* pSpheres[3];
|
||||
|
||||
//DoCast(m_creature, SPELL_FLAME_SPHERE_SUMMON_1);
|
||||
//DoCast(me, SPELL_FLAME_SPHERE_SUMMON_1);
|
||||
pSpheres[0] = DoSpawnCreature(CREATURE_FLAME_SPHERE, 0, 0, 5, 0, TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN, 10*IN_MILISECONDS);
|
||||
Unit *pSphereTarget = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true);
|
||||
if (pSphereTarget && pSpheres[0])
|
||||
@@ -142,9 +142,9 @@ struct boss_taldaramAI : public ScriptedAI
|
||||
}
|
||||
if (IsHeroic())
|
||||
{
|
||||
//DoCast(m_creature, H_SPELL_FLAME_SPHERE_SUMMON_1);
|
||||
//DoCast(me, H_SPELL_FLAME_SPHERE_SUMMON_1);
|
||||
pSpheres[1] = DoSpawnCreature(H_CREATURE_FLAME_SPHERE_1, 0, 0, 5, 0, TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN, 10*IN_MILISECONDS);
|
||||
//DoCast(m_creature, H_SPELL_FLAME_SPHERE_SUMMON_2);
|
||||
//DoCast(me, H_SPELL_FLAME_SPHERE_SUMMON_2);
|
||||
pSpheres[2] = DoSpawnCreature(H_CREATURE_FLAME_SPHERE_2, 0, 0, 5, 0, TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN, 10*IN_MILISECONDS);
|
||||
if (pSphereTarget && pSpheres[1] && pSpheres[2])
|
||||
{
|
||||
@@ -167,9 +167,9 @@ struct boss_taldaramAI : public ScriptedAI
|
||||
case JUST_VANISHED:
|
||||
if (Unit *pEmbraceTarget = GetEmbraceTarget())
|
||||
{
|
||||
m_creature->GetMotionMaster()->Clear();
|
||||
m_creature->SetSpeed(MOVE_WALK, 2.0f, true);
|
||||
m_creature->GetMotionMaster()->MoveChase(pEmbraceTarget);
|
||||
me->GetMotionMaster()->Clear();
|
||||
me->SetSpeed(MOVE_WALK, 2.0f, true);
|
||||
me->GetMotionMaster()->MoveChase(pEmbraceTarget);
|
||||
}
|
||||
Phase = VANISHED;
|
||||
uiPhaseTimer = 1300;
|
||||
@@ -177,9 +177,9 @@ struct boss_taldaramAI : public ScriptedAI
|
||||
case VANISHED:
|
||||
if (Unit *pEmbraceTarget = GetEmbraceTarget())
|
||||
DoCast(pEmbraceTarget, SPELL_EMBRACE_OF_THE_VAMPYR);
|
||||
m_creature->GetMotionMaster()->Clear();
|
||||
m_creature->SetSpeed(MOVE_WALK, 1.0f, true);
|
||||
m_creature->GetMotionMaster()->MoveChase(m_creature->getVictim());
|
||||
me->GetMotionMaster()->Clear();
|
||||
me->SetSpeed(MOVE_WALK, 1.0f, true);
|
||||
me->GetMotionMaster()->MoveChase(me->getVictim());
|
||||
Phase = FEEDING;
|
||||
uiPhaseTimer = 20*IN_MILISECONDS;
|
||||
break;
|
||||
@@ -191,13 +191,13 @@ struct boss_taldaramAI : public ScriptedAI
|
||||
case NORMAL:
|
||||
if (uiBloodthirstTimer <= diff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(), SPELL_BLOODTHIRST);
|
||||
DoCast(me->getVictim(), SPELL_BLOODTHIRST);
|
||||
uiBloodthirstTimer = 10*IN_MILISECONDS;
|
||||
} else uiBloodthirstTimer -= diff;
|
||||
|
||||
if (uiFlamesphereTimer <= diff)
|
||||
{
|
||||
DoCast(m_creature, SPELL_CONJURE_FLAME_SPHERE);
|
||||
DoCast(me, SPELL_CONJURE_FLAME_SPHERE);
|
||||
Phase = CASTING_FLAME_SPHERES;
|
||||
uiPhaseTimer = 3*IN_MILISECONDS + diff;
|
||||
uiFlamesphereTimer = 15*IN_MILISECONDS;
|
||||
@@ -207,11 +207,11 @@ struct boss_taldaramAI : public ScriptedAI
|
||||
{
|
||||
//Count alive players
|
||||
Unit *pTarget = NULL;
|
||||
std::list<HostileReference *> t_list = m_creature->getThreatManager().getThreatList();
|
||||
std::list<HostileReference *> t_list = me->getThreatManager().getThreatList();
|
||||
std::vector<Unit *> target_list;
|
||||
for (std::list<HostileReference *>::const_iterator itr = t_list.begin(); itr!= t_list.end(); ++itr)
|
||||
{
|
||||
pTarget = Unit::GetUnit(*m_creature, (*itr)->getUnitGuid());
|
||||
pTarget = Unit::GetUnit(*me, (*itr)->getUnitGuid());
|
||||
// exclude pets & totems
|
||||
if (pTarget && pTarget->GetTypeId() == TYPEID_PLAYER && pTarget->isAlive())
|
||||
target_list.push_back(pTarget);
|
||||
@@ -220,8 +220,8 @@ struct boss_taldaramAI : public ScriptedAI
|
||||
//He only vanishes if there are 3 or more alive players
|
||||
if (target_list.size() > 2)
|
||||
{
|
||||
DoScriptText(RAND(SAY_VANISH_1,SAY_VANISH_2), m_creature);
|
||||
DoCast(m_creature, SPELL_VANISH);
|
||||
DoScriptText(RAND(SAY_VANISH_1,SAY_VANISH_2), me);
|
||||
DoCast(me, SPELL_VANISH);
|
||||
Phase = JUST_VANISHED;
|
||||
uiPhaseTimer = 500;
|
||||
if (Unit* pEmbraceTarget = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true))
|
||||
@@ -249,14 +249,14 @@ struct boss_taldaramAI : public ScriptedAI
|
||||
Phase = NORMAL;
|
||||
uiPhaseTimer = 0;
|
||||
uiEmbraceTarget = 0;
|
||||
m_creature->CastStop();
|
||||
me->CastStop();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void JustDied(Unit* killer)
|
||||
{
|
||||
DoScriptText(SAY_DEATH, m_creature);
|
||||
DoScriptText(SAY_DEATH, me);
|
||||
|
||||
if (pInstance)
|
||||
pInstance->SetData(DATA_PRINCE_TALDARAM_EVENT, DONE);
|
||||
@@ -264,7 +264,7 @@ struct boss_taldaramAI : public ScriptedAI
|
||||
|
||||
void KilledUnit(Unit *victim)
|
||||
{
|
||||
if (victim == m_creature)
|
||||
if (victim == me)
|
||||
return;
|
||||
|
||||
Unit* pEmbraceTarget = GetEmbraceTarget();
|
||||
@@ -274,7 +274,7 @@ struct boss_taldaramAI : public ScriptedAI
|
||||
uiPhaseTimer = 0;
|
||||
uiEmbraceTarget = 0;
|
||||
}
|
||||
DoScriptText(RAND(SAY_SLAY_1,SAY_SLAY_2), m_creature);
|
||||
DoScriptText(RAND(SAY_SLAY_1,SAY_SLAY_2), me);
|
||||
}
|
||||
|
||||
bool CheckSpheres()
|
||||
@@ -303,18 +303,18 @@ struct boss_taldaramAI : public ScriptedAI
|
||||
if (!uiEmbraceTarget)
|
||||
return NULL;
|
||||
|
||||
return Unit::GetUnit(*m_creature, uiEmbraceTarget);
|
||||
return Unit::GetUnit(*me, uiEmbraceTarget);
|
||||
}
|
||||
|
||||
void RemovePrison()
|
||||
{
|
||||
if (!pInstance)
|
||||
return;
|
||||
m_creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_OOC_NOT_ATTACKABLE);
|
||||
m_creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
||||
m_creature->RemoveAurasDueToSpell(SPELL_BEAM_VISUAL);
|
||||
m_creature->SetUnitMovementFlags(MOVEMENTFLAG_WALK_MODE);
|
||||
m_creature->SetHomePosition(m_creature->GetPositionX(), m_creature->GetPositionY(), DATA_GROUND_POSITION_Z, m_creature->GetOrientation());
|
||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_OOC_NOT_ATTACKABLE);
|
||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
||||
me->RemoveAurasDueToSpell(SPELL_BEAM_VISUAL);
|
||||
me->SetUnitMovementFlags(MOVEMENTFLAG_WALK_MODE);
|
||||
me->SetHomePosition(me->GetPositionX(), me->GetPositionY(), DATA_GROUND_POSITION_Z, me->GetOrientation());
|
||||
uint64 prison_GUID = pInstance->GetData64(DATA_PRINCE_TALDARAM_PLATFORM);
|
||||
pInstance->HandleGameObject(prison_GUID,true);
|
||||
}
|
||||
@@ -332,13 +332,13 @@ struct mob_taldaram_flamesphereAI : public ScriptedAI
|
||||
|
||||
void Reset()
|
||||
{
|
||||
m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
||||
m_creature->AddUnitMovementFlag(MOVEMENTFLAG_FLYING);
|
||||
m_creature->setFaction(16);
|
||||
m_creature->SetFloatValue(OBJECT_FIELD_SCALE_X, 1.0f);
|
||||
DoCast(m_creature, SPELL_FLAME_SPHERE_VISUAL);
|
||||
DoCast(m_creature, SPELL_FLAME_SPHERE_SPAWN_EFFECT);
|
||||
DoCast(m_creature, SPELL_FLAME_SPHERE_PERIODIC);
|
||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
||||
me->AddUnitMovementFlag(MOVEMENTFLAG_FLYING);
|
||||
me->setFaction(16);
|
||||
me->SetFloatValue(OBJECT_FIELD_SCALE_X, 1.0f);
|
||||
DoCast(me, SPELL_FLAME_SPHERE_VISUAL);
|
||||
DoCast(me, SPELL_FLAME_SPHERE_SPAWN_EFFECT);
|
||||
DoCast(me, SPELL_FLAME_SPHERE_PERIODIC);
|
||||
uiDespawnTimer = 10*IN_MILISECONDS;
|
||||
}
|
||||
|
||||
@@ -347,13 +347,13 @@ struct mob_taldaram_flamesphereAI : public ScriptedAI
|
||||
|
||||
void JustDied(Unit* slayer)
|
||||
{
|
||||
DoCast(m_creature, SPELL_FLAME_SPHERE_DEATH_EFFECT);
|
||||
DoCast(me, SPELL_FLAME_SPHERE_DEATH_EFFECT);
|
||||
}
|
||||
|
||||
void UpdateAI(const uint32 diff)
|
||||
{
|
||||
if (uiDespawnTimer <= diff)
|
||||
m_creature->DisappearAndDie();
|
||||
me->DisappearAndDie();
|
||||
else
|
||||
uiDespawnTimer -= diff;
|
||||
}
|
||||
|
||||
@@ -99,8 +99,8 @@ struct boss_anub_arakAI : public ScriptedAI
|
||||
uiPhaseTimer = 0;
|
||||
bChanneling = false;
|
||||
|
||||
m_creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE|UNIT_FLAG_NOT_SELECTABLE);
|
||||
m_creature->RemoveAura(SPELL_SUBMERGE);
|
||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE|UNIT_FLAG_NOT_SELECTABLE);
|
||||
me->RemoveAura(SPELL_SUBMERGE);
|
||||
|
||||
lSummons.DespawnAll();
|
||||
|
||||
@@ -111,7 +111,7 @@ struct boss_anub_arakAI : public ScriptedAI
|
||||
|
||||
void EnterCombat(Unit *pWho)
|
||||
{
|
||||
DoScriptText(SAY_AGGRO, m_creature);
|
||||
DoScriptText(SAY_AGGRO, me);
|
||||
|
||||
if (pInstance)
|
||||
pInstance->SetData(DATA_ANUBARAK_EVENT, IN_PROGRESS);
|
||||
@@ -127,7 +127,7 @@ struct boss_anub_arakAI : public ScriptedAI
|
||||
if (bChanneling == true)
|
||||
{
|
||||
for (uint8 i = 0; i < 4; ++i)
|
||||
DoCast(m_creature->getVictim(), SPELL_SUMMON_CARRION_BEETLES, true);
|
||||
DoCast(me->getVictim(), SPELL_SUMMON_CARRION_BEETLES, true);
|
||||
bChanneling = false;
|
||||
}
|
||||
|
||||
@@ -136,7 +136,7 @@ struct boss_anub_arakAI : public ScriptedAI
|
||||
if (uiImpaleTimer <= diff)
|
||||
{
|
||||
if (Unit *pTarget = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true))
|
||||
m_creature->CastSpell(pTarget, DUNGEON_MODE(SPELL_IMPALE,H_SPELL_IMPALE), true);
|
||||
me->CastSpell(pTarget, DUNGEON_MODE(SPELL_IMPALE,H_SPELL_IMPALE), true);
|
||||
uiImpaleTimer = 9*IN_MILISECONDS;
|
||||
} else uiImpaleTimer -= diff;
|
||||
|
||||
@@ -144,9 +144,9 @@ struct boss_anub_arakAI : public ScriptedAI
|
||||
{
|
||||
for (uint8 i = 0; i < 2; ++i)
|
||||
{
|
||||
if (Creature *Guardian = m_creature->SummonCreature(CREATURE_GUARDIAN,SpawnPoint[i],TEMPSUMMON_CORPSE_DESPAWN,0))
|
||||
if (Creature *Guardian = me->SummonCreature(CREATURE_GUARDIAN,SpawnPoint[i],TEMPSUMMON_CORPSE_DESPAWN,0))
|
||||
{
|
||||
Guardian->AddThreat(m_creature->getVictim(), 0.0f);
|
||||
Guardian->AddThreat(me->getVictim(), 0.0f);
|
||||
DoZoneInCombat(Guardian);
|
||||
}
|
||||
}
|
||||
@@ -161,9 +161,9 @@ struct boss_anub_arakAI : public ScriptedAI
|
||||
{
|
||||
for (uint8 i = 0; i < 2; ++i)
|
||||
{
|
||||
if (Creature *Venomancer = m_creature->SummonCreature(CREATURE_VENOMANCER,SpawnPoint[i],TEMPSUMMON_CORPSE_DESPAWN,0))
|
||||
if (Creature *Venomancer = me->SummonCreature(CREATURE_VENOMANCER,SpawnPoint[i],TEMPSUMMON_CORPSE_DESPAWN,0))
|
||||
{
|
||||
Venomancer->AddThreat(m_creature->getVictim(), 0.0f);
|
||||
Venomancer->AddThreat(me->getVictim(), 0.0f);
|
||||
DoZoneInCombat(Venomancer);
|
||||
}
|
||||
}
|
||||
@@ -180,9 +180,9 @@ struct boss_anub_arakAI : public ScriptedAI
|
||||
{
|
||||
for (uint8 i = 0; i < 2; ++i)
|
||||
{
|
||||
if (Creature *Datter = m_creature->SummonCreature(CREATURE_DATTER,SpawnPoint[i],TEMPSUMMON_CORPSE_DESPAWN,0))
|
||||
if (Creature *Datter = me->SummonCreature(CREATURE_DATTER,SpawnPoint[i],TEMPSUMMON_CORPSE_DESPAWN,0))
|
||||
{
|
||||
Datter->AddThreat(m_creature->getVictim(), 0.0f);
|
||||
Datter->AddThreat(me->getVictim(), 0.0f);
|
||||
DoZoneInCombat(Datter);
|
||||
}
|
||||
}
|
||||
@@ -193,8 +193,8 @@ struct boss_anub_arakAI : public ScriptedAI
|
||||
|
||||
if (uiUndergroundTimer <= diff)
|
||||
{
|
||||
m_creature->RemoveAura(SPELL_SUBMERGE);
|
||||
m_creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE|UNIT_FLAG_NOT_SELECTABLE);
|
||||
me->RemoveAura(SPELL_SUBMERGE);
|
||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE|UNIT_FLAG_NOT_SELECTABLE);
|
||||
uiPhase = 0;
|
||||
} else uiUndergroundTimer -= diff;
|
||||
}
|
||||
@@ -203,7 +203,7 @@ struct boss_anub_arakAI : public ScriptedAI
|
||||
{
|
||||
if (uiLeechingSwarmTimer <= diff)
|
||||
{
|
||||
DoCast(m_creature, SPELL_LEECHING_SWARM, true);
|
||||
DoCast(me, SPELL_LEECHING_SWARM, true);
|
||||
uiLeechingSwarmTimer = 19*IN_MILISECONDS;
|
||||
} else uiLeechingSwarmTimer -= diff;
|
||||
|
||||
@@ -235,9 +235,9 @@ struct boss_anub_arakAI : public ScriptedAI
|
||||
uiVenomancerTimer = 25*IN_MILISECONDS;
|
||||
uiDatterTimer = 32*IN_MILISECONDS;
|
||||
|
||||
DoCast(m_creature, SPELL_SUBMERGE, false);
|
||||
DoCast(me, SPELL_SUBMERGE, false);
|
||||
|
||||
m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE|UNIT_FLAG_NOT_SELECTABLE);
|
||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE|UNIT_FLAG_NOT_SELECTABLE);
|
||||
|
||||
uiPhase = 1;
|
||||
}
|
||||
@@ -248,7 +248,7 @@ struct boss_anub_arakAI : public ScriptedAI
|
||||
|
||||
void JustDied(Unit *pKiller)
|
||||
{
|
||||
DoScriptText(SAY_DEATH, m_creature);
|
||||
DoScriptText(SAY_DEATH, me);
|
||||
|
||||
if (pInstance)
|
||||
pInstance->SetData(DATA_ANUBARAK_EVENT, DONE);
|
||||
@@ -256,10 +256,10 @@ struct boss_anub_arakAI : public ScriptedAI
|
||||
|
||||
void KilledUnit(Unit *pVictim)
|
||||
{
|
||||
if (pVictim == m_creature)
|
||||
if (pVictim == me)
|
||||
return;
|
||||
|
||||
DoScriptText(RAND(SAY_SLAY_1,SAY_SLAY_2,SAY_SLAY_3), m_creature);
|
||||
DoScriptText(RAND(SAY_SLAY_1,SAY_SLAY_2,SAY_SLAY_3), me);
|
||||
}
|
||||
|
||||
void JustSummoned(Creature* summon)
|
||||
|
||||
@@ -69,8 +69,8 @@ struct boss_hadronoxAI : public ScriptedAI
|
||||
|
||||
void Reset()
|
||||
{
|
||||
m_creature->SetFloatValue(UNIT_FIELD_BOUNDINGRADIUS, 9.0f);
|
||||
m_creature->SetFloatValue(UNIT_FIELD_COMBATREACH, 9.0f);
|
||||
me->SetFloatValue(UNIT_FIELD_BOUNDINGRADIUS, 9.0f);
|
||||
me->SetFloatValue(UNIT_FIELD_COMBATREACH, 9.0f);
|
||||
|
||||
uiAcidTimer = urand(10*IN_MILISECONDS,14*IN_MILISECONDS);
|
||||
uiLeechTimer = urand(3*IN_MILISECONDS,9*IN_MILISECONDS);
|
||||
@@ -89,15 +89,15 @@ struct boss_hadronoxAI : public ScriptedAI
|
||||
void KilledUnit(Unit* Victim)
|
||||
{
|
||||
// not sure if this aura check is correct, I think it is though
|
||||
if (!Victim || !Victim->HasAura(DUNGEON_MODE(SPELL_LEECH_POISON, H_SPELL_LEECH_POISON)) || !m_creature->isAlive())
|
||||
if (!Victim || !Victim->HasAura(DUNGEON_MODE(SPELL_LEECH_POISON, H_SPELL_LEECH_POISON)) || !me->isAlive())
|
||||
return;
|
||||
|
||||
uint32 health = m_creature->GetMaxHealth()/10;
|
||||
uint32 health = me->GetMaxHealth()/10;
|
||||
|
||||
if ((m_creature->GetHealth()+health) >= m_creature->GetMaxHealth())
|
||||
m_creature->SetHealth(m_creature->GetMaxHealth());
|
||||
if ((me->GetHealth()+health) >= me->GetMaxHealth())
|
||||
me->SetHealth(me->GetMaxHealth());
|
||||
else
|
||||
m_creature->SetHealth(m_creature->GetHealth()+health);
|
||||
me->SetHealth(me->GetHealth()+health);
|
||||
}
|
||||
|
||||
void JustDied(Unit* Killer)
|
||||
@@ -110,16 +110,16 @@ struct boss_hadronoxAI : public ScriptedAI
|
||||
{
|
||||
if (pInstance)
|
||||
pInstance->SetData(DATA_HADRONOX_EVENT, IN_PROGRESS);
|
||||
m_creature->SetInCombatWithZone();
|
||||
me->SetInCombatWithZone();
|
||||
}
|
||||
|
||||
void CheckDistance(float dist, const uint32 uiDiff)
|
||||
{
|
||||
if (!m_creature->isInCombat())
|
||||
if (!me->isInCombat())
|
||||
return;
|
||||
|
||||
float x=0.0f, y=0.0f, z=0.0f;
|
||||
m_creature->GetRespawnCoord(x,y,z);
|
||||
me->GetRespawnCoord(x,y,z);
|
||||
|
||||
if (uiCheckDistanceTimer <= uiDiff)
|
||||
uiCheckDistanceTimer = 5*IN_MILISECONDS;
|
||||
@@ -128,9 +128,9 @@ struct boss_hadronoxAI : public ScriptedAI
|
||||
uiCheckDistanceTimer -= uiDiff;
|
||||
return;
|
||||
}
|
||||
if (m_creature->IsInEvadeMode() || !m_creature->getVictim())
|
||||
if (me->IsInEvadeMode() || !me->getVictim())
|
||||
return;
|
||||
if (m_creature->GetDistance(x,y,z) > dist)
|
||||
if (me->GetDistance(x,y,z) > dist)
|
||||
EnterEvadeMode();
|
||||
}
|
||||
|
||||
@@ -142,7 +142,7 @@ struct boss_hadronoxAI : public ScriptedAI
|
||||
// Without he comes up through the air to players on the bridge after krikthir if players crossing this bridge!
|
||||
CheckDistance(fMaxDistance, diff);
|
||||
|
||||
if (m_creature->HasAura(SPELL_WEB_FRONT_DOORS) || m_creature->HasAura(SPELL_WEB_SIDE_DOORS))
|
||||
if (me->HasAura(SPELL_WEB_FRONT_DOORS) || me->HasAura(SPELL_WEB_SIDE_DOORS))
|
||||
{
|
||||
if (IsCombatMovement())
|
||||
SetCombatMovement(false);
|
||||
@@ -152,7 +152,7 @@ struct boss_hadronoxAI : public ScriptedAI
|
||||
|
||||
if (uiPierceTimer <= diff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(), SPELL_PIERCE_ARMOR);
|
||||
DoCast(me->getVictim(), SPELL_PIERCE_ARMOR);
|
||||
uiPierceTimer = 8*IN_MILISECONDS;
|
||||
} else uiPierceTimer -= diff;
|
||||
|
||||
@@ -182,7 +182,7 @@ struct boss_hadronoxAI : public ScriptedAI
|
||||
|
||||
if (uiDoorsTimer <= diff)
|
||||
{
|
||||
//DoCast(m_creature, RAND(SPELL_WEB_FRONT_DOORS, SPELL_WEB_SIDE_DOORS));
|
||||
//DoCast(me, RAND(SPELL_WEB_FRONT_DOORS, SPELL_WEB_SIDE_DOORS));
|
||||
uiDoorsTimer = urand(30*IN_MILISECONDS,60*IN_MILISECONDS);
|
||||
} else uiDoorsTimer -= diff;
|
||||
|
||||
|
||||
@@ -116,7 +116,7 @@ struct boss_krik_thirAI : public ScriptedAI
|
||||
|
||||
void EnterCombat(Unit* who)
|
||||
{
|
||||
DoScriptText(SAY_AGGRO, m_creature);
|
||||
DoScriptText(SAY_AGGRO, me);
|
||||
Summon();
|
||||
uiSummonTimer = 15*IN_MILISECONDS;
|
||||
|
||||
@@ -126,22 +126,22 @@ struct boss_krik_thirAI : public ScriptedAI
|
||||
|
||||
void Summon()
|
||||
{
|
||||
m_creature->SummonCreature(MOB_SKITTERING_SWARMER,SpawnPoint[0],TEMPSUMMON_TIMED_DESPAWN,25*IN_MILISECONDS);
|
||||
m_creature->SummonCreature(MOB_SKITTERING_SWARMER,SpawnPoint[0],TEMPSUMMON_TIMED_DESPAWN,25*IN_MILISECONDS);
|
||||
m_creature->SummonCreature(MOB_SKITTERING_SWARMER,SpawnPoint[1],TEMPSUMMON_TIMED_DESPAWN,25*IN_MILISECONDS);
|
||||
m_creature->SummonCreature(MOB_SKITTERING_SWARMER,SpawnPoint[1],TEMPSUMMON_TIMED_DESPAWN,25*IN_MILISECONDS);
|
||||
m_creature->SummonCreature(MOB_SKITTERING_SWARMER,SpawnPoint[2],TEMPSUMMON_TIMED_DESPAWN,25*IN_MILISECONDS);
|
||||
m_creature->SummonCreature(MOB_SKITTERING_SWARMER,SpawnPoint[2],TEMPSUMMON_TIMED_DESPAWN,25*IN_MILISECONDS);
|
||||
m_creature->SummonCreature(MOB_SKITTERING_SWARMER,SpawnPoint[3],TEMPSUMMON_TIMED_DESPAWN,25*IN_MILISECONDS);
|
||||
m_creature->SummonCreature(MOB_SKITTERING_SWARMER,SpawnPoint[3],TEMPSUMMON_TIMED_DESPAWN,25*IN_MILISECONDS);
|
||||
m_creature->SummonCreature(MOB_SKITTERING_INFECTIOR,SpawnPoint[4],TEMPSUMMON_TIMED_DESPAWN,25*IN_MILISECONDS);
|
||||
m_creature->SummonCreature(MOB_SKITTERING_SWARMER,SpawnPoint[4],TEMPSUMMON_TIMED_DESPAWN,25*IN_MILISECONDS);
|
||||
m_creature->SummonCreature(MOB_SKITTERING_INFECTIOR,SpawnPoint[5],TEMPSUMMON_TIMED_DESPAWN,25*IN_MILISECONDS);
|
||||
m_creature->SummonCreature(MOB_SKITTERING_SWARMER,SpawnPoint[5],TEMPSUMMON_TIMED_DESPAWN,25*IN_MILISECONDS);
|
||||
m_creature->SummonCreature(MOB_SKITTERING_INFECTIOR,SpawnPoint[6],TEMPSUMMON_TIMED_DESPAWN,25*IN_MILISECONDS);
|
||||
m_creature->SummonCreature(MOB_SKITTERING_SWARMER,SpawnPoint[6],TEMPSUMMON_TIMED_DESPAWN,25*IN_MILISECONDS);
|
||||
m_creature->SummonCreature(MOB_SKITTERING_SWARMER,SpawnPoint[7],TEMPSUMMON_TIMED_DESPAWN,25*IN_MILISECONDS);
|
||||
m_creature->SummonCreature(MOB_SKITTERING_SWARMER,SpawnPoint[7],TEMPSUMMON_TIMED_DESPAWN,25*IN_MILISECONDS);
|
||||
me->SummonCreature(MOB_SKITTERING_SWARMER,SpawnPoint[0],TEMPSUMMON_TIMED_DESPAWN,25*IN_MILISECONDS);
|
||||
me->SummonCreature(MOB_SKITTERING_SWARMER,SpawnPoint[0],TEMPSUMMON_TIMED_DESPAWN,25*IN_MILISECONDS);
|
||||
me->SummonCreature(MOB_SKITTERING_SWARMER,SpawnPoint[1],TEMPSUMMON_TIMED_DESPAWN,25*IN_MILISECONDS);
|
||||
me->SummonCreature(MOB_SKITTERING_SWARMER,SpawnPoint[1],TEMPSUMMON_TIMED_DESPAWN,25*IN_MILISECONDS);
|
||||
me->SummonCreature(MOB_SKITTERING_SWARMER,SpawnPoint[2],TEMPSUMMON_TIMED_DESPAWN,25*IN_MILISECONDS);
|
||||
me->SummonCreature(MOB_SKITTERING_SWARMER,SpawnPoint[2],TEMPSUMMON_TIMED_DESPAWN,25*IN_MILISECONDS);
|
||||
me->SummonCreature(MOB_SKITTERING_SWARMER,SpawnPoint[3],TEMPSUMMON_TIMED_DESPAWN,25*IN_MILISECONDS);
|
||||
me->SummonCreature(MOB_SKITTERING_SWARMER,SpawnPoint[3],TEMPSUMMON_TIMED_DESPAWN,25*IN_MILISECONDS);
|
||||
me->SummonCreature(MOB_SKITTERING_INFECTIOR,SpawnPoint[4],TEMPSUMMON_TIMED_DESPAWN,25*IN_MILISECONDS);
|
||||
me->SummonCreature(MOB_SKITTERING_SWARMER,SpawnPoint[4],TEMPSUMMON_TIMED_DESPAWN,25*IN_MILISECONDS);
|
||||
me->SummonCreature(MOB_SKITTERING_INFECTIOR,SpawnPoint[5],TEMPSUMMON_TIMED_DESPAWN,25*IN_MILISECONDS);
|
||||
me->SummonCreature(MOB_SKITTERING_SWARMER,SpawnPoint[5],TEMPSUMMON_TIMED_DESPAWN,25*IN_MILISECONDS);
|
||||
me->SummonCreature(MOB_SKITTERING_INFECTIOR,SpawnPoint[6],TEMPSUMMON_TIMED_DESPAWN,25*IN_MILISECONDS);
|
||||
me->SummonCreature(MOB_SKITTERING_SWARMER,SpawnPoint[6],TEMPSUMMON_TIMED_DESPAWN,25*IN_MILISECONDS);
|
||||
me->SummonCreature(MOB_SKITTERING_SWARMER,SpawnPoint[7],TEMPSUMMON_TIMED_DESPAWN,25*IN_MILISECONDS);
|
||||
me->SummonCreature(MOB_SKITTERING_SWARMER,SpawnPoint[7],TEMPSUMMON_TIMED_DESPAWN,25*IN_MILISECONDS);
|
||||
}
|
||||
|
||||
void UpdateAI(const uint32 diff)
|
||||
@@ -157,7 +157,7 @@ struct boss_krik_thirAI : public ScriptedAI
|
||||
|
||||
if (uiMindFlayTimer <= diff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(), SPELL_MIND_FLAY);
|
||||
DoCast(me->getVictim(), SPELL_MIND_FLAY);
|
||||
uiMindFlayTimer = 15*IN_MILISECONDS;
|
||||
} else uiMindFlayTimer -= diff;
|
||||
|
||||
@@ -173,38 +173,38 @@ struct boss_krik_thirAI : public ScriptedAI
|
||||
uiCurseFatigueTimer = 10*IN_MILISECONDS;
|
||||
} else uiCurseFatigueTimer -= diff;
|
||||
|
||||
if (!m_creature->HasAura(SPELL_FRENZY) && HealthBelowPct(10))
|
||||
DoCast(m_creature, SPELL_FRENZY, true);
|
||||
if (!me->HasAura(SPELL_FRENZY) && HealthBelowPct(10))
|
||||
DoCast(me, SPELL_FRENZY, true);
|
||||
|
||||
DoMeleeAttackIfReady();
|
||||
}
|
||||
void JustDied(Unit* killer)
|
||||
{
|
||||
DoScriptText(SAY_DEATH, m_creature);
|
||||
DoScriptText(SAY_DEATH, me);
|
||||
|
||||
if (pInstance)
|
||||
{
|
||||
pInstance->SetData(DATA_KRIKTHIR_THE_GATEWATCHER_EVENT, DONE);
|
||||
//Achievement: Watch him die
|
||||
Creature *pAdd1, *pAdd2, *pAdd3;
|
||||
if ((pAdd1 = Unit::GetCreature(*m_creature, pInstance->GetData64(DATA_WATCHER_GASHRA))) && pAdd1->isAlive() &&
|
||||
(pAdd2 = Unit::GetCreature(*m_creature, pInstance->GetData64(DATA_WATCHER_SILTHIK))) && pAdd2->isAlive() &&
|
||||
(pAdd3 = Unit::GetCreature(*m_creature, pInstance->GetData64(DATA_WATCHER_NARJIL))) && pAdd3->isAlive() &&
|
||||
if ((pAdd1 = Unit::GetCreature(*me, pInstance->GetData64(DATA_WATCHER_GASHRA))) && pAdd1->isAlive() &&
|
||||
(pAdd2 = Unit::GetCreature(*me, pInstance->GetData64(DATA_WATCHER_SILTHIK))) && pAdd2->isAlive() &&
|
||||
(pAdd3 = Unit::GetCreature(*me, pInstance->GetData64(DATA_WATCHER_NARJIL))) && pAdd3->isAlive() &&
|
||||
IsHeroic())
|
||||
pInstance->DoCompleteAchievement(ACHIEV_WATH_HIM_DIE);
|
||||
}
|
||||
}
|
||||
void KilledUnit(Unit *victim)
|
||||
{
|
||||
if (victim == m_creature)
|
||||
if (victim == me)
|
||||
return;
|
||||
|
||||
DoScriptText(RAND(SAY_SLAY_1,SAY_SLAY_2), m_creature);
|
||||
DoScriptText(RAND(SAY_SLAY_1,SAY_SLAY_2), me);
|
||||
}
|
||||
|
||||
void JustSummoned(Creature* summoned)
|
||||
{
|
||||
summoned->GetMotionMaster()->MovePoint(0,m_creature->GetPositionX(),m_creature->GetPositionY(),m_creature->GetPositionZ());
|
||||
summoned->GetMotionMaster()->MovePoint(0,me->GetPositionX(),me->GetPositionY(),me->GetPositionZ());
|
||||
}
|
||||
};
|
||||
|
||||
@@ -215,7 +215,7 @@ struct npc_skittering_infectorAI : public ScriptedAI
|
||||
void JustDied(Unit* killer)
|
||||
{
|
||||
//The spell is not working propperly
|
||||
DoCast(m_creature->getVictim(),SPELL_ACID_SPLASH, true);
|
||||
DoCast(me->getVictim(),SPELL_ACID_SPLASH, true);
|
||||
}
|
||||
|
||||
};
|
||||
@@ -243,7 +243,7 @@ struct npc_anub_ar_skirmisherAI : public ScriptedAI
|
||||
if (Unit* pTarget = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true))
|
||||
{
|
||||
DoResetThreat();
|
||||
m_creature->AddThreat(pTarget,1.0f);
|
||||
me->AddThreat(pTarget,1.0f);
|
||||
DoCast(pTarget, SPELL_CHARGE, true);
|
||||
}
|
||||
uiChargeTimer = 15*IN_MILISECONDS;
|
||||
@@ -251,7 +251,7 @@ struct npc_anub_ar_skirmisherAI : public ScriptedAI
|
||||
|
||||
if (uiBackstabTimer <= diff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(), SPELL_BACKSTAB);
|
||||
DoCast(me->getVictim(), SPELL_BACKSTAB);
|
||||
uiBackstabTimer = 12*IN_MILISECONDS;
|
||||
} else uiBackstabTimer -= diff;
|
||||
|
||||
@@ -287,7 +287,7 @@ struct npc_anub_ar_shadowcasterAI : public ScriptedAI
|
||||
|
||||
if (uiShadowNovaTimer <= diff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(), SPELL_SHADOW_NOVA, true);
|
||||
DoCast(me->getVictim(), SPELL_SHADOW_NOVA, true);
|
||||
uiShadowNovaTimer = 17*IN_MILISECONDS;
|
||||
} else uiShadowNovaTimer -= diff;
|
||||
|
||||
@@ -315,13 +315,13 @@ struct npc_anub_ar_warriorAI : public ScriptedAI
|
||||
|
||||
if (uiStrikeTimer <= diff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(), SPELL_STRIKE, true);
|
||||
DoCast(me->getVictim(), SPELL_STRIKE, true);
|
||||
uiStrikeTimer = 15*IN_MILISECONDS;
|
||||
} else uiStrikeTimer -= diff;
|
||||
|
||||
if (uiCleaveTimer <= diff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(), SPELL_CLEAVE, true);
|
||||
DoCast(me->getVictim(), SPELL_CLEAVE, true);
|
||||
uiCleaveTimer = 17*IN_MILISECONDS;
|
||||
} else uiCleaveTimer -= diff;
|
||||
|
||||
@@ -346,7 +346,7 @@ struct npc_watcher_gashraAI : public ScriptedAI
|
||||
|
||||
void EnterCombat(Unit* who)
|
||||
{
|
||||
DoCast(m_creature, SPELL_ENRAGE, true);
|
||||
DoCast(me, SPELL_ENRAGE, true);
|
||||
}
|
||||
|
||||
void UpdateAI(const uint32 diff)
|
||||
@@ -363,7 +363,7 @@ struct npc_watcher_gashraAI : public ScriptedAI
|
||||
|
||||
if (uiInfectedBiteTimer <= diff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(), SPELL_INFECTED_BITE, true);
|
||||
DoCast(me->getVictim(), SPELL_INFECTED_BITE, true);
|
||||
uiInfectedBiteTimer = 15*IN_MILISECONDS;
|
||||
} else uiInfectedBiteTimer -= diff;
|
||||
|
||||
@@ -400,13 +400,13 @@ struct npc_watcher_narjilAI : public ScriptedAI
|
||||
|
||||
if (uiInfectedBiteTimer <= diff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(), SPELL_INFECTED_BITE, true);
|
||||
DoCast(me->getVictim(), SPELL_INFECTED_BITE, true);
|
||||
uiInfectedBiteTimer = 11*IN_MILISECONDS;
|
||||
} else uiInfectedBiteTimer -= diff;
|
||||
|
||||
if (uiBindingWebsTimer <= diff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(), SPELL_BLINDING_WEBS, true);
|
||||
DoCast(me->getVictim(), SPELL_BLINDING_WEBS, true);
|
||||
uiBindingWebsTimer = 17*IN_MILISECONDS;
|
||||
} else uiBindingWebsTimer -= diff;
|
||||
|
||||
@@ -444,13 +444,13 @@ struct npc_watcher_silthikAI : public ScriptedAI
|
||||
|
||||
if (uiInfectedBiteTimer <= diff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(), SPELL_INFECTED_BITE, true);
|
||||
DoCast(me->getVictim(), SPELL_INFECTED_BITE, true);
|
||||
uiInfectedBiteTimer = 15*IN_MILISECONDS;
|
||||
} else uiInfectedBiteTimer -= diff;
|
||||
|
||||
if (uiPoisonSprayTimer <= diff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(), SPELL_POSION_SPRAY, true);
|
||||
DoCast(me->getVictim(), SPELL_POSION_SPRAY, true);
|
||||
uiPoisonSprayTimer = 17*IN_MILISECONDS;
|
||||
} else uiPoisonSprayTimer -= diff;
|
||||
|
||||
|
||||
@@ -243,27 +243,27 @@ struct npc_sinkhole_kill_creditAI : public ScriptedAI
|
||||
switch (Phase)
|
||||
{
|
||||
case 1:
|
||||
DoCast(m_creature, SPELL_EXPLODE_CART, true);
|
||||
DoCast(m_creature, SPELL_SUMMON_CART, true);
|
||||
if (GameObject* cart = m_creature->FindNearestGameObject(188160,3))
|
||||
DoCast(me, SPELL_EXPLODE_CART, true);
|
||||
DoCast(me, SPELL_SUMMON_CART, true);
|
||||
if (GameObject* cart = me->FindNearestGameObject(188160,3))
|
||||
cart->SetUInt32Value(GAMEOBJECT_FACTION, 14);
|
||||
uiPhaseTimer = 3000;
|
||||
Phase = 2;
|
||||
break;
|
||||
case 2:
|
||||
if (GameObject* cart = m_creature->FindNearestGameObject(188160,3))
|
||||
if (GameObject* cart = me->FindNearestGameObject(188160,3))
|
||||
cart->UseDoorOrButton();
|
||||
DoCast(m_creature, SPELL_EXPLODE_CART, true);
|
||||
DoCast(me, SPELL_EXPLODE_CART, true);
|
||||
uiPhaseTimer = 3000;
|
||||
Phase = 3;
|
||||
break;
|
||||
case 3:
|
||||
DoCast(m_creature, SPELL_EXPLODE_CART, true);
|
||||
DoCast(me, SPELL_EXPLODE_CART, true);
|
||||
uiPhaseTimer = 2000;
|
||||
Phase = 4;
|
||||
case 5:
|
||||
DoCast(m_creature, SPELL_SUMMON_WORM, true);
|
||||
if (Unit* worm = m_creature->FindNearestCreature(26250, 3))
|
||||
DoCast(me, SPELL_SUMMON_WORM, true);
|
||||
if (Unit* worm = me->FindNearestCreature(26250, 3))
|
||||
{
|
||||
worm->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
||||
worm->HandleEmoteCommand(EMOTE_ONESHOT_EMERGE);
|
||||
@@ -272,19 +272,19 @@ struct npc_sinkhole_kill_creditAI : public ScriptedAI
|
||||
Phase = 6;
|
||||
break;
|
||||
case 6:
|
||||
DoCast(m_creature, SPELL_EXPLODE_CART, true);
|
||||
if (Unit* worm = m_creature->FindNearestCreature(26250, 3))
|
||||
DoCast(me, SPELL_EXPLODE_CART, true);
|
||||
if (Unit* worm = me->FindNearestCreature(26250, 3))
|
||||
{
|
||||
m_creature->Kill(worm);
|
||||
me->Kill(worm);
|
||||
worm->RemoveFlag(UNIT_DYNAMIC_FLAGS, UNIT_DYNFLAG_LOOTABLE);
|
||||
}
|
||||
uiPhaseTimer = 2000;
|
||||
Phase = 7;
|
||||
break;
|
||||
case 7:
|
||||
DoCast(m_creature, SPELL_EXPLODE_CART, true);
|
||||
DoCast(me, SPELL_EXPLODE_CART, true);
|
||||
if (Player *caster = Unit::GetPlayer(casterGuid))
|
||||
caster->KilledMonster(m_creature->GetCreatureInfo(),m_creature->GetGUID());
|
||||
caster->KilledMonster(me->GetCreatureInfo(),me->GetGUID());
|
||||
uiPhaseTimer = 5000;
|
||||
Phase = 8;
|
||||
break;
|
||||
@@ -475,11 +475,11 @@ struct mob_nerubar_victimAI : public ScriptedAI
|
||||
uint8 uiRand = urand(0,99);
|
||||
if (uiRand < 25)
|
||||
{
|
||||
Killer->CastSpell(m_creature,45532,true);
|
||||
Killer->CastSpell(me,45532,true);
|
||||
CAST_PLR(Killer)->KilledMonsterCredit(WARSONG_PEON, 0);
|
||||
}
|
||||
else if (uiRand < 75)
|
||||
Killer->CastSpell(m_creature, nerubarVictims[urand(0,2)], true);
|
||||
Killer->CastSpell(me, nerubarVictims[urand(0,2)], true);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -503,9 +503,9 @@ struct npc_scourge_prisonerAI : public ScriptedAI
|
||||
|
||||
void Reset()
|
||||
{
|
||||
m_creature->SetReactState(REACT_PASSIVE);
|
||||
me->SetReactState(REACT_PASSIVE);
|
||||
|
||||
if (GameObject* pGO = m_creature->FindNearestGameObject(GO_SCOURGE_CAGE,5.0f))
|
||||
if (GameObject* pGO = me->FindNearestGameObject(GO_SCOURGE_CAGE,5.0f))
|
||||
if (pGO->GetGoState() == GO_STATE_ACTIVE)
|
||||
pGO->SetGoState(GO_STATE_READY);
|
||||
}
|
||||
@@ -542,35 +542,35 @@ struct npc_jennyAI : public ScriptedAI
|
||||
if (!setCrateNumber)
|
||||
setCrateNumber = true;
|
||||
|
||||
m_creature->SetReactState(REACT_PASSIVE);
|
||||
me->SetReactState(REACT_PASSIVE);
|
||||
|
||||
switch (CAST_PLR(m_creature->GetOwner())->GetTeamId())
|
||||
switch (CAST_PLR(me->GetOwner())->GetTeamId())
|
||||
{
|
||||
case TEAM_ALLIANCE:
|
||||
m_creature->setFaction(FACTION_ESCORT_A_NEUTRAL_ACTIVE);
|
||||
me->setFaction(FACTION_ESCORT_A_NEUTRAL_ACTIVE);
|
||||
break;
|
||||
default:
|
||||
case TEAM_HORDE:
|
||||
m_creature->setFaction(FACTION_ESCORT_H_NEUTRAL_ACTIVE);
|
||||
me->setFaction(FACTION_ESCORT_H_NEUTRAL_ACTIVE);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void DamageTaken(Unit* pDone_by, uint32& uiDamage)
|
||||
{
|
||||
DoCast(m_creature, SPELL_DROP_CRATE, true);
|
||||
DoCast(me, SPELL_DROP_CRATE, true);
|
||||
}
|
||||
|
||||
void UpdateAI(const uint32 diff)
|
||||
{
|
||||
if (setCrateNumber)
|
||||
{
|
||||
m_creature->AddAura(SPELL_CRATES_CARRIED,m_creature);
|
||||
me->AddAura(SPELL_CRATES_CARRIED,me);
|
||||
setCrateNumber = false;
|
||||
}
|
||||
|
||||
if (!setCrateNumber && !m_creature->HasAura(SPELL_CRATES_CARRIED))
|
||||
m_creature->DisappearAndDie();
|
||||
if (!setCrateNumber && !me->HasAura(SPELL_CRATES_CARRIED))
|
||||
me->DisappearAndDie();
|
||||
|
||||
if (!UpdateVictim())
|
||||
return;
|
||||
@@ -597,7 +597,7 @@ struct npc_fezzix_geartwistAI : public ScriptedAI
|
||||
if (pWho->GetTypeId() != TYPEID_UNIT)
|
||||
return;
|
||||
|
||||
if (pWho->GetEntry() == NPC_JENNY && m_creature->IsWithinDistInMap(pWho, 10.0f))
|
||||
if (pWho->GetEntry() == NPC_JENNY && me->IsWithinDistInMap(pWho, 10.0f))
|
||||
{
|
||||
if (Unit* pOwner = pWho->GetOwner())
|
||||
{
|
||||
@@ -659,7 +659,7 @@ struct npc_nesingwary_trapperAI : public ScriptedAI
|
||||
|
||||
void Reset()
|
||||
{
|
||||
m_creature->SetVisibility(VISIBILITY_OFF);
|
||||
me->SetVisibility(VISIBILITY_OFF);
|
||||
uiPhaseTimer = 2500;
|
||||
Phase = 1;
|
||||
go_caribouGUID = 0;
|
||||
@@ -669,16 +669,16 @@ struct npc_nesingwary_trapperAI : public ScriptedAI
|
||||
|
||||
void JustDied(Unit *who)
|
||||
{
|
||||
if (GameObject *go_caribou = m_creature->GetMap()->GetGameObject(go_caribouGUID))
|
||||
if (GameObject *go_caribou = me->GetMap()->GetGameObject(go_caribouGUID))
|
||||
go_caribou->SetLootState(GO_JUST_DEACTIVATED);
|
||||
|
||||
if (TempSummon *summon = m_creature->ToTempSummon())
|
||||
if (TempSummon *summon = me->ToTempSummon())
|
||||
if (summon->isSummon())
|
||||
if (Unit *pTemp = summon->GetSummoner())
|
||||
if (pTemp->GetTypeId() == TYPEID_PLAYER)
|
||||
CAST_PLR(pTemp)->KilledMonsterCredit(m_creature->GetEntry(),0);
|
||||
CAST_PLR(pTemp)->KilledMonsterCredit(me->GetEntry(),0);
|
||||
|
||||
if (GameObject *go_caribou = m_creature->GetMap()->GetGameObject(go_caribouGUID))
|
||||
if (GameObject *go_caribou = me->GetMap()->GetGameObject(go_caribouGUID))
|
||||
go_caribou->SetGoState(GO_STATE_READY);
|
||||
}
|
||||
|
||||
@@ -689,34 +689,34 @@ struct npc_nesingwary_trapperAI : public ScriptedAI
|
||||
switch (Phase)
|
||||
{
|
||||
case 1:
|
||||
m_creature->SetVisibility(VISIBILITY_ON);
|
||||
me->SetVisibility(VISIBILITY_ON);
|
||||
uiPhaseTimer = 2000;
|
||||
Phase = 2;
|
||||
break;
|
||||
|
||||
case 2:
|
||||
if (GameObject *go_fur = m_creature->FindNearestGameObject(GO_HIGH_QUALITY_FUR, 11.0f))
|
||||
m_creature->GetMotionMaster()->MovePoint(0, go_fur->GetPositionX(), go_fur->GetPositionY(), go_fur->GetPositionZ());
|
||||
if (GameObject *go_fur = me->FindNearestGameObject(GO_HIGH_QUALITY_FUR, 11.0f))
|
||||
me->GetMotionMaster()->MovePoint(0, go_fur->GetPositionX(), go_fur->GetPositionY(), go_fur->GetPositionZ());
|
||||
uiPhaseTimer = 1500;
|
||||
Phase = 3;
|
||||
break;
|
||||
case 3:
|
||||
//DoScriptText(SAY_NESINGWARY_1, m_creature);
|
||||
//DoScriptText(SAY_NESINGWARY_1, me);
|
||||
uiPhaseTimer = 2000;
|
||||
Phase = 4;
|
||||
break;
|
||||
case 4:
|
||||
m_creature->HandleEmoteCommand(EMOTE_ONESHOT_LOOT);
|
||||
me->HandleEmoteCommand(EMOTE_ONESHOT_LOOT);
|
||||
uiPhaseTimer = 1000;
|
||||
Phase = 5;
|
||||
break;
|
||||
case 5:
|
||||
m_creature->HandleEmoteCommand(EMOTE_ONESHOT_NONE);
|
||||
me->HandleEmoteCommand(EMOTE_ONESHOT_NONE);
|
||||
uiPhaseTimer = 500;
|
||||
Phase = 6;
|
||||
break;
|
||||
case 6:
|
||||
if (GameObject *go_fur = m_creature->FindNearestGameObject(GO_HIGH_QUALITY_FUR, 11.0f))
|
||||
if (GameObject *go_fur = me->FindNearestGameObject(GO_HIGH_QUALITY_FUR, 11.0f))
|
||||
go_fur->Delete();
|
||||
uiPhaseTimer = 500;
|
||||
Phase = 7;
|
||||
@@ -725,21 +725,21 @@ struct npc_nesingwary_trapperAI : public ScriptedAI
|
||||
case 7:
|
||||
{
|
||||
GameObject *go_caribou = NULL;
|
||||
if ((go_caribou = m_creature->FindNearestGameObject(GO_CARIBOU_TRAP_1, 5.0f)) ||
|
||||
(go_caribou = m_creature->FindNearestGameObject(GO_CARIBOU_TRAP_2, 5.0f)) ||
|
||||
(go_caribou = m_creature->FindNearestGameObject(GO_CARIBOU_TRAP_3, 5.0f)) ||
|
||||
(go_caribou = m_creature->FindNearestGameObject(GO_CARIBOU_TRAP_4, 5.0f)) ||
|
||||
(go_caribou = m_creature->FindNearestGameObject(GO_CARIBOU_TRAP_5, 5.0f)) ||
|
||||
(go_caribou = m_creature->FindNearestGameObject(GO_CARIBOU_TRAP_6, 5.0f)) ||
|
||||
(go_caribou = m_creature->FindNearestGameObject(GO_CARIBOU_TRAP_7, 5.0f)) ||
|
||||
(go_caribou = m_creature->FindNearestGameObject(GO_CARIBOU_TRAP_8, 5.0f)) ||
|
||||
(go_caribou = m_creature->FindNearestGameObject(GO_CARIBOU_TRAP_9, 5.0f)) ||
|
||||
(go_caribou = m_creature->FindNearestGameObject(GO_CARIBOU_TRAP_10, 5.0f)) ||
|
||||
(go_caribou = m_creature->FindNearestGameObject(GO_CARIBOU_TRAP_11, 5.0f)) ||
|
||||
(go_caribou = m_creature->FindNearestGameObject(GO_CARIBOU_TRAP_12, 5.0f)) ||
|
||||
(go_caribou = m_creature->FindNearestGameObject(GO_CARIBOU_TRAP_13, 5.0f)) ||
|
||||
(go_caribou = m_creature->FindNearestGameObject(GO_CARIBOU_TRAP_14, 5.0f)) ||
|
||||
(go_caribou = m_creature->FindNearestGameObject(GO_CARIBOU_TRAP_15, 5.0f)))
|
||||
if ((go_caribou = me->FindNearestGameObject(GO_CARIBOU_TRAP_1, 5.0f)) ||
|
||||
(go_caribou = me->FindNearestGameObject(GO_CARIBOU_TRAP_2, 5.0f)) ||
|
||||
(go_caribou = me->FindNearestGameObject(GO_CARIBOU_TRAP_3, 5.0f)) ||
|
||||
(go_caribou = me->FindNearestGameObject(GO_CARIBOU_TRAP_4, 5.0f)) ||
|
||||
(go_caribou = me->FindNearestGameObject(GO_CARIBOU_TRAP_5, 5.0f)) ||
|
||||
(go_caribou = me->FindNearestGameObject(GO_CARIBOU_TRAP_6, 5.0f)) ||
|
||||
(go_caribou = me->FindNearestGameObject(GO_CARIBOU_TRAP_7, 5.0f)) ||
|
||||
(go_caribou = me->FindNearestGameObject(GO_CARIBOU_TRAP_8, 5.0f)) ||
|
||||
(go_caribou = me->FindNearestGameObject(GO_CARIBOU_TRAP_9, 5.0f)) ||
|
||||
(go_caribou = me->FindNearestGameObject(GO_CARIBOU_TRAP_10, 5.0f)) ||
|
||||
(go_caribou = me->FindNearestGameObject(GO_CARIBOU_TRAP_11, 5.0f)) ||
|
||||
(go_caribou = me->FindNearestGameObject(GO_CARIBOU_TRAP_12, 5.0f)) ||
|
||||
(go_caribou = me->FindNearestGameObject(GO_CARIBOU_TRAP_13, 5.0f)) ||
|
||||
(go_caribou = me->FindNearestGameObject(GO_CARIBOU_TRAP_14, 5.0f)) ||
|
||||
(go_caribou = me->FindNearestGameObject(GO_CARIBOU_TRAP_15, 5.0f)))
|
||||
{
|
||||
go_caribou->SetGoState(GO_STATE_ACTIVE);
|
||||
go_caribouGUID = go_caribou->GetGUID();
|
||||
@@ -749,7 +749,7 @@ struct npc_nesingwary_trapperAI : public ScriptedAI
|
||||
}
|
||||
break;
|
||||
case 8:
|
||||
DoCast(m_creature, SPELL_TRAPPED, true);
|
||||
DoCast(me, SPELL_TRAPPED, true);
|
||||
Phase = 0;
|
||||
break;
|
||||
}
|
||||
@@ -821,27 +821,27 @@ struct npc_lurgglbrAI : public npc_escortAI
|
||||
switch(IntroPhase)
|
||||
{
|
||||
case 1:
|
||||
//DoScriptText(SAY_WP_1_LUR_START,m_creature);
|
||||
//DoScriptText(SAY_WP_1_LUR_START,me);
|
||||
IntroPhase = 2;
|
||||
IntroTimer = 7500;
|
||||
break;
|
||||
case 2:
|
||||
//DoScriptText(SAY_WP_1_LUR_END,m_creature);
|
||||
//DoScriptText(SAY_WP_1_LUR_END,me);
|
||||
IntroPhase = 3;
|
||||
IntroTimer = 7500;
|
||||
break;
|
||||
case 3:
|
||||
m_creature->SetReactState(REACT_AGGRESSIVE);
|
||||
me->SetReactState(REACT_AGGRESSIVE);
|
||||
IntroPhase = 0;
|
||||
IntroTimer = 0;
|
||||
break;
|
||||
case 4:
|
||||
//DoScriptText(SAY_WP_41_LUR_START,m_creature);
|
||||
//DoScriptText(SAY_WP_41_LUR_START,me);
|
||||
IntroPhase = 5;
|
||||
IntroTimer = 8000;
|
||||
break;
|
||||
case 5:
|
||||
//DoScriptText(SAY_WP_41_LUR_END,m_creature);
|
||||
//DoScriptText(SAY_WP_41_LUR_END,me);
|
||||
IntroPhase = 6;
|
||||
IntroTimer = 2500;
|
||||
break;
|
||||
@@ -854,7 +854,7 @@ struct npc_lurgglbrAI : public npc_escortAI
|
||||
break;
|
||||
|
||||
case 7:
|
||||
m_creature->ForcedDespawn();
|
||||
me->ForcedDespawn();
|
||||
IntroPhase = 0;
|
||||
IntroTimer = 0;
|
||||
break;
|
||||
@@ -935,7 +935,7 @@ struct npc_nexus_drake_hatchlingAI : public FollowerAI //The spell who makes the
|
||||
|
||||
void EnterCombat(Unit* pWho)
|
||||
{
|
||||
if (m_creature->canAttack(pWho))
|
||||
if (me->canAttack(pWho))
|
||||
AttackStart(pWho);
|
||||
}
|
||||
|
||||
@@ -944,7 +944,7 @@ struct npc_nexus_drake_hatchlingAI : public FollowerAI //The spell who makes the
|
||||
if (spell->Id == SPELL_DRAKE_HARPOON && caster->GetTypeId() == TYPEID_PLAYER)
|
||||
{
|
||||
HarpoonerGUID = caster->GetGUID();
|
||||
DoCast(m_creature, SPELL_RED_DRAGONBLOOD, true);
|
||||
DoCast(me, SPELL_RED_DRAGONBLOOD, true);
|
||||
}
|
||||
WithRedDragonBlood = true;
|
||||
}
|
||||
@@ -956,9 +956,9 @@ struct npc_nexus_drake_hatchlingAI : public FollowerAI //The spell who makes the
|
||||
if (!HarpoonerGUID)
|
||||
return;
|
||||
|
||||
if (m_creature->HasAura(SPELL_SUBDUED) && pWho->GetEntry() == NPC_RAELORASZ)
|
||||
if (me->HasAura(SPELL_SUBDUED) && pWho->GetEntry() == NPC_RAELORASZ)
|
||||
{
|
||||
if (m_creature->IsWithinDistInMap(pWho, INTERACTION_DISTANCE))
|
||||
if (me->IsWithinDistInMap(pWho, INTERACTION_DISTANCE))
|
||||
{
|
||||
if (Player *pHarpooner = Unit::GetPlayer(HarpoonerGUID))
|
||||
{
|
||||
@@ -966,7 +966,7 @@ struct npc_nexus_drake_hatchlingAI : public FollowerAI //The spell who makes the
|
||||
pHarpooner->RemoveAura(SPELL_DRAKE_HATCHLING_SUBDUED);
|
||||
SetFollowComplete();
|
||||
HarpoonerGUID = 0;
|
||||
m_creature->DisappearAndDie();
|
||||
me->DisappearAndDie();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -974,17 +974,17 @@ struct npc_nexus_drake_hatchlingAI : public FollowerAI //The spell who makes the
|
||||
|
||||
void UpdateAI(const uint32 diff)
|
||||
{
|
||||
if (WithRedDragonBlood && HarpoonerGUID && !m_creature->HasAura(SPELL_RED_DRAGONBLOOD))
|
||||
if (WithRedDragonBlood && HarpoonerGUID && !me->HasAura(SPELL_RED_DRAGONBLOOD))
|
||||
{
|
||||
if (Player *pHarpooner = Unit::GetPlayer(HarpoonerGUID))
|
||||
{
|
||||
EnterEvadeMode();
|
||||
StartFollow(pHarpooner, 35, NULL);
|
||||
|
||||
DoCast(m_creature, SPELL_SUBDUED, true);
|
||||
DoCast(me, SPELL_SUBDUED, true);
|
||||
pHarpooner->CastSpell(pHarpooner, SPELL_DRAKE_HATCHLING_SUBDUED, true);
|
||||
|
||||
m_creature->AttackStop();
|
||||
me->AttackStop();
|
||||
WithRedDragonBlood = false;
|
||||
}
|
||||
}
|
||||
@@ -1064,8 +1064,8 @@ struct npc_thassarianAI : public npc_escortAI
|
||||
|
||||
void Reset()
|
||||
{
|
||||
m_creature->RestoreFaction();
|
||||
m_creature->RemoveStandFlags(UNIT_STAND_STATE_SIT);
|
||||
me->RestoreFaction();
|
||||
me->RemoveStandFlags(UNIT_STAND_STATE_SIT);
|
||||
|
||||
uiArthas = 0;
|
||||
uiTalbot = 0;
|
||||
@@ -1092,7 +1092,7 @@ struct npc_thassarianAI : public npc_escortAI
|
||||
{
|
||||
case 3:
|
||||
SetEscortPaused(true);
|
||||
if (Creature *pArthas = m_creature->SummonCreature(NPC_IMAGE_LICH_KING, 3730.313, 3518.689, 473.324, 1.562, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 120000))
|
||||
if (Creature *pArthas = me->SummonCreature(NPC_IMAGE_LICH_KING, 3730.313, 3518.689, 473.324, 1.562, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 120000))
|
||||
{
|
||||
uiArthas = pArthas->GetGUID();
|
||||
pArthas->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
||||
@@ -1100,13 +1100,13 @@ struct npc_thassarianAI : public npc_escortAI
|
||||
pArthas->AddUnitMovementFlag(MOVEMENTFLAG_WALK_MODE);
|
||||
pArthas->GetMotionMaster()->MovePoint(0, 3737.374756,3564.841309,477.433014);
|
||||
}
|
||||
if (Creature *pTalbot = m_creature->SummonCreature(NPC_COUNSELOR_TALBOT, 3747.23, 3614.936, 473.321, 4.462012, TEMPSUMMON_CORPSE_TIMED_DESPAWN,120000))
|
||||
if (Creature *pTalbot = me->SummonCreature(NPC_COUNSELOR_TALBOT, 3747.23, 3614.936, 473.321, 4.462012, TEMPSUMMON_CORPSE_TIMED_DESPAWN,120000))
|
||||
{
|
||||
uiTalbot = pTalbot->GetGUID();
|
||||
pTalbot->AddUnitMovementFlag(MOVEMENTFLAG_WALK_MODE);
|
||||
pTalbot->GetMotionMaster()->MovePoint(0, 3738.000977,3568.882080,477.433014);
|
||||
}
|
||||
m_creature->RemoveUnitMovementFlag(MOVEMENTFLAG_WALK_MODE);
|
||||
me->RemoveUnitMovementFlag(MOVEMENTFLAG_WALK_MODE);
|
||||
break;
|
||||
|
||||
case 4:
|
||||
@@ -1131,14 +1131,14 @@ struct npc_thassarianAI : public npc_escortAI
|
||||
{
|
||||
bArlosInPosition = false;
|
||||
bLeryssaInPosition = false;
|
||||
DoScriptText(SAY_THASSARIAN_1, m_creature);
|
||||
DoScriptText(SAY_THASSARIAN_1, me);
|
||||
SetEscortPaused(false);
|
||||
}
|
||||
|
||||
if (uiPhaseTimer <= uiDiff)
|
||||
{
|
||||
Creature* pTalbot = m_creature->GetCreature(*m_creature, uiTalbot);
|
||||
Creature* pArthas = m_creature->GetCreature(*m_creature, uiArthas);
|
||||
Creature* pTalbot = me->GetCreature(*me, uiTalbot);
|
||||
Creature* pArthas = me->GetCreature(*me, uiArthas);
|
||||
switch (uiPhase)
|
||||
{
|
||||
case 1:
|
||||
@@ -1182,13 +1182,13 @@ struct npc_thassarianAI : public npc_escortAI
|
||||
break;
|
||||
|
||||
case 6:
|
||||
if (Creature* pArlos = m_creature->SummonCreature(NPC_GENERAL_ARLOS, 3745.527100, 3615.655029, 473.321533, 4.447805, TEMPSUMMON_CORPSE_TIMED_DESPAWN,120000))
|
||||
if (Creature* pArlos = me->SummonCreature(NPC_GENERAL_ARLOS, 3745.527100, 3615.655029, 473.321533, 4.447805, TEMPSUMMON_CORPSE_TIMED_DESPAWN,120000))
|
||||
{
|
||||
uiArlos = pArlos->GetGUID();
|
||||
pArlos->AddUnitMovementFlag(MOVEMENTFLAG_WALK_MODE);
|
||||
pArlos->GetMotionMaster()->MovePoint(0, 3735.570068, 3572.419922, 477.441010);
|
||||
}
|
||||
if (Creature *pLeryssa = m_creature->SummonCreature(NPC_LERYSSA, 3749.654541, 3614.959717, 473.323486, 4.524959, TEMPSUMMON_CORPSE_TIMED_DESPAWN,120000))
|
||||
if (Creature *pLeryssa = me->SummonCreature(NPC_LERYSSA, 3749.654541, 3614.959717, 473.323486, 4.524959, TEMPSUMMON_CORPSE_TIMED_DESPAWN,120000))
|
||||
{
|
||||
uiLeryssa = pLeryssa->GetGUID();
|
||||
pLeryssa->AddUnitMovementFlag(MOVEMENTFLAG_WALK_MODE);
|
||||
@@ -1201,7 +1201,7 @@ struct npc_thassarianAI : public npc_escortAI
|
||||
break;
|
||||
|
||||
case 7:
|
||||
DoScriptText(SAY_THASSARIAN_2, m_creature);
|
||||
DoScriptText(SAY_THASSARIAN_2, me);
|
||||
uiPhaseTimer = 5000;
|
||||
++uiPhase;
|
||||
break;
|
||||
@@ -1209,7 +1209,7 @@ struct npc_thassarianAI : public npc_escortAI
|
||||
case 8:
|
||||
if (pArthas && pTalbot)
|
||||
{
|
||||
pArthas->SetInFront(m_creature); //The client doesen't update with the new orientation :l
|
||||
pArthas->SetInFront(me); //The client doesen't update with the new orientation :l
|
||||
pTalbot->SetStandState(UNIT_STAND_STATE_STAND);
|
||||
DoScriptText(SAY_LICH_2, pArthas);
|
||||
}
|
||||
@@ -1218,7 +1218,7 @@ struct npc_thassarianAI : public npc_escortAI
|
||||
break;
|
||||
|
||||
case 9:
|
||||
DoScriptText(SAY_THASSARIAN_3, m_creature);
|
||||
DoScriptText(SAY_THASSARIAN_3, me);
|
||||
uiPhaseTimer = 5000;
|
||||
uiPhase = 10;
|
||||
break;
|
||||
@@ -1251,37 +1251,37 @@ struct npc_thassarianAI : public npc_escortAI
|
||||
break;
|
||||
|
||||
case 14:
|
||||
m_creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
||||
if (pTalbot)
|
||||
{
|
||||
pTalbot->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
||||
pTalbot->SetReactState(REACT_AGGRESSIVE);
|
||||
pTalbot->CastSpell(m_creature, SPELL_SHADOW_BOLT, false);
|
||||
pTalbot->CastSpell(me, SPELL_SHADOW_BOLT, false);
|
||||
}
|
||||
uiPhaseTimer = 1500;
|
||||
++uiPhase;
|
||||
break;
|
||||
|
||||
case 15:
|
||||
m_creature->SetReactState(REACT_AGGRESSIVE);
|
||||
me->SetReactState(REACT_AGGRESSIVE);
|
||||
AttackStart(pTalbot);
|
||||
uiPhase = 0;
|
||||
break;
|
||||
|
||||
case 16:
|
||||
m_creature->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_QUESTGIVER);
|
||||
me->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_QUESTGIVER);
|
||||
uiPhaseTimer = 20000;
|
||||
++uiPhase;
|
||||
break;
|
||||
|
||||
case 17:
|
||||
if (Creature* pLeryssa = m_creature->GetCreature(*m_creature, uiLeryssa))
|
||||
if (Creature* pLeryssa = me->GetCreature(*me, uiLeryssa))
|
||||
pLeryssa->RemoveFromWorld();
|
||||
if (Creature* pArlos= m_creature->GetCreature(*m_creature, uiArlos))
|
||||
if (Creature* pArlos= me->GetCreature(*me, uiArlos))
|
||||
pArlos->RemoveFromWorld();
|
||||
if (pTalbot)
|
||||
pTalbot->RemoveFromWorld();
|
||||
m_creature->RemoveStandFlags(UNIT_STAND_STATE_SIT);
|
||||
me->RemoveStandFlags(UNIT_STAND_STATE_SIT);
|
||||
SetEscortPaused(false);
|
||||
uiPhaseTimer = 0;
|
||||
uiPhase = 0;
|
||||
@@ -1296,16 +1296,16 @@ struct npc_thassarianAI : public npc_escortAI
|
||||
|
||||
void JustDied(Unit* pKiller)
|
||||
{
|
||||
if (Creature* pTalbot = m_creature->GetCreature(*m_creature, uiTalbot))
|
||||
if (Creature* pTalbot = me->GetCreature(*me, uiTalbot))
|
||||
pTalbot->RemoveFromWorld();
|
||||
|
||||
if (Creature* pLeryssa = m_creature->GetCreature(*m_creature, uiLeryssa))
|
||||
if (Creature* pLeryssa = me->GetCreature(*me, uiLeryssa))
|
||||
pLeryssa->RemoveFromWorld();
|
||||
|
||||
if (Creature* pArlos = m_creature->GetCreature(*m_creature, uiArlos))
|
||||
if (Creature* pArlos = me->GetCreature(*me, uiArlos))
|
||||
pArlos->RemoveFromWorld();
|
||||
|
||||
if (Creature* pArthas = m_creature->GetCreature(*m_creature, uiArthas))
|
||||
if (Creature* pArthas = me->GetCreature(*me, uiArthas))
|
||||
pArthas->RemoveFromWorld();
|
||||
}
|
||||
};
|
||||
@@ -1350,7 +1350,7 @@ struct npc_image_lich_kingAI : public ScriptedAI
|
||||
|
||||
void Reset()
|
||||
{
|
||||
m_creature->RestoreFaction();
|
||||
me->RestoreFaction();
|
||||
}
|
||||
|
||||
void MovementInform(uint32 uiType, uint32 uiId)
|
||||
@@ -1358,8 +1358,8 @@ struct npc_image_lich_kingAI : public ScriptedAI
|
||||
if (uiType != POINT_MOTION_TYPE)
|
||||
return;
|
||||
|
||||
if (m_creature->isSummon())
|
||||
if (Unit* pSummoner = CAST_SUM(m_creature)->GetSummoner())
|
||||
if (me->isSummon())
|
||||
if (Unit* pSummoner = CAST_SUM(me)->GetSummoner())
|
||||
CAST_AI(npc_thassarianAI,CAST_CRE(pSummoner)->AI())->bArthasInPosition = true;
|
||||
}
|
||||
};
|
||||
@@ -1382,10 +1382,10 @@ struct npc_general_arlosAI : public ScriptedAI
|
||||
if (uiType != POINT_MOTION_TYPE)
|
||||
return;
|
||||
|
||||
m_creature->addUnitState(UNIT_STAT_STUNNED);
|
||||
m_creature->CastSpell(m_creature, SPELL_STUN, true);
|
||||
if (m_creature->isSummon())
|
||||
if (Unit* pSummoner = CAST_SUM(m_creature)->GetSummoner())
|
||||
me->addUnitState(UNIT_STAT_STUNNED);
|
||||
me->CastSpell(me, SPELL_STUN, true);
|
||||
if (me->isSummon())
|
||||
if (Unit* pSummoner = CAST_SUM(me)->GetSummoner())
|
||||
CAST_AI(npc_thassarianAI,CAST_CRE(pSummoner)->AI())->bArlosInPosition = true;
|
||||
}
|
||||
};
|
||||
@@ -1435,8 +1435,8 @@ struct npc_counselor_talbotAI : public ScriptedAI
|
||||
if (uiType != POINT_MOTION_TYPE)
|
||||
return;
|
||||
|
||||
if (m_creature->isSummon())
|
||||
if (Unit* pSummoner = CAST_SUM(m_creature)->GetSummoner())
|
||||
if (me->isSummon())
|
||||
if (Unit* pSummoner = CAST_SUM(me)->GetSummoner())
|
||||
CAST_AI(npc_thassarianAI,CAST_CRE(pSummoner)->AI())->bTalbotInPosition = true;
|
||||
}
|
||||
|
||||
@@ -1444,9 +1444,9 @@ struct npc_counselor_talbotAI : public ScriptedAI
|
||||
{
|
||||
if (bCheck)
|
||||
{
|
||||
if (Creature *pLeryssa = m_creature->FindNearestCreature(NPC_LERYSSA, 50.0f, true))
|
||||
if (Creature *pLeryssa = me->FindNearestCreature(NPC_LERYSSA, 50.0f, true))
|
||||
LeryssaGUID = pLeryssa->GetGUID();
|
||||
if (Creature *pArlos = m_creature->FindNearestCreature(NPC_GENERAL_ARLOS, 50.0f, true))
|
||||
if (Creature *pArlos = me->FindNearestCreature(NPC_GENERAL_ARLOS, 50.0f, true))
|
||||
ArlosGUID = pArlos->GetGUID();
|
||||
bCheck = false;
|
||||
}
|
||||
@@ -1454,23 +1454,23 @@ struct npc_counselor_talbotAI : public ScriptedAI
|
||||
if (!UpdateVictim())
|
||||
return;
|
||||
|
||||
if (m_creature->GetAreaId() == 4125)
|
||||
if (me->GetAreaId() == 4125)
|
||||
{
|
||||
if (uiShadowBoltTimer <= uiDiff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(), SPELL_SHADOW_BOLT);
|
||||
DoCast(me->getVictim(), SPELL_SHADOW_BOLT);
|
||||
uiShadowBoltTimer = urand(5000,12000);
|
||||
} else uiShadowBoltTimer -= uiDiff;
|
||||
|
||||
if (uiDeflectionTimer <= uiDiff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(), SPELL_DEFLECTION);
|
||||
DoCast(me->getVictim(), SPELL_DEFLECTION);
|
||||
uiDeflectionTimer = urand(20000,25000);
|
||||
} else uiDeflectionTimer -= uiDiff;
|
||||
|
||||
if (uiSoulBlastTimer <= uiDiff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(), SPELL_SOUL_BLAST);
|
||||
DoCast(me->getVictim(), SPELL_SOUL_BLAST);
|
||||
uiSoulBlastTimer = urand (12000,18000);
|
||||
} else uiSoulBlastTimer -= uiDiff;
|
||||
}
|
||||
@@ -1483,8 +1483,8 @@ struct npc_counselor_talbotAI : public ScriptedAI
|
||||
if (!LeryssaGUID || !ArlosGUID)
|
||||
return;
|
||||
|
||||
Creature *pLeryssa = Unit::GetCreature(*m_creature, LeryssaGUID);
|
||||
Creature *pArlos = Unit::GetCreature(*m_creature, ArlosGUID);
|
||||
Creature *pLeryssa = Unit::GetCreature(*me, LeryssaGUID);
|
||||
Creature *pArlos = Unit::GetCreature(*me, ArlosGUID);
|
||||
if (!pLeryssa || !pArlos)
|
||||
return;
|
||||
|
||||
@@ -1534,22 +1534,22 @@ struct npc_leryssaAI : public ScriptedAI
|
||||
|
||||
if (!bDone)
|
||||
{
|
||||
if (Creature* pTalbot = m_creature->FindNearestCreature(NPC_PRINCE_VALANAR, 50.0f, true))
|
||||
if (Creature* pTalbot = me->FindNearestCreature(NPC_PRINCE_VALANAR, 50.0f, true))
|
||||
CAST_AI(npc_counselor_talbotAI, pTalbot->AI())->bCheck = true;
|
||||
|
||||
m_creature->addUnitState(UNIT_STAT_STUNNED);
|
||||
m_creature->CastSpell(m_creature, SPELL_STUN, true);
|
||||
me->addUnitState(UNIT_STAT_STUNNED);
|
||||
me->CastSpell(me, SPELL_STUN, true);
|
||||
|
||||
if (m_creature->isSummon())
|
||||
if (Unit* pSummoner = CAST_SUM(m_creature)->GetSummoner())
|
||||
if (me->isSummon())
|
||||
if (Unit* pSummoner = CAST_SUM(me)->GetSummoner())
|
||||
CAST_AI(npc_thassarianAI,CAST_CRE(pSummoner)->AI())->bLeryssaInPosition = true;
|
||||
bDone = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
m_creature->SetStandState(UNIT_STAND_STATE_SIT);
|
||||
if (m_creature->isSummon())
|
||||
if (Unit* pSummoner = CAST_SUM(m_creature)->GetSummoner())
|
||||
me->SetStandState(UNIT_STAND_STATE_SIT);
|
||||
if (me->isSummon())
|
||||
if (Unit* pSummoner = CAST_SUM(me)->GetSummoner())
|
||||
pSummoner->SetStandState(UNIT_STAND_STATE_SIT);
|
||||
uiPhaseTimer = 1500;
|
||||
Phase = 1;
|
||||
@@ -1565,45 +1565,45 @@ struct npc_leryssaAI : public ScriptedAI
|
||||
switch (Phase)
|
||||
{
|
||||
case 1:
|
||||
if (m_creature->isSummon())
|
||||
if (Unit* pThassarian = CAST_SUM(m_creature)->GetSummoner())
|
||||
if (me->isSummon())
|
||||
if (Unit* pThassarian = CAST_SUM(me)->GetSummoner())
|
||||
DoScriptText(SAY_THASSARIAN_4, pThassarian);
|
||||
uiPhaseTimer = 5000;
|
||||
++Phase;
|
||||
break;
|
||||
case 2:
|
||||
DoScriptText(SAY_LERYSSA_2, m_creature);
|
||||
DoScriptText(SAY_LERYSSA_2, me);
|
||||
uiPhaseTimer = 5000;
|
||||
++Phase;
|
||||
break;
|
||||
case 3:
|
||||
if (m_creature->isSummon())
|
||||
if (Unit* pThassarian = CAST_SUM(m_creature)->GetSummoner())
|
||||
if (me->isSummon())
|
||||
if (Unit* pThassarian = CAST_SUM(me)->GetSummoner())
|
||||
DoScriptText(SAY_THASSARIAN_5, pThassarian);
|
||||
uiPhaseTimer = 5000;
|
||||
++Phase;
|
||||
break;
|
||||
case 4:
|
||||
DoScriptText(SAY_LERYSSA_3, m_creature);
|
||||
DoScriptText(SAY_LERYSSA_3, me);
|
||||
uiPhaseTimer = 5000;
|
||||
++Phase;
|
||||
break;
|
||||
case 5:
|
||||
if (m_creature->isSummon())
|
||||
if (Unit* pThassarian = CAST_SUM(m_creature)->GetSummoner())
|
||||
if (me->isSummon())
|
||||
if (Unit* pThassarian = CAST_SUM(me)->GetSummoner())
|
||||
DoScriptText(SAY_THASSARIAN_6, pThassarian);
|
||||
uiPhaseTimer = 5000;
|
||||
++Phase;
|
||||
break;
|
||||
|
||||
case 6:
|
||||
DoScriptText(SAY_LERYSSA_4, m_creature);
|
||||
DoScriptText(SAY_LERYSSA_4, me);
|
||||
uiPhaseTimer = 5000;
|
||||
++Phase;
|
||||
break;
|
||||
case 7:
|
||||
if (m_creature->isSummon())
|
||||
if (Unit* pThassarian = CAST_SUM(m_creature)->GetSummoner())
|
||||
if (me->isSummon())
|
||||
if (Unit* pThassarian = CAST_SUM(me)->GetSummoner())
|
||||
{
|
||||
DoScriptText(SAY_THASSARIAN_7, pThassarian);
|
||||
CAST_AI(npc_thassarianAI,CAST_CRE(pThassarian)->AI())->uiPhase = 16;
|
||||
@@ -1648,25 +1648,25 @@ struct npc_beryl_sorcererAI : public FollowerAI
|
||||
|
||||
void Reset()
|
||||
{
|
||||
m_creature->SetReactState(REACT_AGGRESSIVE);
|
||||
me->SetReactState(REACT_AGGRESSIVE);
|
||||
bEnslaved = false;
|
||||
}
|
||||
|
||||
void EnterCombat(Unit* pWho)
|
||||
{
|
||||
if (m_creature->canAttack(pWho))
|
||||
if (me->canAttack(pWho))
|
||||
AttackStart(pWho);
|
||||
}
|
||||
|
||||
void SpellHit(Unit* pCaster, const SpellEntry* pSpell)
|
||||
{
|
||||
if (pSpell->Id == SPELL_ARCANE_CHAINS && pCaster->GetTypeId() == TYPEID_PLAYER && m_creature->GetHealth()*100 / m_creature->GetMaxHealth() <= 50 && !bEnslaved)
|
||||
if (pSpell->Id == SPELL_ARCANE_CHAINS && pCaster->GetTypeId() == TYPEID_PLAYER && me->GetHealth()*100 / me->GetMaxHealth() <= 50 && !bEnslaved)
|
||||
{
|
||||
EnterEvadeMode(); //We make sure that the npc is not attacking the player!
|
||||
m_creature->SetReactState(REACT_PASSIVE);
|
||||
me->SetReactState(REACT_PASSIVE);
|
||||
StartFollow(CAST_PLR(pCaster), NULL, NULL);
|
||||
m_creature->UpdateEntry(NPC_CAPTURED_BERLY_SORCERER, TEAM_NEUTRAL);
|
||||
DoCast(m_creature, SPELL_COSMETIC_ENSLAVE_CHAINS_SELF, true);
|
||||
me->UpdateEntry(NPC_CAPTURED_BERLY_SORCERER, TEAM_NEUTRAL);
|
||||
DoCast(me, SPELL_COSMETIC_ENSLAVE_CHAINS_SELF, true);
|
||||
CAST_PLR(pCaster)->KilledMonsterCredit(NPC_CAPTURED_BERLY_SORCERER, 0);
|
||||
bEnslaved = true;
|
||||
}
|
||||
@@ -1676,10 +1676,10 @@ struct npc_beryl_sorcererAI : public FollowerAI
|
||||
{
|
||||
FollowerAI::MoveInLineOfSight(pWho);
|
||||
|
||||
if (pWho->GetEntry() == NPC_LIBRARIAN_DONATHAN && m_creature->IsWithinDistInMap(pWho, INTERACTION_DISTANCE))
|
||||
if (pWho->GetEntry() == NPC_LIBRARIAN_DONATHAN && me->IsWithinDistInMap(pWho, INTERACTION_DISTANCE))
|
||||
{
|
||||
SetFollowComplete();
|
||||
m_creature->DisappearAndDie();
|
||||
me->DisappearAndDie();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1750,18 +1750,18 @@ struct npc_imprisoned_beryl_sorcererAI : public ScriptedAI
|
||||
{
|
||||
ScriptedAI::UpdateAI(uiDiff);
|
||||
|
||||
if (!m_creature->HasAura(SPELL_COSMETIC_ENSLAVE_CHAINS_SELF))
|
||||
DoCast(m_creature, SPELL_COSMETIC_ENSLAVE_CHAINS_SELF);
|
||||
if (!me->HasAura(SPELL_COSMETIC_ENSLAVE_CHAINS_SELF))
|
||||
DoCast(me, SPELL_COSMETIC_ENSLAVE_CHAINS_SELF);
|
||||
|
||||
if (m_creature->GetReactState() != REACT_PASSIVE)
|
||||
m_creature->SetReactState(REACT_PASSIVE);
|
||||
if (me->GetReactState() != REACT_PASSIVE)
|
||||
me->SetReactState(REACT_PASSIVE);
|
||||
|
||||
switch (uiPhase)
|
||||
{
|
||||
case 1:
|
||||
if (uiStep == 1)
|
||||
{
|
||||
DoScriptText(SAY_IMPRISIONED_BERYL_1, m_creature);
|
||||
DoScriptText(SAY_IMPRISIONED_BERYL_1, me);
|
||||
uiStep = 2;
|
||||
}
|
||||
break;
|
||||
@@ -1769,7 +1769,7 @@ struct npc_imprisoned_beryl_sorcererAI : public ScriptedAI
|
||||
case 2:
|
||||
if (uiStep == 2)
|
||||
{
|
||||
DoScriptText(SAY_IMPRISIONED_BERYL_2, m_creature);
|
||||
DoScriptText(SAY_IMPRISIONED_BERYL_2, me);
|
||||
uiStep = 3;
|
||||
}
|
||||
break;
|
||||
@@ -1777,7 +1777,7 @@ struct npc_imprisoned_beryl_sorcererAI : public ScriptedAI
|
||||
case 3:
|
||||
if (uiStep == 3)
|
||||
{
|
||||
DoScriptText(SAY_IMPRISIONED_BERYL_3, m_creature);
|
||||
DoScriptText(SAY_IMPRISIONED_BERYL_3, me);
|
||||
uiStep = 4;
|
||||
}
|
||||
break;
|
||||
@@ -1785,7 +1785,7 @@ struct npc_imprisoned_beryl_sorcererAI : public ScriptedAI
|
||||
case 4:
|
||||
if (uiStep == 4)
|
||||
{
|
||||
DoScriptText(SAY_IMPRISIONED_BERYL_4, m_creature);
|
||||
DoScriptText(SAY_IMPRISIONED_BERYL_4, me);
|
||||
uiStep = 5;
|
||||
}
|
||||
break;
|
||||
@@ -1795,7 +1795,7 @@ struct npc_imprisoned_beryl_sorcererAI : public ScriptedAI
|
||||
{
|
||||
if (Player *pCaster = Unit::GetPlayer(CasterGUID))
|
||||
{
|
||||
DoScriptText(SAY_IMPRISIONED_BERYL_5, m_creature);
|
||||
DoScriptText(SAY_IMPRISIONED_BERYL_5, me);
|
||||
pCaster->KilledMonsterCredit(25478,0);
|
||||
uiStep = 6;
|
||||
}
|
||||
@@ -1805,7 +1805,7 @@ struct npc_imprisoned_beryl_sorcererAI : public ScriptedAI
|
||||
case 6:
|
||||
if (uiStep == 6)
|
||||
{
|
||||
DoScriptText(SAY_IMPRISIONED_BERYL_6, m_creature);
|
||||
DoScriptText(SAY_IMPRISIONED_BERYL_6, me);
|
||||
uiStep = 7;
|
||||
}
|
||||
break;
|
||||
@@ -1813,7 +1813,7 @@ struct npc_imprisoned_beryl_sorcererAI : public ScriptedAI
|
||||
case 7:
|
||||
if (uiStep == 7)
|
||||
{
|
||||
DoScriptText(SAY_IMPRISIONED_BERYL_7, m_creature);
|
||||
DoScriptText(SAY_IMPRISIONED_BERYL_7, me);
|
||||
uiStep = 1;
|
||||
uiPhase = 0;
|
||||
}
|
||||
@@ -1886,23 +1886,23 @@ struct npc_mootoo_the_youngerAI : public npc_escortAI
|
||||
switch(i)
|
||||
{
|
||||
case 10:
|
||||
m_creature->HandleEmoteCommand(EMOTE_ONESHOT_EXCLAMATION);
|
||||
DoScriptText(SAY_2, m_creature);
|
||||
me->HandleEmoteCommand(EMOTE_ONESHOT_EXCLAMATION);
|
||||
DoScriptText(SAY_2, me);
|
||||
break;
|
||||
case 12:
|
||||
DoScriptText(SAY_3, m_creature);
|
||||
m_creature->HandleEmoteCommand(EMOTE_ONESHOT_LOOT);
|
||||
DoScriptText(SAY_3, me);
|
||||
me->HandleEmoteCommand(EMOTE_ONESHOT_LOOT);
|
||||
break;
|
||||
case 16:
|
||||
DoScriptText(SAY_4, m_creature);
|
||||
m_creature->HandleEmoteCommand(EMOTE_ONESHOT_EXCLAMATION);
|
||||
DoScriptText(SAY_4, me);
|
||||
me->HandleEmoteCommand(EMOTE_ONESHOT_EXCLAMATION);
|
||||
break;
|
||||
case 20:
|
||||
me->SetPhaseMask(1,true);
|
||||
DoScriptText(SAY_5, m_creature);
|
||||
m_creature->HandleEmoteCommand(EMOTE_ONESHOT_EXCLAMATION);
|
||||
DoScriptText(SAY_5, me);
|
||||
me->HandleEmoteCommand(EMOTE_ONESHOT_EXCLAMATION);
|
||||
if (pPlayer)
|
||||
pPlayer->GroupEventHappens(QUEST_ESCAPING_THE_MIST, m_creature);
|
||||
pPlayer->GroupEventHappens(QUEST_ESCAPING_THE_MIST, me);
|
||||
SetRun(true);
|
||||
break;
|
||||
}
|
||||
@@ -1969,7 +1969,7 @@ struct npc_bonker_togglevoltAI : public npc_escortAI
|
||||
{
|
||||
if (Bonker_agro == 0)
|
||||
{
|
||||
DoScriptText(SAY_bonker_1,m_creature);
|
||||
DoScriptText(SAY_bonker_1,me);
|
||||
Bonker_agro++;
|
||||
}
|
||||
DoMeleeAttackIfReady();
|
||||
@@ -1988,7 +1988,7 @@ struct npc_bonker_togglevoltAI : public npc_escortAI
|
||||
{
|
||||
case 29:
|
||||
if (pPlayer)
|
||||
pPlayer->GroupEventHappens(QUEST_GET_ME_OUTA_HERE, m_creature);
|
||||
pPlayer->GroupEventHappens(QUEST_GET_ME_OUTA_HERE, me);
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -2044,28 +2044,28 @@ struct npc_trapped_mammoth_calfAI : public ScriptedAI
|
||||
uiTimer = 1500;
|
||||
bStarted = false;
|
||||
|
||||
if ((pTrap = m_creature->FindNearestGameObject(GO_MAMMOTH_TRAP_1,1.0f)) ||
|
||||
(pTrap = m_creature->FindNearestGameObject(GO_MAMMOTH_TRAP_2,1.0f)) ||
|
||||
(pTrap = m_creature->FindNearestGameObject(GO_MAMMOTH_TRAP_3,1.0f)) ||
|
||||
(pTrap = m_creature->FindNearestGameObject(GO_MAMMOTH_TRAP_4,1.0f)) ||
|
||||
(pTrap = m_creature->FindNearestGameObject(GO_MAMMOTH_TRAP_5,1.0f)) ||
|
||||
(pTrap = m_creature->FindNearestGameObject(GO_MAMMOTH_TRAP_6,1.0f)) ||
|
||||
(pTrap = m_creature->FindNearestGameObject(GO_MAMMOTH_TRAP_7,1.0f)) ||
|
||||
(pTrap = m_creature->FindNearestGameObject(GO_MAMMOTH_TRAP_8,1.0f)) ||
|
||||
(pTrap = m_creature->FindNearestGameObject(GO_MAMMOTH_TRAP_9,1.0f)) ||
|
||||
(pTrap = m_creature->FindNearestGameObject(GO_MAMMOTH_TRAP_10,1.0f)) ||
|
||||
(pTrap = m_creature->FindNearestGameObject(GO_MAMMOTH_TRAP_11,1.0f)) ||
|
||||
(pTrap = m_creature->FindNearestGameObject(GO_MAMMOTH_TRAP_12,1.0f)) ||
|
||||
(pTrap = m_creature->FindNearestGameObject(GO_MAMMOTH_TRAP_13,1.0f)) ||
|
||||
(pTrap = m_creature->FindNearestGameObject(GO_MAMMOTH_TRAP_14,1.0f)) ||
|
||||
(pTrap = m_creature->FindNearestGameObject(GO_MAMMOTH_TRAP_15,1.0f)) ||
|
||||
(pTrap = m_creature->FindNearestGameObject(GO_MAMMOTH_TRAP_16,1.0f)) ||
|
||||
(pTrap = m_creature->FindNearestGameObject(GO_MAMMOTH_TRAP_17,1.0f)) ||
|
||||
(pTrap = m_creature->FindNearestGameObject(GO_MAMMOTH_TRAP_18,1.0f)) ||
|
||||
(pTrap = m_creature->FindNearestGameObject(GO_MAMMOTH_TRAP_19,1.0f)) ||
|
||||
(pTrap = m_creature->FindNearestGameObject(GO_MAMMOTH_TRAP_20,1.0f)) ||
|
||||
(pTrap = m_creature->FindNearestGameObject(GO_MAMMOTH_TRAP_21,1.0f)) ||
|
||||
(pTrap = m_creature->FindNearestGameObject(GO_MAMMOTH_TRAP_22,1.0f)))
|
||||
if ((pTrap = me->FindNearestGameObject(GO_MAMMOTH_TRAP_1,1.0f)) ||
|
||||
(pTrap = me->FindNearestGameObject(GO_MAMMOTH_TRAP_2,1.0f)) ||
|
||||
(pTrap = me->FindNearestGameObject(GO_MAMMOTH_TRAP_3,1.0f)) ||
|
||||
(pTrap = me->FindNearestGameObject(GO_MAMMOTH_TRAP_4,1.0f)) ||
|
||||
(pTrap = me->FindNearestGameObject(GO_MAMMOTH_TRAP_5,1.0f)) ||
|
||||
(pTrap = me->FindNearestGameObject(GO_MAMMOTH_TRAP_6,1.0f)) ||
|
||||
(pTrap = me->FindNearestGameObject(GO_MAMMOTH_TRAP_7,1.0f)) ||
|
||||
(pTrap = me->FindNearestGameObject(GO_MAMMOTH_TRAP_8,1.0f)) ||
|
||||
(pTrap = me->FindNearestGameObject(GO_MAMMOTH_TRAP_9,1.0f)) ||
|
||||
(pTrap = me->FindNearestGameObject(GO_MAMMOTH_TRAP_10,1.0f)) ||
|
||||
(pTrap = me->FindNearestGameObject(GO_MAMMOTH_TRAP_11,1.0f)) ||
|
||||
(pTrap = me->FindNearestGameObject(GO_MAMMOTH_TRAP_12,1.0f)) ||
|
||||
(pTrap = me->FindNearestGameObject(GO_MAMMOTH_TRAP_13,1.0f)) ||
|
||||
(pTrap = me->FindNearestGameObject(GO_MAMMOTH_TRAP_14,1.0f)) ||
|
||||
(pTrap = me->FindNearestGameObject(GO_MAMMOTH_TRAP_15,1.0f)) ||
|
||||
(pTrap = me->FindNearestGameObject(GO_MAMMOTH_TRAP_16,1.0f)) ||
|
||||
(pTrap = me->FindNearestGameObject(GO_MAMMOTH_TRAP_17,1.0f)) ||
|
||||
(pTrap = me->FindNearestGameObject(GO_MAMMOTH_TRAP_18,1.0f)) ||
|
||||
(pTrap = me->FindNearestGameObject(GO_MAMMOTH_TRAP_19,1.0f)) ||
|
||||
(pTrap = me->FindNearestGameObject(GO_MAMMOTH_TRAP_20,1.0f)) ||
|
||||
(pTrap = me->FindNearestGameObject(GO_MAMMOTH_TRAP_21,1.0f)) ||
|
||||
(pTrap = me->FindNearestGameObject(GO_MAMMOTH_TRAP_22,1.0f)))
|
||||
pTrap->SetGoState(GO_STATE_ACTIVE);
|
||||
}
|
||||
|
||||
@@ -2076,8 +2076,8 @@ struct npc_trapped_mammoth_calfAI : public ScriptedAI
|
||||
if (uiTimer <= diff)
|
||||
{
|
||||
Position pos;
|
||||
m_creature->GetRandomNearPosition(pos, 10.0f);
|
||||
m_creature->GetMotionMaster()->MovePoint(0,pos);
|
||||
me->GetRandomNearPosition(pos, 10.0f);
|
||||
me->GetMotionMaster()->MovePoint(0,pos);
|
||||
bStarted = false;
|
||||
}
|
||||
else uiTimer -= diff;
|
||||
@@ -2095,30 +2095,30 @@ struct npc_trapped_mammoth_calfAI : public ScriptedAI
|
||||
GameObject* pTrap;
|
||||
if (uiType != POINT_MOTION_TYPE)
|
||||
return;
|
||||
m_creature->DisappearAndDie();
|
||||
me->DisappearAndDie();
|
||||
|
||||
if ((pTrap = m_creature->FindNearestGameObject(GO_MAMMOTH_TRAP_1,11.0f)) ||
|
||||
(pTrap = m_creature->FindNearestGameObject(GO_MAMMOTH_TRAP_2,11.0f)) ||
|
||||
(pTrap = m_creature->FindNearestGameObject(GO_MAMMOTH_TRAP_3,11.0f)) ||
|
||||
(pTrap = m_creature->FindNearestGameObject(GO_MAMMOTH_TRAP_4,11.0f)) ||
|
||||
(pTrap = m_creature->FindNearestGameObject(GO_MAMMOTH_TRAP_5,11.0f)) ||
|
||||
(pTrap = m_creature->FindNearestGameObject(GO_MAMMOTH_TRAP_6,11.0f)) ||
|
||||
(pTrap = m_creature->FindNearestGameObject(GO_MAMMOTH_TRAP_7,11.0f)) ||
|
||||
(pTrap = m_creature->FindNearestGameObject(GO_MAMMOTH_TRAP_8,11.0f)) ||
|
||||
(pTrap = m_creature->FindNearestGameObject(GO_MAMMOTH_TRAP_9,11.0f)) ||
|
||||
(pTrap = m_creature->FindNearestGameObject(GO_MAMMOTH_TRAP_10,11.0f)) ||
|
||||
(pTrap = m_creature->FindNearestGameObject(GO_MAMMOTH_TRAP_11,11.0f)) ||
|
||||
(pTrap = m_creature->FindNearestGameObject(GO_MAMMOTH_TRAP_12,11.0f)) ||
|
||||
(pTrap = m_creature->FindNearestGameObject(GO_MAMMOTH_TRAP_13,11.0f)) ||
|
||||
(pTrap = m_creature->FindNearestGameObject(GO_MAMMOTH_TRAP_14,11.0f)) ||
|
||||
(pTrap = m_creature->FindNearestGameObject(GO_MAMMOTH_TRAP_15,11.0f)) ||
|
||||
(pTrap = m_creature->FindNearestGameObject(GO_MAMMOTH_TRAP_16,11.0f)) ||
|
||||
(pTrap = m_creature->FindNearestGameObject(GO_MAMMOTH_TRAP_17,11.0f)) ||
|
||||
(pTrap = m_creature->FindNearestGameObject(GO_MAMMOTH_TRAP_18,11.0f)) ||
|
||||
(pTrap = m_creature->FindNearestGameObject(GO_MAMMOTH_TRAP_19,11.0f)) ||
|
||||
(pTrap = m_creature->FindNearestGameObject(GO_MAMMOTH_TRAP_20,11.0f)) ||
|
||||
(pTrap = m_creature->FindNearestGameObject(GO_MAMMOTH_TRAP_21,11.0f)) ||
|
||||
(pTrap = m_creature->FindNearestGameObject(GO_MAMMOTH_TRAP_22,11.0f)))
|
||||
if ((pTrap = me->FindNearestGameObject(GO_MAMMOTH_TRAP_1,11.0f)) ||
|
||||
(pTrap = me->FindNearestGameObject(GO_MAMMOTH_TRAP_2,11.0f)) ||
|
||||
(pTrap = me->FindNearestGameObject(GO_MAMMOTH_TRAP_3,11.0f)) ||
|
||||
(pTrap = me->FindNearestGameObject(GO_MAMMOTH_TRAP_4,11.0f)) ||
|
||||
(pTrap = me->FindNearestGameObject(GO_MAMMOTH_TRAP_5,11.0f)) ||
|
||||
(pTrap = me->FindNearestGameObject(GO_MAMMOTH_TRAP_6,11.0f)) ||
|
||||
(pTrap = me->FindNearestGameObject(GO_MAMMOTH_TRAP_7,11.0f)) ||
|
||||
(pTrap = me->FindNearestGameObject(GO_MAMMOTH_TRAP_8,11.0f)) ||
|
||||
(pTrap = me->FindNearestGameObject(GO_MAMMOTH_TRAP_9,11.0f)) ||
|
||||
(pTrap = me->FindNearestGameObject(GO_MAMMOTH_TRAP_10,11.0f)) ||
|
||||
(pTrap = me->FindNearestGameObject(GO_MAMMOTH_TRAP_11,11.0f)) ||
|
||||
(pTrap = me->FindNearestGameObject(GO_MAMMOTH_TRAP_12,11.0f)) ||
|
||||
(pTrap = me->FindNearestGameObject(GO_MAMMOTH_TRAP_13,11.0f)) ||
|
||||
(pTrap = me->FindNearestGameObject(GO_MAMMOTH_TRAP_14,11.0f)) ||
|
||||
(pTrap = me->FindNearestGameObject(GO_MAMMOTH_TRAP_15,11.0f)) ||
|
||||
(pTrap = me->FindNearestGameObject(GO_MAMMOTH_TRAP_16,11.0f)) ||
|
||||
(pTrap = me->FindNearestGameObject(GO_MAMMOTH_TRAP_17,11.0f)) ||
|
||||
(pTrap = me->FindNearestGameObject(GO_MAMMOTH_TRAP_18,11.0f)) ||
|
||||
(pTrap = me->FindNearestGameObject(GO_MAMMOTH_TRAP_19,11.0f)) ||
|
||||
(pTrap = me->FindNearestGameObject(GO_MAMMOTH_TRAP_20,11.0f)) ||
|
||||
(pTrap = me->FindNearestGameObject(GO_MAMMOTH_TRAP_21,11.0f)) ||
|
||||
(pTrap = me->FindNearestGameObject(GO_MAMMOTH_TRAP_22,11.0f)))
|
||||
pTrap->SetLootState(GO_JUST_DEACTIVATED);
|
||||
}
|
||||
};
|
||||
@@ -2149,8 +2149,8 @@ struct npc_magmoth_crusherAI : public ScriptedAI
|
||||
{
|
||||
if (pKiller->GetTypeId() == TYPEID_PLAYER &&
|
||||
CAST_PLR(pKiller)->GetQuestStatus(QUEST_YOU_RE_NOT_SO_BIG_NOW) == QUEST_STATUS_INCOMPLETE &&
|
||||
(m_creature->HasAura(SPELL_AURA_NOTSOBIG_1) || m_creature->HasAura(SPELL_AURA_NOTSOBIG_2) ||
|
||||
m_creature->HasAura(SPELL_AURA_NOTSOBIG_3) || m_creature->HasAura(SPELL_AURA_NOTSOBIG_4)))
|
||||
(me->HasAura(SPELL_AURA_NOTSOBIG_1) || me->HasAura(SPELL_AURA_NOTSOBIG_2) ||
|
||||
me->HasAura(SPELL_AURA_NOTSOBIG_3) || me->HasAura(SPELL_AURA_NOTSOBIG_4)))
|
||||
{
|
||||
Quest const* qInfo = objmgr.GetQuestTemplate(QUEST_YOU_RE_NOT_SO_BIG_NOW);
|
||||
if (qInfo)
|
||||
@@ -2187,9 +2187,9 @@ struct npc_seaforium_depth_chargeAI : public ScriptedAI
|
||||
DoCast(SPELL_SEAFORIUM_DEPTH_CHARGE_EXPLOSION);
|
||||
for (uint8 i = 0; i < 4; ++i)
|
||||
{
|
||||
if (Creature* cCredit = m_creature->FindNearestCreature(25402 + i, 10.0f))//25402-25405 credit markers
|
||||
if (Creature* cCredit = me->FindNearestCreature(25402 + i, 10.0f))//25402-25405 credit markers
|
||||
{
|
||||
if (Unit* uOwner = m_creature->GetOwner(true))
|
||||
if (Unit* uOwner = me->GetOwner(true))
|
||||
{
|
||||
Player* pOwner = uOwner->ToPlayer();
|
||||
if (pOwner && pOwner->GetQuestStatus(QUEST_BURY_THOSE_COCKROACHES) == QUEST_STATUS_INCOMPLETE)
|
||||
@@ -2197,7 +2197,7 @@ struct npc_seaforium_depth_chargeAI : public ScriptedAI
|
||||
}
|
||||
}
|
||||
}
|
||||
m_creature->Kill(m_creature);
|
||||
me->Kill(me);
|
||||
return;
|
||||
} else uiExplosionTimer -= diff;
|
||||
}
|
||||
@@ -2233,10 +2233,10 @@ struct npc_valiance_keep_cannoneerAI : public ScriptedAI
|
||||
{
|
||||
if (uiTimer <= diff)
|
||||
{
|
||||
m_creature->HandleEmoteCommand(EMOTE_ONESHOT_KNEEL);
|
||||
me->HandleEmoteCommand(EMOTE_ONESHOT_KNEEL);
|
||||
GameObject* pCannon;
|
||||
if ((pCannon = m_creature->FindNearestGameObject(GO_VALIANCE_KEEP_CANNON_1,10)) || (pCannon = m_creature->FindNearestGameObject(GO_VALIANCE_KEEP_CANNON_2,10)))
|
||||
pCannon->Use(m_creature);
|
||||
if ((pCannon = me->FindNearestGameObject(GO_VALIANCE_KEEP_CANNON_1,10)) || (pCannon = me->FindNearestGameObject(GO_VALIANCE_KEEP_CANNON_2,10)))
|
||||
pCannon->Use(me);
|
||||
uiTimer = urand(13000,18000);
|
||||
}
|
||||
else uiTimer -= diff;
|
||||
@@ -2289,7 +2289,7 @@ struct npc_warmage_coldarraAI : public Scripted_NoMovementAI
|
||||
if (m_uiTimer <= uiDiff)
|
||||
{
|
||||
std::list<Creature*> orbList;
|
||||
GetCreatureListWithEntryInGrid(orbList, m_creature, NPC_TRANSITUS_SHIELD_DUMMY, 32.0f);
|
||||
GetCreatureListWithEntryInGrid(orbList, me, NPC_TRANSITUS_SHIELD_DUMMY, 32.0f);
|
||||
|
||||
switch(me->GetEntry())
|
||||
{
|
||||
|
||||
+31
-31
@@ -87,11 +87,11 @@ struct boss_eadricAI : public ScriptedAI
|
||||
|
||||
void DamageTaken(Unit *done_by, uint32 &damage)
|
||||
{
|
||||
if (damage >= m_creature->GetHealth())
|
||||
if (damage >= me->GetHealth())
|
||||
{
|
||||
damage = 0;
|
||||
EnterEvadeMode();
|
||||
m_creature->setFaction(35);
|
||||
me->setFaction(35);
|
||||
bDone = true;
|
||||
}
|
||||
}
|
||||
@@ -104,14 +104,14 @@ struct boss_eadricAI : public ScriptedAI
|
||||
if (pInstance)
|
||||
pInstance->SetData(BOSS_ARGENT_CHALLENGE_E, DONE);
|
||||
|
||||
m_creature->DisappearAndDie();
|
||||
me->DisappearAndDie();
|
||||
}
|
||||
|
||||
void UpdateAI(const uint32 uiDiff)
|
||||
{
|
||||
if (bDone && uiResetTimer <= uiDiff)
|
||||
{
|
||||
m_creature->GetMotionMaster()->MovePoint(0,746.87,665.87,411.75);
|
||||
me->GetMotionMaster()->MovePoint(0,746.87,665.87,411.75);
|
||||
bDone = false;
|
||||
} else uiResetTimer -= uiDiff;
|
||||
|
||||
@@ -120,7 +120,7 @@ struct boss_eadricAI : public ScriptedAI
|
||||
|
||||
if (uiHammerJusticeTimer <= uiDiff)
|
||||
{
|
||||
m_creature->InterruptNonMeleeSpells(true);
|
||||
me->InterruptNonMeleeSpells(true);
|
||||
|
||||
if (Unit* pTarget = SelectTarget(SELECT_TARGET_RANDOM, 0, 250, true))
|
||||
{
|
||||
@@ -135,7 +135,7 @@ struct boss_eadricAI : public ScriptedAI
|
||||
|
||||
if (uiVenganceTimer <= uiDiff)
|
||||
{
|
||||
DoCast(m_creature,SPELL_VENGEANCE);
|
||||
DoCast(me,SPELL_VENGEANCE);
|
||||
|
||||
uiVenganceTimer = 10000;
|
||||
} else uiVenganceTimer -= uiDiff;
|
||||
@@ -183,7 +183,7 @@ struct boss_paletressAI : public ScriptedAI
|
||||
|
||||
void Reset()
|
||||
{
|
||||
m_creature->RemoveAllAuras();
|
||||
me->RemoveAllAuras();
|
||||
|
||||
uiHolyFireTimer = urand(9000,12000);
|
||||
uiHolySmiteTimer = urand(5000,7000);
|
||||
@@ -194,7 +194,7 @@ struct boss_paletressAI : public ScriptedAI
|
||||
bHealth = false;
|
||||
bDone = false;
|
||||
|
||||
if (Creature *pMemory = Unit::GetCreature(*m_creature, MemoryGUID))
|
||||
if (Creature *pMemory = Unit::GetCreature(*me, MemoryGUID))
|
||||
if (pMemory->isAlive())
|
||||
pMemory->RemoveFromWorld();
|
||||
}
|
||||
@@ -202,16 +202,16 @@ struct boss_paletressAI : public ScriptedAI
|
||||
void SetData(uint32 uiId, uint32 uiValue)
|
||||
{
|
||||
if (uiId == 1)
|
||||
m_creature->RemoveAura(SPELL_SHIELD);
|
||||
me->RemoveAura(SPELL_SHIELD);
|
||||
}
|
||||
|
||||
void DamageTaken(Unit *done_by, uint32 &damage)
|
||||
{
|
||||
if (damage >= m_creature->GetHealth())
|
||||
if (damage >= me->GetHealth())
|
||||
{
|
||||
damage = 0;
|
||||
EnterEvadeMode();
|
||||
m_creature->setFaction(35);
|
||||
me->setFaction(35);
|
||||
bDone = true;
|
||||
}
|
||||
}
|
||||
@@ -224,14 +224,14 @@ struct boss_paletressAI : public ScriptedAI
|
||||
if (pInstance)
|
||||
pInstance->SetData(BOSS_ARGENT_CHALLENGE_P, DONE);
|
||||
|
||||
m_creature->DisappearAndDie();
|
||||
me->DisappearAndDie();
|
||||
}
|
||||
|
||||
void UpdateAI(const uint32 uiDiff)
|
||||
{
|
||||
if (bDone && uiResetTimer <= uiDiff)
|
||||
{
|
||||
m_creature->GetMotionMaster()->MovePoint(0,746.87,665.87,411.75);
|
||||
me->GetMotionMaster()->MovePoint(0,746.87,665.87,411.75);
|
||||
bDone = false;
|
||||
} else uiResetTimer -= uiDiff;
|
||||
|
||||
@@ -245,7 +245,7 @@ struct boss_paletressAI : public ScriptedAI
|
||||
if (pTarget && pTarget->isAlive())
|
||||
DoCast(pTarget,SPELL_HOLY_FIRE);
|
||||
}
|
||||
if (m_creature->HasAura(SPELL_SHIELD))
|
||||
if (me->HasAura(SPELL_SHIELD))
|
||||
uiHolyFireTimer = 13000;
|
||||
else
|
||||
uiHolyFireTimer = urand(9000,12000);
|
||||
@@ -258,24 +258,24 @@ struct boss_paletressAI : public ScriptedAI
|
||||
if (pTarget && pTarget->isAlive())
|
||||
DoCast(pTarget,SPELL_SMITE);
|
||||
}
|
||||
if (m_creature->HasAura(SPELL_SHIELD))
|
||||
if (me->HasAura(SPELL_SHIELD))
|
||||
uiHolySmiteTimer = 9000;
|
||||
else
|
||||
uiHolySmiteTimer = urand(5000,7000);
|
||||
} else uiHolySmiteTimer -= uiDiff;
|
||||
|
||||
if (m_creature->HasAura(SPELL_SHIELD))
|
||||
if (me->HasAura(SPELL_SHIELD))
|
||||
if (uiRenewTimer <= uiDiff)
|
||||
{
|
||||
m_creature->InterruptNonMeleeSpells(true);
|
||||
me->InterruptNonMeleeSpells(true);
|
||||
uint8 uiTarget = urand(0,1);
|
||||
switch(uiTarget)
|
||||
{
|
||||
case 0:
|
||||
DoCast(m_creature,SPELL_RENEW);
|
||||
DoCast(me,SPELL_RENEW);
|
||||
break;
|
||||
case 1:
|
||||
if (Creature *pMemory = Unit::GetCreature(*m_creature, MemoryGUID))
|
||||
if (Creature *pMemory = Unit::GetCreature(*me, MemoryGUID))
|
||||
if (pMemory->isAlive())
|
||||
DoCast(pMemory, SPELL_RENEW);
|
||||
break;
|
||||
@@ -284,11 +284,11 @@ struct boss_paletressAI : public ScriptedAI
|
||||
} else uiRenewTimer -= uiDiff;
|
||||
|
||||
|
||||
if (!bHealth && m_creature->GetHealth()*100 / m_creature->GetMaxHealth() <= 25)
|
||||
if (!bHealth && me->GetHealth()*100 / me->GetMaxHealth() <= 25)
|
||||
{
|
||||
m_creature->InterruptNonMeleeSpells(true);
|
||||
me->InterruptNonMeleeSpells(true);
|
||||
DoCastAOE(SPELL_HOLY_NOVA,false);
|
||||
DoCast(m_creature, SPELL_SHIELD);
|
||||
DoCast(me, SPELL_SHIELD);
|
||||
DoCastAOE(SPELL_SUMMON_MEMORY,false);
|
||||
DoCastAOE(SPELL_CONFESS,false);
|
||||
|
||||
@@ -341,7 +341,7 @@ struct npc_memoryAI : public ScriptedAI
|
||||
|
||||
if (uiWakingNightmare <= uiDiff)
|
||||
{
|
||||
DoCast(m_creature, SPELL_WAKING_NIGHTMARE);
|
||||
DoCast(me, SPELL_WAKING_NIGHTMARE);
|
||||
uiWakingNightmare = 7000;
|
||||
}else uiWakingNightmare -= uiDiff;
|
||||
|
||||
@@ -360,9 +360,9 @@ struct npc_memoryAI : public ScriptedAI
|
||||
|
||||
void JustDied(Unit* pKiller)
|
||||
{
|
||||
if (m_creature->isSummon())
|
||||
if (me->isSummon())
|
||||
{
|
||||
if (Unit* pSummoner = CAST_SUM(m_creature)->GetSummoner())
|
||||
if (Unit* pSummoner = CAST_SUM(me)->GetSummoner())
|
||||
{
|
||||
if (pSummoner && pSummoner->isAlive())
|
||||
CAST_CRE(pSummoner)->AI()->SetData(1,0);
|
||||
@@ -382,7 +382,7 @@ struct npc_argent_soldierAI : public npc_escortAI
|
||||
npc_argent_soldierAI(Creature* pCreature) : npc_escortAI(pCreature)
|
||||
{
|
||||
pInstance = pCreature->GetInstanceData();
|
||||
m_creature->SetReactState(REACT_DEFENSIVE);
|
||||
me->SetReactState(REACT_DEFENSIVE);
|
||||
SetDespawnAtEnd(false);
|
||||
uiWaypoint = 0;
|
||||
}
|
||||
@@ -398,23 +398,23 @@ struct npc_argent_soldierAI : public npc_escortAI
|
||||
switch(uiWaypoint)
|
||||
{
|
||||
case 0:
|
||||
m_creature->SetOrientation(5.81);
|
||||
me->SetOrientation(5.81);
|
||||
break;
|
||||
case 1:
|
||||
m_creature->SetOrientation(4.60);
|
||||
me->SetOrientation(4.60);
|
||||
break;
|
||||
case 2:
|
||||
m_creature->SetOrientation(2.79);
|
||||
me->SetOrientation(2.79);
|
||||
break;
|
||||
}
|
||||
|
||||
m_creature->SendMovementFlagUpdate();
|
||||
me->SendMovementFlagUpdate();
|
||||
}
|
||||
}
|
||||
|
||||
void SetData(uint32 uiType, uint32 uiData)
|
||||
{
|
||||
switch(m_creature->GetEntry())
|
||||
switch(me->GetEntry())
|
||||
{
|
||||
case NPC_ARGENT_LIGHWIELDER:
|
||||
switch(uiType)
|
||||
|
||||
+17
-17
@@ -104,8 +104,8 @@ struct boss_black_knightAI : public ScriptedAI
|
||||
void Reset()
|
||||
{
|
||||
RemoveSummons();
|
||||
m_creature->SetDisplayId(m_creature->GetNativeDisplayId());
|
||||
m_creature->clearUnitState(UNIT_STAT_ROOT | UNIT_STAT_STUNNED);
|
||||
me->SetDisplayId(me->GetNativeDisplayId());
|
||||
me->clearUnitState(UNIT_STAT_ROOT | UNIT_STAT_STUNNED);
|
||||
|
||||
bEventInProgress = false;
|
||||
bEvent = false;
|
||||
@@ -133,7 +133,7 @@ struct boss_black_knightAI : public ScriptedAI
|
||||
|
||||
for (std::list<uint64>::const_iterator itr = SummonList.begin(); itr != SummonList.end(); ++itr)
|
||||
{
|
||||
if (Creature* pTemp = Unit::GetCreature(*m_creature, *itr))
|
||||
if (Creature* pTemp = Unit::GetCreature(*me, *itr))
|
||||
if (pTemp)
|
||||
pTemp->DisappearAndDie();
|
||||
}
|
||||
@@ -143,7 +143,7 @@ struct boss_black_knightAI : public ScriptedAI
|
||||
void JustSummoned(Creature* pSummon)
|
||||
{
|
||||
SummonList.push_back(pSummon->GetGUID());
|
||||
pSummon->AI()->AttackStart(m_creature->getVictim());
|
||||
pSummon->AI()->AttackStart(me->getVictim());
|
||||
}
|
||||
|
||||
void UpdateAI(const uint32 uiDiff)
|
||||
@@ -155,12 +155,12 @@ struct boss_black_knightAI : public ScriptedAI
|
||||
if (bEventInProgress)
|
||||
if (uiResurrectTimer <= uiDiff)
|
||||
{
|
||||
m_creature->SetHealth(m_creature->GetMaxHealth());
|
||||
DoCast(m_creature,SPELL_BLACK_KNIGHT_RES,true);
|
||||
me->SetHealth(me->GetMaxHealth());
|
||||
DoCast(me,SPELL_BLACK_KNIGHT_RES,true);
|
||||
uiPhase++;
|
||||
uiResurrectTimer = 4000;
|
||||
bEventInProgress = false;
|
||||
m_creature->clearUnitState(UNIT_STAT_ROOT | UNIT_STAT_STUNNED);
|
||||
me->clearUnitState(UNIT_STAT_ROOT | UNIT_STAT_STUNNED);
|
||||
} else uiResurrectTimer -= uiDiff;
|
||||
|
||||
switch(uiPhase)
|
||||
@@ -203,13 +203,13 @@ struct boss_black_knightAI : public ScriptedAI
|
||||
if (!bSummonArmy)
|
||||
{
|
||||
bSummonArmy = true;
|
||||
m_creature->addUnitState(UNIT_STAT_ROOT | UNIT_STAT_STUNNED);
|
||||
DoCast(m_creature, SPELL_ARMY_DEAD);
|
||||
me->addUnitState(UNIT_STAT_ROOT | UNIT_STAT_STUNNED);
|
||||
DoCast(me, SPELL_ARMY_DEAD);
|
||||
}
|
||||
if (!bDeathArmyDone)
|
||||
if (uiDeathArmyCheckTimer <= uiDiff)
|
||||
{
|
||||
m_creature->clearUnitState(UNIT_STAT_ROOT | UNIT_STAT_STUNNED);
|
||||
me->clearUnitState(UNIT_STAT_ROOT | UNIT_STAT_STUNNED);
|
||||
uiDeathArmyCheckTimer = 0;
|
||||
bDeathArmyDone = true;
|
||||
} else uiDeathArmyCheckTimer -= uiDiff;
|
||||
@@ -224,7 +224,7 @@ struct boss_black_knightAI : public ScriptedAI
|
||||
} else uiDesecration -= uiDiff;
|
||||
if (uiGhoulExplodeTimer <= uiDiff)
|
||||
{
|
||||
DoCast(m_creature, SPELL_GHOUL_EXPLODE);
|
||||
DoCast(me, SPELL_GHOUL_EXPLODE);
|
||||
uiGhoulExplodeTimer = 8000;
|
||||
} else uiGhoulExplodeTimer -= uiDiff;
|
||||
break;
|
||||
@@ -253,25 +253,25 @@ struct boss_black_knightAI : public ScriptedAI
|
||||
}
|
||||
}
|
||||
|
||||
if (!m_creature->hasUnitState(UNIT_STAT_ROOT) && !m_creature->GetHealth()*100 / m_creature->GetMaxHealth() <= 0)
|
||||
if (!me->hasUnitState(UNIT_STAT_ROOT) && !me->GetHealth()*100 / me->GetMaxHealth() <= 0)
|
||||
DoMeleeAttackIfReady();
|
||||
}
|
||||
|
||||
void DamageTaken(Unit* pDoneBy, uint32& uiDamage)
|
||||
{
|
||||
if (uiDamage > m_creature->GetHealth() && uiPhase <= PHASE_SKELETON)
|
||||
if (uiDamage > me->GetHealth() && uiPhase <= PHASE_SKELETON)
|
||||
{
|
||||
uiDamage = 0;
|
||||
m_creature->SetHealth(0);
|
||||
m_creature->addUnitState(UNIT_STAT_ROOT | UNIT_STAT_STUNNED);
|
||||
me->SetHealth(0);
|
||||
me->addUnitState(UNIT_STAT_ROOT | UNIT_STAT_STUNNED);
|
||||
RemoveSummons();
|
||||
switch(uiPhase)
|
||||
{
|
||||
case PHASE_UNDEAD:
|
||||
m_creature->SetDisplayId(MODEL_SKELETON);
|
||||
me->SetDisplayId(MODEL_SKELETON);
|
||||
break;
|
||||
case PHASE_SKELETON:
|
||||
m_creature->SetDisplayId(MODEL_GHOST);
|
||||
me->SetDisplayId(MODEL_GHOST);
|
||||
break;
|
||||
}
|
||||
bEventInProgress = true;
|
||||
|
||||
+87
-87
@@ -114,16 +114,16 @@ void AggroAllPlayers(Creature* pTemp)
|
||||
}
|
||||
}
|
||||
|
||||
bool GrandChampionsOutVehicle(Creature* m_creature)
|
||||
bool GrandChampionsOutVehicle(Creature* me)
|
||||
{
|
||||
ScriptedInstance* pInstance = m_creature->GetInstanceData();
|
||||
ScriptedInstance* pInstance = me->GetInstanceData();
|
||||
|
||||
if (!pInstance)
|
||||
return false;
|
||||
|
||||
Creature* pGrandChampion1 = Unit::GetCreature(*m_creature, pInstance->GetData64(DATA_GRAND_CHAMPION_1));
|
||||
Creature* pGrandChampion2 = Unit::GetCreature(*m_creature, pInstance->GetData64(DATA_GRAND_CHAMPION_2));
|
||||
Creature* pGrandChampion3 = Unit::GetCreature(*m_creature, pInstance->GetData64(DATA_GRAND_CHAMPION_3));
|
||||
Creature* pGrandChampion1 = Unit::GetCreature(*me, pInstance->GetData64(DATA_GRAND_CHAMPION_1));
|
||||
Creature* pGrandChampion2 = Unit::GetCreature(*me, pInstance->GetData64(DATA_GRAND_CHAMPION_2));
|
||||
Creature* pGrandChampion3 = Unit::GetCreature(*me, pInstance->GetData64(DATA_GRAND_CHAMPION_3));
|
||||
|
||||
if (pGrandChampion1 && pGrandChampion2 && pGrandChampion3)
|
||||
{
|
||||
@@ -218,7 +218,7 @@ struct generic_vehicleAI_toc5AI : public npc_escortAI
|
||||
void DoCastSpellShield()
|
||||
{
|
||||
for (uint8 i = 0; i < 3; ++i)
|
||||
DoCast(m_creature,SPELL_SHIELD,true);
|
||||
DoCast(me,SPELL_SHIELD,true);
|
||||
}
|
||||
|
||||
void UpdateAI(const uint32 uiDiff)
|
||||
@@ -230,7 +230,7 @@ struct generic_vehicleAI_toc5AI : public npc_escortAI
|
||||
|
||||
if (uiBuffTimer <= uiDiff)
|
||||
{
|
||||
if (!m_creature->HasAura(SPELL_SHIELD))
|
||||
if (!me->HasAura(SPELL_SHIELD))
|
||||
DoCastSpellShield();
|
||||
|
||||
uiBuffTimer = urand(30000,45000);
|
||||
@@ -238,16 +238,16 @@ struct generic_vehicleAI_toc5AI : public npc_escortAI
|
||||
|
||||
if (uiChargeTimer <= uiDiff)
|
||||
{
|
||||
Map::PlayerList const& players = m_creature->GetMap()->GetPlayers();
|
||||
if (m_creature->GetMap()->IsDungeon() && !players.isEmpty())
|
||||
Map::PlayerList const& players = me->GetMap()->GetPlayers();
|
||||
if (me->GetMap()->IsDungeon() && !players.isEmpty())
|
||||
{
|
||||
for (Map::PlayerList::const_iterator itr = players.begin(); itr != players.end(); ++itr)
|
||||
{
|
||||
Player* pPlayer = itr->getSource();
|
||||
if (pPlayer && !pPlayer->isGameMaster() && m_creature->IsInRange(pPlayer,8.0f,25.0f,false))
|
||||
if (pPlayer && !pPlayer->isGameMaster() && me->IsInRange(pPlayer,8.0f,25.0f,false))
|
||||
{
|
||||
DoResetThreat();
|
||||
m_creature->AddThreat(pPlayer,1.0f);
|
||||
me->AddThreat(pPlayer,1.0f);
|
||||
DoCast(pPlayer, SPELL_CHARGE);
|
||||
break;
|
||||
}
|
||||
@@ -259,19 +259,19 @@ struct generic_vehicleAI_toc5AI : public npc_escortAI
|
||||
//dosen't work at all
|
||||
if (uiShieldBreakerTimer <= uiDiff)
|
||||
{
|
||||
Vehicle *pVehicle = m_creature->GetVehicleKit();
|
||||
Vehicle *pVehicle = me->GetVehicleKit();
|
||||
if (!pVehicle)
|
||||
return;
|
||||
|
||||
if (Unit* pPassenger = pVehicle->GetPassenger(SEAT_ID_0))
|
||||
{
|
||||
Map::PlayerList const& players = m_creature->GetMap()->GetPlayers();
|
||||
if (m_creature->GetMap()->IsDungeon() && !players.isEmpty())
|
||||
Map::PlayerList const& players = me->GetMap()->GetPlayers();
|
||||
if (me->GetMap()->IsDungeon() && !players.isEmpty())
|
||||
{
|
||||
for (Map::PlayerList::const_iterator itr = players.begin(); itr != players.end(); ++itr)
|
||||
{
|
||||
Player* pPlayer = itr->getSource();
|
||||
if (pPlayer && !pPlayer->isGameMaster() && m_creature->IsInRange(pPlayer,10.0f,30.0f,false))
|
||||
if (pPlayer && !pPlayer->isGameMaster() && me->IsInRange(pPlayer,10.0f,30.0f,false))
|
||||
{
|
||||
pPassenger->CastSpell(pPlayer,SPELL_SHIELD_BREAKER,true);
|
||||
break;
|
||||
@@ -304,9 +304,9 @@ struct boss_warrior_toc5AI : public ScriptedAI
|
||||
uiPhase = 0;
|
||||
uiPhaseTimer = 0;
|
||||
|
||||
m_creature->SetReactState(REACT_PASSIVE);
|
||||
me->SetReactState(REACT_PASSIVE);
|
||||
// THIS IS A HACK, SHOULD BE REMOVED WHEN THE EVENT IS FULL SCRIPTED
|
||||
m_creature->SetFlag(UNIT_FIELD_FLAGS,UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_OOC_NOT_ATTACKABLE);
|
||||
me->SetFlag(UNIT_FIELD_FLAGS,UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_OOC_NOT_ATTACKABLE);
|
||||
}
|
||||
|
||||
ScriptedInstance* pInstance;
|
||||
@@ -344,16 +344,16 @@ struct boss_warrior_toc5AI : public ScriptedAI
|
||||
|
||||
void UpdateAI(const uint32 uiDiff)
|
||||
{
|
||||
if (!bDone && GrandChampionsOutVehicle(m_creature))
|
||||
if (!bDone && GrandChampionsOutVehicle(me))
|
||||
{
|
||||
bDone = true;
|
||||
|
||||
if (pInstance && m_creature->GetGUID() == pInstance->GetData64(DATA_GRAND_CHAMPION_1))
|
||||
m_creature->SetHomePosition(739.678,662.541,412.393,4.49);
|
||||
else if (pInstance && m_creature->GetGUID() == pInstance->GetData64(DATA_GRAND_CHAMPION_2))
|
||||
m_creature->SetHomePosition(746.71,661.02,411.69,4.6);
|
||||
else if (pInstance && m_creature->GetGUID() == pInstance->GetData64(DATA_GRAND_CHAMPION_3))
|
||||
m_creature->SetHomePosition(754.34,660.70,412.39,4.79);
|
||||
if (pInstance && me->GetGUID() == pInstance->GetData64(DATA_GRAND_CHAMPION_1))
|
||||
me->SetHomePosition(739.678,662.541,412.393,4.49);
|
||||
else if (pInstance && me->GetGUID() == pInstance->GetData64(DATA_GRAND_CHAMPION_2))
|
||||
me->SetHomePosition(746.71,661.02,411.69,4.6);
|
||||
else if (pInstance && me->GetGUID() == pInstance->GetData64(DATA_GRAND_CHAMPION_3))
|
||||
me->SetHomePosition(754.34,660.70,412.39,4.79);
|
||||
|
||||
EnterEvadeMode();
|
||||
bHome = true;
|
||||
@@ -363,26 +363,26 @@ struct boss_warrior_toc5AI : public ScriptedAI
|
||||
{
|
||||
if (uiPhase == 1)
|
||||
{
|
||||
AggroAllPlayers(m_creature);
|
||||
AggroAllPlayers(me);
|
||||
uiPhase = 0;
|
||||
}
|
||||
}else uiPhaseTimer -= uiDiff;
|
||||
|
||||
if (!UpdateVictim() || m_creature->HasUnitMovementFlag(MOVEMENTFLAG_ONTRANSPORT))
|
||||
if (!UpdateVictim() || me->HasUnitMovementFlag(MOVEMENTFLAG_ONTRANSPORT))
|
||||
return;
|
||||
|
||||
if (uiInterceptTimer <= uiDiff)
|
||||
{
|
||||
Map::PlayerList const& players = m_creature->GetMap()->GetPlayers();
|
||||
if (m_creature->GetMap()->IsDungeon() && !players.isEmpty())
|
||||
Map::PlayerList const& players = me->GetMap()->GetPlayers();
|
||||
if (me->GetMap()->IsDungeon() && !players.isEmpty())
|
||||
{
|
||||
for (Map::PlayerList::const_iterator itr = players.begin(); itr != players.end(); ++itr)
|
||||
{
|
||||
Player* pPlayer = itr->getSource();
|
||||
if (pPlayer && !pPlayer->isGameMaster() && m_creature->IsInRange(pPlayer,8.0f,25.0f,false))
|
||||
if (pPlayer && !pPlayer->isGameMaster() && me->IsInRange(pPlayer,8.0f,25.0f,false))
|
||||
{
|
||||
DoResetThreat();
|
||||
m_creature->AddThreat(pPlayer,5.0f);
|
||||
me->AddThreat(pPlayer,5.0f);
|
||||
DoCast(pPlayer,SPELL_INTERCEPT);
|
||||
break;
|
||||
}
|
||||
@@ -431,9 +431,9 @@ struct boss_mage_toc5AI : public ScriptedAI
|
||||
uiPhase = 0;
|
||||
uiPhaseTimer = 0;
|
||||
|
||||
m_creature->SetReactState(REACT_PASSIVE);
|
||||
me->SetReactState(REACT_PASSIVE);
|
||||
// THIS IS A HACK, SHOULD BE REMOVED WHEN THE EVENT IS FULL SCRIPTED
|
||||
m_creature->SetFlag(UNIT_FIELD_FLAGS,UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_OOC_NOT_ATTACKABLE);
|
||||
me->SetFlag(UNIT_FIELD_FLAGS,UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_OOC_NOT_ATTACKABLE);
|
||||
}
|
||||
|
||||
ScriptedInstance* pInstance;
|
||||
@@ -472,16 +472,16 @@ struct boss_mage_toc5AI : public ScriptedAI
|
||||
|
||||
void UpdateAI(const uint32 uiDiff)
|
||||
{
|
||||
if (!bDone && GrandChampionsOutVehicle(m_creature))
|
||||
if (!bDone && GrandChampionsOutVehicle(me))
|
||||
{
|
||||
bDone = true;
|
||||
|
||||
if (pInstance && m_creature->GetGUID() == pInstance->GetData64(DATA_GRAND_CHAMPION_1))
|
||||
m_creature->SetHomePosition(739.678,662.541,412.393,4.49);
|
||||
else if (pInstance && m_creature->GetGUID() == pInstance->GetData64(DATA_GRAND_CHAMPION_2))
|
||||
m_creature->SetHomePosition(746.71,661.02,411.69,4.6);
|
||||
else if (pInstance && m_creature->GetGUID() == pInstance->GetData64(DATA_GRAND_CHAMPION_3))
|
||||
m_creature->SetHomePosition(754.34,660.70,412.39,4.79);
|
||||
if (pInstance && me->GetGUID() == pInstance->GetData64(DATA_GRAND_CHAMPION_1))
|
||||
me->SetHomePosition(739.678,662.541,412.393,4.49);
|
||||
else if (pInstance && me->GetGUID() == pInstance->GetData64(DATA_GRAND_CHAMPION_2))
|
||||
me->SetHomePosition(746.71,661.02,411.69,4.6);
|
||||
else if (pInstance && me->GetGUID() == pInstance->GetData64(DATA_GRAND_CHAMPION_3))
|
||||
me->SetHomePosition(754.34,660.70,412.39,4.79);
|
||||
|
||||
if (pInstance)
|
||||
pInstance->SetData(BOSS_GRAND_CHAMPIONS, IN_PROGRESS);
|
||||
@@ -494,20 +494,20 @@ struct boss_mage_toc5AI : public ScriptedAI
|
||||
{
|
||||
if (uiPhase == 1)
|
||||
{
|
||||
AggroAllPlayers(m_creature);
|
||||
AggroAllPlayers(me);
|
||||
uiPhase = 0;
|
||||
}
|
||||
}else uiPhaseTimer -= uiDiff;
|
||||
|
||||
if (uiFireBallTimer <= uiDiff)
|
||||
{
|
||||
if (m_creature->getVictim())
|
||||
if (me->getVictim())
|
||||
DoCastVictim(SPELL_FIREBALL);
|
||||
uiFireBallTimer = 5000;
|
||||
} else uiFireBallTimer -= uiDiff;
|
||||
|
||||
|
||||
if (!UpdateVictim() || m_creature->HasUnitMovementFlag(MOVEMENTFLAG_ONTRANSPORT))
|
||||
if (!UpdateVictim() || me->HasUnitMovementFlag(MOVEMENTFLAG_ONTRANSPORT))
|
||||
return;
|
||||
|
||||
if (uiFireBallTimer <= uiDiff)
|
||||
@@ -531,9 +531,9 @@ struct boss_mage_toc5AI : public ScriptedAI
|
||||
|
||||
if (uiHasteTimer <= uiDiff)
|
||||
{
|
||||
m_creature->InterruptNonMeleeSpells(true);
|
||||
me->InterruptNonMeleeSpells(true);
|
||||
|
||||
DoCast(m_creature,SPELL_HASTE);
|
||||
DoCast(me,SPELL_HASTE);
|
||||
uiHasteTimer = 22000;
|
||||
} else uiHasteTimer -= uiDiff;
|
||||
|
||||
@@ -565,9 +565,9 @@ struct boss_shaman_toc5AI : public ScriptedAI
|
||||
uiPhase = 0;
|
||||
uiPhaseTimer = 0;
|
||||
|
||||
m_creature->SetReactState(REACT_PASSIVE);
|
||||
me->SetReactState(REACT_PASSIVE);
|
||||
// THIS IS A HACK, SHOULD BE REMOVED WHEN THE EVENT IS FULL SCRIPTED
|
||||
m_creature->SetFlag(UNIT_FIELD_FLAGS,UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_OOC_NOT_ATTACKABLE);
|
||||
me->SetFlag(UNIT_FIELD_FLAGS,UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_OOC_NOT_ATTACKABLE);
|
||||
}
|
||||
|
||||
ScriptedInstance* pInstance;
|
||||
@@ -593,7 +593,7 @@ struct boss_shaman_toc5AI : public ScriptedAI
|
||||
|
||||
void EnterCombat(Unit* pWho)
|
||||
{
|
||||
DoCast(m_creature,SPELL_EARTH_SHIELD);
|
||||
DoCast(me,SPELL_EARTH_SHIELD);
|
||||
DoCast(pWho,SPELL_HEX_OF_MENDING);
|
||||
};
|
||||
|
||||
@@ -612,16 +612,16 @@ struct boss_shaman_toc5AI : public ScriptedAI
|
||||
|
||||
void UpdateAI(const uint32 uiDiff)
|
||||
{
|
||||
if (!bDone && GrandChampionsOutVehicle(m_creature))
|
||||
if (!bDone && GrandChampionsOutVehicle(me))
|
||||
{
|
||||
bDone = true;
|
||||
|
||||
if (pInstance && m_creature->GetGUID() == pInstance->GetData64(DATA_GRAND_CHAMPION_1))
|
||||
m_creature->SetHomePosition(739.678,662.541,412.393,4.49);
|
||||
else if (pInstance && m_creature->GetGUID() == pInstance->GetData64(DATA_GRAND_CHAMPION_2))
|
||||
m_creature->SetHomePosition(746.71,661.02,411.69,4.6);
|
||||
else if (pInstance && m_creature->GetGUID() == pInstance->GetData64(DATA_GRAND_CHAMPION_3))
|
||||
m_creature->SetHomePosition(754.34,660.70,412.39,4.79);
|
||||
if (pInstance && me->GetGUID() == pInstance->GetData64(DATA_GRAND_CHAMPION_1))
|
||||
me->SetHomePosition(739.678,662.541,412.393,4.49);
|
||||
else if (pInstance && me->GetGUID() == pInstance->GetData64(DATA_GRAND_CHAMPION_2))
|
||||
me->SetHomePosition(746.71,661.02,411.69,4.6);
|
||||
else if (pInstance && me->GetGUID() == pInstance->GetData64(DATA_GRAND_CHAMPION_3))
|
||||
me->SetHomePosition(754.34,660.70,412.39,4.79);
|
||||
|
||||
if (pInstance)
|
||||
pInstance->SetData(BOSS_GRAND_CHAMPIONS, IN_PROGRESS);
|
||||
@@ -634,12 +634,12 @@ struct boss_shaman_toc5AI : public ScriptedAI
|
||||
{
|
||||
if (uiPhase == 1)
|
||||
{
|
||||
AggroAllPlayers(m_creature);
|
||||
AggroAllPlayers(me);
|
||||
uiPhase = 0;
|
||||
}
|
||||
}else uiPhaseTimer -= uiDiff;
|
||||
|
||||
if (!UpdateVictim() || m_creature->HasUnitMovementFlag(MOVEMENTFLAG_ONTRANSPORT))
|
||||
if (!UpdateVictim() || me->HasUnitMovementFlag(MOVEMENTFLAG_ONTRANSPORT))
|
||||
return;
|
||||
|
||||
if (uiChainLightningTimer <= uiDiff)
|
||||
@@ -659,14 +659,14 @@ struct boss_shaman_toc5AI : public ScriptedAI
|
||||
if (Unit* pFriend = DoSelectLowestHpFriendly(40))
|
||||
DoCast(pFriend,SPELL_HEALING_WAVE);
|
||||
} else
|
||||
DoCast(m_creature,SPELL_HEALING_WAVE);
|
||||
DoCast(me,SPELL_HEALING_WAVE);
|
||||
|
||||
uiHealingWaveTimer = 12000;
|
||||
} else uiHealingWaveTimer -= uiDiff;
|
||||
|
||||
if (uiEartShieldTimer <= uiDiff)
|
||||
{
|
||||
DoCast(m_creature,SPELL_EARTH_SHIELD);
|
||||
DoCast(me,SPELL_EARTH_SHIELD);
|
||||
|
||||
uiEartShieldTimer = urand(30000,35000);
|
||||
} else uiEartShieldTimer -= uiDiff;
|
||||
@@ -706,9 +706,9 @@ struct boss_hunter_toc5AI : public ScriptedAI
|
||||
uiPhase = 0;
|
||||
uiPhaseTimer = 0;
|
||||
|
||||
m_creature->SetReactState(REACT_PASSIVE);
|
||||
me->SetReactState(REACT_PASSIVE);
|
||||
// THIS IS A HACK, SHOULD BE REMOVED WHEN THE EVENT IS FULL SCRIPTED
|
||||
m_creature->SetFlag(UNIT_FIELD_FLAGS,UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_OOC_NOT_ATTACKABLE);
|
||||
me->SetFlag(UNIT_FIELD_FLAGS,UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_OOC_NOT_ATTACKABLE);
|
||||
}
|
||||
|
||||
ScriptedInstance* pInstance;
|
||||
@@ -752,16 +752,16 @@ struct boss_hunter_toc5AI : public ScriptedAI
|
||||
|
||||
void UpdateAI(const uint32 uiDiff)
|
||||
{
|
||||
if (!bDone && GrandChampionsOutVehicle(m_creature))
|
||||
if (!bDone && GrandChampionsOutVehicle(me))
|
||||
{
|
||||
bDone = true;
|
||||
|
||||
if (pInstance && m_creature->GetGUID() == pInstance->GetData64(DATA_GRAND_CHAMPION_1))
|
||||
m_creature->SetHomePosition(739.678,662.541,412.393,4.49);
|
||||
else if (pInstance && m_creature->GetGUID() == pInstance->GetData64(DATA_GRAND_CHAMPION_2))
|
||||
m_creature->SetHomePosition(746.71,661.02,411.69,4.6);
|
||||
else if (pInstance && m_creature->GetGUID() == pInstance->GetData64(DATA_GRAND_CHAMPION_3))
|
||||
m_creature->SetHomePosition(754.34,660.70,412.39,4.79);
|
||||
if (pInstance && me->GetGUID() == pInstance->GetData64(DATA_GRAND_CHAMPION_1))
|
||||
me->SetHomePosition(739.678,662.541,412.393,4.49);
|
||||
else if (pInstance && me->GetGUID() == pInstance->GetData64(DATA_GRAND_CHAMPION_2))
|
||||
me->SetHomePosition(746.71,661.02,411.69,4.6);
|
||||
else if (pInstance && me->GetGUID() == pInstance->GetData64(DATA_GRAND_CHAMPION_3))
|
||||
me->SetHomePosition(754.34,660.70,412.39,4.79);
|
||||
|
||||
if (pInstance)
|
||||
pInstance->SetData(BOSS_GRAND_CHAMPIONS, IN_PROGRESS);
|
||||
@@ -774,12 +774,12 @@ struct boss_hunter_toc5AI : public ScriptedAI
|
||||
{
|
||||
if (uiPhase == 1)
|
||||
{
|
||||
AggroAllPlayers(m_creature);
|
||||
AggroAllPlayers(me);
|
||||
uiPhase = 0;
|
||||
}
|
||||
}else uiPhaseTimer -= uiDiff;
|
||||
|
||||
if (!UpdateVictim() || m_creature->HasUnitMovementFlag(MOVEMENTFLAG_ONTRANSPORT))
|
||||
if (!UpdateVictim() || me->HasUnitMovementFlag(MOVEMENTFLAG_ONTRANSPORT))
|
||||
return;
|
||||
|
||||
if (uiLightningArrowsTimer <= uiDiff)
|
||||
@@ -802,21 +802,21 @@ struct boss_hunter_toc5AI : public ScriptedAI
|
||||
|
||||
if (bShoot && uiMultiShotTimer <= uiDiff)
|
||||
{
|
||||
m_creature->InterruptNonMeleeSpells(true);
|
||||
Unit* pTarget = Unit::GetUnit(*m_creature, uiTargetGUID);
|
||||
me->InterruptNonMeleeSpells(true);
|
||||
Unit* pTarget = Unit::GetUnit(*me, uiTargetGUID);
|
||||
|
||||
if (pTarget && m_creature->IsInRange(pTarget,5.0f,30.0f,false))
|
||||
if (pTarget && me->IsInRange(pTarget,5.0f,30.0f,false))
|
||||
{
|
||||
DoCast(pTarget,SPELL_MULTI_SHOT);
|
||||
} else
|
||||
{
|
||||
Map::PlayerList const& players = m_creature->GetMap()->GetPlayers();
|
||||
if (m_creature->GetMap()->IsDungeon() && !players.isEmpty())
|
||||
Map::PlayerList const& players = me->GetMap()->GetPlayers();
|
||||
if (me->GetMap()->IsDungeon() && !players.isEmpty())
|
||||
{
|
||||
for (Map::PlayerList::const_iterator itr = players.begin(); itr != players.end(); ++itr)
|
||||
{
|
||||
Player* pPlayer = itr->getSource();
|
||||
if (pPlayer && !pPlayer->isGameMaster() && m_creature->IsInRange(pPlayer,5.0f,30.0f,false))
|
||||
if (pPlayer && !pPlayer->isGameMaster() && me->IsInRange(pPlayer,5.0f,30.0f,false))
|
||||
{
|
||||
DoCast(pTarget,SPELL_MULTI_SHOT);
|
||||
break;
|
||||
@@ -855,9 +855,9 @@ struct boss_rouge_toc5AI : public ScriptedAI
|
||||
uiPhase = 0;
|
||||
uiPhaseTimer = 0;
|
||||
|
||||
m_creature->SetReactState(REACT_PASSIVE);
|
||||
me->SetReactState(REACT_PASSIVE);
|
||||
// THIS IS A HACK, SHOULD BE REMOVED WHEN THE EVENT IS FULL SCRIPTED
|
||||
m_creature->SetFlag(UNIT_FIELD_FLAGS,UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_OOC_NOT_ATTACKABLE);
|
||||
me->SetFlag(UNIT_FIELD_FLAGS,UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_OOC_NOT_ATTACKABLE);
|
||||
}
|
||||
|
||||
ScriptedInstance* pInstance;
|
||||
@@ -893,16 +893,16 @@ struct boss_rouge_toc5AI : public ScriptedAI
|
||||
|
||||
void UpdateAI(const uint32 uiDiff)
|
||||
{
|
||||
if (!bDone && GrandChampionsOutVehicle(m_creature))
|
||||
if (!bDone && GrandChampionsOutVehicle(me))
|
||||
{
|
||||
bDone = true;
|
||||
|
||||
if (pInstance && m_creature->GetGUID() == pInstance->GetData64(DATA_GRAND_CHAMPION_1))
|
||||
m_creature->SetHomePosition(739.678,662.541,412.393,4.49);
|
||||
else if (pInstance && m_creature->GetGUID() == pInstance->GetData64(DATA_GRAND_CHAMPION_2))
|
||||
m_creature->SetHomePosition(746.71,661.02,411.69,4.6);
|
||||
else if (pInstance && m_creature->GetGUID() == pInstance->GetData64(DATA_GRAND_CHAMPION_3))
|
||||
m_creature->SetHomePosition(754.34,660.70,412.39,4.79);
|
||||
if (pInstance && me->GetGUID() == pInstance->GetData64(DATA_GRAND_CHAMPION_1))
|
||||
me->SetHomePosition(739.678,662.541,412.393,4.49);
|
||||
else if (pInstance && me->GetGUID() == pInstance->GetData64(DATA_GRAND_CHAMPION_2))
|
||||
me->SetHomePosition(746.71,661.02,411.69,4.6);
|
||||
else if (pInstance && me->GetGUID() == pInstance->GetData64(DATA_GRAND_CHAMPION_3))
|
||||
me->SetHomePosition(754.34,660.70,412.39,4.79);
|
||||
|
||||
if (pInstance)
|
||||
pInstance->SetData(BOSS_GRAND_CHAMPIONS, IN_PROGRESS);
|
||||
@@ -915,17 +915,17 @@ struct boss_rouge_toc5AI : public ScriptedAI
|
||||
{
|
||||
if (uiPhase == 1)
|
||||
{
|
||||
AggroAllPlayers(m_creature);
|
||||
AggroAllPlayers(me);
|
||||
uiPhase = 0;
|
||||
}
|
||||
} else uiPhaseTimer -= uiDiff;
|
||||
|
||||
if (!UpdateVictim() || m_creature->HasUnitMovementFlag(MOVEMENTFLAG_ONTRANSPORT))
|
||||
if (!UpdateVictim() || me->HasUnitMovementFlag(MOVEMENTFLAG_ONTRANSPORT))
|
||||
return;
|
||||
|
||||
if (uiEviscerateTimer <= uiDiff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(),SPELL_EVISCERATE);
|
||||
DoCast(me->getVictim(),SPELL_EVISCERATE);
|
||||
uiEviscerateTimer = 8000;
|
||||
} else uiEviscerateTimer -= uiDiff;
|
||||
|
||||
|
||||
+28
-28
@@ -69,9 +69,9 @@ struct npc_announcer_toc5AI : public ScriptedAI
|
||||
Champion2List.clear();
|
||||
Champion3List.clear();
|
||||
|
||||
m_creature->SetReactState(REACT_PASSIVE);
|
||||
m_creature->SetFlag(UNIT_FIELD_FLAGS,UNIT_FLAG_NON_ATTACKABLE);
|
||||
m_creature->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP);
|
||||
me->SetReactState(REACT_PASSIVE);
|
||||
me->SetFlag(UNIT_FIELD_FLAGS,UNIT_FLAG_NON_ATTACKABLE);
|
||||
me->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP);
|
||||
|
||||
SetGrandChampionsForEncounter();
|
||||
SetArgentChampion();
|
||||
@@ -120,8 +120,8 @@ struct npc_announcer_toc5AI : public ScriptedAI
|
||||
NextStep(10000,false,1);
|
||||
break;
|
||||
case DATA_IN_POSITION: //movement done.
|
||||
m_creature->GetMotionMaster()->MovePoint(1,735.81,661.92,412.39);
|
||||
if (GameObject* pGO = GameObject::GetGameObject(*m_creature, pInstance->GetData64(DATA_MAIN_GATE)))
|
||||
me->GetMotionMaster()->MovePoint(1,735.81,661.92,412.39);
|
||||
if (GameObject* pGO = GameObject::GetGameObject(*me, pInstance->GetData64(DATA_MAIN_GATE)))
|
||||
pInstance->HandleGameObject(pGO->GetGUID(),false);
|
||||
NextStep(10000,false,3);
|
||||
break;
|
||||
@@ -142,7 +142,7 @@ struct npc_announcer_toc5AI : public ScriptedAI
|
||||
}
|
||||
|
||||
for (std::list<uint64>::const_iterator itr = TempList.begin(); itr != TempList.end(); ++itr)
|
||||
if (Creature* pSummon = Unit::GetCreature(*m_creature, *itr))
|
||||
if (Creature* pSummon = Unit::GetCreature(*me, *itr))
|
||||
AggroAllPlayers(pSummon);
|
||||
}else if (uiLesserChampions == 9)
|
||||
StartGrandChampionsAttack();
|
||||
@@ -154,9 +154,9 @@ struct npc_announcer_toc5AI : public ScriptedAI
|
||||
|
||||
void StartGrandChampionsAttack()
|
||||
{
|
||||
Creature* pGrandChampion1 = Unit::GetCreature(*m_creature, uiVehicle1GUID);
|
||||
Creature* pGrandChampion2 = Unit::GetCreature(*m_creature, uiVehicle2GUID);
|
||||
Creature* pGrandChampion3 = Unit::GetCreature(*m_creature, uiVehicle3GUID);
|
||||
Creature* pGrandChampion1 = Unit::GetCreature(*me, uiVehicle1GUID);
|
||||
Creature* pGrandChampion2 = Unit::GetCreature(*me, uiVehicle2GUID);
|
||||
Creature* pGrandChampion3 = Unit::GetCreature(*me, uiVehicle3GUID);
|
||||
|
||||
if (pGrandChampion1 && pGrandChampion2 && pGrandChampion3)
|
||||
{
|
||||
@@ -173,8 +173,8 @@ struct npc_announcer_toc5AI : public ScriptedAI
|
||||
|
||||
if (uiPointId == 1)
|
||||
{
|
||||
m_creature->SetOrientation(ORIENTATION);
|
||||
m_creature->SendMovementFlagUpdate();
|
||||
me->SetOrientation(ORIENTATION);
|
||||
me->SendMovementFlagUpdate();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -209,7 +209,7 @@ struct npc_announcer_toc5AI : public ScriptedAI
|
||||
return;
|
||||
}
|
||||
|
||||
if (Creature* pBoss = m_creature->SummonCreature(VEHICLE_TO_SUMMON1,SpawnPosition))
|
||||
if (Creature* pBoss = me->SummonCreature(VEHICLE_TO_SUMMON1,SpawnPosition))
|
||||
{
|
||||
switch(uiSummonTimes)
|
||||
{
|
||||
@@ -217,7 +217,7 @@ struct npc_announcer_toc5AI : public ScriptedAI
|
||||
{
|
||||
uiVehicle1GUID = pBoss->GetGUID();
|
||||
uint64 uiGrandChampionBoss1 = 0;
|
||||
if (Creature* pBoss = Unit::GetCreature(*m_creature, uiVehicle1GUID))
|
||||
if (Creature* pBoss = Unit::GetCreature(*me, uiVehicle1GUID))
|
||||
if (Vehicle* pVehicle = pBoss->GetVehicleKit())
|
||||
if (Unit* pUnit = pVehicle->GetPassenger(0))
|
||||
uiGrandChampionBoss1 = pUnit->GetGUID();
|
||||
@@ -233,7 +233,7 @@ struct npc_announcer_toc5AI : public ScriptedAI
|
||||
{
|
||||
uiVehicle2GUID = pBoss->GetGUID();
|
||||
uint64 uiGrandChampionBoss2 = 0;
|
||||
if (Creature* pBoss = Unit::GetCreature(*m_creature, uiVehicle2GUID))
|
||||
if (Creature* pBoss = Unit::GetCreature(*me, uiVehicle2GUID))
|
||||
if (Vehicle* pVehicle = pBoss->GetVehicleKit())
|
||||
if (Unit* pUnit = pVehicle->GetPassenger(0))
|
||||
uiGrandChampionBoss2 = pUnit->GetGUID();
|
||||
@@ -249,7 +249,7 @@ struct npc_announcer_toc5AI : public ScriptedAI
|
||||
{
|
||||
uiVehicle3GUID = pBoss->GetGUID();
|
||||
uint64 uiGrandChampionBoss3 = 0;
|
||||
if (Creature* pBoss = Unit::GetCreature(*m_creature, uiVehicle3GUID))
|
||||
if (Creature* pBoss = Unit::GetCreature(*me, uiVehicle3GUID))
|
||||
if (Vehicle* pVehicle = pBoss->GetVehicleKit())
|
||||
if (Unit* pUnit = pVehicle->GetPassenger(0))
|
||||
uiGrandChampionBoss3 = pUnit->GetGUID();
|
||||
@@ -267,7 +267,7 @@ struct npc_announcer_toc5AI : public ScriptedAI
|
||||
|
||||
for (uint8 i = 0; i < 3; ++i)
|
||||
{
|
||||
if (Creature* pAdd = m_creature->SummonCreature(VEHICLE_TO_SUMMON2,SpawnPosition,TEMPSUMMON_CORPSE_DESPAWN))
|
||||
if (Creature* pAdd = me->SummonCreature(VEHICLE_TO_SUMMON2,SpawnPosition,TEMPSUMMON_CORPSE_DESPAWN))
|
||||
{
|
||||
switch(uiSummonTimes)
|
||||
{
|
||||
@@ -302,17 +302,17 @@ struct npc_announcer_toc5AI : public ScriptedAI
|
||||
|
||||
void DoStartArgentChampionEncounter()
|
||||
{
|
||||
m_creature->GetMotionMaster()->MovePoint(1,735.81,661.92,412.39);
|
||||
me->GetMotionMaster()->MovePoint(1,735.81,661.92,412.39);
|
||||
|
||||
if (Creature* pBoss = m_creature->SummonCreature(uiArgentChampion,SpawnPosition))
|
||||
if (Creature* pBoss = me->SummonCreature(uiArgentChampion,SpawnPosition))
|
||||
{
|
||||
for (uint8 i = 0; i < 3; ++i)
|
||||
{
|
||||
if (Creature* pTrash = m_creature->SummonCreature(NPC_ARGENT_LIGHWIELDER,SpawnPosition))
|
||||
if (Creature* pTrash = me->SummonCreature(NPC_ARGENT_LIGHWIELDER,SpawnPosition))
|
||||
pTrash->AI()->SetData(i,0);
|
||||
if (Creature* pTrash = m_creature->SummonCreature(NPC_ARGENT_MONK,SpawnPosition))
|
||||
if (Creature* pTrash = me->SummonCreature(NPC_ARGENT_MONK,SpawnPosition))
|
||||
pTrash->AI()->SetData(i,0);
|
||||
if (Creature* pTrash = m_creature->SummonCreature(NPC_PRIESTESS,SpawnPosition))
|
||||
if (Creature* pTrash = me->SummonCreature(NPC_PRIESTESS,SpawnPosition))
|
||||
pTrash->AI()->SetData(i,0);
|
||||
}
|
||||
}
|
||||
@@ -349,14 +349,14 @@ struct npc_announcer_toc5AI : public ScriptedAI
|
||||
if (!pInstance)
|
||||
return;
|
||||
|
||||
m_creature->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP);
|
||||
me->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP);
|
||||
|
||||
if (pInstance->GetData(BOSS_BLACK_KNIGHT) == NOT_STARTED)
|
||||
{
|
||||
if (pInstance->GetData(BOSS_ARGENT_CHALLENGE_E) == NOT_STARTED && pInstance->GetData(BOSS_ARGENT_CHALLENGE_P) == NOT_STARTED)
|
||||
{
|
||||
if (pInstance->GetData(BOSS_GRAND_CHAMPIONS) == NOT_STARTED)
|
||||
m_creature->AI()->SetData(DATA_START,0);
|
||||
me->AI()->SetData(DATA_START,0);
|
||||
|
||||
if (pInstance->GetData(BOSS_GRAND_CHAMPIONS) == DONE)
|
||||
DoStartArgentChampionEncounter();
|
||||
@@ -365,13 +365,13 @@ struct npc_announcer_toc5AI : public ScriptedAI
|
||||
if (pInstance->GetData(BOSS_GRAND_CHAMPIONS) == DONE &&
|
||||
pInstance->GetData(BOSS_ARGENT_CHALLENGE_E) == DONE ||
|
||||
pInstance->GetData(BOSS_ARGENT_CHALLENGE_P) == DONE)
|
||||
m_creature->SummonCreature(VEHICLE_BLACK_KNIGHT,769.834,651.915,447.035,0);
|
||||
me->SummonCreature(VEHICLE_BLACK_KNIGHT,769.834,651.915,447.035,0);
|
||||
}
|
||||
}
|
||||
|
||||
void AggroAllPlayers(Creature* pTemp)
|
||||
{
|
||||
Map::PlayerList const &PlList = m_creature->GetMap()->GetPlayers();
|
||||
Map::PlayerList const &PlList = me->GetMap()->GetPlayers();
|
||||
|
||||
if (PlList.isEmpty())
|
||||
return;
|
||||
@@ -385,7 +385,7 @@ struct npc_announcer_toc5AI : public ScriptedAI
|
||||
|
||||
if (pPlayer->isAlive())
|
||||
{
|
||||
pTemp->SetHomePosition(m_creature->GetPositionX(),m_creature->GetPositionY(),m_creature->GetPositionZ(),m_creature->GetOrientation());
|
||||
pTemp->SetHomePosition(me->GetPositionX(),me->GetPositionY(),me->GetPositionZ(),me->GetOrientation());
|
||||
pTemp->RemoveFlag(UNIT_FIELD_FLAGS,UNIT_FLAG_NON_ATTACKABLE);
|
||||
pTemp->SetReactState(REACT_AGGRESSIVE);
|
||||
pTemp->SetInCombatWith(pPlayer);
|
||||
@@ -417,7 +417,7 @@ struct npc_announcer_toc5AI : public ScriptedAI
|
||||
if (!Champion1List.empty())
|
||||
{
|
||||
for (std::list<uint64>::const_iterator itr = Champion1List.begin(); itr != Champion1List.end(); ++itr)
|
||||
if (Creature* pSummon = Unit::GetCreature(*m_creature, *itr))
|
||||
if (Creature* pSummon = Unit::GetCreature(*me, *itr))
|
||||
AggroAllPlayers(pSummon);
|
||||
NextStep(0,false);
|
||||
}
|
||||
@@ -452,7 +452,7 @@ struct npc_announcer_toc5AI : public ScriptedAI
|
||||
case VEHICLE_ORGRIMMAR_WOLF:
|
||||
case VEHICLE_SILVERMOON_HAWKSTRIDER:
|
||||
case VEHICLE_DARKSPEAR_RAPTOR:
|
||||
m_creature->AI()->SetData(DATA_LESSER_CHAMPIONS_DEFEATED,0);
|
||||
me->AI()->SetData(DATA_LESSER_CHAMPIONS_DEFEATED,0);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -62,7 +62,7 @@ struct npc_warmage_violetstandAI : public Scripted_NoMovementAI
|
||||
{
|
||||
if (m_uiTimer <= uiDiff)
|
||||
{
|
||||
m_creature->CastStop();
|
||||
me->CastStop();
|
||||
Creature* pTarget = GetClosestCreatureWithEntry(me,NPC_TRANSITUS_SHIELD_DUMMY,32.0f);
|
||||
|
||||
switch(me->GetEntry())
|
||||
@@ -70,7 +70,7 @@ struct npc_warmage_violetstandAI : public Scripted_NoMovementAI
|
||||
case NPC_WARMAGE_SARINA:
|
||||
{
|
||||
std::list<Creature*> orbList;
|
||||
GetCreatureListWithEntryInGrid(orbList, m_creature, NPC_TRANSITUS_SHIELD_DUMMY, 32.0f);
|
||||
GetCreatureListWithEntryInGrid(orbList, me, NPC_TRANSITUS_SHIELD_DUMMY, 32.0f);
|
||||
if (!orbList.empty())
|
||||
{
|
||||
for (std::list<Creature*>::const_iterator itr = orbList.begin(); itr != orbList.end(); ++itr)
|
||||
|
||||
@@ -70,7 +70,7 @@ struct npc_mageguard_dalaranAI : public Scripted_NoMovementAI
|
||||
if (!pPlayer || pPlayer->isGameMaster() || pPlayer->IsBeingTeleported())
|
||||
return;
|
||||
|
||||
switch (m_creature->GetEntry())
|
||||
switch (me->GetEntry())
|
||||
{
|
||||
case 29254:
|
||||
if (pPlayer->GetTeam() == HORDE) // Horde unit found in Alliance area
|
||||
|
||||
@@ -127,8 +127,8 @@ struct boss_dredAI : public ScriptedAI
|
||||
|
||||
float x,y,z;
|
||||
|
||||
m_creature->GetClosePoint(x,y,z,m_creature->GetObjectSize()/3,10.0f);
|
||||
m_creature->SummonCreature(RAND(NPC_RAPTOR_1,NPC_RAPTOR_2),x,y,z,0,TEMPSUMMON_DEAD_DESPAWN,1*IN_MILISECONDS);
|
||||
me->GetClosePoint(x,y,z,me->GetObjectSize()/3,10.0f);
|
||||
me->SummonCreature(RAND(NPC_RAPTOR_1,NPC_RAPTOR_2),x,y,z,0,TEMPSUMMON_DEAD_DESPAWN,1*IN_MILISECONDS);
|
||||
|
||||
uiRaptorCallTimer = urand(20*IN_MILISECONDS,25*IN_MILISECONDS);
|
||||
} else uiRaptorCallTimer -=diff;
|
||||
|
||||
@@ -89,15 +89,15 @@ struct boss_novosAI : public Scripted_NoMovementAI
|
||||
Phase = IDLE;
|
||||
luiCrystals.clear();
|
||||
bAchiev = true;
|
||||
m_creature->CastStop();
|
||||
me->CastStop();
|
||||
lSummons.DespawnAll();
|
||||
|
||||
if (m_creature->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_OOC_NOT_ATTACKABLE))
|
||||
m_creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_OOC_NOT_ATTACKABLE);
|
||||
if (m_creature->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE))
|
||||
m_creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
||||
if (m_creature->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE))
|
||||
m_creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
||||
if (me->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_OOC_NOT_ATTACKABLE))
|
||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_OOC_NOT_ATTACKABLE);
|
||||
if (me->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE))
|
||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
||||
if (me->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE))
|
||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
||||
|
||||
if (pInstance)
|
||||
{
|
||||
@@ -116,7 +116,7 @@ struct boss_novosAI : public Scripted_NoMovementAI
|
||||
|
||||
void EnterCombat(Unit* who)
|
||||
{
|
||||
DoScriptText(SAY_AGGRO, m_creature);
|
||||
DoScriptText(SAY_AGGRO, me);
|
||||
Phase = PHASE_1;
|
||||
uiCrystalHandlerTimer = 30*IN_MILISECONDS;
|
||||
uiTimer = 1*IN_MILISECONDS;
|
||||
@@ -130,9 +130,9 @@ struct boss_novosAI : public Scripted_NoMovementAI
|
||||
}
|
||||
pInstance->SetData(DATA_NOVOS_EVENT, IN_PROGRESS);
|
||||
}
|
||||
m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_OOC_NOT_ATTACKABLE);
|
||||
m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
||||
m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_OOC_NOT_ATTACKABLE);
|
||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
||||
}
|
||||
|
||||
void UpdateAI(const uint32 diff)
|
||||
@@ -142,16 +142,16 @@ struct boss_novosAI : public Scripted_NoMovementAI
|
||||
case PHASE_1:
|
||||
if (uiTimer <= diff)
|
||||
{
|
||||
Creature *pSummon = m_creature->SummonCreature(RAND(CREATURE_FETID_TROLL_CORPSE,CREATURE_HULKING_CORPSE,CREATURE_RISEN_SHADOWCASTER), AddSpawnPoint, TEMPSUMMON_CORPSE_TIMED_DESPAWN,20*IN_MILISECONDS);
|
||||
Creature *pSummon = me->SummonCreature(RAND(CREATURE_FETID_TROLL_CORPSE,CREATURE_HULKING_CORPSE,CREATURE_RISEN_SHADOWCASTER), AddSpawnPoint, TEMPSUMMON_CORPSE_TIMED_DESPAWN,20*IN_MILISECONDS);
|
||||
pSummon->GetMotionMaster()->MovePoint(0, AddDestinyPoint);
|
||||
//If spell is casted stops casting arcane field so no spell casting
|
||||
//DoCast(m_creature, SPELL_SUMMON_MINIONS);
|
||||
//DoCast(me, SPELL_SUMMON_MINIONS);
|
||||
uiTimer = 3*IN_MILISECONDS;
|
||||
} else uiTimer -= diff;
|
||||
if (uiCrystalHandlerTimer <= diff)
|
||||
{
|
||||
DoScriptText(SAY_NECRO_ADD, m_creature);
|
||||
Creature *pCrystalHandler = m_creature->SummonCreature(CREATURE_CRYSTAL_HANDLER, CrystalHandlerSpawnPoint, TEMPSUMMON_CORPSE_TIMED_DESPAWN,20*IN_MILISECONDS);
|
||||
DoScriptText(SAY_NECRO_ADD, me);
|
||||
Creature *pCrystalHandler = me->SummonCreature(CREATURE_CRYSTAL_HANDLER, CrystalHandlerSpawnPoint, TEMPSUMMON_CORPSE_TIMED_DESPAWN,20*IN_MILISECONDS);
|
||||
pCrystalHandler->GetMotionMaster()->MovePoint(0, AddDestinyPoint);
|
||||
uiCrystalHandlerTimer = urand(20*IN_MILISECONDS,30*IN_MILISECONDS);
|
||||
} else uiCrystalHandlerTimer -= diff;
|
||||
@@ -169,7 +169,7 @@ struct boss_novosAI : public Scripted_NoMovementAI
|
||||
}
|
||||
void JustDied(Unit* killer)
|
||||
{
|
||||
DoScriptText(SAY_DEATH, m_creature);
|
||||
DoScriptText(SAY_DEATH, me);
|
||||
if (pInstance)
|
||||
{
|
||||
pInstance->SetData(DATA_NOVOS_EVENT, DONE);
|
||||
@@ -182,9 +182,9 @@ struct boss_novosAI : public Scripted_NoMovementAI
|
||||
|
||||
void KilledUnit(Unit *victim)
|
||||
{
|
||||
if (victim == m_creature)
|
||||
if (victim == me)
|
||||
return;
|
||||
DoScriptText(SAY_KILL, m_creature);
|
||||
DoScriptText(SAY_KILL, me);
|
||||
}
|
||||
|
||||
void JustSummoned(Creature *summon)
|
||||
@@ -203,10 +203,10 @@ struct boss_novosAI : public Scripted_NoMovementAI
|
||||
}
|
||||
if (luiCrystals.empty())
|
||||
{
|
||||
m_creature->CastStop();
|
||||
m_creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_OOC_NOT_ATTACKABLE);
|
||||
m_creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
||||
m_creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
||||
me->CastStop();
|
||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_OOC_NOT_ATTACKABLE);
|
||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
||||
Phase = PHASE_2;
|
||||
uiTimer = 1*IN_MILISECONDS;
|
||||
}
|
||||
@@ -242,7 +242,7 @@ struct mob_crystal_handlerAI : public ScriptedAI
|
||||
|
||||
void JustDied(Unit* killer)
|
||||
{
|
||||
if (Creature* pNovos = Unit::GetCreature(*m_creature, pInstance ? pInstance->GetData64(DATA_NOVOS) : 0))
|
||||
if (Creature* pNovos = Unit::GetCreature(*me, pInstance ? pInstance->GetData64(DATA_NOVOS) : 0))
|
||||
CAST_AI(boss_novosAI,pNovos->AI())->RemoveCrystal();
|
||||
}
|
||||
|
||||
@@ -253,7 +253,7 @@ struct mob_crystal_handlerAI : public ScriptedAI
|
||||
|
||||
if (uiFlashOfDarknessTimer <= diff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(), DUNGEON_MODE(SPELL_FLASH_OF_DARKNESS,H_SPELL_FLASH_OF_DARKNESS));
|
||||
DoCast(me->getVictim(), DUNGEON_MODE(SPELL_FLASH_OF_DARKNESS,H_SPELL_FLASH_OF_DARKNESS));
|
||||
uiFlashOfDarknessTimer = 5*IN_MILISECONDS;
|
||||
} else uiFlashOfDarknessTimer -= diff;
|
||||
|
||||
@@ -264,7 +264,7 @@ struct mob_crystal_handlerAI : public ScriptedAI
|
||||
{
|
||||
if (type != POINT_MOTION_TYPE || id != 0)
|
||||
return;
|
||||
if (Creature *pNovos = Unit::GetCreature(*m_creature, pInstance ? pInstance->GetData64(DATA_NOVOS) : 0))
|
||||
if (Creature *pNovos = Unit::GetCreature(*me, pInstance ? pInstance->GetData64(DATA_NOVOS) : 0))
|
||||
if (Unit *pTarget = CAST_AI(boss_novosAI, pNovos->AI())->GetRandomTarget())
|
||||
AttackStart(pTarget);
|
||||
}
|
||||
@@ -283,7 +283,7 @@ struct mob_novos_minionAI : public ScriptedAI
|
||||
{
|
||||
if (type != POINT_MOTION_TYPE || id !=0)
|
||||
return;
|
||||
if (Creature* pNovos = Unit::GetCreature(*m_creature, pInstance ? pInstance->GetData64(DATA_NOVOS) : 0))
|
||||
if (Creature* pNovos = Unit::GetCreature(*me, pInstance ? pInstance->GetData64(DATA_NOVOS) : 0))
|
||||
{
|
||||
CAST_AI(boss_novosAI, pNovos->AI())->bAchiev = false;
|
||||
if (Unit *pTarget = CAST_AI(boss_novosAI, pNovos->AI())->GetRandomTarget())
|
||||
|
||||
@@ -91,14 +91,14 @@ struct boss_tharon_jaAI : public ScriptedAI
|
||||
uiRainOfFireTimer = urand(14*IN_MILISECONDS,18*IN_MILISECONDS);
|
||||
uiShadowVolleyTimer = urand(8*IN_MILISECONDS,10*IN_MILISECONDS);
|
||||
Phase = SKELETAL;
|
||||
m_creature->SetDisplayId(m_creature->GetNativeDisplayId());
|
||||
me->SetDisplayId(me->GetNativeDisplayId());
|
||||
if (pInstance)
|
||||
pInstance->SetData(DATA_THARON_JA_EVENT, NOT_STARTED);
|
||||
}
|
||||
|
||||
void EnterCombat(Unit* who)
|
||||
{
|
||||
DoScriptText(SAY_AGGRO, m_creature);
|
||||
DoScriptText(SAY_AGGRO, me);
|
||||
|
||||
if (pInstance)
|
||||
pInstance->SetData(DATA_THARON_JA_EVENT, IN_PROGRESS);
|
||||
@@ -144,15 +144,15 @@ struct boss_tharon_jaAI : public ScriptedAI
|
||||
case GOING_FLESH:
|
||||
if (uiPhaseTimer < diff)
|
||||
{
|
||||
DoScriptText(RAND(SAY_FLESH_1,SAY_FLESH_2),m_creature);
|
||||
m_creature->SetDisplayId(MODEL_FLESH);
|
||||
std::list<HostileReference*>& threatlist = m_creature->getThreatManager().getThreatList();
|
||||
DoScriptText(RAND(SAY_FLESH_1,SAY_FLESH_2),me);
|
||||
me->SetDisplayId(MODEL_FLESH);
|
||||
std::list<HostileReference*>& threatlist = me->getThreatManager().getThreatList();
|
||||
for (std::list<HostileReference*>::const_iterator itr = threatlist.begin(); itr != threatlist.end(); ++itr)
|
||||
{
|
||||
Unit *pTemp = Unit::GetUnit((*m_creature),(*itr)->getUnitGuid());
|
||||
Unit *pTemp = Unit::GetUnit((*me),(*itr)->getUnitGuid());
|
||||
if (pTemp && pTemp->GetTypeId() == TYPEID_PLAYER)
|
||||
{
|
||||
m_creature->AddAura(SPELL_GIFT_OF_THARON_JA,pTemp);
|
||||
me->AddAura(SPELL_GIFT_OF_THARON_JA,pTemp);
|
||||
pTemp->SetDisplayId(MODEL_SKELETON);
|
||||
}
|
||||
}
|
||||
@@ -195,17 +195,17 @@ struct boss_tharon_jaAI : public ScriptedAI
|
||||
case GOING_SKELETAL:
|
||||
if (uiPhaseTimer < diff)
|
||||
{
|
||||
DoScriptText(RAND(SAY_SKELETON_1,SAY_SKELETON_2), m_creature);
|
||||
m_creature->DeMorph();
|
||||
DoScriptText(RAND(SAY_SKELETON_1,SAY_SKELETON_2), me);
|
||||
me->DeMorph();
|
||||
Phase = SKELETAL;
|
||||
uiPhaseTimer = 20*IN_MILISECONDS;
|
||||
uiCurseOfLifeTimer = 1*IN_MILISECONDS;
|
||||
uiRainOfFireTimer = urand(14*IN_MILISECONDS,18*IN_MILISECONDS);
|
||||
uiShadowVolleyTimer = urand(8*IN_MILISECONDS,10*IN_MILISECONDS);
|
||||
std::list<HostileReference*>& threatlist = m_creature->getThreatManager().getThreatList();
|
||||
std::list<HostileReference*>& threatlist = me->getThreatManager().getThreatList();
|
||||
for (std::list<HostileReference*>::const_iterator itr = threatlist.begin(); itr != threatlist.end(); ++itr)
|
||||
{
|
||||
Unit *pTemp = Unit::GetUnit((*m_creature),(*itr)->getUnitGuid());
|
||||
Unit *pTemp = Unit::GetUnit((*me),(*itr)->getUnitGuid());
|
||||
if (pTemp && pTemp->GetTypeId() == TYPEID_PLAYER)
|
||||
{
|
||||
if (pTemp->HasAura(SPELL_GIFT_OF_THARON_JA))
|
||||
@@ -220,12 +220,12 @@ struct boss_tharon_jaAI : public ScriptedAI
|
||||
|
||||
void KilledUnit(Unit *victim)
|
||||
{
|
||||
DoScriptText(RAND(SAY_KILL_1,SAY_KILL_2),m_creature);
|
||||
DoScriptText(RAND(SAY_KILL_1,SAY_KILL_2),me);
|
||||
}
|
||||
|
||||
void JustDied(Unit* killer)
|
||||
{
|
||||
DoScriptText(SAY_DEATH,m_creature);
|
||||
DoScriptText(SAY_DEATH,me);
|
||||
|
||||
if (pInstance)
|
||||
{
|
||||
|
||||
@@ -88,7 +88,7 @@ struct boss_trollgoreAI : public ScriptedAI
|
||||
|
||||
lSummons.DespawnAll();
|
||||
|
||||
m_creature->RemoveAura(DUNGEON_MODE(SPELL_CONSUME_AURA,H_SPELL_CONSUME_AURA));
|
||||
me->RemoveAura(DUNGEON_MODE(SPELL_CONSUME_AURA,H_SPELL_CONSUME_AURA));
|
||||
|
||||
if (pInstance)
|
||||
pInstance->SetData(DATA_TROLLGORE_EVENT, NOT_STARTED);
|
||||
@@ -96,7 +96,7 @@ struct boss_trollgoreAI : public ScriptedAI
|
||||
|
||||
void EnterCombat(Unit* who)
|
||||
{
|
||||
DoScriptText(SAY_AGGRO, m_creature);
|
||||
DoScriptText(SAY_AGGRO, me);
|
||||
|
||||
if (pInstance)
|
||||
pInstance->SetData(DATA_TROLLGORE_EVENT, IN_PROGRESS);
|
||||
@@ -118,14 +118,14 @@ struct boss_trollgoreAI : public ScriptedAI
|
||||
|
||||
if (uiConsumeTimer <= diff)
|
||||
{
|
||||
DoScriptText(SAY_CONSUME, m_creature);
|
||||
DoScriptText(SAY_CONSUME, me);
|
||||
DoCast(SPELL_CONSUME);
|
||||
uiConsumeTimer = 15*IN_MILISECONDS;
|
||||
} else uiConsumeTimer -= diff;
|
||||
|
||||
if (bAchiev)
|
||||
{
|
||||
Aura *pConsumeAura = m_creature->GetAura(DUNGEON_MODE(SPELL_CONSUME_AURA,H_SPELL_CONSUME_AURA));
|
||||
Aura *pConsumeAura = me->GetAura(DUNGEON_MODE(SPELL_CONSUME_AURA,H_SPELL_CONSUME_AURA));
|
||||
if (pConsumeAura && pConsumeAura->GetStackAmount() > 9)
|
||||
bAchiev = false;
|
||||
}
|
||||
@@ -145,7 +145,7 @@ struct boss_trollgoreAI : public ScriptedAI
|
||||
if (uiExplodeCorpseTimer <= diff)
|
||||
{
|
||||
DoCast(SPELL_CORPSE_EXPLODE);
|
||||
DoScriptText(SAY_EXPLODE, m_creature);
|
||||
DoScriptText(SAY_EXPLODE, me);
|
||||
uiExplodeCorpseTimer = urand(15*IN_MILISECONDS,19*IN_MILISECONDS);
|
||||
} else uiExplodeCorpseTimer -= diff;
|
||||
|
||||
@@ -154,7 +154,7 @@ struct boss_trollgoreAI : public ScriptedAI
|
||||
|
||||
void JustDied(Unit* killer)
|
||||
{
|
||||
DoScriptText(SAY_DEATH, m_creature);
|
||||
DoScriptText(SAY_DEATH, me);
|
||||
|
||||
lSummons.DespawnAll();
|
||||
|
||||
@@ -168,16 +168,16 @@ struct boss_trollgoreAI : public ScriptedAI
|
||||
|
||||
void KilledUnit(Unit *victim)
|
||||
{
|
||||
if (victim == m_creature)
|
||||
if (victim == me)
|
||||
return;
|
||||
DoScriptText(SAY_KILL, m_creature);
|
||||
DoScriptText(SAY_KILL, me);
|
||||
}
|
||||
|
||||
void JustSummoned(Creature* summon)
|
||||
{
|
||||
lSummons.push_back(summon->GetGUID());
|
||||
if (summon->AI())
|
||||
summon->AI()->AttackStart(m_creature);
|
||||
summon->AI()->AttackStart(me);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@@ -68,7 +68,7 @@ struct boss_bronjahmAI : public ScriptedAI
|
||||
{
|
||||
boss_bronjahmAI(Creature *c) : ScriptedAI(c)
|
||||
{
|
||||
pInstance = m_creature->GetInstanceData();
|
||||
pInstance = me->GetInstanceData();
|
||||
}
|
||||
|
||||
ScriptedInstance* pInstance;
|
||||
@@ -79,7 +79,7 @@ struct boss_bronjahmAI : public ScriptedAI
|
||||
void Reset()
|
||||
{
|
||||
phase = PHASE_1;
|
||||
m_creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_DISABLE_MOVE);
|
||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_DISABLE_MOVE);
|
||||
|
||||
events.Reset();
|
||||
events.ScheduleEvent(EVENT_SHADOW_BOLT, 2000);
|
||||
@@ -92,7 +92,7 @@ struct boss_bronjahmAI : public ScriptedAI
|
||||
|
||||
void EnterCombat(Unit* who)
|
||||
{
|
||||
DoScriptText(SAY_AGGRO, m_creature);
|
||||
DoScriptText(SAY_AGGRO, me);
|
||||
|
||||
if (pInstance)
|
||||
pInstance->SetData(DATA_BRONJAHM_EVENT, IN_PROGRESS);
|
||||
@@ -100,7 +100,7 @@ struct boss_bronjahmAI : public ScriptedAI
|
||||
|
||||
void JustDied(Unit* killer)
|
||||
{
|
||||
DoScriptText(SAY_DEATH, m_creature);
|
||||
DoScriptText(SAY_DEATH, me);
|
||||
|
||||
if (pInstance)
|
||||
pInstance->SetData(DATA_BRONJAHM_EVENT, DONE);
|
||||
@@ -108,7 +108,7 @@ struct boss_bronjahmAI : public ScriptedAI
|
||||
|
||||
void KilledUnit(Unit *pWho)
|
||||
{
|
||||
DoScriptText(RAND(SAY_SLAY_1,SAY_SLAY_2), m_creature);
|
||||
DoScriptText(RAND(SAY_SLAY_1,SAY_SLAY_2), me);
|
||||
}
|
||||
|
||||
// Cast aura spell on all players farther than 10y
|
||||
@@ -124,7 +124,7 @@ struct boss_bronjahmAI : public ScriptedAI
|
||||
{
|
||||
Unit* pUnit = (*itr);
|
||||
if (pUnit && pUnit->isAlive())
|
||||
m_creature->CastSpell(pUnit, DUNGEON_MODE(SPELL_SOULSTORM_AURA,H_SPELL_SOULSTORM_AURA), true);
|
||||
me->CastSpell(pUnit, DUNGEON_MODE(SPELL_SOULSTORM_AURA,H_SPELL_SOULSTORM_AURA), true);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -136,15 +136,15 @@ struct boss_bronjahmAI : public ScriptedAI
|
||||
|
||||
events.Update(diff);
|
||||
|
||||
if (m_creature->hasUnitState(UNIT_STAT_CASTING))
|
||||
if (me->hasUnitState(UNIT_STAT_CASTING))
|
||||
return;
|
||||
|
||||
if (phase == PHASE_1 && HealthBelowPct(30))
|
||||
{
|
||||
phase = PHASE_2;
|
||||
DoCast(m_creature,SPELL_TELEPORT);
|
||||
m_creature->GetMotionMaster()->Clear();
|
||||
m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_DISABLE_MOVE);
|
||||
DoCast(me,SPELL_TELEPORT);
|
||||
me->GetMotionMaster()->Clear();
|
||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_DISABLE_MOVE);
|
||||
events.CancelEvent(EVENT_CORRUPT_SOUL);
|
||||
events.ScheduleEvent(EVENT_SOUL_STORM, 1000);
|
||||
events.ScheduleEvent(EVENT_FEAR, urand(8000,12000));
|
||||
@@ -158,14 +158,14 @@ struct boss_bronjahmAI : public ScriptedAI
|
||||
case EVENT_CORRUPT_SOUL:
|
||||
if (Unit* pTarget = SelectUnit(SELECT_TARGET_RANDOM,1))
|
||||
{
|
||||
DoScriptText(SAY_CORRUPT_SOUL, m_creature);
|
||||
DoScriptText(SAY_CORRUPT_SOUL, me);
|
||||
DoCast(pTarget,SPELL_CORRUPT_SOUL);
|
||||
}
|
||||
events.ScheduleEvent(EVENT_CORRUPT_SOUL, urand(15000,25000));
|
||||
break;
|
||||
case EVENT_SOUL_STORM:
|
||||
DoScriptText(SAY_SOUL_STORM, m_creature);
|
||||
// DoCast(m_creature, SPELL_SOULSTORM); bug: put the aura without the limit of 10 yards.
|
||||
DoScriptText(SAY_SOUL_STORM, me);
|
||||
// DoCast(me, SPELL_SOULSTORM); bug: put the aura without the limit of 10 yards.
|
||||
events.ScheduleEvent(EVENT_SOUL_STORM_AURA, 1000);
|
||||
break;
|
||||
case EVENT_SOUL_STORM_AURA:
|
||||
@@ -201,7 +201,7 @@ struct mob_corrupted_soul_fragmentAI : public ScriptedAI
|
||||
{
|
||||
mob_corrupted_soul_fragmentAI(Creature *c) : ScriptedAI(c)
|
||||
{
|
||||
pInstance = m_creature->GetInstanceData();
|
||||
pInstance = me->GetInstanceData();
|
||||
}
|
||||
|
||||
ScriptedInstance* pInstance;
|
||||
@@ -210,15 +210,15 @@ struct mob_corrupted_soul_fragmentAI : public ScriptedAI
|
||||
{
|
||||
SetCombatMovement(false);
|
||||
if (pInstance)
|
||||
if (Creature* pBronjham = Unit::GetCreature(*m_creature,pInstance->GetData64(DATA_BRONJAHM)))
|
||||
m_creature->GetMotionMaster()->MoveChase(pBronjham);
|
||||
if (Creature* pBronjham = Unit::GetCreature(*me,pInstance->GetData64(DATA_BRONJAHM)))
|
||||
me->GetMotionMaster()->MoveChase(pBronjham);
|
||||
|
||||
}
|
||||
|
||||
void MovementInform(uint32 type, uint32 id)
|
||||
{
|
||||
if (pInstance)
|
||||
if (Creature* pBronjham = Unit::GetCreature(*m_creature,pInstance->GetData64(DATA_BRONJAHM)))
|
||||
if (Creature* pBronjham = Unit::GetCreature(*me,pInstance->GetData64(DATA_BRONJAHM)))
|
||||
DoCast(pBronjham,SPELL_CONSUME_SOUL);
|
||||
}
|
||||
|
||||
|
||||
@@ -139,9 +139,9 @@ struct boss_devourer_of_soulsAI : public ScriptedAI
|
||||
|
||||
void Reset()
|
||||
{
|
||||
m_creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_DISABLE_MOVE);
|
||||
m_creature->SetDisplayId(DISPLAY_ANGER);
|
||||
m_creature->SetReactState(REACT_AGGRESSIVE);
|
||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_DISABLE_MOVE);
|
||||
me->SetDisplayId(DISPLAY_ANGER);
|
||||
me->SetReactState(REACT_AGGRESSIVE);
|
||||
|
||||
events.Reset();
|
||||
|
||||
@@ -157,7 +157,7 @@ struct boss_devourer_of_soulsAI : public ScriptedAI
|
||||
if (pInstance)
|
||||
pInstance->SetData(DATA_DEVOURER_EVENT, IN_PROGRESS);
|
||||
|
||||
DoScriptText(RAND(SAY_FACE_ANGER_AGGRO,SAY_FACE_DESIRE_AGGRO), m_creature);
|
||||
DoScriptText(RAND(SAY_FACE_ANGER_AGGRO,SAY_FACE_DESIRE_AGGRO), me);
|
||||
|
||||
events.ScheduleEvent(EVENT_PHANTOM_BLAST, 5000);
|
||||
events.ScheduleEvent(EVENT_MIRRORED_SOUL, 8000);
|
||||
@@ -168,15 +168,15 @@ struct boss_devourer_of_soulsAI : public ScriptedAI
|
||||
|
||||
void DamageTaken(Unit *pDoneBy, uint32 &uiDamage)
|
||||
{
|
||||
if (uiMirroredSoulTarget && m_creature->HasAura(SPELL_MIRRORED_SOUL))
|
||||
if (uiMirroredSoulTarget && me->HasAura(SPELL_MIRRORED_SOUL))
|
||||
{
|
||||
if (Player *pPlayer = Unit::GetPlayer(uiMirroredSoulTarget))
|
||||
{
|
||||
if (Aura *pAura = pPlayer->GetAura(SPELL_MIRRORED_SOUL))
|
||||
{
|
||||
int32 mirrorDamage = (uiDamage * 45)/100;
|
||||
m_creature->CastCustomSpell(pPlayer, 69034, &mirrorDamage, 0, 0, true);
|
||||
// m_creature->DealDamage(pPlayer, (uiDamage * 45)/100, 0, SPELL_DIRECT_DAMAGE, SPELL_SCHOOL_MASK_SHADOW);
|
||||
me->CastCustomSpell(pPlayer, 69034, &mirrorDamage, 0, 0, true);
|
||||
// me->DealDamage(pPlayer, (uiDamage * 45)/100, 0, SPELL_DIRECT_DAMAGE, SPELL_SCHOOL_MASK_SHADOW);
|
||||
}
|
||||
else
|
||||
uiMirroredSoulTarget = 0;
|
||||
@@ -187,14 +187,14 @@ struct boss_devourer_of_soulsAI : public ScriptedAI
|
||||
void KilledUnit(Unit *victim)
|
||||
{
|
||||
DoScriptText(RAND(SAY_FACE_ANGER_SLAY_1,SAY_FACE_SORROW_SLAY_1,SAY_FACE_DESIRE_SLAY_1,
|
||||
SAY_FACE_ANGER_SLAY_2,SAY_FACE_SORROW_SLAY_2,SAY_FACE_DESIRE_SLAY_2), m_creature);
|
||||
SAY_FACE_ANGER_SLAY_2,SAY_FACE_SORROW_SLAY_2,SAY_FACE_DESIRE_SLAY_2), me);
|
||||
}
|
||||
|
||||
void JustDied(Unit* killer)
|
||||
{
|
||||
Position spawnPoint = { 5618.139, 2451.873, 705.854 };
|
||||
|
||||
DoScriptText(RAND(SAY_FACE_SORROW_DEATH,SAY_FACE_DESIRE_DEATH), m_creature);
|
||||
DoScriptText(RAND(SAY_FACE_SORROW_DEATH,SAY_FACE_DESIRE_DEATH), me);
|
||||
|
||||
if (pInstance)
|
||||
{
|
||||
@@ -211,7 +211,7 @@ struct boss_devourer_of_soulsAI : public ScriptedAI
|
||||
|
||||
for (int8 i = 0; outroPositions[i].entry[entryIndex] != 0; ++i)
|
||||
{
|
||||
if (Creature *pSummon = m_creature->SummonCreature(outroPositions[i].entry[entryIndex], spawnPoint, TEMPSUMMON_DEAD_DESPAWN))
|
||||
if (Creature *pSummon = me->SummonCreature(outroPositions[i].entry[entryIndex], spawnPoint, TEMPSUMMON_DEAD_DESPAWN))
|
||||
{
|
||||
pSummon->GetMotionMaster()->MovePoint(0, outroPositions[i].movePosition);
|
||||
|
||||
@@ -238,7 +238,7 @@ struct boss_devourer_of_soulsAI : public ScriptedAI
|
||||
|
||||
events.Update(diff);
|
||||
|
||||
if (m_creature->hasUnitState(UNIT_STAT_CASTING))
|
||||
if (me->hasUnitState(UNIT_STAT_CASTING))
|
||||
return;
|
||||
|
||||
while(uint32 eventId = events.ExecuteEvent())
|
||||
@@ -255,7 +255,7 @@ struct boss_devourer_of_soulsAI : public ScriptedAI
|
||||
{
|
||||
uiMirroredSoulTarget = pTarget->GetGUID();
|
||||
DoCast(pTarget, SPELL_MIRRORED_SOUL);
|
||||
DoScriptText(EMOTE_MIRRORED_SOUL, m_creature);
|
||||
DoScriptText(EMOTE_MIRRORED_SOUL, me);
|
||||
}
|
||||
events.ScheduleEvent(EVENT_MIRRORED_SOUL, urand(15000,30000));
|
||||
break;
|
||||
@@ -267,42 +267,42 @@ struct boss_devourer_of_soulsAI : public ScriptedAI
|
||||
case EVENT_UNLEASHED_SOULS:
|
||||
if (Unit *pTarget = SelectUnit(SELECT_TARGET_RANDOM, 0))
|
||||
DoCast(pTarget, SPELL_UNLEASHED_SOULS);
|
||||
m_creature->SetDisplayId(DISPLAY_SORROW);
|
||||
DoScriptText(RAND(SAY_FACE_ANGER_UNLEASH_SOUL,SAY_FACE_SORROW_UNLEASH_SOUL,SAY_FACE_DESIRE_UNLEASH_SOUL), m_creature);
|
||||
DoScriptText(EMOTE_UNLEASH_SOUL, m_creature);
|
||||
me->SetDisplayId(DISPLAY_SORROW);
|
||||
DoScriptText(RAND(SAY_FACE_ANGER_UNLEASH_SOUL,SAY_FACE_SORROW_UNLEASH_SOUL,SAY_FACE_DESIRE_UNLEASH_SOUL), me);
|
||||
DoScriptText(EMOTE_UNLEASH_SOUL, me);
|
||||
events.ScheduleEvent(EVENT_UNLEASHED_SOULS, 30000);
|
||||
events.ScheduleEvent(EVENT_FACE_ANGER, 5000);
|
||||
break;
|
||||
case EVENT_FACE_ANGER:
|
||||
m_creature->SetDisplayId(DISPLAY_ANGER);
|
||||
me->SetDisplayId(DISPLAY_ANGER);
|
||||
break;
|
||||
|
||||
case EVENT_WAILING_SOULS:
|
||||
m_creature->SetDisplayId(DISPLAY_DESIRE);
|
||||
DoScriptText(RAND(SAY_FACE_ANGER_WAILING_SOUL,SAY_FACE_DESIRE_WAILING_SOUL), m_creature);
|
||||
DoScriptText(EMOTE_WAILING_SOUL, m_creature);
|
||||
DoCast(m_creature, SPELL_WAILING_SOULS_STARTING);
|
||||
me->SetDisplayId(DISPLAY_DESIRE);
|
||||
DoScriptText(RAND(SAY_FACE_ANGER_WAILING_SOUL,SAY_FACE_DESIRE_WAILING_SOUL), me);
|
||||
DoScriptText(EMOTE_WAILING_SOUL, me);
|
||||
DoCast(me, SPELL_WAILING_SOULS_STARTING);
|
||||
|
||||
if (Unit *pTarget = SelectUnit(SELECT_TARGET_RANDOM, 0))
|
||||
{
|
||||
m_creature->SetOrientation(m_creature->GetAngle(pTarget));
|
||||
DoCast(m_creature, SPELL_WAILING_SOULS_BEAM);
|
||||
me->SetOrientation(me->GetAngle(pTarget));
|
||||
DoCast(me, SPELL_WAILING_SOULS_BEAM);
|
||||
}
|
||||
|
||||
beamAngle = m_creature->GetOrientation();
|
||||
beamAngle = me->GetOrientation();
|
||||
|
||||
beamAngleDiff = PI/30.0f; // PI/2 in 15 sec = PI/30 per tick
|
||||
if (RAND(true,false))
|
||||
beamAngleDiff = -beamAngleDiff;
|
||||
|
||||
m_creature->InterruptNonMeleeSpells(false);
|
||||
m_creature->SetReactState(REACT_PASSIVE);
|
||||
me->InterruptNonMeleeSpells(false);
|
||||
me->SetReactState(REACT_PASSIVE);
|
||||
|
||||
//Remove any target
|
||||
m_creature->SetUInt64Value(UNIT_FIELD_TARGET, 0);
|
||||
me->SetUInt64Value(UNIT_FIELD_TARGET, 0);
|
||||
|
||||
m_creature->GetMotionMaster()->Clear();
|
||||
m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_DISABLE_MOVE);
|
||||
me->GetMotionMaster()->Clear();
|
||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_DISABLE_MOVE);
|
||||
|
||||
wailingSoulTick = 15;
|
||||
events.DelayEvents(18000); // no other events during wailing souls
|
||||
@@ -311,19 +311,19 @@ struct boss_devourer_of_soulsAI : public ScriptedAI
|
||||
|
||||
case EVENT_WAILING_SOULS_TICK:
|
||||
beamAngle += beamAngleDiff;
|
||||
m_creature->SetOrientation(beamAngle);
|
||||
m_creature->StopMoving();
|
||||
me->SetOrientation(beamAngle);
|
||||
me->StopMoving();
|
||||
|
||||
DoCast(m_creature, SPELL_WAILING_SOULS);
|
||||
DoCast(me, SPELL_WAILING_SOULS);
|
||||
|
||||
if (--wailingSoulTick)
|
||||
events.ScheduleEvent(EVENT_WAILING_SOULS_TICK, 1000);
|
||||
else
|
||||
{
|
||||
m_creature->SetReactState(REACT_AGGRESSIVE);
|
||||
m_creature->SetDisplayId(DISPLAY_ANGER);
|
||||
m_creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_DISABLE_MOVE);
|
||||
m_creature->GetMotionMaster()->MoveChase(m_creature->getVictim());
|
||||
me->SetReactState(REACT_AGGRESSIVE);
|
||||
me->SetDisplayId(DISPLAY_ANGER);
|
||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_DISABLE_MOVE);
|
||||
me->GetMotionMaster()->MoveChase(me->getVictim());
|
||||
events.ScheduleEvent(EVENT_WAILING_SOULS, urand(60000,70000));
|
||||
}
|
||||
break;
|
||||
|
||||
@@ -150,8 +150,8 @@ struct npc_sylvanas_fosAI: public ScriptedAI
|
||||
{
|
||||
npc_sylvanas_fosAI(Creature *c) : ScriptedAI(c)
|
||||
{
|
||||
pInstance = m_creature->GetInstanceData();
|
||||
m_creature->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP);
|
||||
pInstance = me->GetInstanceData();
|
||||
me->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP);
|
||||
}
|
||||
|
||||
ScriptedInstance* pInstance;
|
||||
@@ -172,7 +172,7 @@ struct npc_sylvanas_fosAI: public ScriptedAI
|
||||
case ACTION_INTRO:
|
||||
{
|
||||
phase = PHASE_INTRO;
|
||||
m_creature->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP);
|
||||
me->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP);
|
||||
events.Reset();
|
||||
events.ScheduleEvent(EVENT_INTRO_1, 1000);
|
||||
}
|
||||
@@ -190,32 +190,32 @@ struct npc_sylvanas_fosAI: public ScriptedAI
|
||||
switch(events.ExecuteEvent())
|
||||
{
|
||||
case EVENT_INTRO_1:
|
||||
DoScriptText(SAY_SYLVANAS_INTRO_1, m_creature);
|
||||
DoScriptText(SAY_SYLVANAS_INTRO_1, me);
|
||||
events.ScheduleEvent(EVENT_INTRO_2, 11500);
|
||||
break;
|
||||
|
||||
case EVENT_INTRO_2:
|
||||
DoScriptText(SAY_SYLVANAS_INTRO_2, m_creature);
|
||||
DoScriptText(SAY_SYLVANAS_INTRO_2, me);
|
||||
events.ScheduleEvent(EVENT_INTRO_3, 10500);
|
||||
break;
|
||||
|
||||
case EVENT_INTRO_3:
|
||||
DoScriptText(SAY_SYLVANAS_INTRO_3, m_creature);
|
||||
DoScriptText(SAY_SYLVANAS_INTRO_3, me);
|
||||
events.ScheduleEvent(EVENT_INTRO_4, 9500);
|
||||
break;
|
||||
|
||||
case EVENT_INTRO_4:
|
||||
DoScriptText(SAY_SYLVANAS_INTRO_4, m_creature);
|
||||
DoScriptText(SAY_SYLVANAS_INTRO_4, me);
|
||||
events.ScheduleEvent(EVENT_INTRO_5, 10500);
|
||||
break;
|
||||
|
||||
case EVENT_INTRO_5:
|
||||
DoScriptText(SAY_SYLVANAS_INTRO_5, m_creature);
|
||||
DoScriptText(SAY_SYLVANAS_INTRO_5, me);
|
||||
events.ScheduleEvent(EVENT_INTRO_6, 9500);
|
||||
break;
|
||||
|
||||
case EVENT_INTRO_6:
|
||||
DoScriptText(SAY_SYLVANAS_INTRO_6, m_creature);
|
||||
DoScriptText(SAY_SYLVANAS_INTRO_6, me);
|
||||
// End of Intro
|
||||
phase = PHASE_NORMAL;
|
||||
break;
|
||||
@@ -228,7 +228,7 @@ struct npc_sylvanas_fosAI: public ScriptedAI
|
||||
|
||||
events.Update(diff);
|
||||
|
||||
//if (m_creature->hasUnitState(UNIT_STAT_CASTING))
|
||||
//if (me->hasUnitState(UNIT_STAT_CASTING))
|
||||
// return;
|
||||
|
||||
//while(uint32 eventId = events.ExecuteEvent())
|
||||
@@ -246,8 +246,8 @@ struct npc_jaina_fosAI: public ScriptedAI
|
||||
{
|
||||
npc_jaina_fosAI(Creature *c) : ScriptedAI(c)
|
||||
{
|
||||
pInstance = m_creature->GetInstanceData();
|
||||
m_creature->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP);
|
||||
pInstance = me->GetInstanceData();
|
||||
me->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP);
|
||||
}
|
||||
|
||||
ScriptedInstance* pInstance;
|
||||
@@ -268,7 +268,7 @@ struct npc_jaina_fosAI: public ScriptedAI
|
||||
case ACTION_INTRO:
|
||||
{
|
||||
phase = PHASE_INTRO;
|
||||
m_creature->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP);
|
||||
me->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP);
|
||||
events.Reset();
|
||||
events.ScheduleEvent(EVENT_INTRO_1, 1000);
|
||||
}
|
||||
@@ -286,42 +286,42 @@ struct npc_jaina_fosAI: public ScriptedAI
|
||||
switch(events.ExecuteEvent())
|
||||
{
|
||||
case EVENT_INTRO_1:
|
||||
DoScriptText(SAY_JAINA_INTRO_1, m_creature);
|
||||
DoScriptText(SAY_JAINA_INTRO_1, me);
|
||||
events.ScheduleEvent(EVENT_INTRO_2, 8000);
|
||||
break;
|
||||
|
||||
case EVENT_INTRO_2:
|
||||
DoScriptText(SAY_JAINA_INTRO_2, m_creature);
|
||||
DoScriptText(SAY_JAINA_INTRO_2, me);
|
||||
events.ScheduleEvent(EVENT_INTRO_3, 8500);
|
||||
break;
|
||||
|
||||
case EVENT_INTRO_3:
|
||||
DoScriptText(SAY_JAINA_INTRO_3, m_creature);
|
||||
DoScriptText(SAY_JAINA_INTRO_3, me);
|
||||
events.ScheduleEvent(EVENT_INTRO_4, 8000);
|
||||
break;
|
||||
|
||||
case EVENT_INTRO_4:
|
||||
DoScriptText(SAY_JAINA_INTRO_4, m_creature);
|
||||
DoScriptText(SAY_JAINA_INTRO_4, me);
|
||||
events.ScheduleEvent(EVENT_INTRO_5, 10000);
|
||||
break;
|
||||
|
||||
case EVENT_INTRO_5:
|
||||
DoScriptText(SAY_JAINA_INTRO_5, m_creature);
|
||||
DoScriptText(SAY_JAINA_INTRO_5, me);
|
||||
events.ScheduleEvent(EVENT_INTRO_6, 8000);
|
||||
break;
|
||||
|
||||
case EVENT_INTRO_6:
|
||||
DoScriptText(SAY_JAINA_INTRO_6, m_creature);
|
||||
DoScriptText(SAY_JAINA_INTRO_6, me);
|
||||
events.ScheduleEvent(EVENT_INTRO_7, 12000);
|
||||
break;
|
||||
|
||||
case EVENT_INTRO_7:
|
||||
DoScriptText(SAY_JAINA_INTRO_7, m_creature);
|
||||
DoScriptText(SAY_JAINA_INTRO_7, me);
|
||||
events.ScheduleEvent(EVENT_INTRO_8, 8000);
|
||||
break;
|
||||
|
||||
case EVENT_INTRO_8:
|
||||
DoScriptText(SAY_JAINA_INTRO_8, m_creature);
|
||||
DoScriptText(SAY_JAINA_INTRO_8, me);
|
||||
// End of Intro
|
||||
phase = PHASE_NORMAL;
|
||||
break;
|
||||
@@ -334,7 +334,7 @@ struct npc_jaina_fosAI: public ScriptedAI
|
||||
|
||||
events.Update(diff);
|
||||
|
||||
//if (m_creature->hasUnitState(UNIT_STAT_CASTING))
|
||||
//if (me->hasUnitState(UNIT_STAT_CASTING))
|
||||
// return;
|
||||
|
||||
//while(uint32 eventId = events.ExecuteEvent())
|
||||
@@ -403,7 +403,7 @@ struct mob_spiteful_apparitionAI: public ScriptedAI
|
||||
|
||||
events.Update(diff);
|
||||
|
||||
if (m_creature->hasUnitState(UNIT_STAT_CASTING))
|
||||
if (me->hasUnitState(UNIT_STAT_CASTING))
|
||||
return;
|
||||
|
||||
while(uint32 eventId = events.ExecuteEvent())
|
||||
@@ -411,7 +411,7 @@ struct mob_spiteful_apparitionAI: public ScriptedAI
|
||||
switch(eventId)
|
||||
{
|
||||
case EVENT_SPITE:
|
||||
DoCast(m_creature->getVictim(), SPELL_SPITE);
|
||||
DoCast(me->getVictim(), SPELL_SPITE);
|
||||
events.RescheduleEvent(EVENT_SPITE, 8000);
|
||||
return;
|
||||
}
|
||||
@@ -448,7 +448,7 @@ struct mob_spectral_wardenAI: public ScriptedAI
|
||||
|
||||
events.Update(diff);
|
||||
|
||||
if (m_creature->hasUnitState(UNIT_STAT_CASTING))
|
||||
if (me->hasUnitState(UNIT_STAT_CASTING))
|
||||
return;
|
||||
|
||||
while(uint32 eventId = events.ExecuteEvent())
|
||||
@@ -456,7 +456,7 @@ struct mob_spectral_wardenAI: public ScriptedAI
|
||||
switch(eventId)
|
||||
{
|
||||
case EVENT_VEIL_OF_SHADOWS:
|
||||
DoCast(m_creature->getVictim(), SPELL_VEIL_OF_SHADOWS);
|
||||
DoCast(me->getVictim(), SPELL_VEIL_OF_SHADOWS);
|
||||
events.RescheduleEvent(EVENT_VEIL_OF_SHADOWS, 10000);
|
||||
return;
|
||||
case EVENT_WAIL_OF_SOULS:
|
||||
@@ -497,7 +497,7 @@ struct mob_soulguard_watchmanAI: public ScriptedAI
|
||||
|
||||
events.Update(diff);
|
||||
|
||||
if (m_creature->hasUnitState(UNIT_STAT_CASTING))
|
||||
if (me->hasUnitState(UNIT_STAT_CASTING))
|
||||
return;
|
||||
|
||||
while(uint32 eventId = events.ExecuteEvent())
|
||||
@@ -505,11 +505,11 @@ struct mob_soulguard_watchmanAI: public ScriptedAI
|
||||
switch(eventId)
|
||||
{
|
||||
case EVENT_SHROUD_OF_RUNES:
|
||||
DoCast(m_creature, SPELL_SHROUD_OF_RUNES);
|
||||
DoCast(me, SPELL_SHROUD_OF_RUNES);
|
||||
events.RescheduleEvent(EVENT_SHROUD_OF_RUNES, 5000);
|
||||
return;
|
||||
case EVENT_UNHOLY_RAGE:
|
||||
DoCast(m_creature, SPELL_UNHOLY_RAGE);
|
||||
DoCast(me, SPELL_UNHOLY_RAGE);
|
||||
events.RescheduleEvent(EVENT_UNHOLY_RAGE, 99999);
|
||||
return;
|
||||
}
|
||||
@@ -545,7 +545,7 @@ struct mob_soulguard_reaperAI: public ScriptedAI
|
||||
|
||||
events.Update(diff);
|
||||
|
||||
if (m_creature->hasUnitState(UNIT_STAT_CASTING))
|
||||
if (me->hasUnitState(UNIT_STAT_CASTING))
|
||||
return;
|
||||
|
||||
while(uint32 eventId = events.ExecuteEvent())
|
||||
@@ -553,7 +553,7 @@ struct mob_soulguard_reaperAI: public ScriptedAI
|
||||
switch(eventId)
|
||||
{
|
||||
case EVENT_FROST_NOVA:
|
||||
DoCast(m_creature, SPELL_FROST_NOVA);
|
||||
DoCast(me, SPELL_FROST_NOVA);
|
||||
events.RescheduleEvent(EVENT_FROST_NOVA, 9600);
|
||||
return;
|
||||
case EVENT_SHADOW_LANCE:
|
||||
@@ -596,7 +596,7 @@ struct mob_soulguard_bonecasterAI: public ScriptedAI
|
||||
|
||||
events.Update(diff);
|
||||
|
||||
if (m_creature->hasUnitState(UNIT_STAT_CASTING))
|
||||
if (me->hasUnitState(UNIT_STAT_CASTING))
|
||||
return;
|
||||
|
||||
while(uint32 eventId = events.ExecuteEvent())
|
||||
@@ -608,11 +608,11 @@ struct mob_soulguard_bonecasterAI: public ScriptedAI
|
||||
events.RescheduleEvent(EVENT_BONE_VOLLEY, 7000);
|
||||
return;
|
||||
case EVENT_RAISE_DEAD:
|
||||
DoCast(m_creature, SPELL_RAISE_DEAD);
|
||||
DoCast(me, SPELL_RAISE_DEAD);
|
||||
events.RescheduleEvent(EVENT_RAISE_DEAD, 25000);
|
||||
return;
|
||||
case EVENT_SHIELD_OF_BONES:
|
||||
DoCast(m_creature, SPELL_SHIELD_OF_BONES);
|
||||
DoCast(me, SPELL_SHIELD_OF_BONES);
|
||||
events.RescheduleEvent(EVENT_SHIELD_OF_BONES, 8000);
|
||||
return;
|
||||
}
|
||||
@@ -651,7 +651,7 @@ struct mob_soulguard_animatorAI: public ScriptedAI
|
||||
|
||||
events.Update(diff);
|
||||
|
||||
if (m_creature->hasUnitState(UNIT_STAT_CASTING))
|
||||
if (me->hasUnitState(UNIT_STAT_CASTING))
|
||||
return;
|
||||
|
||||
while(uint32 eventId = events.ExecuteEvent())
|
||||
@@ -659,7 +659,7 @@ struct mob_soulguard_animatorAI: public ScriptedAI
|
||||
switch(eventId)
|
||||
{
|
||||
case EVENT_RAISE_DEAD:
|
||||
DoCast(m_creature, SPELL_RAISE_DEAD);
|
||||
DoCast(me, SPELL_RAISE_DEAD);
|
||||
events.RescheduleEvent(EVENT_RAISE_DEAD, 25000);
|
||||
return;
|
||||
case EVENT_SHADOW_BOLT:
|
||||
@@ -713,7 +713,7 @@ struct mob_soulguard_adeptAI: public ScriptedAI
|
||||
|
||||
events.Update(diff);
|
||||
|
||||
if (m_creature->hasUnitState(UNIT_STAT_CASTING))
|
||||
if (me->hasUnitState(UNIT_STAT_CASTING))
|
||||
return;
|
||||
|
||||
while(uint32 eventId = events.ExecuteEvent())
|
||||
@@ -721,7 +721,7 @@ struct mob_soulguard_adeptAI: public ScriptedAI
|
||||
switch(eventId)
|
||||
{
|
||||
case EVENT_RAISE_DEAD:
|
||||
DoCast(m_creature, SPELL_RAISE_DEAD);
|
||||
DoCast(me, SPELL_RAISE_DEAD);
|
||||
events.RescheduleEvent(EVENT_RAISE_DEAD, 25000);
|
||||
return;
|
||||
case EVENT_SHADOW_BOLT:
|
||||
@@ -735,7 +735,7 @@ struct mob_soulguard_adeptAI: public ScriptedAI
|
||||
events.RescheduleEvent(EVENT_DRAIN_LIFE, 9000);
|
||||
return;
|
||||
case EVENT_SHADOW_MEND:
|
||||
DoCast(m_creature, SPELL_SHADOW_MEND);
|
||||
DoCast(me, SPELL_SHADOW_MEND);
|
||||
events.RescheduleEvent(EVENT_SHADOW_MEND, 20000);
|
||||
return;
|
||||
}
|
||||
@@ -771,7 +771,7 @@ struct mob_soul_horrorAI: public ScriptedAI
|
||||
|
||||
events.Update(diff);
|
||||
|
||||
if (m_creature->hasUnitState(UNIT_STAT_CASTING))
|
||||
if (me->hasUnitState(UNIT_STAT_CASTING))
|
||||
return;
|
||||
|
||||
while(uint32 eventId = events.ExecuteEvent())
|
||||
@@ -779,7 +779,7 @@ struct mob_soul_horrorAI: public ScriptedAI
|
||||
switch(eventId)
|
||||
{
|
||||
case EVENT_SOUL_STRIKE:
|
||||
DoCast(m_creature->getVictim(), SPELL_SOUL_STRIKE);
|
||||
DoCast(me->getVictim(), SPELL_SOUL_STRIKE);
|
||||
events.RescheduleEvent(EVENT_SOUL_STRIKE, 8000);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -89,8 +89,8 @@ struct boss_garfrostAI : public ScriptedAI
|
||||
|
||||
void EnterCombat(Unit* who)
|
||||
{
|
||||
DoScriptText(SAY_AGGRO, m_creature);
|
||||
DoCast(m_creature, SPELL_PERMAFROST);
|
||||
DoScriptText(SAY_AGGRO, me);
|
||||
DoCast(me, SPELL_PERMAFROST);
|
||||
|
||||
if (pInstance)
|
||||
pInstance->SetData(DATA_GARFROST_EVENT, IN_PROGRESS);
|
||||
@@ -103,24 +103,24 @@ struct boss_garfrostAI : public ScriptedAI
|
||||
if (HealthBelowPct(66) && !phase2)
|
||||
{
|
||||
phase2 = true;
|
||||
DoCast(m_creature, SPELL_THUNDERING_STOMP);
|
||||
DoCast(me, SPELL_THUNDERING_STOMP);
|
||||
// TODO: should go to a forge
|
||||
DoCast(m_creature, SPELL_FORGE_BLADE);
|
||||
DoCast(me, SPELL_FORGE_BLADE);
|
||||
// TODO: should equip when spell completes
|
||||
SetEquipmentSlots(false, EQUIP_ID_SWORD, -1, -1);
|
||||
m_creature->SetByteValue(UNIT_FIELD_BYTES_2, 0, SHEATH_STATE_MELEE);
|
||||
me->SetByteValue(UNIT_FIELD_BYTES_2, 0, SHEATH_STATE_MELEE);
|
||||
events.ScheduleEvent(EVENT_CHILLINGWAVE, 10000);
|
||||
}
|
||||
|
||||
if (HealthBelowPct(33) && !phase3)
|
||||
{
|
||||
phase3 = true;
|
||||
DoCast(m_creature, SPELL_THUNDERING_STOMP);
|
||||
DoCast(me, SPELL_THUNDERING_STOMP);
|
||||
// TODO: should go to a forge
|
||||
DoCast(m_creature, SPELL_FORGE_MACE);
|
||||
DoCast(me, SPELL_FORGE_MACE);
|
||||
// TODO: should equip when spell completes
|
||||
SetEquipmentSlots(false, EQUIP_ID_MACE, -1, -1);
|
||||
m_creature->SetByteValue(UNIT_FIELD_BYTES_2, 0, SHEATH_STATE_MELEE);
|
||||
me->SetByteValue(UNIT_FIELD_BYTES_2, 0, SHEATH_STATE_MELEE);
|
||||
events.CancelEvent(EVENT_CHILLINGWAVE); // cast only in phase 2.
|
||||
events.ScheduleEvent(EVENT_DEEPFREEZE, 10000);
|
||||
}
|
||||
@@ -128,18 +128,18 @@ struct boss_garfrostAI : public ScriptedAI
|
||||
|
||||
void KilledUnit(Unit *victim)
|
||||
{
|
||||
if (victim == m_creature)
|
||||
if (victim == me)
|
||||
return;
|
||||
|
||||
DoScriptText(RAND(SAY_SLAY_1,SAY_SLAY_2), m_creature);
|
||||
DoScriptText(RAND(SAY_SLAY_1,SAY_SLAY_2), me);
|
||||
}
|
||||
|
||||
void JustDied(Unit* killer)
|
||||
{
|
||||
DoScriptText(SAY_DEATH, m_creature);
|
||||
DoScriptText(SAY_DEATH, me);
|
||||
if (pInstance)
|
||||
{
|
||||
if (Creature *pTyrannus = m_creature->GetCreature(*m_creature, pInstance->GetData64(DATA_TYRANNUS)))
|
||||
if (Creature *pTyrannus = me->GetCreature(*me, pInstance->GetData64(DATA_TYRANNUS)))
|
||||
DoScriptText(SAY_TYRANNUS_DEATH, pTyrannus);
|
||||
|
||||
pInstance->SetData(DATA_GARFROST_EVENT, DONE);
|
||||
@@ -166,7 +166,7 @@ struct boss_garfrostAI : public ScriptedAI
|
||||
|
||||
events.Update(diff);
|
||||
|
||||
if (m_creature->hasUnitState(UNIT_STAT_CASTING))
|
||||
if (me->hasUnitState(UNIT_STAT_CASTING))
|
||||
return;
|
||||
|
||||
while (uint32 eventId = events.ExecuteEvent())
|
||||
|
||||
@@ -139,7 +139,7 @@ struct boss_ickAI : public ScriptedAI
|
||||
|
||||
Creature* GetKrick()
|
||||
{
|
||||
return m_creature->GetCreature(*m_creature, pInstance ? pInstance->GetData64(DATA_KRICK) : 0);
|
||||
return me->GetCreature(*me, pInstance ? pInstance->GetData64(DATA_KRICK) : 0);
|
||||
}
|
||||
|
||||
void EnterCombat(Unit *pWho)
|
||||
@@ -149,7 +149,7 @@ struct boss_ickAI : public ScriptedAI
|
||||
|
||||
Creature* pKrick = GetKrick();
|
||||
if (!pKrick)
|
||||
pKrick = m_creature->SummonCreature(CREATURE_KRICK, *m_creature, TEMPSUMMON_MANUAL_DESPAWN);
|
||||
pKrick = me->SummonCreature(CREATURE_KRICK, *me, TEMPSUMMON_MANUAL_DESPAWN);
|
||||
|
||||
if (pKrick)
|
||||
DoScriptText(SAY_KRICK_AGGRO, pKrick);
|
||||
@@ -164,7 +164,7 @@ struct boss_ickAI : public ScriptedAI
|
||||
|
||||
void EnterEvadeMode()
|
||||
{
|
||||
m_creature->GetMotionMaster()->Clear();
|
||||
me->GetMotionMaster()->Clear();
|
||||
ScriptedAI::EnterEvadeMode();
|
||||
}
|
||||
|
||||
@@ -182,10 +182,10 @@ struct boss_ickAI : public ScriptedAI
|
||||
|
||||
void UpdateAI(const uint32 diff)
|
||||
{
|
||||
if (!m_creature->isInCombat())
|
||||
if (!me->isInCombat())
|
||||
return;
|
||||
|
||||
if (!m_creature->getVictim() && m_creature->getThreatManager().isThreatListEmpty())
|
||||
if (!me->getVictim() && me->getThreatManager().isThreatListEmpty())
|
||||
{
|
||||
EnterEvadeMode();
|
||||
return;
|
||||
@@ -193,7 +193,7 @@ struct boss_ickAI : public ScriptedAI
|
||||
|
||||
events.Update(diff);
|
||||
|
||||
if (m_creature->hasUnitState(UNIT_STAT_CASTING))
|
||||
if (me->hasUnitState(UNIT_STAT_CASTING))
|
||||
return;
|
||||
|
||||
switch(events.ExecuteEvent())
|
||||
@@ -204,8 +204,8 @@ struct boss_ickAI : public ScriptedAI
|
||||
|
||||
if (Unit *pTarget = SelectUnit(SELECT_TARGET_RANDOM, 0))
|
||||
{
|
||||
m_creature->Attack(pTarget,false);
|
||||
DoScriptText(SAY_ICK_CHASE_1, m_creature, pTarget);
|
||||
me->Attack(pTarget,false);
|
||||
DoScriptText(SAY_ICK_CHASE_1, me, pTarget);
|
||||
DoCast(pTarget, SPELL_PURSUED);
|
||||
}
|
||||
|
||||
@@ -214,7 +214,7 @@ struct boss_ickAI : public ScriptedAI
|
||||
return;
|
||||
|
||||
case EVENT_MIGHTY_KICK:
|
||||
DoCast(m_creature->getVictim(), SPELL_MIGHTY_KICK);
|
||||
DoCast(me->getVictim(), SPELL_MIGHTY_KICK);
|
||||
events.ScheduleEvent(EVENT_MIGHTY_KICK, 25000, GCD_1);
|
||||
return;
|
||||
|
||||
@@ -222,18 +222,18 @@ struct boss_ickAI : public ScriptedAI
|
||||
if (Creature* pKrick = GetKrick())
|
||||
DoScriptText(SAY_KRICK_POISON_NOVA, pKrick);
|
||||
|
||||
DoScriptText(SAY_ICK_POISON_NOVA, m_creature);
|
||||
DoScriptText(SAY_ICK_POISON_NOVA, me);
|
||||
DoCastAOE(SPELL_POISON_NOVA);
|
||||
events.ScheduleEvent(EVENT_POISON_NOVA, 30000, GCD_1);
|
||||
return;
|
||||
|
||||
case EVENT_TOXIC_WASTE:
|
||||
DoCast(m_creature->getVictim(), SPELL_TOXIC_WASTE);
|
||||
DoCast(me->getVictim(), SPELL_TOXIC_WASTE);
|
||||
events.ScheduleEvent(EVENT_TOXIC_WASTE, 5000);
|
||||
return;
|
||||
|
||||
case EVENT_SHADOW_BOLT:
|
||||
DoCast(m_creature->getVictim(), SPELL_SHADOW_BOLT);
|
||||
DoCast(me->getVictim(), SPELL_SHADOW_BOLT);
|
||||
events.ScheduleEvent(EVENT_SHADOW_BOLT, 15000);
|
||||
return;
|
||||
|
||||
@@ -245,14 +245,14 @@ struct boss_ickAI : public ScriptedAI
|
||||
}
|
||||
|
||||
DoCastAOE(SPELL_EXPLOSIVE_BARRAGE);
|
||||
m_creature->GetMotionMaster()->MoveIdle();
|
||||
me->GetMotionMaster()->MoveIdle();
|
||||
events.DelayEvents(20000, GCD_1); // 2 sec cast + 18 sec
|
||||
events.ScheduleEvent(EVENT_END_EXPLOSIVE_BARRAGE, 20000);
|
||||
return;
|
||||
|
||||
case EVENT_END_EXPLOSIVE_BARRAGE:
|
||||
m_creature->GetMotionMaster()->Clear();
|
||||
m_creature->GetMotionMaster()->MoveChase(m_creature->getVictim());
|
||||
me->GetMotionMaster()->Clear();
|
||||
me->GetMotionMaster()->MoveChase(me->getVictim());
|
||||
events.ScheduleEvent(EVENT_EXPLOSIVE_BARRAGE, 25000);
|
||||
break;
|
||||
}
|
||||
@@ -281,22 +281,22 @@ struct boss_krickAI : public ScriptedAI
|
||||
uiTyrannus = 0;
|
||||
phase = PHASE_COMBAT;
|
||||
|
||||
m_creature->SetReactState(REACT_PASSIVE);
|
||||
m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
||||
m_creature->SetVisibility(VISIBILITY_OFF);
|
||||
me->SetReactState(REACT_PASSIVE);
|
||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
||||
me->SetVisibility(VISIBILITY_OFF);
|
||||
}
|
||||
|
||||
Creature* GetIck()
|
||||
{
|
||||
return m_creature->GetCreature(*m_creature, pInstance ? pInstance->GetData64(DATA_ICK) : 0);
|
||||
return me->GetCreature(*me, pInstance ? pInstance->GetData64(DATA_ICK) : 0);
|
||||
}
|
||||
|
||||
void KilledUnit(Unit *victim)
|
||||
{
|
||||
if (victim == m_creature)
|
||||
if (victim == me)
|
||||
return;
|
||||
|
||||
DoScriptText(RAND(SAY_KRICK_SLAY_1,SAY_KRICK_SLAY_2), m_creature);
|
||||
DoScriptText(RAND(SAY_KRICK_SLAY_1,SAY_KRICK_SLAY_2), me);
|
||||
}
|
||||
|
||||
void DamageTaken(Unit *pDoneBy, uint32 &uiDamage)
|
||||
@@ -316,28 +316,28 @@ struct boss_krickAI : public ScriptedAI
|
||||
{
|
||||
// TODO: tele on Ick then run some distance.
|
||||
pIck->GetNearPosition(pos, 5.0f, 3.14);
|
||||
m_creature->NearTeleportTo(pos.GetPositionX(), pos.GetPositionY(), pos.GetPositionZ(), 0.0f);
|
||||
me->NearTeleportTo(pos.GetPositionX(), pos.GetPositionY(), pos.GetPositionZ(), 0.0f);
|
||||
}
|
||||
m_creature->SetVisibility(VISIBILITY_ON);
|
||||
me->SetVisibility(VISIBILITY_ON);
|
||||
|
||||
Creature* pJainaOrSylvanas = m_creature->GetCreature(*m_creature, pInstance->GetData64(DATA_JAINA_SYLVANAS_1));
|
||||
Creature* pJainaOrSylvanas = me->GetCreature(*me, pInstance->GetData64(DATA_JAINA_SYLVANAS_1));
|
||||
if (pJainaOrSylvanas) {
|
||||
Position pos;
|
||||
m_creature->GetNearPosition(pos, 5.0f, 0);
|
||||
me->GetNearPosition(pos, 5.0f, 0);
|
||||
pJainaOrSylvanas->NearTeleportTo(pos.GetPositionX(), pos.GetPositionY(), pos.GetPositionZ(),
|
||||
pos.GetAngle(m_creature->GetPositionX(), m_creature->GetPositionY()));
|
||||
pos.GetAngle(me->GetPositionX(), me->GetPositionY()));
|
||||
}
|
||||
else {
|
||||
if (pInstance->GetData(DATA_TEAM_IN_INSTANCE) == TEAM_ALLIANCE)
|
||||
pJainaOrSylvanas = m_creature->SummonCreature(NPC_SYLVANAS_PART1, *m_creature, TEMPSUMMON_MANUAL_DESPAWN);
|
||||
pJainaOrSylvanas = me->SummonCreature(NPC_SYLVANAS_PART1, *me, TEMPSUMMON_MANUAL_DESPAWN);
|
||||
else
|
||||
pJainaOrSylvanas = m_creature->SummonCreature(NPC_JAINA_PART1, *m_creature, TEMPSUMMON_MANUAL_DESPAWN);
|
||||
pJainaOrSylvanas = me->SummonCreature(NPC_JAINA_PART1, *me, TEMPSUMMON_MANUAL_DESPAWN);
|
||||
}
|
||||
|
||||
if (pJainaOrSylvanas)
|
||||
{
|
||||
pJainaOrSylvanas->SetOrientation(pJainaOrSylvanas->GetAngle(m_creature->GetPositionX(), m_creature->GetPositionY()));
|
||||
m_creature->SetOrientation(m_creature->GetAngle(pJainaOrSylvanas->GetPositionX(), pJainaOrSylvanas->GetPositionY()));
|
||||
pJainaOrSylvanas->SetOrientation(pJainaOrSylvanas->GetAngle(me->GetPositionX(), me->GetPositionY()));
|
||||
me->SetOrientation(me->GetAngle(pJainaOrSylvanas->GetPositionX(), pJainaOrSylvanas->GetPositionY()));
|
||||
uiNpcOutroDialog = pJainaOrSylvanas->GetGUID();
|
||||
}
|
||||
|
||||
@@ -361,13 +361,13 @@ struct boss_krickAI : public ScriptedAI
|
||||
{
|
||||
case EVENT_OUTRO_1:
|
||||
{
|
||||
DoScriptText(SAY_KRICK_OUTRO_1, m_creature);
|
||||
DoScriptText(SAY_KRICK_OUTRO_1, me);
|
||||
events.ScheduleEvent(EVENT_OUTRO_2, 14000);
|
||||
break;
|
||||
}
|
||||
case EVENT_OUTRO_2:
|
||||
{
|
||||
Creature* pNpcDialog = m_creature->GetCreature(*m_creature, uiNpcOutroDialog);
|
||||
Creature* pNpcDialog = me->GetCreature(*me, uiNpcOutroDialog);
|
||||
if (pNpcDialog)
|
||||
{
|
||||
if (pInstance->GetData(DATA_TEAM_IN_INSTANCE) == TEAM_ALLIANCE)
|
||||
@@ -379,12 +379,12 @@ struct boss_krickAI : public ScriptedAI
|
||||
break;
|
||||
}
|
||||
case EVENT_OUTRO_3:
|
||||
DoScriptText(SAY_KRICK_OUTRO_3, m_creature);
|
||||
DoScriptText(SAY_KRICK_OUTRO_3, me);
|
||||
events.ScheduleEvent(EVENT_OUTRO_4, 12000);
|
||||
break;
|
||||
case EVENT_OUTRO_4:
|
||||
{
|
||||
Creature* pNpcDialog = m_creature->GetCreature(*m_creature, uiNpcOutroDialog);
|
||||
Creature* pNpcDialog = me->GetCreature(*me, uiNpcOutroDialog);
|
||||
if (pNpcDialog)
|
||||
{
|
||||
if (pInstance->GetData(DATA_TEAM_IN_INSTANCE) == TEAM_ALLIANCE)
|
||||
@@ -396,7 +396,7 @@ struct boss_krickAI : public ScriptedAI
|
||||
break;
|
||||
}
|
||||
case EVENT_OUTRO_5:
|
||||
DoScriptText(SAY_KRICK_OUTRO_5, m_creature);
|
||||
DoScriptText(SAY_KRICK_OUTRO_5, me);
|
||||
events.ScheduleEvent(EVENT_OUTRO_6, 4000);
|
||||
break;
|
||||
case EVENT_OUTRO_6:
|
||||
@@ -407,29 +407,29 @@ struct boss_krickAI : public ScriptedAI
|
||||
events.ScheduleEvent(EVENT_OUTRO_7, 1);
|
||||
break;
|
||||
case EVENT_OUTRO_7:
|
||||
if (Creature *pTyrannus = m_creature->GetCreature(*m_creature, uiTyrannus))
|
||||
if (Creature *pTyrannus = me->GetCreature(*me, uiTyrannus))
|
||||
DoScriptText(SAY_TYRANNUS_OUTRO_7, pTyrannus);
|
||||
events.ScheduleEvent(EVENT_OUTRO_8, 7000);
|
||||
break;
|
||||
case EVENT_OUTRO_8:
|
||||
DoScriptText(SAY_KRICK_OUTRO_8, m_creature);
|
||||
DoScriptText(SAY_KRICK_OUTRO_8, me);
|
||||
// TODO: Tyrannus starts killing Krick.
|
||||
// there shall be some visual spell effect
|
||||
events.ScheduleEvent(EVENT_OUTRO_9, 6000);
|
||||
break;
|
||||
case EVENT_OUTRO_9:
|
||||
// tyrannus kills krick
|
||||
m_creature->SetStandState(UNIT_STAND_STATE_DEAD);
|
||||
m_creature->SetHealth(0);
|
||||
me->SetStandState(UNIT_STAND_STATE_DEAD);
|
||||
me->SetHealth(0);
|
||||
|
||||
if (Creature *pTyrannus = m_creature->GetCreature(*m_creature, uiTyrannus))
|
||||
if (Creature *pTyrannus = me->GetCreature(*me, uiTyrannus))
|
||||
DoScriptText(SAY_TYRANNUS_OUTRO_9, pTyrannus);
|
||||
|
||||
events.ScheduleEvent(EVENT_OUTRO_10, 12000);
|
||||
break;
|
||||
case EVENT_OUTRO_10:
|
||||
{
|
||||
Creature* pNpcDialog = m_creature->GetCreature(*m_creature, uiNpcOutroDialog);
|
||||
Creature* pNpcDialog = me->GetCreature(*me, uiNpcOutroDialog);
|
||||
if (pNpcDialog)
|
||||
{
|
||||
if (pInstance->GetData(DATA_TEAM_IN_INSTANCE) == TEAM_ALLIANCE)
|
||||
@@ -444,11 +444,11 @@ struct boss_krickAI : public ScriptedAI
|
||||
}
|
||||
case EVENT_OUTRO_END:
|
||||
{
|
||||
Creature* pNpcDialog = m_creature->GetCreature(*m_creature, uiNpcOutroDialog);
|
||||
Creature* pNpcDialog = me->GetCreature(*me, uiNpcOutroDialog);
|
||||
if (pNpcDialog)
|
||||
pNpcDialog->DisappearAndDie();
|
||||
|
||||
m_creature->DisappearAndDie();
|
||||
me->DisappearAndDie();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -104,16 +104,16 @@ struct boss_tyrannusAI : public ScriptedAI
|
||||
|
||||
Creature* GetRimefang()
|
||||
{
|
||||
return m_creature->GetCreature(*m_creature, pInstance->GetData64(DATA_RIMEFANG));
|
||||
return me->GetCreature(*me, pInstance->GetData64(DATA_RIMEFANG));
|
||||
}
|
||||
|
||||
void EnterCombat(Unit* who)
|
||||
{
|
||||
DoScriptText(SAY_AGGRO, m_creature);
|
||||
m_creature->ExitVehicle();
|
||||
DoScriptText(SAY_AGGRO, me);
|
||||
me->ExitVehicle();
|
||||
|
||||
// restore health if any damage done during intro
|
||||
m_creature->SetHealth(m_creature->GetMaxHealth());
|
||||
me->SetHealth(me->GetMaxHealth());
|
||||
|
||||
if (pInstance)
|
||||
pInstance->SetData(DATA_TYRANNUS_EVENT, IN_PROGRESS);
|
||||
@@ -125,12 +125,12 @@ struct boss_tyrannusAI : public ScriptedAI
|
||||
|
||||
void KilledUnit(Unit *victim)
|
||||
{
|
||||
DoScriptText(RAND(SAY_SLAY_1,SAY_SLAY_2), m_creature);
|
||||
DoScriptText(RAND(SAY_SLAY_1,SAY_SLAY_2), me);
|
||||
}
|
||||
|
||||
void JustDied(Unit* killer)
|
||||
{
|
||||
DoScriptText(SAY_DEATH, m_creature);
|
||||
DoScriptText(SAY_DEATH, me);
|
||||
|
||||
if (pInstance)
|
||||
{
|
||||
@@ -148,7 +148,7 @@ struct boss_tyrannusAI : public ScriptedAI
|
||||
|
||||
events.Update(diff);
|
||||
|
||||
if (m_creature->hasUnitState(UNIT_STAT_CASTING))
|
||||
if (me->hasUnitState(UNIT_STAT_CASTING))
|
||||
return;
|
||||
|
||||
while (uint32 eventId = events.ExecuteEvent())
|
||||
@@ -156,7 +156,7 @@ struct boss_tyrannusAI : public ScriptedAI
|
||||
switch(eventId)
|
||||
{
|
||||
case EVENT_FORCEFUL_SMASH:
|
||||
DoCast(m_creature->getVictim(), SPELL_FORCEFUL_SMASH);
|
||||
DoCast(me->getVictim(), SPELL_FORCEFUL_SMASH);
|
||||
events.ScheduleEvent(EVENT_FORCEFUL_SMASH, 10000);
|
||||
return;
|
||||
case EVENT_OVERLORDS_BRAND:
|
||||
@@ -165,9 +165,9 @@ struct boss_tyrannusAI : public ScriptedAI
|
||||
events.ScheduleEvent(EVENT_OVERLORDS_BRAND, 45000);
|
||||
return;
|
||||
case EVENT_DARK_MIGHT:
|
||||
DoScriptText(SAY_DARK_MIGHT_1, m_creature);
|
||||
DoScriptText(SAY_DARK_MIGHT_2, m_creature);
|
||||
DoCast(m_creature, SPELL_DARK_MIGHT);
|
||||
DoScriptText(SAY_DARK_MIGHT_1, me);
|
||||
DoScriptText(SAY_DARK_MIGHT_2, me);
|
||||
DoCast(me, SPELL_DARK_MIGHT);
|
||||
events.ScheduleEvent(EVENT_DARK_MIGHT, 60000);
|
||||
return;
|
||||
}
|
||||
@@ -189,18 +189,18 @@ struct boss_rimefangAI : public ScriptedAI
|
||||
|
||||
void Reset()
|
||||
{
|
||||
m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE|UNIT_FLAG_NOT_SELECTABLE);
|
||||
m_creature->InterruptSpell(CURRENT_GENERIC_SPELL);
|
||||
m_creature->HandleEmoteCommand(EMOTE_ONESHOT_LIFTOFF);
|
||||
m_creature->AddUnitMovementFlag(MOVEMENTFLAG_LEVITATING);
|
||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE|UNIT_FLAG_NOT_SELECTABLE);
|
||||
me->InterruptSpell(CURRENT_GENERIC_SPELL);
|
||||
me->HandleEmoteCommand(EMOTE_ONESHOT_LIFTOFF);
|
||||
me->AddUnitMovementFlag(MOVEMENTFLAG_LEVITATING);
|
||||
events.Reset();
|
||||
}
|
||||
|
||||
void EnterCombat(Unit* who)
|
||||
{
|
||||
m_creature->InterruptSpell(CURRENT_GENERIC_SPELL);
|
||||
m_creature->HandleEmoteCommand(EMOTE_ONESHOT_LIFTOFF);
|
||||
m_creature->AddUnitMovementFlag(MOVEMENTFLAG_LEVITATING);
|
||||
me->InterruptSpell(CURRENT_GENERIC_SPELL);
|
||||
me->HandleEmoteCommand(EMOTE_ONESHOT_LIFTOFF);
|
||||
me->AddUnitMovementFlag(MOVEMENTFLAG_LEVITATING);
|
||||
events.ScheduleEvent(EVENT_MARK_OF_RIMEFANG, 25000);
|
||||
events.ScheduleEvent(EVENT_ICY_BLAST, 35000);
|
||||
}
|
||||
@@ -213,7 +213,7 @@ struct boss_rimefangAI : public ScriptedAI
|
||||
|
||||
events.Update(diff);
|
||||
|
||||
if (m_creature->hasUnitState(UNIT_STAT_CASTING))
|
||||
if (me->hasUnitState(UNIT_STAT_CASTING))
|
||||
return;
|
||||
|
||||
while (uint32 eventId = events.ExecuteEvent())
|
||||
@@ -221,8 +221,8 @@ struct boss_rimefangAI : public ScriptedAI
|
||||
switch(eventId)
|
||||
{
|
||||
case EVENT_MARK_OF_RIMEFANG:
|
||||
DoScriptText(SAY_MARK_RIMEFANG_1, m_creature);
|
||||
DoScriptText(SAY_MARK_RIMEFANG_2, m_creature);
|
||||
DoScriptText(SAY_MARK_RIMEFANG_1, me);
|
||||
DoScriptText(SAY_MARK_RIMEFANG_2, me);
|
||||
|
||||
if (Unit *pTarget = SelectUnit(SELECT_TARGET_RANDOM, 0))
|
||||
DoCast(pTarget, SPELL_MARK_OF_RIMEFANG);
|
||||
|
||||
@@ -174,7 +174,7 @@ struct mob_ymirjar_wrathbringerAI : public ScriptedAI
|
||||
|
||||
events.Update(diff);
|
||||
|
||||
if (m_creature->hasUnitState(UNIT_STAT_CASTING))
|
||||
if (me->hasUnitState(UNIT_STAT_CASTING))
|
||||
return;
|
||||
|
||||
while (uint32 eventId = events.ExecuteEvent())
|
||||
@@ -220,7 +220,7 @@ struct mob_ymirjar_skyCallerAI: public ScriptedAI
|
||||
|
||||
events.Update(diff);
|
||||
|
||||
if (m_creature->hasUnitState(UNIT_STAT_CASTING))
|
||||
if (me->hasUnitState(UNIT_STAT_CASTING))
|
||||
return;
|
||||
|
||||
while (uint32 eventId = events.ExecuteEvent())
|
||||
@@ -228,7 +228,7 @@ struct mob_ymirjar_skyCallerAI: public ScriptedAI
|
||||
switch(eventId)
|
||||
{
|
||||
case EVENT_GLACIAL_STRIKE:
|
||||
DoCast(m_creature->getVictim(), SPELL_GLACIAL_STRIKE);
|
||||
DoCast(me->getVictim(), SPELL_GLACIAL_STRIKE);
|
||||
events.RescheduleEvent(EVENT_GLACIAL_STRIKE, 8000);
|
||||
return;
|
||||
case EVENT_FROSTBLADE:
|
||||
@@ -270,7 +270,7 @@ struct mob_ymirjar_flamebearerAI: public ScriptedAI
|
||||
|
||||
events.Update(diff);
|
||||
|
||||
if (m_creature->hasUnitState(UNIT_STAT_CASTING))
|
||||
if (me->hasUnitState(UNIT_STAT_CASTING))
|
||||
return;
|
||||
|
||||
while (uint32 eventId = events.ExecuteEvent())
|
||||
@@ -325,7 +325,7 @@ struct mob_ymirjar_deathbringerAI: public ScriptedAI
|
||||
|
||||
events.Update(diff);
|
||||
|
||||
if (m_creature->hasUnitState(UNIT_STAT_CASTING))
|
||||
if (me->hasUnitState(UNIT_STAT_CASTING))
|
||||
return;
|
||||
|
||||
while (uint32 eventId = events.ExecuteEvent())
|
||||
@@ -372,7 +372,7 @@ struct mob_wrathbone_laborerAI: public ScriptedAI
|
||||
|
||||
events.Update(diff);
|
||||
|
||||
if (m_creature->hasUnitState(UNIT_STAT_CASTING))
|
||||
if (me->hasUnitState(UNIT_STAT_CASTING))
|
||||
return;
|
||||
|
||||
while (uint32 eventId = events.ExecuteEvent())
|
||||
@@ -385,7 +385,7 @@ struct mob_wrathbone_laborerAI: public ScriptedAI
|
||||
events.RescheduleEvent(EVENT_BLINDING_DIRT, 10000);
|
||||
return;
|
||||
case EVENT_PUNCTURE_WOUND:
|
||||
DoCast(m_creature->getVictim(), SPELL_PUNCTURE_WOUND);
|
||||
DoCast(me->getVictim(), SPELL_PUNCTURE_WOUND);
|
||||
events.RescheduleEvent(EVENT_PUNCTURE_WOUND, 9000);
|
||||
return;
|
||||
case EVENT_SHOVELLED:
|
||||
@@ -427,7 +427,7 @@ struct mob_wrathbone_coldwraithAI: public ScriptedAI
|
||||
|
||||
events.Update(diff);
|
||||
|
||||
if (m_creature->hasUnitState(UNIT_STAT_CASTING))
|
||||
if (me->hasUnitState(UNIT_STAT_CASTING))
|
||||
return;
|
||||
|
||||
while (uint32 eventId = events.ExecuteEvent())
|
||||
@@ -477,7 +477,7 @@ struct mob_stonespine_gargoyleAI: public ScriptedAI
|
||||
|
||||
events.Update(diff);
|
||||
|
||||
if (m_creature->hasUnitState(UNIT_STAT_CASTING))
|
||||
if (me->hasUnitState(UNIT_STAT_CASTING))
|
||||
return;
|
||||
|
||||
while (uint32 eventId = events.ExecuteEvent())
|
||||
@@ -528,7 +528,7 @@ struct mob_plagueborn_horrorAI: public ScriptedAI
|
||||
|
||||
events.Update(diff);
|
||||
|
||||
if (m_creature->hasUnitState(UNIT_STAT_CASTING))
|
||||
if (me->hasUnitState(UNIT_STAT_CASTING))
|
||||
return;
|
||||
|
||||
while (uint32 eventId = events.ExecuteEvent())
|
||||
@@ -581,7 +581,7 @@ struct mob_iceborn_protodrakeAI: public ScriptedAI
|
||||
|
||||
events.Update(diff);
|
||||
|
||||
if (m_creature->hasUnitState(UNIT_STAT_CASTING))
|
||||
if (me->hasUnitState(UNIT_STAT_CASTING))
|
||||
return;
|
||||
|
||||
while (uint32 eventId = events.ExecuteEvent())
|
||||
@@ -589,7 +589,7 @@ struct mob_iceborn_protodrakeAI: public ScriptedAI
|
||||
switch(eventId)
|
||||
{
|
||||
case EVENT_FROST_BREATH:
|
||||
DoCast(m_creature->getVictim(), SPELL_FROST_BREATH);
|
||||
DoCast(me->getVictim(), SPELL_FROST_BREATH);
|
||||
events.RescheduleEvent(EVENT_FROST_BREATH, 10000);
|
||||
return;
|
||||
}
|
||||
@@ -625,7 +625,7 @@ struct mob_hungering_ghoulAI: public ScriptedAI
|
||||
|
||||
events.Update(diff);
|
||||
|
||||
if (m_creature->hasUnitState(UNIT_STAT_CASTING))
|
||||
if (me->hasUnitState(UNIT_STAT_CASTING))
|
||||
return;
|
||||
|
||||
while (uint32 eventId = events.ExecuteEvent())
|
||||
@@ -633,7 +633,7 @@ struct mob_hungering_ghoulAI: public ScriptedAI
|
||||
switch(eventId)
|
||||
{
|
||||
case EVENT_DEVOUR_FLESH:
|
||||
DoCast(m_creature->getVictim(), SPELL_DEVOUR_FLESH);
|
||||
DoCast(me->getVictim(), SPELL_DEVOUR_FLESH);
|
||||
events.RescheduleEvent(EVENT_DEVOUR_FLESH, 8000);
|
||||
return;
|
||||
}
|
||||
@@ -671,7 +671,7 @@ struct mob_fallen_warriorAI: public ScriptedAI
|
||||
|
||||
events.Update(diff);
|
||||
|
||||
if (m_creature->hasUnitState(UNIT_STAT_CASTING))
|
||||
if (me->hasUnitState(UNIT_STAT_CASTING))
|
||||
return;
|
||||
|
||||
while (uint32 eventId = events.ExecuteEvent())
|
||||
@@ -679,7 +679,7 @@ struct mob_fallen_warriorAI: public ScriptedAI
|
||||
switch(eventId)
|
||||
{
|
||||
case EVENT_ARCING_SLICE:
|
||||
DoCast(m_creature->getVictim(), SPELL_ARCING_SLICE);
|
||||
DoCast(me->getVictim(), SPELL_ARCING_SLICE);
|
||||
events.RescheduleEvent(EVENT_ARCING_SLICE, 10000);
|
||||
return;
|
||||
case EVENT_DEMORALIZING_SHOUT:
|
||||
@@ -687,7 +687,7 @@ struct mob_fallen_warriorAI: public ScriptedAI
|
||||
events.RescheduleEvent(EVENT_DEMORALIZING_SHOUT, 20000);
|
||||
return;
|
||||
case EVENT_SHIELD_BLOCK:
|
||||
DoCast(m_creature->getVictim(), SPELL_SHIELD_BLOCK);
|
||||
DoCast(me->getVictim(), SPELL_SHIELD_BLOCK);
|
||||
events.RescheduleEvent(EVENT_SHIELD_BLOCK, 8000);
|
||||
return;
|
||||
}
|
||||
@@ -724,7 +724,7 @@ struct mob_deathwhisper_torturerAI: public ScriptedAI
|
||||
|
||||
events.Update(diff);
|
||||
|
||||
if (m_creature->hasUnitState(UNIT_STAT_CASTING))
|
||||
if (me->hasUnitState(UNIT_STAT_CASTING))
|
||||
return;
|
||||
|
||||
while (uint32 eventId = events.ExecuteEvent())
|
||||
@@ -774,7 +774,7 @@ struct mob_deathwhisper_shadowcasterAI: public ScriptedAI
|
||||
|
||||
events.Update(diff);
|
||||
|
||||
if (m_creature->hasUnitState(UNIT_STAT_CASTING))
|
||||
if (me->hasUnitState(UNIT_STAT_CASTING))
|
||||
return;
|
||||
|
||||
while (uint32 eventId = events.ExecuteEvent())
|
||||
@@ -820,7 +820,7 @@ struct mob_deathwhisper_necrolyteAI: public ScriptedAI
|
||||
|
||||
events.Update(diff);
|
||||
|
||||
if (m_creature->hasUnitState(UNIT_STAT_CASTING))
|
||||
if (me->hasUnitState(UNIT_STAT_CASTING))
|
||||
return;
|
||||
|
||||
while (uint32 eventId = events.ExecuteEvent())
|
||||
@@ -870,7 +870,7 @@ struct mob_wrathbone_sorcererAI: public ScriptedAI
|
||||
|
||||
events.Update(diff);
|
||||
|
||||
if (m_creature->hasUnitState(UNIT_STAT_CASTING))
|
||||
if (me->hasUnitState(UNIT_STAT_CASTING))
|
||||
return;
|
||||
|
||||
while (uint32 eventId = events.ExecuteEvent())
|
||||
@@ -916,7 +916,7 @@ struct mob_geist_ambusherAI: public ScriptedAI
|
||||
|
||||
events.Update(diff);
|
||||
|
||||
if (m_creature->hasUnitState(UNIT_STAT_CASTING))
|
||||
if (me->hasUnitState(UNIT_STAT_CASTING))
|
||||
return;
|
||||
|
||||
while (uint32 eventId = events.ExecuteEvent())
|
||||
|
||||
@@ -160,10 +160,10 @@ struct npc_emilyAI : public npc_escortAI
|
||||
|
||||
void JustSummoned(Creature* pSummoned)
|
||||
{
|
||||
if (Creature* Mrfloppy = GetClosestCreatureWithEntry(m_creature, NPC_MRFLOPPY, 50.0f))
|
||||
if (Creature* Mrfloppy = GetClosestCreatureWithEntry(me, NPC_MRFLOPPY, 50.0f))
|
||||
pSummoned->AI()->AttackStart(Mrfloppy);
|
||||
else
|
||||
pSummoned->AI()->AttackStart(m_creature->getVictim());
|
||||
pSummoned->AI()->AttackStart(me->getVictim());
|
||||
}
|
||||
|
||||
void WaypointReached(uint32 i)
|
||||
@@ -174,76 +174,76 @@ struct npc_emilyAI : public npc_escortAI
|
||||
switch (i)
|
||||
{
|
||||
case 9:
|
||||
if (Creature *Mrfloppy = GetClosestCreatureWithEntry(m_creature, NPC_MRFLOPPY, 100.0f))
|
||||
if (Creature *Mrfloppy = GetClosestCreatureWithEntry(me, NPC_MRFLOPPY, 100.0f))
|
||||
MrfloppyGUID = Mrfloppy->GetGUID();
|
||||
break;
|
||||
case 10:
|
||||
if (Creature *Mrfloppy = Unit::GetCreature(*m_creature, MrfloppyGUID))
|
||||
if (Creature *Mrfloppy = Unit::GetCreature(*me, MrfloppyGUID))
|
||||
{
|
||||
DoScriptText(SAY_WORGHAGGRO1, m_creature);
|
||||
m_creature->SummonCreature(NPC_HUNGRY_WORG,m_creature->GetPositionX()+5,m_creature->GetPositionY()+2,m_creature->GetPositionZ()+1,3.229f,TEMPSUMMON_TIMED_OR_DEAD_DESPAWN,120000);
|
||||
DoScriptText(SAY_WORGHAGGRO1, me);
|
||||
me->SummonCreature(NPC_HUNGRY_WORG,me->GetPositionX()+5,me->GetPositionY()+2,me->GetPositionZ()+1,3.229f,TEMPSUMMON_TIMED_OR_DEAD_DESPAWN,120000);
|
||||
}
|
||||
break;
|
||||
case 11:
|
||||
if (Creature *Mrfloppy = Unit::GetCreature(*m_creature, MrfloppyGUID))
|
||||
Mrfloppy->GetMotionMaster()->MoveFollow(m_creature, PET_FOLLOW_DIST, PET_FOLLOW_ANGLE);
|
||||
if (Creature *Mrfloppy = Unit::GetCreature(*me, MrfloppyGUID))
|
||||
Mrfloppy->GetMotionMaster()->MoveFollow(me, PET_FOLLOW_DIST, PET_FOLLOW_ANGLE);
|
||||
break;
|
||||
case 17:
|
||||
if (Creature *Mrfloppy = Unit::GetCreature(*m_creature, MrfloppyGUID))
|
||||
Mrfloppy->GetMotionMaster()->MovePoint(0, m_creature->GetPositionX(), m_creature->GetPositionY(), m_creature->GetPositionZ());
|
||||
DoScriptText(SAY_WORGRAGGRO3, m_creature);
|
||||
if (Creature *RWORG = m_creature->SummonCreature(NPC_RAVENOUS_WORG,m_creature->GetPositionX()+10,m_creature->GetPositionY()+8,m_creature->GetPositionZ()+2,3.229f,TEMPSUMMON_TIMED_OR_DEAD_DESPAWN,120000))
|
||||
if (Creature *Mrfloppy = Unit::GetCreature(*me, MrfloppyGUID))
|
||||
Mrfloppy->GetMotionMaster()->MovePoint(0, me->GetPositionX(), me->GetPositionY(), me->GetPositionZ());
|
||||
DoScriptText(SAY_WORGRAGGRO3, me);
|
||||
if (Creature *RWORG = me->SummonCreature(NPC_RAVENOUS_WORG,me->GetPositionX()+10,me->GetPositionY()+8,me->GetPositionZ()+2,3.229f,TEMPSUMMON_TIMED_OR_DEAD_DESPAWN,120000))
|
||||
{
|
||||
RWORG->setFaction(35);
|
||||
RWORGGUID = RWORG->GetGUID();
|
||||
}
|
||||
break;
|
||||
case 18:
|
||||
if (Creature *Mrfloppy = Unit::GetCreature(*m_creature, MrfloppyGUID))
|
||||
if (Creature *Mrfloppy = Unit::GetCreature(*me, MrfloppyGUID))
|
||||
{
|
||||
if (Creature *RWORG = Unit::GetCreature(*m_creature, RWORGGUID))
|
||||
if (Creature *RWORG = Unit::GetCreature(*me, RWORGGUID))
|
||||
RWORG->GetMotionMaster()->MovePoint(0, Mrfloppy->GetPositionX(), Mrfloppy->GetPositionY(), Mrfloppy->GetPositionZ());
|
||||
DoCast(Mrfloppy,SPELL_MRFLOPPY);
|
||||
}
|
||||
break;
|
||||
case 19:
|
||||
if (Creature *Mrfloppy = Unit::GetCreature(*m_creature, MrfloppyGUID))
|
||||
if (Creature *Mrfloppy = Unit::GetCreature(*me, MrfloppyGUID))
|
||||
{
|
||||
if (Mrfloppy->HasAura(SPELL_MRFLOPPY, 0))
|
||||
{
|
||||
if (Creature *RWORG = Unit::GetCreature(*m_creature, RWORGGUID))
|
||||
if (Creature *RWORG = Unit::GetCreature(*me, RWORGGUID))
|
||||
Mrfloppy->EnterVehicle(RWORG);
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 20:
|
||||
if (Creature *RWORG = Unit::GetCreature(*m_creature, RWORGGUID))
|
||||
if (Creature *RWORG = Unit::GetCreature(*me, RWORGGUID))
|
||||
RWORG->HandleEmoteCommand(34);
|
||||
break;
|
||||
case 21:
|
||||
if (Creature *Mrfloppy = Unit::GetCreature(*m_creature, MrfloppyGUID))
|
||||
if (Creature *Mrfloppy = Unit::GetCreature(*me, MrfloppyGUID))
|
||||
{
|
||||
if (Creature *RWORG = Unit::GetCreature(*m_creature, RWORGGUID))
|
||||
if (Creature *RWORG = Unit::GetCreature(*me, RWORGGUID))
|
||||
{
|
||||
RWORG->Kill(Mrfloppy);
|
||||
Mrfloppy->ExitVehicle();
|
||||
RWORG->setFaction(14);
|
||||
RWORG->GetMotionMaster()->MovePoint(0, RWORG->GetPositionX()+10,RWORG->GetPositionY()+80,RWORG->GetPositionZ());
|
||||
DoScriptText(SAY_VICTORY2, m_creature);
|
||||
DoScriptText(SAY_VICTORY2, me);
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 22:
|
||||
if (Creature *Mrfloppy = Unit::GetCreature(*m_creature, MrfloppyGUID))
|
||||
if (Creature *Mrfloppy = Unit::GetCreature(*me, MrfloppyGUID))
|
||||
{
|
||||
if (Mrfloppy->isDead())
|
||||
{
|
||||
if (Creature *RWORG = Unit::GetCreature(*m_creature, RWORGGUID))
|
||||
if (Creature *RWORG = Unit::GetCreature(*me, RWORGGUID))
|
||||
RWORG->DisappearAndDie();
|
||||
m_creature->GetMotionMaster()->MovePoint(0, Mrfloppy->GetPositionX(), Mrfloppy->GetPositionY(), Mrfloppy->GetPositionZ());
|
||||
me->GetMotionMaster()->MovePoint(0, Mrfloppy->GetPositionX(), Mrfloppy->GetPositionY(), Mrfloppy->GetPositionZ());
|
||||
Mrfloppy->setDeathState(ALIVE);
|
||||
Mrfloppy->GetMotionMaster()->MoveFollow(m_creature, PET_FOLLOW_DIST, PET_FOLLOW_ANGLE);
|
||||
DoScriptText(SAY_VICTORY3, m_creature);
|
||||
Mrfloppy->GetMotionMaster()->MoveFollow(me, PET_FOLLOW_DIST, PET_FOLLOW_ANGLE);
|
||||
DoScriptText(SAY_VICTORY3, me);
|
||||
}
|
||||
}
|
||||
break;
|
||||
@@ -251,17 +251,17 @@ struct npc_emilyAI : public npc_escortAI
|
||||
if (pPlayer)
|
||||
{
|
||||
Completed = true;
|
||||
pPlayer->GroupEventHappens(QUEST_PERILOUS_ADVENTURE, m_creature);
|
||||
DoScriptText(SAY_QUEST_COMPLETE, m_creature, pPlayer);
|
||||
pPlayer->GroupEventHappens(QUEST_PERILOUS_ADVENTURE, me);
|
||||
DoScriptText(SAY_QUEST_COMPLETE, me, pPlayer);
|
||||
}
|
||||
m_creature->RemoveUnitMovementFlag(MOVEMENTFLAG_WALK_MODE);
|
||||
me->RemoveUnitMovementFlag(MOVEMENTFLAG_WALK_MODE);
|
||||
break;
|
||||
case 25:
|
||||
DoScriptText(SAY_VICTORY4, m_creature);
|
||||
DoScriptText(SAY_VICTORY4, me);
|
||||
break;
|
||||
case 27:
|
||||
m_creature->DisappearAndDie();
|
||||
if (Creature *Mrfloppy = Unit::GetCreature(*m_creature, MrfloppyGUID))
|
||||
me->DisappearAndDie();
|
||||
if (Creature *Mrfloppy = Unit::GetCreature(*me, MrfloppyGUID))
|
||||
Mrfloppy->DisappearAndDie();
|
||||
break;
|
||||
}
|
||||
@@ -269,7 +269,7 @@ struct npc_emilyAI : public npc_escortAI
|
||||
|
||||
void EnterCombat(Unit* Who)
|
||||
{
|
||||
DoScriptText(SAY_RANDOMAGGRO, m_creature);
|
||||
DoScriptText(SAY_RANDOMAGGRO, me);
|
||||
}
|
||||
|
||||
void Reset()
|
||||
@@ -330,7 +330,7 @@ struct npc_mrfloppyAI : public ScriptedAI
|
||||
|
||||
void EnterCombat(Unit* Who)
|
||||
{
|
||||
if (Creature* Emily = GetClosestCreatureWithEntry(m_creature, NPC_EMILY, 50.0f))
|
||||
if (Creature* Emily = GetClosestCreatureWithEntry(me, NPC_EMILY, 50.0f))
|
||||
{
|
||||
switch(Who->GetEntry())
|
||||
{
|
||||
@@ -407,8 +407,8 @@ struct npc_outhouse_bunnyAI : public ScriptedAI
|
||||
DoCast(me, SPELL_DUST_FIELD, true);
|
||||
switch (m_gender)
|
||||
{
|
||||
case GENDER_FEMALE: DoPlaySoundToSet(m_creature, SOUND_FEMALE); break;
|
||||
case GENDER_MALE: DoPlaySoundToSet(m_creature, SOUND_MALE); break;
|
||||
case GENDER_FEMALE: DoPlaySoundToSet(me, SOUND_FEMALE); break;
|
||||
case GENDER_MALE: DoPlaySoundToSet(me, SOUND_MALE); break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -54,11 +54,11 @@ struct boss_drakkari_colossusAI : public ScriptedAI
|
||||
{
|
||||
if (pInstance)
|
||||
pInstance->SetData(DATA_DRAKKARI_COLOSSUS_EVENT, NOT_STARTED);
|
||||
if (!m_creature->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_OOC_NOT_ATTACKABLE))
|
||||
m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_OOC_NOT_ATTACKABLE);
|
||||
m_creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
||||
m_creature->clearUnitState(UNIT_STAT_STUNNED | UNIT_STAT_ROOT);
|
||||
m_creature->SetReactState(REACT_PASSIVE);
|
||||
if (!me->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_OOC_NOT_ATTACKABLE))
|
||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_OOC_NOT_ATTACKABLE);
|
||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
||||
me->clearUnitState(UNIT_STAT_STUNNED | UNIT_STAT_ROOT);
|
||||
me->SetReactState(REACT_PASSIVE);
|
||||
MightyBlowTimer = 10*IN_MILISECONDS;
|
||||
bHealth = false;
|
||||
bHealth1 = false;
|
||||
@@ -79,14 +79,14 @@ struct boss_drakkari_colossusAI : public ScriptedAI
|
||||
{
|
||||
pWho->clearUnitState(UNIT_STAT_STUNNED | UNIT_STAT_ROOT);
|
||||
pWho->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
||||
if (pWho == m_creature)
|
||||
m_creature->RemoveAura(SPELL_FREEZE_ANIM);
|
||||
if (pWho == me)
|
||||
me->RemoveAura(SPELL_FREEZE_ANIM);
|
||||
}else
|
||||
{
|
||||
pWho->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
||||
pWho->addUnitState(UNIT_STAT_STUNNED | UNIT_STAT_ROOT);
|
||||
if (pWho == m_creature)
|
||||
DoCast(m_creature,SPELL_FREEZE_ANIM);
|
||||
if (pWho == me)
|
||||
DoCast(me,SPELL_FREEZE_ANIM);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -98,27 +98,27 @@ struct boss_drakkari_colossusAI : public ScriptedAI
|
||||
|
||||
if (!bHealth && HealthBelowPct(50) && !HealthBelowPct(5))
|
||||
{
|
||||
CreatureState(m_creature, false);
|
||||
DoCast(m_creature,SPELL_FREEZE_ANIM);
|
||||
DoCast(m_creature,SPELL_EMERGE);
|
||||
CreatureState(me, false);
|
||||
DoCast(me,SPELL_FREEZE_ANIM);
|
||||
DoCast(me,SPELL_EMERGE);
|
||||
bHealth = true;
|
||||
}
|
||||
|
||||
if (!bHealth1 && HealthBelowPct(5))
|
||||
{
|
||||
DoCast(m_creature,SPELL_EMERGE);
|
||||
CreatureState(m_creature, false);
|
||||
DoCast(me,SPELL_EMERGE);
|
||||
CreatureState(me, false);
|
||||
bHealth1 = true;
|
||||
m_creature->RemoveAllAuras();
|
||||
me->RemoveAllAuras();
|
||||
}
|
||||
|
||||
if (MightyBlowTimer <= diff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(), SPELL_MIGHTY_BLOW, true);
|
||||
DoCast(me->getVictim(), SPELL_MIGHTY_BLOW, true);
|
||||
MightyBlowTimer = 10*IN_MILISECONDS;
|
||||
} else MightyBlowTimer -= diff;
|
||||
|
||||
if (!m_creature->hasUnitState(UNIT_STAT_STUNNED))
|
||||
if (!me->hasUnitState(UNIT_STAT_STUNNED))
|
||||
DoMeleeAttackIfReady();
|
||||
}
|
||||
|
||||
@@ -132,7 +132,7 @@ struct boss_drakkari_colossusAI : public ScriptedAI
|
||||
{
|
||||
if (HealthBelowPct(5))
|
||||
pSummon->DealDamage(pSummon, pSummon->GetHealth() * 0.5 , NULL, DIRECT_DAMAGE, SPELL_SCHOOL_MASK_NORMAL, NULL, false);
|
||||
pSummon->AI()->AttackStart(m_creature->getVictim());
|
||||
pSummon->AI()->AttackStart(me->getVictim());
|
||||
}
|
||||
};
|
||||
|
||||
@@ -151,27 +151,27 @@ struct boss_drakkari_elementalAI : public ScriptedAI
|
||||
|
||||
void Reset()
|
||||
{
|
||||
if (Creature *pColossus = Unit::GetCreature(*m_creature, pInstance ? pInstance->GetData64(DATA_DRAKKARI_COLOSSUS) : 0))
|
||||
CAST_AI(boss_drakkari_colossusAI, pColossus->AI())->CreatureState(m_creature, true);
|
||||
if (Creature *pColossus = Unit::GetCreature(*me, pInstance ? pInstance->GetData64(DATA_DRAKKARI_COLOSSUS) : 0))
|
||||
CAST_AI(boss_drakkari_colossusAI, pColossus->AI())->CreatureState(me, true);
|
||||
uiSurgeTimer = 7*IN_MILISECONDS;
|
||||
bGoToColossus = false;
|
||||
}
|
||||
|
||||
void EnterEvadeMode()
|
||||
{
|
||||
m_creature->RemoveFromWorld();
|
||||
me->RemoveFromWorld();
|
||||
}
|
||||
|
||||
void MovementInform(uint32 uiType, uint32 uiId)
|
||||
{
|
||||
if (uiType != POINT_MOTION_TYPE)
|
||||
return;
|
||||
if (Creature *pColossus = Unit::GetCreature(*m_creature, pInstance ? pInstance->GetData64(DATA_DRAKKARI_COLOSSUS) : 0))
|
||||
if (Creature *pColossus = Unit::GetCreature(*me, pInstance ? pInstance->GetData64(DATA_DRAKKARI_COLOSSUS) : 0))
|
||||
{
|
||||
CAST_AI(boss_drakkari_colossusAI, pColossus->AI())->CreatureState(pColossus, true);
|
||||
CAST_AI(boss_drakkari_colossusAI, pColossus->AI())->bHealth1 = false;
|
||||
}
|
||||
m_creature->RemoveFromWorld();
|
||||
me->RemoveFromWorld();
|
||||
}
|
||||
|
||||
void UpdateAI(const uint32 diff)
|
||||
@@ -182,11 +182,11 @@ struct boss_drakkari_elementalAI : public ScriptedAI
|
||||
|
||||
if (!bGoToColossus && HealthBelowPct(50))
|
||||
{
|
||||
if (Creature *pColossus = Unit::GetCreature(*m_creature, pInstance ? pInstance->GetData64(DATA_DRAKKARI_COLOSSUS) : 0))
|
||||
if (Creature *pColossus = Unit::GetCreature(*me, pInstance ? pInstance->GetData64(DATA_DRAKKARI_COLOSSUS) : 0))
|
||||
{
|
||||
if (!CAST_AI(boss_drakkari_colossusAI,pColossus->AI())->HealthBelowPct(6))
|
||||
{
|
||||
m_creature->InterruptNonMeleeSpells(true);
|
||||
me->InterruptNonMeleeSpells(true);
|
||||
DoCast(pColossus, SPELL_MERGE);
|
||||
bGoToColossus = true;
|
||||
}
|
||||
@@ -195,7 +195,7 @@ struct boss_drakkari_elementalAI : public ScriptedAI
|
||||
|
||||
if (uiSurgeTimer <= diff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(), SPELL_SURGE);
|
||||
DoCast(me->getVictim(), SPELL_SURGE);
|
||||
uiSurgeTimer = 7*IN_MILISECONDS;
|
||||
} else uiSurgeTimer -= diff;
|
||||
|
||||
@@ -204,7 +204,7 @@ struct boss_drakkari_elementalAI : public ScriptedAI
|
||||
|
||||
void JustDied(Unit* killer)
|
||||
{
|
||||
if (Creature *pColossus = Unit::GetCreature(*m_creature, pInstance ? pInstance->GetData64(DATA_DRAKKARI_COLOSSUS) : 0))
|
||||
if (Creature *pColossus = Unit::GetCreature(*me, pInstance ? pInstance->GetData64(DATA_DRAKKARI_COLOSSUS) : 0))
|
||||
pColossus->Kill(pColossus);
|
||||
}
|
||||
};
|
||||
@@ -231,20 +231,20 @@ struct npc_living_mojoAI : public ScriptedAI
|
||||
{
|
||||
|
||||
//Check if the npc is near of Drakkari Colossus.
|
||||
if (Creature *pColossus = Unit::GetCreature(*m_creature, pInstance ? pInstance->GetData64(DATA_DRAKKARI_COLOSSUS) : 0))
|
||||
if (Creature *pColossus = Unit::GetCreature(*me, pInstance ? pInstance->GetData64(DATA_DRAKKARI_COLOSSUS) : 0))
|
||||
{
|
||||
if (pColossus->isAlive() && m_creature->IsInRange3d(pColossus->GetHomePosition().GetPositionX(),pColossus->GetHomePosition().GetPositionY(),pColossus->GetHomePosition().GetPositionZ(),0.0f,17.0f))
|
||||
m_creature->SetReactState(REACT_PASSIVE);
|
||||
if (pColossus->isAlive() && me->IsInRange3d(pColossus->GetHomePosition().GetPositionX(),pColossus->GetHomePosition().GetPositionY(),pColossus->GetHomePosition().GetPositionZ(),0.0f,17.0f))
|
||||
me->SetReactState(REACT_PASSIVE);
|
||||
else
|
||||
m_creature->SetReactState(REACT_AGGRESSIVE);
|
||||
me->SetReactState(REACT_AGGRESSIVE);
|
||||
}
|
||||
}
|
||||
|
||||
void DamageTaken(Unit* pDone_by, uint32& uiDamage)
|
||||
{
|
||||
if (m_creature->HasReactState(REACT_PASSIVE))
|
||||
if (me->HasReactState(REACT_PASSIVE))
|
||||
{
|
||||
if (Creature *pColossus = Unit::GetCreature(*m_creature, pInstance ? pInstance->GetData64(DATA_DRAKKARI_COLOSSUS) : 0))
|
||||
if (Creature *pColossus = Unit::GetCreature(*me, pInstance ? pInstance->GetData64(DATA_DRAKKARI_COLOSSUS) : 0))
|
||||
{
|
||||
if (pColossus->isAlive() && !pColossus->isInCombat())
|
||||
{
|
||||
@@ -267,13 +267,13 @@ struct npc_living_mojoAI : public ScriptedAI
|
||||
|
||||
if (uiMojoWaveTimer <= diff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(), SPELL_MOJO_WAVE);
|
||||
DoCast(me->getVictim(), SPELL_MOJO_WAVE);
|
||||
uiMojoWaveTimer = 15*IN_MILISECONDS;
|
||||
} else uiMojoWaveTimer -= diff;
|
||||
|
||||
if (uiMojoPuddleTimer <= diff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(), SPELL_MOJO_PUDDLE);
|
||||
DoCast(me->getVictim(), SPELL_MOJO_PUDDLE);
|
||||
uiMojoPuddleTimer = 18*IN_MILISECONDS;
|
||||
} else uiMojoPuddleTimer -= diff;
|
||||
|
||||
|
||||
@@ -73,13 +73,13 @@ struct boss_eckAI : public ScriptedAI
|
||||
|
||||
if (uiBiteTimer <= diff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(), SPELL_ECK_BITE);
|
||||
DoCast(me->getVictim(), SPELL_ECK_BITE);
|
||||
uiBiteTimer = urand(8*IN_MILISECONDS,12*IN_MILISECONDS);
|
||||
} else uiBiteTimer -= diff;
|
||||
|
||||
if (uiSpitTimer <= diff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(), SPELL_ECK_SPIT);
|
||||
DoCast(me->getVictim(), SPELL_ECK_SPIT);
|
||||
uiSpitTimer = urand(6*IN_MILISECONDS,14*IN_MILISECONDS);
|
||||
} else uiSpitTimer -= diff;
|
||||
|
||||
@@ -98,7 +98,7 @@ struct boss_eckAI : public ScriptedAI
|
||||
{
|
||||
if (uiBerserkTimer <= diff)
|
||||
{
|
||||
DoCast(m_creature, SPELL_ECK_BERSERK);
|
||||
DoCast(me, SPELL_ECK_BERSERK);
|
||||
bBerserk = true;
|
||||
}
|
||||
else
|
||||
@@ -106,7 +106,7 @@ struct boss_eckAI : public ScriptedAI
|
||||
uiBerserkTimer -= diff;
|
||||
if (HealthBelowPct(20))
|
||||
{
|
||||
DoCast(m_creature, SPELL_ECK_BERSERK);
|
||||
DoCast(me, SPELL_ECK_BERSERK);
|
||||
bBerserk = true;
|
||||
}
|
||||
}
|
||||
@@ -140,9 +140,9 @@ struct npc_ruins_dwellerAI : public ScriptedAI
|
||||
{
|
||||
if (pInstance)
|
||||
{
|
||||
pInstance->SetData64(DATA_RUIN_DWELLER_DIED,m_creature->GetGUID());
|
||||
pInstance->SetData64(DATA_RUIN_DWELLER_DIED,me->GetGUID());
|
||||
if (pInstance->GetData(DATA_ALIVE_RUIN_DWELLERS) == 0)
|
||||
m_creature->SummonCreature(CREATURE_ECK, EckSpawnPoint, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 300*IN_MILISECONDS);
|
||||
me->SummonCreature(CREATURE_ECK, EckSpawnPoint, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 300*IN_MILISECONDS);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
@@ -110,7 +110,7 @@ struct boss_gal_darahAI : public ScriptedAI
|
||||
|
||||
Phase = TROLL;
|
||||
|
||||
m_creature->SetDisplayId(DISPLAY_TROLL);
|
||||
me->SetDisplayId(DISPLAY_TROLL);
|
||||
|
||||
if (pInstance)
|
||||
pInstance->SetData(DATA_GAL_DARAH_EVENT, NOT_STARTED);
|
||||
@@ -118,7 +118,7 @@ struct boss_gal_darahAI : public ScriptedAI
|
||||
|
||||
void EnterCombat(Unit* who)
|
||||
{
|
||||
DoScriptText(SAY_AGGRO, m_creature);
|
||||
DoScriptText(SAY_AGGRO, me);
|
||||
|
||||
if (pInstance)
|
||||
pInstance->SetData(DATA_GAL_DARAH_EVENT, IN_PROGRESS);
|
||||
@@ -137,14 +137,14 @@ struct boss_gal_darahAI : public ScriptedAI
|
||||
{
|
||||
if (uiTransformationTimer <= diff)
|
||||
{
|
||||
m_creature->SetDisplayId(DISPLAY_RHINO);
|
||||
me->SetDisplayId(DISPLAY_RHINO);
|
||||
Phase = RHINO;
|
||||
uiPhaseCounter = 0;
|
||||
DoScriptText(SAY_TRANSFORM_1, m_creature);
|
||||
DoScriptText(SAY_TRANSFORM_1, me);
|
||||
uiTransformationTimer = 5*IN_MILISECONDS;
|
||||
bStartOfTransformation = true;
|
||||
m_creature->clearUnitState(UNIT_STAT_STUNNED|UNIT_STAT_ROOT);
|
||||
m_creature->SetReactState(REACT_AGGRESSIVE);
|
||||
me->clearUnitState(UNIT_STAT_STUNNED|UNIT_STAT_ROOT);
|
||||
me->SetReactState(REACT_AGGRESSIVE);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -153,8 +153,8 @@ struct boss_gal_darahAI : public ScriptedAI
|
||||
if (bStartOfTransformation)
|
||||
{
|
||||
bStartOfTransformation = false;
|
||||
m_creature->addUnitState(UNIT_STAT_STUNNED|UNIT_STAT_ROOT);
|
||||
m_creature->SetReactState(REACT_PASSIVE);
|
||||
me->addUnitState(UNIT_STAT_STUNNED|UNIT_STAT_ROOT);
|
||||
me->SetReactState(REACT_PASSIVE);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -162,14 +162,14 @@ struct boss_gal_darahAI : public ScriptedAI
|
||||
{
|
||||
if (uiStampedeTimer <= diff)
|
||||
{
|
||||
DoCast(m_creature, SPELL_STAMPEDE);
|
||||
DoScriptText(RAND(SAY_SUMMON_RHINO_1,SAY_SUMMON_RHINO_2,SAY_SUMMON_RHINO_3),m_creature);
|
||||
DoCast(me, SPELL_STAMPEDE);
|
||||
DoScriptText(RAND(SAY_SUMMON_RHINO_1,SAY_SUMMON_RHINO_2,SAY_SUMMON_RHINO_3),me);
|
||||
uiStampedeTimer = 15*IN_MILISECONDS;
|
||||
} else uiStampedeTimer -= diff;
|
||||
|
||||
if (uiWhirlingSlashTimer <= diff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(), SPELL_WHIRLING_SLASH);
|
||||
DoCast(me->getVictim(), SPELL_WHIRLING_SLASH);
|
||||
uiWhirlingSlashTimer = 21*IN_MILISECONDS;
|
||||
++uiPhaseCounter;
|
||||
} else uiWhirlingSlashTimer -= diff;
|
||||
@@ -180,14 +180,14 @@ struct boss_gal_darahAI : public ScriptedAI
|
||||
{
|
||||
if (uiTransformationTimer <= diff)
|
||||
{
|
||||
m_creature->SetDisplayId(DISPLAY_TROLL);
|
||||
me->SetDisplayId(DISPLAY_TROLL);
|
||||
Phase = TROLL;
|
||||
uiPhaseCounter = 0;
|
||||
DoScriptText(SAY_TRANSFORM_2, m_creature);
|
||||
DoScriptText(SAY_TRANSFORM_2, me);
|
||||
uiTransformationTimer = 9*IN_MILISECONDS;
|
||||
bStartOfTransformation = true;
|
||||
m_creature->clearUnitState(UNIT_STAT_STUNNED|UNIT_STAT_ROOT);
|
||||
m_creature->SetReactState(REACT_AGGRESSIVE);
|
||||
me->clearUnitState(UNIT_STAT_STUNNED|UNIT_STAT_ROOT);
|
||||
me->SetReactState(REACT_AGGRESSIVE);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -196,8 +196,8 @@ struct boss_gal_darahAI : public ScriptedAI
|
||||
if (bStartOfTransformation)
|
||||
{
|
||||
bStartOfTransformation = false;
|
||||
m_creature->addUnitState(UNIT_STAT_STUNNED|UNIT_STAT_ROOT);
|
||||
m_creature->SetReactState(REACT_PASSIVE);
|
||||
me->addUnitState(UNIT_STAT_STUNNED|UNIT_STAT_ROOT);
|
||||
me->SetReactState(REACT_PASSIVE);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -205,19 +205,19 @@ struct boss_gal_darahAI : public ScriptedAI
|
||||
{
|
||||
if (uiPunctureTimer <= diff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(), SPELL_PUNCTURE);
|
||||
DoCast(me->getVictim(), SPELL_PUNCTURE);
|
||||
uiPunctureTimer = 8*IN_MILISECONDS;
|
||||
} else uiPunctureTimer -= diff;
|
||||
|
||||
if (uiEnrageTimer <= diff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(), SPELL_ENRAGE);
|
||||
DoCast(me->getVictim(), SPELL_ENRAGE);
|
||||
uiEnrageTimer = 20*IN_MILISECONDS;
|
||||
} else uiEnrageTimer -= diff;
|
||||
|
||||
if (uiStompTimer <= diff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(), SPELL_STOMP);
|
||||
DoCast(me->getVictim(), SPELL_STOMP);
|
||||
uiStompTimer = 20*IN_MILISECONDS;
|
||||
} else uiStompTimer -= diff;
|
||||
|
||||
@@ -240,7 +240,7 @@ struct boss_gal_darahAI : public ScriptedAI
|
||||
|
||||
void JustDied(Unit* killer)
|
||||
{
|
||||
DoScriptText(SAY_DEATH, m_creature);
|
||||
DoScriptText(SAY_DEATH, me);
|
||||
|
||||
if (pInstance)
|
||||
{
|
||||
@@ -265,10 +265,10 @@ struct boss_gal_darahAI : public ScriptedAI
|
||||
|
||||
void KilledUnit(Unit *victim)
|
||||
{
|
||||
if (victim == m_creature)
|
||||
if (victim == me)
|
||||
return;
|
||||
|
||||
DoScriptText(RAND(SAY_SLAY_1,SAY_SLAY_2,SAY_SLAY_3), m_creature);
|
||||
DoScriptText(RAND(SAY_SLAY_1,SAY_SLAY_2,SAY_SLAY_3), me);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@@ -79,8 +79,8 @@ struct boss_moorabiAI : public ScriptedAI
|
||||
|
||||
void EnterCombat(Unit* pWho)
|
||||
{
|
||||
DoScriptText(SAY_AGGRO, m_creature);
|
||||
DoCast(m_creature, SPELL_MOJO_FRENZY, true);
|
||||
DoScriptText(SAY_AGGRO, me);
|
||||
DoCast(me, SPELL_MOJO_FRENZY, true);
|
||||
|
||||
if (pInstance)
|
||||
pInstance->SetData(DATA_MOORABI_EVENT, IN_PROGRESS);
|
||||
@@ -92,45 +92,45 @@ struct boss_moorabiAI : public ScriptedAI
|
||||
if (!UpdateVictim())
|
||||
return;
|
||||
|
||||
if (!bPhase && m_creature->HasAura(SPELL_TRANSFORMATION))
|
||||
if (!bPhase && me->HasAura(SPELL_TRANSFORMATION))
|
||||
{
|
||||
bPhase = true;
|
||||
m_creature->RemoveAura(SPELL_MOJO_FRENZY);
|
||||
me->RemoveAura(SPELL_MOJO_FRENZY);
|
||||
}
|
||||
|
||||
if (uiGroundTremorTimer <= uiDiff)
|
||||
{
|
||||
DoScriptText(SAY_QUAKE, m_creature);
|
||||
DoScriptText(SAY_QUAKE, me);
|
||||
if (bPhase)
|
||||
DoCast(m_creature->getVictim(), SPELL_QUAKE, true);
|
||||
DoCast(me->getVictim(), SPELL_QUAKE, true);
|
||||
else
|
||||
DoCast(m_creature->getVictim(), SPELL_GROUND_TREMOR, true);
|
||||
DoCast(me->getVictim(), SPELL_GROUND_TREMOR, true);
|
||||
uiGroundTremorTimer = 10*IN_MILISECONDS;
|
||||
} else uiGroundTremorTimer -= uiDiff;
|
||||
|
||||
if (uiNumblingShoutTimer <= uiDiff)
|
||||
{
|
||||
if (bPhase)
|
||||
DoCast(m_creature->getVictim(), SPELL_NUMBING_ROAR, true);
|
||||
DoCast(me->getVictim(), SPELL_NUMBING_ROAR, true);
|
||||
else
|
||||
DoCast(m_creature->getVictim(), SPELL_NUMBING_SHOUT, true);
|
||||
DoCast(me->getVictim(), SPELL_NUMBING_SHOUT, true);
|
||||
uiNumblingShoutTimer = 10*IN_MILISECONDS;
|
||||
} else uiNumblingShoutTimer -=uiDiff;
|
||||
|
||||
if (uiDeterminedStabTimer <= uiDiff)
|
||||
{
|
||||
if (bPhase)
|
||||
DoCast(m_creature->getVictim(), SPELL_DETERMINED_GORE);
|
||||
DoCast(me->getVictim(), SPELL_DETERMINED_GORE);
|
||||
else
|
||||
DoCast(m_creature->getVictim(), SPELL_DETERMINED_STAB, true);
|
||||
DoCast(me->getVictim(), SPELL_DETERMINED_STAB, true);
|
||||
uiDeterminedStabTimer = 8*IN_MILISECONDS;
|
||||
} else uiDeterminedStabTimer -=uiDiff;
|
||||
|
||||
if (!bPhase && uiTransformationTImer <= uiDiff)
|
||||
{
|
||||
DoScriptText(EMOTE_TRANSFORM, m_creature);
|
||||
DoScriptText(SAY_TRANSFORM, m_creature);
|
||||
DoCast(m_creature, SPELL_TRANSFORMATION, false);
|
||||
DoScriptText(EMOTE_TRANSFORM, me);
|
||||
DoScriptText(SAY_TRANSFORM, me);
|
||||
DoCast(me, SPELL_TRANSFORMATION, false);
|
||||
uiTransformationTImer = 10*IN_MILISECONDS;
|
||||
} else uiTransformationTImer -= uiDiff;
|
||||
|
||||
@@ -139,7 +139,7 @@ struct boss_moorabiAI : public ScriptedAI
|
||||
|
||||
void JustDied(Unit* pKiller)
|
||||
{
|
||||
DoScriptText(SAY_DEATH, m_creature);
|
||||
DoScriptText(SAY_DEATH, me);
|
||||
|
||||
if (pInstance)
|
||||
{
|
||||
@@ -152,10 +152,10 @@ struct boss_moorabiAI : public ScriptedAI
|
||||
|
||||
void KilledUnit(Unit* pVictim)
|
||||
{
|
||||
if (pVictim == m_creature)
|
||||
if (pVictim == me)
|
||||
return;
|
||||
|
||||
DoScriptText(RAND(SAY_SLAY_2,SAY_SLAY_3), m_creature);
|
||||
DoScriptText(RAND(SAY_SLAY_2,SAY_SLAY_3), me);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@@ -100,7 +100,7 @@ struct boss_slad_ranAI : public ScriptedAI
|
||||
|
||||
void EnterCombat(Unit* who)
|
||||
{
|
||||
DoScriptText(SAY_AGGRO, m_creature);
|
||||
DoScriptText(SAY_AGGRO, me);
|
||||
|
||||
if (pInstance)
|
||||
pInstance->SetData(DATA_SLAD_RAN_EVENT, IN_PROGRESS);
|
||||
@@ -114,19 +114,19 @@ struct boss_slad_ranAI : public ScriptedAI
|
||||
|
||||
if (uiPoisonNovaTimer <= diff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(), SPELL_POISON_NOVA);
|
||||
DoCast(me->getVictim(), SPELL_POISON_NOVA);
|
||||
uiPoisonNovaTimer = 15*IN_MILISECONDS;
|
||||
} else uiPoisonNovaTimer -= diff;
|
||||
|
||||
if (uiPowerfullBiteTimer <= diff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(), SPELL_POWERFULL_BITE);
|
||||
DoCast(me->getVictim(), SPELL_POWERFULL_BITE);
|
||||
uiPowerfullBiteTimer = 10*IN_MILISECONDS;
|
||||
} else uiPowerfullBiteTimer -= diff;
|
||||
|
||||
if (uiVenomBoltTimer <= diff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(), SPELL_VENOM_BOLT);
|
||||
DoCast(me->getVictim(), SPELL_VENOM_BOLT);
|
||||
uiVenomBoltTimer = 10*IN_MILISECONDS;
|
||||
} else uiVenomBoltTimer -= diff;
|
||||
|
||||
@@ -136,23 +136,23 @@ struct boss_slad_ranAI : public ScriptedAI
|
||||
{
|
||||
if (uiPhase == 1)
|
||||
for (uint8 i = 0; i < DUNGEON_MODE(3, 5); ++i)
|
||||
m_creature->SummonCreature(CREATURE_SNAKE, SpawnLoc[i], TEMPSUMMON_CORPSE_TIMED_DESPAWN,20*IN_MILISECONDS);
|
||||
me->SummonCreature(CREATURE_SNAKE, SpawnLoc[i], TEMPSUMMON_CORPSE_TIMED_DESPAWN,20*IN_MILISECONDS);
|
||||
if (uiPhase == 2)
|
||||
for (uint8 i = 0; i < DUNGEON_MODE(3, 5); ++i)
|
||||
m_creature->SummonCreature(CREATURE_CONSTRICTORS, SpawnLoc[i], TEMPSUMMON_CORPSE_TIMED_DESPAWN,20*IN_MILISECONDS);
|
||||
me->SummonCreature(CREATURE_CONSTRICTORS, SpawnLoc[i], TEMPSUMMON_CORPSE_TIMED_DESPAWN,20*IN_MILISECONDS);
|
||||
uiSpawnTimer = 5*IN_MILISECONDS;
|
||||
} else uiSpawnTimer -= diff;
|
||||
}
|
||||
|
||||
if (uiPhase == 0 && HealthBelowPct(30))
|
||||
{
|
||||
DoScriptText(SAY_SUMMON_SNAKES,m_creature);
|
||||
DoScriptText(SAY_SUMMON_SNAKES,me);
|
||||
uiPhase = 1;
|
||||
}
|
||||
|
||||
if (uiPhase == 1 && HealthBelowPct(25))
|
||||
{
|
||||
DoScriptText(SAY_SUMMON_CONSTRICTORS,m_creature);
|
||||
DoScriptText(SAY_SUMMON_CONSTRICTORS,me);
|
||||
uiPhase = 2;
|
||||
}
|
||||
|
||||
@@ -161,7 +161,7 @@ struct boss_slad_ranAI : public ScriptedAI
|
||||
|
||||
void JustDied(Unit* killer)
|
||||
{
|
||||
DoScriptText(SAY_DEATH, m_creature);
|
||||
DoScriptText(SAY_DEATH, me);
|
||||
|
||||
if (pInstance)
|
||||
pInstance->SetData(DATA_SLAD_RAN_EVENT, DONE);
|
||||
@@ -169,12 +169,12 @@ struct boss_slad_ranAI : public ScriptedAI
|
||||
|
||||
void KilledUnit(Unit *victim)
|
||||
{
|
||||
DoScriptText(RAND(SAY_SLAY_1,SAY_SLAY_2,SAY_SLAY_3), m_creature);
|
||||
DoScriptText(RAND(SAY_SLAY_1,SAY_SLAY_2,SAY_SLAY_3), me);
|
||||
}
|
||||
|
||||
void JustSummoned(Creature* summoned)
|
||||
{
|
||||
summoned->GetMotionMaster()->MovePoint(0,m_creature->GetPositionX(),m_creature->GetPositionY(),m_creature->GetPositionZ());
|
||||
summoned->GetMotionMaster()->MovePoint(0,me->GetPositionX(),me->GetPositionY(),me->GetPositionZ());
|
||||
lSummons.Summon(summoned);
|
||||
}
|
||||
};
|
||||
@@ -196,7 +196,7 @@ struct mob_slad_ran_constrictorAI : public ScriptedAI
|
||||
return;
|
||||
if (uiGripOfSladRanTimer <= diff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(), SPELL_GRIP_OF_SLAD_RAN);
|
||||
DoCast(me->getVictim(), SPELL_GRIP_OF_SLAD_RAN);
|
||||
uiGripOfSladRanTimer = 5*IN_MILISECONDS;
|
||||
} else uiGripOfSladRanTimer -= diff;
|
||||
}
|
||||
@@ -224,7 +224,7 @@ struct mob_slad_ran_viperAI : public ScriptedAI
|
||||
|
||||
if (uiVenomousBiteTimer <= diff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(), SPELL_VENOMOUS_BITE);
|
||||
DoCast(me->getVictim(), SPELL_VENOMOUS_BITE);
|
||||
uiVenomousBiteTimer = 10*IN_MILISECONDS;
|
||||
} else uiVenomousBiteTimer -= diff;
|
||||
}
|
||||
|
||||
@@ -105,26 +105,26 @@ struct npc_Apothecary_HanesAI : public npc_escortAI
|
||||
break;
|
||||
case 23:
|
||||
if (pPlayer)
|
||||
pPlayer->GroupEventHappens(QUEST_TRAIL_OF_FIRE, m_creature);
|
||||
pPlayer->GroupEventHappens(QUEST_TRAIL_OF_FIRE, me);
|
||||
me->ForcedDespawn();
|
||||
break;
|
||||
case 5:
|
||||
if (Unit* Trigger = m_creature->FindNearestCreature(NPC_HANES_FIRE_TRIGGER,10.0f))
|
||||
if (Unit* Trigger = me->FindNearestCreature(NPC_HANES_FIRE_TRIGGER,10.0f))
|
||||
Trigger->CastSpell(Trigger, SPELL_COSMETIC_LOW_POLY_FIRE, false);
|
||||
SetRun(false);
|
||||
break;
|
||||
case 6:
|
||||
if (Unit* Trigger = m_creature->FindNearestCreature(NPC_HANES_FIRE_TRIGGER,10.0f))
|
||||
if (Unit* Trigger = me->FindNearestCreature(NPC_HANES_FIRE_TRIGGER,10.0f))
|
||||
Trigger->CastSpell(Trigger, SPELL_COSMETIC_LOW_POLY_FIRE, false);
|
||||
SetRun(true);
|
||||
break;
|
||||
case 8:
|
||||
if (Unit* Trigger = m_creature->FindNearestCreature(NPC_HANES_FIRE_TRIGGER,10.0f))
|
||||
if (Unit* Trigger = me->FindNearestCreature(NPC_HANES_FIRE_TRIGGER,10.0f))
|
||||
Trigger->CastSpell(Trigger, SPELL_COSMETIC_LOW_POLY_FIRE, false);
|
||||
SetRun(false);
|
||||
break;
|
||||
case 9:
|
||||
if (Unit* Trigger = m_creature->FindNearestCreature(NPC_HANES_FIRE_TRIGGER,10.0f))
|
||||
if (Unit* Trigger = me->FindNearestCreature(NPC_HANES_FIRE_TRIGGER,10.0f))
|
||||
Trigger->CastSpell(Trigger, SPELL_COSMETIC_LOW_POLY_FIRE, false);
|
||||
break;
|
||||
case 10:
|
||||
@@ -134,7 +134,7 @@ struct npc_Apothecary_HanesAI : public npc_escortAI
|
||||
SetRun(false);
|
||||
break;
|
||||
case 14:
|
||||
if (Unit* Trigger = m_creature->FindNearestCreature(NPC_HANES_FIRE_TRIGGER,10.0f))
|
||||
if (Unit* Trigger = me->FindNearestCreature(NPC_HANES_FIRE_TRIGGER,10.0f))
|
||||
Trigger->CastSpell(Trigger, SPELL_COSMETIC_LOW_POLY_FIRE, false);
|
||||
SetRun(true);
|
||||
break;
|
||||
|
||||
@@ -206,18 +206,18 @@ struct npc_argent_valiantAI : public ScriptedAI
|
||||
if (uiType != POINT_MOTION_TYPE)
|
||||
return;
|
||||
|
||||
m_creature->setFaction(14);
|
||||
me->setFaction(14);
|
||||
}
|
||||
|
||||
void DamageTaken(Unit* pDoneBy, uint32& uiDamage)
|
||||
{
|
||||
if (uiDamage > m_creature->GetHealth() && pDoneBy->GetTypeId() == TYPEID_PLAYER)
|
||||
if (uiDamage > me->GetHealth() && pDoneBy->GetTypeId() == TYPEID_PLAYER)
|
||||
{
|
||||
uiDamage = 0;
|
||||
CAST_PLR(pDoneBy)->KilledMonsterCredit(NPC_ARGENT_VALIANT_CREDIT,0);
|
||||
m_creature->setFaction(35);
|
||||
m_creature->ForcedDespawn(5000);
|
||||
m_creature->SetHomePosition(m_creature->GetPositionX(),m_creature->GetPositionY(),m_creature->GetPositionZ(),m_creature->GetOrientation());
|
||||
me->setFaction(35);
|
||||
me->ForcedDespawn(5000);
|
||||
me->SetHomePosition(me->GetPositionX(),me->GetPositionY(),me->GetPositionZ(),me->GetOrientation());
|
||||
EnterEvadeMode();
|
||||
}
|
||||
}
|
||||
@@ -265,7 +265,7 @@ struct npc_argent_tournament_postAI : public ScriptedAI
|
||||
|
||||
void UpdateAI(const uint32 uiDiff)
|
||||
{
|
||||
if (m_creature->IsNonMeleeSpellCasted(false))
|
||||
if (me->IsNonMeleeSpellCasted(false))
|
||||
return;
|
||||
|
||||
if (Creature* pTarget = me->FindNearestCreature(NPC_GORMOK_THE_IMPALER, 6.0f))
|
||||
|
||||
@@ -63,13 +63,13 @@ struct boss_anubrekhanAI : public BossAI
|
||||
|
||||
// respawn guard using home position,
|
||||
// otherwise, after a wipe, they respawn where boss was at wipe moment.
|
||||
pos = m_creature->GetHomePosition();
|
||||
pos = me->GetHomePosition();
|
||||
pos.m_positionY -= 10.0f;
|
||||
m_creature->SummonCreature(MOB_CRYPT_GUARD, pos, TEMPSUMMON_CORPSE_DESPAWN);
|
||||
me->SummonCreature(MOB_CRYPT_GUARD, pos, TEMPSUMMON_CORPSE_DESPAWN);
|
||||
|
||||
pos = m_creature->GetHomePosition();
|
||||
pos = me->GetHomePosition();
|
||||
pos.m_positionY += 10.0f;
|
||||
m_creature->SummonCreature(MOB_CRYPT_GUARD, pos, TEMPSUMMON_CORPSE_DESPAWN);
|
||||
me->SummonCreature(MOB_CRYPT_GUARD, pos, TEMPSUMMON_CORPSE_DESPAWN);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -110,7 +110,7 @@ struct boss_anubrekhanAI : public BossAI
|
||||
BossAI::SummonedCreatureDespawn(summon);
|
||||
|
||||
// check if it is an actual killed guard
|
||||
if (!m_creature->isAlive() || summon->isAlive() || summon->GetEntry() != MOB_CRYPT_GUARD)
|
||||
if (!me->isAlive() || summon->isAlive() || summon->GetEntry() != MOB_CRYPT_GUARD)
|
||||
return;
|
||||
|
||||
summon->CastSpell(summon, SPELL_SUMMON_CORPSE_SCARABS_MOB, true, NULL, NULL, me->GetGUID());
|
||||
@@ -138,7 +138,7 @@ struct boss_anubrekhanAI : public BossAI
|
||||
break;
|
||||
case EVENT_LOCUST:
|
||||
// TODO : Add Text
|
||||
DoCast(m_creature, RAID_MODE(SPELL_LOCUST_SWARM_10,SPELL_LOCUST_SWARM_25));
|
||||
DoCast(me, RAID_MODE(SPELL_LOCUST_SWARM_10,SPELL_LOCUST_SWARM_25));
|
||||
DoSummon(MOB_CRYPT_GUARD, GuardSummonPos, 0, TEMPSUMMON_CORPSE_DESPAWN);
|
||||
events.ScheduleEvent(EVENT_LOCUST, 90000);
|
||||
break;
|
||||
@@ -147,7 +147,7 @@ struct boss_anubrekhanAI : public BossAI
|
||||
DoSummon(MOB_CRYPT_GUARD, GuardSummonPos, 0, TEMPSUMMON_CORPSE_DESPAWN);
|
||||
break;
|
||||
case EVENT_BERSERK:
|
||||
DoCast(m_creature, SPELL_BERSERK, true);
|
||||
DoCast(me, SPELL_BERSERK, true);
|
||||
events.ScheduleEvent(EVENT_BERSERK, 600000);
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -181,8 +181,8 @@ struct mob_faerlina_addAI : public ScriptedAI
|
||||
void Reset()
|
||||
{
|
||||
if (getDifficulty() == RAID_DIFFICULTY_10MAN_NORMAL) {
|
||||
m_creature->ApplySpellImmune(0, IMMUNITY_MECHANIC, SPELL_EFFECT_BIND, true);
|
||||
m_creature->ApplySpellImmune(0, IMMUNITY_MECHANIC, MECHANIC_CHARM, true);
|
||||
me->ApplySpellImmune(0, IMMUNITY_MECHANIC, SPELL_EFFECT_BIND, true);
|
||||
me->ApplySpellImmune(0, IMMUNITY_MECHANIC, MECHANIC_CHARM, true);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -243,25 +243,25 @@ struct boss_gothikAI : public BossAI
|
||||
{
|
||||
case MOB_LIVE_TRAINEE:
|
||||
{
|
||||
if (Creature *LiveTrigger0 = Unit::GetCreature(*m_creature, LiveTriggerGUID[0]))
|
||||
if (Creature *LiveTrigger0 = Unit::GetCreature(*me, LiveTriggerGUID[0]))
|
||||
DoSummon(MOB_LIVE_TRAINEE, LiveTrigger0, 1);
|
||||
if (Creature *LiveTrigger1 = Unit::GetCreature(*m_creature, LiveTriggerGUID[1]))
|
||||
if (Creature *LiveTrigger1 = Unit::GetCreature(*me, LiveTriggerGUID[1]))
|
||||
DoSummon(MOB_LIVE_TRAINEE, LiveTrigger1, 1);
|
||||
if (Creature *LiveTrigger2 = Unit::GetCreature(*m_creature, LiveTriggerGUID[2]))
|
||||
if (Creature *LiveTrigger2 = Unit::GetCreature(*me, LiveTriggerGUID[2]))
|
||||
DoSummon(MOB_LIVE_TRAINEE, LiveTrigger2, 1);
|
||||
break;
|
||||
}
|
||||
case MOB_LIVE_KNIGHT:
|
||||
{
|
||||
if (Creature *LiveTrigger3 = Unit::GetCreature(*m_creature, LiveTriggerGUID[3]))
|
||||
if (Creature *LiveTrigger3 = Unit::GetCreature(*me, LiveTriggerGUID[3]))
|
||||
DoSummon(MOB_LIVE_KNIGHT, LiveTrigger3, 1);
|
||||
if (Creature *LiveTrigger5 = Unit::GetCreature(*m_creature, LiveTriggerGUID[5]))
|
||||
if (Creature *LiveTrigger5 = Unit::GetCreature(*me, LiveTriggerGUID[5]))
|
||||
DoSummon(MOB_LIVE_KNIGHT, LiveTrigger5, 1);
|
||||
break;
|
||||
}
|
||||
case MOB_LIVE_RIDER:
|
||||
{
|
||||
if (Creature *LiveTrigger4 = Unit::GetCreature(*m_creature, LiveTriggerGUID[4]))
|
||||
if (Creature *LiveTrigger4 = Unit::GetCreature(*me, LiveTriggerGUID[4]))
|
||||
DoSummon(MOB_LIVE_RIDER, LiveTrigger4, 1);
|
||||
break;
|
||||
}
|
||||
@@ -273,21 +273,21 @@ struct boss_gothikAI : public BossAI
|
||||
{
|
||||
case MOB_LIVE_TRAINEE:
|
||||
{
|
||||
if (Creature *LiveTrigger0 = Unit::GetCreature(*m_creature, LiveTriggerGUID[4]))
|
||||
if (Creature *LiveTrigger0 = Unit::GetCreature(*me, LiveTriggerGUID[4]))
|
||||
DoSummon(MOB_LIVE_TRAINEE, LiveTrigger0, 1);
|
||||
if (Creature *LiveTrigger1 = Unit::GetCreature(*m_creature, LiveTriggerGUID[4]))
|
||||
if (Creature *LiveTrigger1 = Unit::GetCreature(*me, LiveTriggerGUID[4]))
|
||||
DoSummon(MOB_LIVE_TRAINEE, LiveTrigger1, 1);
|
||||
break;
|
||||
}
|
||||
case MOB_LIVE_KNIGHT:
|
||||
{
|
||||
if (Creature *LiveTrigger5 = Unit::GetCreature(*m_creature, LiveTriggerGUID[4]))
|
||||
if (Creature *LiveTrigger5 = Unit::GetCreature(*me, LiveTriggerGUID[4]))
|
||||
DoSummon(MOB_LIVE_KNIGHT, LiveTrigger5, 1);
|
||||
break;
|
||||
}
|
||||
case MOB_LIVE_RIDER:
|
||||
{
|
||||
if (Creature *LiveTrigger4 = Unit::GetCreature(*m_creature, LiveTriggerGUID[4]))
|
||||
if (Creature *LiveTrigger4 = Unit::GetCreature(*me, LiveTriggerGUID[4]))
|
||||
DoSummon(MOB_LIVE_RIDER, LiveTrigger4, 1);
|
||||
break;
|
||||
}
|
||||
@@ -346,7 +346,7 @@ struct boss_gothikAI : public BossAI
|
||||
if (spellId && me->isInCombat())
|
||||
{
|
||||
me->HandleEmoteCommand(EMOTE_ONESHOT_SPELLCAST);
|
||||
if (Creature *pRandomDeadTrigger = Unit::GetCreature(*m_creature, DeadTriggerGUID[rand() % POS_DEAD]))
|
||||
if (Creature *pRandomDeadTrigger = Unit::GetCreature(*me, DeadTriggerGUID[rand() % POS_DEAD]))
|
||||
me->CastSpell(pRandomDeadTrigger, spellId, true);
|
||||
}
|
||||
}
|
||||
@@ -451,8 +451,8 @@ struct boss_gothikAI : public BossAI
|
||||
case EVENT_TELEPORT:
|
||||
if (!thirtyPercentReached)
|
||||
{
|
||||
m_creature->AttackStop();
|
||||
if (IN_LIVE_SIDE(m_creature))
|
||||
me->AttackStop();
|
||||
if (IN_LIVE_SIDE(me))
|
||||
{
|
||||
DoTeleportTo(PosGroundDeadSide);
|
||||
}
|
||||
@@ -461,10 +461,10 @@ struct boss_gothikAI : public BossAI
|
||||
DoTeleportTo(PosGroundLiveSide);
|
||||
}
|
||||
|
||||
m_creature->getThreatManager().resetAggro(NotOnSameSide(m_creature));
|
||||
me->getThreatManager().resetAggro(NotOnSameSide(me));
|
||||
if (Unit *pTarget = SelectTarget(SELECT_TARGET_NEAREST, 0))
|
||||
{
|
||||
m_creature->getThreatManager().addThreat(pTarget, 100.0f);
|
||||
me->getThreatManager().addThreat(pTarget, 100.0f);
|
||||
AttackStart(pTarget);
|
||||
}
|
||||
|
||||
|
||||
@@ -104,14 +104,14 @@ struct npc_grobbulus_poison_cloudAI : public Scripted_NoMovementAI
|
||||
void Reset()
|
||||
{
|
||||
Cloud_Timer = 1000;
|
||||
m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
||||
}
|
||||
|
||||
void UpdateAI(const uint32 diff)
|
||||
{
|
||||
if (Cloud_Timer <= diff)
|
||||
{
|
||||
DoCast(m_creature, SPELL_POISON_CLOUD_ADD);
|
||||
DoCast(me, SPELL_POISON_CLOUD_ADD);
|
||||
Cloud_Timer = 10000;
|
||||
} else Cloud_Timer -= diff;
|
||||
}
|
||||
|
||||
@@ -254,7 +254,7 @@ struct boss_kelthuzadAI : public BossAI
|
||||
{
|
||||
boss_kelthuzadAI(Creature* c) : BossAI(c, BOSS_KELTHUZAD), spawns(c)
|
||||
{
|
||||
uiFaction = m_creature->getFaction();
|
||||
uiFaction = me->getFaction();
|
||||
}
|
||||
|
||||
uint32 Phase;
|
||||
@@ -293,7 +293,7 @@ struct boss_kelthuzadAI : public BossAI
|
||||
|
||||
FindGameObjects();
|
||||
|
||||
if (GameObject *pKTTrigger = m_creature->GetMap()->GetGameObject(KTTriggerGUID))
|
||||
if (GameObject *pKTTrigger = me->GetMap()->GetGameObject(KTTriggerGUID))
|
||||
{
|
||||
pKTTrigger->ResetDoorOrButton();
|
||||
pKTTrigger->SetPhaseMask(1, true);
|
||||
@@ -301,7 +301,7 @@ struct boss_kelthuzadAI : public BossAI
|
||||
|
||||
for (uint8 i = 0; i <= 3; ++i)
|
||||
{
|
||||
if (GameObject *pPortal = m_creature->GetMap()->GetGameObject(PortalsGUID[i]))
|
||||
if (GameObject *pPortal = me->GetMap()->GetGameObject(PortalsGUID[i]))
|
||||
{
|
||||
if (!((pPortal->getLootState() == GO_READY) || (pPortal->getLootState() == GO_NOT_READY)))
|
||||
pPortal->ResetDoorOrButton();
|
||||
@@ -318,13 +318,13 @@ struct boss_kelthuzadAI : public BossAI
|
||||
|
||||
void KilledUnit()
|
||||
{
|
||||
DoScriptText(RAND(SAY_SLAY_1,SAY_SLAY_2), m_creature);
|
||||
DoScriptText(RAND(SAY_SLAY_1,SAY_SLAY_2), me);
|
||||
}
|
||||
|
||||
void JustDied(Unit* Killer)
|
||||
{
|
||||
_JustDied();
|
||||
DoScriptText(SAY_DEATH, m_creature);
|
||||
DoScriptText(SAY_DEATH, me);
|
||||
|
||||
std::map<uint64, float>::const_iterator itr;
|
||||
for (itr = chained.begin(); itr != chained.end(); ++itr)
|
||||
@@ -343,7 +343,7 @@ struct boss_kelthuzadAI : public BossAI
|
||||
FindGameObjects();
|
||||
for (uint8 i = 0; i <= 3; ++i)
|
||||
{
|
||||
if (GameObject *pPortal = m_creature->GetMap()->GetGameObject(PortalsGUID[i]))
|
||||
if (GameObject *pPortal = me->GetMap()->GetGameObject(PortalsGUID[i]))
|
||||
pPortal->ResetDoorOrButton();
|
||||
}
|
||||
DoCast(me, SPELL_KELTHUZAD_CHANNEL, false);
|
||||
@@ -406,7 +406,7 @@ struct boss_kelthuzadAI : public BossAI
|
||||
events.PopEvent();
|
||||
break;
|
||||
case EVENT_TRIGGER:
|
||||
if (GameObject *pKTTrigger = m_creature->GetMap()->GetGameObject(KTTriggerGUID))
|
||||
if (GameObject *pKTTrigger = me->GetMap()->GetGameObject(KTTriggerGUID))
|
||||
pKTTrigger->SetPhaseMask(2, true);
|
||||
events.PopEvent();
|
||||
break;
|
||||
@@ -441,14 +441,14 @@ struct boss_kelthuzadAI : public BossAI
|
||||
if (HealthBelowPct(45))
|
||||
{
|
||||
Phase = 3 ;
|
||||
DoScriptText(SAY_REQUEST_AID, m_creature);
|
||||
DoScriptText(SAY_REQUEST_AID, me);
|
||||
//here Lich King should respond to KelThuzad but I don't know which Creature to make talk
|
||||
//so for now just make Kelthuzad says it.
|
||||
DoScriptText(SAY_ANSWER_REQUEST, m_creature);
|
||||
DoScriptText(SAY_ANSWER_REQUEST, me);
|
||||
|
||||
for (uint8 i = 0; i <= 3; ++i)
|
||||
{
|
||||
if (GameObject *pPortal = m_creature->GetMap()->GetGameObject(PortalsGUID[i]))
|
||||
if (GameObject *pPortal = me->GetMap()->GetGameObject(PortalsGUID[i]))
|
||||
{
|
||||
if (pPortal->getLootState() == GO_READY)
|
||||
pPortal->UseDoorOrButton();
|
||||
@@ -529,7 +529,7 @@ struct boss_kelthuzadAI : public BossAI
|
||||
if (urand(0,1))
|
||||
player->CastSpell(pTarget, SPELL_MOONFIRE, false);
|
||||
else
|
||||
player->CastSpell(m_creature, SPELL_LIFEBLOOM, false);
|
||||
player->CastSpell(me, SPELL_LIFEBLOOM, false);
|
||||
break;
|
||||
case CLASS_HUNTER:
|
||||
player->CastSpell(pTarget, RAND(SPELL_MULTI_SHOT, SPELL_VOLLEY), false);
|
||||
@@ -547,19 +547,19 @@ struct boss_kelthuzadAI : public BossAI
|
||||
if (urand(0,1))
|
||||
player->CastSpell(pTarget, SPELL_HAMMER_OF_JUSTICE, false);
|
||||
else
|
||||
player->CastSpell(m_creature, SPELL_HOLY_SHOCK, false);
|
||||
player->CastSpell(me, SPELL_HOLY_SHOCK, false);
|
||||
break;
|
||||
case CLASS_PRIEST:
|
||||
if (urand(0,1))
|
||||
player->CastSpell(pTarget, SPELL_VAMPIRIC_TOUCH, false);
|
||||
else
|
||||
player->CastSpell(m_creature, SPELL_RENEW, false);
|
||||
player->CastSpell(me, SPELL_RENEW, false);
|
||||
break;
|
||||
case CLASS_SHAMAN:
|
||||
if (urand(0,1))
|
||||
player->CastSpell(pTarget, SPELL_EARTH_SHOCK, false);
|
||||
else
|
||||
player->CastSpell(m_creature, SPELL_HEALING_WAVE, false);
|
||||
player->CastSpell(me, SPELL_HEALING_WAVE, false);
|
||||
break;
|
||||
case CLASS_ROGUE:
|
||||
player->CastSpell(pTarget, RAND(SPELL_HEMORRHAGE, SPELL_MUTILATE), false);
|
||||
@@ -615,7 +615,7 @@ struct boss_kelthuzadAI : public BossAI
|
||||
if (Unit *pTarget = SelectTarget(SELECT_TARGET_RANDOM, RAID_MODE(1,0), 0, true))
|
||||
DoCast(pTarget, SPELL_FROST_BLAST);
|
||||
if (rand()%2)
|
||||
DoScriptText(SAY_FROST_BLAST, m_creature);
|
||||
DoScriptText(SAY_FROST_BLAST, me);
|
||||
events.RepeatEvent(urand(30000,90000));
|
||||
break;
|
||||
default:
|
||||
|
||||
@@ -71,7 +71,7 @@ struct boss_patchwerkAI : public BossAI
|
||||
AchievementEntry const *AchievMakeQuickWerkOfHim = GetAchievementStore()->LookupEntry(ACHIEVEMENT_MAKE_QUICK_WERK_OF_HIM);
|
||||
if (AchievMakeQuickWerkOfHim)
|
||||
{
|
||||
Map *pMap = m_creature->GetMap();
|
||||
Map *pMap = me->GetMap();
|
||||
if (pMap && pMap->IsDungeon())
|
||||
{
|
||||
Map::PlayerList const &players = pMap->GetPlayers();
|
||||
@@ -129,12 +129,12 @@ struct boss_patchwerkAI : public BossAI
|
||||
break;
|
||||
}
|
||||
case EVENT_BERSERK:
|
||||
DoCast(m_creature, SPELL_BERSERK, true);
|
||||
DoScriptText(EMOTE_BERSERK, m_creature);
|
||||
DoCast(me, SPELL_BERSERK, true);
|
||||
DoScriptText(EMOTE_BERSERK, me);
|
||||
events.ScheduleEvent(EVENT_SLIME, 2000);
|
||||
break;
|
||||
case EVENT_SLIME:
|
||||
DoCast(m_creature->getVictim(), SPELL_SLIME_BOLT);
|
||||
DoCast(me->getVictim(), SPELL_SLIME_BOLT);
|
||||
events.ScheduleEvent(EVENT_SLIME, 2000);
|
||||
break;
|
||||
}
|
||||
@@ -142,8 +142,8 @@ struct boss_patchwerkAI : public BossAI
|
||||
|
||||
if (!Enraged && HealthBelowPct(5))
|
||||
{
|
||||
DoCast(m_creature, SPELL_FRENZY, true);
|
||||
DoScriptText(EMOTE_ENRAGE, m_creature);
|
||||
DoCast(me, SPELL_FRENZY, true);
|
||||
DoScriptText(EMOTE_ENRAGE, me);
|
||||
Enraged = true;
|
||||
}
|
||||
|
||||
|
||||
@@ -82,7 +82,7 @@ struct boss_razuviousAI : public BossAI
|
||||
void EnterCombat(Unit *who)
|
||||
{
|
||||
_EnterCombat();
|
||||
DoPlaySoundToSet(m_creature, SOUND_AGGRO);
|
||||
DoPlaySoundToSet(me, SOUND_AGGRO);
|
||||
events.ScheduleEvent(EVENT_STRIKE, 30000);
|
||||
events.ScheduleEvent(EVENT_SHOUT, 25000);
|
||||
events.ScheduleEvent(EVENT_COMMAND, 40000);
|
||||
|
||||
@@ -75,7 +75,7 @@ struct boss_sapphironAI : public BossAI
|
||||
boss_sapphironAI(Creature* c) : BossAI(c, BOSS_SAPPHIRON)
|
||||
, phase(PHASE_NULL)
|
||||
{
|
||||
pMap = m_creature->GetMap();
|
||||
pMap = me->GetMap();
|
||||
}
|
||||
|
||||
Phases phase;
|
||||
@@ -238,7 +238,7 @@ struct boss_sapphironAI : public BossAI
|
||||
switch(eventId)
|
||||
{
|
||||
case EVENT_BERSERK:
|
||||
DoScriptText(EMOTE_ENRAGE, m_creature);
|
||||
DoScriptText(EMOTE_ENRAGE, me);
|
||||
DoCast(me, SPELL_BERSERK);
|
||||
return;
|
||||
case EVENT_CLEAVE:
|
||||
|
||||
@@ -105,11 +105,11 @@ struct boss_thaddiusAI : public BossAI
|
||||
// Moreover, the adds may not yet be spawn. So just track down the status if mob is spawn
|
||||
// and each mob will send its status at reset (meaning that it is alive)
|
||||
checkFeugenAlive = false;
|
||||
if (Creature *pFeugen = m_creature->GetCreature(*m_creature, instance->GetData64(DATA_FEUGEN)))
|
||||
if (Creature *pFeugen = me->GetCreature(*me, instance->GetData64(DATA_FEUGEN)))
|
||||
checkFeugenAlive = pFeugen->isAlive();
|
||||
|
||||
checkStalaggAlive = false;
|
||||
if (Creature *pStalagg = m_creature->GetCreature(*m_creature, instance->GetData64(DATA_STALAGG)))
|
||||
if (Creature *pStalagg = me->GetCreature(*me, instance->GetData64(DATA_STALAGG)))
|
||||
checkStalaggAlive = pStalagg->isAlive();
|
||||
|
||||
if (!checkFeugenAlive && !checkStalaggAlive)
|
||||
@@ -198,13 +198,13 @@ struct boss_thaddiusAI : public BossAI
|
||||
if (!checkStalaggAlive)
|
||||
{
|
||||
if (instance)
|
||||
if (Creature *pStalagg = m_creature->GetCreature(*m_creature, instance->GetData64(DATA_STALAGG)))
|
||||
if (Creature *pStalagg = me->GetCreature(*me, instance->GetData64(DATA_STALAGG)))
|
||||
pStalagg->Respawn();
|
||||
}
|
||||
else
|
||||
{
|
||||
if (instance)
|
||||
if (Creature *pFeugen = m_creature->GetCreature(*m_creature, instance->GetData64(DATA_FEUGEN)))
|
||||
if (Creature *pFeugen = me->GetCreature(*me, instance->GetData64(DATA_FEUGEN)))
|
||||
pFeugen->Respawn();
|
||||
}
|
||||
}
|
||||
@@ -263,7 +263,7 @@ struct mob_stalaggAI : public ScriptedAI
|
||||
void Reset()
|
||||
{
|
||||
if (pInstance)
|
||||
if (Creature *pThaddius = m_creature->GetCreature(*m_creature, pInstance->GetData64(DATA_THADDIUS)))
|
||||
if (Creature *pThaddius = me->GetCreature(*me, pInstance->GetData64(DATA_THADDIUS)))
|
||||
if (pThaddius->AI())
|
||||
pThaddius->AI()->DoAction(ACTION_STALAGG_RESET);
|
||||
powerSurgeTimer = urand(20000,25000);
|
||||
@@ -278,7 +278,7 @@ struct mob_stalaggAI : public ScriptedAI
|
||||
void JustDied(Unit *killer)
|
||||
{
|
||||
if (pInstance)
|
||||
if (Creature *pThaddius = m_creature->GetCreature(*m_creature, pInstance->GetData64(DATA_THADDIUS)))
|
||||
if (Creature *pThaddius = me->GetCreature(*me, pInstance->GetData64(DATA_THADDIUS)))
|
||||
if (pThaddius->AI())
|
||||
pThaddius->AI()->DoAction(ACTION_STALAGG_DIED);
|
||||
}
|
||||
@@ -290,9 +290,9 @@ struct mob_stalaggAI : public ScriptedAI
|
||||
|
||||
if (magneticPullTimer <= uiDiff)
|
||||
{
|
||||
if (Creature *pFeugen = m_creature->GetCreature(*m_creature, pInstance->GetData64(DATA_FEUGEN)))
|
||||
if (Creature *pFeugen = me->GetCreature(*me, pInstance->GetData64(DATA_FEUGEN)))
|
||||
{
|
||||
Unit* pStalaggVictim = m_creature->getVictim();
|
||||
Unit* pStalaggVictim = me->getVictim();
|
||||
Unit* pFeugenVictim = pFeugen->getVictim();
|
||||
|
||||
if (pFeugenVictim && pStalaggVictim)
|
||||
@@ -301,9 +301,9 @@ struct mob_stalaggAI : public ScriptedAI
|
||||
|
||||
// reset aggro to be sure that feugen will not follow the jump
|
||||
pFeugen->getThreatManager().modifyThreatPercent(pFeugenVictim, -100);
|
||||
pFeugenVictim->JumpTo(m_creature, 0.3f);
|
||||
pFeugenVictim->JumpTo(me, 0.3f);
|
||||
|
||||
m_creature->getThreatManager().modifyThreatPercent(pStalaggVictim, -100);
|
||||
me->getThreatManager().modifyThreatPercent(pStalaggVictim, -100);
|
||||
pStalaggVictim->JumpTo(pFeugen, 0.3f);
|
||||
}
|
||||
}
|
||||
@@ -314,7 +314,7 @@ struct mob_stalaggAI : public ScriptedAI
|
||||
|
||||
if (powerSurgeTimer <= uiDiff)
|
||||
{
|
||||
DoCast(m_creature, RAID_MODE(SPELL_POWERSURGE, H_SPELL_POWERSURGE));
|
||||
DoCast(me, RAID_MODE(SPELL_POWERSURGE, H_SPELL_POWERSURGE));
|
||||
powerSurgeTimer = urand(15000,20000);
|
||||
} else powerSurgeTimer -= uiDiff;
|
||||
|
||||
@@ -341,7 +341,7 @@ struct mob_feugenAI : public ScriptedAI
|
||||
void Reset()
|
||||
{
|
||||
if (pInstance)
|
||||
if (Creature *pThaddius = m_creature->GetCreature(*m_creature, pInstance->GetData64(DATA_THADDIUS)))
|
||||
if (Creature *pThaddius = me->GetCreature(*me, pInstance->GetData64(DATA_THADDIUS)))
|
||||
if (pThaddius->AI())
|
||||
pThaddius->AI()->DoAction(ACTION_FEUGEN_RESET);
|
||||
staticFieldTimer = 5000;
|
||||
@@ -355,7 +355,7 @@ struct mob_feugenAI : public ScriptedAI
|
||||
void JustDied(Unit *killer)
|
||||
{
|
||||
if (pInstance)
|
||||
if (Creature *pThaddius = m_creature->GetCreature(*m_creature, pInstance->GetData64(DATA_THADDIUS)))
|
||||
if (Creature *pThaddius = me->GetCreature(*me, pInstance->GetData64(DATA_THADDIUS)))
|
||||
if (pThaddius->AI())
|
||||
pThaddius->AI()->DoAction(ACTION_FEUGEN_DIED);
|
||||
}
|
||||
@@ -367,7 +367,7 @@ struct mob_feugenAI : public ScriptedAI
|
||||
|
||||
if (staticFieldTimer <= uiDiff)
|
||||
{
|
||||
DoCast(m_creature, RAID_MODE(SPELL_STATICFIELD, H_SPELL_STATICFIELD));
|
||||
DoCast(me, RAID_MODE(SPELL_STATICFIELD, H_SPELL_STATICFIELD));
|
||||
staticFieldTimer = 5000;
|
||||
} else staticFieldTimer -= uiDiff;
|
||||
|
||||
|
||||
@@ -98,11 +98,11 @@ struct boss_malygosAI : public ScriptedAI
|
||||
void EnterCombat(Unit* who)
|
||||
{
|
||||
if (phase == 1)
|
||||
DoScriptText(SAY_PHASE1_AGGRO, m_creature);
|
||||
DoScriptText(SAY_PHASE1_AGGRO, me);
|
||||
if (phase == 2)
|
||||
DoScriptText(SAY_PHASE1_AGGRO, m_creature);
|
||||
DoScriptText(SAY_PHASE1_AGGRO, me);
|
||||
if (phase == 3)
|
||||
DoScriptText(SAY_PHASE1_AGGRO, m_creature);
|
||||
DoScriptText(SAY_PHASE1_AGGRO, me);
|
||||
}
|
||||
void AttackStart(Unit* who) {}
|
||||
void MoveInLineOfSight(Unit* who) {}
|
||||
@@ -113,7 +113,7 @@ struct boss_malygosAI : public ScriptedAI
|
||||
if (!UpdateVictim())
|
||||
return;
|
||||
|
||||
if ((m_creature->GetHealth()*100 / m_creature->GetMaxHealth()) <= 50){
|
||||
if ((me->GetHealth()*100 / me->GetMaxHealth()) <= 50){
|
||||
phase = 2;
|
||||
//spawn adds
|
||||
//set malygos unatackable untill all adds spawned dead
|
||||
@@ -124,19 +124,19 @@ struct boss_malygosAI : public ScriptedAI
|
||||
}
|
||||
void JustDied(Unit* killer)
|
||||
{
|
||||
DoScriptText(SAY_DEATH, m_creature);
|
||||
DoScriptText(SAY_DEATH, me);
|
||||
}
|
||||
void KilledUnit(Unit *victim)
|
||||
{
|
||||
if (victim == m_creature)
|
||||
if (victim == me)
|
||||
return;
|
||||
|
||||
if (phase == 1)
|
||||
DoScriptText(RAND(SAY_PHASE1_SLAY_1,SAY_PHASE1_SLAY_2,SAY_PHASE1_SLAY_3), m_creature);
|
||||
DoScriptText(RAND(SAY_PHASE1_SLAY_1,SAY_PHASE1_SLAY_2,SAY_PHASE1_SLAY_3), me);
|
||||
if (phase == 2)
|
||||
DoScriptText(RAND(SAY_PHASE2_SLAY_1,SAY_PHASE2_SLAY_2,SAY_PHASE2_SLAY_3), m_creature);
|
||||
DoScriptText(RAND(SAY_PHASE2_SLAY_1,SAY_PHASE2_SLAY_2,SAY_PHASE2_SLAY_3), me);
|
||||
if (phase == 3)
|
||||
DoScriptText(RAND(SAY_PHASE3_SLAY_1,SAY_PHASE3_SLAY_2,SAY_PHASE3_SLAY_3), m_creature);
|
||||
DoScriptText(RAND(SAY_PHASE3_SLAY_1,SAY_PHASE3_SLAY_2,SAY_PHASE3_SLAY_3), me);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@@ -88,7 +88,7 @@ struct boss_anomalusAI : public ScriptedAI
|
||||
|
||||
void EnterCombat(Unit* who)
|
||||
{
|
||||
DoScriptText(SAY_AGGRO, m_creature);
|
||||
DoScriptText(SAY_AGGRO, me);
|
||||
|
||||
if (pInstance)
|
||||
pInstance->SetData(DATA_ANOMALUS_EVENT, IN_PROGRESS);
|
||||
@@ -96,7 +96,7 @@ struct boss_anomalusAI : public ScriptedAI
|
||||
|
||||
void JustDied(Unit* killer)
|
||||
{
|
||||
DoScriptText(SAY_DEATH, m_creature);
|
||||
DoScriptText(SAY_DEATH, me);
|
||||
|
||||
if (pInstance)
|
||||
{
|
||||
@@ -111,21 +111,21 @@ struct boss_anomalusAI : public ScriptedAI
|
||||
if (!UpdateVictim())
|
||||
return;
|
||||
|
||||
if (m_creature->GetDistance(m_creature->GetHomePosition()) > 60.0f)
|
||||
if (me->GetDistance(me->GetHomePosition()) > 60.0f)
|
||||
{
|
||||
//Not blizzlike, hack to avoid an exploit
|
||||
EnterEvadeMode();
|
||||
return;
|
||||
}
|
||||
|
||||
if (m_creature->HasAura(SPELL_RIFT_SHIELD))
|
||||
if (me->HasAura(SPELL_RIFT_SHIELD))
|
||||
{
|
||||
if (uiChaoticRiftGUID)
|
||||
{
|
||||
Unit* Rift = Unit::GetUnit((*m_creature), uiChaoticRiftGUID);
|
||||
Unit* Rift = Unit::GetUnit((*me), uiChaoticRiftGUID);
|
||||
if (Rift && Rift->isDead())
|
||||
{
|
||||
m_creature->RemoveAurasDueToSpell(SPELL_RIFT_SHIELD);
|
||||
me->RemoveAurasDueToSpell(SPELL_RIFT_SHIELD);
|
||||
uiChaoticRiftGUID = 0;
|
||||
}
|
||||
return;
|
||||
@@ -136,16 +136,16 @@ struct boss_anomalusAI : public ScriptedAI
|
||||
if ((Phase == 0) && HealthBelowPct(50))
|
||||
{
|
||||
Phase = 1;
|
||||
DoScriptText(SAY_SHIELD, m_creature);
|
||||
DoCast(m_creature, SPELL_RIFT_SHIELD);
|
||||
Creature* Rift = m_creature->SummonCreature(MOB_CHAOTIC_RIFT, RiftLocation[urand(0,5)], TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 1*IN_MILISECONDS);
|
||||
DoScriptText(SAY_SHIELD, me);
|
||||
DoCast(me, SPELL_RIFT_SHIELD);
|
||||
Creature* Rift = me->SummonCreature(MOB_CHAOTIC_RIFT, RiftLocation[urand(0,5)], TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 1*IN_MILISECONDS);
|
||||
if (Rift)
|
||||
{
|
||||
//DoCast(Rift, SPELL_CHARGE_RIFT);
|
||||
if (Unit *pTarget = SelectUnit(SELECT_TARGET_RANDOM, 0))
|
||||
Rift->AI()->AttackStart(pTarget);
|
||||
uiChaoticRiftGUID = Rift->GetGUID();
|
||||
DoScriptText(SAY_RIFT , m_creature);
|
||||
DoScriptText(SAY_RIFT , me);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -189,15 +189,15 @@ struct mob_chaotic_riftAI : public Scripted_NoMovementAI
|
||||
{
|
||||
uiChaoticEnergyBurstTimer = 1*IN_MILISECONDS;
|
||||
uiSummonCrazedManaWraithTimer = 5*IN_MILISECONDS;
|
||||
//m_creature->SetDisplayId(25206); //For some reason in DB models for ally and horde are different.
|
||||
//me->SetDisplayId(25206); //For some reason in DB models for ally and horde are different.
|
||||
//Model for ally (1126) does not show auras. Horde model works perfect.
|
||||
//Set model to horde number
|
||||
DoCast(m_creature, SPELL_ARCANEFORM, false);
|
||||
DoCast(me, SPELL_ARCANEFORM, false);
|
||||
}
|
||||
|
||||
void JustDied(Unit *killer)
|
||||
{
|
||||
if (Creature* pAnomalus = Unit::GetCreature(*m_creature, pInstance ? pInstance->GetData64(DATA_ANOMALUS) : 0))
|
||||
if (Creature* pAnomalus = Unit::GetCreature(*me, pInstance ? pInstance->GetData64(DATA_ANOMALUS) : 0))
|
||||
CAST_AI(boss_anomalusAI,pAnomalus->AI())->bDeadChaoticRift = true;
|
||||
}
|
||||
|
||||
@@ -208,7 +208,7 @@ struct mob_chaotic_riftAI : public Scripted_NoMovementAI
|
||||
|
||||
if (uiChaoticEnergyBurstTimer <= diff)
|
||||
{
|
||||
Unit* pAnomalus = Unit::GetUnit(*m_creature, pInstance ? pInstance->GetData64(DATA_ANOMALUS) : 0);
|
||||
Unit* pAnomalus = Unit::GetUnit(*me, pInstance ? pInstance->GetData64(DATA_ANOMALUS) : 0);
|
||||
if (Unit *pTarget = SelectUnit(SELECT_TARGET_RANDOM, 0))
|
||||
if (pAnomalus && pAnomalus->HasAura(SPELL_RIFT_SHIELD))
|
||||
DoCast(pTarget, SPELL_CHARGED_CHAOTIC_ENERGY_BURST);
|
||||
@@ -219,11 +219,11 @@ struct mob_chaotic_riftAI : public Scripted_NoMovementAI
|
||||
|
||||
if (uiSummonCrazedManaWraithTimer <= diff)
|
||||
{
|
||||
Creature* Wraith = m_creature->SummonCreature(MOB_CRAZED_MANA_WRAITH, m_creature->GetPositionX()+1, m_creature->GetPositionY()+1, m_creature->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 1*IN_MILISECONDS);
|
||||
Creature* Wraith = me->SummonCreature(MOB_CRAZED_MANA_WRAITH, me->GetPositionX()+1, me->GetPositionY()+1, me->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 1*IN_MILISECONDS);
|
||||
if (Wraith)
|
||||
if (Unit *pTarget = SelectUnit(SELECT_TARGET_RANDOM, 0))
|
||||
Wraith->AI()->AttackStart(pTarget);
|
||||
Unit* Anomalus = Unit::GetUnit(*m_creature, pInstance ? pInstance->GetData64(DATA_ANOMALUS) : 0);
|
||||
Unit* Anomalus = Unit::GetUnit(*me, pInstance ? pInstance->GetData64(DATA_ANOMALUS) : 0);
|
||||
if (Anomalus && Anomalus->HasAura(SPELL_RIFT_SHIELD))
|
||||
uiSummonCrazedManaWraithTimer = 5*IN_MILISECONDS;
|
||||
else
|
||||
|
||||
@@ -78,7 +78,7 @@ struct boss_keristraszaAI : public ScriptedAI
|
||||
uiCheckIntenseColdTimer = 2*IN_MILISECONDS;
|
||||
bMoreThanTwoIntenseCold = false;
|
||||
|
||||
m_creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_STUNNED);
|
||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_STUNNED);
|
||||
|
||||
RemovePrison(CheckContainmentSpheres());
|
||||
|
||||
@@ -88,7 +88,7 @@ struct boss_keristraszaAI : public ScriptedAI
|
||||
|
||||
void EnterCombat(Unit* who)
|
||||
{
|
||||
DoScriptText(SAY_AGGRO, m_creature);
|
||||
DoScriptText(SAY_AGGRO, me);
|
||||
DoCastAOE(SPELL_INTENSE_COLD);
|
||||
|
||||
if (pInstance)
|
||||
@@ -97,7 +97,7 @@ struct boss_keristraszaAI : public ScriptedAI
|
||||
|
||||
void JustDied(Unit* killer)
|
||||
{
|
||||
DoScriptText(SAY_DEATH, m_creature);
|
||||
DoScriptText(SAY_DEATH, me);
|
||||
|
||||
if (pInstance)
|
||||
{
|
||||
@@ -109,7 +109,7 @@ struct boss_keristraszaAI : public ScriptedAI
|
||||
|
||||
void KilledUnit(Unit *victim)
|
||||
{
|
||||
DoScriptText(SAY_SLAY, m_creature);
|
||||
DoScriptText(SAY_SLAY, me);
|
||||
}
|
||||
|
||||
bool CheckContainmentSpheres(bool remove_prison = false)
|
||||
@@ -140,16 +140,16 @@ struct boss_keristraszaAI : public ScriptedAI
|
||||
{
|
||||
if (remove)
|
||||
{
|
||||
m_creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_OOC_NOT_ATTACKABLE);
|
||||
m_creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
||||
if (m_creature->HasAura(SPELL_FROZEN_PRISON))
|
||||
m_creature->RemoveAurasDueToSpell(SPELL_FROZEN_PRISON);
|
||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_OOC_NOT_ATTACKABLE);
|
||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
||||
if (me->HasAura(SPELL_FROZEN_PRISON))
|
||||
me->RemoveAurasDueToSpell(SPELL_FROZEN_PRISON);
|
||||
}
|
||||
else
|
||||
{
|
||||
m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_OOC_NOT_ATTACKABLE);
|
||||
m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
||||
DoCast(m_creature, SPELL_FROZEN_PRISON, false);
|
||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_OOC_NOT_ATTACKABLE);
|
||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
||||
DoCast(me, SPELL_FROZEN_PRISON, false);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -160,10 +160,10 @@ struct boss_keristraszaAI : public ScriptedAI
|
||||
|
||||
if (uiCheckIntenseColdTimer < diff && !bMoreThanTwoIntenseCold)
|
||||
{
|
||||
std::list<HostileReference*> ThreatList = m_creature->getThreatManager().getThreatList();
|
||||
std::list<HostileReference*> ThreatList = me->getThreatManager().getThreatList();
|
||||
for (std::list<HostileReference*>::const_iterator itr = ThreatList.begin(); itr != ThreatList.end(); ++itr)
|
||||
{
|
||||
Unit *pTarget = Unit::GetUnit(*m_creature, (*itr)->getUnitGuid());
|
||||
Unit *pTarget = Unit::GetUnit(*me, (*itr)->getUnitGuid());
|
||||
if (!pTarget || pTarget->GetTypeId() != TYPEID_PLAYER)
|
||||
continue;
|
||||
|
||||
@@ -179,28 +179,28 @@ struct boss_keristraszaAI : public ScriptedAI
|
||||
|
||||
if (!bEnrage && HealthBelowPct(25))
|
||||
{
|
||||
DoScriptText(SAY_ENRAGE, m_creature);
|
||||
DoCast(m_creature, SPELL_ENRAGE);
|
||||
DoScriptText(SAY_ENRAGE, me);
|
||||
DoCast(me, SPELL_ENRAGE);
|
||||
bEnrage = true;
|
||||
}
|
||||
|
||||
if (uiCrystalfireBreathTimer <= diff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(), SPELL_CRYSTALFIRE_BREATH);
|
||||
DoCast(me->getVictim(), SPELL_CRYSTALFIRE_BREATH);
|
||||
uiCrystalfireBreathTimer = 14*IN_MILISECONDS;
|
||||
} else uiCrystalfireBreathTimer -= diff;
|
||||
|
||||
if (uiTailSweepTimer <= diff)
|
||||
{
|
||||
DoCast(m_creature, SPELL_TAIL_SWEEP);
|
||||
DoCast(me, SPELL_TAIL_SWEEP);
|
||||
uiTailSweepTimer = 5*IN_MILISECONDS;
|
||||
} else uiTailSweepTimer -= diff;
|
||||
|
||||
if (uiCrystalChainsCrystalizeTimer <= diff)
|
||||
{
|
||||
DoScriptText(SAY_CRYSTAL_NOVA, m_creature);
|
||||
DoScriptText(SAY_CRYSTAL_NOVA, me);
|
||||
if (IsHeroic())
|
||||
DoCast(m_creature, SPELL_CRYSTALIZE);
|
||||
DoCast(me, SPELL_CRYSTALIZE);
|
||||
else if (Unit *pTarget = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true))
|
||||
DoCast(pTarget, SPELL_CRYSTAL_CHAINS);
|
||||
uiCrystalChainsCrystalizeTimer = DUNGEON_MODE(30*IN_MILISECONDS,11*IN_MILISECONDS);
|
||||
|
||||
@@ -102,8 +102,8 @@ struct boss_magus_telestraAI : public ScriptedAI
|
||||
bIsAchievementTimerRunning = false;
|
||||
bIsWaitingToAppear = false;
|
||||
|
||||
m_creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
||||
m_creature->SetVisibility(VISIBILITY_ON);
|
||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
||||
me->SetVisibility(VISIBILITY_ON);
|
||||
|
||||
if (pInstance)
|
||||
pInstance->SetData(DATA_MAGUS_TELESTRA_EVENT, NOT_STARTED);
|
||||
@@ -111,7 +111,7 @@ struct boss_magus_telestraAI : public ScriptedAI
|
||||
|
||||
void EnterCombat(Unit* who)
|
||||
{
|
||||
DoScriptText(SAY_AGGRO, m_creature);
|
||||
DoScriptText(SAY_AGGRO, me);
|
||||
|
||||
if (pInstance)
|
||||
pInstance->SetData(DATA_MAGUS_TELESTRA_EVENT, IN_PROGRESS);
|
||||
@@ -119,7 +119,7 @@ struct boss_magus_telestraAI : public ScriptedAI
|
||||
|
||||
void JustDied(Unit* killer)
|
||||
{
|
||||
DoScriptText(SAY_DEATH, m_creature);
|
||||
DoScriptText(SAY_DEATH, me);
|
||||
|
||||
if (pInstance)
|
||||
{
|
||||
@@ -131,12 +131,12 @@ struct boss_magus_telestraAI : public ScriptedAI
|
||||
|
||||
void KilledUnit(Unit *victim)
|
||||
{
|
||||
DoScriptText(SAY_KILL, m_creature);
|
||||
DoScriptText(SAY_KILL, me);
|
||||
}
|
||||
|
||||
uint64 SplitPersonality(uint32 entry)
|
||||
{
|
||||
if (Creature* Summoned = m_creature->SummonCreature(entry, m_creature->GetPositionX(), m_creature->GetPositionY(), m_creature->GetPositionZ(), m_creature->GetOrientation(), TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 1*IN_MILISECONDS))
|
||||
if (Creature* Summoned = me->SummonCreature(entry, me->GetPositionX(), me->GetPositionY(), me->GetPositionZ(), me->GetOrientation(), TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 1*IN_MILISECONDS))
|
||||
{
|
||||
switch (entry)
|
||||
{
|
||||
@@ -193,11 +193,11 @@ struct boss_magus_telestraAI : public ScriptedAI
|
||||
|
||||
if (bIsWaitingToAppear)
|
||||
{
|
||||
m_creature->StopMoving();
|
||||
m_creature->AttackStop();
|
||||
me->StopMoving();
|
||||
me->AttackStop();
|
||||
if (uiIsWaitingToAppearTimer <= diff)
|
||||
{
|
||||
m_creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
||||
bIsWaitingToAppear = false;
|
||||
} else uiIsWaitingToAppearTimer -= diff;
|
||||
return;
|
||||
@@ -211,10 +211,10 @@ struct boss_magus_telestraAI : public ScriptedAI
|
||||
{
|
||||
if (uiAchievementTimer <= ACHIEV_TIMER)
|
||||
uiAchievementProgress +=1;
|
||||
m_creature->GetMotionMaster()->Clear();
|
||||
m_creature->GetMap()->CreatureRelocation(m_creature, CenterOfRoom.GetPositionX(), CenterOfRoom.GetPositionY(), CenterOfRoom.GetPositionZ(), CenterOfRoom.GetOrientation());
|
||||
DoCast(m_creature, SPELL_TELESTRA_BACK);
|
||||
m_creature->SetVisibility(VISIBILITY_ON);
|
||||
me->GetMotionMaster()->Clear();
|
||||
me->GetMap()->CreatureRelocation(me, CenterOfRoom.GetPositionX(), CenterOfRoom.GetPositionY(), CenterOfRoom.GetPositionZ(), CenterOfRoom.GetOrientation());
|
||||
DoCast(me, SPELL_TELESTRA_BACK);
|
||||
me->SetVisibility(VISIBILITY_ON);
|
||||
if (Phase == 1)
|
||||
Phase = 2;
|
||||
if (Phase == 3)
|
||||
@@ -224,7 +224,7 @@ struct boss_magus_telestraAI : public ScriptedAI
|
||||
uiArcaneMagusGUID = 0;
|
||||
bIsWaitingToAppear = true;
|
||||
uiIsWaitingToAppearTimer = 4*IN_MILISECONDS;
|
||||
DoScriptText(SAY_MERGE, m_creature);
|
||||
DoScriptText(SAY_MERGE, me);
|
||||
bIsAchievementTimerRunning = false;
|
||||
uiAchievementTimer = 0;
|
||||
}
|
||||
@@ -235,34 +235,34 @@ struct boss_magus_telestraAI : public ScriptedAI
|
||||
if ((Phase == 0) && HealthBelowPct(50))
|
||||
{
|
||||
Phase = 1;
|
||||
m_creature->CastStop();
|
||||
m_creature->RemoveAllAuras();
|
||||
m_creature->SetVisibility(VISIBILITY_OFF);
|
||||
m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
||||
me->CastStop();
|
||||
me->RemoveAllAuras();
|
||||
me->SetVisibility(VISIBILITY_OFF);
|
||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
||||
uiFireMagusGUID = SplitPersonality(MOB_FIRE_MAGUS);
|
||||
uiFrostMagusGUID = SplitPersonality(MOB_FROST_MAGUS);
|
||||
uiArcaneMagusGUID = SplitPersonality(MOB_ARCANE_MAGUS);
|
||||
bFireMagusDead = false;
|
||||
bFrostMagusDead = false;
|
||||
bArcaneMagusDead = false;
|
||||
DoScriptText(RAND(SAY_SPLIT_1,SAY_SPLIT_2), m_creature);
|
||||
DoScriptText(RAND(SAY_SPLIT_1,SAY_SPLIT_2), me);
|
||||
return;
|
||||
}
|
||||
|
||||
if (IsHeroic() && (Phase == 2) && HealthBelowPct(10))
|
||||
{
|
||||
Phase = 3;
|
||||
m_creature->CastStop();
|
||||
m_creature->RemoveAllAuras();
|
||||
m_creature->SetVisibility(VISIBILITY_OFF);
|
||||
m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
||||
me->CastStop();
|
||||
me->RemoveAllAuras();
|
||||
me->SetVisibility(VISIBILITY_OFF);
|
||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
||||
uiFireMagusGUID = SplitPersonality(MOB_FIRE_MAGUS);
|
||||
uiFrostMagusGUID = SplitPersonality(MOB_FROST_MAGUS);
|
||||
uiArcaneMagusGUID = SplitPersonality(MOB_ARCANE_MAGUS);
|
||||
bFireMagusDead = false;
|
||||
bFrostMagusDead = false;
|
||||
bArcaneMagusDead = false;
|
||||
DoScriptText(RAND(SAY_SPLIT_1,SAY_SPLIT_2), m_creature);
|
||||
DoScriptText(RAND(SAY_SPLIT_1,SAY_SPLIT_2), me);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -289,7 +289,7 @@ struct boss_magus_telestraAI : public ScriptedAI
|
||||
|
||||
if (uiGravityWellTimer <= diff)
|
||||
{
|
||||
if (Unit *pTarget = m_creature->getVictim())
|
||||
if (Unit *pTarget = me->getVictim())
|
||||
{
|
||||
DoCast(pTarget, SPELL_GRAVITY_WELL);
|
||||
uiCooldown = 6*IN_MILISECONDS;
|
||||
|
||||
@@ -88,7 +88,7 @@ struct boss_ormorokAI : public ScriptedAI
|
||||
|
||||
void EnterCombat(Unit* who)
|
||||
{
|
||||
DoScriptText(SAY_AGGRO, m_creature);
|
||||
DoScriptText(SAY_AGGRO, me);
|
||||
|
||||
if (pInstance)
|
||||
pInstance->SetData(DATA_ORMOROK_EVENT, IN_PROGRESS);
|
||||
@@ -96,7 +96,7 @@ struct boss_ormorokAI : public ScriptedAI
|
||||
|
||||
void JustDied(Unit* killer)
|
||||
{
|
||||
DoScriptText(SAY_DEATH, m_creature);
|
||||
DoScriptText(SAY_DEATH, me);
|
||||
|
||||
if (pInstance)
|
||||
pInstance->SetData(DATA_ORMOROK_EVENT, DONE);
|
||||
@@ -104,7 +104,7 @@ struct boss_ormorokAI : public ScriptedAI
|
||||
|
||||
void KilledUnit(Unit *victim)
|
||||
{
|
||||
DoScriptText(SAY_KILL, m_creature);
|
||||
DoScriptText(SAY_KILL, me);
|
||||
}
|
||||
|
||||
void UpdateAI(const uint32 diff)
|
||||
@@ -125,47 +125,47 @@ struct boss_ormorokAI : public ScriptedAI
|
||||
fSpikeXY[3][0] = fBaseX-(SPIKE_DISTANCE*uiCrystalSpikesCount*cos(fBaseO-(M_PI/2)));
|
||||
fSpikeXY[3][1] = fBaseY-(SPIKE_DISTANCE*uiCrystalSpikesCount*sin(fBaseO-(M_PI/2)));
|
||||
for (uint8 i = 0; i < 4; ++i)
|
||||
Creature* Spike = m_creature->SummonCreature(MOB_CRYSTAL_SPIKE, fSpikeXY[i][0], fSpikeXY[i][1], fBaseZ, 0, TEMPSUMMON_TIMED_DESPAWN, 7*IN_MILISECONDS);
|
||||
Creature* Spike = me->SummonCreature(MOB_CRYSTAL_SPIKE, fSpikeXY[i][0], fSpikeXY[i][1], fBaseZ, 0, TEMPSUMMON_TIMED_DESPAWN, 7*IN_MILISECONDS);
|
||||
if (++uiCrystalSpikesCount >= 13)
|
||||
bCrystalSpikes = false;
|
||||
uiCrystalSpikesTimer2 = 200;
|
||||
} else uiCrystalSpikesTimer2 -= diff;
|
||||
|
||||
if (!bFrenzy && (m_creature->GetHealth() < m_creature->GetMaxHealth() * 0.25))
|
||||
if (!bFrenzy && (me->GetHealth() < me->GetMaxHealth() * 0.25))
|
||||
{
|
||||
DoCast(m_creature, SPELL_FRENZY);
|
||||
DoCast(me, SPELL_FRENZY);
|
||||
bFrenzy = true;
|
||||
}
|
||||
|
||||
if (uiTrampleTimer <= diff)
|
||||
{
|
||||
DoCast(m_creature, SPELL_TRAMPLE);
|
||||
DoCast(me, SPELL_TRAMPLE);
|
||||
uiTrampleTimer = 10*IN_MILISECONDS;
|
||||
} else uiTrampleTimer -= diff;
|
||||
|
||||
if (uiSpellReflectionTimer <= diff)
|
||||
{
|
||||
DoScriptText(SAY_REFLECT, m_creature);
|
||||
DoCast(m_creature, SPELL_SPELL_REFLECTION);
|
||||
DoScriptText(SAY_REFLECT, me);
|
||||
DoCast(me, SPELL_SPELL_REFLECTION);
|
||||
uiSpellReflectionTimer = 30*IN_MILISECONDS;
|
||||
} else uiSpellReflectionTimer -= diff;
|
||||
|
||||
if (uiCrystalSpikesTimer <= diff)
|
||||
{
|
||||
DoScriptText(SAY_CRYSTAL_SPIKES, m_creature);
|
||||
DoScriptText(SAY_CRYSTAL_SPIKES, me);
|
||||
bCrystalSpikes = true;
|
||||
uiCrystalSpikesCount = 1;
|
||||
uiCrystalSpikesTimer2 = 0;
|
||||
fBaseX = m_creature->GetPositionX();
|
||||
fBaseY = m_creature->GetPositionY();
|
||||
fBaseZ = m_creature->GetPositionZ();
|
||||
fBaseO = m_creature->GetOrientation();
|
||||
fBaseX = me->GetPositionX();
|
||||
fBaseY = me->GetPositionY();
|
||||
fBaseZ = me->GetPositionZ();
|
||||
fBaseO = me->GetOrientation();
|
||||
uiCrystalSpikesTimer = 20*IN_MILISECONDS;
|
||||
} else uiCrystalSpikesTimer -= diff;
|
||||
|
||||
if (IsHeroic() && (uiSummonCrystallineTanglerTimer <= diff))
|
||||
{
|
||||
Creature* Crystalline_Tangler = m_creature->SummonCreature(MOB_CRYSTALLINE_TANGLER, m_creature->GetPositionX(), m_creature->GetPositionY(), m_creature->GetPositionZ(), m_creature->GetOrientation(), TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 1000);
|
||||
Creature* Crystalline_Tangler = me->SummonCreature(MOB_CRYSTALLINE_TANGLER, me->GetPositionX(), me->GetPositionY(), me->GetPositionZ(), me->GetOrientation(), TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 1000);
|
||||
if (Crystalline_Tangler)
|
||||
{
|
||||
Unit *pTarget = NULL;
|
||||
@@ -179,10 +179,10 @@ struct boss_ormorokAI : public ScriptedAI
|
||||
case 3: Healer = CLASS_DRUID; break;
|
||||
case 4: Healer = CLASS_SHAMAN; break;
|
||||
}
|
||||
std::list<HostileReference*>::const_iterator i = m_creature->getThreatManager().getThreatList().begin();
|
||||
for (; i != m_creature->getThreatManager().getThreatList().end(); ++i)
|
||||
std::list<HostileReference*>::const_iterator i = me->getThreatManager().getThreatList().begin();
|
||||
for (; i != me->getThreatManager().getThreatList().end(); ++i)
|
||||
{
|
||||
Unit* pTemp = Unit::GetUnit((*m_creature),(*i)->getUnitGuid());
|
||||
Unit* pTemp = Unit::GetUnit((*me),(*i)->getUnitGuid());
|
||||
if (pTemp && pTemp->GetTypeId() == TYPEID_PLAYER && pTemp->getClass() == Healer)
|
||||
{
|
||||
pTarget = pTemp;
|
||||
@@ -226,13 +226,13 @@ struct mob_crystal_spikeAI : public Scripted_NoMovementAI
|
||||
{
|
||||
if (SpellCrystalSpikePrevisualTimer <= diff)
|
||||
{
|
||||
DoCast(m_creature, SPELL_CRYSTAL_SPIKE_PREVISUAL);
|
||||
DoCast(me, SPELL_CRYSTAL_SPIKE_PREVISUAL);
|
||||
SpellCrystalSpikePrevisualTimer = 10*IN_MILISECONDS;
|
||||
} else SpellCrystalSpikePrevisualTimer -= diff;
|
||||
|
||||
if (SpellCrystalSpikeDamageTimer <= diff)
|
||||
{
|
||||
DoCast(m_creature, SPELL_CRYSTALL_SPIKE_DAMAGE);
|
||||
DoCast(me, SPELL_CRYSTALL_SPIKE_DAMAGE);
|
||||
SpellCrystalSpikeDamageTimer = 10*IN_MILISECONDS;
|
||||
} else SpellCrystalSpikeDamageTimer -= diff;
|
||||
}
|
||||
@@ -253,9 +253,9 @@ struct mob_crystalline_tanglerAI : public ScriptedAI
|
||||
{
|
||||
if (uiRootsTimer <= diff)
|
||||
{
|
||||
if (m_creature->IsWithinDist(m_creature->getVictim(), 5.0f, false))
|
||||
if (me->IsWithinDist(me->getVictim(), 5.0f, false))
|
||||
{
|
||||
DoCast(m_creature->getVictim(), SPELL_ROOTS);
|
||||
DoCast(me->getVictim(), SPELL_ROOTS);
|
||||
uiRootsTimer = 15*IN_MILISECONDS;
|
||||
}
|
||||
} else uiRootsTimer -= diff;
|
||||
|
||||
@@ -30,7 +30,7 @@ struct boss_commander_stoutbeardAI : public ScriptedAI
|
||||
void Reset() {}
|
||||
void EnterCombat(Unit* who)
|
||||
{
|
||||
DoScriptText(SAY_AGGRO, m_creature);
|
||||
DoScriptText(SAY_AGGRO, me);
|
||||
}
|
||||
void AttackStart(Unit* who) {}
|
||||
void MoveInLineOfSight(Unit* who) {}
|
||||
@@ -44,7 +44,7 @@ struct boss_commander_stoutbeardAI : public ScriptedAI
|
||||
}
|
||||
void JustDied(Unit* killer)
|
||||
{
|
||||
DoScriptText(SAY_DEATH, m_creature);
|
||||
DoScriptText(SAY_DEATH, me);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@@ -76,7 +76,7 @@ struct boss_drakosAI : public ScriptedAI
|
||||
|
||||
void EnterCombat(Unit* who)
|
||||
{
|
||||
DoScriptText(SAY_AGGRO, m_creature);
|
||||
DoScriptText(SAY_AGGRO, me);
|
||||
|
||||
if (pInstance)
|
||||
pInstance->SetData(DATA_DRAKOS_EVENT, IN_PROGRESS);
|
||||
@@ -96,11 +96,11 @@ struct boss_drakosAI : public ScriptedAI
|
||||
{
|
||||
if (bPostPull)
|
||||
{
|
||||
m_creature->SummonCreature(NPC_UNSTABLE_SPHERE, m_creature->GetPositionX(), m_creature->GetPositionY(), m_creature->GetPositionZ());
|
||||
m_creature->SummonCreature(NPC_UNSTABLE_SPHERE, m_creature->GetPositionX(), m_creature->GetPositionY(), m_creature->GetPositionZ());
|
||||
me->SummonCreature(NPC_UNSTABLE_SPHERE, me->GetPositionX(), me->GetPositionY(), me->GetPositionZ());
|
||||
me->SummonCreature(NPC_UNSTABLE_SPHERE, me->GetPositionX(), me->GetPositionY(), me->GetPositionZ());
|
||||
}
|
||||
else
|
||||
m_creature->SummonCreature(NPC_UNSTABLE_SPHERE, m_creature->GetPositionX(), m_creature->GetPositionY(), m_creature->GetPositionZ());
|
||||
me->SummonCreature(NPC_UNSTABLE_SPHERE, me->GetPositionX(), me->GetPositionY(), me->GetPositionZ());
|
||||
uiBombSummonTimer = 2*IN_MILISECONDS;
|
||||
} else uiBombSummonTimer -= diff;
|
||||
|
||||
@@ -121,7 +121,7 @@ struct boss_drakosAI : public ScriptedAI
|
||||
}
|
||||
else
|
||||
{
|
||||
DoScriptText(RAND(SAY_PULL_1,SAY_PULL_2,SAY_PULL_3,SAY_PULL_4), m_creature);
|
||||
DoScriptText(RAND(SAY_PULL_1,SAY_PULL_2,SAY_PULL_3,SAY_PULL_4), me);
|
||||
DoCast(SPELL_MAGIC_PULL);
|
||||
uiMagicPullTimer = 2*IN_MILISECONDS;
|
||||
bIsPulling = true;
|
||||
@@ -137,7 +137,7 @@ struct boss_drakosAI : public ScriptedAI
|
||||
|
||||
if (uiStompTimer < diff)
|
||||
{
|
||||
DoScriptText(RAND(SAY_STOMP_1,SAY_STOMP_2,SAY_STOMP_3), m_creature);
|
||||
DoScriptText(RAND(SAY_STOMP_1,SAY_STOMP_2,SAY_STOMP_3), me);
|
||||
DoCast(SPELL_THUNDERING_STOMP);
|
||||
uiStompTimer = urand(15*IN_MILISECONDS, 18*IN_MILISECONDS);
|
||||
} else uiStompTimer -= diff ;
|
||||
@@ -146,14 +146,14 @@ struct boss_drakosAI : public ScriptedAI
|
||||
}
|
||||
void JustDied(Unit* killer)
|
||||
{
|
||||
DoScriptText(SAY_DEATH, m_creature);
|
||||
DoScriptText(SAY_DEATH, me);
|
||||
|
||||
if (pInstance)
|
||||
pInstance->SetData(DATA_DRAKOS_EVENT, DONE);
|
||||
}
|
||||
void KilledUnit(Unit *victim)
|
||||
{
|
||||
DoScriptText(RAND(SAY_KILL_1,SAY_KILL_2,SAY_KILL_3), m_creature);
|
||||
DoScriptText(RAND(SAY_KILL_1,SAY_KILL_2,SAY_KILL_3), me);
|
||||
}
|
||||
};
|
||||
|
||||
@@ -171,12 +171,12 @@ struct npc_unstable_sphereAI : public ScriptedAI
|
||||
|
||||
void Reset()
|
||||
{
|
||||
m_creature->SetReactState(REACT_PASSIVE) ;
|
||||
m_creature->GetMotionMaster()->MoveRandom(40.0f);
|
||||
m_creature->SetSpeed(MOVE_RUN, 2, true);
|
||||
m_creature->setFaction(14);
|
||||
m_creature->AddAura(SPELL_UNSTABLE_SPHERE_PASSIVE, m_creature);
|
||||
m_creature->AddAura(SPELL_UNSTABLE_SPHERE_TIMER, m_creature);
|
||||
me->SetReactState(REACT_PASSIVE) ;
|
||||
me->GetMotionMaster()->MoveRandom(40.0f);
|
||||
me->SetSpeed(MOVE_RUN, 2, true);
|
||||
me->setFaction(14);
|
||||
me->AddAura(SPELL_UNSTABLE_SPHERE_PASSIVE, me);
|
||||
me->AddAura(SPELL_UNSTABLE_SPHERE_TIMER, me);
|
||||
uiPulseTimer = 3*IN_MILISECONDS;
|
||||
uiDeathTimer = 19*IN_MILISECONDS;
|
||||
}
|
||||
@@ -190,7 +190,7 @@ struct npc_unstable_sphereAI : public ScriptedAI
|
||||
} else uiPulseTimer -= diff;
|
||||
|
||||
if (uiDeathTimer < diff)
|
||||
m_creature->DisappearAndDie();
|
||||
me->DisappearAndDie();
|
||||
else uiDeathTimer -= diff;
|
||||
}
|
||||
};
|
||||
|
||||
@@ -61,7 +61,7 @@ struct boss_uromAI : public ScriptedAI
|
||||
}
|
||||
void EnterCombat(Unit* who)
|
||||
{
|
||||
DoScriptText(SAY_AGGRO, m_creature);
|
||||
DoScriptText(SAY_AGGRO, me);
|
||||
|
||||
if (pInstance)
|
||||
pInstance->SetData(DATA_UROM_EVENT, IN_PROGRESS);
|
||||
@@ -79,16 +79,16 @@ struct boss_uromAI : public ScriptedAI
|
||||
}
|
||||
void JustDied(Unit* killer)
|
||||
{
|
||||
DoScriptText(SAY_DEATH, m_creature);
|
||||
DoScriptText(SAY_DEATH, me);
|
||||
|
||||
if (pInstance)
|
||||
pInstance->SetData(DATA_UROM_EVENT, DONE);
|
||||
}
|
||||
void KilledUnit(Unit *victim)
|
||||
{
|
||||
if (victim == m_creature)
|
||||
if (victim == me)
|
||||
return;
|
||||
DoScriptText(RAND(SAY_KILL_1,SAY_KILL_2,SAY_KILL_3), m_creature);
|
||||
DoScriptText(RAND(SAY_KILL_1,SAY_KILL_2,SAY_KILL_3), me);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@@ -59,7 +59,7 @@ struct boss_varosAI : public ScriptedAI
|
||||
}
|
||||
void EnterCombat(Unit* who)
|
||||
{
|
||||
DoScriptText(SAY_AGGRO, m_creature);
|
||||
DoScriptText(SAY_AGGRO, me);
|
||||
|
||||
if (pInstance)
|
||||
pInstance->SetData(DATA_VAROS_EVENT, IN_PROGRESS);
|
||||
@@ -76,16 +76,16 @@ struct boss_varosAI : public ScriptedAI
|
||||
}
|
||||
void JustDied(Unit* killer)
|
||||
{
|
||||
DoScriptText(SAY_DEATH, m_creature);
|
||||
DoScriptText(SAY_DEATH, me);
|
||||
|
||||
if (pInstance)
|
||||
pInstance->SetData(DATA_VAROS_EVENT, DONE);
|
||||
}
|
||||
void KilledUnit(Unit *victim)
|
||||
{
|
||||
if (victim == m_creature)
|
||||
if (victim == me)
|
||||
return;
|
||||
DoScriptText(RAND(SAY_KILL_1,SAY_KILL_2), m_creature);
|
||||
DoScriptText(RAND(SAY_KILL_1,SAY_KILL_2), me);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@@ -258,10 +258,10 @@ struct boss_sartharionAI : public ScriptedAI
|
||||
m_bHasCalledShadron = false;
|
||||
m_bHasCalledVesperon = false;
|
||||
|
||||
if (m_creature->HasAura(SPELL_TWILIGHT_REVENGE))
|
||||
m_creature->RemoveAurasDueToSpell(SPELL_TWILIGHT_REVENGE);
|
||||
if (me->HasAura(SPELL_TWILIGHT_REVENGE))
|
||||
me->RemoveAurasDueToSpell(SPELL_TWILIGHT_REVENGE);
|
||||
|
||||
m_creature->ResetLootMode();
|
||||
me->ResetLootMode();
|
||||
|
||||
achievProgress = 0;
|
||||
}
|
||||
@@ -274,7 +274,7 @@ struct boss_sartharionAI : public ScriptedAI
|
||||
|
||||
void EnterCombat(Unit* pWho)
|
||||
{
|
||||
DoScriptText(SAY_SARTHARION_AGGRO,m_creature);
|
||||
DoScriptText(SAY_SARTHARION_AGGRO,me);
|
||||
DoZoneInCombat();
|
||||
|
||||
if (pInstance)
|
||||
@@ -286,7 +286,7 @@ struct boss_sartharionAI : public ScriptedAI
|
||||
|
||||
void JustDied(Unit* pKiller)
|
||||
{
|
||||
DoScriptText(SAY_SARTHARION_DEATH,m_creature);
|
||||
DoScriptText(SAY_SARTHARION_DEATH,me);
|
||||
|
||||
if (pInstance)
|
||||
{
|
||||
@@ -303,28 +303,28 @@ struct boss_sartharionAI : public ScriptedAI
|
||||
|
||||
void KilledUnit(Unit* pVictim)
|
||||
{
|
||||
DoScriptText(RAND(SAY_SARTHARION_SLAY_1,SAY_SARTHARION_SLAY_2,SAY_SARTHARION_SLAY_3), m_creature);
|
||||
DoScriptText(RAND(SAY_SARTHARION_SLAY_1,SAY_SARTHARION_SLAY_2,SAY_SARTHARION_SLAY_3), me);
|
||||
}
|
||||
|
||||
// m_creature->ResetLootMode() is called from Reset()
|
||||
// me->ResetLootMode() is called from Reset()
|
||||
// AddDrakeLootMode() should only ever be called from FetchDragons(), which is called from Aggro()
|
||||
void AddDrakeLootMode()
|
||||
{
|
||||
if (m_creature->HasLootMode(LOOT_MODE_HARD_MODE_2)) // Has two Drake loot modes
|
||||
m_creature->AddLootMode(LOOT_MODE_HARD_MODE_3); // Add 3rd Drake loot mode
|
||||
else if (m_creature->HasLootMode(LOOT_MODE_HARD_MODE_1)) // Has one Drake loot mode
|
||||
m_creature->AddLootMode(LOOT_MODE_HARD_MODE_2); // Add 2nd Drake loot mode
|
||||
if (me->HasLootMode(LOOT_MODE_HARD_MODE_2)) // Has two Drake loot modes
|
||||
me->AddLootMode(LOOT_MODE_HARD_MODE_3); // Add 3rd Drake loot mode
|
||||
else if (me->HasLootMode(LOOT_MODE_HARD_MODE_1)) // Has one Drake loot mode
|
||||
me->AddLootMode(LOOT_MODE_HARD_MODE_2); // Add 2nd Drake loot mode
|
||||
else // Has no Drake loot modes
|
||||
m_creature->AddLootMode(LOOT_MODE_HARD_MODE_1); // Add 1st Drake loot mode
|
||||
me->AddLootMode(LOOT_MODE_HARD_MODE_1); // Add 1st Drake loot mode
|
||||
}
|
||||
|
||||
void FetchDragons()
|
||||
{
|
||||
if (!pInstance)
|
||||
return;
|
||||
Creature* pFetchTene = Unit::GetCreature(*m_creature, pInstance->GetData64(DATA_TENEBRON));
|
||||
Creature* pFetchShad = Unit::GetCreature(*m_creature, pInstance->GetData64(DATA_SHADRON));
|
||||
Creature* pFetchVesp = Unit::GetCreature(*m_creature, pInstance->GetData64(DATA_VESPERON));
|
||||
Creature* pFetchTene = Unit::GetCreature(*me, pInstance->GetData64(DATA_TENEBRON));
|
||||
Creature* pFetchShad = Unit::GetCreature(*me, pInstance->GetData64(DATA_SHADRON));
|
||||
Creature* pFetchVesp = Unit::GetCreature(*me, pInstance->GetData64(DATA_VESPERON));
|
||||
|
||||
//if at least one of the dragons are alive and are being called
|
||||
bool bCanUseWill = false;
|
||||
@@ -357,14 +357,14 @@ struct boss_sartharionAI : public ScriptedAI
|
||||
}
|
||||
|
||||
if (bCanUseWill)
|
||||
DoCast(m_creature, SPELL_WILL_OF_SARTHARION);
|
||||
DoCast(me, SPELL_WILL_OF_SARTHARION);
|
||||
}
|
||||
|
||||
void CallDragon(uint32 uiDataId)
|
||||
{
|
||||
if (pInstance)
|
||||
{
|
||||
if (Creature *pTemp = Unit::GetCreature(*m_creature,pInstance->GetData64(uiDataId)))
|
||||
if (Creature *pTemp = Unit::GetCreature(*me,pInstance->GetData64(uiDataId)))
|
||||
{
|
||||
if (pTemp->isAlive() && !pTemp->getVictim())
|
||||
{
|
||||
@@ -395,7 +395,7 @@ struct boss_sartharionAI : public ScriptedAI
|
||||
break;
|
||||
}
|
||||
|
||||
DoScriptText(iTextId, m_creature);
|
||||
DoScriptText(iTextId, me);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -403,7 +403,7 @@ struct boss_sartharionAI : public ScriptedAI
|
||||
|
||||
void SendFlameTsunami()
|
||||
{
|
||||
if (Map* pMap = m_creature->GetMap())
|
||||
if (Map* pMap = me->GetMap())
|
||||
if (pMap->IsDungeon())
|
||||
{
|
||||
Map::PlayerList const &PlayerList = pMap->GetPlayers();
|
||||
@@ -411,7 +411,7 @@ struct boss_sartharionAI : public ScriptedAI
|
||||
if (!PlayerList.isEmpty())
|
||||
for (Map::PlayerList::const_iterator i = PlayerList.begin(); i != PlayerList.end(); ++i)
|
||||
if (i->getSource() && i->getSource()->isAlive())
|
||||
DoScriptText(WHISPER_LAVA_CHURN, m_creature, i->getSource());
|
||||
DoScriptText(WHISPER_LAVA_CHURN, me, i->getSource());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -421,21 +421,21 @@ struct boss_sartharionAI : public ScriptedAI
|
||||
if (!UpdateVictim())
|
||||
return;
|
||||
|
||||
Unit* pTene = Unit::GetUnit(*m_creature, pInstance ? pInstance->GetData64(DATA_TENEBRON) : 0);
|
||||
Unit* pShad = Unit::GetUnit(*m_creature, pInstance ? pInstance->GetData64(DATA_SHADRON) : 0);
|
||||
Unit* pVesp = Unit::GetUnit(*m_creature, pInstance ? pInstance->GetData64(DATA_VESPERON) : 0);
|
||||
Unit* pTene = Unit::GetUnit(*me, pInstance ? pInstance->GetData64(DATA_TENEBRON) : 0);
|
||||
Unit* pShad = Unit::GetUnit(*me, pInstance ? pInstance->GetData64(DATA_SHADRON) : 0);
|
||||
Unit* pVesp = Unit::GetUnit(*me, pInstance ? pInstance->GetData64(DATA_VESPERON) : 0);
|
||||
|
||||
//spell will target dragons, if they are still alive at 35%
|
||||
if (!m_bIsBerserk && (m_creature->GetHealth()*100 / m_creature->GetMaxHealth()) <= 35
|
||||
if (!m_bIsBerserk && (me->GetHealth()*100 / me->GetMaxHealth()) <= 35
|
||||
&& ((pTene && pTene->isAlive()) || (pShad && pShad->isAlive()) || (pVesp && pVesp->isAlive())))
|
||||
{
|
||||
DoScriptText(SAY_SARTHARION_BERSERK, m_creature);
|
||||
DoCast(m_creature, SPELL_BERSERK);
|
||||
DoScriptText(SAY_SARTHARION_BERSERK, me);
|
||||
DoCast(me, SPELL_BERSERK);
|
||||
m_bIsBerserk = true;
|
||||
}
|
||||
|
||||
//soft enrage
|
||||
if (!m_bIsSoftEnraged && (m_creature->GetHealth()*100 / m_creature->GetMaxHealth()) <= 10)
|
||||
if (!m_bIsSoftEnraged && (me->GetHealth()*100 / me->GetMaxHealth()) <= 10)
|
||||
{
|
||||
// TODO
|
||||
m_bIsSoftEnraged = true;
|
||||
@@ -446,7 +446,7 @@ struct boss_sartharionAI : public ScriptedAI
|
||||
{
|
||||
if (m_uiEnrageTimer <= uiDiff)
|
||||
{
|
||||
DoCast(m_creature, SPELL_PYROBUFFET, true);
|
||||
DoCast(me, SPELL_PYROBUFFET, true);
|
||||
m_bIsHardEnraged = true;
|
||||
}
|
||||
else
|
||||
@@ -461,17 +461,17 @@ struct boss_sartharionAI : public ScriptedAI
|
||||
{
|
||||
case 0:
|
||||
{
|
||||
if (Creature *Right1 = m_creature->SummonCreature(NPC_FLAME_TSUNAMI, FlameRight1Spawn.x, FlameRight1Spawn.y , FlameRight1Spawn.z, 0, TEMPSUMMON_TIMED_DESPAWN,12000))
|
||||
if (Creature *Right1 = me->SummonCreature(NPC_FLAME_TSUNAMI, FlameRight1Spawn.x, FlameRight1Spawn.y , FlameRight1Spawn.z, 0, TEMPSUMMON_TIMED_DESPAWN,12000))
|
||||
Right1->GetMotionMaster()->MovePoint(0, FlameRight1Direction.x, FlameRight1Direction.y, FlameRight1Direction.z);
|
||||
if (Creature *Right2 = m_creature->SummonCreature(NPC_FLAME_TSUNAMI, FlameRight2Spawn.x, FlameRight2Spawn.y , FlameRight2Spawn.z, 0, TEMPSUMMON_TIMED_DESPAWN,12000))
|
||||
if (Creature *Right2 = me->SummonCreature(NPC_FLAME_TSUNAMI, FlameRight2Spawn.x, FlameRight2Spawn.y , FlameRight2Spawn.z, 0, TEMPSUMMON_TIMED_DESPAWN,12000))
|
||||
Right2->GetMotionMaster()->MovePoint(0, FlameRight2Direction.x, FlameRight2Direction.y, FlameRight2Direction.z);
|
||||
break;
|
||||
}
|
||||
case 1:
|
||||
{
|
||||
if (Creature *Left1 = m_creature->SummonCreature(NPC_FLAME_TSUNAMI, FlameLeft1Spawn.x, FlameLeft1Spawn.y , FlameLeft1Spawn.z, 0, TEMPSUMMON_TIMED_DESPAWN,12000))
|
||||
if (Creature *Left1 = me->SummonCreature(NPC_FLAME_TSUNAMI, FlameLeft1Spawn.x, FlameLeft1Spawn.y , FlameLeft1Spawn.z, 0, TEMPSUMMON_TIMED_DESPAWN,12000))
|
||||
Left1->GetMotionMaster()->MovePoint(0, FlameLeft1Direction.x, FlameLeft1Direction.y, FlameLeft1Direction.z);
|
||||
if (Creature *Left2 = m_creature->SummonCreature(NPC_FLAME_TSUNAMI, FlameLeft2Spawn.x, FlameLeft2Spawn.y , FlameLeft2Spawn.z, 0, TEMPSUMMON_TIMED_DESPAWN,12000))
|
||||
if (Creature *Left2 = me->SummonCreature(NPC_FLAME_TSUNAMI, FlameLeft2Spawn.x, FlameLeft2Spawn.y , FlameLeft2Spawn.z, 0, TEMPSUMMON_TIMED_DESPAWN,12000))
|
||||
Left2->GetMotionMaster()->MovePoint(0, FlameLeft2Direction.x, FlameLeft2Direction.y, FlameLeft2Direction.z);
|
||||
break;
|
||||
}
|
||||
@@ -485,8 +485,8 @@ struct boss_sartharionAI : public ScriptedAI
|
||||
// flame breath
|
||||
if (m_uiFlameBreathTimer <= uiDiff)
|
||||
{
|
||||
DoScriptText(SAY_SARTHARION_BREATH, m_creature);
|
||||
DoCast(m_creature->getVictim(), RAID_MODE(SPELL_FLAME_BREATH, SPELL_FLAME_BREATH_H));
|
||||
DoScriptText(SAY_SARTHARION_BREATH, me);
|
||||
DoCast(me->getVictim(), RAID_MODE(SPELL_FLAME_BREATH, SPELL_FLAME_BREATH_H));
|
||||
m_uiFlameBreathTimer = urand(25000,35000);
|
||||
}
|
||||
else
|
||||
@@ -495,7 +495,7 @@ struct boss_sartharionAI : public ScriptedAI
|
||||
// Tail Sweep
|
||||
if (m_uiTailSweepTimer <= uiDiff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(), RAID_MODE(SPELL_TAIL_LASH, SPELL_TAIL_LASH_H));
|
||||
DoCast(me->getVictim(), RAID_MODE(SPELL_TAIL_LASH, SPELL_TAIL_LASH_H));
|
||||
m_uiTailSweepTimer = urand(15000,20000);
|
||||
}
|
||||
else
|
||||
@@ -504,7 +504,7 @@ struct boss_sartharionAI : public ScriptedAI
|
||||
// Cleave
|
||||
if (m_uiCleaveTimer <= uiDiff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(), SPELL_CLEAVE);
|
||||
DoCast(me->getVictim(), SPELL_CLEAVE);
|
||||
m_uiCleaveTimer = urand(7000,10000);
|
||||
}
|
||||
else
|
||||
@@ -518,7 +518,7 @@ struct boss_sartharionAI : public ScriptedAI
|
||||
DoCast(pTarget, SPELL_LAVA_STRIKE);
|
||||
|
||||
if (urand(0,4) == 4)
|
||||
DoScriptText(RAND(SAY_SARTHARION_SPECIAL_1,SAY_SARTHARION_SPECIAL_2,SAY_SARTHARION_SPECIAL_3), m_creature);
|
||||
DoScriptText(RAND(SAY_SARTHARION_SPECIAL_1,SAY_SARTHARION_SPECIAL_2,SAY_SARTHARION_SPECIAL_3), me);
|
||||
}
|
||||
m_uiLavaStrikeTimer = urand(5000,20000);
|
||||
}
|
||||
@@ -616,10 +616,10 @@ struct dummy_dragonAI : public ScriptedAI
|
||||
|
||||
void Reset()
|
||||
{
|
||||
if (m_creature->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE))
|
||||
m_creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
||||
if (me->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE))
|
||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
||||
|
||||
if (GameObject* TwilightPortal = GameObject::GetGameObject((*m_creature), pInstance->GetData64(GO_TWILIGHT_PORTAL)))
|
||||
if (GameObject* TwilightPortal = GameObject::GetGameObject((*me), pInstance->GetData64(GO_TWILIGHT_PORTAL)))
|
||||
TwilightPortal->SetGoState(GO_STATE_READY);
|
||||
|
||||
m_uiWaypointId = 0;
|
||||
@@ -633,7 +633,7 @@ struct dummy_dragonAI : public ScriptedAI
|
||||
if (!pInstance || uiType != POINT_MOTION_TYPE)
|
||||
return;
|
||||
|
||||
debug_log("dummy_dragonAI: %s reached point %u", m_creature->GetName(), uiPointId);
|
||||
debug_log("dummy_dragonAI: %s reached point %u", me->GetName(), uiPointId);
|
||||
|
||||
//if healers messed up the raid and we was already initialized
|
||||
if (pInstance->GetData(TYPE_SARTHARION_EVENT) != IN_PROGRESS)
|
||||
@@ -645,7 +645,7 @@ struct dummy_dragonAI : public ScriptedAI
|
||||
//this is end, if we reach this, don't do much
|
||||
if (uiPointId == POINT_ID_LAND)
|
||||
{
|
||||
m_creature->GetMotionMaster()->Clear();
|
||||
me->GetMotionMaster()->Clear();
|
||||
m_bCanMoveFree = false;
|
||||
return;
|
||||
}
|
||||
@@ -671,7 +671,7 @@ struct dummy_dragonAI : public ScriptedAI
|
||||
//used when open portal and spawn mobs in phase
|
||||
void DoRaidWhisper(int32 iTextId)
|
||||
{
|
||||
Map* pMap = m_creature->GetMap();
|
||||
Map* pMap = me->GetMap();
|
||||
|
||||
if (pMap && pMap->IsDungeon())
|
||||
{
|
||||
@@ -680,7 +680,7 @@ struct dummy_dragonAI : public ScriptedAI
|
||||
if (!PlayerList.isEmpty())
|
||||
{
|
||||
for (Map::PlayerList::const_iterator i = PlayerList.begin(); i != PlayerList.end(); ++i)
|
||||
DoScriptText(iTextId, m_creature, i->getSource());
|
||||
DoScriptText(iTextId, me, i->getSource());
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -694,37 +694,37 @@ struct dummy_dragonAI : public ScriptedAI
|
||||
|
||||
//using a grid search here seem to be more efficient than caching all four guids
|
||||
//in instance script and calculate range to each.
|
||||
GameObject* pPortal = m_creature->FindNearestGameObject(GO_TWILIGHT_PORTAL,50.0f);
|
||||
if (GameObject* TwilightPortal = GameObject::GetGameObject((*m_creature), pInstance->GetData64(GO_TWILIGHT_PORTAL)))
|
||||
GameObject* pPortal = me->FindNearestGameObject(GO_TWILIGHT_PORTAL,50.0f);
|
||||
if (GameObject* TwilightPortal = GameObject::GetGameObject((*me), pInstance->GetData64(GO_TWILIGHT_PORTAL)))
|
||||
TwilightPortal->SetGoState(GO_STATE_ACTIVE);
|
||||
|
||||
switch(m_creature->GetEntry())
|
||||
switch(me->GetEntry())
|
||||
{
|
||||
case NPC_TENEBRON:
|
||||
{
|
||||
iTextId = WHISPER_HATCH_EGGS;
|
||||
if (pInstance && pInstance->GetData(TYPE_SARTHARION_EVENT) == IN_PROGRESS)
|
||||
m_creature->SummonCreature(NPC_TWILIGHT_EGG, TwilightEggs[0].x, TwilightEggs[0].y, TwilightEggs[0].z, 0, TEMPSUMMON_CORPSE_TIMED_DESPAWN,20000);
|
||||
me->SummonCreature(NPC_TWILIGHT_EGG, TwilightEggs[0].x, TwilightEggs[0].y, TwilightEggs[0].z, 0, TEMPSUMMON_CORPSE_TIMED_DESPAWN,20000);
|
||||
else
|
||||
m_creature->SummonCreature(NPC_TWILIGHT_EGG, TwilightEggsSarth[0].x, TwilightEggsSarth[0].y, TwilightEggsSarth[0].z, 0, TEMPSUMMON_CORPSE_TIMED_DESPAWN,20000);
|
||||
me->SummonCreature(NPC_TWILIGHT_EGG, TwilightEggsSarth[0].x, TwilightEggsSarth[0].y, TwilightEggsSarth[0].z, 0, TEMPSUMMON_CORPSE_TIMED_DESPAWN,20000);
|
||||
break;
|
||||
}
|
||||
case NPC_SHADRON:
|
||||
{
|
||||
iTextId = WHISPER_OPEN_PORTAL;
|
||||
if (pInstance && !pInstance->GetData(TYPE_SARTHARION_EVENT) == IN_PROGRESS)
|
||||
m_creature->SummonCreature(NPC_ACOLYTE_OF_SHADRON, AcolyteofShadron.x, AcolyteofShadron.y , AcolyteofShadron.z, 0, TEMPSUMMON_CORPSE_TIMED_DESPAWN,20000);
|
||||
me->SummonCreature(NPC_ACOLYTE_OF_SHADRON, AcolyteofShadron.x, AcolyteofShadron.y , AcolyteofShadron.z, 0, TEMPSUMMON_CORPSE_TIMED_DESPAWN,20000);
|
||||
else
|
||||
m_creature->SummonCreature(NPC_ACOLYTE_OF_SHADRON, AcolyteofShadron2.x, AcolyteofShadron2.y , AcolyteofShadron2.z, 0, TEMPSUMMON_CORPSE_TIMED_DESPAWN,20000);
|
||||
me->SummonCreature(NPC_ACOLYTE_OF_SHADRON, AcolyteofShadron2.x, AcolyteofShadron2.y , AcolyteofShadron2.z, 0, TEMPSUMMON_CORPSE_TIMED_DESPAWN,20000);
|
||||
|
||||
break;
|
||||
}
|
||||
case NPC_VESPERON:
|
||||
{
|
||||
if (pInstance && !pInstance->GetData(TYPE_SARTHARION_EVENT) == IN_PROGRESS)
|
||||
Creature* Acolyte = m_creature->SummonCreature(NPC_ACOLYTE_OF_VESPERON, AcolyteofVesperon.x, AcolyteofVesperon.y , AcolyteofVesperon.z, 0, TEMPSUMMON_CORPSE_TIMED_DESPAWN,20000);
|
||||
Creature* Acolyte = me->SummonCreature(NPC_ACOLYTE_OF_VESPERON, AcolyteofVesperon.x, AcolyteofVesperon.y , AcolyteofVesperon.z, 0, TEMPSUMMON_CORPSE_TIMED_DESPAWN,20000);
|
||||
else
|
||||
Creature* Acolyte = m_creature->SummonCreature(NPC_ACOLYTE_OF_VESPERON, AcolyteofVesperon2.x, AcolyteofVesperon2.y , AcolyteofVesperon2.z, 0, TEMPSUMMON_CORPSE_TIMED_DESPAWN,20000);
|
||||
Creature* Acolyte = me->SummonCreature(NPC_ACOLYTE_OF_VESPERON, AcolyteofVesperon2.x, AcolyteofVesperon2.y , AcolyteofVesperon2.z, 0, TEMPSUMMON_CORPSE_TIMED_DESPAWN,20000);
|
||||
|
||||
iTextId = WHISPER_OPEN_PORTAL;
|
||||
break;
|
||||
@@ -747,7 +747,7 @@ struct dummy_dragonAI : public ScriptedAI
|
||||
int32 iTextId = 0;
|
||||
uint32 uiSpellId = 0;
|
||||
|
||||
switch(m_creature->GetEntry())
|
||||
switch(me->GetEntry())
|
||||
{
|
||||
case NPC_TENEBRON:
|
||||
iTextId = SAY_TENEBRON_DEATH;
|
||||
@@ -763,9 +763,9 @@ struct dummy_dragonAI : public ScriptedAI
|
||||
break;
|
||||
}
|
||||
|
||||
DoScriptText(iTextId, m_creature);
|
||||
DoScriptText(iTextId, me);
|
||||
|
||||
m_creature->RemoveOwnedAura(uiSpellId);
|
||||
me->RemoveOwnedAura(uiSpellId);
|
||||
|
||||
if (pInstance)
|
||||
{
|
||||
@@ -774,7 +774,7 @@ struct dummy_dragonAI : public ScriptedAI
|
||||
return;
|
||||
|
||||
// Twilight Revenge to main boss
|
||||
if (Unit* pSartharion = Unit::GetUnit((*m_creature), pInstance->GetData64(DATA_SARTHARION)))
|
||||
if (Unit* pSartharion = Unit::GetUnit((*me), pInstance->GetData64(DATA_SARTHARION)))
|
||||
if (pSartharion->isAlive())
|
||||
DoCast(pSartharion, SPELL_TWILIGHT_REVENGE, true);
|
||||
}
|
||||
@@ -787,10 +787,10 @@ struct dummy_dragonAI : public ScriptedAI
|
||||
if (m_uiMoveNextTimer <= uiDiff)
|
||||
{
|
||||
if (m_uiWaypointId < MAX_WAYPOINT)
|
||||
m_creature->GetMotionMaster()->MovePoint(m_uiWaypointId,
|
||||
me->GetMotionMaster()->MovePoint(m_uiWaypointId,
|
||||
m_aDragonCommon[m_uiWaypointId].m_fX, m_aDragonCommon[m_uiWaypointId].m_fY, m_aDragonCommon[m_uiWaypointId].m_fZ);
|
||||
|
||||
debug_log("dummy_dragonAI: %s moving to point %u", m_creature->GetName(), m_uiWaypointId);
|
||||
debug_log("dummy_dragonAI: %s moving to point %u", me->GetName(), m_uiWaypointId);
|
||||
m_uiMoveNextTimer = 0;
|
||||
}
|
||||
else
|
||||
@@ -820,14 +820,14 @@ struct mob_tenebronAI : public dummy_dragonAI
|
||||
|
||||
void Aggro(Unit* pWho)
|
||||
{
|
||||
DoScriptText(SAY_TENEBRON_AGGRO, m_creature);
|
||||
DoScriptText(SAY_TENEBRON_AGGRO, me);
|
||||
DoZoneInCombat();
|
||||
DoCast(m_creature, SPELL_POWER_OF_TENEBRON);
|
||||
DoCast(me, SPELL_POWER_OF_TENEBRON);
|
||||
}
|
||||
|
||||
void KilledUnit(Unit* pVictim)
|
||||
{
|
||||
DoScriptText(RAND(SAY_TENEBRON_SLAY_1,SAY_TENEBRON_SLAY_2), m_creature);
|
||||
DoScriptText(RAND(SAY_TENEBRON_SLAY_1,SAY_TENEBRON_SLAY_2), me);
|
||||
/*if (pInstance->GetData(TYPE_SARTHARION_EVENT) == IN_PROGRESS)
|
||||
achievProgress = 1;*/
|
||||
}
|
||||
@@ -864,8 +864,8 @@ struct mob_tenebronAI : public dummy_dragonAI
|
||||
// shadow breath
|
||||
if (m_uiShadowBreathTimer <= uiDiff)
|
||||
{
|
||||
DoScriptText(SAY_TENEBRON_BREATH, m_creature);
|
||||
DoCast(m_creature->getVictim(), RAID_MODE(SPELL_SHADOW_BREATH, SPELL_SHADOW_BREATH_H));
|
||||
DoScriptText(SAY_TENEBRON_BREATH, me);
|
||||
DoCast(me->getVictim(), RAID_MODE(SPELL_SHADOW_BREATH, SPELL_SHADOW_BREATH_H));
|
||||
m_uiShadowBreathTimer = urand(20000,25000);
|
||||
}
|
||||
else
|
||||
@@ -898,23 +898,23 @@ struct mob_shadronAI : public dummy_dragonAI
|
||||
m_uiShadowFissureTimer = 5000;
|
||||
m_uiAcolyteShadronTimer = 60000;
|
||||
|
||||
if (m_creature->HasAura(SPELL_TWILIGHT_TORMENT_VESP))
|
||||
m_creature->RemoveAurasDueToSpell(SPELL_TWILIGHT_TORMENT_VESP);
|
||||
if (me->HasAura(SPELL_TWILIGHT_TORMENT_VESP))
|
||||
me->RemoveAurasDueToSpell(SPELL_TWILIGHT_TORMENT_VESP);
|
||||
|
||||
if (m_creature->HasAura(SPELL_GIFT_OF_TWILIGTH_SHA))
|
||||
m_creature->RemoveAurasDueToSpell(SPELL_GIFT_OF_TWILIGTH_SHA);
|
||||
if (me->HasAura(SPELL_GIFT_OF_TWILIGTH_SHA))
|
||||
me->RemoveAurasDueToSpell(SPELL_GIFT_OF_TWILIGTH_SHA);
|
||||
}
|
||||
|
||||
void Aggro(Unit* pWho)
|
||||
{
|
||||
DoScriptText(SAY_SHADRON_AGGRO,m_creature);
|
||||
DoScriptText(SAY_SHADRON_AGGRO,me);
|
||||
DoZoneInCombat();
|
||||
DoCast(m_creature, SPELL_POWER_OF_SHADRON);
|
||||
DoCast(me, SPELL_POWER_OF_SHADRON);
|
||||
}
|
||||
|
||||
void KilledUnit(Unit* pVictim)
|
||||
{
|
||||
DoScriptText(RAND(SAY_SHADRON_SLAY_1,SAY_SHADRON_SLAY_2), m_creature);
|
||||
DoScriptText(RAND(SAY_SHADRON_SLAY_1,SAY_SHADRON_SLAY_2), me);
|
||||
/*if (pInstance->GetData(TYPE_SARTHARION_EVENT) == IN_PROGRESS)
|
||||
achievProgress = 2;*/
|
||||
}
|
||||
@@ -942,7 +942,7 @@ struct mob_shadronAI : public dummy_dragonAI
|
||||
// Portal Event
|
||||
if (m_uiAcolyteShadronTimer <= uiDiff)
|
||||
{
|
||||
if (m_creature->HasAura(SPELL_GIFT_OF_TWILIGTH_SHA))
|
||||
if (me->HasAura(SPELL_GIFT_OF_TWILIGTH_SHA))
|
||||
return;
|
||||
|
||||
OpenPortal();
|
||||
@@ -954,8 +954,8 @@ struct mob_shadronAI : public dummy_dragonAI
|
||||
// shadow breath
|
||||
if (m_uiShadowBreathTimer <= uiDiff)
|
||||
{
|
||||
DoScriptText(SAY_SHADRON_BREATH, m_creature);
|
||||
DoCast(m_creature->getVictim(), RAID_MODE(SPELL_SHADOW_BREATH, SPELL_SHADOW_BREATH_H));
|
||||
DoScriptText(SAY_SHADRON_BREATH, me);
|
||||
DoCast(me->getVictim(), RAID_MODE(SPELL_SHADOW_BREATH, SPELL_SHADOW_BREATH_H));
|
||||
m_uiShadowBreathTimer = urand(20000,25000);
|
||||
}
|
||||
else
|
||||
@@ -991,14 +991,14 @@ struct mob_vesperonAI : public dummy_dragonAI
|
||||
|
||||
void Aggro(Unit* pWho)
|
||||
{
|
||||
DoScriptText(SAY_VESPERON_AGGRO,m_creature);
|
||||
DoScriptText(SAY_VESPERON_AGGRO,me);
|
||||
DoZoneInCombat();
|
||||
DoCast(m_creature, SPELL_POWER_OF_VESPERON);
|
||||
DoCast(me, SPELL_POWER_OF_VESPERON);
|
||||
}
|
||||
|
||||
void KilledUnit(Unit* pVictim)
|
||||
{
|
||||
DoScriptText(RAND(SAY_VESPERON_SLAY_1,SAY_VESPERON_SLAY_2), m_creature);
|
||||
DoScriptText(RAND(SAY_VESPERON_SLAY_1,SAY_VESPERON_SLAY_2), me);
|
||||
/*if (pInstance->GetData(TYPE_SARTHARION_EVENT) == IN_PROGRESS)
|
||||
achievProgress = 3;*/
|
||||
}
|
||||
@@ -1027,7 +1027,7 @@ struct mob_vesperonAI : public dummy_dragonAI
|
||||
if (m_uiAcolyteVesperonTimer <= uiDiff)
|
||||
{
|
||||
OpenPortal();
|
||||
DoCast(m_creature->getVictim(), SPELL_TWILIGHT_TORMENT_VESP);
|
||||
DoCast(me->getVictim(), SPELL_TWILIGHT_TORMENT_VESP);
|
||||
m_uiAcolyteVesperonTimer = urand(60000,70000);
|
||||
}
|
||||
else
|
||||
@@ -1036,8 +1036,8 @@ struct mob_vesperonAI : public dummy_dragonAI
|
||||
// shadow breath
|
||||
if (m_uiShadowBreathTimer <= uiDiff)
|
||||
{
|
||||
DoScriptText(SAY_VESPERON_BREATH, m_creature);
|
||||
DoCast(m_creature->getVictim(), RAID_MODE(SPELL_SHADOW_BREATH, SPELL_SHADOW_BREATH_H));
|
||||
DoScriptText(SAY_VESPERON_BREATH, me);
|
||||
DoCast(me->getVictim(), RAID_MODE(SPELL_SHADOW_BREATH, SPELL_SHADOW_BREATH_H));
|
||||
m_uiShadowBreathTimer = urand(20000,25000);
|
||||
}
|
||||
else
|
||||
@@ -1073,19 +1073,19 @@ struct mob_acolyte_of_shadronAI : public ScriptedAI
|
||||
{
|
||||
Unit *pTarget = SelectTarget(SELECT_TARGET_TOPAGGRO, 0, 999, true);
|
||||
Creature* pShadron = NULL;
|
||||
Creature* pSartharion = Unit::GetCreature(*m_creature, pInstance->GetData64(DATA_SARTHARION));
|
||||
if (Creature* pShadron = Unit::GetCreature(*m_creature, pInstance->GetData64(DATA_SHADRON)))
|
||||
Creature* pSartharion = Unit::GetCreature(*me, pInstance->GetData64(DATA_SARTHARION));
|
||||
if (Creature* pShadron = Unit::GetCreature(*me, pInstance->GetData64(DATA_SHADRON)))
|
||||
//if not solo figth, buff main boss, else place debuff on mini-boss. both spells TARGET_SCRIPT
|
||||
if (pInstance->GetData(TYPE_SARTHARION_EVENT) == IN_PROGRESS)
|
||||
pSartharion->CastSpell(m_creature, SPELL_GIFT_OF_TWILIGTH_SAR, true);
|
||||
pSartharion->CastSpell(me, SPELL_GIFT_OF_TWILIGTH_SAR, true);
|
||||
else
|
||||
{
|
||||
pShadron->CastSpell(m_creature, SPELL_GIFT_OF_TWILIGTH_SHA,true);
|
||||
pShadron->CastSpell(me, SPELL_GIFT_OF_TWILIGTH_SHA,true);
|
||||
pShadron->AddThreat(pTarget, 100.0f);
|
||||
AttackStart(pShadron->getVictim());
|
||||
}
|
||||
}
|
||||
m_creature->AddAura(SPELL_TWILIGHT_SHIFT_ENTER,m_creature);
|
||||
me->AddAura(SPELL_TWILIGHT_SHIFT_ENTER,me);
|
||||
}
|
||||
|
||||
void JustDied(Unit* killer)
|
||||
@@ -1093,7 +1093,7 @@ struct mob_acolyte_of_shadronAI : public ScriptedAI
|
||||
if (pInstance)
|
||||
{
|
||||
Creature* pDebuffTarget = NULL;
|
||||
Map *map = m_creature->GetMap();
|
||||
Map *map = me->GetMap();
|
||||
if (map->IsDungeon())
|
||||
{
|
||||
Map::PlayerList const &PlayerList = map->GetPlayers();
|
||||
@@ -1116,14 +1116,14 @@ struct mob_acolyte_of_shadronAI : public ScriptedAI
|
||||
if (pInstance->GetData(TYPE_SARTHARION_EVENT) == IN_PROGRESS)
|
||||
{
|
||||
//not solo fight, so main boss has deduff
|
||||
Creature* pDebuffTarget = Unit::GetCreature(*m_creature, pInstance->GetData64(DATA_SARTHARION));
|
||||
Creature* pDebuffTarget = Unit::GetCreature(*me, pInstance->GetData64(DATA_SARTHARION));
|
||||
if (pDebuffTarget && pDebuffTarget->isAlive() && pDebuffTarget->HasAura(SPELL_GIFT_OF_TWILIGTH_SAR))
|
||||
pDebuffTarget->RemoveAurasDueToSpell(SPELL_GIFT_OF_TWILIGTH_SAR);
|
||||
}
|
||||
else
|
||||
{
|
||||
//event not in progress, then solo fight and must remove debuff mini-boss
|
||||
Creature* pDebuffTarget = Unit::GetCreature(*m_creature, pInstance->GetData64(DATA_SHADRON));
|
||||
Creature* pDebuffTarget = Unit::GetCreature(*me, pInstance->GetData64(DATA_SHADRON));
|
||||
if (pDebuffTarget && pDebuffTarget->isAlive() && pDebuffTarget->HasAura(SPELL_GIFT_OF_TWILIGTH_SHA))
|
||||
pDebuffTarget->RemoveAurasDueToSpell(SPELL_GIFT_OF_TWILIGTH_SHA);
|
||||
}
|
||||
@@ -1161,9 +1161,9 @@ struct mob_acolyte_of_vesperonAI : public ScriptedAI
|
||||
{
|
||||
if (pInstance)
|
||||
{
|
||||
m_creature->AddAura(SPELL_TWILIGHT_SHIFT_ENTER,m_creature);
|
||||
me->AddAura(SPELL_TWILIGHT_SHIFT_ENTER,me);
|
||||
}
|
||||
DoCast(m_creature, SPELL_TWILIGHT_TORMENT_VESP_ACO);
|
||||
DoCast(me, SPELL_TWILIGHT_TORMENT_VESP_ACO);
|
||||
}
|
||||
|
||||
void JustDied(Unit* pKiller)
|
||||
@@ -1171,12 +1171,12 @@ struct mob_acolyte_of_vesperonAI : public ScriptedAI
|
||||
// remove twilight torment on Vesperon
|
||||
if (pInstance)
|
||||
{
|
||||
Creature* pVesperon = Unit::GetCreature(*m_creature, pInstance->GetData64(DATA_VESPERON));
|
||||
Creature* pVesperon = Unit::GetCreature(*me, pInstance->GetData64(DATA_VESPERON));
|
||||
|
||||
if (pVesperon && pVesperon->isAlive() && pVesperon->HasAura(SPELL_TWILIGHT_TORMENT_VESP))
|
||||
pVesperon->RemoveAurasDueToSpell(SPELL_TWILIGHT_TORMENT_VESP);
|
||||
|
||||
Map *map = m_creature->GetMap();
|
||||
Map *map = me->GetMap();
|
||||
if (map->IsDungeon())
|
||||
{
|
||||
Map::PlayerList const &PlayerList = map->GetPlayers();
|
||||
@@ -1238,10 +1238,10 @@ struct mob_twilight_eggsAI : public Scripted_NoMovementAI
|
||||
void SpawnWhelps()
|
||||
{
|
||||
if (!pInstance->GetData(TYPE_SARTHARION_EVENT) == IN_PROGRESS)
|
||||
m_creature->SummonCreature(NPC_TWILIGHT_WHELP, 0.0f, 0.0f, 0.0f, 0.0f, TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN, 60000);
|
||||
me->SummonCreature(NPC_TWILIGHT_WHELP, 0.0f, 0.0f, 0.0f, 0.0f, TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN, 60000);
|
||||
else
|
||||
m_creature->SummonCreature(NPC_SHARTHARION_TWILIGHT_WHELP, 0.0f, 0.0f, 0.0f, 0.0f, TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN, 60000);
|
||||
m_creature->DealDamage(m_creature, m_creature->GetHealth());
|
||||
me->SummonCreature(NPC_SHARTHARION_TWILIGHT_WHELP, 0.0f, 0.0f, 0.0f, 0.0f, TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN, 60000);
|
||||
me->DealDamage(me, me->GetHealth());
|
||||
}
|
||||
void UpdateAI(const uint32 uiDiff)
|
||||
{
|
||||
@@ -1268,8 +1268,8 @@ struct npc_flame_tsunamiAI : public ScriptedAI
|
||||
{
|
||||
npc_flame_tsunamiAI(Creature* pCreature) : ScriptedAI(pCreature)
|
||||
{
|
||||
m_creature->HasAura(SPELL_FLAME_TSUNAMI_DMG_AURA);
|
||||
DoCast(m_creature, SPELL_FLAME_TSUNAMI);
|
||||
me->HasAura(SPELL_FLAME_TSUNAMI_DMG_AURA);
|
||||
DoCast(me, SPELL_FLAME_TSUNAMI);
|
||||
}
|
||||
|
||||
uint32 Tsunami_Timer;
|
||||
@@ -1277,14 +1277,14 @@ struct npc_flame_tsunamiAI : public ScriptedAI
|
||||
void Reset()
|
||||
{
|
||||
Tsunami_Timer = 100;
|
||||
m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
||||
}
|
||||
|
||||
void UpdateAI(const uint32 diff)
|
||||
{
|
||||
if (Tsunami_Timer <= diff)
|
||||
{
|
||||
DoCast(m_creature, SPELL_FLAME_TSUNAMI_DMG_AURA);
|
||||
DoCast(me, SPELL_FLAME_TSUNAMI_DMG_AURA);
|
||||
Tsunami_Timer = 1000;
|
||||
} else Tsunami_Timer -= diff;
|
||||
}
|
||||
@@ -1308,9 +1308,9 @@ struct npc_twilight_fissureAI : public Scripted_NoMovementAI
|
||||
{
|
||||
if (VoidBlast_Timer <= diff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(), RAID_MODE(SPELL_VOID_BLAST, SPELL_VOID_BLAST_H));
|
||||
DoCast(me->getVictim(), RAID_MODE(SPELL_VOID_BLAST, SPELL_VOID_BLAST_H));
|
||||
VoidBlast_Timer = 9000;
|
||||
m_creature->Kill(m_creature);
|
||||
me->Kill(me);
|
||||
} else VoidBlast_Timer -= diff;
|
||||
}
|
||||
};
|
||||
@@ -1350,7 +1350,7 @@ struct mob_twilight_whelpAI : public ScriptedAI
|
||||
// twilight torment
|
||||
if (m_uiFadeArmorTimer <= uiDiff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(), SPELL_FADE_ARMOR);
|
||||
DoCast(me->getVictim(), SPELL_FADE_ARMOR);
|
||||
m_uiFadeArmorTimer = urand(5000,10000);
|
||||
}
|
||||
else
|
||||
|
||||
@@ -84,19 +84,19 @@ struct npc_injured_rainspeaker_oracleAI : public npc_escortAI
|
||||
case 16:
|
||||
case 17:
|
||||
case 18:
|
||||
m_creature->RemoveUnitMovementFlag(MOVEMENTFLAG_SWIMMING);
|
||||
m_creature->RemoveUnitMovementFlag(MOVEMENTFLAG_JUMPING);
|
||||
m_creature->SetSpeed(MOVE_SWIM, 0.85f, true);
|
||||
m_creature->AddUnitMovementFlag(MOVEMENTFLAG_SWIMMING | MOVEMENTFLAG_LEVITATING);
|
||||
me->RemoveUnitMovementFlag(MOVEMENTFLAG_SWIMMING);
|
||||
me->RemoveUnitMovementFlag(MOVEMENTFLAG_JUMPING);
|
||||
me->SetSpeed(MOVE_SWIM, 0.85f, true);
|
||||
me->AddUnitMovementFlag(MOVEMENTFLAG_SWIMMING | MOVEMENTFLAG_LEVITATING);
|
||||
break;
|
||||
case 19:
|
||||
m_creature->SetUnitMovementFlags(MOVEMENTFLAG_JUMPING);
|
||||
me->SetUnitMovementFlags(MOVEMENTFLAG_JUMPING);
|
||||
break;
|
||||
case 28:
|
||||
if (Player* pPlayer = GetPlayerForEscort())
|
||||
pPlayer->GroupEventHappens(QUEST_FORTUNATE_MISUNDERSTANDINGS, m_creature);
|
||||
pPlayer->GroupEventHappens(QUEST_FORTUNATE_MISUNDERSTANDINGS, me);
|
||||
// me->RestoreFaction();
|
||||
DoScriptText(SAY_END_IRO,m_creature);
|
||||
DoScriptText(SAY_END_IRO,me);
|
||||
SetRun(false);
|
||||
break;
|
||||
}
|
||||
@@ -278,10 +278,10 @@ struct npc_bushwhackerAI : public ScriptedAI
|
||||
|
||||
void MoveToSummoner()
|
||||
{
|
||||
if (m_creature->isSummon())
|
||||
if (Unit* pSummoner = CAST_SUM(m_creature)->GetSummoner())
|
||||
if (me->isSummon())
|
||||
if (Unit* pSummoner = CAST_SUM(me)->GetSummoner())
|
||||
if (pSummoner)
|
||||
m_creature->GetMotionMaster()->MovePoint(0,pSummoner->GetPositionX(),pSummoner->GetPositionY(),pSummoner->GetPositionZ());
|
||||
me->GetMotionMaster()->MovePoint(0,pSummoner->GetPositionX(),pSummoner->GetPositionY(),pSummoner->GetPositionZ());
|
||||
}
|
||||
|
||||
void UpdateAI(const uint32 uiDiff)
|
||||
|
||||
@@ -184,9 +184,9 @@ struct npc_goblin_prisonerAI : public ScriptedAI
|
||||
|
||||
void Reset()
|
||||
{
|
||||
m_creature->SetReactState(REACT_PASSIVE);
|
||||
me->SetReactState(REACT_PASSIVE);
|
||||
|
||||
if (GameObject* pGO = m_creature->FindNearestGameObject(GO_RUSTY_CAGE,5.0f))
|
||||
if (GameObject* pGO = me->FindNearestGameObject(GO_RUSTY_CAGE,5.0f))
|
||||
{
|
||||
if (pGO->GetGoState() == GO_STATE_ACTIVE)
|
||||
pGO->SetGoState(GO_STATE_READY);
|
||||
@@ -224,7 +224,7 @@ struct npc_victorious_challengerAI : public ScriptedAI
|
||||
|
||||
void Reset()
|
||||
{
|
||||
m_creature->RestoreFaction();
|
||||
me->RestoreFaction();
|
||||
|
||||
SunderArmorTimer = 10000;
|
||||
RendTimer = 15000;
|
||||
@@ -238,13 +238,13 @@ struct npc_victorious_challengerAI : public ScriptedAI
|
||||
|
||||
if (RendTimer < diff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(), SPELL_REND_VC, true);
|
||||
DoCast(me->getVictim(), SPELL_REND_VC, true);
|
||||
RendTimer = 15000;
|
||||
}else RendTimer -= diff;
|
||||
|
||||
if (SunderArmorTimer < diff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(), SPELL_SUNDER_ARMOR, true);
|
||||
DoCast(me->getVictim(), SPELL_SUNDER_ARMOR, true);
|
||||
SunderArmorTimer = 10000;
|
||||
}else SunderArmorTimer -= diff;
|
||||
|
||||
@@ -253,7 +253,7 @@ struct npc_victorious_challengerAI : public ScriptedAI
|
||||
|
||||
void KilledUnit(Unit* victim)
|
||||
{
|
||||
m_creature->RestoreFaction();
|
||||
me->RestoreFaction();
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
@@ -135,7 +135,7 @@ struct boss_bjarngrimAI : public ScriptedAI
|
||||
|
||||
for (uint8 i = 0; i < 2; ++i)
|
||||
{
|
||||
if (Creature* pStormforgedLieutenant = (Unit::GetCreature((*m_creature), m_auiStormforgedLieutenantGUID[i])))
|
||||
if (Creature* pStormforgedLieutenant = (Unit::GetCreature((*me), m_auiStormforgedLieutenantGUID[i])))
|
||||
{
|
||||
if (!pStormforgedLieutenant->isAlive())
|
||||
pStormforgedLieutenant->Respawn();
|
||||
@@ -145,7 +145,7 @@ struct boss_bjarngrimAI : public ScriptedAI
|
||||
if (m_uiStance != STANCE_DEFENSIVE)
|
||||
{
|
||||
DoRemoveStanceAura(m_uiStance);
|
||||
DoCast(m_creature, SPELL_DEFENSIVE_STANCE);
|
||||
DoCast(me, SPELL_DEFENSIVE_STANCE);
|
||||
m_uiStance = STANCE_DEFENSIVE;
|
||||
}
|
||||
|
||||
@@ -157,10 +157,10 @@ struct boss_bjarngrimAI : public ScriptedAI
|
||||
|
||||
void EnterCombat(Unit* pWho)
|
||||
{
|
||||
DoScriptText(SAY_AGGRO, m_creature);
|
||||
DoScriptText(SAY_AGGRO, me);
|
||||
|
||||
//must get both lieutenants here and make sure they are with him
|
||||
m_creature->CallForHelp(30.0f);
|
||||
me->CallForHelp(30.0f);
|
||||
|
||||
if (m_pInstance)
|
||||
m_pInstance->SetData(TYPE_BJARNGRIM, IN_PROGRESS);
|
||||
@@ -168,12 +168,12 @@ struct boss_bjarngrimAI : public ScriptedAI
|
||||
|
||||
void KilledUnit(Unit* pVictim)
|
||||
{
|
||||
DoScriptText(RAND(SAY_SLAY_1,SAY_SLAY_2,SAY_SLAY_3), m_creature);
|
||||
DoScriptText(RAND(SAY_SLAY_1,SAY_SLAY_2,SAY_SLAY_3), me);
|
||||
}
|
||||
|
||||
void JustDied(Unit* pKiller)
|
||||
{
|
||||
DoScriptText(SAY_DEATH, m_creature);
|
||||
DoScriptText(SAY_DEATH, me);
|
||||
|
||||
if (m_pInstance)
|
||||
m_pInstance->SetData(TYPE_BJARNGRIM, DONE);
|
||||
@@ -185,13 +185,13 @@ struct boss_bjarngrimAI : public ScriptedAI
|
||||
switch(uiStance)
|
||||
{
|
||||
case STANCE_DEFENSIVE:
|
||||
m_creature->RemoveAurasDueToSpell(SPELL_DEFENSIVE_STANCE);
|
||||
me->RemoveAurasDueToSpell(SPELL_DEFENSIVE_STANCE);
|
||||
break;
|
||||
case STANCE_BERSERKER:
|
||||
m_creature->RemoveAurasDueToSpell(SPELL_BERSEKER_STANCE);
|
||||
me->RemoveAurasDueToSpell(SPELL_BERSEKER_STANCE);
|
||||
break;
|
||||
case STANCE_BATTLE:
|
||||
m_creature->RemoveAurasDueToSpell(SPELL_BATTLE_STANCE);
|
||||
me->RemoveAurasDueToSpell(SPELL_BATTLE_STANCE);
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -206,7 +206,7 @@ struct boss_bjarngrimAI : public ScriptedAI
|
||||
if (m_uiChangeStance_Timer <= uiDiff)
|
||||
{
|
||||
//wait for current spell to finish before change stance
|
||||
if (m_creature->IsNonMeleeSpellCasted(false))
|
||||
if (me->IsNonMeleeSpellCasted(false))
|
||||
return;
|
||||
|
||||
DoRemoveStanceAura(m_uiStance);
|
||||
@@ -221,21 +221,21 @@ struct boss_bjarngrimAI : public ScriptedAI
|
||||
switch(m_uiStance)
|
||||
{
|
||||
case STANCE_DEFENSIVE:
|
||||
DoScriptText(SAY_DEFENSIVE_STANCE, m_creature);
|
||||
DoScriptText(EMOTE_DEFENSIVE_STANCE, m_creature);
|
||||
DoCast(m_creature, SPELL_DEFENSIVE_STANCE);
|
||||
DoScriptText(SAY_DEFENSIVE_STANCE, me);
|
||||
DoScriptText(EMOTE_DEFENSIVE_STANCE, me);
|
||||
DoCast(me, SPELL_DEFENSIVE_STANCE);
|
||||
SetEquipmentSlots(false, EQUIP_SWORD, EQUIP_SHIELD, EQUIP_NO_CHANGE);
|
||||
break;
|
||||
case STANCE_BERSERKER:
|
||||
DoScriptText(SAY_BERSEKER_STANCE, m_creature);
|
||||
DoScriptText(EMOTE_BERSEKER_STANCE, m_creature);
|
||||
DoCast(m_creature, SPELL_BERSEKER_STANCE);
|
||||
DoScriptText(SAY_BERSEKER_STANCE, me);
|
||||
DoScriptText(EMOTE_BERSEKER_STANCE, me);
|
||||
DoCast(me, SPELL_BERSEKER_STANCE);
|
||||
SetEquipmentSlots(false, EQUIP_SWORD, EQUIP_SWORD, EQUIP_NO_CHANGE);
|
||||
break;
|
||||
case STANCE_BATTLE:
|
||||
DoScriptText(SAY_BATTLE_STANCE, m_creature);
|
||||
DoScriptText(EMOTE_BATTLE_STANCE, m_creature);
|
||||
DoCast(m_creature, SPELL_BATTLE_STANCE);
|
||||
DoScriptText(SAY_BATTLE_STANCE, me);
|
||||
DoScriptText(EMOTE_BATTLE_STANCE, me);
|
||||
DoCast(me, SPELL_BATTLE_STANCE);
|
||||
SetEquipmentSlots(false, EQUIP_MACE, EQUIP_UNEQUIP, EQUIP_NO_CHANGE);
|
||||
break;
|
||||
}
|
||||
@@ -252,7 +252,7 @@ struct boss_bjarngrimAI : public ScriptedAI
|
||||
{
|
||||
if (m_uiReflection_Timer <= uiDiff)
|
||||
{
|
||||
DoCast(m_creature, SPELL_SPELL_REFLECTION);
|
||||
DoCast(me, SPELL_SPELL_REFLECTION);
|
||||
m_uiReflection_Timer = 8000 + rand()%1000;
|
||||
}
|
||||
else
|
||||
@@ -260,7 +260,7 @@ struct boss_bjarngrimAI : public ScriptedAI
|
||||
|
||||
if (m_uiKnockAway_Timer <= uiDiff)
|
||||
{
|
||||
DoCast(m_creature, SPELL_KNOCK_AWAY);
|
||||
DoCast(me, SPELL_KNOCK_AWAY);
|
||||
m_uiKnockAway_Timer = 20000 + rand()%1000;
|
||||
}
|
||||
else
|
||||
@@ -268,7 +268,7 @@ struct boss_bjarngrimAI : public ScriptedAI
|
||||
|
||||
if (m_uiPummel_Timer <= uiDiff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(), SPELL_PUMMEL);
|
||||
DoCast(me->getVictim(), SPELL_PUMMEL);
|
||||
m_uiPummel_Timer = 10000 + rand()%1000;
|
||||
}
|
||||
else
|
||||
@@ -276,7 +276,7 @@ struct boss_bjarngrimAI : public ScriptedAI
|
||||
|
||||
if (m_uiIronform_Timer <= uiDiff)
|
||||
{
|
||||
DoCast(m_creature, SPELL_IRONFORM);
|
||||
DoCast(me, SPELL_IRONFORM);
|
||||
m_uiIronform_Timer = 25000 + rand()%1000;
|
||||
}
|
||||
else
|
||||
@@ -289,7 +289,7 @@ struct boss_bjarngrimAI : public ScriptedAI
|
||||
if (m_uiIntercept_Timer <= uiDiff)
|
||||
{
|
||||
//not much point is this, better random target and more often?
|
||||
DoCast(m_creature->getVictim(), SPELL_INTERCEPT);
|
||||
DoCast(me->getVictim(), SPELL_INTERCEPT);
|
||||
m_uiIntercept_Timer = 45000 + rand()%1000;
|
||||
}
|
||||
else
|
||||
@@ -297,7 +297,7 @@ struct boss_bjarngrimAI : public ScriptedAI
|
||||
|
||||
if (m_uiWhirlwind_Timer <= uiDiff)
|
||||
{
|
||||
DoCast(m_creature, SPELL_WHIRLWIND);
|
||||
DoCast(me, SPELL_WHIRLWIND);
|
||||
m_uiWhirlwind_Timer = 10000 + rand()%1000;
|
||||
}
|
||||
else
|
||||
@@ -305,7 +305,7 @@ struct boss_bjarngrimAI : public ScriptedAI
|
||||
|
||||
if (m_uiCleave_Timer <= uiDiff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(), SPELL_CLEAVE);
|
||||
DoCast(me->getVictim(), SPELL_CLEAVE);
|
||||
m_uiCleave_Timer = 8000 + rand()%1000;
|
||||
}
|
||||
else
|
||||
@@ -317,7 +317,7 @@ struct boss_bjarngrimAI : public ScriptedAI
|
||||
{
|
||||
if (m_uiMortalStrike_Timer <= uiDiff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(), SPELL_MORTAL_STRIKE);
|
||||
DoCast(me->getVictim(), SPELL_MORTAL_STRIKE);
|
||||
m_uiMortalStrike_Timer = 20000 + rand()%1000;
|
||||
}
|
||||
else
|
||||
@@ -325,7 +325,7 @@ struct boss_bjarngrimAI : public ScriptedAI
|
||||
|
||||
if (m_uiSlam_Timer <= uiDiff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(), SPELL_SLAM);
|
||||
DoCast(me->getVictim(), SPELL_SLAM);
|
||||
m_uiSlam_Timer = 15000 + rand()%1000;
|
||||
}
|
||||
else
|
||||
@@ -381,7 +381,7 @@ struct mob_stormforged_lieutenantAI : public ScriptedAI
|
||||
|
||||
if (m_uiArcWeld_Timer <= uiDiff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(), SPELL_ARC_WELD);
|
||||
DoCast(me->getVictim(), SPELL_ARC_WELD);
|
||||
m_uiArcWeld_Timer = 20000 + rand()%1000;
|
||||
}
|
||||
else
|
||||
|
||||
@@ -100,10 +100,10 @@ struct boss_ionarAI : public ScriptedAI
|
||||
|
||||
uiDisperseHealth = 45 + urand(0,10);
|
||||
|
||||
m_creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE|UNIT_FLAG_NOT_SELECTABLE|UNIT_FLAG_DISABLE_MOVE);
|
||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE|UNIT_FLAG_NOT_SELECTABLE|UNIT_FLAG_DISABLE_MOVE);
|
||||
|
||||
if (m_creature->GetVisibility() == VISIBILITY_OFF)
|
||||
m_creature->SetVisibility(VISIBILITY_ON);
|
||||
if (me->GetVisibility() == VISIBILITY_OFF)
|
||||
me->SetVisibility(VISIBILITY_ON);
|
||||
|
||||
if (pInstance)
|
||||
pInstance->SetData(TYPE_IONAR, NOT_STARTED);
|
||||
@@ -111,7 +111,7 @@ struct boss_ionarAI : public ScriptedAI
|
||||
|
||||
void EnterCombat(Unit* who)
|
||||
{
|
||||
DoScriptText(SAY_AGGRO, m_creature);
|
||||
DoScriptText(SAY_AGGRO, me);
|
||||
|
||||
if (pInstance)
|
||||
pInstance->SetData(TYPE_IONAR, IN_PROGRESS);
|
||||
@@ -119,7 +119,7 @@ struct boss_ionarAI : public ScriptedAI
|
||||
|
||||
void JustDied(Unit* killer)
|
||||
{
|
||||
DoScriptText(SAY_DEATH, m_creature);
|
||||
DoScriptText(SAY_DEATH, me);
|
||||
|
||||
lSparkList.DespawnAll();
|
||||
|
||||
@@ -129,7 +129,7 @@ struct boss_ionarAI : public ScriptedAI
|
||||
|
||||
void KilledUnit(Unit *victim)
|
||||
{
|
||||
DoScriptText(RAND(SAY_SLAY_1,SAY_SLAY_2,SAY_SLAY_3), m_creature);
|
||||
DoScriptText(RAND(SAY_SLAY_1,SAY_SLAY_2,SAY_SLAY_3), me);
|
||||
}
|
||||
|
||||
//make sparks come back
|
||||
@@ -140,11 +140,11 @@ struct boss_ionarAI : public ScriptedAI
|
||||
return;
|
||||
|
||||
Position pos;
|
||||
m_creature->GetPosition(&pos);
|
||||
me->GetPosition(&pos);
|
||||
|
||||
for (std::list<uint64>::const_iterator itr = lSparkList.begin(); itr != lSparkList.end(); ++itr)
|
||||
{
|
||||
if (Creature* pSpark = Unit::GetCreature(*m_creature, *itr))
|
||||
if (Creature* pSpark = Unit::GetCreature(*me, *itr))
|
||||
{
|
||||
if (pSpark->isAlive())
|
||||
{
|
||||
@@ -160,7 +160,7 @@ struct boss_ionarAI : public ScriptedAI
|
||||
|
||||
void DamageTaken(Unit *pDoneBy, uint32 &uiDamage)
|
||||
{
|
||||
if (m_creature->GetVisibility() == VISIBILITY_OFF)
|
||||
if (me->GetVisibility() == VISIBILITY_OFF)
|
||||
uiDamage = 0;
|
||||
}
|
||||
|
||||
@@ -195,7 +195,7 @@ struct boss_ionarAI : public ScriptedAI
|
||||
return;
|
||||
|
||||
// Splitted
|
||||
if (m_creature->GetVisibility() == VISIBILITY_OFF)
|
||||
if (me->GetVisibility() == VISIBILITY_OFF)
|
||||
{
|
||||
if (uiSplitTimer <= uiDiff)
|
||||
{
|
||||
@@ -210,16 +210,16 @@ struct boss_ionarAI : public ScriptedAI
|
||||
// Lightning effect and restore Ionar
|
||||
else if (lSparkList.empty())
|
||||
{
|
||||
m_creature->SetVisibility(VISIBILITY_ON);
|
||||
m_creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE|UNIT_FLAG_NOT_SELECTABLE|UNIT_FLAG_DISABLE_MOVE);
|
||||
me->SetVisibility(VISIBILITY_ON);
|
||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE|UNIT_FLAG_NOT_SELECTABLE|UNIT_FLAG_DISABLE_MOVE);
|
||||
|
||||
DoCast(m_creature, SPELL_SPARK_DESPAWN, false);
|
||||
DoCast(me, SPELL_SPARK_DESPAWN, false);
|
||||
|
||||
uiSplitTimer = 25*IN_MILISECONDS;
|
||||
bIsSplitPhase = true;
|
||||
|
||||
if (m_creature->getVictim())
|
||||
m_creature->GetMotionMaster()->MoveChase(m_creature->getVictim());
|
||||
if (me->getVictim())
|
||||
me->GetMotionMaster()->MoveChase(me->getVictim());
|
||||
}
|
||||
}
|
||||
else
|
||||
@@ -240,7 +240,7 @@ struct boss_ionarAI : public ScriptedAI
|
||||
|
||||
if (uiBallLightningTimer <= uiDiff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(), SPELL_BALL_LIGHTNING);
|
||||
DoCast(me->getVictim(), SPELL_BALL_LIGHTNING);
|
||||
uiBallLightningTimer = urand(10*IN_MILISECONDS, 11*IN_MILISECONDS);
|
||||
}
|
||||
else
|
||||
@@ -251,12 +251,12 @@ struct boss_ionarAI : public ScriptedAI
|
||||
{
|
||||
bHasDispersed = true;
|
||||
|
||||
DoScriptText(RAND(SAY_SPLIT_1,SAY_SPLIT_2), m_creature);
|
||||
DoScriptText(RAND(SAY_SPLIT_1,SAY_SPLIT_2), me);
|
||||
|
||||
if (m_creature->IsNonMeleeSpellCasted(false))
|
||||
m_creature->InterruptNonMeleeSpells(false);
|
||||
if (me->IsNonMeleeSpellCasted(false))
|
||||
me->InterruptNonMeleeSpells(false);
|
||||
|
||||
DoCast(m_creature, SPELL_DISPERSE, true);
|
||||
DoCast(me, SPELL_DISPERSE, true);
|
||||
}
|
||||
|
||||
DoMeleeAttackIfReady();
|
||||
@@ -310,7 +310,7 @@ struct mob_spark_of_ionarAI : public ScriptedAI
|
||||
void Reset()
|
||||
{
|
||||
uiCheckTimer = 2*IN_MILISECONDS;
|
||||
m_creature->SetReactState(REACT_PASSIVE);
|
||||
me->SetReactState(REACT_PASSIVE);
|
||||
}
|
||||
|
||||
void MovementInform(uint32 uiType, uint32 uiPointId)
|
||||
@@ -319,7 +319,7 @@ struct mob_spark_of_ionarAI : public ScriptedAI
|
||||
return;
|
||||
|
||||
if (uiPointId == DATA_POINT_CALLBACK)
|
||||
m_creature->ForcedDespawn();
|
||||
me->ForcedDespawn();
|
||||
}
|
||||
|
||||
void DamageTaken(Unit *pDoneBy, uint32 &uiDamage)
|
||||
@@ -332,7 +332,7 @@ struct mob_spark_of_ionarAI : public ScriptedAI
|
||||
// Despawn if the encounter is not running
|
||||
if (pInstance && pInstance->GetData(TYPE_IONAR) != IN_PROGRESS)
|
||||
{
|
||||
m_creature->ForcedDespawn();
|
||||
me->ForcedDespawn();
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -344,18 +344,18 @@ struct mob_spark_of_ionarAI : public ScriptedAI
|
||||
Creature* pIonar = pInstance->instance->GetCreature(pInstance->GetData64(DATA_IONAR));
|
||||
if (pIonar && pIonar->isAlive())
|
||||
{
|
||||
if (m_creature->GetDistance(pIonar) > DATA_MAX_SPARK_DISTANCE)
|
||||
if (me->GetDistance(pIonar) > DATA_MAX_SPARK_DISTANCE)
|
||||
{
|
||||
Position pos;
|
||||
pIonar->GetPosition(&pos);
|
||||
|
||||
m_creature->SetSpeed(MOVE_RUN, 2.0f);
|
||||
m_creature->GetMotionMaster()->Clear();
|
||||
m_creature->GetMotionMaster()->MovePoint(DATA_POINT_CALLBACK, pos);
|
||||
me->SetSpeed(MOVE_RUN, 2.0f);
|
||||
me->GetMotionMaster()->Clear();
|
||||
me->GetMotionMaster()->MovePoint(DATA_POINT_CALLBACK, pos);
|
||||
}
|
||||
}
|
||||
else
|
||||
m_creature->ForcedDespawn();
|
||||
me->ForcedDespawn();
|
||||
}
|
||||
uiCheckTimer = 2*IN_MILISECONDS;
|
||||
}
|
||||
|
||||
@@ -95,7 +95,7 @@ struct boss_lokenAI : public ScriptedAI
|
||||
|
||||
void EnterCombat(Unit* pWho)
|
||||
{
|
||||
DoScriptText(SAY_AGGRO, m_creature);
|
||||
DoScriptText(SAY_AGGRO, me);
|
||||
|
||||
EncounterTime = 0;
|
||||
|
||||
@@ -105,14 +105,14 @@ struct boss_lokenAI : public ScriptedAI
|
||||
|
||||
void JustDied(Unit* pKiller)
|
||||
{
|
||||
DoScriptText(SAY_DEATH, m_creature);
|
||||
DoScriptText(SAY_DEATH, me);
|
||||
|
||||
if (IsHeroic() && EncounterTime <= MAX_ENCOUNTER_TIME)
|
||||
{
|
||||
AchievementEntry const *AchievTimelyDeath = GetAchievementStore()->LookupEntry(ACHIEVEMENT_TIMELY_DEATH);
|
||||
if (AchievTimelyDeath)
|
||||
{
|
||||
Map* pMap = m_creature->GetMap();
|
||||
Map* pMap = me->GetMap();
|
||||
if (pMap && pMap->IsDungeon())
|
||||
{
|
||||
Map::PlayerList const &players = pMap->GetPlayers();
|
||||
@@ -128,7 +128,7 @@ struct boss_lokenAI : public ScriptedAI
|
||||
|
||||
void KilledUnit(Unit* pVictim)
|
||||
{
|
||||
DoScriptText(RAND(SAY_SLAY_1,SAY_SLAY_2,SAY_SLAY_3), m_creature);
|
||||
DoScriptText(RAND(SAY_SLAY_1,SAY_SLAY_2,SAY_SLAY_3), me);
|
||||
}
|
||||
|
||||
void UpdateAI(const uint32 uiDiff)
|
||||
@@ -144,7 +144,7 @@ struct boss_lokenAI : public ScriptedAI
|
||||
// workaround for PULSING_SHOCKWAVE
|
||||
if (m_uiPulsingShockwave_Timer <= uiDiff)
|
||||
{
|
||||
Map* pMap = m_creature->GetMap();
|
||||
Map* pMap = me->GetMap();
|
||||
if (pMap->IsDungeon())
|
||||
{
|
||||
Map::PlayerList const &PlayerList = pMap->GetPlayers();
|
||||
@@ -156,13 +156,13 @@ struct boss_lokenAI : public ScriptedAI
|
||||
if (i->getSource() && i->getSource()->isAlive() && i->getSource()->isTargetableForAttack())
|
||||
{
|
||||
int32 dmg;
|
||||
float m_fDist = m_creature->GetExactDist(i->getSource()->GetPositionX(), i->getSource()->GetPositionY(), i->getSource()->GetPositionZ());
|
||||
float m_fDist = me->GetExactDist(i->getSource()->GetPositionX(), i->getSource()->GetPositionY(), i->getSource()->GetPositionZ());
|
||||
|
||||
dmg = DUNGEON_MODE(100, 150); // need to correct damage
|
||||
if (m_fDist > 1.0f) // Further from 1 yard
|
||||
dmg *= m_fDist;
|
||||
|
||||
m_creature->CastCustomSpell(i->getSource(), DUNGEON_MODE(52942, 59837), &dmg, 0, 0, false);
|
||||
me->CastCustomSpell(i->getSource(), DUNGEON_MODE(52942, 59837), &dmg, 0, 0, false);
|
||||
}
|
||||
}
|
||||
m_uiPulsingShockwave_Timer = 2000;
|
||||
@@ -173,9 +173,9 @@ struct boss_lokenAI : public ScriptedAI
|
||||
if (m_uiResumePulsingShockwave_Timer <= uiDiff)
|
||||
{
|
||||
//breaks at movement, can we assume when it's time, this spell is casted and also must stop movement?
|
||||
DoCast(m_creature, SPELL_PULSING_SHOCKWAVE_AURA, true);
|
||||
DoCast(me, SPELL_PULSING_SHOCKWAVE_AURA, true);
|
||||
|
||||
DoCast(m_creature, SPELL_PULSING_SHOCKWAVE_N); // need core support
|
||||
DoCast(me, SPELL_PULSING_SHOCKWAVE_N); // need core support
|
||||
m_bIsAura = true;
|
||||
m_uiResumePulsingShockwave_Timer = 0;
|
||||
}
|
||||
@@ -195,9 +195,9 @@ struct boss_lokenAI : public ScriptedAI
|
||||
|
||||
if (m_uiLightningNova_Timer <= uiDiff)
|
||||
{
|
||||
DoScriptText(RAND(SAY_NOVA_1,SAY_NOVA_2,SAY_NOVA_3), m_creature);
|
||||
DoScriptText(EMOTE_NOVA, m_creature);
|
||||
DoCast(m_creature, SPELL_LIGHTNING_NOVA_N);
|
||||
DoScriptText(RAND(SAY_NOVA_1,SAY_NOVA_2,SAY_NOVA_3), me);
|
||||
DoScriptText(EMOTE_NOVA, me);
|
||||
DoCast(me, SPELL_LIGHTNING_NOVA_N);
|
||||
|
||||
m_bIsAura = false;
|
||||
m_uiResumePulsingShockwave_Timer = DUNGEON_MODE(5000, 4000); // Pause Pulsing Shockwave aura
|
||||
@@ -207,13 +207,13 @@ struct boss_lokenAI : public ScriptedAI
|
||||
m_uiLightningNova_Timer -= uiDiff;
|
||||
|
||||
// Health check
|
||||
if ((m_creature->GetHealth()*100 / m_creature->GetMaxHealth()) < (100-(25*m_uiHealthAmountModifier)))
|
||||
if ((me->GetHealth()*100 / me->GetMaxHealth()) < (100-(25*m_uiHealthAmountModifier)))
|
||||
{
|
||||
switch(m_uiHealthAmountModifier)
|
||||
{
|
||||
case 1: DoScriptText(SAY_75HEALTH, m_creature); break;
|
||||
case 2: DoScriptText(SAY_50HEALTH, m_creature); break;
|
||||
case 3: DoScriptText(SAY_25HEALTH, m_creature); break;
|
||||
case 1: DoScriptText(SAY_75HEALTH, me); break;
|
||||
case 2: DoScriptText(SAY_50HEALTH, me); break;
|
||||
case 3: DoScriptText(SAY_25HEALTH, me); break;
|
||||
}
|
||||
|
||||
++m_uiHealthAmountModifier;
|
||||
|
||||
@@ -116,7 +116,7 @@ struct boss_volkhanAI : public ScriptedAI
|
||||
|
||||
void EnterCombat(Unit* pWho)
|
||||
{
|
||||
DoScriptText(SAY_AGGRO, m_creature);
|
||||
DoScriptText(SAY_AGGRO, me);
|
||||
|
||||
if (m_pInstance)
|
||||
m_pInstance->SetData(TYPE_VOLKHAN, IN_PROGRESS);
|
||||
@@ -124,20 +124,20 @@ struct boss_volkhanAI : public ScriptedAI
|
||||
|
||||
void AttackStart(Unit* pWho)
|
||||
{
|
||||
if (m_creature->Attack(pWho, true))
|
||||
if (me->Attack(pWho, true))
|
||||
{
|
||||
m_creature->AddThreat(pWho, 0.0f);
|
||||
m_creature->SetInCombatWith(pWho);
|
||||
pWho->SetInCombatWith(m_creature);
|
||||
me->AddThreat(pWho, 0.0f);
|
||||
me->SetInCombatWith(pWho);
|
||||
pWho->SetInCombatWith(me);
|
||||
|
||||
if (!m_bHasTemper)
|
||||
m_creature->GetMotionMaster()->MoveChase(pWho);
|
||||
me->GetMotionMaster()->MoveChase(pWho);
|
||||
}
|
||||
}
|
||||
|
||||
void JustDied(Unit* pKiller)
|
||||
{
|
||||
DoScriptText(SAY_DEATH, m_creature);
|
||||
DoScriptText(SAY_DEATH, me);
|
||||
DespawnGolem();
|
||||
|
||||
if (m_pInstance)
|
||||
@@ -148,7 +148,7 @@ struct boss_volkhanAI : public ScriptedAI
|
||||
AchievementEntry const *AchievShatterResistant = GetAchievementStore()->LookupEntry(ACHIEVEMENT_SHATTER_RESISTANT);
|
||||
if (AchievShatterResistant)
|
||||
{
|
||||
Map* pMap = m_creature->GetMap();
|
||||
Map* pMap = me->GetMap();
|
||||
if (pMap && pMap->IsDungeon())
|
||||
{
|
||||
Map::PlayerList const &players = pMap->GetPlayers();
|
||||
@@ -161,7 +161,7 @@ struct boss_volkhanAI : public ScriptedAI
|
||||
|
||||
void KilledUnit(Unit* pVictim)
|
||||
{
|
||||
DoScriptText(RAND(SAY_SLAY_1,SAY_SLAY_2,SAY_SLAY_3), m_creature);
|
||||
DoScriptText(RAND(SAY_SLAY_1,SAY_SLAY_2,SAY_SLAY_3), me);
|
||||
}
|
||||
|
||||
void DespawnGolem()
|
||||
@@ -171,7 +171,7 @@ struct boss_volkhanAI : public ScriptedAI
|
||||
|
||||
for (std::list<uint64>::const_iterator itr = m_lGolemGUIDList.begin(); itr != m_lGolemGUIDList.end(); ++itr)
|
||||
{
|
||||
if (Creature* pTemp = Unit::GetCreature(*m_creature, *itr))
|
||||
if (Creature* pTemp = Unit::GetCreature(*me, *itr))
|
||||
{
|
||||
if (pTemp->isAlive())
|
||||
pTemp->ForcedDespawn();
|
||||
@@ -188,7 +188,7 @@ struct boss_volkhanAI : public ScriptedAI
|
||||
|
||||
for (std::list<uint64>::const_iterator itr = m_lGolemGUIDList.begin(); itr != m_lGolemGUIDList.end(); ++itr)
|
||||
{
|
||||
if (Creature* pTemp = Unit::GetCreature(*m_creature, *itr))
|
||||
if (Creature* pTemp = Unit::GetCreature(*me, *itr))
|
||||
{
|
||||
// only shatter brittle golems
|
||||
if (pTemp->isAlive() && pTemp->GetEntry() == NPC_BRITTLE_GOLEM)
|
||||
@@ -216,7 +216,7 @@ struct boss_volkhanAI : public ScriptedAI
|
||||
pSummoned->AI()->AttackStart(pTarget);
|
||||
|
||||
//why healing when just summoned?
|
||||
pSummoned->CastSpell(pSummoned, DUNGEON_MODE(SPELL_HEAT_N, SPELL_HEAT_H), false, NULL, NULL, m_creature->GetGUID());
|
||||
pSummoned->CastSpell(pSummoned, DUNGEON_MODE(SPELL_HEAT_N, SPELL_HEAT_H), false, NULL, NULL, me->GetGUID());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -230,10 +230,10 @@ struct boss_volkhanAI : public ScriptedAI
|
||||
{
|
||||
if (m_uiPause_Timer <= uiDiff)
|
||||
{
|
||||
if (m_creature->GetMotionMaster()->GetCurrentMovementGeneratorType() != TARGETED_MOTION_TYPE)
|
||||
if (me->GetMotionMaster()->GetCurrentMovementGeneratorType() != TARGETED_MOTION_TYPE)
|
||||
{
|
||||
if (m_creature->getVictim())
|
||||
m_creature->GetMotionMaster()->MoveChase(m_creature->getVictim());
|
||||
if (me->getVictim())
|
||||
me->GetMotionMaster()->MoveChase(me->getVictim());
|
||||
}
|
||||
|
||||
m_bHasTemper = false;
|
||||
@@ -253,11 +253,11 @@ struct boss_volkhanAI : public ScriptedAI
|
||||
{
|
||||
//should he stomp even if he has no brittle golem to shatter?
|
||||
|
||||
DoScriptText(RAND(SAY_STOMP_1,SAY_STOMP_2), m_creature);
|
||||
DoScriptText(RAND(SAY_STOMP_1,SAY_STOMP_2), me);
|
||||
|
||||
DoCast(m_creature, SPELL_SHATTERING_STOMP_N);
|
||||
DoCast(me, SPELL_SHATTERING_STOMP_N);
|
||||
|
||||
DoScriptText(EMOTE_SHATTER, m_creature);
|
||||
DoScriptText(EMOTE_SHATTER, me);
|
||||
|
||||
m_uiShatteringStomp_Timer = 30000;
|
||||
m_bCanShatterGolem = true;
|
||||
@@ -280,18 +280,18 @@ struct boss_volkhanAI : public ScriptedAI
|
||||
}
|
||||
|
||||
// Health check
|
||||
if (!m_bCanShatterGolem && (m_creature->GetHealth()*100 / m_creature->GetMaxHealth()) < (100-(20*m_uiHealthAmountModifier)))
|
||||
if (!m_bCanShatterGolem && (me->GetHealth()*100 / me->GetMaxHealth()) < (100-(20*m_uiHealthAmountModifier)))
|
||||
{
|
||||
++m_uiHealthAmountModifier;
|
||||
|
||||
if (m_creature->IsNonMeleeSpellCasted(false))
|
||||
m_creature->InterruptNonMeleeSpells(false);
|
||||
if (me->IsNonMeleeSpellCasted(false))
|
||||
me->InterruptNonMeleeSpells(false);
|
||||
|
||||
DoScriptText(RAND(SAY_FORGE_1,SAY_FORGE_2), m_creature);
|
||||
DoScriptText(RAND(SAY_FORGE_1,SAY_FORGE_2), me);
|
||||
|
||||
m_bHasTemper = true;
|
||||
|
||||
DoCast(m_creature, SPELL_TEMPER, false);
|
||||
DoCast(me, SPELL_TEMPER, false);
|
||||
}
|
||||
|
||||
DoMeleeAttackIfReady();
|
||||
@@ -386,31 +386,31 @@ struct mob_molten_golemAI : public ScriptedAI
|
||||
|
||||
void AttackStart(Unit* pWho)
|
||||
{
|
||||
if (m_creature->Attack(pWho, true))
|
||||
if (me->Attack(pWho, true))
|
||||
{
|
||||
m_creature->AddThreat(pWho, 0.0f);
|
||||
m_creature->SetInCombatWith(pWho);
|
||||
pWho->SetInCombatWith(m_creature);
|
||||
me->AddThreat(pWho, 0.0f);
|
||||
me->SetInCombatWith(pWho);
|
||||
pWho->SetInCombatWith(me);
|
||||
|
||||
if (!m_bIsFrozen)
|
||||
m_creature->GetMotionMaster()->MoveChase(pWho);
|
||||
me->GetMotionMaster()->MoveChase(pWho);
|
||||
}
|
||||
}
|
||||
|
||||
void DamageTaken(Unit* pDoneBy, uint32 &uiDamage)
|
||||
{
|
||||
if (uiDamage > m_creature->GetHealth())
|
||||
if (uiDamage > me->GetHealth())
|
||||
{
|
||||
m_creature->UpdateEntry(NPC_BRITTLE_GOLEM);
|
||||
m_creature->SetHealth(1);
|
||||
me->UpdateEntry(NPC_BRITTLE_GOLEM);
|
||||
me->SetHealth(1);
|
||||
uiDamage = 0;
|
||||
m_creature->RemoveAllAuras();
|
||||
m_creature->AttackStop();
|
||||
m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_STUNNED);
|
||||
if (m_creature->IsNonMeleeSpellCasted(false))
|
||||
m_creature->InterruptNonMeleeSpells(false);
|
||||
if (m_creature->GetMotionMaster()->GetCurrentMovementGeneratorType() == TARGETED_MOTION_TYPE)
|
||||
m_creature->GetMotionMaster()->MovementExpired();
|
||||
me->RemoveAllAuras();
|
||||
me->AttackStop();
|
||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_STUNNED);
|
||||
if (me->IsNonMeleeSpellCasted(false))
|
||||
me->InterruptNonMeleeSpells(false);
|
||||
if (me->GetMotionMaster()->GetCurrentMovementGeneratorType() == TARGETED_MOTION_TYPE)
|
||||
me->GetMotionMaster()->MovementExpired();
|
||||
m_bIsFrozen = true;
|
||||
}
|
||||
}
|
||||
@@ -420,8 +420,8 @@ struct mob_molten_golemAI : public ScriptedAI
|
||||
//this is the dummy effect of the spells
|
||||
if (pSpell->Id == SPELL_SHATTER_N || pSpell->Id == SPELL_SHATTER_H)
|
||||
{
|
||||
if (m_creature->GetEntry() == NPC_BRITTLE_GOLEM)
|
||||
m_creature->ForcedDespawn();
|
||||
if (me->GetEntry() == NPC_BRITTLE_GOLEM)
|
||||
me->ForcedDespawn();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -433,7 +433,7 @@ struct mob_molten_golemAI : public ScriptedAI
|
||||
|
||||
if (m_uiBlast_Timer <= uiDiff)
|
||||
{
|
||||
DoCast(m_creature, SPELL_BLAST_WAVE);
|
||||
DoCast(me, SPELL_BLAST_WAVE);
|
||||
m_uiBlast_Timer = 20000;
|
||||
}
|
||||
else
|
||||
@@ -441,7 +441,7 @@ struct mob_molten_golemAI : public ScriptedAI
|
||||
|
||||
if (m_uiImmolation_Timer <= uiDiff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(), SPELL_IMMOLATION_STRIKE_N);
|
||||
DoCast(me->getVictim(), SPELL_IMMOLATION_STRIKE_N);
|
||||
m_uiImmolation_Timer = 5000;
|
||||
}
|
||||
else
|
||||
|
||||
@@ -64,7 +64,7 @@ struct boss_krystallusAI : public ScriptedAI
|
||||
}
|
||||
void EnterCombat(Unit* who)
|
||||
{
|
||||
DoScriptText(SAY_AGGRO, m_creature);
|
||||
DoScriptText(SAY_AGGRO, me);
|
||||
|
||||
if (pInstance)
|
||||
pInstance->SetData(DATA_KRYSTALLUS_EVENT, IN_PROGRESS);
|
||||
@@ -92,13 +92,13 @@ struct boss_krystallusAI : public ScriptedAI
|
||||
|
||||
if (uiStompTimer <= diff)
|
||||
{
|
||||
DoCast(m_creature, SPELL_STOMP);
|
||||
DoCast(me, SPELL_STOMP);
|
||||
uiStompTimer = 20000 + rand()%9000;
|
||||
} else uiStompTimer -= diff;
|
||||
|
||||
if (uiGroundSlamTimer <= diff)
|
||||
{
|
||||
DoCast(m_creature, SPELL_GROUND_SLAM);
|
||||
DoCast(me, SPELL_GROUND_SLAM);
|
||||
bIsSlam = true;
|
||||
uiShatterTimer = 10000;
|
||||
uiGroundSlamTimer = 15000 + rand()%3000;
|
||||
@@ -108,7 +108,7 @@ struct boss_krystallusAI : public ScriptedAI
|
||||
{
|
||||
if (uiShatterTimer <= diff)
|
||||
{
|
||||
DoCast(m_creature, SPELL_SHATTER);
|
||||
DoCast(me, SPELL_SHATTER);
|
||||
bIsSlam = false;
|
||||
} else uiShatterTimer -= diff;
|
||||
}
|
||||
@@ -118,7 +118,7 @@ struct boss_krystallusAI : public ScriptedAI
|
||||
|
||||
void JustDied(Unit* killer)
|
||||
{
|
||||
DoScriptText(SAY_DEATH, m_creature);
|
||||
DoScriptText(SAY_DEATH, me);
|
||||
|
||||
if (pInstance)
|
||||
pInstance->SetData(DATA_KRYSTALLUS_EVENT, DONE);
|
||||
@@ -126,9 +126,9 @@ struct boss_krystallusAI : public ScriptedAI
|
||||
|
||||
void KilledUnit(Unit *victim)
|
||||
{
|
||||
if (victim == m_creature)
|
||||
if (victim == me)
|
||||
return;
|
||||
DoScriptText(SAY_KILL, m_creature);
|
||||
DoScriptText(SAY_KILL, me);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@@ -43,7 +43,7 @@ struct boss_maiden_of_griefAI : public ScriptedAI
|
||||
{
|
||||
boss_maiden_of_griefAI(Creature *c) : ScriptedAI(c)
|
||||
{
|
||||
pInstance = m_creature->GetInstanceData();
|
||||
pInstance = me->GetInstanceData();
|
||||
}
|
||||
|
||||
ScriptedInstance* pInstance;
|
||||
@@ -68,7 +68,7 @@ struct boss_maiden_of_griefAI : public ScriptedAI
|
||||
|
||||
void EnterCombat(Unit* who)
|
||||
{
|
||||
DoScriptText(SAY_AGGRO, m_creature);
|
||||
DoScriptText(SAY_AGGRO, me);
|
||||
|
||||
if (pInstance)
|
||||
{
|
||||
@@ -109,15 +109,15 @@ struct boss_maiden_of_griefAI : public ScriptedAI
|
||||
|
||||
if (StormOfGriefTimer <= diff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(), SPELL_STORM_OF_GRIEF_N, true);
|
||||
DoCast(me->getVictim(), SPELL_STORM_OF_GRIEF_N, true);
|
||||
StormOfGriefTimer = 15000 + rand()%5000;
|
||||
} else StormOfGriefTimer -= diff;
|
||||
|
||||
if (ShockOfSorrowTimer <= diff)
|
||||
{
|
||||
DoResetThreat();
|
||||
DoScriptText(SAY_STUN, m_creature);
|
||||
DoCast(m_creature, SPELL_SHOCK_OF_SORROW_N);
|
||||
DoScriptText(SAY_STUN, me);
|
||||
DoCast(me, SPELL_SHOCK_OF_SORROW_N);
|
||||
ShockOfSorrowTimer = 20000 + rand()%10000;
|
||||
} else ShockOfSorrowTimer -= diff;
|
||||
|
||||
@@ -128,7 +128,7 @@ struct boss_maiden_of_griefAI : public ScriptedAI
|
||||
if (pTarget)
|
||||
DoCast(pTarget, SPELL_PILLAR_OF_WOE_N);
|
||||
else
|
||||
DoCast(m_creature->getVictim(), SPELL_PILLAR_OF_WOE_N);
|
||||
DoCast(me->getVictim(), SPELL_PILLAR_OF_WOE_N);
|
||||
|
||||
PillarOfWoeTimer = 5000 + rand()%20000;
|
||||
} else PillarOfWoeTimer -= diff;
|
||||
@@ -137,13 +137,13 @@ struct boss_maiden_of_griefAI : public ScriptedAI
|
||||
}
|
||||
void JustDied(Unit* killer)
|
||||
{
|
||||
DoScriptText(SAY_DEATH, m_creature);
|
||||
DoScriptText(SAY_DEATH, me);
|
||||
|
||||
if (pInstance)
|
||||
pInstance->SetData(DATA_MAIDEN_OF_GRIEF_EVENT, DONE);
|
||||
|
||||
AchievementEntry const *AchievGoodGrief = GetAchievementStore()->LookupEntry(ACHIEVEMENT_GOOD_GRIEF);
|
||||
Map* pMap = m_creature->GetMap();
|
||||
Map* pMap = me->GetMap();
|
||||
|
||||
if (IsHeroic() && AchievTimer < 60000 && pMap && pMap->IsDungeon() && AchievGoodGrief)
|
||||
{
|
||||
@@ -154,10 +154,10 @@ struct boss_maiden_of_griefAI : public ScriptedAI
|
||||
}
|
||||
void KilledUnit(Unit *victim)
|
||||
{
|
||||
if (victim == m_creature)
|
||||
if (victim == me)
|
||||
return;
|
||||
|
||||
DoScriptText(RAND(SAY_SLAY_1,SAY_SLAY_2,SAY_SLAY_3,SAY_SLAY_4), m_creature);
|
||||
DoScriptText(RAND(SAY_SLAY_1,SAY_SLAY_2,SAY_SLAY_3,SAY_SLAY_4), me);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@@ -108,7 +108,7 @@ struct boss_sjonnirAI : public ScriptedAI
|
||||
|
||||
void EnterCombat(Unit* who)
|
||||
{
|
||||
DoScriptText(SAY_AGGRO, m_creature);
|
||||
DoScriptText(SAY_AGGRO, me);
|
||||
|
||||
uiEncounterTimer = 0;
|
||||
|
||||
@@ -140,28 +140,28 @@ struct boss_sjonnirAI : public ScriptedAI
|
||||
|
||||
if (uiLightningShieldTimer <= diff)
|
||||
{
|
||||
DoCast(m_creature, SPELL_LIGHTING_SHIELD);
|
||||
DoCast(me, SPELL_LIGHTING_SHIELD);
|
||||
uiLightningShieldTimer -= diff;
|
||||
}
|
||||
|
||||
if (uiStaticChargeTimer <= diff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(), SPELL_STATIC_CHARGE);
|
||||
DoCast(me->getVictim(), SPELL_STATIC_CHARGE);
|
||||
uiStaticChargeTimer = 20000 + rand()%5000;
|
||||
} uiStaticChargeTimer -= diff;
|
||||
|
||||
if (uiLightningRingTimer <= diff)
|
||||
{
|
||||
if (m_creature->IsNonMeleeSpellCasted(false))
|
||||
m_creature->InterruptNonMeleeSpells(false);
|
||||
DoCast(m_creature, SPELL_LIGHTING_RING);
|
||||
if (me->IsNonMeleeSpellCasted(false))
|
||||
me->InterruptNonMeleeSpells(false);
|
||||
DoCast(me, SPELL_LIGHTING_RING);
|
||||
uiLightningRingTimer = 30000 + rand()%5000;
|
||||
} else uiLightningRingTimer -= diff;
|
||||
|
||||
if (uiSummonTimer <= diff)
|
||||
{
|
||||
uint32 uiSummonPipe = rand()%2;
|
||||
m_creature->SummonCreature(uiEncounterTimer > DATA_TIME_BEFORE_OOZE ? CREATURE_MALFORMED_OOZE :
|
||||
me->SummonCreature(uiEncounterTimer > DATA_TIME_BEFORE_OOZE ? CREATURE_MALFORMED_OOZE :
|
||||
RAND(CREATURE_FORGED_IRON_DWARF,CREATURE_FORGED_IRON_TROGG),
|
||||
PipeLocations[uiSummonPipe].x, PipeLocations[uiSummonPipe].y, PipeLocations[uiSummonPipe].z, 0.0f,
|
||||
TEMPSUMMON_CORPSE_TIMED_DESPAWN, 30000);
|
||||
@@ -172,7 +172,7 @@ struct boss_sjonnirAI : public ScriptedAI
|
||||
{
|
||||
if (uiFrenzyTimer <= diff)
|
||||
{
|
||||
DoCast(m_creature, SPELL_FRENZY);
|
||||
DoCast(me, SPELL_FRENZY);
|
||||
bIsFrenzy = true;
|
||||
}
|
||||
else uiFrenzyTimer -= diff;
|
||||
@@ -193,7 +193,7 @@ struct boss_sjonnirAI : public ScriptedAI
|
||||
|
||||
void JustDied(Unit* killer)
|
||||
{
|
||||
DoScriptText(SAY_DEATH, m_creature);
|
||||
DoScriptText(SAY_DEATH, me);
|
||||
lSummons.DespawnAll();
|
||||
|
||||
if (pInstance)
|
||||
@@ -205,9 +205,9 @@ struct boss_sjonnirAI : public ScriptedAI
|
||||
}
|
||||
void KilledUnit(Unit *victim)
|
||||
{
|
||||
if (victim == m_creature)
|
||||
if (victim == me)
|
||||
return;
|
||||
DoScriptText(RAND(SAY_SLAY_1,SAY_SLAY_2,SAY_SLAY_3), m_creature);
|
||||
DoScriptText(RAND(SAY_SLAY_1,SAY_SLAY_2,SAY_SLAY_3), me);
|
||||
}
|
||||
|
||||
void KilledIronSludge()
|
||||
@@ -236,11 +236,11 @@ struct mob_malformed_oozeAI : public ScriptedAI
|
||||
{
|
||||
if (uiMergeTimer <= diff)
|
||||
{
|
||||
if (Creature* pTemp = m_creature->FindNearestCreature(CREATURE_MALFORMED_OOZE, 3.0f, true))
|
||||
if (Creature* pTemp = me->FindNearestCreature(CREATURE_MALFORMED_OOZE, 3.0f, true))
|
||||
{
|
||||
DoSpawnCreature(CREATURE_IRON_SLUDGE, 0, 0, 0, 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 20000);
|
||||
pTemp->DisappearAndDie();
|
||||
m_creature->DisappearAndDie();
|
||||
me->DisappearAndDie();
|
||||
}
|
||||
uiMergeTimer = 3000;
|
||||
} else uiMergeTimer -= diff;
|
||||
@@ -269,7 +269,7 @@ struct mob_iron_sludgeAI : public ScriptedAI
|
||||
void JustDied(Unit* pKiller)
|
||||
{
|
||||
if (pInstance)
|
||||
if (Creature* pSjonnir = Unit::GetCreature(*m_creature, pInstance->GetData64(DATA_SJONNIR)))
|
||||
if (Creature* pSjonnir = Unit::GetCreature(*me, pInstance->GetData64(DATA_SJONNIR)))
|
||||
CAST_AI(boss_sjonnirAI, pSjonnir->AI())->KilledIronSludge();
|
||||
}
|
||||
};
|
||||
|
||||
@@ -158,7 +158,7 @@ struct mob_tribuna_controllerAI : public ScriptedAI
|
||||
|
||||
void UpdateFacesList()
|
||||
{
|
||||
/*GetCreatureListWithEntryInGrid(lKaddrakGUIDList, m_creature, CREATURE_KADDRAK, 50.0f);
|
||||
/*GetCreatureListWithEntryInGrid(lKaddrakGUIDList, me, CREATURE_KADDRAK, 50.0f);
|
||||
if (!lKaddrakGUIDList.empty())
|
||||
{
|
||||
uint32 uiPositionCounter = 0;
|
||||
@@ -192,7 +192,7 @@ struct mob_tribuna_controllerAI : public ScriptedAI
|
||||
if (!KaddrakGUIDList.empty())
|
||||
for (std::list<uint64>::const_iterator itr = KaddrakGUIDList.begin(); itr != KaddrakGUIDList.end(); ++itr)
|
||||
{
|
||||
if (Creature *pKaddrak = Unit::GetCreature(*m_creature, *itr))
|
||||
if (Creature *pKaddrak = Unit::GetCreature(*me, *itr))
|
||||
{
|
||||
if (pKaddrak->isAlive())
|
||||
pKaddrak->CastSpell(pTarget, DUNGEON_MODE(SPELL_GLARE_OF_THE_TRIBUNAL, H_SPELL_GLARE_OF_THE_TRIBUNAL), true);
|
||||
@@ -207,7 +207,7 @@ struct mob_tribuna_controllerAI : public ScriptedAI
|
||||
{
|
||||
if (Unit* pTarget = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true))
|
||||
{
|
||||
if (Creature* pSummon = m_creature->SummonCreature(CREATURE_DARK_MATTER_TARGET, pTarget->GetPositionX(), pTarget->GetPositionY(), pTarget->GetPositionZ(), 0.0f, TEMPSUMMON_TIMED_DESPAWN, 1000))
|
||||
if (Creature* pSummon = me->SummonCreature(CREATURE_DARK_MATTER_TARGET, pTarget->GetPositionX(), pTarget->GetPositionY(), pTarget->GetPositionZ(), 0.0f, TEMPSUMMON_TIMED_DESPAWN, 1000))
|
||||
{
|
||||
pSummon->SetDisplayId(11686);
|
||||
pSummon->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
||||
@@ -223,7 +223,7 @@ struct mob_tribuna_controllerAI : public ScriptedAI
|
||||
{
|
||||
if (Unit* pTarget = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true))
|
||||
{
|
||||
if (Creature* pSummon = m_creature->SummonCreature(CREATURE_SEARING_GAZE_TARGET, pTarget->GetPositionX(), pTarget->GetPositionY(), pTarget->GetPositionZ(), 0.0f, TEMPSUMMON_TIMED_DESPAWN, 1000))
|
||||
if (Creature* pSummon = me->SummonCreature(CREATURE_SEARING_GAZE_TARGET, pTarget->GetPositionX(), pTarget->GetPositionY(), pTarget->GetPositionZ(), 0.0f, TEMPSUMMON_TIMED_DESPAWN, 1000))
|
||||
{
|
||||
pSummon->SetDisplayId(11686);
|
||||
pSummon->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
||||
@@ -279,7 +279,7 @@ struct npc_brann_hosAI : public npc_escortAI
|
||||
return;
|
||||
for (std::list<uint64>::const_iterator itr = lDwarfGUIDList.begin(); itr != lDwarfGUIDList.end(); ++itr)
|
||||
{
|
||||
Creature* pTemp = Unit::GetCreature(*m_creature, pInstance ? (*itr) : 0);
|
||||
Creature* pTemp = Unit::GetCreature(*me, pInstance ? (*itr) : 0);
|
||||
if (pTemp && pTemp->isAlive())
|
||||
pTemp->ForcedDespawn();
|
||||
}
|
||||
@@ -291,7 +291,7 @@ struct npc_brann_hosAI : public npc_escortAI
|
||||
switch(uiPointId)
|
||||
{
|
||||
case 7:
|
||||
if (Creature* pCreature = GetClosestCreatureWithEntry(m_creature, CREATURE_TRIBUNAL_OF_THE_AGES, 100.0f))
|
||||
if (Creature* pCreature = GetClosestCreatureWithEntry(me, CREATURE_TRIBUNAL_OF_THE_AGES, 100.0f))
|
||||
{
|
||||
if (!pCreature->isAlive())
|
||||
pCreature->Respawn();
|
||||
@@ -300,15 +300,15 @@ struct npc_brann_hosAI : public npc_escortAI
|
||||
}
|
||||
break;
|
||||
case 13:
|
||||
DoScriptText(SAY_EVENT_INTRO_1, m_creature);
|
||||
DoScriptText(SAY_EVENT_INTRO_1, me);
|
||||
SetEscortPaused(true);
|
||||
JumpToNextStep(20000);
|
||||
break;
|
||||
case 17:
|
||||
DoScriptText(SAY_EVENT_INTRO_2, m_creature);
|
||||
DoScriptText(SAY_EVENT_INTRO_2, me);
|
||||
if (pInstance)
|
||||
pInstance->HandleGameObject(pInstance->GetData64(DATA_GO_TRIBUNAL_CONSOLE),true);
|
||||
m_creature->SetStandState(UNIT_STAND_STATE_KNEEL);
|
||||
me->SetStandState(UNIT_STAND_STATE_KNEEL);
|
||||
SetEscortPaused(true);
|
||||
JumpToNextStep(8500);
|
||||
break;
|
||||
@@ -326,16 +326,16 @@ struct npc_brann_hosAI : public npc_escortAI
|
||||
{
|
||||
uint32 uiSpawnNumber = DUNGEON_MODE(2,3);
|
||||
for (uint8 i = 0; i < uiSpawnNumber; ++i)
|
||||
m_creature->SummonCreature(CREATURE_DARK_RUNE_PROTECTOR, SpawnLocations[0], TEMPSUMMON_CORPSE_TIMED_DESPAWN, 30000);
|
||||
m_creature->SummonCreature(CREATURE_DARK_RUNE_STORMCALLER, SpawnLocations[0], TEMPSUMMON_CORPSE_TIMED_DESPAWN, 30000);
|
||||
me->SummonCreature(CREATURE_DARK_RUNE_PROTECTOR, SpawnLocations[0], TEMPSUMMON_CORPSE_TIMED_DESPAWN, 30000);
|
||||
me->SummonCreature(CREATURE_DARK_RUNE_STORMCALLER, SpawnLocations[0], TEMPSUMMON_CORPSE_TIMED_DESPAWN, 30000);
|
||||
break;
|
||||
}
|
||||
case 2:
|
||||
for (uint8 i = 0; i < 2; ++i)
|
||||
m_creature->SummonCreature(CREATURE_DARK_RUNE_STORMCALLER, SpawnLocations[0], TEMPSUMMON_CORPSE_TIMED_DESPAWN, 30000);
|
||||
me->SummonCreature(CREATURE_DARK_RUNE_STORMCALLER, SpawnLocations[0], TEMPSUMMON_CORPSE_TIMED_DESPAWN, 30000);
|
||||
break;
|
||||
case 3:
|
||||
m_creature->SummonCreature(CREATURE_IRON_GOLEM_CUSTODIAN, SpawnLocations[0], TEMPSUMMON_CORPSE_TIMED_DESPAWN, 30000);
|
||||
me->SummonCreature(CREATURE_IRON_GOLEM_CUSTODIAN, SpawnLocations[0], TEMPSUMMON_CORPSE_TIMED_DESPAWN, 30000);
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -343,8 +343,8 @@ struct npc_brann_hosAI : public npc_escortAI
|
||||
void JustSummoned(Creature* pSummoned)
|
||||
{
|
||||
lDwarfGUIDList.push_back(pSummoned->GetGUID());
|
||||
pSummoned->AddThreat(m_creature, 0.0f);
|
||||
pSummoned->AI()->AttackStart(m_creature);
|
||||
pSummoned->AddThreat(me, 0.0f);
|
||||
pSummoned->AI()->AttackStart(me);
|
||||
}
|
||||
|
||||
void JumpToNextStep(uint32 uiTimer)
|
||||
@@ -355,7 +355,7 @@ struct npc_brann_hosAI : public npc_escortAI
|
||||
|
||||
void StartWP()
|
||||
{
|
||||
m_creature->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP);
|
||||
me->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP);
|
||||
SetEscortPaused(false);
|
||||
uiStep = 1;
|
||||
Start();
|
||||
@@ -381,7 +381,7 @@ struct npc_brann_hosAI : public npc_escortAI
|
||||
pInstance->SetData(DATA_BRANN_EVENT, IN_PROGRESS);
|
||||
}
|
||||
bIsBattle = false;
|
||||
DoScriptText(SAY_ESCORT_START, m_creature);
|
||||
DoScriptText(SAY_ESCORT_START, me);
|
||||
SetRun(true);
|
||||
JumpToNextStep(0);
|
||||
break;
|
||||
@@ -391,49 +391,49 @@ struct npc_brann_hosAI : public npc_escortAI
|
||||
break;
|
||||
case 5:
|
||||
if (pInstance)
|
||||
if (Creature* pTemp = (Unit::GetCreature(*m_creature, pInstance->GetData64(DATA_ABEDNEUM))))
|
||||
if (Creature* pTemp = (Unit::GetCreature(*me, pInstance->GetData64(DATA_ABEDNEUM))))
|
||||
DoScriptText(SAY_EVENT_INTRO_3_ABED, pTemp);
|
||||
JumpToNextStep(8500);
|
||||
break;
|
||||
case 6:
|
||||
DoScriptText(SAY_EVENT_A_1, m_creature);
|
||||
DoScriptText(SAY_EVENT_A_1, me);
|
||||
JumpToNextStep(6500);
|
||||
break;
|
||||
case 7:
|
||||
if (pInstance)
|
||||
if (Creature* pTemp = Unit::GetCreature(*m_creature, pInstance->GetData64(DATA_KADDRAK)))
|
||||
if (Creature* pTemp = Unit::GetCreature(*me, pInstance->GetData64(DATA_KADDRAK)))
|
||||
DoScriptText(SAY_EVENT_A_2_KADD, pTemp);
|
||||
JumpToNextStep(12500);
|
||||
break;
|
||||
case 8:
|
||||
DoScriptText(SAY_EVENT_A_3, m_creature);
|
||||
DoScriptText(SAY_EVENT_A_3, me);
|
||||
if (pInstance)
|
||||
pInstance->HandleGameObject(pInstance->GetData64(DATA_GO_KADDRAK),true);
|
||||
if (Creature* pTemp = Unit::GetCreature(*m_creature, uiControllerGUID))
|
||||
if (Creature* pTemp = Unit::GetCreature(*me, uiControllerGUID))
|
||||
CAST_AI(mob_tribuna_controllerAI, pTemp->AI())->bKaddrakActivated = true;
|
||||
JumpToNextStep(5000);
|
||||
break;
|
||||
case 9:
|
||||
m_creature->SetReactState(REACT_PASSIVE);
|
||||
me->SetReactState(REACT_PASSIVE);
|
||||
SpawnDwarf(1);
|
||||
JumpToNextStep(20000);
|
||||
break;
|
||||
case 10:
|
||||
DoScriptText(SAY_EVENT_B_1, m_creature);
|
||||
DoScriptText(SAY_EVENT_B_1, me);
|
||||
JumpToNextStep(6000);
|
||||
break;
|
||||
case 11:
|
||||
if (pInstance)
|
||||
if (Creature* pTemp = Unit::GetCreature(*m_creature, pInstance->GetData64(DATA_MARNAK)))
|
||||
if (Creature* pTemp = Unit::GetCreature(*me, pInstance->GetData64(DATA_MARNAK)))
|
||||
DoScriptText(SAY_EVENT_B_2_MARN, pTemp);
|
||||
SpawnDwarf(1);
|
||||
JumpToNextStep(20000);
|
||||
break;
|
||||
case 12:
|
||||
DoScriptText(SAY_EVENT_B_3, m_creature);
|
||||
DoScriptText(SAY_EVENT_B_3, me);
|
||||
if (pInstance)
|
||||
pInstance->HandleGameObject(pInstance->GetData64(DATA_GO_MARNAK),true);
|
||||
if (Creature* pTemp = Unit::GetCreature(*m_creature, uiControllerGUID))
|
||||
if (Creature* pTemp = Unit::GetCreature(*me, uiControllerGUID))
|
||||
CAST_AI(mob_tribuna_controllerAI, pTemp->AI())->bMarnakActivated = true;
|
||||
JumpToNextStep(10000);
|
||||
break;
|
||||
@@ -446,7 +446,7 @@ struct npc_brann_hosAI : public npc_escortAI
|
||||
JumpToNextStep(20000);
|
||||
break;
|
||||
case 15:
|
||||
DoScriptText(SAY_EVENT_C_1, m_creature);
|
||||
DoScriptText(SAY_EVENT_C_1, me);
|
||||
SpawnDwarf(1);
|
||||
JumpToNextStep(10000);
|
||||
break;
|
||||
@@ -456,16 +456,16 @@ struct npc_brann_hosAI : public npc_escortAI
|
||||
break;
|
||||
case 17:
|
||||
if (pInstance)
|
||||
if (Creature* pTemp = Unit::GetCreature(*m_creature, pInstance->GetData64(DATA_ABEDNEUM)))
|
||||
if (Creature* pTemp = Unit::GetCreature(*me, pInstance->GetData64(DATA_ABEDNEUM)))
|
||||
DoScriptText(SAY_EVENT_C_2_ABED, pTemp);
|
||||
SpawnDwarf(1);
|
||||
JumpToNextStep(20000);
|
||||
break;
|
||||
case 18:
|
||||
DoScriptText(SAY_EVENT_C_3, m_creature);
|
||||
DoScriptText(SAY_EVENT_C_3, me);
|
||||
if (pInstance)
|
||||
pInstance->HandleGameObject(pInstance->GetData64(DATA_GO_ABEDNEUM),true);
|
||||
if (Creature* pTemp = Unit::GetCreature(*m_creature, uiControllerGUID))
|
||||
if (Creature* pTemp = Unit::GetCreature(*me, uiControllerGUID))
|
||||
CAST_AI(mob_tribuna_controllerAI, pTemp->AI())->bAbedneumActivated = true;
|
||||
JumpToNextStep(5000);
|
||||
break;
|
||||
@@ -478,13 +478,13 @@ struct npc_brann_hosAI : public npc_escortAI
|
||||
JumpToNextStep(15000);
|
||||
break;
|
||||
case 21:
|
||||
DoScriptText(SAY_EVENT_D_1, m_creature);
|
||||
DoScriptText(SAY_EVENT_D_1, me);
|
||||
SpawnDwarf(3);
|
||||
JumpToNextStep(20000);
|
||||
break;
|
||||
case 22:
|
||||
if (pInstance)
|
||||
if (Creature* pTemp = Unit::GetCreature(*m_creature, pInstance->GetData64(DATA_ABEDNEUM)))
|
||||
if (Creature* pTemp = Unit::GetCreature(*me, pInstance->GetData64(DATA_ABEDNEUM)))
|
||||
DoScriptText(SAY_EVENT_D_2_ABED, pTemp);
|
||||
SpawnDwarf(1);
|
||||
JumpToNextStep(5000);
|
||||
@@ -494,7 +494,7 @@ struct npc_brann_hosAI : public npc_escortAI
|
||||
JumpToNextStep(15000);
|
||||
break;
|
||||
case 24:
|
||||
DoScriptText(SAY_EVENT_D_3, m_creature);
|
||||
DoScriptText(SAY_EVENT_D_3, me);
|
||||
SpawnDwarf(3);
|
||||
JumpToNextStep(5000);
|
||||
break;
|
||||
@@ -508,25 +508,25 @@ struct npc_brann_hosAI : public npc_escortAI
|
||||
break;
|
||||
case 27:
|
||||
if (pInstance)
|
||||
if (Creature* pTemp = Unit::GetCreature(*m_creature, pInstance->GetData64(DATA_ABEDNEUM)))
|
||||
if (Creature* pTemp = Unit::GetCreature(*me, pInstance->GetData64(DATA_ABEDNEUM)))
|
||||
DoScriptText(SAY_EVENT_D_4_ABED, pTemp);
|
||||
SpawnDwarf(1);
|
||||
JumpToNextStep(10000);
|
||||
break;
|
||||
case 28:
|
||||
m_creature->SetReactState(REACT_DEFENSIVE);
|
||||
DoScriptText(SAY_EVENT_END_01, m_creature);
|
||||
m_creature->SetStandState(UNIT_STAND_STATE_STAND);
|
||||
me->SetReactState(REACT_DEFENSIVE);
|
||||
DoScriptText(SAY_EVENT_END_01, me);
|
||||
me->SetStandState(UNIT_STAND_STATE_STAND);
|
||||
if (pInstance)
|
||||
pInstance->HandleGameObject(pInstance->GetData64(DATA_GO_SKY_FLOOR),true);
|
||||
if (Creature* pTemp = Unit::GetCreature(*m_creature, uiControllerGUID))
|
||||
if (Creature* pTemp = Unit::GetCreature(*me, uiControllerGUID))
|
||||
pTemp->DealDamage(pTemp, pTemp->GetHealth(), NULL, DIRECT_DAMAGE, SPELL_SCHOOL_MASK_NORMAL, NULL, false);
|
||||
bIsBattle = true;
|
||||
SetEscortPaused(false);
|
||||
JumpToNextStep(6500);
|
||||
break;
|
||||
case 29:
|
||||
DoScriptText(SAY_EVENT_END_02, m_creature);
|
||||
DoScriptText(SAY_EVENT_END_02, me);
|
||||
if (pInstance)
|
||||
{
|
||||
pInstance->SetData(DATA_BRANN_EVENT, DONE);
|
||||
@@ -543,97 +543,97 @@ struct npc_brann_hosAI : public npc_escortAI
|
||||
break;
|
||||
case 30:
|
||||
if (pInstance)
|
||||
if (Creature* pTemp = Unit::GetCreature(*m_creature, pInstance->GetData64(DATA_ABEDNEUM)))
|
||||
if (Creature* pTemp = Unit::GetCreature(*me, pInstance->GetData64(DATA_ABEDNEUM)))
|
||||
DoScriptText(SAY_EVENT_END_03_ABED, pTemp);
|
||||
JumpToNextStep(8500);
|
||||
break;
|
||||
case 31:
|
||||
DoScriptText(SAY_EVENT_END_04, m_creature);
|
||||
DoScriptText(SAY_EVENT_END_04, me);
|
||||
JumpToNextStep(11500);
|
||||
break;
|
||||
case 32:
|
||||
if (pInstance)
|
||||
if (Creature* pTemp = Unit::GetCreature(*m_creature, pInstance->GetData64(DATA_ABEDNEUM)))
|
||||
if (Creature* pTemp = Unit::GetCreature(*me, pInstance->GetData64(DATA_ABEDNEUM)))
|
||||
DoScriptText(SAY_EVENT_END_05_ABED, pTemp);
|
||||
JumpToNextStep(11500);
|
||||
break;
|
||||
case 33:
|
||||
DoScriptText(SAY_EVENT_END_06, m_creature);
|
||||
DoScriptText(SAY_EVENT_END_06, me);
|
||||
JumpToNextStep(4500);
|
||||
break;
|
||||
case 34:
|
||||
if (pInstance)
|
||||
if (Creature* pTemp = Unit::GetCreature(*m_creature, pInstance->GetData64(DATA_ABEDNEUM)))
|
||||
if (Creature* pTemp = Unit::GetCreature(*me, pInstance->GetData64(DATA_ABEDNEUM)))
|
||||
DoScriptText(SAY_EVENT_END_07_ABED, pTemp);
|
||||
JumpToNextStep(22500);
|
||||
break;
|
||||
case 35:
|
||||
DoScriptText(SAY_EVENT_END_08, m_creature);
|
||||
DoScriptText(SAY_EVENT_END_08, me);
|
||||
JumpToNextStep(7500);
|
||||
break;
|
||||
case 36:
|
||||
if (pInstance)
|
||||
if (Creature* pTemp = Unit::GetCreature(*m_creature, pInstance->GetData64(DATA_KADDRAK)))
|
||||
if (Creature* pTemp = Unit::GetCreature(*me, pInstance->GetData64(DATA_KADDRAK)))
|
||||
DoScriptText(SAY_EVENT_END_09_KADD, pTemp);
|
||||
JumpToNextStep(18500);
|
||||
break;
|
||||
case 37:
|
||||
DoScriptText(SAY_EVENT_END_10, m_creature);
|
||||
DoScriptText(SAY_EVENT_END_10, me);
|
||||
JumpToNextStep(5500);
|
||||
break;
|
||||
case 38:
|
||||
if (pInstance)
|
||||
if (Creature* pTemp = Unit::GetCreature(*m_creature, pInstance->GetData64(DATA_KADDRAK)))
|
||||
if (Creature* pTemp = Unit::GetCreature(*me, pInstance->GetData64(DATA_KADDRAK)))
|
||||
DoScriptText(SAY_EVENT_END_11_KADD, pTemp);
|
||||
JumpToNextStep(20500);
|
||||
break;
|
||||
case 39:
|
||||
DoScriptText(SAY_EVENT_END_12, m_creature);
|
||||
DoScriptText(SAY_EVENT_END_12, me);
|
||||
JumpToNextStep(2500);
|
||||
break;
|
||||
case 40:
|
||||
if (pInstance)
|
||||
if (Creature* pTemp = Unit::GetCreature(*m_creature, pInstance->GetData64(DATA_KADDRAK)))
|
||||
if (Creature* pTemp = Unit::GetCreature(*me, pInstance->GetData64(DATA_KADDRAK)))
|
||||
DoScriptText(SAY_EVENT_END_13_KADD, pTemp);
|
||||
JumpToNextStep(19500);
|
||||
break;
|
||||
case 41:
|
||||
DoScriptText(SAY_EVENT_END_14, m_creature);
|
||||
DoScriptText(SAY_EVENT_END_14, me);
|
||||
JumpToNextStep(10500);
|
||||
break;
|
||||
case 42:
|
||||
if (pInstance)
|
||||
if (Creature* pTemp = Unit::GetCreature(*m_creature, pInstance->GetData64(DATA_MARNAK)))
|
||||
if (Creature* pTemp = Unit::GetCreature(*me, pInstance->GetData64(DATA_MARNAK)))
|
||||
DoScriptText(SAY_EVENT_END_15_MARN, pTemp);
|
||||
JumpToNextStep(6500);
|
||||
break;
|
||||
case 43:
|
||||
DoScriptText(SAY_EVENT_END_16, m_creature);
|
||||
DoScriptText(SAY_EVENT_END_16, me);
|
||||
JumpToNextStep(6500);
|
||||
break;
|
||||
case 44:
|
||||
if (pInstance)
|
||||
if (Creature* pTemp = Unit::GetCreature(*m_creature, pInstance->GetData64(DATA_MARNAK)))
|
||||
if (Creature* pTemp = Unit::GetCreature(*me, pInstance->GetData64(DATA_MARNAK)))
|
||||
DoScriptText(SAY_EVENT_END_17_MARN, pTemp);
|
||||
JumpToNextStep(25500);
|
||||
break;
|
||||
case 45:
|
||||
DoScriptText(SAY_EVENT_END_18, m_creature);
|
||||
DoScriptText(SAY_EVENT_END_18, me);
|
||||
JumpToNextStep(23500);
|
||||
break;
|
||||
case 46:
|
||||
if (pInstance)
|
||||
if (Creature* pTemp = Unit::GetCreature(*m_creature, pInstance->GetData64(DATA_MARNAK)))
|
||||
if (Creature* pTemp = Unit::GetCreature(*me, pInstance->GetData64(DATA_MARNAK)))
|
||||
DoScriptText(SAY_EVENT_END_19_MARN, pTemp);
|
||||
JumpToNextStep(3500);
|
||||
break;
|
||||
case 47:
|
||||
DoScriptText(SAY_EVENT_END_20, m_creature);
|
||||
DoScriptText(SAY_EVENT_END_20, me);
|
||||
JumpToNextStep(8500);
|
||||
break;
|
||||
case 48:
|
||||
if (pInstance)
|
||||
if (Creature* pTemp = Unit::GetCreature(*m_creature, pInstance->GetData64(DATA_ABEDNEUM)))
|
||||
if (Creature* pTemp = Unit::GetCreature(*me, pInstance->GetData64(DATA_ABEDNEUM)))
|
||||
DoScriptText(SAY_EVENT_END_21_ABED, pTemp);
|
||||
JumpToNextStep(5500);
|
||||
break;
|
||||
@@ -648,8 +648,8 @@ struct npc_brann_hosAI : public npc_escortAI
|
||||
}
|
||||
Player* pPlayer = GetPlayerForEscort();
|
||||
if (pPlayer)
|
||||
pPlayer->GroupEventHappens(QUEST_HALLS_OF_STONE, m_creature);
|
||||
m_creature->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP);
|
||||
pPlayer->GroupEventHappens(QUEST_HALLS_OF_STONE, me);
|
||||
me->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP);
|
||||
JumpToNextStep(180000);
|
||||
break;
|
||||
}
|
||||
@@ -661,7 +661,7 @@ struct npc_brann_hosAI : public npc_escortAI
|
||||
|
||||
if (!bIsLowHP && HealthBelowPct(30))
|
||||
{
|
||||
DoScriptText(SAY_LOW_HEALTH, m_creature);
|
||||
DoScriptText(SAY_LOW_HEALTH, me);
|
||||
bIsLowHP = true;
|
||||
}
|
||||
else if (bIsLowHP && !HealthBelowPct(30))
|
||||
|
||||
@@ -114,14 +114,14 @@ struct boss_algalonAI : public ScriptedAI
|
||||
{
|
||||
if (Summon)
|
||||
{
|
||||
DoScriptText(SAY_AGGRO, m_creature);
|
||||
m_creature->InterruptSpell(CURRENT_CHANNELED_SPELL);
|
||||
DoScriptText(SAY_AGGRO, me);
|
||||
me->InterruptSpell(CURRENT_CHANNELED_SPELL);
|
||||
DoZoneInCombat(who->ToCreature());
|
||||
}
|
||||
else
|
||||
{
|
||||
m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
||||
m_creature->SetReactState(REACT_PASSIVE);
|
||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
||||
me->SetReactState(REACT_PASSIVE);
|
||||
uiStep = 1;
|
||||
}
|
||||
|
||||
@@ -131,14 +131,14 @@ struct boss_algalonAI : public ScriptedAI
|
||||
|
||||
void KilledUnit(Unit *victim)
|
||||
{
|
||||
DoScriptText(RAND(SAY_SLAY_1,SAY_SLAY_2), m_creature);
|
||||
DoScriptText(RAND(SAY_SLAY_1,SAY_SLAY_2), me);
|
||||
}
|
||||
|
||||
void Reset()
|
||||
{
|
||||
Phase = 1;
|
||||
|
||||
m_creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
||||
if (pInstance)
|
||||
pInstance->SetData(TYPE_ALGALON, NOT_STARTED);
|
||||
|
||||
@@ -168,7 +168,7 @@ struct boss_algalonAI : public ScriptedAI
|
||||
|
||||
for (std::list<uint64>::const_iterator itr = m_lCollapsingStarGUIDList.begin(); itr != m_lCollapsingStarGUIDList.end(); ++itr)
|
||||
{
|
||||
if (Creature* pTemp = Unit::GetCreature(*m_creature, *itr))
|
||||
if (Creature* pTemp = Unit::GetCreature(*me, *itr))
|
||||
{
|
||||
if (pTemp->isAlive())
|
||||
pTemp->ForcedDespawn();
|
||||
@@ -182,17 +182,17 @@ struct boss_algalonAI : public ScriptedAI
|
||||
if (pSummoned->GetEntry() == CREATURE_COLLAPSING_STAR)
|
||||
{
|
||||
Unit* pTarget = SelectUnit(SELECT_TARGET_RANDOM, 0);
|
||||
if (m_creature->getVictim())
|
||||
pSummoned->AI()->AttackStart(pTarget ? pTarget : m_creature->getVictim());
|
||||
if (me->getVictim())
|
||||
pSummoned->AI()->AttackStart(pTarget ? pTarget : me->getVictim());
|
||||
m_lCollapsingStarGUIDList.push_back(pSummoned->GetGUID());
|
||||
}
|
||||
}
|
||||
|
||||
void SummonCollapsingStar(Unit* target)
|
||||
{
|
||||
DoScriptText(SAY_SUMMON_COLLAPSING_STAR, m_creature);
|
||||
m_creature->SummonCreature(CREATURE_COLLAPSING_STAR,target->GetPositionX()+15.0,target->GetPositionY()+15.0,target->GetPositionZ(),0, TEMPSUMMON_TIMED_DESPAWN, 100000);
|
||||
m_creature->SummonCreature(CREATURE_BLACK_HOLE,target->GetPositionX()+15.0,target->GetPositionY()+15.0,target->GetPositionZ(),0, TEMPSUMMON_TIMED_DESPAWN, 27000);
|
||||
DoScriptText(SAY_SUMMON_COLLAPSING_STAR, me);
|
||||
me->SummonCreature(CREATURE_COLLAPSING_STAR,target->GetPositionX()+15.0,target->GetPositionY()+15.0,target->GetPositionZ(),0, TEMPSUMMON_TIMED_DESPAWN, 100000);
|
||||
me->SummonCreature(CREATURE_BLACK_HOLE,target->GetPositionX()+15.0,target->GetPositionY()+15.0,target->GetPositionZ(),0, TEMPSUMMON_TIMED_DESPAWN, 27000);
|
||||
}
|
||||
|
||||
void UpdateAI(const uint32 diff)
|
||||
@@ -204,21 +204,21 @@ struct boss_algalonAI : public ScriptedAI
|
||||
if (Phase == 1 && HealthBelowPct(20))
|
||||
{
|
||||
Phase = 2;
|
||||
DoScriptText(SAY_PHASE_2, m_creature);
|
||||
DoScriptText(SAY_PHASE_2, me);
|
||||
}
|
||||
|
||||
if (HealthBelowPct(2))
|
||||
{
|
||||
m_creature->SummonGameObject(GAMEOBJECT_GIVE_OF_THE_OBSERVER, 1634.258667, -295.101166,417.321381,0,0,0,0,0,-10);
|
||||
me->SummonGameObject(GAMEOBJECT_GIVE_OF_THE_OBSERVER, 1634.258667, -295.101166,417.321381,0,0,0,0,0,-10);
|
||||
|
||||
// All of them. or random?
|
||||
DoScriptText(SAY_DEATH_1, m_creature);
|
||||
DoScriptText(SAY_DEATH_2, m_creature);
|
||||
DoScriptText(SAY_DEATH_3, m_creature);
|
||||
DoScriptText(SAY_DEATH_4, m_creature);
|
||||
DoScriptText(SAY_DEATH_5, m_creature);
|
||||
DoScriptText(SAY_DEATH_1, me);
|
||||
DoScriptText(SAY_DEATH_2, me);
|
||||
DoScriptText(SAY_DEATH_3, me);
|
||||
DoScriptText(SAY_DEATH_4, me);
|
||||
DoScriptText(SAY_DEATH_5, me);
|
||||
|
||||
m_creature->DisappearAndDie();
|
||||
me->DisappearAndDie();
|
||||
|
||||
if (pInstance)
|
||||
pInstance->SetData(TYPE_ALGALON, DONE);
|
||||
@@ -235,24 +235,24 @@ struct boss_algalonAI : public ScriptedAI
|
||||
switch(uiStep)
|
||||
{
|
||||
case 1:
|
||||
DoScriptText(SAY_SUMMON_1, m_creature);
|
||||
DoScriptText(SAY_SUMMON_1, me);
|
||||
JumpToNextStep(3000);
|
||||
break;
|
||||
case 2:
|
||||
DoScriptText(SAY_SUMMON_2, m_creature);
|
||||
DoScriptText(SAY_SUMMON_2, me);
|
||||
JumpToNextStep(3000);
|
||||
break;
|
||||
case 3:
|
||||
DoScriptText(SAY_SUMMON_3, m_creature);
|
||||
DoScriptText(SAY_SUMMON_3, me);
|
||||
JumpToNextStep(3000);
|
||||
break;
|
||||
case 4:
|
||||
DoScriptText(SAY_ENGADED_FOR_FIRTS_TIME, m_creature);
|
||||
DoScriptText(SAY_ENGADED_FOR_FIRTS_TIME, me);
|
||||
JumpToNextStep(3000);
|
||||
break;
|
||||
case 5:
|
||||
m_creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
||||
m_creature->SetReactState(REACT_AGGRESSIVE);
|
||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
||||
me->SetReactState(REACT_AGGRESSIVE);
|
||||
Summon = true;
|
||||
break;
|
||||
}
|
||||
@@ -263,29 +263,29 @@ struct boss_algalonAI : public ScriptedAI
|
||||
|
||||
if (QuantumStrike_Timer <= diff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(), RAID_MODE(SPELL_QUANTUM_STRIKE,H_SPELL_QUANTUM_STRIKE), true);
|
||||
DoCast(me->getVictim(), RAID_MODE(SPELL_QUANTUM_STRIKE,H_SPELL_QUANTUM_STRIKE), true);
|
||||
|
||||
QuantumStrike_Timer = urand(4000, 14000);
|
||||
} else QuantumStrike_Timer -= diff;
|
||||
|
||||
if (BigBang_Timer <= diff)
|
||||
{
|
||||
DoScriptText(RAND(SAY_BIG_BANG_1,SAY_BIG_BANG_2), m_creature);
|
||||
DoCast(m_creature->getVictim(), RAID_MODE(SPELL_BIG_BANG,H_SPELL_BIG_BANG), true);
|
||||
DoScriptText(RAND(SAY_BIG_BANG_1,SAY_BIG_BANG_2), me);
|
||||
DoCast(me->getVictim(), RAID_MODE(SPELL_BIG_BANG,H_SPELL_BIG_BANG), true);
|
||||
|
||||
BigBang_Timer = 90000;
|
||||
} else BigBang_Timer -= diff;
|
||||
|
||||
if (Ascend_Timer <= diff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(),SPELL_ASCEND, true);
|
||||
DoCast(me->getVictim(),SPELL_ASCEND, true);
|
||||
|
||||
Ascend_Timer = 480000;
|
||||
} else Ascend_Timer -= diff;
|
||||
|
||||
if (PhasePunch_Timer <= diff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(),SPELL_PHASE_PUNCH, true);
|
||||
DoCast(me->getVictim(),SPELL_PHASE_PUNCH, true);
|
||||
|
||||
PhasePunch_Timer = 8000;
|
||||
} else PhasePunch_Timer -= diff;
|
||||
@@ -299,8 +299,8 @@ struct boss_algalonAI : public ScriptedAI
|
||||
|
||||
if (Berserk_Timer <= diff)
|
||||
{
|
||||
DoScriptText(SAY_BERSERK, m_creature);
|
||||
DoCast(m_creature->getVictim(),SPELL_BERSERK, true);
|
||||
DoScriptText(SAY_BERSERK, me);
|
||||
DoCast(me->getVictim(),SPELL_BERSERK, true);
|
||||
|
||||
Berserk_Timer = 360000;
|
||||
} else Berserk_Timer -= diff;
|
||||
@@ -316,8 +316,8 @@ struct boss_algalonAI : public ScriptedAI
|
||||
{
|
||||
if (Ascend_Timer <= diff)
|
||||
{
|
||||
DoCast(m_creature, SPELL_ASCEND);
|
||||
DoScriptText(SAY_BERSERK, m_creature);
|
||||
DoCast(me, SPELL_ASCEND);
|
||||
DoScriptText(SAY_BERSERK, me);
|
||||
Ascend_Timer = urand(360000,365000);
|
||||
Enrage = false;
|
||||
} else Ascend_Timer -= diff;
|
||||
@@ -352,7 +352,7 @@ struct mob_collapsing_starAI : public ScriptedAI
|
||||
|
||||
if (BlackHoleExplosion_Timer <= diff)
|
||||
{
|
||||
m_creature->CastSpell(m_creature, SPELL_BLACK_HOLE_EXPLOSION, false);
|
||||
me->CastSpell(me, SPELL_BLACK_HOLE_EXPLOSION, false);
|
||||
BlackHoleExplosion_Timer = 0;
|
||||
} else BlackHoleExplosion_Timer -= diff;
|
||||
}
|
||||
|
||||
@@ -113,9 +113,9 @@ enum Yells
|
||||
SAY_BRUNDIR_BERSERK = -1603047,
|
||||
};
|
||||
|
||||
bool IsEncounterComplete(ScriptedInstance* pInstance, Creature* m_creature)
|
||||
bool IsEncounterComplete(ScriptedInstance* pInstance, Creature* me)
|
||||
{
|
||||
if (!pInstance || !m_creature)
|
||||
if (!pInstance || !me)
|
||||
return false;
|
||||
|
||||
for (uint8 i = 0; i < 3; ++i)
|
||||
@@ -124,7 +124,7 @@ bool IsEncounterComplete(ScriptedInstance* pInstance, Creature* m_creature)
|
||||
if (!guid)
|
||||
return false;
|
||||
|
||||
if (Creature *boss = Unit::GetCreature(*m_creature, guid))
|
||||
if (Creature *boss = Unit::GetCreature(*me, guid))
|
||||
{
|
||||
if (boss->isAlive())
|
||||
return false;
|
||||
@@ -146,7 +146,7 @@ struct boss_steelbreakerAI : public ScriptedAI
|
||||
{
|
||||
events.Reset();
|
||||
phase = 0;
|
||||
m_creature->RemoveAllAuras();
|
||||
me->RemoveAllAuras();
|
||||
if (pInstance)
|
||||
pInstance->SetData(TYPE_ASSEMBLY, NOT_STARTED);
|
||||
}
|
||||
@@ -157,9 +157,9 @@ struct boss_steelbreakerAI : public ScriptedAI
|
||||
|
||||
void EnterCombat(Unit *who)
|
||||
{
|
||||
DoScriptText(SAY_STEELBREAKER_AGGRO, m_creature);
|
||||
DoScriptText(SAY_STEELBREAKER_AGGRO, me);
|
||||
DoZoneInCombat();
|
||||
DoCast(m_creature, RAID_MODE(SPELL_HIGH_VOLTAGE, SPELL_HIGH_VOLTAGE_H));
|
||||
DoCast(me, RAID_MODE(SPELL_HIGH_VOLTAGE, SPELL_HIGH_VOLTAGE_H));
|
||||
events.ScheduleEvent(EVENT_ENRAGE, 900000);
|
||||
UpdatePhase();
|
||||
}
|
||||
@@ -177,13 +177,13 @@ struct boss_steelbreakerAI : public ScriptedAI
|
||||
|
||||
void DamageTaken(Unit* pKiller, uint32 &damage)
|
||||
{
|
||||
if (damage >= m_creature->GetHealth())
|
||||
if (damage >= me->GetHealth())
|
||||
{
|
||||
if (Creature* Brundir = Unit::GetCreature(*m_creature, pInstance ? pInstance->GetData64(DATA_STORMCALLER_BRUNDIR) : 0))
|
||||
if (Creature* Brundir = Unit::GetCreature(*me, pInstance ? pInstance->GetData64(DATA_STORMCALLER_BRUNDIR) : 0))
|
||||
if (Brundir->isAlive())
|
||||
Brundir->SetHealth(Brundir->GetMaxHealth());
|
||||
|
||||
if (Creature* Molgeim = Unit::GetCreature(*m_creature, pInstance ? pInstance->GetData64(DATA_RUNEMASTER_MOLGEIM) : 0))
|
||||
if (Creature* Molgeim = Unit::GetCreature(*me, pInstance ? pInstance->GetData64(DATA_RUNEMASTER_MOLGEIM) : 0))
|
||||
if (Molgeim->isAlive())
|
||||
Molgeim->SetHealth(Molgeim->GetMaxHealth());
|
||||
|
||||
@@ -193,17 +193,17 @@ struct boss_steelbreakerAI : public ScriptedAI
|
||||
|
||||
void JustDied(Unit* Killer)
|
||||
{
|
||||
DoScriptText(RAND(SAY_STEELBREAKER_DEATH_1,SAY_STEELBREAKER_DEATH_2), m_creature);
|
||||
if (IsEncounterComplete(pInstance, m_creature) && pInstance)
|
||||
DoScriptText(RAND(SAY_STEELBREAKER_DEATH_1,SAY_STEELBREAKER_DEATH_2), me);
|
||||
if (IsEncounterComplete(pInstance, me) && pInstance)
|
||||
pInstance->SetData(TYPE_ASSEMBLY, DONE);
|
||||
}
|
||||
|
||||
void KilledUnit(Unit *who)
|
||||
{
|
||||
DoScriptText(RAND(SAY_STEELBREAKER_SLAY_1,SAY_STEELBREAKER_SLAY_2), m_creature);
|
||||
DoScriptText(RAND(SAY_STEELBREAKER_SLAY_1,SAY_STEELBREAKER_SLAY_2), me);
|
||||
|
||||
if (phase == 3)
|
||||
DoCast(m_creature, SPELL_ELECTRICAL_CHARGE);
|
||||
DoCast(me, SPELL_ELECTRICAL_CHARGE);
|
||||
}
|
||||
|
||||
void SpellHit(Unit *from, const SpellEntry *spell)
|
||||
@@ -224,7 +224,7 @@ struct boss_steelbreakerAI : public ScriptedAI
|
||||
switch(eventId)
|
||||
{
|
||||
case EVENT_ENRAGE:
|
||||
DoScriptText(SAY_STEELBREAKER_BERSERK, m_creature);
|
||||
DoScriptText(SAY_STEELBREAKER_BERSERK, me);
|
||||
DoCast(SPELL_BERSERK);
|
||||
break;
|
||||
case EVENT_FUSION_PUNCH:
|
||||
@@ -237,7 +237,7 @@ struct boss_steelbreakerAI : public ScriptedAI
|
||||
events.ScheduleEvent(EVENT_STATIC_DISRUPTION, urand(20000, 40000));
|
||||
break;
|
||||
case EVENT_OVERWHELMING_POWER:
|
||||
DoScriptText(SAY_STEELBREAKER_POWER, m_creature);
|
||||
DoScriptText(SAY_STEELBREAKER_POWER, me);
|
||||
DoCast(me->getVictim(), RAID_MODE(SPELL_OVERWHELMING_POWER, SPELL_OVERWHELMING_POWER_H));
|
||||
events.ScheduleEvent(EVENT_OVERWHELMING_POWER, RAID_MODE(60000, 35000));
|
||||
break;
|
||||
@@ -260,7 +260,7 @@ struct boss_runemaster_molgeimAI : public ScriptedAI
|
||||
if (pInstance)
|
||||
pInstance->SetData(TYPE_ASSEMBLY, NOT_STARTED);
|
||||
events.Reset();
|
||||
m_creature->RemoveAllAuras();
|
||||
me->RemoveAllAuras();
|
||||
phase = 0;
|
||||
}
|
||||
|
||||
@@ -270,7 +270,7 @@ struct boss_runemaster_molgeimAI : public ScriptedAI
|
||||
|
||||
void EnterCombat(Unit* who)
|
||||
{
|
||||
DoScriptText(SAY_MOLGEIM_AGGRO, m_creature);
|
||||
DoScriptText(SAY_MOLGEIM_AGGRO, me);
|
||||
DoZoneInCombat();
|
||||
events.ScheduleEvent(EVENT_ENRAGE, 900000);
|
||||
UpdatePhase();
|
||||
@@ -290,30 +290,30 @@ struct boss_runemaster_molgeimAI : public ScriptedAI
|
||||
|
||||
void DamageTaken(Unit* pKiller, uint32 &damage)
|
||||
{
|
||||
if (damage >= m_creature->GetHealth())
|
||||
if (damage >= me->GetHealth())
|
||||
{
|
||||
if (Creature* Steelbreaker = Unit::GetCreature(*m_creature, pInstance ? pInstance->GetData64(DATA_STEELBREAKER) : 0))
|
||||
if (Creature* Steelbreaker = Unit::GetCreature(*me, pInstance ? pInstance->GetData64(DATA_STEELBREAKER) : 0))
|
||||
if (Steelbreaker->isAlive())
|
||||
Steelbreaker->SetHealth(Steelbreaker->GetMaxHealth());
|
||||
|
||||
if (Creature* Brundir = Unit::GetCreature((*m_creature), pInstance ? pInstance->GetData64(DATA_STORMCALLER_BRUNDIR) : 0))
|
||||
if (Creature* Brundir = Unit::GetCreature((*me), pInstance ? pInstance->GetData64(DATA_STORMCALLER_BRUNDIR) : 0))
|
||||
if (Brundir->isAlive())
|
||||
Brundir->SetHealth(Brundir->GetMaxHealth());
|
||||
|
||||
DoCast(m_creature, SPELL_SUPERCHARGE);
|
||||
DoCast(me, SPELL_SUPERCHARGE);
|
||||
}
|
||||
}
|
||||
|
||||
void JustDied(Unit* Killer)
|
||||
{
|
||||
DoScriptText(RAND(SAY_MOLGEIM_DEATH_1,SAY_MOLGEIM_DEATH_2), m_creature);
|
||||
if (IsEncounterComplete(pInstance, m_creature) && pInstance)
|
||||
DoScriptText(RAND(SAY_MOLGEIM_DEATH_1,SAY_MOLGEIM_DEATH_2), me);
|
||||
if (IsEncounterComplete(pInstance, me) && pInstance)
|
||||
pInstance->SetData(TYPE_ASSEMBLY, DONE);
|
||||
}
|
||||
|
||||
void KilledUnit(Unit *who)
|
||||
{
|
||||
DoScriptText(RAND(SAY_MOLGEIM_SLAY_1,SAY_MOLGEIM_SLAY_2), m_creature);
|
||||
DoScriptText(RAND(SAY_MOLGEIM_SLAY_1,SAY_MOLGEIM_SLAY_2), me);
|
||||
}
|
||||
|
||||
void SpellHit(Unit *from, const SpellEntry *spell)
|
||||
@@ -334,30 +334,30 @@ struct boss_runemaster_molgeimAI : public ScriptedAI
|
||||
switch(eventId)
|
||||
{
|
||||
case EVENT_ENRAGE:
|
||||
DoScriptText(SAY_MOLGEIM_BERSERK, m_creature);
|
||||
DoScriptText(SAY_MOLGEIM_BERSERK, me);
|
||||
DoCast(SPELL_BERSERK);
|
||||
break;
|
||||
case EVENT_RUNE_OF_POWER: // Improve target selection; random alive friendly
|
||||
{
|
||||
Unit *pTarget = DoSelectLowestHpFriendly(60);
|
||||
if (!pTarget || (pTarget && !pTarget->isAlive()))
|
||||
pTarget = m_creature;
|
||||
pTarget = me;
|
||||
DoCast(pTarget, SPELL_RUNE_OF_POWER);
|
||||
events.ScheduleEvent(EVENT_RUNE_OF_POWER, 60000);
|
||||
break;
|
||||
}
|
||||
case EVENT_SHIELD_OF_RUNES:
|
||||
DoCast(m_creature, RAID_MODE(SPELL_SHIELD_OF_RUNES, SPELL_SHIELD_OF_RUNES_H));
|
||||
DoCast(me, RAID_MODE(SPELL_SHIELD_OF_RUNES, SPELL_SHIELD_OF_RUNES_H));
|
||||
events.ScheduleEvent(EVENT_SHIELD_OF_RUNES, urand(27000,34000));
|
||||
break;
|
||||
case EVENT_RUNE_OF_DEATH:
|
||||
DoScriptText(SAY_MOLGEIM_RUNE_DEATH, m_creature);
|
||||
DoScriptText(SAY_MOLGEIM_RUNE_DEATH, me);
|
||||
if (Unit *pTarget = SelectTarget(SELECT_TARGET_RANDOM))
|
||||
DoCast(pTarget, SPELL_RUNE_OF_DEATH);
|
||||
events.ScheduleEvent(EVENT_RUNE_OF_DEATH, urand(30000,40000));
|
||||
break;
|
||||
case EVENT_RUNE_OF_SUMMONING:
|
||||
DoScriptText(SAY_MOLGEIM_SUMMON, m_creature);
|
||||
DoScriptText(SAY_MOLGEIM_SUMMON, me);
|
||||
if (Unit *pTarget = SelectTarget(SELECT_TARGET_RANDOM))
|
||||
DoCast(pTarget, SPELL_RUNE_OF_SUMMONING);
|
||||
events.ScheduleEvent(EVENT_RUNE_OF_SUMMONING, urand(20000,30000));
|
||||
@@ -378,26 +378,26 @@ struct mob_lightning_elementalAI : public ScriptedAI
|
||||
|
||||
void Charge()
|
||||
{
|
||||
Unit* pTarget = m_creature->SelectNearestTarget();
|
||||
m_creature->AddThreat(pTarget, 5000000.0f);
|
||||
Unit* pTarget = me->SelectNearestTarget();
|
||||
me->AddThreat(pTarget, 5000000.0f);
|
||||
AttackStart(pTarget);
|
||||
}
|
||||
|
||||
void UpdateAI(const uint32 diff)
|
||||
{
|
||||
if (!m_creature->isInCombat())
|
||||
if (!me->isInCombat())
|
||||
return;
|
||||
|
||||
if (!UpdateVictim())
|
||||
return;
|
||||
|
||||
if (m_creature->IsWithinMeleeRange(m_creature->getVictim()))
|
||||
if (me->IsWithinMeleeRange(me->getVictim()))
|
||||
{
|
||||
DoCast(m_creature->getVictim(), RAID_MODE(SPELL_LIGHTNING_BLAST, SPELL_LIGHTNING_BLAST_H));
|
||||
m_creature->Kill(m_creature); // hack until spell works
|
||||
DoCast(me->getVictim(), RAID_MODE(SPELL_LIGHTNING_BLAST, SPELL_LIGHTNING_BLAST_H));
|
||||
me->Kill(me); // hack until spell works
|
||||
}
|
||||
|
||||
m_creature->GetMotionMaster()->MoveChase(m_creature->getVictim()); // needed at every update?
|
||||
me->GetMotionMaster()->MoveChase(me->getVictim()); // needed at every update?
|
||||
}
|
||||
};
|
||||
|
||||
@@ -410,8 +410,8 @@ struct mob_rune_of_summoningAI : public ScriptedAI
|
||||
|
||||
void SummonLightningElemental()
|
||||
{
|
||||
m_creature->SummonCreature(CREATURE_RUNE_OF_SUMMONING, m_creature->GetPositionX(), m_creature->GetPositionY(), m_creature->GetPositionZ(), 0, TEMPSUMMON_CORPSE_DESPAWN);
|
||||
m_creature->DealDamage(m_creature, m_creature->GetHealth());
|
||||
me->SummonCreature(CREATURE_RUNE_OF_SUMMONING, me->GetPositionX(), me->GetPositionY(), me->GetPositionZ(), 0, TEMPSUMMON_CORPSE_DESPAWN);
|
||||
me->DealDamage(me, me->GetHealth());
|
||||
}
|
||||
};
|
||||
|
||||
@@ -426,7 +426,7 @@ struct boss_stormcaller_brundirAI : public ScriptedAI
|
||||
{
|
||||
if (pInstance)
|
||||
pInstance->SetData(TYPE_ASSEMBLY, NOT_STARTED);
|
||||
m_creature->RemoveAllAuras();
|
||||
me->RemoveAllAuras();
|
||||
events.Reset();
|
||||
phase = 0;
|
||||
}
|
||||
@@ -437,7 +437,7 @@ struct boss_stormcaller_brundirAI : public ScriptedAI
|
||||
|
||||
void EnterCombat(Unit* who)
|
||||
{
|
||||
DoScriptText(SAY_BRUNDIR_AGGRO, m_creature);
|
||||
DoScriptText(SAY_BRUNDIR_AGGRO, me);
|
||||
DoZoneInCombat();
|
||||
events.ScheduleEvent(EVENT_ENRAGE, 900000);
|
||||
UpdatePhase();
|
||||
@@ -453,20 +453,20 @@ struct boss_stormcaller_brundirAI : public ScriptedAI
|
||||
events.RescheduleEvent(EVENT_LIGHTNING_WHIRL, urand(20000,40000));
|
||||
if (phase >= 3)
|
||||
{
|
||||
DoCast(m_creature, SPELL_STORMSHIELD);
|
||||
DoCast(me, SPELL_STORMSHIELD);
|
||||
events.RescheduleEvent(EVENT_LIGHTNING_TENDRILS, urand(40000,80000));
|
||||
}
|
||||
}
|
||||
|
||||
void DamageTaken(Unit* pKiller, uint32 &damage)
|
||||
{
|
||||
if (damage >= m_creature->GetHealth())
|
||||
if (damage >= me->GetHealth())
|
||||
{
|
||||
if (Creature* Steelbreaker = Unit::GetCreature(*m_creature, pInstance ? pInstance->GetData64(DATA_STEELBREAKER) : 0))
|
||||
if (Creature* Steelbreaker = Unit::GetCreature(*me, pInstance ? pInstance->GetData64(DATA_STEELBREAKER) : 0))
|
||||
if (Steelbreaker->isAlive())
|
||||
Steelbreaker->SetHealth(Steelbreaker->GetMaxHealth());
|
||||
|
||||
if (Creature* Molgeim = Unit::GetCreature(*m_creature, pInstance ? pInstance->GetData64(DATA_RUNEMASTER_MOLGEIM) : 0))
|
||||
if (Creature* Molgeim = Unit::GetCreature(*me, pInstance ? pInstance->GetData64(DATA_RUNEMASTER_MOLGEIM) : 0))
|
||||
if (Molgeim->isAlive())
|
||||
Molgeim->SetHealth(Molgeim->GetMaxHealth());
|
||||
|
||||
@@ -476,14 +476,14 @@ struct boss_stormcaller_brundirAI : public ScriptedAI
|
||||
|
||||
void JustDied(Unit* Killer)
|
||||
{
|
||||
DoScriptText(RAND(SAY_BRUNDIR_DEATH_1,SAY_BRUNDIR_DEATH_2), m_creature);
|
||||
if (IsEncounterComplete(pInstance, m_creature) && pInstance)
|
||||
DoScriptText(RAND(SAY_BRUNDIR_DEATH_1,SAY_BRUNDIR_DEATH_2), me);
|
||||
if (IsEncounterComplete(pInstance, me) && pInstance)
|
||||
pInstance->SetData(TYPE_ASSEMBLY, DONE);
|
||||
}
|
||||
|
||||
void KilledUnit(Unit *who)
|
||||
{
|
||||
DoScriptText(RAND(SAY_BRUNDIR_SLAY_1,SAY_BRUNDIR_SLAY_2), m_creature);
|
||||
DoScriptText(RAND(SAY_BRUNDIR_SLAY_1,SAY_BRUNDIR_SLAY_2), me);
|
||||
}
|
||||
|
||||
void SpellHit(Unit *from, const SpellEntry *spell)
|
||||
@@ -504,7 +504,7 @@ struct boss_stormcaller_brundirAI : public ScriptedAI
|
||||
switch(eventId)
|
||||
{
|
||||
case EVENT_ENRAGE:
|
||||
DoScriptText(SAY_BRUNDIR_BERSERK, m_creature);
|
||||
DoScriptText(SAY_BRUNDIR_BERSERK, me);
|
||||
DoCast(SPELL_BERSERK);
|
||||
break;
|
||||
case EVENT_CHAIN_LIGHTNING:
|
||||
|
||||
@@ -53,17 +53,17 @@ struct boss_auriaya_AI : public BossAI
|
||||
void EnterCombat(Unit* who)
|
||||
{
|
||||
_EnterCombat();
|
||||
DoScriptText(SAY_AGGRO,m_creature);
|
||||
DoScriptText(SAY_AGGRO,me);
|
||||
}
|
||||
|
||||
void KilledUnit(Unit* victim)
|
||||
{
|
||||
DoScriptText(RAND(SAY_SLAY_1,SAY_SLAY_2), m_creature);
|
||||
DoScriptText(RAND(SAY_SLAY_1,SAY_SLAY_2), me);
|
||||
}
|
||||
|
||||
void JustDied(Unit *victim)
|
||||
{
|
||||
DoScriptText(SAY_DEATH, m_creature);
|
||||
DoScriptText(SAY_DEATH, me);
|
||||
_JustDied();
|
||||
}
|
||||
|
||||
|
||||
@@ -99,14 +99,14 @@ struct boss_flame_leviathanAI : public BossAI
|
||||
void Reset()
|
||||
{
|
||||
_Reset();
|
||||
m_creature->SetReactState(REACT_AGGRESSIVE);
|
||||
me->SetReactState(REACT_AGGRESSIVE);
|
||||
}
|
||||
|
||||
void EnterCombat(Unit *who)
|
||||
{
|
||||
_EnterCombat();
|
||||
DoScriptText(SAY_AGGRO, m_creature);
|
||||
m_creature->SetReactState(REACT_DEFENSIVE);
|
||||
DoScriptText(SAY_AGGRO, me);
|
||||
me->SetReactState(REACT_DEFENSIVE);
|
||||
events.ScheduleEvent(EVENT_PURSUE, 0);
|
||||
events.ScheduleEvent(EVENT_MISSILE, 1500);
|
||||
events.ScheduleEvent(EVENT_VENT, 20000);
|
||||
@@ -127,7 +127,7 @@ struct boss_flame_leviathanAI : public BossAI
|
||||
|
||||
void JustDied(Unit *victim)
|
||||
{
|
||||
DoScriptText(SAY_DEATH, m_creature);
|
||||
DoScriptText(SAY_DEATH, me);
|
||||
_JustDied();
|
||||
}
|
||||
|
||||
@@ -136,15 +136,15 @@ struct boss_flame_leviathanAI : public BossAI
|
||||
if (spell->Id == 62472)
|
||||
vehicle->InstallAllAccessories();
|
||||
else if (spell->Id == SPELL_ELECTROSHOCK)
|
||||
m_creature->InterruptSpell(CURRENT_CHANNELED_SPELL);
|
||||
me->InterruptSpell(CURRENT_CHANNELED_SPELL);
|
||||
}
|
||||
|
||||
void UpdateAI(const uint32 diff)
|
||||
{
|
||||
if (!m_creature->isInCombat())
|
||||
if (!me->isInCombat())
|
||||
return;
|
||||
|
||||
if (m_creature->getThreatManager().isThreatListEmpty())
|
||||
if (me->getThreatManager().isThreatListEmpty())
|
||||
{
|
||||
EnterEvadeMode();
|
||||
return;
|
||||
@@ -152,11 +152,11 @@ struct boss_flame_leviathanAI : public BossAI
|
||||
|
||||
events.Update(diff);
|
||||
|
||||
if (m_creature->hasUnitState(UNIT_STAT_CASTING))
|
||||
if (me->hasUnitState(UNIT_STAT_CASTING))
|
||||
return;
|
||||
|
||||
uint32 eventId = events.GetEvent();
|
||||
if (!m_creature->getVictim())
|
||||
if (!me->getVictim())
|
||||
eventId = EVENT_PURSUE;
|
||||
|
||||
switch(eventId)
|
||||
@@ -166,7 +166,7 @@ struct boss_flame_leviathanAI : public BossAI
|
||||
DoCastAOE(SPELL_PURSUED, true);
|
||||
//events.RepeatEvent(35000); // this should not be used because eventId may be overriden
|
||||
events.RescheduleEvent(EVENT_PURSUE, 35000);
|
||||
if (!m_creature->getVictim()) // all siege engines and demolishers are dead
|
||||
if (!me->getVictim()) // all siege engines and demolishers are dead
|
||||
UpdateVictim(); // begin to kill other things
|
||||
return;
|
||||
case EVENT_MISSILE:
|
||||
@@ -189,11 +189,11 @@ struct boss_flame_leviathanAI : public BossAI
|
||||
events.RepeatEvent(2000);
|
||||
return;
|
||||
case EVENT_MIMIRON_INFERNO: // Not Blizzlike
|
||||
DoCast(m_creature->getVictim(), SPELL_MIMIRON_INFERNO);
|
||||
DoCast(me->getVictim(), SPELL_MIMIRON_INFERNO);
|
||||
events.RepeatEvent(urand(60000, 120000));
|
||||
return;
|
||||
case EVENT_HODIR_FURY: // Not Blizzlike
|
||||
DoCast(m_creature->getVictim(), SPELL_HODIR_FURY);
|
||||
DoCast(me->getVictim(), SPELL_HODIR_FURY);
|
||||
events.RepeatEvent(urand(60000, 120000));
|
||||
return;
|
||||
default:
|
||||
@@ -213,7 +213,7 @@ struct boss_flame_leviathan_seatAI : public PassiveAI
|
||||
{
|
||||
assert(vehicle);
|
||||
#ifdef BOSS_DEBUG
|
||||
m_creature->SetReactState(REACT_AGGRESSIVE);
|
||||
me->SetReactState(REACT_AGGRESSIVE);
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -230,7 +230,7 @@ struct boss_flame_leviathan_seatAI : public PassiveAI
|
||||
|
||||
void PassengerBoarded(Unit *who, int8 seatId, bool apply)
|
||||
{
|
||||
if (!m_creature->GetVehicle())
|
||||
if (!me->GetVehicle())
|
||||
return;
|
||||
|
||||
if (seatId == SEAT_PLAYER)
|
||||
@@ -240,7 +240,7 @@ struct boss_flame_leviathan_seatAI : public PassiveAI
|
||||
|
||||
if (Creature *turret = CAST_CRE(vehicle->GetPassenger(SEAT_TURRET)))
|
||||
{
|
||||
turret->setFaction(m_creature->GetVehicleBase()->getFaction());
|
||||
turret->setFaction(me->GetVehicleBase()->getFaction());
|
||||
turret->SetUInt32Value(UNIT_FIELD_FLAGS, 0); // unselectable
|
||||
turret->AI()->AttackStart(who);
|
||||
}
|
||||
@@ -290,15 +290,15 @@ struct boss_flame_leviathan_overload_deviceAI : public PassiveAI
|
||||
{
|
||||
if (param == EVENT_SPELLCLICK)
|
||||
{
|
||||
m_creature->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_SPELLCLICK);
|
||||
m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
||||
if (m_creature->GetVehicle())
|
||||
me->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_SPELLCLICK);
|
||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
||||
if (me->GetVehicle())
|
||||
{
|
||||
if (Unit *player = m_creature->GetVehicle()->GetPassenger(SEAT_PLAYER))
|
||||
if (Unit *player = me->GetVehicle()->GetPassenger(SEAT_PLAYER))
|
||||
{
|
||||
player->ExitVehicle();
|
||||
m_creature->GetVehicleBase()->CastSpell(player, SPELL_SMOKE_TRAIL, true);
|
||||
if (Unit *leviathan = m_creature->GetVehicleBase()->GetVehicleBase())
|
||||
me->GetVehicleBase()->CastSpell(player, SPELL_SMOKE_TRAIL, true);
|
||||
if (Unit *leviathan = me->GetVehicleBase()->GetVehicleBase())
|
||||
player->GetMotionMaster()->MoveKnockbackFrom(leviathan->GetPositionX(), leviathan->GetPositionY(), 30, 30);
|
||||
}
|
||||
}
|
||||
@@ -312,18 +312,18 @@ struct boss_flame_leviathan_safety_containerAI : public PassiveAI
|
||||
|
||||
void MovementInform(uint32 type, uint32 id)
|
||||
{
|
||||
if (id == m_creature->GetEntry())
|
||||
if (id == me->GetEntry())
|
||||
{
|
||||
if (Creature *liquid = DoSummon(MOB_LIQUID, me, 0))
|
||||
liquid->CastSpell(liquid, 62494, true);
|
||||
m_creature->DisappearAndDie(); // this will relocate creature to sky
|
||||
me->DisappearAndDie(); // this will relocate creature to sky
|
||||
}
|
||||
}
|
||||
|
||||
void UpdateAI(const uint32 diff)
|
||||
{
|
||||
if (!m_creature->GetVehicle() && m_creature->isSummon() && m_creature->GetMotionMaster()->GetCurrentMovementGeneratorType() != POINT_MOTION_TYPE)
|
||||
m_creature->GetMotionMaster()->MoveFall(409.8f, m_creature->GetEntry());
|
||||
if (!me->GetVehicle() && me->isSummon() && me->GetMotionMaster()->GetCurrentMovementGeneratorType() != POINT_MOTION_TYPE)
|
||||
me->GetMotionMaster()->MoveFall(409.8f, me->GetEntry());
|
||||
}
|
||||
};
|
||||
|
||||
@@ -331,7 +331,7 @@ struct spell_pool_of_tarAI : public TriggerAI
|
||||
{
|
||||
spell_pool_of_tarAI(Creature *c) : TriggerAI(c)
|
||||
{
|
||||
m_creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
||||
}
|
||||
|
||||
void DamageTaken(Unit *who, uint32 &damage)
|
||||
@@ -341,8 +341,8 @@ struct spell_pool_of_tarAI : public TriggerAI
|
||||
|
||||
void SpellHit(Unit* caster, const SpellEntry *spell)
|
||||
{
|
||||
if (spell->SchoolMask & SPELL_SCHOOL_MASK_FIRE && !m_creature->HasAura(SPELL_BLAZE))
|
||||
m_creature->CastSpell(me, SPELL_BLAZE, true);
|
||||
if (spell->SchoolMask & SPELL_SCHOOL_MASK_FIRE && !me->HasAura(SPELL_BLAZE))
|
||||
me->CastSpell(me, SPELL_BLAZE, true);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@@ -64,18 +64,18 @@ struct boss_freyaAI : public BossAI
|
||||
|
||||
void KilledUnit(Unit *victim)
|
||||
{
|
||||
DoScriptText(RAND(SAY_SLAY_1,SAY_SLAY_2), m_creature);
|
||||
DoScriptText(RAND(SAY_SLAY_1,SAY_SLAY_2), me);
|
||||
}
|
||||
|
||||
void JustDied(Unit *victim)
|
||||
{
|
||||
DoScriptText(SAY_DEATH, m_creature);
|
||||
DoScriptText(SAY_DEATH, me);
|
||||
_JustDied();
|
||||
}
|
||||
|
||||
void EnterCombat(Unit* pWho)
|
||||
{
|
||||
DoScriptText(SAY_AGGRO, m_creature);
|
||||
DoScriptText(SAY_AGGRO, me);
|
||||
_EnterCombat();
|
||||
}
|
||||
|
||||
|
||||
@@ -45,18 +45,18 @@ struct boss_hodirAI : public BossAI
|
||||
|
||||
void KilledUnit(Unit *victim)
|
||||
{
|
||||
DoScriptText(RAND(SAY_SLAY_1,SAY_SLAY_2), m_creature);
|
||||
DoScriptText(RAND(SAY_SLAY_1,SAY_SLAY_2), me);
|
||||
}
|
||||
|
||||
void JustDied(Unit *victim)
|
||||
{
|
||||
DoScriptText(SAY_DEATH, m_creature);
|
||||
DoScriptText(SAY_DEATH, me);
|
||||
_JustDied();
|
||||
}
|
||||
|
||||
void EnterCombat(Unit* pWho)
|
||||
{
|
||||
DoScriptText(SAY_AGGRO, m_creature);
|
||||
DoScriptText(SAY_AGGRO, me);
|
||||
_EnterCombat();
|
||||
}
|
||||
|
||||
|
||||
@@ -54,18 +54,18 @@ struct boss_ignis_AI : public BossAI
|
||||
|
||||
void EnterCombat(Unit* who)
|
||||
{
|
||||
DoScriptText(SAY_AGGRO,m_creature);
|
||||
DoScriptText(SAY_AGGRO,me);
|
||||
_EnterCombat();
|
||||
}
|
||||
|
||||
void KilledUnit(Unit* victim)
|
||||
{
|
||||
DoScriptText(RAND(SAY_SLAY_1,SAY_SLAY_2), m_creature);
|
||||
DoScriptText(RAND(SAY_SLAY_1,SAY_SLAY_2), me);
|
||||
}
|
||||
|
||||
void JustDied(Unit *victim)
|
||||
{
|
||||
DoScriptText(SAY_DEATH, m_creature);
|
||||
DoScriptText(SAY_DEATH, me);
|
||||
_JustDied();
|
||||
}
|
||||
|
||||
@@ -76,12 +76,12 @@ struct boss_ignis_AI : public BossAI
|
||||
if (!UpdateVictim())
|
||||
return;
|
||||
|
||||
if (m_creature->GetPositionY() < 150 || m_creature->GetPositionX() < 450) // Not Blizzlike, anti-exploit to prevent players from pulling bosses to vehicles.
|
||||
if (me->GetPositionY() < 150 || me->GetPositionX() < 450) // Not Blizzlike, anti-exploit to prevent players from pulling bosses to vehicles.
|
||||
{
|
||||
m_creature->RemoveAllAuras();
|
||||
m_creature->DeleteThreatList();
|
||||
m_creature->CombatStop(false);
|
||||
m_creature->GetMotionMaster()->MoveTargetedHome();
|
||||
me->RemoveAllAuras();
|
||||
me->DeleteThreatList();
|
||||
me->CombatStop(false);
|
||||
me->GetMotionMaster()->MoveTargetedHome();
|
||||
}
|
||||
|
||||
if (uiFlameJetsTimer <= diff)
|
||||
@@ -92,7 +92,7 @@ struct boss_ignis_AI : public BossAI
|
||||
|
||||
if (uiScorchTimer <= diff)
|
||||
{
|
||||
DoScriptText(RAND(SAY_SCORCH_1,SAY_SCORCH_2), m_creature);
|
||||
DoScriptText(RAND(SAY_SCORCH_1,SAY_SCORCH_2), me);
|
||||
DoCast(SPELL_SCORCH);
|
||||
uiScorchTimer = 20000;
|
||||
} else uiScorchTimer -= diff;
|
||||
@@ -101,7 +101,7 @@ struct boss_ignis_AI : public BossAI
|
||||
{
|
||||
if (Unit *pTarget = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true))
|
||||
{
|
||||
DoScriptText(SAY_SLAG_POT, m_creature);
|
||||
DoScriptText(SAY_SLAG_POT, me);
|
||||
DoCast(pTarget, SPELL_SLAG_POT);
|
||||
}
|
||||
uiSlagPotTimer = 30000;
|
||||
|
||||
@@ -70,13 +70,13 @@ struct boss_kologarnAI : public BossAI
|
||||
|
||||
void JustDied(Unit *victim)
|
||||
{
|
||||
DoScriptText(SAY_DEATH, m_creature);
|
||||
DoScriptText(SAY_DEATH, me);
|
||||
_JustDied();
|
||||
}
|
||||
|
||||
void KilledUnit(Unit* who)
|
||||
{
|
||||
DoScriptText(RAND(SAY_SLAY_2,SAY_SLAY_2), m_creature);
|
||||
DoScriptText(RAND(SAY_SLAY_2,SAY_SLAY_2), me);
|
||||
}
|
||||
|
||||
void PassengerBoarded(Unit *who, int8 seatId, bool apply)
|
||||
@@ -94,7 +94,7 @@ struct boss_kologarnAI : public BossAI
|
||||
|
||||
void EnterCombat(Unit *who)
|
||||
{
|
||||
DoScriptText(SAY_AGGRO, m_creature);
|
||||
DoScriptText(SAY_AGGRO, me);
|
||||
_EnterCombat();
|
||||
events.ScheduleEvent(EVENT_SMASH, 5000);
|
||||
events.ScheduleEvent(EVENT_SWEEP, 10000);
|
||||
|
||||
@@ -86,13 +86,13 @@ struct boss_razorscaleAI : public BossAI
|
||||
InitialSpawn = true;
|
||||
IsFlying = true;
|
||||
|
||||
m_creature->ApplySpellImmune(0, IMMUNITY_STATE, SPELL_AURA_MOD_TAUNT, true);
|
||||
m_creature->ApplySpellImmune(1, IMMUNITY_EFFECT,SPELL_EFFECT_ATTACK_ME, true);
|
||||
me->ApplySpellImmune(0, IMMUNITY_STATE, SPELL_AURA_MOD_TAUNT, true);
|
||||
me->ApplySpellImmune(1, IMMUNITY_EFFECT,SPELL_EFFECT_ATTACK_ME, true);
|
||||
}
|
||||
|
||||
void EnterCombat(Unit* who)
|
||||
{
|
||||
DoScriptText(SAY_AGGRO, m_creature);
|
||||
DoScriptText(SAY_AGGRO, me);
|
||||
DoZoneInCombat();
|
||||
}
|
||||
|
||||
@@ -102,7 +102,7 @@ struct boss_razorscaleAI : public BossAI
|
||||
|
||||
void KilledUnit(Unit *victim)
|
||||
{
|
||||
DoScriptText(SAY_KILL, m_creature);
|
||||
DoScriptText(SAY_KILL, me);
|
||||
}
|
||||
|
||||
void UpdateAI(const uint32 diff)
|
||||
@@ -110,28 +110,28 @@ struct boss_razorscaleAI : public BossAI
|
||||
if (!UpdateVictim())
|
||||
return;
|
||||
|
||||
if (m_creature->GetPositionY() > -60 || m_creature->GetPositionX() < 450) // Not Blizzlike, anti-exploit to prevent players from pulling bosses to vehicles.
|
||||
if (me->GetPositionY() > -60 || me->GetPositionX() < 450) // Not Blizzlike, anti-exploit to prevent players from pulling bosses to vehicles.
|
||||
{
|
||||
m_creature->RemoveAllAuras();
|
||||
m_creature->DeleteThreatList();
|
||||
m_creature->CombatStop(false);
|
||||
m_creature->GetMotionMaster()->MoveTargetedHome();
|
||||
me->RemoveAllAuras();
|
||||
me->DeleteThreatList();
|
||||
me->CombatStop(false);
|
||||
me->GetMotionMaster()->MoveTargetedHome();
|
||||
}
|
||||
|
||||
// Victim is not controlled by a player (should never happen)
|
||||
if (m_creature->getVictim() && !m_creature->getVictim()->GetCharmerOrOwnerPlayerOrPlayerItself())
|
||||
m_creature->Kill(m_creature->getVictim());
|
||||
if (me->getVictim() && !me->getVictim()->GetCharmerOrOwnerPlayerOrPlayerItself())
|
||||
me->Kill(me->getVictim());
|
||||
|
||||
if ((m_creature->GetHealth()*100 / m_creature->GetMaxHealth()) < 99 && Phase == 1) // TODO: Only land (exit Phase 1) if brought down with harpoon guns! This is important!
|
||||
if ((me->GetHealth()*100 / me->GetMaxHealth()) < 99 && Phase == 1) // TODO: Only land (exit Phase 1) if brought down with harpoon guns! This is important!
|
||||
{
|
||||
Phase = 2;
|
||||
DoScriptText(SAY_PHASE_2_TRANS, m_creature); // Audio: "Move quickly! She won't remain grounded for long!"
|
||||
DoScriptText(SAY_PHASE_2_TRANS, me); // Audio: "Move quickly! She won't remain grounded for long!"
|
||||
}
|
||||
|
||||
if ((m_creature->GetHealth()*100 / m_creature->GetMaxHealth()) < 33 && Phase == 2) // Health under 33%, Razorscale can't fly anymore.
|
||||
if ((me->GetHealth()*100 / me->GetMaxHealth()) < 33 && Phase == 2) // Health under 33%, Razorscale can't fly anymore.
|
||||
{
|
||||
Phase = 3;
|
||||
DoScriptText(SAY_PHASE_3_TRANS, m_creature); // "Razorscale lands permanently!"
|
||||
DoScriptText(SAY_PHASE_3_TRANS, me); // "Razorscale lands permanently!"
|
||||
// TODO: Cast Devouring Flame on all harpoon guns simultaneously, briefly after Phase 3 starts (lasts until the harpoon guns are destroyed)
|
||||
}
|
||||
|
||||
@@ -164,7 +164,7 @@ struct boss_razorscaleAI : public BossAI
|
||||
{
|
||||
if (Unit *pTarget = SelectTarget(SELECT_TARGET_RANDOM, 0, 200, true))
|
||||
{
|
||||
m_creature->SetInFront(pTarget);
|
||||
me->SetInFront(pTarget);
|
||||
DoCast(pTarget, SPELL_FIREBALL);
|
||||
}
|
||||
|
||||
@@ -173,7 +173,7 @@ struct boss_razorscaleAI : public BossAI
|
||||
|
||||
if (FlameBreathTimer <= diff)
|
||||
{
|
||||
DoScriptText(EMOTE_BREATH, m_creature); // TODO: "Razorscale takes a deep breath..."
|
||||
DoScriptText(EMOTE_BREATH, me); // TODO: "Razorscale takes a deep breath..."
|
||||
DoCastVictim(SPELL_FLAMEBREATH);
|
||||
FlameBreathTimer = 15000;
|
||||
WingBuffetTimer = 0;
|
||||
@@ -183,13 +183,13 @@ struct boss_razorscaleAI : public BossAI
|
||||
{
|
||||
if (FlameBuffetTimer <= diff)
|
||||
{
|
||||
DoScriptText(EMOTE_BREATH, m_creature);
|
||||
DoScriptText(EMOTE_BREATH, me);
|
||||
std::list<Unit*> pTargets;
|
||||
SelectTargetList(pTargets, RAID_MODE(3,9), SELECT_TARGET_RANDOM, 100, true);
|
||||
uint8 i = 0;
|
||||
for (std::list<Unit*>::const_iterator itr = pTargets.begin(); itr != pTargets.end();)
|
||||
{
|
||||
if (m_creature->HasInArc(M_PI, *itr))
|
||||
if (me->HasInArc(M_PI, *itr))
|
||||
{
|
||||
DoCast(*itr, SPELL_FLAMEBUFFET, true);
|
||||
++i;
|
||||
@@ -217,7 +217,7 @@ struct boss_razorscaleAI : public BossAI
|
||||
{
|
||||
if (Unit *pTarget = SelectTarget(SELECT_TARGET_RANDOM, 0, 200, true))
|
||||
{
|
||||
m_creature->SetInFront(pTarget);
|
||||
me->SetInFront(pTarget);
|
||||
DoCast(pTarget, SPELL_FIREBALL);
|
||||
}
|
||||
|
||||
@@ -228,7 +228,7 @@ struct boss_razorscaleAI : public BossAI
|
||||
{
|
||||
if (Unit *pTarget = SelectTarget(SELECT_TARGET_RANDOM, 0, 200, true))
|
||||
{
|
||||
m_creature->SetInFront(pTarget);
|
||||
me->SetInFront(pTarget);
|
||||
DoCast(pTarget, SPELL_DEVOURINGFLAME);
|
||||
}
|
||||
|
||||
@@ -252,9 +252,9 @@ struct boss_razorscaleAI : public BossAI
|
||||
{
|
||||
float x = std::max(500.0f, std::min(650.0f, pTarget->GetPositionX() + irand(-20,20))); // Safe range is between 500 and 650
|
||||
float y = std::max(-235.0f, std::min(-145.0f, pTarget->GetPositionY() + irand(-20,20))); // Safe range is between -235 and -145
|
||||
float z = m_creature->GetBaseMap()->GetHeight(x, y, MAX_HEIGHT); // Ground level
|
||||
float z = me->GetBaseMap()->GetHeight(x, y, MAX_HEIGHT); // Ground level
|
||||
// TODO: Spawn drillers, then spawn adds 5 seconds later
|
||||
if (Creature *pAdd = m_creature->SummonCreature(NPC_DARK_RUNE_SENTINEL, x, y, z, 0, TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN, 30000))
|
||||
if (Creature *pAdd = me->SummonCreature(NPC_DARK_RUNE_SENTINEL, x, y, z, 0, TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN, 30000))
|
||||
pAdd->AI()->AttackStart(pTarget);
|
||||
}
|
||||
}
|
||||
@@ -265,34 +265,34 @@ struct boss_razorscaleAI : public BossAI
|
||||
{
|
||||
const float x = 587.54;
|
||||
const float y = -174.92;
|
||||
const float GroundLevel = m_creature->GetBaseMap()->GetHeight(x, y, MAX_HEIGHT);
|
||||
const float GroundLevel = me->GetBaseMap()->GetHeight(x, y, MAX_HEIGHT);
|
||||
const float FlightHeight = GroundLevel + 4.0f; // TODO: Fly out of range of attacks (442 is sufficient height for this), minus ~(10*number of harpoon gun chains attached to Razorscale)
|
||||
|
||||
if (Phase == 1) // Always flying during Phase 1
|
||||
IsFlying = true;
|
||||
|
||||
m_creature->SetFlying(IsFlying);
|
||||
m_creature->SendMovementFlagUpdate();
|
||||
m_creature->SetSpeed(MOVE_WALK, IsFlying ? 7.0f : 2.5f, IsFlying);
|
||||
me->SetFlying(IsFlying);
|
||||
me->SendMovementFlagUpdate();
|
||||
me->SetSpeed(MOVE_WALK, IsFlying ? 7.0f : 2.5f, IsFlying);
|
||||
|
||||
if (Phase == 1) // Flying Phase
|
||||
{
|
||||
if (m_creature->GetPositionZ() > FlightHeight) // Correct height, stop moving
|
||||
m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_DISABLE_MOVE);
|
||||
if (me->GetPositionZ() > FlightHeight) // Correct height, stop moving
|
||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_DISABLE_MOVE);
|
||||
else // Incorrect height
|
||||
{
|
||||
m_creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_DISABLE_MOVE);
|
||||
m_creature->GetMotionMaster()->MovePoint(0, x, y, FlightHeight + 0.5f); // Fly to slightly above (x, y, FlightHeight)
|
||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_DISABLE_MOVE);
|
||||
me->GetMotionMaster()->MovePoint(0, x, y, FlightHeight + 0.5f); // Fly to slightly above (x, y, FlightHeight)
|
||||
}
|
||||
}
|
||||
else // Ground Phases
|
||||
{
|
||||
const float CurrentGroundLevel = m_creature->GetBaseMap()->GetHeight(m_creature->GetPositionX(), m_creature->GetPositionY(), MAX_HEIGHT);
|
||||
const float CurrentGroundLevel = me->GetBaseMap()->GetHeight(me->GetPositionX(), me->GetPositionY(), MAX_HEIGHT);
|
||||
//if (StunTimer == 30000) // Only fly around if not stunned.
|
||||
//{
|
||||
m_creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_DISABLE_MOVE);
|
||||
if (IsFlying && m_creature->GetPositionZ() > CurrentGroundLevel) // Fly towards the ground
|
||||
m_creature->GetMotionMaster()->MovePoint(0, m_creature->GetPositionX(), m_creature->GetPositionY(), CurrentGroundLevel);
|
||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_DISABLE_MOVE);
|
||||
if (IsFlying && me->GetPositionZ() > CurrentGroundLevel) // Fly towards the ground
|
||||
me->GetMotionMaster()->MovePoint(0, me->GetPositionX(), me->GetPositionY(), CurrentGroundLevel);
|
||||
// TODO: Swoop up just before landing
|
||||
else
|
||||
IsFlying = false; // Landed, no longer flying
|
||||
|
||||
@@ -54,24 +54,24 @@ struct boss_thorimAI : public BossAI
|
||||
|
||||
void EnterEvadeMode()
|
||||
{
|
||||
DoScriptText(SAY_WIPE, m_creature);
|
||||
DoScriptText(SAY_WIPE, me);
|
||||
_EnterEvadeMode();
|
||||
}
|
||||
|
||||
void KilledUnit(Unit *victim)
|
||||
{
|
||||
DoScriptText(RAND(SAY_SLAY_1,SAY_SLAY_2), m_creature);
|
||||
DoScriptText(RAND(SAY_SLAY_1,SAY_SLAY_2), me);
|
||||
}
|
||||
|
||||
void JustDied(Unit *victim)
|
||||
{
|
||||
DoScriptText(SAY_DEATH, m_creature);
|
||||
DoScriptText(SAY_DEATH, me);
|
||||
_JustDied();
|
||||
}
|
||||
|
||||
void EnterCombat(Unit* pWho)
|
||||
{
|
||||
DoScriptText(RAND(SAY_AGGRO_1,SAY_AGGRO_2), m_creature);
|
||||
DoScriptText(RAND(SAY_AGGRO_1,SAY_AGGRO_2), me);
|
||||
_EnterCombat();
|
||||
}
|
||||
|
||||
|
||||
@@ -191,7 +191,7 @@ struct boss_xt002_AI : public BossAI
|
||||
|
||||
void Reset()
|
||||
{
|
||||
m_creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_DISABLE_MOVE | UNIT_FLAG_NOT_SELECTABLE);
|
||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_DISABLE_MOVE | UNIT_FLAG_NOT_SELECTABLE);
|
||||
|
||||
//Makes XT-002 to cast a light bomb 10 seconds after aggro.
|
||||
uiSearingLightTimer = TIMER_SEARING_LIGHT/2;
|
||||
@@ -217,7 +217,7 @@ struct boss_xt002_AI : public BossAI
|
||||
|
||||
void EnterCombat(Unit* who)
|
||||
{
|
||||
DoScriptText(SAY_AGGRO, m_creature);
|
||||
DoScriptText(SAY_AGGRO, me);
|
||||
_EnterCombat();
|
||||
}
|
||||
|
||||
@@ -234,10 +234,10 @@ struct boss_xt002_AI : public BossAI
|
||||
enterHardMode = true;
|
||||
|
||||
// set max health
|
||||
m_creature->SetHealth(m_creature->GetMaxHealth());
|
||||
me->SetHealth(me->GetMaxHealth());
|
||||
|
||||
// Get his heartbreak buff
|
||||
m_creature->CastSpell(m_creature, RAID_MODE(SPELL_HEARTBREAK_10, SPELL_HEARTBREAK_25), true);
|
||||
me->CastSpell(me, RAID_MODE(SPELL_HEARTBREAK_10, SPELL_HEARTBREAK_25), true);
|
||||
}
|
||||
break;
|
||||
}
|
||||
@@ -255,12 +255,12 @@ struct boss_xt002_AI : public BossAI
|
||||
|
||||
void KilledUnit(Unit* victim)
|
||||
{
|
||||
DoScriptText(RAND(SAY_SLAY_1,SAY_SLAY_2), m_creature);
|
||||
DoScriptText(RAND(SAY_SLAY_1,SAY_SLAY_2), me);
|
||||
}
|
||||
|
||||
void JustDied(Unit *victim)
|
||||
{
|
||||
DoScriptText(SAY_DEATH, m_creature);
|
||||
DoScriptText(SAY_DEATH, me);
|
||||
_JustDied();
|
||||
}
|
||||
|
||||
@@ -304,7 +304,7 @@ struct boss_xt002_AI : public BossAI
|
||||
|
||||
if (uiTympanicTantrumTimer <= 0)
|
||||
{
|
||||
DoScriptText(SAY_TYMPANIC_TANTRUM, m_creature);
|
||||
DoScriptText(SAY_TYMPANIC_TANTRUM, me);
|
||||
DoCast(SPELL_TYMPANIC_TANTRUM);
|
||||
uiTympanicTantrumTimer = urand(TIMER_TYMPANIC_TANTRUM_MIN, TIMER_TYMPANIC_TANTRUM_MAX);
|
||||
} else uiTympanicTantrumTimer -= diff;
|
||||
@@ -332,20 +332,20 @@ struct boss_xt002_AI : public BossAI
|
||||
else
|
||||
{
|
||||
//Stop moving
|
||||
m_creature->StopMoving();
|
||||
me->StopMoving();
|
||||
|
||||
//Start summoning adds
|
||||
if (uiSpawnAddTimer <= diff)
|
||||
{
|
||||
DoScriptText(SAY_SUMMON, m_creature);
|
||||
DoScriptText(SAY_SUMMON, me);
|
||||
|
||||
// Spawn Pummeller
|
||||
switch (rand() % 4)
|
||||
{
|
||||
case 0: m_creature->SummonCreature(NPC_XM024_PUMMELLER, LR_X, LR_Y, SPAWN_Z, 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 60000); break;
|
||||
case 1: m_creature->SummonCreature(NPC_XM024_PUMMELLER, LL_X, LL_Y, SPAWN_Z, 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 60000); break;
|
||||
case 2: m_creature->SummonCreature(NPC_XM024_PUMMELLER, UR_X, UR_Y, SPAWN_Z, 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 60000); break;
|
||||
case 3: m_creature->SummonCreature(NPC_XM024_PUMMELLER, UL_X, UL_Y, SPAWN_Z, 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 60000); break;
|
||||
case 0: me->SummonCreature(NPC_XM024_PUMMELLER, LR_X, LR_Y, SPAWN_Z, 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 60000); break;
|
||||
case 1: me->SummonCreature(NPC_XM024_PUMMELLER, LL_X, LL_Y, SPAWN_Z, 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 60000); break;
|
||||
case 2: me->SummonCreature(NPC_XM024_PUMMELLER, UR_X, UR_Y, SPAWN_Z, 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 60000); break;
|
||||
case 3: me->SummonCreature(NPC_XM024_PUMMELLER, UL_X, UL_Y, SPAWN_Z, 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 60000); break;
|
||||
}
|
||||
|
||||
// Spawn 5 Bombs
|
||||
@@ -354,20 +354,20 @@ struct boss_xt002_AI : public BossAI
|
||||
//Some randomes are added so they wont spawn in a pile
|
||||
switch(rand() % 4)
|
||||
{
|
||||
case 0: m_creature->SummonCreature(NPC_XS013_SCRAPBOT, irand(LR_X - 3, LR_X + 3), irand(LR_Y - 3, LR_Y + 3), SPAWN_Z, 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 60000); break;
|
||||
case 1: m_creature->SummonCreature(NPC_XS013_SCRAPBOT, irand(LL_X - 3, LL_X + 3), irand(LL_Y - 3, LL_Y + 3), SPAWN_Z, 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 60000); break;
|
||||
case 2: m_creature->SummonCreature(NPC_XS013_SCRAPBOT, irand(UR_X - 3, UR_X + 3), irand(UR_Y - 3, UR_Y + 3), SPAWN_Z, 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 60000); break;
|
||||
case 3: m_creature->SummonCreature(NPC_XS013_SCRAPBOT, irand(UL_X - 3, UL_X + 3), irand(UL_Y - 3, UL_Y + 3), SPAWN_Z, 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 60000); break;
|
||||
case 0: me->SummonCreature(NPC_XS013_SCRAPBOT, irand(LR_X - 3, LR_X + 3), irand(LR_Y - 3, LR_Y + 3), SPAWN_Z, 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 60000); break;
|
||||
case 1: me->SummonCreature(NPC_XS013_SCRAPBOT, irand(LL_X - 3, LL_X + 3), irand(LL_Y - 3, LL_Y + 3), SPAWN_Z, 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 60000); break;
|
||||
case 2: me->SummonCreature(NPC_XS013_SCRAPBOT, irand(UR_X - 3, UR_X + 3), irand(UR_Y - 3, UR_Y + 3), SPAWN_Z, 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 60000); break;
|
||||
case 3: me->SummonCreature(NPC_XS013_SCRAPBOT, irand(UL_X - 3, UL_X + 3), irand(UL_Y - 3, UL_Y + 3), SPAWN_Z, 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 60000); break;
|
||||
}
|
||||
}
|
||||
|
||||
//Spawn 5 Scrapbots
|
||||
switch (rand() % 4)
|
||||
{
|
||||
case 0: m_creature->SummonCreature(NPC_XE321_BOOMBOT, LR_X, LR_Y, SPAWN_Z, 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 60000); break;
|
||||
case 1: m_creature->SummonCreature(NPC_XE321_BOOMBOT, LL_X, LL_Y, SPAWN_Z, 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 60000); break;
|
||||
case 2: m_creature->SummonCreature(NPC_XE321_BOOMBOT, UR_X, UR_Y, SPAWN_Z, 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 60000); break;
|
||||
case 3: m_creature->SummonCreature(NPC_XE321_BOOMBOT, UL_X, UL_Y, SPAWN_Z, 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 60000); break;
|
||||
case 0: me->SummonCreature(NPC_XE321_BOOMBOT, LR_X, LR_Y, SPAWN_Z, 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 60000); break;
|
||||
case 1: me->SummonCreature(NPC_XE321_BOOMBOT, LL_X, LL_Y, SPAWN_Z, 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 60000); break;
|
||||
case 2: me->SummonCreature(NPC_XE321_BOOMBOT, UR_X, UR_Y, SPAWN_Z, 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 60000); break;
|
||||
case 3: me->SummonCreature(NPC_XE321_BOOMBOT, UL_X, UL_Y, SPAWN_Z, 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 60000); break;
|
||||
}
|
||||
|
||||
uiSpawnAddTimer = TIMER_SPAWN_ADD;
|
||||
@@ -376,7 +376,7 @@ struct boss_xt002_AI : public BossAI
|
||||
// Is the phase over?
|
||||
if (uiHeartPhaseTimer <= diff)
|
||||
{
|
||||
DoScriptText(SAY_HEART_CLOSED, m_creature);
|
||||
DoScriptText(SAY_HEART_CLOSED, me);
|
||||
SetPhaseOne();
|
||||
}
|
||||
else
|
||||
@@ -390,7 +390,7 @@ struct boss_xt002_AI : public BossAI
|
||||
{
|
||||
if (uiSpawnLifeSparkTimer <= diff)
|
||||
{
|
||||
if (Unit *pSearingLightTarget = m_creature->GetUnit(*m_creature, uiSearingLightTarget))
|
||||
if (Unit *pSearingLightTarget = me->GetUnit(*me, uiSearingLightTarget))
|
||||
pSearingLightTarget->SummonCreature(NPC_LIFE_SPARK, pSearingLightTarget->GetPositionX(), pSearingLightTarget->GetPositionY(), pSearingLightTarget->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 60000);
|
||||
uiSpawnLifeSparkTimer = TIMER_SPAWN_LIFE_SPARK;
|
||||
searing_light_active = false;
|
||||
@@ -404,7 +404,7 @@ struct boss_xt002_AI : public BossAI
|
||||
{
|
||||
if (uiGravityBombAuraTimer <= diff)
|
||||
{
|
||||
if (Unit *pGravityBombTarget = m_creature->GetUnit(*m_creature, uiGravityBombTarget))
|
||||
if (Unit *pGravityBombTarget = me->GetUnit(*me, uiGravityBombTarget))
|
||||
{
|
||||
pGravityBombTarget->RemoveAurasDueToSpell(RAID_MODE(SPELL_GRAVITY_BOMB_10,SPELL_GRAVITY_BOMB_25));
|
||||
if (hardMode)
|
||||
@@ -424,8 +424,8 @@ struct boss_xt002_AI : public BossAI
|
||||
if (!enraged)
|
||||
if (uiEnrageTimer <= diff)
|
||||
{
|
||||
DoScriptText(SAY_BERSERK, m_creature);
|
||||
DoCast(m_creature, SPELL_ENRAGE);
|
||||
DoScriptText(SAY_BERSERK, me);
|
||||
DoCast(me, SPELL_ENRAGE);
|
||||
enraged = true;
|
||||
} else uiEnrageTimer -= diff;
|
||||
}
|
||||
@@ -433,10 +433,10 @@ struct boss_xt002_AI : public BossAI
|
||||
void exposeHeart()
|
||||
{
|
||||
//Make untargetable
|
||||
m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_NOT_SELECTABLE);
|
||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_NOT_SELECTABLE);
|
||||
|
||||
//Summon the heart npc
|
||||
m_creature->SummonCreature(NPC_XT002_HEART, m_creature->GetPositionX(), m_creature->GetPositionY(), m_creature->GetPositionZ() + 7, 0, TEMPSUMMON_TIMED_DESPAWN, TIMER_HEART_PHASE);
|
||||
me->SummonCreature(NPC_XT002_HEART, me->GetPositionX(), me->GetPositionY(), me->GetPositionZ() + 7, 0, TEMPSUMMON_TIMED_DESPAWN, TIMER_HEART_PHASE);
|
||||
|
||||
// Start "end of phase 2 timer"
|
||||
uiHeartPhaseTimer = TIMER_HEART_PHASE;
|
||||
@@ -448,7 +448,7 @@ struct boss_xt002_AI : public BossAI
|
||||
//Reset the add spawning timer
|
||||
uiSpawnAddTimer = TIMER_SPAWN_ADD;
|
||||
|
||||
DoScriptText(SAY_HEART_OPENED, m_creature);
|
||||
DoScriptText(SAY_HEART_OPENED, me);
|
||||
}
|
||||
|
||||
void SetPhaseOne()
|
||||
@@ -459,9 +459,9 @@ struct boss_xt002_AI : public BossAI
|
||||
uiSpawnAddTimer = TIMER_SPAWN_ADD;
|
||||
|
||||
if (!hardMode)
|
||||
m_creature->ModifyHealth(-((int32)transferHealth));
|
||||
me->ModifyHealth(-((int32)transferHealth));
|
||||
|
||||
m_creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_NOT_SELECTABLE);
|
||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_NOT_SELECTABLE);
|
||||
phase = 1;
|
||||
}
|
||||
|
||||
@@ -484,7 +484,7 @@ struct boss_xt002_AI : public BossAI
|
||||
// //Deal damage to the victim
|
||||
// int32 damage = urand(minDamage, maxDamage);
|
||||
// i->getSource()->ModifyHealth(-damage);
|
||||
// m_creature->SendSpellNonMeleeDamageLog(i->getSource(), SPELL_GRAVITY_BOMB_AURA_10, damage, SPELL_SCHOOL_MASK_SHADOW, 0, 0, false, 0);
|
||||
// me->SendSpellNonMeleeDamageLog(i->getSource(), SPELL_GRAVITY_BOMB_AURA_10, damage, SPELL_SCHOOL_MASK_SHADOW, 0, 0, false, 0);
|
||||
|
||||
// //Replacing the tractor beam effect
|
||||
// i->getSource()->JumpTo(pGravityBombTarget, 5);
|
||||
@@ -509,9 +509,9 @@ struct mob_xt002_heartAI : public ScriptedAI
|
||||
mob_xt002_heartAI(Creature* pCreature) : ScriptedAI(pCreature)
|
||||
{
|
||||
m_pInstance = pCreature->GetInstanceData();
|
||||
m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_DISABLE_MOVE | UNIT_FLAG_STUNNED);
|
||||
m_creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_NOT_SELECTABLE);
|
||||
DoCast(m_creature, SPELL_EXPOSED_HEART);
|
||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_DISABLE_MOVE | UNIT_FLAG_STUNNED);
|
||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_NOT_SELECTABLE);
|
||||
DoCast(me, SPELL_EXPOSED_HEART);
|
||||
}
|
||||
|
||||
ScriptedInstance* m_pInstance;
|
||||
@@ -519,25 +519,25 @@ struct mob_xt002_heartAI : public ScriptedAI
|
||||
void JustDied(Unit *victim)
|
||||
{
|
||||
if (m_pInstance)
|
||||
if (Creature* pXT002 = m_creature->GetCreature(*m_creature, m_pInstance->GetData64(TYPE_XT002)))
|
||||
if (Creature* pXT002 = me->GetCreature(*me, m_pInstance->GetData64(TYPE_XT002)))
|
||||
if (pXT002->AI())
|
||||
pXT002->AI()->DoAction(ACTION_ENTER_HARD_MODE);
|
||||
|
||||
//removes the aura
|
||||
m_creature->RemoveAurasDueToSpell(SPELL_EXPOSED_HEART);
|
||||
me->RemoveAurasDueToSpell(SPELL_EXPOSED_HEART);
|
||||
}
|
||||
|
||||
void DamageTaken(Unit *pDone, uint32 &damage)
|
||||
{
|
||||
if (Creature* pXT002 = m_creature->GetCreature(*m_creature, m_pInstance->GetData64(TYPE_XT002)))
|
||||
if (Creature* pXT002 = me->GetCreature(*me, m_pInstance->GetData64(TYPE_XT002)))
|
||||
if (pXT002->AI())
|
||||
{
|
||||
uint32 health = m_creature->GetHealth();
|
||||
uint32 health = me->GetHealth();
|
||||
health -= damage;
|
||||
if (health < 0)
|
||||
health = 0;
|
||||
|
||||
pXT002->AI()->SetData(DATA_TRANSFERED_HEALTH, m_creature->GetMaxHealth() - health);
|
||||
pXT002->AI()->SetData(DATA_TRANSFERED_HEALTH, me->GetMaxHealth() - health);
|
||||
}
|
||||
}
|
||||
};
|
||||
@@ -556,24 +556,24 @@ struct mob_scrapbotAI : public ScriptedAI
|
||||
{
|
||||
mob_scrapbotAI(Creature* pCreature) : ScriptedAI(pCreature)
|
||||
{
|
||||
m_pInstance = m_creature->GetInstanceData();
|
||||
m_pInstance = me->GetInstanceData();
|
||||
}
|
||||
|
||||
ScriptedInstance* m_pInstance;
|
||||
|
||||
void Reset()
|
||||
{
|
||||
m_creature->SetReactState(REACT_PASSIVE);
|
||||
me->SetReactState(REACT_PASSIVE);
|
||||
|
||||
if (Creature* pXT002 = m_creature->GetCreature(*m_creature, m_pInstance->GetData64(TYPE_XT002)))
|
||||
m_creature->GetMotionMaster()->MoveChase(pXT002);
|
||||
if (Creature* pXT002 = me->GetCreature(*me, m_pInstance->GetData64(TYPE_XT002)))
|
||||
me->GetMotionMaster()->MoveChase(pXT002);
|
||||
}
|
||||
|
||||
void UpdateAI(const uint32 diff)
|
||||
{
|
||||
if (Creature* pXT002 = m_creature->GetCreature(*m_creature, m_pInstance->GetData64(TYPE_XT002)))
|
||||
if (Creature* pXT002 = me->GetCreature(*me, m_pInstance->GetData64(TYPE_XT002)))
|
||||
{
|
||||
if (m_creature->GetDistance2d(pXT002) <= 0.5)
|
||||
if (me->GetDistance2d(pXT002) <= 0.5)
|
||||
{
|
||||
// TODO Send raid message
|
||||
|
||||
@@ -581,7 +581,7 @@ struct mob_scrapbotAI : public ScriptedAI
|
||||
pXT002->ModifyHealth(pXT002->GetMaxHealth() * 0.01);
|
||||
|
||||
// Despawns the scrapbot
|
||||
m_creature->ForcedDespawn();
|
||||
me->ForcedDespawn();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -621,23 +621,23 @@ struct mob_pummellerAI : public ScriptedAI
|
||||
if (!UpdateVictim())
|
||||
return;
|
||||
|
||||
if (m_creature->IsWithinMeleeRange(m_creature->getVictim()))
|
||||
if (me->IsWithinMeleeRange(me->getVictim()))
|
||||
{
|
||||
if (uiArcingSmashTimer <= diff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(), SPELL_ARCING_SMASH);
|
||||
DoCast(me->getVictim(), SPELL_ARCING_SMASH);
|
||||
uiArcingSmashTimer = TIMER_ARCING_SMASH;
|
||||
} else uiArcingSmashTimer -= diff;
|
||||
|
||||
if (uiTrampleTimer <= diff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(), SPELL_TRAMPLE);
|
||||
DoCast(me->getVictim(), SPELL_TRAMPLE);
|
||||
uiTrampleTimer = TIMER_TRAMPLE;
|
||||
} else uiTrampleTimer -= diff;
|
||||
|
||||
if (uiUppercutTimer <= diff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(), SPELL_UPPERCUT);
|
||||
DoCast(me->getVictim(), SPELL_UPPERCUT);
|
||||
uiUppercutTimer = TIMER_UPPERCUT;
|
||||
} else uiUppercutTimer -= diff;
|
||||
}
|
||||
@@ -667,10 +667,10 @@ struct mob_boombotAI : public ScriptedAI
|
||||
|
||||
void Reset()
|
||||
{
|
||||
m_creature->SetReactState(REACT_PASSIVE);
|
||||
me->SetReactState(REACT_PASSIVE);
|
||||
|
||||
if (Creature* pXT002 = m_creature->GetCreature(*m_creature, m_pInstance->GetData64(TYPE_XT002)))
|
||||
m_creature->GetMotionMaster()->MoveChase(pXT002);
|
||||
if (Creature* pXT002 = me->GetCreature(*me, m_pInstance->GetData64(TYPE_XT002)))
|
||||
me->GetMotionMaster()->MoveChase(pXT002);
|
||||
}
|
||||
|
||||
void JustDied(Unit *killer)
|
||||
@@ -680,15 +680,15 @@ struct mob_boombotAI : public ScriptedAI
|
||||
|
||||
void UpdateAI(const uint32 diff)
|
||||
{
|
||||
if (Creature* pXT002 = m_creature->GetCreature(*m_creature, m_pInstance->GetData64(TYPE_XT002)))
|
||||
if (Creature* pXT002 = me->GetCreature(*me, m_pInstance->GetData64(TYPE_XT002)))
|
||||
{
|
||||
if (m_creature->GetDistance2d(pXT002) <= 0.5)
|
||||
if (me->GetDistance2d(pXT002) <= 0.5)
|
||||
{
|
||||
//Explosion
|
||||
DoCast(m_creature, SPELL_BOOM);
|
||||
DoCast(me, SPELL_BOOM);
|
||||
|
||||
//Despawns the boombot
|
||||
m_creature->ForcedDespawn();
|
||||
me->ForcedDespawn();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -709,7 +709,7 @@ struct mob_void_zoneAI : public ScriptedAI
|
||||
mob_void_zoneAI(Creature* pCreature) : ScriptedAI(pCreature)
|
||||
{
|
||||
m_pInstance = pCreature->GetInstanceData();
|
||||
m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_DISABLE_MOVE);
|
||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_DISABLE_MOVE);
|
||||
}
|
||||
|
||||
ScriptedInstance* m_pInstance;
|
||||
@@ -739,11 +739,11 @@ struct mob_void_zoneAI : public ScriptedAI
|
||||
// for (Map::PlayerList::const_iterator i = PlayerList.begin(); i != PlayerList.end(); ++i)
|
||||
// {
|
||||
// // If a player is within the range of the spell
|
||||
// if (i->getSource() && i->getSource()->GetDistance2d(m_creature) <= 16)
|
||||
// if (i->getSource() && i->getSource()->GetDistance2d(me) <= 16)
|
||||
// {
|
||||
// // Deal damage to the victim
|
||||
// int32 damage = RAID_MODE(VOID_ZONE_DMG_10, VOID_ZONE_DMG_25);
|
||||
// m_creature->DealDamage(i->getSource(), damage, NULL, SPELL_DIRECT_DAMAGE, SPELL_SCHOOL_MASK_SHADOW);
|
||||
// me->DealDamage(i->getSource(), damage, NULL, SPELL_DIRECT_DAMAGE, SPELL_SCHOOL_MASK_SHADOW);
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
@@ -772,7 +772,7 @@ struct mob_life_sparkAI : public ScriptedAI
|
||||
|
||||
void Reset()
|
||||
{
|
||||
DoCast(m_creature, RAID_MODE(SPELL_STATIC_CHARGED_10, SPELL_STATIC_CHARGED_25));
|
||||
DoCast(me, RAID_MODE(SPELL_STATIC_CHARGED_10, SPELL_STATIC_CHARGED_25));
|
||||
uiShockTimer = 0; // first one is immediate.
|
||||
}
|
||||
|
||||
@@ -783,9 +783,9 @@ struct mob_life_sparkAI : public ScriptedAI
|
||||
|
||||
if (uiShockTimer <= diff)
|
||||
{
|
||||
if (m_creature->IsWithinMeleeRange(m_creature->getVictim()))
|
||||
if (me->IsWithinMeleeRange(me->getVictim()))
|
||||
{
|
||||
DoCast(m_creature->getVictim(), SPELL_SHOCK);
|
||||
DoCast(me->getVictim(), SPELL_SHOCK);
|
||||
uiShockTimer = TIMER_SHOCK;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -93,13 +93,13 @@ struct boss_ingvar_the_plundererAI : public ScriptedAI
|
||||
void Reset()
|
||||
{
|
||||
if (bIsUndead)
|
||||
m_creature->UpdateEntry(MOB_INGVAR_HUMAN);
|
||||
me->UpdateEntry(MOB_INGVAR_HUMAN);
|
||||
|
||||
bIsUndead = false;
|
||||
bEventInProgress = false;
|
||||
|
||||
m_creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_OOC_NOT_ATTACKABLE);
|
||||
m_creature->SetStandState(UNIT_STAND_STATE_STAND);
|
||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_OOC_NOT_ATTACKABLE);
|
||||
me->SetStandState(UNIT_STAND_STATE_STAND);
|
||||
|
||||
uiCleaveTimer = 2000;
|
||||
uiSmashTimer = 5000;
|
||||
@@ -114,23 +114,23 @@ struct boss_ingvar_the_plundererAI : public ScriptedAI
|
||||
|
||||
void DamageTaken(Unit *done_by, uint32 &damage)
|
||||
{
|
||||
if (damage >= m_creature->GetHealth() && !bIsUndead)
|
||||
if (damage >= me->GetHealth() && !bIsUndead)
|
||||
{
|
||||
//DoCast(m_creature, SPELL_INGVAR_FEIGN_DEATH, true); // Dont work ???
|
||||
//DoCast(me, SPELL_INGVAR_FEIGN_DEATH, true); // Dont work ???
|
||||
// visuel hack
|
||||
m_creature->SetHealth(0);
|
||||
m_creature->InterruptNonMeleeSpells(true);
|
||||
m_creature->RemoveAllAuras();
|
||||
m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_OOC_NOT_ATTACKABLE);
|
||||
m_creature->GetMotionMaster()->MovementExpired(false);
|
||||
m_creature->GetMotionMaster()->MoveIdle();
|
||||
m_creature->SetStandState(UNIT_STAND_STATE_DEAD);
|
||||
me->SetHealth(0);
|
||||
me->InterruptNonMeleeSpells(true);
|
||||
me->RemoveAllAuras();
|
||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_OOC_NOT_ATTACKABLE);
|
||||
me->GetMotionMaster()->MovementExpired(false);
|
||||
me->GetMotionMaster()->MoveIdle();
|
||||
me->SetStandState(UNIT_STAND_STATE_DEAD);
|
||||
// visuel hack end
|
||||
|
||||
bEventInProgress = true;
|
||||
bIsUndead = true;
|
||||
|
||||
DoScriptText(YELL_DEAD_1,m_creature);
|
||||
DoScriptText(YELL_DEAD_1,me);
|
||||
}
|
||||
|
||||
if (bEventInProgress)
|
||||
@@ -143,17 +143,17 @@ struct boss_ingvar_the_plundererAI : public ScriptedAI
|
||||
{
|
||||
bIsUndead = true;
|
||||
bEventInProgress = false;
|
||||
m_creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_OOC_NOT_ATTACKABLE);
|
||||
m_creature->UpdateEntry(MOB_INGVAR_UNDEAD);
|
||||
m_creature->SetInCombatWith(m_creature->getVictim());
|
||||
m_creature->GetMotionMaster()->MoveChase(m_creature->getVictim());
|
||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_OOC_NOT_ATTACKABLE);
|
||||
me->UpdateEntry(MOB_INGVAR_UNDEAD);
|
||||
me->SetInCombatWith(me->getVictim());
|
||||
me->GetMotionMaster()->MoveChase(me->getVictim());
|
||||
|
||||
DoScriptText(YELL_AGGRO_2,m_creature);
|
||||
DoScriptText(YELL_AGGRO_2,me);
|
||||
}
|
||||
|
||||
void EnterCombat(Unit *who)
|
||||
{
|
||||
DoScriptText(YELL_AGGRO_1,m_creature);
|
||||
DoScriptText(YELL_AGGRO_1,me);
|
||||
|
||||
if (pInstance)
|
||||
pInstance->SetData(DATA_INGVAR_EVENT, IN_PROGRESS);
|
||||
@@ -161,7 +161,7 @@ struct boss_ingvar_the_plundererAI : public ScriptedAI
|
||||
|
||||
void JustDied(Unit* killer)
|
||||
{
|
||||
DoScriptText(YELL_DEAD_2,m_creature);
|
||||
DoScriptText(YELL_DEAD_2,me);
|
||||
|
||||
if (pInstance)
|
||||
pInstance->SetData(DATA_INGVAR_EVENT, DONE);
|
||||
@@ -170,9 +170,9 @@ struct boss_ingvar_the_plundererAI : public ScriptedAI
|
||||
void KilledUnit(Unit *victim)
|
||||
{
|
||||
if (bIsUndead)
|
||||
DoScriptText(YELL_KILL_1,m_creature);
|
||||
DoScriptText(YELL_KILL_1,me);
|
||||
else
|
||||
DoScriptText(YELL_KILL_2,m_creature);
|
||||
DoScriptText(YELL_KILL_2,me);
|
||||
}
|
||||
|
||||
void UpdateAI(const uint32 diff)
|
||||
@@ -185,8 +185,8 @@ struct boss_ingvar_the_plundererAI : public ScriptedAI
|
||||
if (uiSpawnResTimer)
|
||||
if (uiSpawnResTimer <= diff)
|
||||
{
|
||||
DoCast(m_creature, SPELL_SUMMON_BANSHEE); // Summons directly on caster position
|
||||
// DoCast(m_creature, SPELL_SCOURG_RESURRECTION, true); // Not needed ?
|
||||
DoCast(me, SPELL_SUMMON_BANSHEE); // Summons directly on caster position
|
||||
// DoCast(me, SPELL_SCOURG_RESURRECTION, true); // Not needed ?
|
||||
uiSpawnResTimer = 0;
|
||||
} else uiSpawnResTimer -= diff;
|
||||
|
||||
@@ -195,24 +195,24 @@ struct boss_ingvar_the_plundererAI : public ScriptedAI
|
||||
|
||||
if (uiCleaveTimer <= diff)
|
||||
{
|
||||
if (!m_creature->hasUnitState(UNIT_STAT_CASTING))
|
||||
if (!me->hasUnitState(UNIT_STAT_CASTING))
|
||||
{
|
||||
if (bIsUndead)
|
||||
DoCast(m_creature->getVictim(), SPELL_WOE_STRIKE);
|
||||
DoCast(me->getVictim(), SPELL_WOE_STRIKE);
|
||||
else
|
||||
DoCast(m_creature->getVictim(), SPELL_CLEAVE);
|
||||
DoCast(me->getVictim(), SPELL_CLEAVE);
|
||||
uiCleaveTimer = rand()%5000 + 2000;
|
||||
}
|
||||
} else uiCleaveTimer -= diff;
|
||||
|
||||
if (uiSmashTimer <= diff)
|
||||
{
|
||||
if (!m_creature->hasUnitState(UNIT_STAT_CASTING))
|
||||
if (!me->hasUnitState(UNIT_STAT_CASTING))
|
||||
{
|
||||
if (bIsUndead)
|
||||
DoCast(m_creature->getVictim(), SPELL_DARK_SMASH);
|
||||
DoCast(me->getVictim(), SPELL_DARK_SMASH);
|
||||
else
|
||||
DoCast(m_creature->getVictim(), SPELL_SMASH);
|
||||
DoCast(me->getVictim(), SPELL_SMASH);
|
||||
uiSmashTimer = 10000;
|
||||
}
|
||||
} else uiSmashTimer -= diff;
|
||||
@@ -221,22 +221,22 @@ struct boss_ingvar_the_plundererAI : public ScriptedAI
|
||||
{
|
||||
if (uiEnrageTimer <= diff)
|
||||
{
|
||||
DoCast(m_creature, SPELL_ENRAGE);
|
||||
DoCast(me, SPELL_ENRAGE);
|
||||
uiEnrageTimer = 10000;
|
||||
} else uiEnrageTimer -= diff;
|
||||
} else // In Undead form used to summon weapon
|
||||
{
|
||||
if (uiEnrageTimer <= diff)
|
||||
{
|
||||
if (!m_creature->hasUnitState(UNIT_STAT_CASTING))
|
||||
if (!me->hasUnitState(UNIT_STAT_CASTING))
|
||||
{
|
||||
// Spawn target for Axe
|
||||
Unit *pTarget = SelectUnit(SELECT_TARGET_TOPAGGRO, 1);
|
||||
if (pTarget)
|
||||
{
|
||||
Creature* temp = m_creature->SummonCreature(ENTRY_THROW_TARGET,pTarget->GetPositionX(),pTarget->GetPositionY(),pTarget->GetPositionZ(),0,TEMPSUMMON_TIMED_DESPAWN,2000);
|
||||
Creature* temp = me->SummonCreature(ENTRY_THROW_TARGET,pTarget->GetPositionX(),pTarget->GetPositionY(),pTarget->GetPositionZ(),0,TEMPSUMMON_TIMED_DESPAWN,2000);
|
||||
|
||||
DoCast(m_creature, SPELL_SHADOW_AXE_SUMMON);
|
||||
DoCast(me, SPELL_SHADOW_AXE_SUMMON);
|
||||
}
|
||||
uiEnrageTimer = 30000;
|
||||
}
|
||||
@@ -245,12 +245,12 @@ struct boss_ingvar_the_plundererAI : public ScriptedAI
|
||||
|
||||
if (uiRoarTimer <= diff)
|
||||
{
|
||||
if (!m_creature->hasUnitState(UNIT_STAT_CASTING))
|
||||
if (!me->hasUnitState(UNIT_STAT_CASTING))
|
||||
{
|
||||
if (bIsUndead)
|
||||
DoCast(m_creature, SPELL_DREADFUL_ROAR);
|
||||
DoCast(me, SPELL_DREADFUL_ROAR);
|
||||
else
|
||||
DoCast(m_creature, SPELL_STAGGERING_ROAR);
|
||||
DoCast(me, SPELL_STAGGERING_ROAR);
|
||||
uiRoarTimer = 10000;
|
||||
}
|
||||
} else uiRoarTimer -= diff;
|
||||
@@ -290,21 +290,21 @@ struct mob_annhylde_the_callerAI : public ScriptedAI
|
||||
|
||||
void Reset()
|
||||
{
|
||||
m_creature->AddUnitMovementFlag(MOVEMENTFLAG_FLYING | MOVEMENTFLAG_HOVER);
|
||||
m_creature->SetSpeed(MOVE_SWIM , 1.0f);
|
||||
m_creature->SetSpeed(MOVE_RUN , 1.0f);
|
||||
m_creature->SetSpeed(MOVE_WALK , 1.0f);
|
||||
//m_creature->SetSpeed(MOVE_FLIGHT , 1.0f);
|
||||
me->AddUnitMovementFlag(MOVEMENTFLAG_FLYING | MOVEMENTFLAG_HOVER);
|
||||
me->SetSpeed(MOVE_SWIM , 1.0f);
|
||||
me->SetSpeed(MOVE_RUN , 1.0f);
|
||||
me->SetSpeed(MOVE_WALK , 1.0f);
|
||||
//me->SetSpeed(MOVE_FLIGHT , 1.0f);
|
||||
|
||||
m_creature->GetPosition(x,y,z);
|
||||
me->GetPosition(x,y,z);
|
||||
DoTeleportTo(x+1,y,z+30);
|
||||
|
||||
Unit* ingvar = Unit::GetUnit(*m_creature, pInstance ? pInstance->GetData64(DATA_INGVAR) : 0);
|
||||
Unit* ingvar = Unit::GetUnit(*me, pInstance ? pInstance->GetData64(DATA_INGVAR) : 0);
|
||||
if (ingvar)
|
||||
{
|
||||
m_creature->GetMotionMaster()->MovePoint(1,x,y,z+15);
|
||||
me->GetMotionMaster()->MovePoint(1,x,y,z+15);
|
||||
|
||||
// DoScriptText(YELL_RESSURECT,m_creature);
|
||||
// DoScriptText(YELL_RESSURECT,me);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -312,7 +312,7 @@ struct mob_annhylde_the_callerAI : public ScriptedAI
|
||||
{
|
||||
if (type != POINT_MOTION_TYPE)
|
||||
return;
|
||||
Unit* ingvar = Unit::GetUnit((*m_creature), pInstance ? pInstance->GetData64(DATA_INGVAR) : 0);
|
||||
Unit* ingvar = Unit::GetUnit((*me), pInstance ? pInstance->GetData64(DATA_INGVAR) : 0);
|
||||
if (ingvar)
|
||||
{
|
||||
switch (id)
|
||||
@@ -325,9 +325,9 @@ struct mob_annhylde_the_callerAI : public ScriptedAI
|
||||
uiResurectPhase = 1;
|
||||
break;
|
||||
case 2:
|
||||
m_creature->SetVisibility(VISIBILITY_OFF);
|
||||
m_creature->DealDamage(m_creature,m_creature->GetHealth());
|
||||
m_creature->RemoveCorpse();
|
||||
me->SetVisibility(VISIBILITY_OFF);
|
||||
me->DealDamage(me,me->GetHealth());
|
||||
me->RemoveCorpse();
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -343,7 +343,7 @@ struct mob_annhylde_the_callerAI : public ScriptedAI
|
||||
{
|
||||
if (uiResurectPhase == 1)
|
||||
{
|
||||
Unit* ingvar = Unit::GetUnit(*m_creature, pInstance ? pInstance->GetData64(DATA_INGVAR) : 0);
|
||||
Unit* ingvar = Unit::GetUnit(*me, pInstance ? pInstance->GetData64(DATA_INGVAR) : 0);
|
||||
if (ingvar)
|
||||
{
|
||||
ingvar->SetStandState(UNIT_STAND_STATE_STAND);
|
||||
@@ -354,14 +354,14 @@ struct mob_annhylde_the_callerAI : public ScriptedAI
|
||||
}
|
||||
else if (uiResurectPhase == 2)
|
||||
{
|
||||
if (Creature* ingvar = Unit::GetCreature(*m_creature, pInstance ? pInstance->GetData64(DATA_INGVAR) : 0))
|
||||
if (Creature* ingvar = Unit::GetCreature(*me, pInstance ? pInstance->GetData64(DATA_INGVAR) : 0))
|
||||
{
|
||||
ingvar->RemoveAurasDueToSpell(SPELL_SCOURG_RESURRECTION_DUMMY);
|
||||
|
||||
if (boss_ingvar_the_plundererAI* pAI = CAST_AI(boss_ingvar_the_plundererAI, ingvar->AI()))
|
||||
pAI->StartZombiePhase();
|
||||
|
||||
m_creature->GetMotionMaster()->MovePoint(2,x+1,y,z+30);
|
||||
me->GetMotionMaster()->MovePoint(2,x+1,y,z+30);
|
||||
++uiResurectPhase;
|
||||
uiResurectTimer = 0;
|
||||
}
|
||||
@@ -392,13 +392,13 @@ struct mob_ingvar_throw_dummyAI : public ScriptedAI
|
||||
|
||||
void Reset()
|
||||
{
|
||||
Unit *pTarget = m_creature->FindNearestCreature(ENTRY_THROW_TARGET,50);
|
||||
Unit *pTarget = me->FindNearestCreature(ENTRY_THROW_TARGET,50);
|
||||
if (pTarget)
|
||||
{
|
||||
DoCast(m_creature, SPELL_SHADOW_AXE_DAMAGE);
|
||||
DoCast(me, SPELL_SHADOW_AXE_DAMAGE);
|
||||
float x,y,z;
|
||||
pTarget->GetPosition(x,y,z);
|
||||
m_creature->GetMotionMaster()->MovePoint(0,x,y,z);
|
||||
me->GetMotionMaster()->MovePoint(0,x,y,z);
|
||||
}
|
||||
uiDespawnTimer = 7000;
|
||||
}
|
||||
@@ -409,8 +409,8 @@ struct mob_ingvar_throw_dummyAI : public ScriptedAI
|
||||
{
|
||||
if (uiDespawnTimer <= diff)
|
||||
{
|
||||
m_creature->DealDamage(m_creature,m_creature->GetHealth());
|
||||
m_creature->RemoveCorpse();
|
||||
me->DealDamage(me,me->GetHealth());
|
||||
me->RemoveCorpse();
|
||||
uiDespawnTimer = 0;
|
||||
} else uiDespawnTimer -= diff;
|
||||
}
|
||||
|
||||
@@ -82,12 +82,12 @@ struct mob_frost_tombAI : public ScriptedAI
|
||||
|
||||
void JustDied(Unit *killer)
|
||||
{
|
||||
if (killer->GetGUID() != m_creature->GetGUID())
|
||||
if (killer->GetGUID() != me->GetGUID())
|
||||
ShatterFrostTomb = true;
|
||||
|
||||
if (FrostTombGUID)
|
||||
{
|
||||
Unit* FrostTomb = Unit::GetUnit((*m_creature),FrostTombGUID);
|
||||
Unit* FrostTomb = Unit::GetUnit((*me),FrostTombGUID);
|
||||
if (FrostTomb)
|
||||
FrostTomb->RemoveAurasDueToSpell(SPELL_FROST_TOMB);
|
||||
}
|
||||
@@ -95,9 +95,9 @@ struct mob_frost_tombAI : public ScriptedAI
|
||||
|
||||
void UpdateAI(const uint32 diff)
|
||||
{
|
||||
Unit* temp = Unit::GetUnit((*m_creature),FrostTombGUID);
|
||||
Unit* temp = Unit::GetUnit((*me),FrostTombGUID);
|
||||
if ((temp && temp->isAlive() && !temp->HasAura(SPELL_FROST_TOMB)) || !temp)
|
||||
m_creature->DealDamage(m_creature, m_creature->GetHealth(), NULL, DIRECT_DAMAGE, SPELL_SCHOOL_MASK_NORMAL, NULL, false);
|
||||
me->DealDamage(me, me->GetHealth(), NULL, DIRECT_DAMAGE, SPELL_SCHOOL_MASK_NORMAL, NULL, false);
|
||||
}
|
||||
};
|
||||
|
||||
@@ -133,22 +133,22 @@ struct boss_kelesethAI : public ScriptedAI
|
||||
|
||||
void KilledUnit(Unit *victim)
|
||||
{
|
||||
if (victim == m_creature)
|
||||
if (victim == me)
|
||||
return;
|
||||
|
||||
DoScriptText(SAY_KILL, m_creature);
|
||||
DoScriptText(SAY_KILL, me);
|
||||
}
|
||||
|
||||
void JustDied(Unit* killer)
|
||||
{
|
||||
DoScriptText(SAY_DEATH, m_creature);
|
||||
DoScriptText(SAY_DEATH, me);
|
||||
|
||||
if (IsHeroic() && !ShatterFrostTomb)
|
||||
{
|
||||
AchievementEntry const *AchievOnTheRocks = GetAchievementStore()->LookupEntry(ACHIEVEMENT_ON_THE_ROCKS);
|
||||
if (AchievOnTheRocks)
|
||||
{
|
||||
Map* pMap = m_creature->GetMap();
|
||||
Map* pMap = me->GetMap();
|
||||
if (pMap && pMap->IsDungeon())
|
||||
{
|
||||
Map::PlayerList const &players = pMap->GetPlayers();
|
||||
@@ -164,7 +164,7 @@ struct boss_kelesethAI : public ScriptedAI
|
||||
|
||||
void EnterCombat(Unit* who)
|
||||
{
|
||||
DoScriptText(SAY_AGGRO, m_creature);
|
||||
DoScriptText(SAY_AGGRO, me);
|
||||
DoZoneInCombat();
|
||||
|
||||
if (pInstance)
|
||||
@@ -186,7 +186,7 @@ struct boss_kelesethAI : public ScriptedAI
|
||||
{
|
||||
Unit *pTarget = SelectUnit(SELECT_TARGET_TOPAGGRO, 0);
|
||||
if (pTarget && pTarget->isAlive() && pTarget->GetTypeId() == TYPEID_PLAYER)
|
||||
m_creature->CastSpell(pTarget, DUNGEON_MODE(SPELL_SHADOWBOLT, SPELL_SHADOWBOLT_HEROIC), true);
|
||||
me->CastSpell(pTarget, DUNGEON_MODE(SPELL_SHADOWBOLT, SPELL_SHADOWBOLT_HEROIC), true);
|
||||
ShadowboltTimer = 10000;
|
||||
} else ShadowboltTimer -= diff;
|
||||
|
||||
@@ -194,14 +194,14 @@ struct boss_kelesethAI : public ScriptedAI
|
||||
if ((SummonSkeletonsTimer <= diff))
|
||||
{
|
||||
Creature* Skeleton;
|
||||
DoScriptText(SAY_SKELETONS, m_creature);
|
||||
DoScriptText(SAY_SKELETONS, me);
|
||||
for (uint8 i = 0; i < 5; ++i)
|
||||
{
|
||||
if (Skeleton = m_creature->SummonCreature(CREATURE_SKELETON, SkeletonSpawnPoint[i][0], SkeletonSpawnPoint[i][1] , SKELETONSPAWN_Z, 0, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 20000))
|
||||
if (Skeleton = me->SummonCreature(CREATURE_SKELETON, SkeletonSpawnPoint[i][0], SkeletonSpawnPoint[i][1] , SKELETONSPAWN_Z, 0, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 20000))
|
||||
{
|
||||
Skeleton->RemoveUnitMovementFlag(MOVEMENTFLAG_WALK_MODE);
|
||||
Skeleton->GetMotionMaster()->MovePoint(0, m_creature->GetPositionX(), m_creature->GetPositionY() , m_creature->GetPositionZ());
|
||||
Skeleton->AddThreat(m_creature->getVictim(), 0.0f);
|
||||
Skeleton->GetMotionMaster()->MovePoint(0, me->GetPositionX(), me->GetPositionY() , me->GetPositionZ());
|
||||
Skeleton->AddThreat(me->getVictim(), 0.0f);
|
||||
DoZoneInCombat(Skeleton);
|
||||
}
|
||||
}
|
||||
@@ -214,12 +214,12 @@ struct boss_kelesethAI : public ScriptedAI
|
||||
if (pTarget->isAlive())
|
||||
{
|
||||
//DoCast(pTarget, SPELL_FROST_TOMB_SUMMON, true);
|
||||
if (Creature *pChains = m_creature->SummonCreature(CREATURE_FROSTTOMB, pTarget->GetPositionX(), pTarget->GetPositionY(), pTarget->GetPositionZ(), 0, TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN, 20000))
|
||||
if (Creature *pChains = me->SummonCreature(CREATURE_FROSTTOMB, pTarget->GetPositionX(), pTarget->GetPositionY(), pTarget->GetPositionZ(), 0, TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN, 20000))
|
||||
{
|
||||
CAST_AI(mob_frost_tombAI, pChains->AI())->SetPrisoner(pTarget);
|
||||
pChains->CastSpell(pTarget, SPELL_FROST_TOMB, true);
|
||||
|
||||
DoScriptText(SAY_FROST_TOMB, m_creature);
|
||||
DoScriptText(SAY_FROST_TOMB, me);
|
||||
}
|
||||
}
|
||||
FrostTombTimer = 15000;
|
||||
@@ -253,10 +253,10 @@ struct mob_vrykul_skeletonAI : public ScriptedAI
|
||||
void EnterCombat(Unit *who){}
|
||||
void DamageTaken(Unit *done_by, uint32 &damage)
|
||||
{
|
||||
if (done_by->GetGUID() == m_creature->GetGUID())
|
||||
if (done_by->GetGUID() == me->GetGUID())
|
||||
return;
|
||||
|
||||
if (damage >= m_creature->GetHealth())
|
||||
if (damage >= me->GetHealth())
|
||||
{
|
||||
PretendToDie();
|
||||
damage = 0;
|
||||
@@ -266,28 +266,28 @@ struct mob_vrykul_skeletonAI : public ScriptedAI
|
||||
void PretendToDie()
|
||||
{
|
||||
isDead = true;
|
||||
m_creature->InterruptNonMeleeSpells(true);
|
||||
m_creature->RemoveAllAuras();
|
||||
m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
||||
m_creature->GetMotionMaster()->MovementExpired(false);
|
||||
m_creature->GetMotionMaster()->MoveIdle();
|
||||
m_creature->SetStandState(UNIT_STAND_STATE_DEAD);
|
||||
me->InterruptNonMeleeSpells(true);
|
||||
me->RemoveAllAuras();
|
||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
||||
me->GetMotionMaster()->MovementExpired(false);
|
||||
me->GetMotionMaster()->MoveIdle();
|
||||
me->SetStandState(UNIT_STAND_STATE_DEAD);
|
||||
};
|
||||
|
||||
void Resurrect()
|
||||
{
|
||||
isDead = false;
|
||||
m_creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
||||
m_creature->SetStandState(UNIT_STAND_STATE_STAND);
|
||||
DoCast(m_creature, SPELL_SCOURGE_RESSURRECTION, true);
|
||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
||||
me->SetStandState(UNIT_STAND_STATE_STAND);
|
||||
DoCast(me, SPELL_SCOURGE_RESSURRECTION, true);
|
||||
|
||||
if (m_creature->getVictim())
|
||||
if (me->getVictim())
|
||||
{
|
||||
m_creature->GetMotionMaster()->MoveChase(m_creature->getVictim());
|
||||
m_creature->AI()->AttackStart(m_creature->getVictim());
|
||||
me->GetMotionMaster()->MoveChase(me->getVictim());
|
||||
me->AI()->AttackStart(me->getVictim());
|
||||
}
|
||||
else
|
||||
m_creature->GetMotionMaster()->Initialize();
|
||||
me->GetMotionMaster()->Initialize();
|
||||
};
|
||||
|
||||
void UpdateAI(const uint32 diff)
|
||||
@@ -309,7 +309,7 @@ struct mob_vrykul_skeletonAI : public ScriptedAI
|
||||
|
||||
if (Decrepify_Timer <= diff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(), SPELL_DECREPIFY);
|
||||
DoCast(me->getVictim(), SPELL_DECREPIFY);
|
||||
Decrepify_Timer = 30000;
|
||||
} else Decrepify_Timer -= diff;
|
||||
|
||||
@@ -317,8 +317,8 @@ struct mob_vrykul_skeletonAI : public ScriptedAI
|
||||
}
|
||||
}else
|
||||
{
|
||||
if (m_creature->isAlive())
|
||||
m_creature->DealDamage(m_creature, m_creature->GetHealth(), NULL, DIRECT_DAMAGE, SPELL_SCHOOL_MASK_NORMAL, NULL, false);
|
||||
if (me->isAlive())
|
||||
me->DealDamage(me, me->GetHealth(), NULL, DIRECT_DAMAGE, SPELL_SCHOOL_MASK_NORMAL, NULL, false);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -81,10 +81,10 @@ struct boss_skarvald_the_constructorAI : public ScriptedAI
|
||||
Dalronn_isDead = false;
|
||||
Check_Timer = 5000;
|
||||
|
||||
ghost = (m_creature->GetEntry() == MOB_SKARVALD_GHOST);
|
||||
ghost = (me->GetEntry() == MOB_SKARVALD_GHOST);
|
||||
if (!ghost && pInstance)
|
||||
{
|
||||
Unit* dalronn = Unit::GetUnit((*m_creature),pInstance->GetData64(DATA_DALRONN));
|
||||
Unit* dalronn = Unit::GetUnit((*me),pInstance->GetData64(DATA_DALRONN));
|
||||
if (dalronn && dalronn->isDead())
|
||||
CAST_CRE(dalronn)->Respawn();
|
||||
|
||||
@@ -96,9 +96,9 @@ struct boss_skarvald_the_constructorAI : public ScriptedAI
|
||||
{
|
||||
if (!ghost && pInstance)
|
||||
{
|
||||
DoScriptText(YELL_SKARVALD_AGGRO,m_creature);
|
||||
DoScriptText(YELL_SKARVALD_AGGRO,me);
|
||||
|
||||
Unit* dalronn = Unit::GetUnit((*m_creature),pInstance->GetData64(DATA_DALRONN));
|
||||
Unit* dalronn = Unit::GetUnit((*me),pInstance->GetData64(DATA_DALRONN));
|
||||
if (dalronn && dalronn->isAlive() && !dalronn->getVictim())
|
||||
dalronn->getThreatManager().addThreat(who,0.0f);
|
||||
|
||||
@@ -110,22 +110,22 @@ struct boss_skarvald_the_constructorAI : public ScriptedAI
|
||||
{
|
||||
if (!ghost && pInstance)
|
||||
{
|
||||
Unit* dalronn = Unit::GetUnit((*m_creature),pInstance->GetData64(DATA_DALRONN));
|
||||
Unit* dalronn = Unit::GetUnit((*me),pInstance->GetData64(DATA_DALRONN));
|
||||
if (dalronn)
|
||||
{
|
||||
if (dalronn->isDead())
|
||||
{
|
||||
DoScriptText(YELL_SKARVALD_DAL_DIED,m_creature);
|
||||
DoScriptText(YELL_SKARVALD_DAL_DIED,me);
|
||||
|
||||
pInstance->SetData(DATA_SKARVALD_DALRONN_EVENT, DONE);
|
||||
}
|
||||
else
|
||||
{
|
||||
DoScriptText(YELL_SKARVALD_SKA_DIEDFIRST,m_creature);
|
||||
DoScriptText(YELL_SKARVALD_SKA_DIEDFIRST,me);
|
||||
|
||||
m_creature->RemoveFlag(UNIT_DYNAMIC_FLAGS, UNIT_DYNFLAG_LOOTABLE);
|
||||
//DoCast(m_creature, SPELL_SUMMON_SKARVALD_GHOST, true);
|
||||
Creature* temp = m_creature->SummonCreature(MOB_SKARVALD_GHOST,m_creature->GetPositionX(),m_creature->GetPositionY(),m_creature->GetPositionZ(),0,TEMPSUMMON_CORPSE_DESPAWN,5000);
|
||||
me->RemoveFlag(UNIT_DYNAMIC_FLAGS, UNIT_DYNFLAG_LOOTABLE);
|
||||
//DoCast(me, SPELL_SUMMON_SKARVALD_GHOST, true);
|
||||
Creature* temp = me->SummonCreature(MOB_SKARVALD_GHOST,me->GetPositionX(),me->GetPositionY(),me->GetPositionZ(),0,TEMPSUMMON_CORPSE_DESPAWN,5000);
|
||||
if (temp)
|
||||
{
|
||||
temp->SetFlag(UNIT_FIELD_FLAGS,UNIT_FLAG_NON_ATTACKABLE);
|
||||
@@ -140,7 +140,7 @@ struct boss_skarvald_the_constructorAI : public ScriptedAI
|
||||
{
|
||||
if (!ghost)
|
||||
{
|
||||
DoScriptText(YELL_SKARVALD_KILL,m_creature);
|
||||
DoScriptText(YELL_SKARVALD_KILL,me);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -149,7 +149,7 @@ struct boss_skarvald_the_constructorAI : public ScriptedAI
|
||||
if (ghost)
|
||||
{
|
||||
if (pInstance && pInstance->GetData(DATA_SKARVALD_DALRONN_EVENT) != IN_PROGRESS)
|
||||
m_creature->DealDamage(m_creature, m_creature->GetHealth(), NULL, DIRECT_DAMAGE, SPELL_SCHOOL_MASK_NORMAL, NULL, false);
|
||||
me->DealDamage(me, me->GetHealth(), NULL, DIRECT_DAMAGE, SPELL_SCHOOL_MASK_NORMAL, NULL, false);
|
||||
}
|
||||
|
||||
if (!UpdateVictim())
|
||||
@@ -161,7 +161,7 @@ struct boss_skarvald_the_constructorAI : public ScriptedAI
|
||||
if (Check_Timer <= diff)
|
||||
{
|
||||
Check_Timer = 5000;
|
||||
Unit* dalronn = Unit::GetUnit(*m_creature, pInstance ? pInstance->GetData64(DATA_DALRONN) : 0);
|
||||
Unit* dalronn = Unit::GetUnit(*me, pInstance ? pInstance->GetData64(DATA_DALRONN) : 0);
|
||||
if (dalronn && dalronn->isDead())
|
||||
{
|
||||
Dalronn_isDead = true;
|
||||
@@ -174,7 +174,7 @@ struct boss_skarvald_the_constructorAI : public ScriptedAI
|
||||
if (Dalronn_isDead)
|
||||
if (Response_Timer <= diff)
|
||||
{
|
||||
DoScriptText(YELL_SKARVALD_DAL_DIEDFIRST,m_creature);
|
||||
DoScriptText(YELL_SKARVALD_DAL_DIEDFIRST,me);
|
||||
|
||||
Response_Timer = 0;
|
||||
} else Response_Timer -= diff;
|
||||
@@ -188,7 +188,7 @@ struct boss_skarvald_the_constructorAI : public ScriptedAI
|
||||
|
||||
if (StoneStrike_Timer <= diff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(), SPELL_STONE_STRIKE);
|
||||
DoCast(me->getVictim(), SPELL_STONE_STRIKE);
|
||||
StoneStrike_Timer = 5000+rand()%5000;
|
||||
} else StoneStrike_Timer -= diff;
|
||||
|
||||
@@ -229,10 +229,10 @@ struct boss_dalronn_the_controllerAI : public ScriptedAI
|
||||
Skarvald_isDead = false;
|
||||
AggroYell_Timer = 0;
|
||||
|
||||
ghost = m_creature->GetEntry() == MOB_DALRONN_GHOST;
|
||||
ghost = me->GetEntry() == MOB_DALRONN_GHOST;
|
||||
if (!ghost && pInstance)
|
||||
{
|
||||
Unit* skarvald = Unit::GetUnit((*m_creature),pInstance->GetData64(DATA_SKARVALD));
|
||||
Unit* skarvald = Unit::GetUnit((*me),pInstance->GetData64(DATA_SKARVALD));
|
||||
if (skarvald && skarvald->isDead())
|
||||
CAST_CRE(skarvald)->Respawn();
|
||||
|
||||
@@ -244,7 +244,7 @@ struct boss_dalronn_the_controllerAI : public ScriptedAI
|
||||
{
|
||||
if (!ghost && pInstance)
|
||||
{
|
||||
Unit* skarvald = Unit::GetUnit((*m_creature),pInstance->GetData64(DATA_SKARVALD));
|
||||
Unit* skarvald = Unit::GetUnit((*me),pInstance->GetData64(DATA_SKARVALD));
|
||||
if (skarvald && skarvald->isAlive() && !skarvald->getVictim())
|
||||
skarvald->getThreatManager().addThreat(who,0.0f);
|
||||
|
||||
@@ -259,22 +259,22 @@ struct boss_dalronn_the_controllerAI : public ScriptedAI
|
||||
{
|
||||
if (!ghost && pInstance)
|
||||
{
|
||||
Unit* skarvald = Unit::GetUnit((*m_creature),pInstance->GetData64(DATA_SKARVALD));
|
||||
Unit* skarvald = Unit::GetUnit((*me),pInstance->GetData64(DATA_SKARVALD));
|
||||
if (skarvald)
|
||||
if (skarvald->isDead())
|
||||
{
|
||||
DoScriptText(YELL_DALRONN_SKA_DIED,m_creature);
|
||||
DoScriptText(YELL_DALRONN_SKA_DIED,me);
|
||||
|
||||
if (pInstance)
|
||||
pInstance->SetData(DATA_SKARVALD_DALRONN_EVENT, DONE);
|
||||
}
|
||||
else
|
||||
{
|
||||
DoScriptText(YELL_DALRONN_DAL_DIEDFIRST,m_creature);
|
||||
DoScriptText(YELL_DALRONN_DAL_DIEDFIRST,me);
|
||||
|
||||
m_creature->RemoveFlag(UNIT_DYNAMIC_FLAGS, UNIT_DYNFLAG_LOOTABLE);
|
||||
//DoCast(m_creature, SPELL_SUMMON_DALRONN_GHOST, true);
|
||||
Creature* temp = m_creature->SummonCreature(MOB_DALRONN_GHOST,m_creature->GetPositionX(),m_creature->GetPositionY(),m_creature->GetPositionZ(),0,TEMPSUMMON_CORPSE_DESPAWN,5000);
|
||||
me->RemoveFlag(UNIT_DYNAMIC_FLAGS, UNIT_DYNFLAG_LOOTABLE);
|
||||
//DoCast(me, SPELL_SUMMON_DALRONN_GHOST, true);
|
||||
Creature* temp = me->SummonCreature(MOB_DALRONN_GHOST,me->GetPositionX(),me->GetPositionY(),me->GetPositionZ(),0,TEMPSUMMON_CORPSE_DESPAWN,5000);
|
||||
if (temp)
|
||||
{
|
||||
temp->SetFlag(UNIT_FIELD_FLAGS,UNIT_FLAG_NON_ATTACKABLE);
|
||||
@@ -288,7 +288,7 @@ struct boss_dalronn_the_controllerAI : public ScriptedAI
|
||||
{
|
||||
if (!ghost)
|
||||
{
|
||||
DoScriptText(YELL_DALRONN_KILL,m_creature);
|
||||
DoScriptText(YELL_DALRONN_KILL,me);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -297,7 +297,7 @@ struct boss_dalronn_the_controllerAI : public ScriptedAI
|
||||
if (ghost)
|
||||
{
|
||||
if (pInstance && pInstance->GetData(DATA_SKARVALD_DALRONN_EVENT) != IN_PROGRESS)
|
||||
m_creature->DealDamage(m_creature, m_creature->GetHealth(), NULL, DIRECT_DAMAGE, SPELL_SCHOOL_MASK_NORMAL, NULL, false);
|
||||
me->DealDamage(me, me->GetHealth(), NULL, DIRECT_DAMAGE, SPELL_SCHOOL_MASK_NORMAL, NULL, false);
|
||||
}
|
||||
|
||||
if (!UpdateVictim())
|
||||
@@ -306,7 +306,7 @@ struct boss_dalronn_the_controllerAI : public ScriptedAI
|
||||
if (AggroYell_Timer)
|
||||
if (AggroYell_Timer <= diff)
|
||||
{
|
||||
DoScriptText(YELL_DALRONN_AGGRO,m_creature);
|
||||
DoScriptText(YELL_DALRONN_AGGRO,me);
|
||||
|
||||
AggroYell_Timer = 0;
|
||||
} else AggroYell_Timer -= diff;
|
||||
@@ -317,7 +317,7 @@ struct boss_dalronn_the_controllerAI : public ScriptedAI
|
||||
if (Check_Timer <= diff)
|
||||
{
|
||||
Check_Timer = 5000;
|
||||
Unit* skarvald = Unit::GetUnit(*m_creature, pInstance ? pInstance->GetData64(DATA_SKARVALD) : 0);
|
||||
Unit* skarvald = Unit::GetUnit(*me, pInstance ? pInstance->GetData64(DATA_SKARVALD) : 0);
|
||||
if (skarvald && skarvald->isDead())
|
||||
{
|
||||
Skarvald_isDead = true;
|
||||
@@ -330,7 +330,7 @@ struct boss_dalronn_the_controllerAI : public ScriptedAI
|
||||
if (Skarvald_isDead)
|
||||
if (Response_Timer <= diff)
|
||||
{
|
||||
DoScriptText(YELL_DALRONN_SKA_DIEDFIRST,m_creature);
|
||||
DoScriptText(YELL_DALRONN_SKA_DIEDFIRST,me);
|
||||
|
||||
Response_Timer = 0;
|
||||
} else Response_Timer -= diff;
|
||||
@@ -338,7 +338,7 @@ struct boss_dalronn_the_controllerAI : public ScriptedAI
|
||||
|
||||
if (ShadowBolt_Timer <= diff)
|
||||
{
|
||||
if (!m_creature->IsNonMeleeSpellCasted(false))
|
||||
if (!me->IsNonMeleeSpellCasted(false))
|
||||
{
|
||||
DoCast(SelectUnit(SELECT_TARGET_RANDOM, 0), SPELL_SHADOW_BOLT);
|
||||
ShadowBolt_Timer = 2100;//give a 100ms pause to try cast other spells
|
||||
@@ -347,7 +347,7 @@ struct boss_dalronn_the_controllerAI : public ScriptedAI
|
||||
|
||||
if (Debilitate_Timer <= diff)
|
||||
{
|
||||
if (!m_creature->IsNonMeleeSpellCasted(false))
|
||||
if (!me->IsNonMeleeSpellCasted(false))
|
||||
{
|
||||
DoCast(SelectUnit(SELECT_TARGET_RANDOM, 0), SPELL_DEBILITATE);
|
||||
Debilitate_Timer = 5000+rand()%5000;
|
||||
@@ -357,9 +357,9 @@ struct boss_dalronn_the_controllerAI : public ScriptedAI
|
||||
if (IsHeroic())
|
||||
if (Summon_Timer <= diff)
|
||||
{
|
||||
if (!m_creature->IsNonMeleeSpellCasted(false))
|
||||
if (!me->IsNonMeleeSpellCasted(false))
|
||||
{
|
||||
DoCast(m_creature, H_SPELL_SUMMON_SKELETONS);
|
||||
DoCast(me, H_SPELL_SUMMON_SKELETONS);
|
||||
Summon_Timer = (rand()%10000) + 20000;
|
||||
}
|
||||
} else Summon_Timer -= diff;
|
||||
|
||||
@@ -50,13 +50,13 @@ struct npc_dragonflayer_forge_masterAI : public ScriptedAI
|
||||
switch(fm_Type)
|
||||
{
|
||||
case 1:
|
||||
pInstance->SetData(EVENT_FORGE_1,m_creature->isAlive() ? NOT_STARTED : DONE);
|
||||
pInstance->SetData(EVENT_FORGE_1,me->isAlive() ? NOT_STARTED : DONE);
|
||||
break;
|
||||
case 2:
|
||||
pInstance->SetData(EVENT_FORGE_2,m_creature->isAlive() ? NOT_STARTED : DONE);
|
||||
pInstance->SetData(EVENT_FORGE_2,me->isAlive() ? NOT_STARTED : DONE);
|
||||
break;
|
||||
case 3:
|
||||
pInstance->SetData(EVENT_FORGE_3,m_creature->isAlive() ? NOT_STARTED : DONE);
|
||||
pInstance->SetData(EVENT_FORGE_3,me->isAlive() ? NOT_STARTED : DONE);
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -100,7 +100,7 @@ struct npc_dragonflayer_forge_masterAI : public ScriptedAI
|
||||
break;
|
||||
}
|
||||
}
|
||||
m_creature->SetUInt32Value(UNIT_NPC_EMOTESTATE ,EMOTE_ONESHOT_NONE);
|
||||
me->SetUInt32Value(UNIT_NPC_EMOTESTATE ,EMOTE_ONESHOT_NONE);
|
||||
}
|
||||
|
||||
uint8 GetForgeMasterType()
|
||||
@@ -111,13 +111,13 @@ struct npc_dragonflayer_forge_masterAI : public ScriptedAI
|
||||
for (uint8 i = 0; i < 3 ; ++i)
|
||||
{
|
||||
GameObject* temp;
|
||||
temp = m_creature->FindNearestGameObject(entry_search[i],30);
|
||||
temp = me->FindNearestGameObject(entry_search[i],30);
|
||||
if (temp)
|
||||
{
|
||||
if (m_creature->IsWithinDist(temp,diff,false))
|
||||
if (me->IsWithinDist(temp,diff,false))
|
||||
{
|
||||
near_f = i + 1;
|
||||
diff = m_creature->GetDistance2d(temp);
|
||||
diff = me->GetDistance2d(temp);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -91,7 +91,7 @@ struct boss_palehoofAI : public ScriptedAI
|
||||
uiImpaleTimer = 12000;
|
||||
uiWhiteringRoarTimer = 10000;
|
||||
|
||||
m_creature->GetMotionMaster()->MoveTargetedHome();
|
||||
me->GetMotionMaster()->MoveTargetedHome();
|
||||
|
||||
for (uint32 i=0;i<4;i++)
|
||||
DoneAdds[i]=false;
|
||||
@@ -104,13 +104,13 @@ struct boss_palehoofAI : public ScriptedAI
|
||||
pInstance->SetData(DATA_GORTOK_PALEHOOF_EVENT, NOT_STARTED);
|
||||
|
||||
Creature* pTemp;
|
||||
if ((pTemp = Unit::GetCreature((*m_creature), pInstance->GetData64(DATA_MOB_FRENZIED_WORGEN))) && !pTemp->isAlive())
|
||||
if ((pTemp = Unit::GetCreature((*me), pInstance->GetData64(DATA_MOB_FRENZIED_WORGEN))) && !pTemp->isAlive())
|
||||
pTemp->Respawn();
|
||||
if ((pTemp = Unit::GetCreature((*m_creature), pInstance->GetData64(DATA_MOB_FEROCIOUS_RHINO))) && !pTemp->isAlive())
|
||||
if ((pTemp = Unit::GetCreature((*me), pInstance->GetData64(DATA_MOB_FEROCIOUS_RHINO))) && !pTemp->isAlive())
|
||||
pTemp->Respawn();
|
||||
if ((pTemp = Unit::GetCreature((*m_creature), pInstance->GetData64(DATA_MOB_MASSIVE_JORMUNGAR))) && !pTemp->isAlive())
|
||||
if ((pTemp = Unit::GetCreature((*me), pInstance->GetData64(DATA_MOB_MASSIVE_JORMUNGAR))) && !pTemp->isAlive())
|
||||
pTemp->Respawn();
|
||||
if ((pTemp = Unit::GetCreature((*m_creature), pInstance->GetData64(DATA_MOB_RAVENOUS_FURBOLG))) && !pTemp->isAlive())
|
||||
if ((pTemp = Unit::GetCreature((*me), pInstance->GetData64(DATA_MOB_RAVENOUS_FURBOLG))) && !pTemp->isAlive())
|
||||
pTemp->Respawn();
|
||||
|
||||
if (GameObject* pGo = pInstance->instance->GetGameObject(pInstance->GetData64(DATA_GORTOK_PALEHOOF_SPHERE)))
|
||||
@@ -123,7 +123,7 @@ struct boss_palehoofAI : public ScriptedAI
|
||||
|
||||
void EnterCombat(Unit* who)
|
||||
{
|
||||
DoScriptText(SAY_AGGRO, m_creature);
|
||||
DoScriptText(SAY_AGGRO, me);
|
||||
}
|
||||
|
||||
void AttackStart(Unit* who)
|
||||
@@ -131,14 +131,14 @@ struct boss_palehoofAI : public ScriptedAI
|
||||
if (!who)
|
||||
return;
|
||||
|
||||
if (m_creature->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE))
|
||||
if (me->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE))
|
||||
return;
|
||||
|
||||
if (m_creature->Attack(who, true))
|
||||
if (me->Attack(who, true))
|
||||
{
|
||||
m_creature->AddThreat(who, 0.0f);
|
||||
m_creature->SetInCombatWith(who);
|
||||
who->SetInCombatWith(m_creature);
|
||||
me->AddThreat(who, 0.0f);
|
||||
me->SetInCombatWith(who);
|
||||
who->SetInCombatWith(me);
|
||||
DoStartMovement(who);
|
||||
}
|
||||
}
|
||||
@@ -151,13 +151,13 @@ struct boss_palehoofAI : public ScriptedAI
|
||||
if (!UpdateVictim())
|
||||
return;
|
||||
|
||||
Creature* pTemp = Unit::GetCreature((*m_creature), pInstance ? pInstance->GetData64(DATA_MOB_ORB) : 0);
|
||||
Creature* pTemp = Unit::GetCreature((*me), pInstance ? pInstance->GetData64(DATA_MOB_ORB) : 0);
|
||||
if (pTemp && pTemp->isAlive())
|
||||
pTemp->DisappearAndDie();
|
||||
|
||||
if (uiArcingSmashTimer <= diff)
|
||||
{
|
||||
DoCast(m_creature, SPELL_ARCING_SMASH);
|
||||
DoCast(me, SPELL_ARCING_SMASH);
|
||||
uiArcingSmashTimer = urand(13000,17000);
|
||||
} else uiArcingSmashTimer -= diff;
|
||||
|
||||
@@ -170,7 +170,7 @@ struct boss_palehoofAI : public ScriptedAI
|
||||
|
||||
if (uiWhiteringRoarTimer <= diff)
|
||||
{
|
||||
DoCast(m_creature, SPELL_WITHERING_ROAR);
|
||||
DoCast(me, SPELL_WITHERING_ROAR);
|
||||
uiWhiteringRoarTimer = urand(8000,12000);
|
||||
} else uiWhiteringRoarTimer -= diff;
|
||||
|
||||
@@ -179,17 +179,17 @@ struct boss_palehoofAI : public ScriptedAI
|
||||
|
||||
void JustDied(Unit* killer)
|
||||
{
|
||||
DoScriptText(SAY_DEATH, m_creature);
|
||||
DoScriptText(SAY_DEATH, me);
|
||||
if (pInstance)
|
||||
pInstance->SetData(DATA_GORTOK_PALEHOOF_EVENT, DONE);
|
||||
Creature* pTemp = Unit::GetCreature((*m_creature), pInstance ? pInstance->GetData64(DATA_MOB_ORB) : 0);
|
||||
Creature* pTemp = Unit::GetCreature((*me), pInstance ? pInstance->GetData64(DATA_MOB_ORB) : 0);
|
||||
if (pTemp && pTemp->isAlive())
|
||||
pTemp->DisappearAndDie();
|
||||
}
|
||||
|
||||
void KilledUnit(Unit *victim)
|
||||
{
|
||||
DoScriptText(RAND(SAY_SLAY_1,SAY_SLAY_2), m_creature);
|
||||
DoScriptText(RAND(SAY_SLAY_1,SAY_SLAY_2), me);
|
||||
}
|
||||
|
||||
void NextPhase()
|
||||
@@ -197,7 +197,7 @@ struct boss_palehoofAI : public ScriptedAI
|
||||
if (currentPhase == PHASE_NONE)
|
||||
{
|
||||
pInstance->SetData(DATA_GORTOK_PALEHOOF_EVENT, IN_PROGRESS);
|
||||
m_creature->SummonCreature(MOB_STASIS_CONTROLLER,moveLocs[5].x,moveLocs[5].y,moveLocs[5].z,0,TEMPSUMMON_CORPSE_DESPAWN);
|
||||
me->SummonCreature(MOB_STASIS_CONTROLLER,moveLocs[5].x,moveLocs[5].y,moveLocs[5].z,0,TEMPSUMMON_CORPSE_DESPAWN);
|
||||
}
|
||||
Phase move = PHASE_NONE;
|
||||
if (AddCount >= DUNGEON_MODE(2,4))
|
||||
@@ -220,11 +220,11 @@ struct boss_palehoofAI : public ScriptedAI
|
||||
move = (Phase)(move%4);
|
||||
}
|
||||
//send orb to summon spot
|
||||
Creature *pOrb = Unit::GetCreature((*m_creature), pInstance ? pInstance->GetData64(DATA_MOB_ORB) : 0);
|
||||
Creature *pOrb = Unit::GetCreature((*me), pInstance ? pInstance->GetData64(DATA_MOB_ORB) : 0);
|
||||
if (pOrb && pOrb->isAlive())
|
||||
{
|
||||
if (currentPhase == PHASE_NONE)
|
||||
pOrb->CastSpell(m_creature,SPELL_ORB_VISUAL,true);
|
||||
pOrb->CastSpell(me,SPELL_ORB_VISUAL,true);
|
||||
pOrb->GetMotionMaster()->MovePoint(move,moveLocs[move].x,moveLocs[move].y,moveLocs[move].z);
|
||||
}
|
||||
currentPhase = move;
|
||||
@@ -232,9 +232,9 @@ struct boss_palehoofAI : public ScriptedAI
|
||||
|
||||
void JustReachedHome()
|
||||
{
|
||||
m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE|UNIT_FLAG_NOT_SELECTABLE|UNIT_FLAG_NOT_ATTACKABLE_1|UNIT_FLAG_OOC_NOT_ATTACKABLE);
|
||||
m_creature->SetStandState(UNIT_STAND_STATE_STAND);
|
||||
DoCast(m_creature, SPELL_FREEZE);
|
||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE|UNIT_FLAG_NOT_SELECTABLE|UNIT_FLAG_NOT_ATTACKABLE_1|UNIT_FLAG_OOC_NOT_ATTACKABLE);
|
||||
me->SetStandState(UNIT_STAND_STATE_STAND);
|
||||
DoCast(me, SPELL_FREEZE);
|
||||
}
|
||||
};
|
||||
|
||||
@@ -271,12 +271,12 @@ struct mob_ravenous_furbolgAI : public ScriptedAI
|
||||
uiCrazedTimer = 10000;
|
||||
uiTerrifyingRoarTimer = 15000;
|
||||
|
||||
m_creature->GetMotionMaster()->MoveTargetedHome();
|
||||
me->GetMotionMaster()->MoveTargetedHome();
|
||||
|
||||
if (pInstance)
|
||||
if (pInstance->GetData(DATA_GORTOK_PALEHOOF_EVENT) == IN_PROGRESS)
|
||||
{
|
||||
Creature *pPalehoof = Unit::GetCreature((*m_creature), pInstance ? pInstance->GetData64(DATA_GORTOK_PALEHOOF) : 0);
|
||||
Creature *pPalehoof = Unit::GetCreature((*me), pInstance ? pInstance->GetData64(DATA_GORTOK_PALEHOOF) : 0);
|
||||
if (pPalehoof && pPalehoof->isAlive())
|
||||
CAST_AI(boss_palehoofAI, pPalehoof->AI())->Reset();
|
||||
}
|
||||
@@ -290,19 +290,19 @@ struct mob_ravenous_furbolgAI : public ScriptedAI
|
||||
|
||||
if (uiChainLightingTimer <= diff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(), SPELL_CHAIN_LIGHTING);
|
||||
DoCast(me->getVictim(), SPELL_CHAIN_LIGHTING);
|
||||
uiChainLightingTimer = 5000 + rand()%5000;
|
||||
} else uiChainLightingTimer -= diff;
|
||||
|
||||
if (uiCrazedTimer <= diff)
|
||||
{
|
||||
DoCast(m_creature, SPELL_CRAZED);
|
||||
DoCast(me, SPELL_CRAZED);
|
||||
uiCrazedTimer = 8000 + rand()%4000;
|
||||
} else uiCrazedTimer -= diff;
|
||||
|
||||
if (uiTerrifyingRoarTimer <= diff)
|
||||
{
|
||||
DoCast(m_creature, SPELL_TERRIFYING_ROAR);
|
||||
DoCast(me, SPELL_TERRIFYING_ROAR);
|
||||
uiTerrifyingRoarTimer = 10000 + rand()%10000;
|
||||
} else uiTerrifyingRoarTimer -= diff;
|
||||
|
||||
@@ -314,14 +314,14 @@ struct mob_ravenous_furbolgAI : public ScriptedAI
|
||||
if (!who)
|
||||
return;
|
||||
|
||||
if (m_creature->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE))
|
||||
if (me->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE))
|
||||
return;
|
||||
|
||||
if (m_creature->Attack(who, true))
|
||||
if (me->Attack(who, true))
|
||||
{
|
||||
m_creature->AddThreat(who, 0.0f);
|
||||
m_creature->SetInCombatWith(who);
|
||||
who->SetInCombatWith(m_creature);
|
||||
me->AddThreat(who, 0.0f);
|
||||
me->SetInCombatWith(who);
|
||||
who->SetInCombatWith(me);
|
||||
DoStartMovement(who);
|
||||
}
|
||||
}
|
||||
@@ -330,7 +330,7 @@ struct mob_ravenous_furbolgAI : public ScriptedAI
|
||||
{
|
||||
if (pInstance)
|
||||
{
|
||||
Creature *pPalehoof = Unit::GetCreature((*m_creature), pInstance ? pInstance->GetData64(DATA_GORTOK_PALEHOOF) : 0);
|
||||
Creature *pPalehoof = Unit::GetCreature((*me), pInstance ? pInstance->GetData64(DATA_GORTOK_PALEHOOF) : 0);
|
||||
if (pPalehoof)
|
||||
CAST_AI(boss_palehoofAI, pPalehoof->AI())->NextPhase();
|
||||
}
|
||||
@@ -338,9 +338,9 @@ struct mob_ravenous_furbolgAI : public ScriptedAI
|
||||
|
||||
void JustReachedHome()
|
||||
{
|
||||
m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE|UNIT_FLAG_NOT_SELECTABLE|UNIT_FLAG_NOT_ATTACKABLE_1|UNIT_FLAG_OOC_NOT_ATTACKABLE);
|
||||
m_creature->SetStandState(UNIT_STAND_STATE_STAND);
|
||||
DoCast(m_creature, SPELL_FREEZE);
|
||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE|UNIT_FLAG_NOT_SELECTABLE|UNIT_FLAG_NOT_ATTACKABLE_1|UNIT_FLAG_OOC_NOT_ATTACKABLE);
|
||||
me->SetStandState(UNIT_STAND_STATE_STAND);
|
||||
DoCast(me, SPELL_FREEZE);
|
||||
}
|
||||
};
|
||||
|
||||
@@ -377,12 +377,12 @@ struct mob_frenzied_worgenAI : public ScriptedAI
|
||||
uint32 uiEnrage1Timer = 15000;
|
||||
uint32 uiEnrage2Timer = 10000;
|
||||
|
||||
m_creature->GetMotionMaster()->MoveTargetedHome();
|
||||
me->GetMotionMaster()->MoveTargetedHome();
|
||||
|
||||
if (pInstance)
|
||||
if (pInstance->GetData(DATA_GORTOK_PALEHOOF_EVENT) == IN_PROGRESS)
|
||||
{
|
||||
Creature *pPalehoof = Unit::GetCreature((*m_creature), pInstance ? pInstance->GetData64(DATA_GORTOK_PALEHOOF) : 0);
|
||||
Creature *pPalehoof = Unit::GetCreature((*me), pInstance ? pInstance->GetData64(DATA_GORTOK_PALEHOOF) : 0);
|
||||
if (pPalehoof && pPalehoof->isAlive())
|
||||
CAST_AI(boss_palehoofAI, pPalehoof->AI())->Reset();
|
||||
}
|
||||
@@ -396,19 +396,19 @@ struct mob_frenzied_worgenAI : public ScriptedAI
|
||||
|
||||
if (uiMortalWoundTimer <= diff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(), SPELL_MORTAL_WOUND);
|
||||
DoCast(me->getVictim(), SPELL_MORTAL_WOUND);
|
||||
uiMortalWoundTimer = 3000 + rand()%4000;
|
||||
} else uiMortalWoundTimer -= diff;
|
||||
|
||||
if (uiEnrage1Timer <= diff)
|
||||
{
|
||||
DoCast(m_creature, SPELL_ENRAGE_1);
|
||||
DoCast(me, SPELL_ENRAGE_1);
|
||||
uiEnrage1Timer = 15000;
|
||||
} else uiEnrage1Timer -= diff;
|
||||
|
||||
if (uiEnrage2Timer <= diff)
|
||||
{
|
||||
DoCast(m_creature, SPELL_ENRAGE_2);
|
||||
DoCast(me, SPELL_ENRAGE_2);
|
||||
uiEnrage2Timer = 10000;
|
||||
} else uiEnrage2Timer -= diff;
|
||||
|
||||
@@ -420,14 +420,14 @@ struct mob_frenzied_worgenAI : public ScriptedAI
|
||||
if (!who)
|
||||
return;
|
||||
|
||||
if (m_creature->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE))
|
||||
if (me->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE))
|
||||
return;
|
||||
|
||||
if (m_creature->Attack(who, true))
|
||||
if (me->Attack(who, true))
|
||||
{
|
||||
m_creature->AddThreat(who, 0.0f);
|
||||
m_creature->SetInCombatWith(who);
|
||||
who->SetInCombatWith(m_creature);
|
||||
me->AddThreat(who, 0.0f);
|
||||
me->SetInCombatWith(who);
|
||||
who->SetInCombatWith(me);
|
||||
DoStartMovement(who);
|
||||
}
|
||||
if (pInstance)
|
||||
@@ -438,7 +438,7 @@ struct mob_frenzied_worgenAI : public ScriptedAI
|
||||
{
|
||||
if (pInstance)
|
||||
{
|
||||
Creature *pPalehoof = Unit::GetCreature((*m_creature), pInstance->GetData64(DATA_GORTOK_PALEHOOF));
|
||||
Creature *pPalehoof = Unit::GetCreature((*me), pInstance->GetData64(DATA_GORTOK_PALEHOOF));
|
||||
if (pPalehoof)
|
||||
CAST_AI(boss_palehoofAI, pPalehoof->AI())->NextPhase();
|
||||
}
|
||||
@@ -446,9 +446,9 @@ struct mob_frenzied_worgenAI : public ScriptedAI
|
||||
|
||||
void JustReachedHome()
|
||||
{
|
||||
m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE|UNIT_FLAG_NOT_SELECTABLE|UNIT_FLAG_NOT_ATTACKABLE_1|UNIT_FLAG_OOC_NOT_ATTACKABLE);
|
||||
m_creature->SetStandState(UNIT_STAND_STATE_STAND);
|
||||
DoCast(m_creature, SPELL_FREEZE);
|
||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE|UNIT_FLAG_NOT_SELECTABLE|UNIT_FLAG_NOT_ATTACKABLE_1|UNIT_FLAG_OOC_NOT_ATTACKABLE);
|
||||
me->SetStandState(UNIT_STAND_STATE_STAND);
|
||||
DoCast(me, SPELL_FREEZE);
|
||||
}
|
||||
};
|
||||
|
||||
@@ -486,12 +486,12 @@ struct mob_ferocious_rhinoAI : public ScriptedAI
|
||||
uiGoreTimer = 15000;
|
||||
uiGrievousWoundTimer = 20000;
|
||||
|
||||
m_creature->GetMotionMaster()->MoveTargetedHome();
|
||||
me->GetMotionMaster()->MoveTargetedHome();
|
||||
|
||||
if (pInstance)
|
||||
if (pInstance->GetData(DATA_GORTOK_PALEHOOF_EVENT) == IN_PROGRESS)
|
||||
{
|
||||
Creature *pPalehoof = Unit::GetCreature((*m_creature), pInstance ? pInstance->GetData64(DATA_GORTOK_PALEHOOF) : 0);
|
||||
Creature *pPalehoof = Unit::GetCreature((*me), pInstance ? pInstance->GetData64(DATA_GORTOK_PALEHOOF) : 0);
|
||||
if (pPalehoof && pPalehoof->isAlive())
|
||||
CAST_AI(boss_palehoofAI, pPalehoof->AI())->Reset();
|
||||
}
|
||||
@@ -505,13 +505,13 @@ struct mob_ferocious_rhinoAI : public ScriptedAI
|
||||
|
||||
if (uiStompTimer <= diff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(), SPELL_STOMP);
|
||||
DoCast(me->getVictim(), SPELL_STOMP);
|
||||
uiStompTimer = 8000 + rand()%4000;
|
||||
} else uiStompTimer -= diff;
|
||||
|
||||
if (uiGoreTimer <= diff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(), SPELL_GORE);
|
||||
DoCast(me->getVictim(), SPELL_GORE);
|
||||
uiGoreTimer = 13000 + rand()%4000;
|
||||
} else uiGoreTimer -= diff;
|
||||
|
||||
@@ -530,14 +530,14 @@ struct mob_ferocious_rhinoAI : public ScriptedAI
|
||||
if (!who)
|
||||
return;
|
||||
|
||||
if (m_creature->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE))
|
||||
if (me->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE))
|
||||
return;
|
||||
|
||||
if (m_creature->Attack(who, true))
|
||||
if (me->Attack(who, true))
|
||||
{
|
||||
m_creature->AddThreat(who, 0.0f);
|
||||
m_creature->SetInCombatWith(who);
|
||||
who->SetInCombatWith(m_creature);
|
||||
me->AddThreat(who, 0.0f);
|
||||
me->SetInCombatWith(who);
|
||||
who->SetInCombatWith(me);
|
||||
DoStartMovement(who);
|
||||
}
|
||||
}
|
||||
@@ -546,7 +546,7 @@ struct mob_ferocious_rhinoAI : public ScriptedAI
|
||||
{
|
||||
if (pInstance)
|
||||
{
|
||||
Creature *pPalehoof = Unit::GetCreature((*m_creature), pInstance ? pInstance->GetData64(DATA_GORTOK_PALEHOOF) : 0);
|
||||
Creature *pPalehoof = Unit::GetCreature((*me), pInstance ? pInstance->GetData64(DATA_GORTOK_PALEHOOF) : 0);
|
||||
if (pPalehoof)
|
||||
CAST_AI(boss_palehoofAI, pPalehoof->AI())->NextPhase();
|
||||
}
|
||||
@@ -554,9 +554,9 @@ struct mob_ferocious_rhinoAI : public ScriptedAI
|
||||
|
||||
void JustReachedHome()
|
||||
{
|
||||
m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE|UNIT_FLAG_NOT_SELECTABLE|UNIT_FLAG_NOT_ATTACKABLE_1|UNIT_FLAG_OOC_NOT_ATTACKABLE);
|
||||
m_creature->SetStandState(UNIT_STAND_STATE_STAND);
|
||||
DoCast(m_creature, SPELL_FREEZE);
|
||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE|UNIT_FLAG_NOT_SELECTABLE|UNIT_FLAG_NOT_ATTACKABLE_1|UNIT_FLAG_OOC_NOT_ATTACKABLE);
|
||||
me->SetStandState(UNIT_STAND_STATE_STAND);
|
||||
DoCast(me, SPELL_FREEZE);
|
||||
}
|
||||
};
|
||||
|
||||
@@ -599,12 +599,12 @@ struct mob_massive_jormungarAI : public ScriptedAI
|
||||
uiAcidSplatterTimer = 12000;
|
||||
uiPoisonBreathTimer = 10000;
|
||||
|
||||
m_creature->GetMotionMaster()->MoveTargetedHome();
|
||||
me->GetMotionMaster()->MoveTargetedHome();
|
||||
|
||||
if (pInstance)
|
||||
if (pInstance->GetData(DATA_GORTOK_PALEHOOF_EVENT) == IN_PROGRESS)
|
||||
{
|
||||
Creature *pPalehoof = Unit::GetCreature((*m_creature), pInstance ? pInstance->GetData64(DATA_GORTOK_PALEHOOF) : 0);
|
||||
Creature *pPalehoof = Unit::GetCreature((*me), pInstance ? pInstance->GetData64(DATA_GORTOK_PALEHOOF) : 0);
|
||||
if (pPalehoof && pPalehoof->isAlive())
|
||||
CAST_AI(boss_palehoofAI, pPalehoof->AI())->Reset();
|
||||
}
|
||||
@@ -625,7 +625,7 @@ struct mob_massive_jormungarAI : public ScriptedAI
|
||||
|
||||
if (uiAcidSplatterTimer <= diff)
|
||||
{
|
||||
DoCast(m_creature, SPELL_POISON_BREATH);
|
||||
DoCast(me, SPELL_POISON_BREATH);
|
||||
uiAcidSplatterTimer = 10000 + rand()%4000;
|
||||
} else uiAcidSplatterTimer -= diff;
|
||||
|
||||
@@ -644,14 +644,14 @@ struct mob_massive_jormungarAI : public ScriptedAI
|
||||
if (!who)
|
||||
return;
|
||||
|
||||
if (m_creature->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE))
|
||||
if (me->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE))
|
||||
return;
|
||||
|
||||
if (m_creature->Attack(who, true))
|
||||
if (me->Attack(who, true))
|
||||
{
|
||||
m_creature->AddThreat(who, 0.0f);
|
||||
m_creature->SetInCombatWith(who);
|
||||
who->SetInCombatWith(m_creature);
|
||||
me->AddThreat(who, 0.0f);
|
||||
me->SetInCombatWith(who);
|
||||
who->SetInCombatWith(me);
|
||||
DoStartMovement(who);
|
||||
}
|
||||
}
|
||||
@@ -660,7 +660,7 @@ struct mob_massive_jormungarAI : public ScriptedAI
|
||||
{
|
||||
if (pInstance)
|
||||
{
|
||||
Creature *pPalehoof = Unit::GetCreature((*m_creature), pInstance ? pInstance->GetData64(DATA_GORTOK_PALEHOOF) : 0);
|
||||
Creature *pPalehoof = Unit::GetCreature((*me), pInstance ? pInstance->GetData64(DATA_GORTOK_PALEHOOF) : 0);
|
||||
if (pPalehoof)
|
||||
CAST_AI(boss_palehoofAI,pPalehoof->AI())->NextPhase();
|
||||
}
|
||||
@@ -668,9 +668,9 @@ struct mob_massive_jormungarAI : public ScriptedAI
|
||||
|
||||
void JustReachedHome()
|
||||
{
|
||||
m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE|UNIT_FLAG_NOT_SELECTABLE|UNIT_FLAG_NOT_ATTACKABLE_1|UNIT_FLAG_OOC_NOT_ATTACKABLE);
|
||||
m_creature->SetStandState(UNIT_STAND_STATE_STAND);
|
||||
DoCast(m_creature, SPELL_FREEZE);
|
||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE|UNIT_FLAG_NOT_SELECTABLE|UNIT_FLAG_NOT_ATTACKABLE_1|UNIT_FLAG_OOC_NOT_ATTACKABLE);
|
||||
me->SetStandState(UNIT_STAND_STATE_STAND);
|
||||
DoCast(me, SPELL_FREEZE);
|
||||
}
|
||||
};
|
||||
|
||||
@@ -695,9 +695,9 @@ struct mob_palehoof_orbAI : public ScriptedAI
|
||||
{
|
||||
currentPhase=PHASE_NONE;
|
||||
SummonTimer=5000;
|
||||
m_creature->AddUnitMovementFlag(MOVEMENTFLAG_FLYING);
|
||||
m_creature->RemoveAurasDueToSpell(SPELL_ORB_VISUAL);
|
||||
m_creature->SetSpeed(MOVE_FLIGHT , 0.5f);
|
||||
me->AddUnitMovementFlag(MOVEMENTFLAG_FLYING);
|
||||
me->RemoveAurasDueToSpell(SPELL_ORB_VISUAL);
|
||||
me->SetSpeed(MOVE_FLIGHT , 0.5f);
|
||||
}
|
||||
|
||||
void UpdateAI(const uint32 diff)
|
||||
@@ -712,11 +712,11 @@ struct mob_palehoof_orbAI : public ScriptedAI
|
||||
Creature *pNext;
|
||||
switch(currentPhase)
|
||||
{
|
||||
case PHASE_FRENZIED_WORGEN: pNext = Unit::GetCreature((*m_creature), pInstance ? pInstance->GetData64(DATA_MOB_FRENZIED_WORGEN) : 0); break;
|
||||
case PHASE_RAVENOUS_FURLBORG: pNext = Unit::GetCreature((*m_creature), pInstance ? pInstance->GetData64(DATA_MOB_RAVENOUS_FURBOLG) : 0); break;
|
||||
case PHASE_MASSIVE_JORMUNGAR: pNext = Unit::GetCreature((*m_creature), pInstance ? pInstance->GetData64(DATA_MOB_MASSIVE_JORMUNGAR) : 0); break;
|
||||
case PHASE_FEROCIOUS_RHINO: pNext = Unit::GetCreature((*m_creature), pInstance ? pInstance->GetData64(DATA_MOB_FEROCIOUS_RHINO) : 0); break;
|
||||
case PHASE_GORTOK_PALEHOOF: pNext = Unit::GetCreature((*m_creature), pInstance ? pInstance->GetData64(DATA_GORTOK_PALEHOOF) : 0); break;
|
||||
case PHASE_FRENZIED_WORGEN: pNext = Unit::GetCreature((*me), pInstance ? pInstance->GetData64(DATA_MOB_FRENZIED_WORGEN) : 0); break;
|
||||
case PHASE_RAVENOUS_FURLBORG: pNext = Unit::GetCreature((*me), pInstance ? pInstance->GetData64(DATA_MOB_RAVENOUS_FURBOLG) : 0); break;
|
||||
case PHASE_MASSIVE_JORMUNGAR: pNext = Unit::GetCreature((*me), pInstance ? pInstance->GetData64(DATA_MOB_MASSIVE_JORMUNGAR) : 0); break;
|
||||
case PHASE_FEROCIOUS_RHINO: pNext = Unit::GetCreature((*me), pInstance ? pInstance->GetData64(DATA_MOB_FEROCIOUS_RHINO) : 0); break;
|
||||
case PHASE_GORTOK_PALEHOOF: pNext = Unit::GetCreature((*me), pInstance ? pInstance->GetData64(DATA_GORTOK_PALEHOOF) : 0); break;
|
||||
}
|
||||
|
||||
if (pNext)
|
||||
@@ -742,11 +742,11 @@ struct mob_palehoof_orbAI : public ScriptedAI
|
||||
Creature *pNext;
|
||||
switch(id)
|
||||
{
|
||||
case PHASE_FRENZIED_WORGEN: pNext = Unit::GetCreature((*m_creature), pInstance ? pInstance->GetData64(DATA_MOB_FRENZIED_WORGEN) : 0); break;
|
||||
case PHASE_RAVENOUS_FURLBORG: pNext = Unit::GetCreature((*m_creature), pInstance ? pInstance->GetData64(DATA_MOB_RAVENOUS_FURBOLG) : 0); break;
|
||||
case PHASE_MASSIVE_JORMUNGAR: pNext = Unit::GetCreature((*m_creature), pInstance ? pInstance->GetData64(DATA_MOB_MASSIVE_JORMUNGAR) : 0); break;
|
||||
case PHASE_FEROCIOUS_RHINO: pNext = Unit::GetCreature((*m_creature), pInstance ? pInstance->GetData64(DATA_MOB_FEROCIOUS_RHINO) : 0); break;
|
||||
case PHASE_GORTOK_PALEHOOF: pNext = Unit::GetCreature((*m_creature), pInstance ? pInstance->GetData64(DATA_GORTOK_PALEHOOF) : 0); break;
|
||||
case PHASE_FRENZIED_WORGEN: pNext = Unit::GetCreature((*me), pInstance ? pInstance->GetData64(DATA_MOB_FRENZIED_WORGEN) : 0); break;
|
||||
case PHASE_RAVENOUS_FURLBORG: pNext = Unit::GetCreature((*me), pInstance ? pInstance->GetData64(DATA_MOB_RAVENOUS_FURBOLG) : 0); break;
|
||||
case PHASE_MASSIVE_JORMUNGAR: pNext = Unit::GetCreature((*me), pInstance ? pInstance->GetData64(DATA_MOB_MASSIVE_JORMUNGAR) : 0); break;
|
||||
case PHASE_FEROCIOUS_RHINO: pNext = Unit::GetCreature((*me), pInstance ? pInstance->GetData64(DATA_MOB_FEROCIOUS_RHINO) : 0); break;
|
||||
case PHASE_GORTOK_PALEHOOF: pNext = Unit::GetCreature((*me), pInstance ? pInstance->GetData64(DATA_GORTOK_PALEHOOF) : 0); break;
|
||||
}
|
||||
if (pNext)
|
||||
DoCast(pNext, SPELL_ORB_CHANNEL, false);
|
||||
|
||||
@@ -96,9 +96,9 @@ struct boss_skadiAI : public ScriptedAI
|
||||
|
||||
Phase = SKADI;
|
||||
|
||||
m_creature->Unmount();
|
||||
m_creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
||||
m_creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
||||
me->Unmount();
|
||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
||||
|
||||
if (pInstance)
|
||||
pInstance->SetData(DATA_SKADI_THE_RUTHLESS_EVENT, NOT_STARTED);
|
||||
@@ -106,12 +106,12 @@ struct boss_skadiAI : public ScriptedAI
|
||||
|
||||
void EnterCombat(Unit* who)
|
||||
{
|
||||
DoScriptText(SAY_AGGRO, m_creature);
|
||||
DoScriptText(SAY_AGGRO, me);
|
||||
|
||||
m_creature->Mount(DATA_MOUNT);
|
||||
m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
||||
m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
||||
m_creature->GetMotionMaster()->MovePoint(uiWaypointId, 340.259, -510.541, 120.869);
|
||||
me->Mount(DATA_MOUNT);
|
||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
||||
me->GetMotionMaster()->MovePoint(uiWaypointId, 340.259, -510.541, 120.869);
|
||||
|
||||
Phase = FLYING;
|
||||
|
||||
@@ -128,14 +128,14 @@ struct boss_skadiAI : public ScriptedAI
|
||||
{
|
||||
switch(uiWaypointId)
|
||||
{
|
||||
case 0: m_creature->GetMotionMaster()->MovePoint(uiWaypointId, 340.259, -510.541, 120.869); break;
|
||||
case 1: m_creature->GetMotionMaster()->MovePoint(uiWaypointId, 472.977, -513.636, 120.869); break;
|
||||
case 0: me->GetMotionMaster()->MovePoint(uiWaypointId, 340.259, -510.541, 120.869); break;
|
||||
case 1: me->GetMotionMaster()->MovePoint(uiWaypointId, 472.977, -513.636, 120.869); break;
|
||||
case 200:
|
||||
m_creature->GetMotionMaster()->Clear();
|
||||
m_creature->Unmount();
|
||||
me->GetMotionMaster()->Clear();
|
||||
me->Unmount();
|
||||
Phase = SKADI;
|
||||
m_creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
||||
m_creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
||||
if (Unit* pTarget = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true))
|
||||
AttackStart(pTarget);
|
||||
break;
|
||||
@@ -149,7 +149,7 @@ struct boss_skadiAI : public ScriptedAI
|
||||
|
||||
if (uiCrushTimer <= diff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(), SPELL_CRUSH);
|
||||
DoCast(me->getVictim(), SPELL_CRUSH);
|
||||
uiCrushTimer = 8000;
|
||||
} else uiCrushTimer -= diff;
|
||||
|
||||
@@ -163,7 +163,7 @@ struct boss_skadiAI : public ScriptedAI
|
||||
if (uiWhirlwindTimer <= diff)
|
||||
{
|
||||
if (Unit* pTarget = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true))
|
||||
m_creature->CastSpell(pTarget, DUNGEON_MODE(SPELL_WHIRLWIND, H_SPELL_WHIRLWIND), false);
|
||||
me->CastSpell(pTarget, DUNGEON_MODE(SPELL_WHIRLWIND, H_SPELL_WHIRLWIND), false);
|
||||
} else uiWhirlwindTimer = 20000;
|
||||
|
||||
DoMeleeAttackIfReady();
|
||||
@@ -173,7 +173,7 @@ struct boss_skadiAI : public ScriptedAI
|
||||
|
||||
void JustDied(Unit* killer)
|
||||
{
|
||||
DoScriptText(SAY_DEATH, m_creature);
|
||||
DoScriptText(SAY_DEATH, me);
|
||||
|
||||
if (pInstance)
|
||||
pInstance->SetData(DATA_SKADI_THE_RUTHLESS_EVENT, DONE);
|
||||
@@ -181,7 +181,7 @@ struct boss_skadiAI : public ScriptedAI
|
||||
|
||||
void KilledUnit(Unit *victim)
|
||||
{
|
||||
DoScriptText(RAND(SAY_KILL_1,SAY_KILL_2,SAY_KILL_3), m_creature);
|
||||
DoScriptText(RAND(SAY_KILL_1,SAY_KILL_2,SAY_KILL_3), me);
|
||||
}
|
||||
|
||||
void MovementInform(uint32 type, uint32 id)
|
||||
@@ -222,9 +222,9 @@ struct boss_skadiAI : public ScriptedAI
|
||||
Creature* pTemp;
|
||||
switch (urand(0,2))
|
||||
{
|
||||
case 0: pTemp = m_creature->SummonCreature(CREATURE_YMIRJAR_WARRIOR, SpawnLoc[spot].x+rand()%5, SpawnLoc[spot].y+rand()%5, SpawnLoc[spot].z, 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 30000); break;
|
||||
case 1: pTemp = m_creature->SummonCreature(CREATURE_YMIRJAR_WITCH_DOCTOR, SpawnLoc[spot].x+rand()%5, SpawnLoc[spot].y+rand()%5, SpawnLoc[spot].z, 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 30000); break;
|
||||
case 2: pTemp = m_creature->SummonCreature(CREATURE_YMIRJAR_HARPOONER, SpawnLoc[spot].x+rand()%5, SpawnLoc[spot].y+rand()%5, SpawnLoc[spot].z, 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 30000); break;
|
||||
case 0: pTemp = me->SummonCreature(CREATURE_YMIRJAR_WARRIOR, SpawnLoc[spot].x+rand()%5, SpawnLoc[spot].y+rand()%5, SpawnLoc[spot].z, 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 30000); break;
|
||||
case 1: pTemp = me->SummonCreature(CREATURE_YMIRJAR_WITCH_DOCTOR, SpawnLoc[spot].x+rand()%5, SpawnLoc[spot].y+rand()%5, SpawnLoc[spot].z, 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 30000); break;
|
||||
case 2: pTemp = me->SummonCreature(CREATURE_YMIRJAR_HARPOONER, SpawnLoc[spot].x+rand()%5, SpawnLoc[spot].y+rand()%5, SpawnLoc[spot].z, 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 30000); break;
|
||||
}
|
||||
if (pTemp)
|
||||
{
|
||||
|
||||
@@ -117,12 +117,12 @@ struct boss_svalaAI : public ScriptedAI
|
||||
if (!pWho)
|
||||
return;
|
||||
|
||||
if (Phase == IDLE && pWho->isTargetableForAttack() && m_creature->IsHostileTo(pWho) && m_creature->IsWithinDistInMap(pWho, 40))
|
||||
if (Phase == IDLE && pWho->isTargetableForAttack() && me->IsHostileTo(pWho) && me->IsWithinDistInMap(pWho, 40))
|
||||
{
|
||||
Phase = INTRO;
|
||||
m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
||||
|
||||
if (Creature *pArthas = m_creature->SummonCreature(CREATURE_ARTHAS, ArthasPos, TEMPSUMMON_MANUAL_DESPAWN))
|
||||
if (Creature *pArthas = me->SummonCreature(CREATURE_ARTHAS, ArthasPos, TEMPSUMMON_MANUAL_DESPAWN))
|
||||
{
|
||||
pArthas->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE|UNIT_FLAG_NOT_SELECTABLE);
|
||||
pArthas->SetFloatValue(OBJECT_FIELD_SCALE_X, 5);
|
||||
@@ -140,14 +140,14 @@ struct boss_svalaAI : public ScriptedAI
|
||||
|
||||
if (uiIntroTimer <= diff)
|
||||
{
|
||||
Creature *pArthas = Unit::GetCreature(*m_creature, uiArthasGUID);
|
||||
Creature *pArthas = Unit::GetCreature(*me, uiArthasGUID);
|
||||
if (!pArthas)
|
||||
return;
|
||||
|
||||
switch (uiIntroPhase)
|
||||
{
|
||||
case 0:
|
||||
DoScriptText(SAY_DIALOG_WITH_ARTHAS_1, m_creature);
|
||||
DoScriptText(SAY_DIALOG_WITH_ARTHAS_1, me);
|
||||
++uiIntroPhase;
|
||||
uiIntroTimer = 3.5*IN_MILISECONDS;
|
||||
break;
|
||||
@@ -157,7 +157,7 @@ struct boss_svalaAI : public ScriptedAI
|
||||
uiIntroTimer = 3.5*IN_MILISECONDS;
|
||||
break;
|
||||
case 2:
|
||||
DoScriptText(SAY_DIALOG_WITH_ARTHAS_2, m_creature);
|
||||
DoScriptText(SAY_DIALOG_WITH_ARTHAS_2, me);
|
||||
++uiIntroPhase;
|
||||
uiIntroTimer = 3.5*IN_MILISECONDS;
|
||||
break;
|
||||
@@ -167,21 +167,21 @@ struct boss_svalaAI : public ScriptedAI
|
||||
uiIntroTimer = 3.5*IN_MILISECONDS;
|
||||
break;
|
||||
case 4:
|
||||
DoScriptText(SAY_DIALOG_WITH_ARTHAS_3, m_creature);
|
||||
DoCast(m_creature, SPELL_SVALA_TRANSFORMING1);
|
||||
DoScriptText(SAY_DIALOG_WITH_ARTHAS_3, me);
|
||||
DoCast(me, SPELL_SVALA_TRANSFORMING1);
|
||||
++uiIntroPhase;
|
||||
uiIntroTimer = 2.8*IN_MILISECONDS;
|
||||
break;
|
||||
case 5:
|
||||
DoCast(m_creature, SPELL_SVALA_TRANSFORMING2);
|
||||
DoCast(me, SPELL_SVALA_TRANSFORMING2);
|
||||
++uiIntroPhase;
|
||||
uiIntroTimer = 200;
|
||||
break;
|
||||
case 6:
|
||||
if (Creature* pSvalaSorrowgrave = m_creature->SummonCreature(CREATURE_SVALA_SORROWGRAVE, SvalaPos, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 60*IN_MILISECONDS))
|
||||
if (Creature* pSvalaSorrowgrave = me->SummonCreature(CREATURE_SVALA_SORROWGRAVE, SvalaPos, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 60*IN_MILISECONDS))
|
||||
{
|
||||
m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE|UNIT_FLAG_NOT_SELECTABLE);
|
||||
m_creature->SetDisplayId(DATA_SVALA_DISPLAY_ID);
|
||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE|UNIT_FLAG_NOT_SELECTABLE);
|
||||
me->SetDisplayId(DATA_SVALA_DISPLAY_ID);
|
||||
pArthas->ToTempSummon()->UnSummon();
|
||||
uiArthasGUID = 0;
|
||||
Phase = FINISHED;
|
||||
@@ -205,14 +205,14 @@ struct mob_ritual_channelerAI : public Scripted_NoMovementAI
|
||||
|
||||
void Reset()
|
||||
{
|
||||
DoCast(m_creature, SPELL_SHADOWS_IN_THE_DARK);
|
||||
DoCast(me, SPELL_SHADOWS_IN_THE_DARK);
|
||||
}
|
||||
|
||||
// called by svala sorrowgrave to set guid of victim
|
||||
void DoAction(uint32 action)
|
||||
{
|
||||
if (pInstance)
|
||||
if (Unit *pVictim = m_creature->GetUnit(*m_creature, pInstance->GetData64(DATA_SACRIFICED_PLAYER)))
|
||||
if (Unit *pVictim = me->GetUnit(*me, pInstance->GetData64(DATA_SACRIFICED_PLAYER)))
|
||||
DoCast(pVictim, SPELL_PARALYZE);
|
||||
}
|
||||
|
||||
@@ -253,7 +253,7 @@ struct boss_svala_sorrowgraveAI : public ScriptedAI
|
||||
Phase = NORMAL;
|
||||
|
||||
DoTeleportTo(296.632, -346.075, 90.6307);
|
||||
m_creature->SetUnitMovementFlags(MOVEMENTFLAG_WALK_MODE);
|
||||
me->SetUnitMovementFlags(MOVEMENTFLAG_WALK_MODE);
|
||||
|
||||
summons.DespawnAll();
|
||||
|
||||
@@ -266,7 +266,7 @@ struct boss_svala_sorrowgraveAI : public ScriptedAI
|
||||
|
||||
void EnterCombat(Unit* who)
|
||||
{
|
||||
DoScriptText(SAY_AGGRO, m_creature);
|
||||
DoScriptText(SAY_AGGRO, me);
|
||||
|
||||
if (pInstance)
|
||||
pInstance->SetData(DATA_SVALA_SORROWGRAVE_EVENT, IN_PROGRESS);
|
||||
@@ -292,7 +292,7 @@ struct boss_svala_sorrowgraveAI : public ScriptedAI
|
||||
|
||||
if (uiSinsterStrikeTimer <= diff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(), SPELL_SINSTER_STRIKE);
|
||||
DoCast(me->getVictim(), SPELL_SINSTER_STRIKE);
|
||||
uiSinsterStrikeTimer = urand(5*IN_MILISECONDS,9*IN_MILISECONDS);
|
||||
} else uiSinsterStrikeTimer -= diff;
|
||||
|
||||
@@ -310,11 +310,11 @@ struct boss_svala_sorrowgraveAI : public ScriptedAI
|
||||
{
|
||||
if (Unit* pSacrificeTarget = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true))
|
||||
{
|
||||
DoScriptText(RAND(SAY_SACRIFICE_PLAYER_1,SAY_SACRIFICE_PLAYER_2,SAY_SACRIFICE_PLAYER_3,SAY_SACRIFICE_PLAYER_4,SAY_SACRIFICE_PLAYER_5),m_creature);
|
||||
DoScriptText(RAND(SAY_SACRIFICE_PLAYER_1,SAY_SACRIFICE_PLAYER_2,SAY_SACRIFICE_PLAYER_3,SAY_SACRIFICE_PLAYER_4,SAY_SACRIFICE_PLAYER_5),me);
|
||||
DoCast(pSacrificeTarget, SPELL_RITUAL_OF_THE_SWORD);
|
||||
//Spell doesn't teleport
|
||||
DoTeleportPlayer(pSacrificeTarget, 296.632, -346.075, 90.63, 4.6);
|
||||
m_creature->SetUnitMovementFlags(MOVEMENTFLAG_FLY_MODE);
|
||||
me->SetUnitMovementFlags(MOVEMENTFLAG_FLY_MODE);
|
||||
DoTeleportTo(296.632, -346.075, 120.85);
|
||||
Phase = SACRIFICING;
|
||||
if (pInstance)
|
||||
@@ -322,7 +322,7 @@ struct boss_svala_sorrowgraveAI : public ScriptedAI
|
||||
pInstance->SetData64(DATA_SACRIFICED_PLAYER,pSacrificeTarget->GetGUID());
|
||||
|
||||
for (uint8 i = 0; i < 3; ++i)
|
||||
if (Creature* pSummon = m_creature->SummonCreature(CREATURE_RITUAL_CHANNELER, RitualChannelerPos[i], TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN, 360000))
|
||||
if (Creature* pSummon = me->SummonCreature(CREATURE_RITUAL_CHANNELER, RitualChannelerPos[i], TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN, 360000))
|
||||
pSummon->AI()->DoAction(0);
|
||||
}
|
||||
|
||||
@@ -336,16 +336,16 @@ struct boss_svala_sorrowgraveAI : public ScriptedAI
|
||||
{
|
||||
if (uiSacrificeTimer <= diff)
|
||||
{
|
||||
Unit* pSacrificeTarget = pInstance ? Unit::GetUnit(*m_creature, pInstance->GetData64(DATA_SACRIFICED_PLAYER)) : NULL;
|
||||
Unit* pSacrificeTarget = pInstance ? Unit::GetUnit(*me, pInstance->GetData64(DATA_SACRIFICED_PLAYER)) : NULL;
|
||||
if (pInstance && !summons.empty() && pSacrificeTarget && pSacrificeTarget->isAlive())
|
||||
m_creature->Kill(pSacrificeTarget, false); // durability damage?
|
||||
me->Kill(pSacrificeTarget, false); // durability damage?
|
||||
|
||||
//go down
|
||||
Phase = NORMAL;
|
||||
pSacrificeTarget = NULL;
|
||||
m_creature->SetUnitMovementFlags(MOVEMENTFLAG_WALK_MODE);
|
||||
me->SetUnitMovementFlags(MOVEMENTFLAG_WALK_MODE);
|
||||
if (Unit* pTarget = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true))
|
||||
m_creature->GetMotionMaster()->MoveChase(pTarget);
|
||||
me->GetMotionMaster()->MoveChase(pTarget);
|
||||
|
||||
uiSacrificeTimer = 8*IN_MILISECONDS;
|
||||
}
|
||||
@@ -355,20 +355,20 @@ struct boss_svala_sorrowgraveAI : public ScriptedAI
|
||||
|
||||
void KilledUnit(Unit* pVictim)
|
||||
{
|
||||
DoScriptText(RAND(SAY_SLAY_1,SAY_SLAY_2,SAY_SLAY_3), m_creature);
|
||||
DoScriptText(RAND(SAY_SLAY_1,SAY_SLAY_2,SAY_SLAY_3), me);
|
||||
}
|
||||
|
||||
void JustDied(Unit* pKiller)
|
||||
{
|
||||
if (pInstance)
|
||||
{
|
||||
Creature* pSvala = Unit::GetCreature((*m_creature), pInstance->GetData64(DATA_SVALA));
|
||||
Creature* pSvala = Unit::GetCreature((*me), pInstance->GetData64(DATA_SVALA));
|
||||
if (pSvala && pSvala->isAlive())
|
||||
pKiller->Kill(pSvala);
|
||||
|
||||
pInstance->SetData(DATA_SVALA_SORROWGRAVE_EVENT, DONE);
|
||||
}
|
||||
DoScriptText(SAY_DEATH, m_creature);
|
||||
DoScriptText(SAY_DEATH, me);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@@ -158,7 +158,7 @@ struct boss_ymironAI : public ScriptedAI
|
||||
|
||||
void EnterCombat(Unit* who)
|
||||
{
|
||||
DoScriptText(SAY_AGGRO, m_creature);
|
||||
DoScriptText(SAY_AGGRO, me);
|
||||
|
||||
if (pInstance)
|
||||
pInstance->SetData(DATA_KING_YMIRON_EVENT, IN_PROGRESS);
|
||||
@@ -170,12 +170,12 @@ struct boss_ymironAI : public ScriptedAI
|
||||
{
|
||||
if (m_uiPause_Timer <= diff)
|
||||
{
|
||||
DoScriptText(ActiveBot[m_uiActiveOrder[m_uiActivedNumber]].say, m_creature);
|
||||
DoCast(m_creature, SPELL_CHANNEL_YMIRON_TO_SPIRIT); // should be on spirit
|
||||
if (Creature* pTemp = m_creature->SummonCreature(ActiveBot[m_uiActiveOrder[m_uiActivedNumber]].npc, ActiveBot[m_uiActiveOrder[m_uiActivedNumber]].SpawnX, ActiveBot[m_uiActiveOrder[m_uiActivedNumber]].SpawnY, ActiveBot[m_uiActiveOrder[m_uiActivedNumber]].SpawnZ, ActiveBot[m_uiActiveOrder[m_uiActivedNumber]].SpawnO, TEMPSUMMON_CORPSE_DESPAWN, 0))
|
||||
DoScriptText(ActiveBot[m_uiActiveOrder[m_uiActivedNumber]].say, me);
|
||||
DoCast(me, SPELL_CHANNEL_YMIRON_TO_SPIRIT); // should be on spirit
|
||||
if (Creature* pTemp = me->SummonCreature(ActiveBot[m_uiActiveOrder[m_uiActivedNumber]].npc, ActiveBot[m_uiActiveOrder[m_uiActivedNumber]].SpawnX, ActiveBot[m_uiActiveOrder[m_uiActivedNumber]].SpawnY, ActiveBot[m_uiActiveOrder[m_uiActivedNumber]].SpawnZ, ActiveBot[m_uiActiveOrder[m_uiActivedNumber]].SpawnO, TEMPSUMMON_CORPSE_DESPAWN, 0))
|
||||
{
|
||||
m_uiActivedCreatureGUID = pTemp->GetGUID();
|
||||
pTemp->CastSpell(m_creature, SPELL_CHANNEL_SPIRIT_TO_YMIRON, true);
|
||||
pTemp->CastSpell(me, SPELL_CHANNEL_SPIRIT_TO_YMIRON, true);
|
||||
pTemp->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
||||
pTemp->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
||||
pTemp->AddUnitMovementFlag(MOVEMENTFLAG_LEVITATING);
|
||||
@@ -218,40 +218,40 @@ struct boss_ymironAI : public ScriptedAI
|
||||
// Normal spells ------------------------------------------------------------------------
|
||||
if (m_uiBane_Timer <= diff)
|
||||
{
|
||||
DoCast(m_creature, SPELL_BANE);
|
||||
DoCast(me, SPELL_BANE);
|
||||
m_uiBane_Timer = urand(20000,25000);
|
||||
} else m_uiBane_Timer -= diff;
|
||||
|
||||
if (m_uiFetidRot_Timer <= diff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(), SPELL_FETID_ROT);
|
||||
DoCast(me->getVictim(), SPELL_FETID_ROT);
|
||||
m_uiFetidRot_Timer = urand(10000,15000);
|
||||
} else m_uiFetidRot_Timer -= diff;
|
||||
|
||||
if (m_uiDarkSlash_Timer <= diff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(), SPELL_DARK_SLASH);
|
||||
DoCast(me->getVictim(), SPELL_DARK_SLASH);
|
||||
m_uiDarkSlash_Timer = urand(30000,35000);
|
||||
} else m_uiDarkSlash_Timer -= diff;
|
||||
|
||||
if (m_uiAncestors_Vengeance_Timer <= diff)
|
||||
{
|
||||
DoCast(m_creature, SPELL_ANCESTORS_VENGEANCE);
|
||||
DoCast(me, SPELL_ANCESTORS_VENGEANCE);
|
||||
m_uiAncestors_Vengeance_Timer = DUNGEON_MODE(urand(60000,65000),urand(45000,50000));
|
||||
} else m_uiAncestors_Vengeance_Timer -= diff;
|
||||
|
||||
// Abilities ------------------------------------------------------------------------------
|
||||
if (m_bIsActiveWithBJORN && m_uiAbility_BJORN_Timer <= diff)
|
||||
{
|
||||
//DoCast(m_creature, SPELL_SUMMON_SPIRIT_FOUNT); // works fine, but using summon has better control
|
||||
if (Creature* pTemp = m_creature->SummonCreature(CREATURE_SPIRIT_FOUNT, 385+rand()%10, -330+rand()%10, 104.756, 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 180000))
|
||||
//DoCast(me, SPELL_SUMMON_SPIRIT_FOUNT); // works fine, but using summon has better control
|
||||
if (Creature* pTemp = me->SummonCreature(CREATURE_SPIRIT_FOUNT, 385+rand()%10, -330+rand()%10, 104.756, 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 180000))
|
||||
{
|
||||
pTemp->SetSpeed(MOVE_RUN, 0.4f);
|
||||
pTemp->CastSpell(pTemp, DUNGEON_MODE(SPELL_SPIRIT_FOUNT, H_SPELL_SPIRIT_FOUNT), true);
|
||||
pTemp->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
||||
pTemp->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
||||
pTemp->SetDisplayId(11686);
|
||||
//pTemp->GetMotionMaster()->MoveChase(m_creature->getVictim());
|
||||
//pTemp->GetMotionMaster()->MoveChase(me->getVictim());
|
||||
m_uiOrbGUID = pTemp->GetGUID();
|
||||
}
|
||||
m_bIsActiveWithBJORN = false; // only one orb
|
||||
@@ -259,26 +259,26 @@ struct boss_ymironAI : public ScriptedAI
|
||||
|
||||
if (m_bIsActiveWithHALDOR && m_uiAbility_HALDOR_Timer <= diff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(), SPELL_SPIRIT_STRIKE);
|
||||
DoCast(me->getVictim(), SPELL_SPIRIT_STRIKE);
|
||||
m_uiAbility_HALDOR_Timer = 5000; // overtime
|
||||
} else m_uiAbility_HALDOR_Timer -= diff;
|
||||
|
||||
if (m_bIsActiveWithRANULF && m_uiAbility_RANULF_Timer <= diff)
|
||||
{
|
||||
DoCast(m_creature, SPELL_SPIRIT_BURST);
|
||||
DoCast(me, SPELL_SPIRIT_BURST);
|
||||
m_uiAbility_RANULF_Timer = 10000; // overtime
|
||||
} else m_uiAbility_RANULF_Timer -= diff;
|
||||
|
||||
if (m_bIsActiveWithTORGYN && m_uiAbility_TORGYN_Timer <= diff)
|
||||
{
|
||||
float x,y,z;
|
||||
x = m_creature->GetPositionX()-5;
|
||||
y = m_creature->GetPositionY()-5;
|
||||
z = m_creature->GetPositionZ();
|
||||
x = me->GetPositionX()-5;
|
||||
y = me->GetPositionY()-5;
|
||||
z = me->GetPositionZ();
|
||||
for (uint8 i = 0; i < 4; ++i)
|
||||
{
|
||||
//DoCast(m_creature, SPELL_SUMMON_AVENGING_SPIRIT); // works fine, but using summon has better control
|
||||
if (Creature* pTemp = m_creature->SummonCreature(CREATURE_AVENGING_SPIRIT, x+rand()%10, y+rand()%10, z, 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 30000))
|
||||
//DoCast(me, SPELL_SUMMON_AVENGING_SPIRIT); // works fine, but using summon has better control
|
||||
if (Creature* pTemp = me->SummonCreature(CREATURE_AVENGING_SPIRIT, x+rand()%10, y+rand()%10, z, 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 30000))
|
||||
{
|
||||
if (Unit* pTarget = SelectUnit(SELECT_TARGET_RANDOM, 0))
|
||||
{
|
||||
@@ -291,17 +291,17 @@ struct boss_ymironAI : public ScriptedAI
|
||||
} else m_uiAbility_TORGYN_Timer -= diff;
|
||||
|
||||
// Health check -----------------------------------------------------------------------------
|
||||
if ((m_creature->GetHealth()*100 / m_creature->GetMaxHealth()) < (100-(m_uiHealthAmountMultipler * m_uiHealthAmountModifier)))
|
||||
if ((me->GetHealth()*100 / me->GetMaxHealth()) < (100-(m_uiHealthAmountMultipler * m_uiHealthAmountModifier)))
|
||||
{
|
||||
uint8 m_uiOrder = m_uiHealthAmountModifier - 1;
|
||||
++m_uiHealthAmountModifier;
|
||||
|
||||
m_creature->InterruptNonMeleeSpells(true);
|
||||
DoCast(m_creature, SPELL_SCREAMS_OF_THE_DEAD);
|
||||
m_creature->GetMotionMaster()->Clear();
|
||||
m_creature->StopMoving();
|
||||
m_creature->AttackStop();
|
||||
m_creature->GetMotionMaster()->MovePoint(0, ActiveBot[m_uiActiveOrder[m_uiOrder]].MoveX, ActiveBot[m_uiActiveOrder[m_uiOrder]].MoveY, ActiveBot[m_uiActiveOrder[m_uiOrder]].MoveZ);
|
||||
me->InterruptNonMeleeSpells(true);
|
||||
DoCast(me, SPELL_SCREAMS_OF_THE_DEAD);
|
||||
me->GetMotionMaster()->Clear();
|
||||
me->StopMoving();
|
||||
me->AttackStop();
|
||||
me->GetMotionMaster()->MovePoint(0, ActiveBot[m_uiActiveOrder[m_uiOrder]].MoveX, ActiveBot[m_uiActiveOrder[m_uiOrder]].MoveY, ActiveBot[m_uiActiveOrder[m_uiOrder]].MoveZ);
|
||||
|
||||
DespawnBoatGhosts(m_uiActivedCreatureGUID);
|
||||
DespawnBoatGhosts(m_uiOrbGUID);
|
||||
@@ -327,7 +327,7 @@ struct boss_ymironAI : public ScriptedAI
|
||||
|
||||
void JustDied(Unit* killer)
|
||||
{
|
||||
DoScriptText(SAY_DEATH, m_creature);
|
||||
DoScriptText(SAY_DEATH, me);
|
||||
|
||||
DespawnBoatGhosts(m_uiActivedCreatureGUID);
|
||||
DespawnBoatGhosts(m_uiOrbGUID);
|
||||
@@ -338,13 +338,13 @@ struct boss_ymironAI : public ScriptedAI
|
||||
|
||||
void KilledUnit(Unit *victim)
|
||||
{
|
||||
DoScriptText(RAND(SAY_SLAY_1,SAY_SLAY_2,SAY_SLAY_3,SAY_SLAY_4), m_creature);
|
||||
DoScriptText(RAND(SAY_SLAY_1,SAY_SLAY_2,SAY_SLAY_3,SAY_SLAY_4), me);
|
||||
}
|
||||
|
||||
void DespawnBoatGhosts(uint64& m_uiCreatureGUID)
|
||||
{
|
||||
if (m_uiCreatureGUID)
|
||||
if (Creature* pTemp = Unit::GetCreature(*m_creature, m_uiCreatureGUID))
|
||||
if (Creature* pTemp = Unit::GetCreature(*me, m_uiCreatureGUID))
|
||||
pTemp->DisappearAndDie();
|
||||
|
||||
m_uiCreatureGUID = 0;
|
||||
|
||||
@@ -127,8 +127,8 @@ struct boss_archavonAI : public ScriptedAI
|
||||
DoCast(me->getVictim(), SPELL_IMPALE);
|
||||
return;
|
||||
case EVENT_BERSERK:
|
||||
DoCast(m_creature, SPELL_BERSERK);
|
||||
DoScriptText(EMOTE_BERSERK, m_creature);
|
||||
DoCast(me, SPELL_BERSERK);
|
||||
DoScriptText(EMOTE_BERSERK, me);
|
||||
return;
|
||||
}
|
||||
}
|
||||
@@ -179,11 +179,11 @@ struct mob_archavon_warderAI : public ScriptedAI //npc 32353
|
||||
return;
|
||||
}
|
||||
case EVENT_SHIELD_CRUSH:
|
||||
DoCast(m_creature->getVictim(), SPELL_SHIELD_CRUSH);
|
||||
DoCast(me->getVictim(), SPELL_SHIELD_CRUSH);
|
||||
events.ScheduleEvent(EVENT_SHIELD_CRUSH, 20000);
|
||||
return;
|
||||
case EVENT_WHIRL:
|
||||
DoCast(m_creature->getVictim(), SPELL_WHIRL);
|
||||
DoCast(me->getVictim(), SPELL_WHIRL);
|
||||
events.ScheduleEvent(EVENT_WHIRL, 8000);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -69,15 +69,15 @@ struct boss_emalonAI : public BossAI
|
||||
_Reset();
|
||||
|
||||
for (uint8 i = 0; i < MAX_TEMPEST_MINIONS; ++i)
|
||||
m_creature->SummonCreature(MOB_TEMPEST_MINION, TempestMinions[i], TEMPSUMMON_CORPSE_DESPAWN, 0);
|
||||
me->SummonCreature(MOB_TEMPEST_MINION, TempestMinions[i], TEMPSUMMON_CORPSE_DESPAWN, 0);
|
||||
}
|
||||
|
||||
void JustSummoned(Creature *summoned)
|
||||
{
|
||||
BossAI::JustSummoned(summoned);
|
||||
|
||||
if (m_creature->getVictim() && summoned->AI())
|
||||
summoned->AI()->AttackStart(m_creature->getVictim());
|
||||
if (me->getVictim() && summoned->AI())
|
||||
summoned->AI()->AttackStart(me->getVictim());
|
||||
}
|
||||
|
||||
void EnterCombat(Unit *who)
|
||||
@@ -86,7 +86,7 @@ struct boss_emalonAI : public BossAI
|
||||
{
|
||||
for (std::list<uint64>::const_iterator itr = summons.begin(); itr != summons.end(); ++itr)
|
||||
{
|
||||
Creature *minion = Unit::GetCreature(*m_creature, *itr);
|
||||
Creature *minion = Unit::GetCreature(*me, *itr);
|
||||
if (minion && minion->isAlive() && !minion->getVictim() && minion->AI())
|
||||
minion->AI()->AttackStart(who);
|
||||
}
|
||||
@@ -129,19 +129,19 @@ struct boss_emalonAI : public BossAI
|
||||
{
|
||||
std::list<uint64>::const_iterator itr = summons.begin();
|
||||
std::advance(itr, urand(0, summons.size()-1));
|
||||
Creature *minion = Unit::GetCreature(*m_creature, *itr);
|
||||
Creature *minion = Unit::GetCreature(*me, *itr);
|
||||
if (minion && minion->isAlive())
|
||||
{
|
||||
minion->CastSpell(me, SPELL_OVERCHARGED, true);
|
||||
minion->SetHealth(minion->GetMaxHealth());
|
||||
DoScriptText(EMOTE_OVERCHARGE, m_creature);
|
||||
DoScriptText(EMOTE_OVERCHARGE, me);
|
||||
events.ScheduleEvent(EVENT_OVERCHARGE, 45000);
|
||||
}
|
||||
}
|
||||
break;
|
||||
case EVENT_BERSERK:
|
||||
DoCast(m_creature, SPELL_BERSERK);
|
||||
DoScriptText(EMOTE_BERSERK, m_creature);
|
||||
DoCast(me, SPELL_BERSERK);
|
||||
DoScriptText(EMOTE_BERSERK, me);
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -175,12 +175,12 @@ struct mob_tempest_minionAI : public ScriptedAI
|
||||
|
||||
void JustDied(Unit* Killer)
|
||||
{
|
||||
if (Creature *pEmalon = Unit::GetCreature(*m_creature, pInstance ? pInstance->GetData64(DATA_EMALON) : 0))
|
||||
if (Creature *pEmalon = Unit::GetCreature(*me, pInstance ? pInstance->GetData64(DATA_EMALON) : 0))
|
||||
{
|
||||
if (pEmalon->isAlive())
|
||||
{
|
||||
pEmalon->SummonCreature(MOB_TEMPEST_MINION, 0, 0, 0, 0, TEMPSUMMON_CORPSE_DESPAWN, 0);
|
||||
DoScriptText(EMOTE_MINION_RESPAWN, m_creature);
|
||||
DoScriptText(EMOTE_MINION_RESPAWN, me);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -190,7 +190,7 @@ struct mob_tempest_minionAI : public ScriptedAI
|
||||
DoZoneInCombat();
|
||||
events.ScheduleEvent(EVENT_SHOCK, 20000);
|
||||
|
||||
if (Creature *pEmalon = Unit::GetCreature(*m_creature, pInstance ? pInstance->GetData64(DATA_EMALON) : 0))
|
||||
if (Creature *pEmalon = Unit::GetCreature(*me, pInstance ? pInstance->GetData64(DATA_EMALON) : 0))
|
||||
{
|
||||
if (!pEmalon->getVictim() && pEmalon->AI())
|
||||
pEmalon->AI()->AttackStart(who);
|
||||
@@ -208,7 +208,7 @@ struct mob_tempest_minionAI : public ScriptedAI
|
||||
if (me->hasUnitState(UNIT_STAT_CASTING))
|
||||
return;
|
||||
|
||||
if (Aura *overchargedAura = m_creature->GetAura(SPELL_OVERCHARGED))
|
||||
if (Aura *overchargedAura = me->GetAura(SPELL_OVERCHARGED))
|
||||
{
|
||||
if (overchargedAura->GetStackAmount() < 10)
|
||||
{
|
||||
@@ -223,8 +223,8 @@ struct mob_tempest_minionAI : public ScriptedAI
|
||||
if (overchargedAura->GetStackAmount() == 10)
|
||||
{
|
||||
DoCast(me, SPELL_OVERCHARGED_BLAST);
|
||||
m_creature->ForcedDespawn();
|
||||
DoScriptText(EMOTE_MINION_RESPAWN, m_creature);
|
||||
me->ForcedDespawn();
|
||||
DoScriptText(EMOTE_MINION_RESPAWN, me);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -112,7 +112,7 @@ struct boss_koralonAI : public ScriptedAI
|
||||
|
||||
events.Update(diff);
|
||||
|
||||
if (m_creature->hasUnitState(UNIT_STAT_CASTING))
|
||||
if (me->hasUnitState(UNIT_STAT_CASTING))
|
||||
return;
|
||||
|
||||
while (uint32 eventId = events.ExecuteEvent())
|
||||
@@ -179,7 +179,7 @@ struct mob_flame_warderAI : public ScriptedAI
|
||||
switch(eventId)
|
||||
{
|
||||
case EVENT_FW_LAVA_BIRST:
|
||||
DoCast(m_creature->getVictim(), RAID_MODE(SPELL_FW_LAVA_BIRST,SPELL_FW_LAVA_BIRST_H));
|
||||
DoCast(me->getVictim(), RAID_MODE(SPELL_FW_LAVA_BIRST,SPELL_FW_LAVA_BIRST_H));
|
||||
events.ScheduleEvent(EVENT_FW_LAVA_BIRST, 15000);
|
||||
return;
|
||||
case EVENT_FW_METEOR_FISTS_A:
|
||||
|
||||
@@ -101,7 +101,7 @@ struct boss_toravonAI : public ScriptedAI
|
||||
|
||||
events.Update(diff);
|
||||
|
||||
if (m_creature->hasUnitState(UNIT_STAT_CASTING))
|
||||
if (me->hasUnitState(UNIT_STAT_CASTING))
|
||||
return;
|
||||
|
||||
while (uint32 eventId = events.ExecuteEvent())
|
||||
@@ -162,7 +162,7 @@ struct mob_frost_warderAI : public ScriptedAI
|
||||
switch(eventId)
|
||||
{
|
||||
case EVENT_FROST_BLAST:
|
||||
DoCast(m_creature->getVictim(), SPELL_FROST_BLAST);
|
||||
DoCast(me->getVictim(), SPELL_FROST_BLAST);
|
||||
events.ScheduleEvent(EVENT_FROST_BLAST, 20000);
|
||||
return;
|
||||
}
|
||||
@@ -205,7 +205,7 @@ struct mob_frozen_orbAI : public ScriptedAI
|
||||
if (killtimer <= diff)
|
||||
{
|
||||
if (!UpdateVictim())
|
||||
m_creature->ForcedDespawn();
|
||||
me->ForcedDespawn();
|
||||
killtimer = 10000;
|
||||
}
|
||||
else
|
||||
@@ -236,14 +236,14 @@ struct mob_frozen_orb_stalkerAI : public Scripted_NoMovementAI
|
||||
if (!spawned)
|
||||
{
|
||||
Unit* pToravon;
|
||||
if (pInstance && (pToravon = m_creature->GetCreature(*m_creature, pInstance->GetData64(DATA_TORAVON))))
|
||||
if (pInstance && (pToravon = me->GetCreature(*me, pInstance->GetData64(DATA_TORAVON))))
|
||||
{
|
||||
uint8 num_orbs = RAID_MODE(1, 3);
|
||||
for (uint8 i=0; i<num_orbs; ++i)
|
||||
{
|
||||
Position pos;
|
||||
m_creature->GetNearPoint(pToravon, pos.m_positionX, pos.m_positionY, pos.m_positionZ, 0.0f, 10.0f, 0.0f);
|
||||
m_creature->SetPosition(pos, true);
|
||||
me->GetNearPoint(pToravon, pos.m_positionX, pos.m_positionY, pos.m_positionZ, 0.0f, 10.0f, 0.0f);
|
||||
me->SetPosition(pos, true);
|
||||
DoCast(me, SPELL_FROZEN_ORB_SUMMON);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -67,8 +67,8 @@ struct boss_cyanigosaAI : public ScriptedAI
|
||||
|
||||
void EnterCombat(Unit* who)
|
||||
{
|
||||
DoScriptText(SAY_AGGRO, m_creature);
|
||||
DoCast(m_creature, SPELL_TRANSFORM);
|
||||
DoScriptText(SAY_AGGRO, me);
|
||||
DoCast(me, SPELL_TRANSFORM);
|
||||
|
||||
if (pInstance)
|
||||
pInstance->SetData(DATA_CYANIGOSA_EVENT, IN_PROGRESS);
|
||||
@@ -80,7 +80,7 @@ struct boss_cyanigosaAI : public ScriptedAI
|
||||
{
|
||||
if (pInstance && pInstance->GetData(DATA_REMOVE_NPC) == 1)
|
||||
{
|
||||
m_creature->ForcedDespawn();
|
||||
me->ForcedDespawn();
|
||||
pInstance->SetData(DATA_REMOVE_NPC, 0);
|
||||
}
|
||||
|
||||
@@ -126,7 +126,7 @@ struct boss_cyanigosaAI : public ScriptedAI
|
||||
|
||||
void JustDied(Unit* killer)
|
||||
{
|
||||
DoScriptText(SAY_DEATH, m_creature);
|
||||
DoScriptText(SAY_DEATH, me);
|
||||
|
||||
if (pInstance)
|
||||
pInstance->SetData(DATA_CYANIGOSA_EVENT, DONE);
|
||||
@@ -134,9 +134,9 @@ struct boss_cyanigosaAI : public ScriptedAI
|
||||
|
||||
void KilledUnit(Unit *victim)
|
||||
{
|
||||
if (victim == m_creature)
|
||||
if (victim == me)
|
||||
return;
|
||||
DoScriptText(RAND(SAY_SLAY_1,SAY_SLAY_2,SAY_SLAY_3), m_creature);
|
||||
DoScriptText(RAND(SAY_SLAY_1,SAY_SLAY_2,SAY_SLAY_3), me);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@@ -67,12 +67,12 @@ struct boss_erekemAI : public ScriptedAI
|
||||
pInstance->SetData(DATA_2ND_BOSS_EVENT, NOT_STARTED);
|
||||
}
|
||||
|
||||
if (Creature *pGuard1 = Unit::GetCreature(*m_creature, pInstance ? pInstance->GetData64(DATA_EREKEM_GUARD_1) : 0))
|
||||
if (Creature *pGuard1 = Unit::GetCreature(*me, pInstance ? pInstance->GetData64(DATA_EREKEM_GUARD_1) : 0))
|
||||
{
|
||||
if (!pGuard1->isAlive())
|
||||
pGuard1->Respawn();
|
||||
}
|
||||
if (Creature *pGuard2 = Unit::GetCreature(*m_creature, pInstance ? pInstance->GetData64(DATA_EREKEM_GUARD_2) : 0))
|
||||
if (Creature *pGuard2 = Unit::GetCreature(*me, pInstance ? pInstance->GetData64(DATA_EREKEM_GUARD_2) : 0))
|
||||
{
|
||||
if (!pGuard2->isAlive())
|
||||
pGuard2->Respawn();
|
||||
@@ -81,23 +81,23 @@ struct boss_erekemAI : public ScriptedAI
|
||||
|
||||
void AttackStart(Unit* pWho)
|
||||
{
|
||||
if (m_creature->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_OOC_NOT_ATTACKABLE) || m_creature->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE))
|
||||
if (me->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_OOC_NOT_ATTACKABLE) || me->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE))
|
||||
return;
|
||||
|
||||
if (m_creature->Attack(pWho, true))
|
||||
if (me->Attack(pWho, true))
|
||||
{
|
||||
m_creature->AddThreat(pWho, 0.0f);
|
||||
m_creature->SetInCombatWith(pWho);
|
||||
pWho->SetInCombatWith(m_creature);
|
||||
me->AddThreat(pWho, 0.0f);
|
||||
me->SetInCombatWith(pWho);
|
||||
pWho->SetInCombatWith(me);
|
||||
DoStartMovement(pWho);
|
||||
|
||||
if (Creature *pGuard1 = Unit::GetCreature(*m_creature, pInstance ? pInstance->GetData64(DATA_EREKEM_GUARD_1) : 0))
|
||||
if (Creature *pGuard1 = Unit::GetCreature(*me, pInstance ? pInstance->GetData64(DATA_EREKEM_GUARD_1) : 0))
|
||||
{
|
||||
pGuard1->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_OOC_NOT_ATTACKABLE|UNIT_FLAG_NON_ATTACKABLE);
|
||||
if (!pGuard1->getVictim() && pGuard1->AI())
|
||||
pGuard1->AI()->AttackStart(pWho);
|
||||
}
|
||||
if (Creature *pGuard2 = Unit::GetCreature(*m_creature, pInstance ? pInstance->GetData64(DATA_EREKEM_GUARD_2) : 0))
|
||||
if (Creature *pGuard2 = Unit::GetCreature(*me, pInstance ? pInstance->GetData64(DATA_EREKEM_GUARD_2) : 0))
|
||||
{
|
||||
pGuard2->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_OOC_NOT_ATTACKABLE|UNIT_FLAG_NON_ATTACKABLE);
|
||||
if (!pGuard2->getVictim() && pGuard2->AI())
|
||||
@@ -108,8 +108,8 @@ struct boss_erekemAI : public ScriptedAI
|
||||
|
||||
void EnterCombat(Unit* pWho)
|
||||
{
|
||||
DoScriptText(SAY_AGGRO, m_creature);
|
||||
DoCast(m_creature, SPELL_EARTH_SHIELD);
|
||||
DoScriptText(SAY_AGGRO, me);
|
||||
DoCast(me, SPELL_EARTH_SHIELD);
|
||||
|
||||
if (pInstance)
|
||||
{
|
||||
@@ -138,19 +138,19 @@ struct boss_erekemAI : public ScriptedAI
|
||||
//spam stormstrike in hc mode if spawns are dead
|
||||
if (IsHeroic())
|
||||
{
|
||||
if (Creature *pGuard1 = Unit::GetCreature(*m_creature, pInstance ? pInstance->GetData64(DATA_EREKEM_GUARD_1) : 0))
|
||||
if (Creature *pGuard1 = Unit::GetCreature(*me, pInstance ? pInstance->GetData64(DATA_EREKEM_GUARD_1) : 0))
|
||||
{
|
||||
if (Creature *pGuard2 = Unit::GetCreature(*m_creature, pInstance ? pInstance->GetData64(DATA_EREKEM_GUARD_2) : 0))
|
||||
if (Creature *pGuard2 = Unit::GetCreature(*me, pInstance ? pInstance->GetData64(DATA_EREKEM_GUARD_2) : 0))
|
||||
{
|
||||
if (!pGuard1->isAlive() && !pGuard2->isAlive())
|
||||
DoCast(m_creature->getVictim(), SPELL_STORMSTRIKE);
|
||||
DoCast(me->getVictim(), SPELL_STORMSTRIKE);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (uiEarthShieldTimer <= diff)
|
||||
{
|
||||
DoCast(m_creature, SPELL_EARTH_SHIELD);
|
||||
DoCast(me, SPELL_EARTH_SHIELD);
|
||||
uiEarthShieldTimer = 20000;
|
||||
} else uiEarthShieldTimer -= diff;
|
||||
|
||||
@@ -158,25 +158,25 @@ struct boss_erekemAI : public ScriptedAI
|
||||
{
|
||||
if (uint64 TargetGUID = GetChainHealTargetGUID())
|
||||
{
|
||||
if (Creature *pTarget = Unit::GetCreature(*m_creature, TargetGUID))
|
||||
if (Creature *pTarget = Unit::GetCreature(*me, TargetGUID))
|
||||
DoCast(pTarget, SPELL_CHAIN_HEAL);
|
||||
|
||||
//If one of the adds is dead spawn heals faster
|
||||
Creature *pGuard1 = Unit::GetCreature(*m_creature, pInstance ? pInstance->GetData64(DATA_EREKEM_GUARD_1) : 0);
|
||||
Creature *pGuard2 = Unit::GetCreature(*m_creature, pInstance ? pInstance->GetData64(DATA_EREKEM_GUARD_2) : 0);
|
||||
Creature *pGuard1 = Unit::GetCreature(*me, pInstance ? pInstance->GetData64(DATA_EREKEM_GUARD_1) : 0);
|
||||
Creature *pGuard2 = Unit::GetCreature(*me, pInstance ? pInstance->GetData64(DATA_EREKEM_GUARD_2) : 0);
|
||||
uiChainHealTimer = ((pGuard1 && !pGuard1->isAlive()) || (pGuard2 && !pGuard2->isAlive()) ? 3000 : 8000) + rand()%3000;
|
||||
}
|
||||
} else uiChainHealTimer -= diff;
|
||||
|
||||
if (uiBloodlustTimer <= diff)
|
||||
{
|
||||
DoCast(m_creature, SPELL_BLOODLUST);
|
||||
DoCast(me, SPELL_BLOODLUST);
|
||||
uiBloodlustTimer = urand(35000,45000);
|
||||
} else uiBloodlustTimer -= diff;
|
||||
|
||||
if (uiEarthShockTimer <= diff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(), SPELL_EARTH_SHOCK);
|
||||
DoCast(me->getVictim(), SPELL_EARTH_SHOCK);
|
||||
uiEarthShockTimer = urand(8000,13000);
|
||||
} else uiEarthShockTimer -= diff;
|
||||
|
||||
@@ -192,7 +192,7 @@ struct boss_erekemAI : public ScriptedAI
|
||||
|
||||
void JustDied(Unit* killer)
|
||||
{
|
||||
DoScriptText(SAY_DEATH, m_creature);
|
||||
DoScriptText(SAY_DEATH, me);
|
||||
|
||||
if (pInstance)
|
||||
{
|
||||
@@ -211,21 +211,21 @@ struct boss_erekemAI : public ScriptedAI
|
||||
|
||||
void KilledUnit(Unit *victim)
|
||||
{
|
||||
if (victim == m_creature)
|
||||
if (victim == me)
|
||||
return;
|
||||
DoScriptText(RAND(SAY_SLAY_1,SAY_SLAY_2,SAY_SLAY_3), m_creature);
|
||||
DoScriptText(RAND(SAY_SLAY_1,SAY_SLAY_2,SAY_SLAY_3), me);
|
||||
}
|
||||
|
||||
uint64 GetChainHealTargetGUID()
|
||||
{
|
||||
if (HealthBelowPct(85))
|
||||
return m_creature->GetGUID();
|
||||
return me->GetGUID();
|
||||
|
||||
Creature *pGuard1 = Unit::GetCreature(*m_creature, pInstance ? pInstance->GetData64(DATA_EREKEM_GUARD_1) : 0);
|
||||
Creature *pGuard1 = Unit::GetCreature(*me, pInstance ? pInstance->GetData64(DATA_EREKEM_GUARD_1) : 0);
|
||||
if (pGuard1 && pGuard1->isAlive() && (pGuard1->GetHealth()*100 <= pGuard1->GetMaxHealth() * 75))
|
||||
return pGuard1->GetGUID();
|
||||
|
||||
Creature *pGuard2 = Unit::GetCreature(*m_creature, pInstance ? pInstance->GetData64(DATA_EREKEM_GUARD_2) : 0);
|
||||
Creature *pGuard2 = Unit::GetCreature(*me, pInstance ? pInstance->GetData64(DATA_EREKEM_GUARD_2) : 0);
|
||||
if (pGuard2 && pGuard2->isAlive() && (pGuard2->GetHealth()*100 <= pGuard2->GetMaxHealth() * 75))
|
||||
return pGuard2->GetGUID();
|
||||
|
||||
@@ -267,14 +267,14 @@ struct mob_erekem_guardAI : public ScriptedAI
|
||||
|
||||
void AttackStart(Unit* pWho)
|
||||
{
|
||||
if (m_creature->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_OOC_NOT_ATTACKABLE) || m_creature->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE))
|
||||
if (me->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_OOC_NOT_ATTACKABLE) || me->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE))
|
||||
return;
|
||||
|
||||
if (m_creature->Attack(pWho, true))
|
||||
if (me->Attack(pWho, true))
|
||||
{
|
||||
m_creature->AddThreat(pWho, 0.0f);
|
||||
m_creature->SetInCombatWith(pWho);
|
||||
pWho->SetInCombatWith(m_creature);
|
||||
me->AddThreat(pWho, 0.0f);
|
||||
me->SetInCombatWith(pWho);
|
||||
pWho->SetInCombatWith(me);
|
||||
DoStartMovement(pWho);
|
||||
}
|
||||
}
|
||||
@@ -290,19 +290,19 @@ struct mob_erekem_guardAI : public ScriptedAI
|
||||
|
||||
if (uiStrikeTimer <= diff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(), SPELL_STRIKE);
|
||||
DoCast(me->getVictim(), SPELL_STRIKE);
|
||||
uiStrikeTimer = urand(4000,8000);
|
||||
} else uiStrikeTimer -= diff;
|
||||
|
||||
if (uiHowlingScreechTimer <= diff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(), SPELL_HOWLING_SCREECH);
|
||||
DoCast(me->getVictim(), SPELL_HOWLING_SCREECH);
|
||||
uiHowlingScreechTimer = urand(8000,13000);
|
||||
} else uiHowlingScreechTimer -= diff;
|
||||
|
||||
if (uiGushingWoundTimer <= diff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(), SPELL_GUSHING_WOUND);
|
||||
DoCast(me->getVictim(), SPELL_GUSHING_WOUND);
|
||||
uiGushingWoundTimer = urand(7000,12000);
|
||||
} else uiGushingWoundTimer -= diff;
|
||||
}
|
||||
|
||||
@@ -104,7 +104,7 @@ struct boss_ichoronAI : public ScriptedAI
|
||||
uiBubbleCheckerTimer = 1000;
|
||||
uiWaterBoltVolleyTimer = urand(10000, 15000);
|
||||
|
||||
m_creature->SetVisibility(VISIBILITY_ON);
|
||||
me->SetVisibility(VISIBILITY_ON);
|
||||
DespawnWaterElements();
|
||||
|
||||
if (pInstance)
|
||||
@@ -118,9 +118,9 @@ struct boss_ichoronAI : public ScriptedAI
|
||||
|
||||
void EnterCombat(Unit* pWho)
|
||||
{
|
||||
DoScriptText(SAY_AGGRO, m_creature);
|
||||
DoScriptText(SAY_AGGRO, me);
|
||||
|
||||
DoCast(m_creature, SPELL_PROTECTIVE_BUBBLE);
|
||||
DoCast(me, SPELL_PROTECTIVE_BUBBLE);
|
||||
|
||||
if (pInstance)
|
||||
{
|
||||
@@ -139,27 +139,27 @@ struct boss_ichoronAI : public ScriptedAI
|
||||
|
||||
void AttackStart(Unit* pWho)
|
||||
{
|
||||
if (m_creature->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_OOC_NOT_ATTACKABLE) || m_creature->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE))
|
||||
if (me->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_OOC_NOT_ATTACKABLE) || me->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE))
|
||||
return;
|
||||
|
||||
if (m_creature->Attack(pWho, true))
|
||||
if (me->Attack(pWho, true))
|
||||
{
|
||||
m_creature->AddThreat(pWho, 0.0f);
|
||||
m_creature->SetInCombatWith(pWho);
|
||||
pWho->SetInCombatWith(m_creature);
|
||||
me->AddThreat(pWho, 0.0f);
|
||||
me->SetInCombatWith(pWho);
|
||||
pWho->SetInCombatWith(me);
|
||||
DoStartMovement(pWho);
|
||||
}
|
||||
}
|
||||
|
||||
void DoAction(const int32 param)
|
||||
{
|
||||
if (!m_creature->isAlive())
|
||||
if (!me->isAlive())
|
||||
return;
|
||||
|
||||
switch(param)
|
||||
{
|
||||
case ACTION_WATER_ELEMENT_HIT:
|
||||
m_creature->SetHealth(m_creature->GetHealth() + m_creature->GetMaxHealth() * 0.01);
|
||||
me->SetHealth(me->GetHealth() + me->GetMaxHealth() * 0.01);
|
||||
|
||||
if (bIsExploded)
|
||||
DoExplodeCompleted();
|
||||
@@ -167,9 +167,9 @@ struct boss_ichoronAI : public ScriptedAI
|
||||
bAchievement = false;
|
||||
break;
|
||||
case ACTION_WATER_ELEMENT_KILLED:
|
||||
uint32 damage = (m_creature->GetMaxHealth()*3)/100;
|
||||
m_creature->SetHealth(m_creature->GetHealth() - damage);
|
||||
m_creature->LowerPlayerDamageReq(damage);
|
||||
uint32 damage = (me->GetMaxHealth()*3)/100;
|
||||
me->SetHealth(me->GetHealth() - damage);
|
||||
me->LowerPlayerDamageReq(damage);
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -187,12 +187,12 @@ struct boss_ichoronAI : public ScriptedAI
|
||||
|
||||
if (!HealthBelowPct(25))
|
||||
{
|
||||
DoScriptText(SAY_BUBBLE, m_creature);
|
||||
DoCast(m_creature, SPELL_PROTECTIVE_BUBBLE, true);
|
||||
DoScriptText(SAY_BUBBLE, me);
|
||||
DoCast(me, SPELL_PROTECTIVE_BUBBLE, true);
|
||||
}
|
||||
|
||||
m_creature->SetVisibility(VISIBILITY_ON);
|
||||
m_creature->GetMotionMaster()->MoveChase(m_creature->getVictim());
|
||||
me->SetVisibility(VISIBILITY_ON);
|
||||
me->GetMotionMaster()->MoveChase(me->getVictim());
|
||||
}
|
||||
|
||||
void MoveInLineOfSight(Unit* pWho) {}
|
||||
@@ -205,8 +205,8 @@ struct boss_ichoronAI : public ScriptedAI
|
||||
|
||||
if (!bIsFrenzy && HealthBelowPct(25) && !bIsExploded)
|
||||
{
|
||||
DoScriptText(SAY_ENRAGE, m_creature);
|
||||
DoCast(m_creature, SPELL_FRENZY, true);
|
||||
DoScriptText(SAY_ENRAGE, me);
|
||||
DoCast(me, SPELL_FRENZY, true);
|
||||
bIsFrenzy = true;
|
||||
}
|
||||
|
||||
@@ -216,18 +216,18 @@ struct boss_ichoronAI : public ScriptedAI
|
||||
{
|
||||
if (!bIsExploded)
|
||||
{
|
||||
if (!m_creature->HasAura(SPELL_PROTECTIVE_BUBBLE, 0))
|
||||
if (!me->HasAura(SPELL_PROTECTIVE_BUBBLE, 0))
|
||||
{
|
||||
DoScriptText(SAY_SHATTER, m_creature);
|
||||
DoCast(m_creature, SPELL_WATER_BLAST);
|
||||
DoCast(m_creature, SPELL_DRAINED);
|
||||
DoScriptText(SAY_SHATTER, me);
|
||||
DoCast(me, SPELL_WATER_BLAST);
|
||||
DoCast(me, SPELL_DRAINED);
|
||||
bIsExploded = true;
|
||||
m_creature->AttackStop();
|
||||
m_creature->SetVisibility(VISIBILITY_OFF);
|
||||
me->AttackStop();
|
||||
me->SetVisibility(VISIBILITY_OFF);
|
||||
for (uint8 i = 0; i < 10; i++)
|
||||
{
|
||||
int tmp = urand(0, MAX_SPAWN_LOC-1);
|
||||
m_creature->SummonCreature(NPC_ICHOR_GLOBULE, SpawnLoc[tmp], TEMPSUMMON_CORPSE_DESPAWN);
|
||||
me->SummonCreature(NPC_ICHOR_GLOBULE, SpawnLoc[tmp], TEMPSUMMON_CORPSE_DESPAWN);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -237,7 +237,7 @@ struct boss_ichoronAI : public ScriptedAI
|
||||
if (!m_waterElements.empty())
|
||||
{
|
||||
for (std::list<uint64>::const_iterator itr = m_waterElements.begin(); itr != m_waterElements.end(); ++itr)
|
||||
if (Creature* pTemp = Unit::GetCreature(*m_creature, *itr))
|
||||
if (Creature* pTemp = Unit::GetCreature(*me, *itr))
|
||||
if (pTemp->isAlive())
|
||||
{
|
||||
bIsWaterElementsAlive = true;
|
||||
@@ -257,7 +257,7 @@ struct boss_ichoronAI : public ScriptedAI
|
||||
{
|
||||
if (uiWaterBoltVolleyTimer <= uiDiff)
|
||||
{
|
||||
DoCast(m_creature, SPELL_WATER_BOLT_VOLLEY);
|
||||
DoCast(me, SPELL_WATER_BOLT_VOLLEY);
|
||||
uiWaterBoltVolleyTimer = urand(10000, 15000);
|
||||
}
|
||||
else uiWaterBoltVolleyTimer -= uiDiff;
|
||||
@@ -268,12 +268,12 @@ struct boss_ichoronAI : public ScriptedAI
|
||||
|
||||
void JustDied(Unit* killer)
|
||||
{
|
||||
DoScriptText(SAY_DEATH, m_creature);
|
||||
DoScriptText(SAY_DEATH, me);
|
||||
|
||||
if (bIsExploded)
|
||||
{
|
||||
bIsExploded = false;
|
||||
m_creature->SetVisibility(VISIBILITY_ON);
|
||||
me->SetVisibility(VISIBILITY_ON);
|
||||
}
|
||||
|
||||
DespawnWaterElements();
|
||||
@@ -299,7 +299,7 @@ struct boss_ichoronAI : public ScriptedAI
|
||||
void JustSummoned(Creature* pSummoned)
|
||||
{
|
||||
pSummoned->SetSpeed(MOVE_RUN, 0.3f);
|
||||
pSummoned->GetMotionMaster()->MoveFollow(m_creature, 0, 0);
|
||||
pSummoned->GetMotionMaster()->MoveFollow(me, 0, 0);
|
||||
m_waterElements.push_back(pSummoned->GetGUID());
|
||||
}
|
||||
|
||||
@@ -311,9 +311,9 @@ struct boss_ichoronAI : public ScriptedAI
|
||||
|
||||
void KilledUnit(Unit *victim)
|
||||
{
|
||||
if (victim == m_creature)
|
||||
if (victim == me)
|
||||
return;
|
||||
DoScriptText(RAND(SAY_SLAY_1,SAY_SLAY_2,SAY_SLAY_3), m_creature);
|
||||
DoScriptText(RAND(SAY_SLAY_1,SAY_SLAY_2,SAY_SLAY_3), me);
|
||||
}
|
||||
};
|
||||
|
||||
@@ -349,13 +349,13 @@ struct mob_ichor_globuleAI : public ScriptedAI
|
||||
{
|
||||
if (pInstance)
|
||||
{
|
||||
if (Creature* pIchoron = Unit::GetCreature(*m_creature, pInstance->GetData64(DATA_ICHORON)))
|
||||
if (Creature* pIchoron = Unit::GetCreature(*me, pInstance->GetData64(DATA_ICHORON)))
|
||||
{
|
||||
if (m_creature->IsWithinDist(pIchoron, 2.0f , false))
|
||||
if (me->IsWithinDist(pIchoron, 2.0f , false))
|
||||
{
|
||||
if (pIchoron->AI())
|
||||
pIchoron->AI()->DoAction(ACTION_WATER_ELEMENT_HIT);
|
||||
m_creature->ForcedDespawn();
|
||||
me->ForcedDespawn();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -366,8 +366,8 @@ struct mob_ichor_globuleAI : public ScriptedAI
|
||||
|
||||
void JustDied(Unit* pKiller)
|
||||
{
|
||||
DoCast(m_creature, SPELL_SPLASH);
|
||||
if (Creature* pIchoron = Unit::GetCreature(*m_creature, pInstance->GetData64(DATA_ICHORON)))
|
||||
DoCast(me, SPELL_SPLASH);
|
||||
if (Creature* pIchoron = Unit::GetCreature(*me, pInstance->GetData64(DATA_ICHORON)))
|
||||
if (pIchoron->AI())
|
||||
pIchoron->AI()->DoAction(ACTION_WATER_ELEMENT_KILLED);
|
||||
}
|
||||
|
||||
@@ -71,14 +71,14 @@ struct boss_lavanthorAI : public ScriptedAI
|
||||
|
||||
void AttackStart(Unit* pWho)
|
||||
{
|
||||
if (m_creature->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_OOC_NOT_ATTACKABLE) || m_creature->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE))
|
||||
if (me->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_OOC_NOT_ATTACKABLE) || me->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE))
|
||||
return;
|
||||
|
||||
if (m_creature->Attack(pWho, true))
|
||||
if (me->Attack(pWho, true))
|
||||
{
|
||||
m_creature->AddThreat(pWho, 0.0f);
|
||||
m_creature->SetInCombatWith(pWho);
|
||||
pWho->SetInCombatWith(m_creature);
|
||||
me->AddThreat(pWho, 0.0f);
|
||||
me->SetInCombatWith(pWho);
|
||||
pWho->SetInCombatWith(me);
|
||||
DoStartMovement(pWho);
|
||||
}
|
||||
}
|
||||
@@ -93,19 +93,19 @@ struct boss_lavanthorAI : public ScriptedAI
|
||||
|
||||
if (uiFireboltTimer <= diff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(), SPELL_FIREBOLT);
|
||||
DoCast(me->getVictim(), SPELL_FIREBOLT);
|
||||
uiFireboltTimer = urand(5000,13000);
|
||||
} else uiFireboltTimer -= diff;
|
||||
|
||||
if (uiFlameBreathTimer <= diff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(), SPELL_FLAME_BREATH);
|
||||
DoCast(me->getVictim(), SPELL_FLAME_BREATH);
|
||||
uiFlameBreathTimer = urand(10000,15000);
|
||||
} else uiFlameBreathTimer -= diff;
|
||||
|
||||
if (uiLavaBurnTimer <= diff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(), SPELL_LAVA_BURN);
|
||||
DoCast(me->getVictim(), SPELL_LAVA_BURN);
|
||||
uiLavaBurnTimer = urand(15000,23000);
|
||||
}
|
||||
|
||||
@@ -113,7 +113,7 @@ struct boss_lavanthorAI : public ScriptedAI
|
||||
{
|
||||
if (uiCauterizingFlamesTimer <= diff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(), SPELL_CAUTERIZING_FLAMES);
|
||||
DoCast(me->getVictim(), SPELL_CAUTERIZING_FLAMES);
|
||||
uiCauterizingFlamesTimer = urand(10000,16000);
|
||||
} else uiCauterizingFlamesTimer -= diff;
|
||||
}
|
||||
|
||||
@@ -64,14 +64,14 @@ struct boss_moraggAI : public ScriptedAI
|
||||
|
||||
void AttackStart(Unit* pWho)
|
||||
{
|
||||
if (m_creature->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_OOC_NOT_ATTACKABLE) || m_creature->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE))
|
||||
if (me->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_OOC_NOT_ATTACKABLE) || me->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE))
|
||||
return;
|
||||
|
||||
if (m_creature->Attack(pWho, true))
|
||||
if (me->Attack(pWho, true))
|
||||
{
|
||||
m_creature->AddThreat(pWho, 0.0f);
|
||||
m_creature->SetInCombatWith(pWho);
|
||||
pWho->SetInCombatWith(m_creature);
|
||||
me->AddThreat(pWho, 0.0f);
|
||||
me->SetInCombatWith(pWho);
|
||||
pWho->SetInCombatWith(me);
|
||||
DoStartMovement(pWho);
|
||||
}
|
||||
}
|
||||
@@ -93,7 +93,7 @@ struct boss_moraggAI : public ScriptedAI
|
||||
|
||||
if (uiCorrosiveSalivaTimer <= diff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(), SPELL_CORROSIVE_SALIVA);
|
||||
DoCast(me->getVictim(), SPELL_CORROSIVE_SALIVA);
|
||||
uiCorrosiveSalivaTimer = 10000;
|
||||
} else uiCorrosiveSalivaTimer -= diff;
|
||||
|
||||
|
||||
@@ -95,7 +95,7 @@ struct boss_xevozzAI : public ScriptedAI
|
||||
void DespawnSphere()
|
||||
{
|
||||
std::list<Creature*> assistList;
|
||||
GetCreatureListWithEntryInGrid(assistList,m_creature, NPC_ETHEREAL_SPHERE ,150.0f);
|
||||
GetCreatureListWithEntryInGrid(assistList,me, NPC_ETHEREAL_SPHERE ,150.0f);
|
||||
|
||||
if (assistList.empty())
|
||||
return;
|
||||
@@ -119,21 +119,21 @@ struct boss_xevozzAI : public ScriptedAI
|
||||
|
||||
void AttackStart(Unit* pWho)
|
||||
{
|
||||
if (m_creature->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_OOC_NOT_ATTACKABLE) || m_creature->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE))
|
||||
if (me->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_OOC_NOT_ATTACKABLE) || me->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE))
|
||||
return;
|
||||
|
||||
if (m_creature->Attack(pWho, true))
|
||||
if (me->Attack(pWho, true))
|
||||
{
|
||||
m_creature->AddThreat(pWho, 0.0f);
|
||||
m_creature->SetInCombatWith(pWho);
|
||||
pWho->SetInCombatWith(m_creature);
|
||||
me->AddThreat(pWho, 0.0f);
|
||||
me->SetInCombatWith(pWho);
|
||||
pWho->SetInCombatWith(me);
|
||||
DoStartMovement(pWho);
|
||||
}
|
||||
}
|
||||
|
||||
void EnterCombat(Unit* pWho)
|
||||
{
|
||||
DoScriptText(SAY_AGGRO, m_creature);
|
||||
DoScriptText(SAY_AGGRO, me);
|
||||
if (pInstance)
|
||||
{
|
||||
if (GameObject *pDoor = pInstance->instance->GetGameObject(pInstance->GetData64(DATA_XEVOZZ_CELL)))
|
||||
@@ -159,7 +159,7 @@ struct boss_xevozzAI : public ScriptedAI
|
||||
|
||||
if (uiArcaneBarrageVolley_Timer < uiDiff)
|
||||
{
|
||||
DoCast(m_creature, SPELL_ARCANE_BARRAGE_VOLLEY);
|
||||
DoCast(me, SPELL_ARCANE_BARRAGE_VOLLEY);
|
||||
uiArcaneBarrageVolley_Timer = urand(20000, 22000);
|
||||
}
|
||||
else uiArcaneBarrageVolley_Timer -= uiDiff;
|
||||
@@ -167,17 +167,17 @@ struct boss_xevozzAI : public ScriptedAI
|
||||
if (uiArcaneBuffet_Timer)
|
||||
if (uiArcaneBuffet_Timer < uiDiff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(), SPELL_ARCANE_BUFFET);
|
||||
DoCast(me->getVictim(), SPELL_ARCANE_BUFFET);
|
||||
uiArcaneBuffet_Timer = 0;
|
||||
}
|
||||
else uiArcaneBuffet_Timer -= uiDiff;
|
||||
|
||||
if (uiSummonEtherealSphere_Timer < uiDiff)
|
||||
{
|
||||
DoScriptText(SAY_SPAWN, m_creature);
|
||||
DoCast(m_creature, SPELL_SUMMON_ETHEREAL_SPHERE_1);
|
||||
DoScriptText(SAY_SPAWN, me);
|
||||
DoCast(me, SPELL_SUMMON_ETHEREAL_SPHERE_1);
|
||||
if (IsHeroic()) // extra one for heroic
|
||||
m_creature->SummonCreature(NPC_ETHEREAL_SPHERE, m_creature->GetPositionX()-5+rand()%10, m_creature->GetPositionY()-5+rand()%10, m_creature->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN, 40000);
|
||||
me->SummonCreature(NPC_ETHEREAL_SPHERE, me->GetPositionX()-5+rand()%10, me->GetPositionY()-5+rand()%10, me->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN, 40000);
|
||||
|
||||
uiSummonEtherealSphere_Timer = urand(45000, 47000);
|
||||
uiArcaneBuffet_Timer = urand(5000, 6000);
|
||||
@@ -189,7 +189,7 @@ struct boss_xevozzAI : public ScriptedAI
|
||||
|
||||
void JustDied(Unit* pKiller)
|
||||
{
|
||||
DoScriptText(SAY_DEATH, m_creature);
|
||||
DoScriptText(SAY_DEATH, me);
|
||||
|
||||
DespawnSphere();
|
||||
|
||||
@@ -209,10 +209,10 @@ struct boss_xevozzAI : public ScriptedAI
|
||||
}
|
||||
void KilledUnit(Unit* pVictim)
|
||||
{
|
||||
if (pVictim == m_creature)
|
||||
if (pVictim == me)
|
||||
return;
|
||||
|
||||
DoScriptText(RAND(SAY_SLAY_1,SAY_SLAY_2,SAY_SLAY_3), m_creature);
|
||||
DoScriptText(RAND(SAY_SLAY_1,SAY_SLAY_2,SAY_SLAY_3), me);
|
||||
}
|
||||
};
|
||||
|
||||
@@ -245,20 +245,20 @@ struct mob_ethereal_sphereAI : public ScriptedAI
|
||||
if (!UpdateVictim())
|
||||
return;
|
||||
|
||||
if (!m_creature->HasAura(SPELL_POWER_BALL_VISUAL))
|
||||
DoCast(m_creature, SPELL_POWER_BALL_VISUAL);
|
||||
if (!me->HasAura(SPELL_POWER_BALL_VISUAL))
|
||||
DoCast(me, SPELL_POWER_BALL_VISUAL);
|
||||
|
||||
if (uiRangeCheck_Timer < uiDiff)
|
||||
{
|
||||
if (pInstance)
|
||||
{
|
||||
if (Creature* pXevozz = Unit::GetCreature(*m_creature, pInstance->GetData64(DATA_XEVOZZ)))
|
||||
if (Creature* pXevozz = Unit::GetCreature(*me, pInstance->GetData64(DATA_XEVOZZ)))
|
||||
{
|
||||
float fDistance = m_creature->GetDistance2d(pXevozz);
|
||||
float fDistance = me->GetDistance2d(pXevozz);
|
||||
if (fDistance <= 3)
|
||||
DoCast(pXevozz, SPELL_ARCANE_POWER);
|
||||
else
|
||||
DoCast(m_creature, 35845); //Is it blizzlike?
|
||||
DoCast(me, 35845); //Is it blizzlike?
|
||||
}
|
||||
}
|
||||
uiRangeCheck_Timer = 1000;
|
||||
@@ -267,9 +267,9 @@ struct mob_ethereal_sphereAI : public ScriptedAI
|
||||
|
||||
if (uiSummonPlayers_Timer < uiDiff)
|
||||
{
|
||||
DoCast(m_creature, SPELL_SUMMON_PLAYERS); // not working right
|
||||
DoCast(me, SPELL_SUMMON_PLAYERS); // not working right
|
||||
|
||||
Map* pMap = m_creature->GetMap();
|
||||
Map* pMap = me->GetMap();
|
||||
if (pMap && pMap->IsDungeon())
|
||||
{
|
||||
Map::PlayerList const &PlayerList = pMap->GetPlayers();
|
||||
@@ -277,7 +277,7 @@ struct mob_ethereal_sphereAI : public ScriptedAI
|
||||
if (!PlayerList.isEmpty())
|
||||
for (Map::PlayerList::const_iterator i = PlayerList.begin(); i != PlayerList.end(); ++i)
|
||||
if (i->getSource()->isAlive())
|
||||
DoTeleportPlayer(i->getSource(), m_creature->GetPositionX(), m_creature->GetPositionY(), m_creature->GetPositionZ(), i->getSource()->GetOrientation());
|
||||
DoTeleportPlayer(i->getSource(), me->GetPositionX(), me->GetPositionY(), me->GetPositionZ(), i->getSource()->GetOrientation());
|
||||
}
|
||||
|
||||
uiSummonPlayers_Timer = urand(33000, 35000);
|
||||
|
||||
@@ -67,21 +67,21 @@ struct boss_zuramatAI : public ScriptedAI
|
||||
|
||||
void AttackStart(Unit* pWho)
|
||||
{
|
||||
if (m_creature->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_OOC_NOT_ATTACKABLE) || m_creature->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE))
|
||||
if (me->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_OOC_NOT_ATTACKABLE) || me->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE))
|
||||
return;
|
||||
|
||||
if (m_creature->Attack(pWho, true))
|
||||
if (me->Attack(pWho, true))
|
||||
{
|
||||
m_creature->AddThreat(pWho, 0.0f);
|
||||
m_creature->SetInCombatWith(pWho);
|
||||
pWho->SetInCombatWith(m_creature);
|
||||
me->AddThreat(pWho, 0.0f);
|
||||
me->SetInCombatWith(pWho);
|
||||
pWho->SetInCombatWith(me);
|
||||
DoStartMovement(pWho);
|
||||
}
|
||||
}
|
||||
|
||||
void EnterCombat(Unit* who)
|
||||
{
|
||||
DoScriptText(SAY_AGGRO, m_creature);
|
||||
DoScriptText(SAY_AGGRO, me);
|
||||
if (pInstance)
|
||||
{
|
||||
if (GameObject *pDoor = pInstance->instance->GetGameObject(pInstance->GetData64(DATA_ZURAMAT_CELL)))
|
||||
@@ -107,7 +107,7 @@ struct boss_zuramatAI : public ScriptedAI
|
||||
|
||||
if (SpellSummonVoidTimer <= diff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(), SPELL_SUMMON_VOID_SENTRY, false);
|
||||
DoCast(me->getVictim(), SPELL_SUMMON_VOID_SENTRY, false);
|
||||
SpellSummonVoidTimer = 20000;
|
||||
} else SpellSummonVoidTimer -=diff;
|
||||
|
||||
@@ -120,7 +120,7 @@ struct boss_zuramatAI : public ScriptedAI
|
||||
|
||||
if (SpellShroudOfDarknessTimer <= diff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(), SPELL_SHROUD_OF_DARKNESS);
|
||||
DoCast(me->getVictim(), SPELL_SHROUD_OF_DARKNESS);
|
||||
SpellShroudOfDarknessTimer = 20000;
|
||||
} else SpellShroudOfDarknessTimer -=diff;
|
||||
|
||||
@@ -129,7 +129,7 @@ struct boss_zuramatAI : public ScriptedAI
|
||||
|
||||
void JustDied(Unit* killer)
|
||||
{
|
||||
DoScriptText(SAY_DEATH, m_creature);
|
||||
DoScriptText(SAY_DEATH, me);
|
||||
|
||||
if (pInstance)
|
||||
{
|
||||
@@ -148,15 +148,15 @@ struct boss_zuramatAI : public ScriptedAI
|
||||
|
||||
void KilledUnit(Unit *victim)
|
||||
{
|
||||
if (victim == m_creature)
|
||||
if (victim == me)
|
||||
return;
|
||||
|
||||
DoScriptText(RAND(SAY_SLAY_1,SAY_SLAY_2,SAY_SLAY_3), m_creature);
|
||||
DoScriptText(RAND(SAY_SLAY_1,SAY_SLAY_2,SAY_SLAY_3), me);
|
||||
}
|
||||
|
||||
void JustSummoned(Creature* summon)
|
||||
{
|
||||
summon->AI()->AttackStart(m_creature->getVictim());
|
||||
summon->AI()->AttackStart(me->getVictim());
|
||||
summon->AI()->DoCastAOE(SPELL_ZURAMAT_ADD_2);
|
||||
summon->SetPhaseMask(17,true);
|
||||
}
|
||||
|
||||
@@ -49,11 +49,11 @@ struct npc_sinclariAI : public ScriptedAI
|
||||
uiPhase = 0;
|
||||
uiTimer = 0;
|
||||
|
||||
m_creature->SetVisibility(VISIBILITY_ON);
|
||||
m_creature->SetReactState(REACT_AGGRESSIVE);
|
||||
me->SetVisibility(VISIBILITY_ON);
|
||||
me->SetReactState(REACT_AGGRESSIVE);
|
||||
|
||||
std::list<Creature*> GuardList;
|
||||
m_creature->GetCreatureListWithEntryInGrid(GuardList, NPC_VIOLET_HOLD_GUARD, 40.0f);
|
||||
me->GetCreatureListWithEntryInGrid(GuardList, NPC_VIOLET_HOLD_GUARD, 40.0f);
|
||||
if (!GuardList.empty())
|
||||
{
|
||||
for (std::list<Creature*>::const_iterator itr = GuardList.begin(); itr != GuardList.end(); ++itr)
|
||||
@@ -81,8 +81,8 @@ struct npc_sinclariAI : public ScriptedAI
|
||||
}
|
||||
|
||||
//She should not be despawned, she will be used by the instance to summon some npcs
|
||||
m_creature->SetVisibility(VISIBILITY_OFF);
|
||||
m_creature->SetReactState(REACT_PASSIVE);
|
||||
me->SetVisibility(VISIBILITY_OFF);
|
||||
me->SetReactState(REACT_PASSIVE);
|
||||
}
|
||||
|
||||
void UpdateAI(const uint32 uiDiff)
|
||||
@@ -96,14 +96,14 @@ struct npc_sinclariAI : public ScriptedAI
|
||||
switch(uiPhase)
|
||||
{
|
||||
case 1:
|
||||
DoScriptText(SAY_SINCLARI_1, m_creature);
|
||||
DoScriptText(SAY_SINCLARI_1, me);
|
||||
uiTimer = 4000;
|
||||
uiPhase = 2;
|
||||
break;
|
||||
case 2:
|
||||
{
|
||||
std::list<Creature*> GuardList;
|
||||
m_creature->GetCreatureListWithEntryInGrid(GuardList, NPC_VIOLET_HOLD_GUARD, 40.0f);
|
||||
me->GetCreatureListWithEntryInGrid(GuardList, NPC_VIOLET_HOLD_GUARD, 40.0f);
|
||||
if (!GuardList.empty())
|
||||
for (std::list<Creature*>::const_iterator itr = GuardList.begin(); itr != GuardList.end(); ++itr)
|
||||
{
|
||||
@@ -120,7 +120,7 @@ struct npc_sinclariAI : public ScriptedAI
|
||||
case 3:
|
||||
{
|
||||
std::list<Creature*> GuardList;
|
||||
m_creature->GetCreatureListWithEntryInGrid(GuardList, NPC_VIOLET_HOLD_GUARD, 40.0f);
|
||||
me->GetCreatureListWithEntryInGrid(GuardList, NPC_VIOLET_HOLD_GUARD, 40.0f);
|
||||
if (!GuardList.empty())
|
||||
for (std::list<Creature*>::const_iterator itr = GuardList.begin(); itr != GuardList.end(); ++itr)
|
||||
{
|
||||
@@ -135,7 +135,7 @@ struct npc_sinclariAI : public ScriptedAI
|
||||
break;
|
||||
}
|
||||
case 4:
|
||||
m_creature->GetMotionMaster()->MovePoint(0, MovePosition);
|
||||
me->GetMotionMaster()->MovePoint(0, MovePosition);
|
||||
uiTimer = 0;
|
||||
uiPhase = 0;
|
||||
break;
|
||||
@@ -210,7 +210,7 @@ struct npc_teleportation_portalAI : public ScriptedAI
|
||||
{
|
||||
if (pInstance && pInstance->GetData(DATA_REMOVE_NPC) == 1)
|
||||
{
|
||||
m_creature->ForcedDespawn();
|
||||
me->ForcedDespawn();
|
||||
pInstance->SetData(DATA_REMOVE_NPC, 0);
|
||||
}
|
||||
|
||||
@@ -222,7 +222,7 @@ struct npc_teleportation_portalAI : public ScriptedAI
|
||||
for (uint8 i = 0; i < k; ++i)
|
||||
{
|
||||
uint32 entry = RAND(CREATURE_AZURE_CAPTAIN,CREATURE_AZURE_RAIDER,CREATURE_AZURE_STALKER,CREATURE_AZURE_SORCEROR);
|
||||
if (Creature* pSummon = DoSummon(entry, m_creature, 2.0f, 30000, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT))
|
||||
if (Creature* pSummon = DoSummon(entry, me, 2.0f, 30000, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT))
|
||||
pSummon->GetMotionMaster()->MovePoint(0, DoorPosition);
|
||||
}
|
||||
}
|
||||
@@ -230,16 +230,16 @@ struct npc_teleportation_portalAI : public ScriptedAI
|
||||
{
|
||||
bPortalGuardianOrKeeperSpawn = true;
|
||||
uint32 entry = RAND(CREATURE_PORTAL_GUARDIAN, CREATURE_PORTAL_KEEPER);
|
||||
if (Creature *pPortalKeeper = DoSummon(entry, m_creature, 2.0f, 0, TEMPSUMMON_DEAD_DESPAWN))
|
||||
m_creature->CastSpell(pPortalKeeper, SPELL_PORTAL_CHANNEL, false);
|
||||
if (Creature *pPortalKeeper = DoSummon(entry, me, 2.0f, 0, TEMPSUMMON_DEAD_DESPAWN))
|
||||
me->CastSpell(pPortalKeeper, SPELL_PORTAL_CHANNEL, false);
|
||||
}
|
||||
uiSpawnTimer = SPAWN_TIME;
|
||||
} else uiSpawnTimer -= diff;
|
||||
|
||||
if (bPortalGuardianOrKeeperSpawn && !m_creature->IsNonMeleeSpellCasted(false))
|
||||
if (bPortalGuardianOrKeeperSpawn && !me->IsNonMeleeSpellCasted(false))
|
||||
{
|
||||
m_creature->Kill(m_creature, false);
|
||||
m_creature->RemoveCorpse();
|
||||
me->Kill(me, false);
|
||||
me->RemoveCorpse();
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -42,12 +42,12 @@ struct npc_drakuru_shacklesAI : public ScriptedAI
|
||||
void Reset()
|
||||
{
|
||||
RageclawGUID = 0;
|
||||
m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
||||
|
||||
float x, y, z;
|
||||
m_creature->GetClosePoint(x, y, z, m_creature->GetObjectSize() / 3, 0.1f);
|
||||
me->GetClosePoint(x, y, z, me->GetObjectSize() / 3, 0.1f);
|
||||
|
||||
if (Unit* summon = m_creature->SummonCreature(NPC_RAGECLAW, x, y, z,
|
||||
if (Unit* summon = me->SummonCreature(NPC_RAGECLAW, x, y, z,
|
||||
0, TEMPSUMMON_DEAD_DESPAWN, 1000))
|
||||
{
|
||||
RageclawGUID = summon->GetGUID();
|
||||
@@ -57,10 +57,10 @@ struct npc_drakuru_shacklesAI : public ScriptedAI
|
||||
|
||||
void LockRageclaw()
|
||||
{
|
||||
Unit *Rageclaw = Unit::GetCreature(*m_creature, RageclawGUID);
|
||||
Unit *Rageclaw = Unit::GetCreature(*me, RageclawGUID);
|
||||
// pointer check not needed
|
||||
m_creature->SetInFront(Rageclaw);
|
||||
Rageclaw->SetInFront(m_creature);
|
||||
me->SetInFront(Rageclaw);
|
||||
Rageclaw->SetInFront(me);
|
||||
|
||||
DoCast(Rageclaw, SPELL_LEFT_CHAIN, true);
|
||||
DoCast(Rageclaw, SPELL_RIGHT_CHAIN, true);
|
||||
@@ -71,21 +71,21 @@ struct npc_drakuru_shacklesAI : public ScriptedAI
|
||||
if (!pWho)
|
||||
return;
|
||||
|
||||
Creature *Rageclaw = Unit::GetCreature(*m_creature, RageclawGUID);
|
||||
Creature *Rageclaw = Unit::GetCreature(*me, RageclawGUID);
|
||||
// pointer check not needed
|
||||
DoCast(Rageclaw, SPELL_FREE_RAGECLAW, true);
|
||||
|
||||
m_creature->setDeathState(DEAD);
|
||||
me->setDeathState(DEAD);
|
||||
}
|
||||
|
||||
void SpellHit(Unit* pCaster, const SpellEntry* pSpell)
|
||||
{
|
||||
if (pSpell->Id == SPELL_UNLOCK_SHACKLE)
|
||||
{
|
||||
if (Creature *Rageclaw = Unit::GetCreature(*m_creature, RageclawGUID))
|
||||
if (Creature *Rageclaw = Unit::GetCreature(*me, RageclawGUID))
|
||||
UnlockRageclaw(pCaster);
|
||||
else
|
||||
m_creature->setDeathState(JUST_DIED);
|
||||
me->setDeathState(JUST_DIED);
|
||||
}
|
||||
}
|
||||
};
|
||||
@@ -123,8 +123,8 @@ struct npc_captured_rageclawAI : public ScriptedAI
|
||||
{
|
||||
Despawn = false;
|
||||
DespawnTimer = 0;
|
||||
m_creature->setFaction(35);
|
||||
DoCast(m_creature, SPELL_KNEEL, true); // Little Hack for kneel - Thanks Illy :P
|
||||
me->setFaction(35);
|
||||
DoCast(me, SPELL_KNEEL, true); // Little Hack for kneel - Thanks Illy :P
|
||||
}
|
||||
|
||||
void MoveInLineOfSight(Unit *who){}
|
||||
@@ -133,17 +133,17 @@ struct npc_captured_rageclawAI : public ScriptedAI
|
||||
{
|
||||
if (pSpell->Id == SPELL_FREE_RAGECLAW)
|
||||
{
|
||||
m_creature->RemoveAurasDueToSpell(SPELL_LEFT_CHAIN);
|
||||
me->RemoveAurasDueToSpell(SPELL_LEFT_CHAIN);
|
||||
|
||||
m_creature->RemoveAurasDueToSpell(SPELL_RIGHT_CHAIN);
|
||||
me->RemoveAurasDueToSpell(SPELL_RIGHT_CHAIN);
|
||||
|
||||
m_creature->RemoveAurasDueToSpell(SPELL_KNEEL);
|
||||
me->RemoveAurasDueToSpell(SPELL_KNEEL);
|
||||
|
||||
m_creature->setFaction(m_creature->GetCreatureInfo()->faction_H);
|
||||
me->setFaction(me->GetCreatureInfo()->faction_H);
|
||||
|
||||
DoCast(m_creature, SPELL_UNSHACKLED, true);
|
||||
m_creature->MonsterSay(SAY_RAGECLAW, LANG_UNIVERSAL, NULL);
|
||||
m_creature->GetMotionMaster()->MoveRandom(10);
|
||||
DoCast(me, SPELL_UNSHACKLED, true);
|
||||
me->MonsterSay(SAY_RAGECLAW, LANG_UNIVERSAL, NULL);
|
||||
me->GetMotionMaster()->MoveRandom(10);
|
||||
|
||||
DespawnTimer = 10000;
|
||||
Despawn = true;
|
||||
@@ -162,7 +162,7 @@ struct npc_captured_rageclawAI : public ScriptedAI
|
||||
return;
|
||||
|
||||
if (DespawnTimer <= uiDiff)
|
||||
m_creature->DisappearAndDie();
|
||||
me->DisappearAndDie();
|
||||
else DespawnTimer -= uiDiff;
|
||||
}
|
||||
};
|
||||
@@ -261,7 +261,7 @@ struct npc_gurgthockAI : public ScriptedAI
|
||||
void Reset()
|
||||
{
|
||||
SummonGUID = 0;
|
||||
m_creature->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_QUESTGIVER);
|
||||
me->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_QUESTGIVER);
|
||||
uiTimer = 0;
|
||||
uiPhase = 0;
|
||||
uiQuest = 0;
|
||||
@@ -277,11 +277,11 @@ struct npc_gurgthockAI : public ScriptedAI
|
||||
|
||||
bEventInProgress = false;
|
||||
|
||||
m_creature->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_QUESTGIVER);
|
||||
me->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_QUESTGIVER);
|
||||
|
||||
for (std::list<uint64>::const_iterator itr = SummonList.begin(); itr != SummonList.end(); ++itr)
|
||||
{
|
||||
if (Creature* pTemp = Unit::GetCreature(*m_creature, *itr))
|
||||
if (Creature* pTemp = Unit::GetCreature(*me, *itr))
|
||||
if (pTemp)
|
||||
pTemp->RemoveFromWorld();
|
||||
}
|
||||
@@ -300,12 +300,12 @@ struct npc_gurgthockAI : public ScriptedAI
|
||||
switch(uiValue)
|
||||
{
|
||||
case QUEST_AMPHITHEATER_ANGUISH_TUSKARRMAGEDDON:
|
||||
DoScriptText(SAY_QUEST_ACCEPT_TUSKARRMAGEDON, m_creature);
|
||||
DoScriptText(SAY_QUEST_ACCEPT_TUSKARRMAGEDON, me);
|
||||
uiPhase = 1;
|
||||
uiTimer = 4000;
|
||||
break;
|
||||
case QUEST_AMPHITHEATER_ANGUISH_KORRAK_BLOODRAGER:
|
||||
DoScriptText(SAY_QUEST_ACCEPT_KORRAK_1, m_creature);
|
||||
DoScriptText(SAY_QUEST_ACCEPT_KORRAK_1, me);
|
||||
uiPhase = 3;
|
||||
uiTimer = 3000;
|
||||
break;
|
||||
@@ -335,7 +335,7 @@ struct npc_gurgthockAI : public ScriptedAI
|
||||
{
|
||||
if (uiRemoveFlagTimer <= uiDiff)
|
||||
{
|
||||
m_creature->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_QUESTGIVER);
|
||||
me->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_QUESTGIVER);
|
||||
bRemoveFlag = false;
|
||||
uiRemoveFlagTimer = 5000;
|
||||
} else uiRemoveFlagTimer -= uiDiff;
|
||||
@@ -348,39 +348,39 @@ struct npc_gurgthockAI : public ScriptedAI
|
||||
switch(uiPhase)
|
||||
{
|
||||
case 1:
|
||||
if (Creature *pSummon = m_creature->SummonCreature(NPC_ORINOKO_TUSKBREAKER, SpawnPosition[0], TEMPSUMMON_CORPSE_DESPAWN, 1000))
|
||||
if (Creature *pSummon = me->SummonCreature(NPC_ORINOKO_TUSKBREAKER, SpawnPosition[0], TEMPSUMMON_CORPSE_DESPAWN, 1000))
|
||||
SummonGUID = pSummon->GetGUID();
|
||||
uiPhase = 2;
|
||||
uiTimer = 4000;
|
||||
break;
|
||||
case 2:
|
||||
if (Creature *pSummon = Unit::GetCreature(*m_creature, SummonGUID))
|
||||
if (Creature *pSummon = Unit::GetCreature(*me, SummonGUID))
|
||||
pSummon->GetMotionMaster()->MoveJump(5776.319824, -2981.005371, 273.100037, 10.0f, 20.0f);
|
||||
uiPhase = 0;
|
||||
SummonGUID = 0;
|
||||
break;
|
||||
case 3:
|
||||
DoScriptText(SAY_QUEST_ACCEPT_KORRAK_2, m_creature);
|
||||
DoScriptText(SAY_QUEST_ACCEPT_KORRAK_2, me);
|
||||
uiTimer = 3000;
|
||||
uiPhase = 4;
|
||||
break;
|
||||
case 4:
|
||||
if (Creature *pSummon = m_creature->SummonCreature(NPC_KORRAK_BLOODRAGER, SpawnPosition[0], TEMPSUMMON_CORPSE_DESPAWN, 1000))
|
||||
if (Creature *pSummon = me->SummonCreature(NPC_KORRAK_BLOODRAGER, SpawnPosition[0], TEMPSUMMON_CORPSE_DESPAWN, 1000))
|
||||
SummonGUID = pSummon->GetGUID();
|
||||
uiTimer = 3000;
|
||||
uiPhase = 0;
|
||||
break;
|
||||
case 6:
|
||||
m_creature->SummonCreature(NPC_YGGDRAS, SpawnPosition[1], TEMPSUMMON_CORPSE_DESPAWN, 1000);
|
||||
me->SummonCreature(NPC_YGGDRAS, SpawnPosition[1], TEMPSUMMON_CORPSE_DESPAWN, 1000);
|
||||
uiPhase = 0;
|
||||
break;
|
||||
case 7:
|
||||
DoScriptText(SAY_QUEST_ACCEPT_MAGNATAUR, m_creature);
|
||||
DoScriptText(SAY_QUEST_ACCEPT_MAGNATAUR, me);
|
||||
uiTimer = 3000;
|
||||
uiPhase = 8;
|
||||
break;
|
||||
case 8:
|
||||
m_creature->SummonCreature(NPC_STINKBEARD, SpawnPosition[0], TEMPSUMMON_CORPSE_DESPAWN, 1000);
|
||||
me->SummonCreature(NPC_STINKBEARD, SpawnPosition[0], TEMPSUMMON_CORPSE_DESPAWN, 1000);
|
||||
uiPhase = 0;
|
||||
break;
|
||||
}
|
||||
@@ -398,7 +398,7 @@ struct npc_gurgthockAI : public ScriptedAI
|
||||
if (bEventInProgress)
|
||||
bEventInProgress = false;
|
||||
|
||||
m_creature->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_QUESTGIVER);
|
||||
me->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_QUESTGIVER);
|
||||
}
|
||||
};
|
||||
|
||||
@@ -449,8 +449,8 @@ struct npc_orinoko_tuskbreakerAI : public ScriptedAI
|
||||
{
|
||||
npc_orinoko_tuskbreakerAI(Creature* pCreature) : ScriptedAI(pCreature)
|
||||
{
|
||||
m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_OOC_NOT_ATTACKABLE);
|
||||
m_creature->SetReactState(REACT_PASSIVE);
|
||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_OOC_NOT_ATTACKABLE);
|
||||
me->SetReactState(REACT_PASSIVE);
|
||||
}
|
||||
|
||||
bool bSummoned;
|
||||
@@ -477,11 +477,11 @@ struct npc_orinoko_tuskbreakerAI : public ScriptedAI
|
||||
void EnterEvadeMode()
|
||||
{
|
||||
if (uiWhisker)
|
||||
if (Creature *pWhisker = m_creature->GetCreature(*m_creature, uiWhisker))
|
||||
if (Creature *pWhisker = me->GetCreature(*me, uiWhisker))
|
||||
pWhisker->RemoveFromWorld();
|
||||
|
||||
if (m_creature->isSummon())
|
||||
if (Creature* pSummoner = CAST_CRE(CAST_SUM(m_creature)->GetSummoner()))
|
||||
if (me->isSummon())
|
||||
if (Creature* pSummoner = CAST_CRE(CAST_SUM(me)->GetSummoner()))
|
||||
if (npc_gurgthockAI* pAI = CAST_AI(npc_gurgthockAI,pSummoner->AI()))
|
||||
pAI->RemoveSummons();
|
||||
}
|
||||
@@ -491,9 +491,9 @@ struct npc_orinoko_tuskbreakerAI : public ScriptedAI
|
||||
if (uiType != POINT_MOTION_TYPE)
|
||||
return;
|
||||
|
||||
m_creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_OOC_NOT_ATTACKABLE);
|
||||
m_creature->SetReactState(REACT_AGGRESSIVE);
|
||||
m_creature->SetHomePosition(m_creature->GetPositionX(),m_creature->GetPositionY(),m_creature->GetPositionZ(), 0);
|
||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_OOC_NOT_ATTACKABLE);
|
||||
me->SetReactState(REACT_AGGRESSIVE);
|
||||
me->SetHomePosition(me->GetPositionX(),me->GetPositionY(),me->GetPositionZ(), 0);
|
||||
uiBattleShoutTimer = 7000;
|
||||
}
|
||||
|
||||
@@ -509,7 +509,7 @@ struct npc_orinoko_tuskbreakerAI : public ScriptedAI
|
||||
|
||||
if (!bBattleShout && uiBattleShoutTimer <= uiDiff)
|
||||
{
|
||||
DoCast(m_creature, SPELL_BATTLE_SHOUT);
|
||||
DoCast(me, SPELL_BATTLE_SHOUT);
|
||||
bBattleShout = true;
|
||||
} else uiBattleShoutTimer -= uiDiff;
|
||||
|
||||
@@ -523,12 +523,12 @@ struct npc_orinoko_tuskbreakerAI : public ScriptedAI
|
||||
uiFishyScentTimer = 20000;
|
||||
} else uiFishyScentTimer -= uiDiff;
|
||||
|
||||
if (!bSummoned && m_creature->GetHealth()*100 / m_creature->GetMaxHealth() <= 50)
|
||||
if (!bSummoned && me->GetHealth()*100 / me->GetMaxHealth() <= 50)
|
||||
{
|
||||
DoScriptText(SAY_CALL_FOR_HELP ,m_creature);
|
||||
//DoCast(m_creature->getVictim(), SPELL_SUMMON_WHISKER); petai is not working correctly???
|
||||
DoScriptText(SAY_CALL_FOR_HELP ,me);
|
||||
//DoCast(me->getVictim(), SPELL_SUMMON_WHISKER); petai is not working correctly???
|
||||
|
||||
if (Creature *pWhisker = m_creature->SummonCreature(NPC_WHISKER, m_creature->GetPositionX(), m_creature->GetPositionY(), m_creature->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 0))
|
||||
if (Creature *pWhisker = me->SummonCreature(NPC_WHISKER, me->GetPositionX(), me->GetPositionY(), me->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 0))
|
||||
uiWhisker = pWhisker->GetGUID();
|
||||
bSummoned = true;
|
||||
}
|
||||
@@ -541,10 +541,10 @@ struct npc_orinoko_tuskbreakerAI : public ScriptedAI
|
||||
switch(pSummon->GetEntry())
|
||||
{
|
||||
case NPC_WHISKER:
|
||||
pSummon->AI()->AttackStart(m_creature->getVictim());
|
||||
pSummon->AI()->AttackStart(me->getVictim());
|
||||
break;
|
||||
case NPC_HUNGRY_PENGUIN:
|
||||
if (Unit *pAffected = Unit::GetUnit(*m_creature, AffectedGUID))
|
||||
if (Unit *pAffected = Unit::GetUnit(*me, AffectedGUID))
|
||||
{
|
||||
if (pAffected->isAlive())
|
||||
pSummon->AI()->AttackStart(pAffected);
|
||||
@@ -556,14 +556,14 @@ struct npc_orinoko_tuskbreakerAI : public ScriptedAI
|
||||
void JustDied(Unit* pKiller)
|
||||
{
|
||||
if (uiWhisker)
|
||||
if (Creature *pWhisker = m_creature->GetCreature(*m_creature, uiWhisker))
|
||||
if (Creature *pWhisker = me->GetCreature(*me, uiWhisker))
|
||||
pWhisker->RemoveFromWorld();
|
||||
|
||||
if (pKiller->GetTypeId() == TYPEID_PLAYER)
|
||||
CAST_PLR(pKiller)->GroupEventHappens(QUEST_AMPHITHEATER_ANGUISH_TUSKARRMAGEDDON, CAST_PLR(pKiller));
|
||||
|
||||
if (m_creature->isSummon())
|
||||
if (Creature* pSummoner = CAST_CRE(CAST_SUM(m_creature)->GetSummoner()))
|
||||
if (me->isSummon())
|
||||
if (Creature* pSummoner = CAST_CRE(CAST_SUM(me)->GetSummoner()))
|
||||
if (npc_gurgthockAI* pAI = CAST_AI(npc_gurgthockAI,pSummoner->AI()))
|
||||
pAI->bEventInProgress = false;
|
||||
}
|
||||
@@ -601,8 +601,8 @@ struct npc_korrak_bloodragerAI : public npc_escortAI
|
||||
|
||||
void Reset()
|
||||
{
|
||||
m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_OOC_NOT_ATTACKABLE);
|
||||
m_creature->SetReactState(REACT_PASSIVE);
|
||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_OOC_NOT_ATTACKABLE);
|
||||
me->SetReactState(REACT_PASSIVE);
|
||||
uiChargeTimer = 15000;
|
||||
uiUppercutTimer = 12000;
|
||||
bEnrage = false;
|
||||
@@ -610,8 +610,8 @@ struct npc_korrak_bloodragerAI : public npc_escortAI
|
||||
|
||||
void EnterEvadeMode()
|
||||
{
|
||||
if (m_creature->isSummon())
|
||||
if (Creature* pSummoner = CAST_CRE(CAST_SUM(m_creature)->GetSummoner()))
|
||||
if (me->isSummon())
|
||||
if (Creature* pSummoner = CAST_CRE(CAST_SUM(me)->GetSummoner()))
|
||||
if (npc_gurgthockAI* pAI = CAST_AI(npc_gurgthockAI,pSummoner->AI()))
|
||||
pAI->RemoveSummons();
|
||||
}
|
||||
@@ -621,16 +621,16 @@ struct npc_korrak_bloodragerAI : public npc_escortAI
|
||||
switch(uiI)
|
||||
{
|
||||
case 6:
|
||||
m_creature->SetHomePosition(m_creature->GetPositionX(),m_creature->GetPositionY(),m_creature->GetPositionZ(), 0);
|
||||
m_creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_OOC_NOT_ATTACKABLE);
|
||||
m_creature->SetReactState(REACT_AGGRESSIVE);
|
||||
me->SetHomePosition(me->GetPositionX(),me->GetPositionY(),me->GetPositionZ(), 0);
|
||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_OOC_NOT_ATTACKABLE);
|
||||
me->SetReactState(REACT_AGGRESSIVE);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void EnterCombat(Unit* pWho)
|
||||
{
|
||||
DoCast(m_creature, SPELL_GROW);
|
||||
DoCast(me, SPELL_GROW);
|
||||
}
|
||||
|
||||
void UpdateAI(const uint32 uiDiff)
|
||||
@@ -654,9 +654,9 @@ struct npc_korrak_bloodragerAI : public npc_escortAI
|
||||
uiChargeTimer = 15000;
|
||||
} else uiChargeTimer -= uiDiff;
|
||||
|
||||
if (!bEnrage && m_creature->GetHealth()*100 / m_creature->GetMaxHealth() <= 20)
|
||||
if (!bEnrage && me->GetHealth()*100 / me->GetMaxHealth() <= 20)
|
||||
{
|
||||
DoCast(m_creature, SPELL_ENRAGE);
|
||||
DoCast(me, SPELL_ENRAGE);
|
||||
bEnrage = true;
|
||||
}
|
||||
DoMeleeAttackIfReady();
|
||||
@@ -667,8 +667,8 @@ struct npc_korrak_bloodragerAI : public npc_escortAI
|
||||
if (pKiller->GetTypeId() == TYPEID_PLAYER)
|
||||
CAST_PLR(pKiller)->GroupEventHappens(QUEST_AMPHITHEATER_ANGUISH_KORRAK_BLOODRAGER, CAST_PLR(pKiller));
|
||||
|
||||
if (m_creature->isSummon())
|
||||
if (Creature* pSummoner = CAST_CRE(CAST_SUM(m_creature)->GetSummoner()))
|
||||
if (me->isSummon())
|
||||
if (Creature* pSummoner = CAST_CRE(CAST_SUM(me)->GetSummoner()))
|
||||
if (npc_gurgthockAI* pAI = CAST_AI(npc_gurgthockAI,pSummoner->AI()))
|
||||
pAI->bEventInProgress = false;
|
||||
}
|
||||
@@ -705,15 +705,15 @@ struct npc_yggdrasAI : public ScriptedAI
|
||||
|
||||
void EnterEvadeMode() //If you lose the combat, then the npc go away
|
||||
{
|
||||
if (m_creature->isSummon())
|
||||
if (Creature* pSummoner = CAST_CRE(CAST_SUM(m_creature)->GetSummoner()))
|
||||
if (me->isSummon())
|
||||
if (Creature* pSummoner = CAST_CRE(CAST_SUM(me)->GetSummoner()))
|
||||
if (npc_gurgthockAI* pAI = CAST_AI(npc_gurgthockAI,pSummoner->AI()))
|
||||
pAI->RemoveSummons();
|
||||
}
|
||||
|
||||
void EnterCombat(Unit* pWho)
|
||||
{
|
||||
DoCast(m_creature, SPELL_GROW);
|
||||
DoCast(me, SPELL_GROW);
|
||||
}
|
||||
|
||||
void UpdateAI(const uint32 uiDiff)
|
||||
@@ -723,13 +723,13 @@ struct npc_yggdrasAI : public ScriptedAI
|
||||
|
||||
if (uiCleaveTimer <= uiDiff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(), SPELL_CLEAVE);
|
||||
DoCast(me->getVictim(), SPELL_CLEAVE);
|
||||
uiCleaveTimer = 12000;
|
||||
} else uiCleaveTimer -= uiDiff;
|
||||
|
||||
if (uiCorrodeFleshTimer <= uiDiff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(), SPELL_CHARGE);
|
||||
DoCast(me->getVictim(), SPELL_CHARGE);
|
||||
uiCorrodeFleshTimer = 18000;
|
||||
} else uiCorrodeFleshTimer -= uiDiff;
|
||||
|
||||
@@ -747,8 +747,8 @@ struct npc_yggdrasAI : public ScriptedAI
|
||||
for (uint8 i = 0; i < 2; ++i)
|
||||
DoCast(pKiller, SPELL_JORMUNGAR_SPAWN, true);
|
||||
|
||||
if (m_creature->isSummon())
|
||||
if (Creature* pSummoner = CAST_CRE(CAST_SUM(m_creature)->GetSummoner()))
|
||||
if (me->isSummon())
|
||||
if (Creature* pSummoner = CAST_CRE(CAST_SUM(me)->GetSummoner()))
|
||||
if (npc_gurgthockAI* pAI = CAST_AI(npc_gurgthockAI,pSummoner->AI()))
|
||||
pAI->bEventInProgress = false;
|
||||
}
|
||||
@@ -776,8 +776,8 @@ struct npc_stinkbeardAI : public npc_escortAI
|
||||
{
|
||||
npc_stinkbeardAI(Creature* pCreature) : npc_escortAI(pCreature)
|
||||
{
|
||||
m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_OOC_NOT_ATTACKABLE);
|
||||
m_creature->SetReactState(REACT_PASSIVE);
|
||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_OOC_NOT_ATTACKABLE);
|
||||
me->SetReactState(REACT_PASSIVE);
|
||||
Start(true,true, 0, NULL);
|
||||
SetDespawnAtEnd(false);
|
||||
}
|
||||
@@ -790,7 +790,7 @@ struct npc_stinkbeardAI : public npc_escortAI
|
||||
|
||||
void Reset()
|
||||
{
|
||||
DoCast(m_creature, SPELL_THUNDERBLADE);
|
||||
DoCast(me, SPELL_THUNDERBLADE);
|
||||
uiThunderclapTimer = 5000;
|
||||
uiKnockAwayTimer = 10000;
|
||||
uiStinkyBeardTimer = 15000;
|
||||
@@ -799,8 +799,8 @@ struct npc_stinkbeardAI : public npc_escortAI
|
||||
|
||||
void EnterEvadeMode()
|
||||
{
|
||||
if (m_creature->isSummon())
|
||||
if (Creature* pSummoner = CAST_CRE(CAST_SUM(m_creature)->GetSummoner()))
|
||||
if (me->isSummon())
|
||||
if (Creature* pSummoner = CAST_CRE(CAST_SUM(me)->GetSummoner()))
|
||||
if (npc_gurgthockAI* pAI = CAST_AI(npc_gurgthockAI,pSummoner->AI()))
|
||||
pAI->RemoveSummons();
|
||||
}
|
||||
@@ -810,9 +810,9 @@ struct npc_stinkbeardAI : public npc_escortAI
|
||||
switch(uiI)
|
||||
{
|
||||
case 7:
|
||||
m_creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_OOC_NOT_ATTACKABLE);
|
||||
m_creature->SetReactState(REACT_AGGRESSIVE);
|
||||
m_creature->SetHomePosition(m_creature->GetPositionX(), m_creature->GetPositionY(), m_creature->GetPositionZ(), m_creature->GetOrientation());
|
||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_OOC_NOT_ATTACKABLE);
|
||||
me->SetReactState(REACT_AGGRESSIVE);
|
||||
me->SetHomePosition(me->GetPositionX(), me->GetPositionY(), me->GetPositionZ(), me->GetOrientation());
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -850,9 +850,9 @@ struct npc_stinkbeardAI : public npc_escortAI
|
||||
uiStinkyBeardTimer = 15000;
|
||||
} else uiStinkyBeardTimer -= uiDiff;
|
||||
|
||||
if (!bEnrage && m_creature->GetHealth()*100 / m_creature->GetMaxHealth() <= 20)
|
||||
if (!bEnrage && me->GetHealth()*100 / me->GetMaxHealth() <= 20)
|
||||
{
|
||||
DoCast(m_creature, SPELL_ENRAGE_STINKBEARD);
|
||||
DoCast(me, SPELL_ENRAGE_STINKBEARD);
|
||||
bEnrage = true;
|
||||
}
|
||||
DoMeleeAttackIfReady();
|
||||
@@ -860,8 +860,8 @@ struct npc_stinkbeardAI : public npc_escortAI
|
||||
|
||||
void JustDied(Unit* pKiller)
|
||||
{
|
||||
if (m_creature->isSummon())
|
||||
if (Creature* pSummoner = CAST_CRE(CAST_SUM(m_creature)->GetSummoner()))
|
||||
if (me->isSummon())
|
||||
if (Creature* pSummoner = CAST_CRE(CAST_SUM(me)->GetSummoner()))
|
||||
if (npc_gurgthockAI* pAI = CAST_AI(npc_gurgthockAI,pSummoner->AI()))
|
||||
pAI->bEventInProgress = false;
|
||||
|
||||
@@ -886,15 +886,15 @@ struct npc_released_offspring_harkoaAI : public ScriptedAI
|
||||
void Reset()
|
||||
{
|
||||
float x, y, z;
|
||||
m_creature->GetClosePoint(x, y, z, m_creature->GetObjectSize() / 3, 25.0f);
|
||||
m_creature->GetMotionMaster()->MovePoint(0, x, y, z);
|
||||
me->GetClosePoint(x, y, z, me->GetObjectSize() / 3, 25.0f);
|
||||
me->GetMotionMaster()->MovePoint(0, x, y, z);
|
||||
}
|
||||
|
||||
void MovementInform(uint32 uiType, uint32 uiId)
|
||||
{
|
||||
if (uiType != POINT_MOTION_TYPE)
|
||||
return;
|
||||
m_creature->DisappearAndDie();
|
||||
me->DisappearAndDie();
|
||||
}
|
||||
};
|
||||
|
||||
@@ -934,9 +934,9 @@ struct npc_crusade_recruitAI : public ScriptedAI
|
||||
{
|
||||
m_uiTimer = 0;
|
||||
m_uiPhase = 0;
|
||||
m_creature->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP);
|
||||
m_creature->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_STATE_COWER);
|
||||
m_heading = m_creature->GetOrientation();
|
||||
me->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP);
|
||||
me->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_STATE_COWER);
|
||||
m_heading = me->GetOrientation();
|
||||
}
|
||||
|
||||
void UpdateAI(const uint32 uiDiff)
|
||||
@@ -949,22 +949,22 @@ struct npc_crusade_recruitAI : public ScriptedAI
|
||||
{
|
||||
case 1:
|
||||
// say random text
|
||||
m_creature->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP);
|
||||
m_creature->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_ONESHOT_NONE);
|
||||
DoScriptText(RAND(SAY_RECRUIT_1,SAY_RECRUIT_2,SAY_RECRUIT_3), m_creature);
|
||||
me->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP);
|
||||
me->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_ONESHOT_NONE);
|
||||
DoScriptText(RAND(SAY_RECRUIT_1,SAY_RECRUIT_2,SAY_RECRUIT_3), me);
|
||||
m_uiTimer = 3000;
|
||||
m_uiPhase = 2;
|
||||
break;
|
||||
case 2:
|
||||
// walk forward
|
||||
m_creature->AddUnitMovementFlag(MOVEMENTFLAG_WALK_MODE);
|
||||
m_creature->GetMotionMaster()->MovePoint(0,m_creature->GetPositionX() + (cos(m_heading) * 10), m_creature->GetPositionY() + (sin(m_heading) * 10), m_creature->GetPositionZ());
|
||||
me->AddUnitMovementFlag(MOVEMENTFLAG_WALK_MODE);
|
||||
me->GetMotionMaster()->MovePoint(0,me->GetPositionX() + (cos(m_heading) * 10), me->GetPositionY() + (sin(m_heading) * 10), me->GetPositionZ());
|
||||
m_uiTimer = 5000;
|
||||
m_uiPhase = 3;
|
||||
break;
|
||||
case 3:
|
||||
// despawn
|
||||
m_creature->DisappearAndDie();
|
||||
me->DisappearAndDie();
|
||||
m_uiTimer = 0;
|
||||
m_uiPhase = 0;
|
||||
break;
|
||||
|
||||
Reference in New Issue
Block a user