*code cleanup
*totally destroyed m_creature, use "me" for future coding --HG-- branch : trunk
This commit is contained in:
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user