*code cleanup

*totally destroyed m_creature, use "me" for future coding

--HG--
branch : trunk
This commit is contained in:
Rat
2010-04-14 23:07:41 +02:00
parent cc262e1cde
commit 6bcb297de4
403 changed files with 9851 additions and 9852 deletions
@@ -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;