*Even more excessive cleanup..
--HG-- branch : trunk
This commit is contained in:
@@ -184,14 +184,14 @@ void DoScriptText(int32 iTextEntry, WorldObject* pSource, Unit* pTarget)
|
||||
if (pTarget && pTarget->GetTypeId() == TYPEID_PLAYER)
|
||||
pSource->MonsterWhisper(iTextEntry, pTarget->GetGUID());
|
||||
else
|
||||
error_log("TSCR: DoScriptText entry %i cannot whisper without target unit (TYPEID_PLAYER).", iTextEntry);
|
||||
error_log("TSCR: DoScriptText entry %i cannot whisper without pTarget unit (TYPEID_PLAYER).", iTextEntry);
|
||||
}break;
|
||||
case CHAT_TYPE_BOSS_WHISPER:
|
||||
{
|
||||
if (pTarget && pTarget->GetTypeId() == TYPEID_PLAYER)
|
||||
pSource->MonsterWhisper(iTextEntry, pTarget->GetGUID(), true);
|
||||
else
|
||||
error_log("TSCR: DoScriptText entry %i cannot whisper without target unit (TYPEID_PLAYER).", iTextEntry);
|
||||
error_log("TSCR: DoScriptText entry %i cannot whisper without pTarget unit (TYPEID_PLAYER).", iTextEntry);
|
||||
}break;
|
||||
case CHAT_TYPE_ZONE_YELL:
|
||||
pSource->MonsterYellToZone(iTextEntry, pData->uiLanguage, pTarget ? pTarget->GetGUID() : 0);
|
||||
|
||||
@@ -87,7 +87,7 @@ struct Script
|
||||
};
|
||||
|
||||
//Generic scripting text function
|
||||
void DoScriptText(int32 textEntry, WorldObject* pSource, Unit* target = NULL);
|
||||
void DoScriptText(int32 textEntry, WorldObject* pSource, Unit *pTarget = NULL);
|
||||
|
||||
#if COMPILER == COMPILER_GNU
|
||||
#define FUNC_PTR(name,callconvention,returntype,parameters) typedef returntype(*name)parameters __attribute__ ((callconvention));
|
||||
|
||||
@@ -121,33 +121,33 @@ void SimpleAI::KilledUnit(Unit *victim)
|
||||
if (!Kill_Spell)
|
||||
return;
|
||||
|
||||
Unit* target = NULL;
|
||||
Unit *pTarget = NULL;
|
||||
|
||||
switch (Kill_Target_Type)
|
||||
{
|
||||
case CAST_SELF:
|
||||
target = m_creature;
|
||||
pTarget = m_creature;
|
||||
break;
|
||||
case CAST_HOSTILE_TARGET:
|
||||
target = m_creature->getVictim();
|
||||
pTarget = m_creature->getVictim();
|
||||
break;
|
||||
case CAST_HOSTILE_SECOND_AGGRO:
|
||||
target = SelectUnit(SELECT_TARGET_TOPAGGRO,1);
|
||||
pTarget = SelectUnit(SELECT_TARGET_TOPAGGRO,1);
|
||||
break;
|
||||
case CAST_HOSTILE_LAST_AGGRO:
|
||||
target = SelectUnit(SELECT_TARGET_BOTTOMAGGRO,0);
|
||||
pTarget = SelectUnit(SELECT_TARGET_BOTTOMAGGRO,0);
|
||||
break;
|
||||
case CAST_HOSTILE_RANDOM:
|
||||
target = SelectUnit(SELECT_TARGET_RANDOM,0);
|
||||
pTarget = SelectUnit(SELECT_TARGET_RANDOM,0);
|
||||
break;
|
||||
case CAST_KILLEDUNIT_VICTIM:
|
||||
target = victim;
|
||||
pTarget = victim;
|
||||
break;
|
||||
}
|
||||
|
||||
//Target is ok, cast a spell on it
|
||||
if (target)
|
||||
DoCast(target, Kill_Spell);
|
||||
if (pTarget)
|
||||
DoCast(pTarget, Kill_Spell);
|
||||
}
|
||||
|
||||
void SimpleAI::DamageTaken(Unit *killer, uint32 &damage)
|
||||
@@ -169,33 +169,33 @@ void SimpleAI::DamageTaken(Unit *killer, uint32 &damage)
|
||||
if (!Death_Spell)
|
||||
return;
|
||||
|
||||
Unit* target = NULL;
|
||||
Unit *pTarget = NULL;
|
||||
|
||||
switch (Death_Target_Type)
|
||||
{
|
||||
case CAST_SELF:
|
||||
target = m_creature;
|
||||
pTarget = m_creature;
|
||||
break;
|
||||
case CAST_HOSTILE_TARGET:
|
||||
target = m_creature->getVictim();
|
||||
pTarget = m_creature->getVictim();
|
||||
break;
|
||||
case CAST_HOSTILE_SECOND_AGGRO:
|
||||
target = SelectUnit(SELECT_TARGET_TOPAGGRO,1);
|
||||
pTarget = SelectUnit(SELECT_TARGET_TOPAGGRO,1);
|
||||
break;
|
||||
case CAST_HOSTILE_LAST_AGGRO:
|
||||
target = SelectUnit(SELECT_TARGET_BOTTOMAGGRO,0);
|
||||
pTarget = SelectUnit(SELECT_TARGET_BOTTOMAGGRO,0);
|
||||
break;
|
||||
case CAST_HOSTILE_RANDOM:
|
||||
target = SelectUnit(SELECT_TARGET_RANDOM,0);
|
||||
pTarget = SelectUnit(SELECT_TARGET_RANDOM,0);
|
||||
break;
|
||||
case CAST_JUSTDIED_KILLER:
|
||||
target = killer;
|
||||
pTarget = killer;
|
||||
break;
|
||||
}
|
||||
|
||||
//Target is ok, cast a spell on it
|
||||
if (target)
|
||||
DoCast(target, Death_Spell);
|
||||
if (pTarget)
|
||||
DoCast(pTarget, Death_Spell);
|
||||
}
|
||||
|
||||
void SimpleAI::UpdateAI(const uint32 diff)
|
||||
@@ -220,34 +220,34 @@ void SimpleAI::UpdateAI(const uint32 diff)
|
||||
//Check Current spell
|
||||
if (!(Spell[i].InterruptPreviousCast && m_creature->IsNonMeleeSpellCasted(false)))
|
||||
{
|
||||
Unit* target = NULL;
|
||||
Unit *pTarget = NULL;
|
||||
|
||||
switch (Spell[i].Cast_Target_Type)
|
||||
{
|
||||
case CAST_SELF:
|
||||
target = m_creature;
|
||||
pTarget = m_creature;
|
||||
break;
|
||||
case CAST_HOSTILE_TARGET:
|
||||
target = m_creature->getVictim();
|
||||
pTarget = m_creature->getVictim();
|
||||
break;
|
||||
case CAST_HOSTILE_SECOND_AGGRO:
|
||||
target = SelectUnit(SELECT_TARGET_TOPAGGRO,1);
|
||||
pTarget = SelectUnit(SELECT_TARGET_TOPAGGRO,1);
|
||||
break;
|
||||
case CAST_HOSTILE_LAST_AGGRO:
|
||||
target = SelectUnit(SELECT_TARGET_BOTTOMAGGRO,0);
|
||||
pTarget = SelectUnit(SELECT_TARGET_BOTTOMAGGRO,0);
|
||||
break;
|
||||
case CAST_HOSTILE_RANDOM:
|
||||
target = SelectUnit(SELECT_TARGET_RANDOM,0);
|
||||
pTarget = SelectUnit(SELECT_TARGET_RANDOM,0);
|
||||
break;
|
||||
}
|
||||
|
||||
//Target is ok, cast a spell on it and then do our random yell
|
||||
if (target)
|
||||
if (pTarget)
|
||||
{
|
||||
if (m_creature->IsNonMeleeSpellCasted(false))
|
||||
m_creature->InterruptNonMeleeSpells(false);
|
||||
|
||||
DoCast(target, Spell[i].Spell_Id);
|
||||
DoCast(pTarget, Spell[i].Spell_Id);
|
||||
|
||||
//Yell and sound use the same number so that you can make
|
||||
//the Creature yell with the correct sound effect attached
|
||||
@@ -255,7 +255,7 @@ void SimpleAI::UpdateAI(const uint32 diff)
|
||||
|
||||
//Random yell
|
||||
if (Spell[i].TextId[random_text])
|
||||
DoScriptText(Spell[i].TextId[random_text], m_creature, target);
|
||||
DoScriptText(Spell[i].TextId[random_text], m_creature, pTarget);
|
||||
|
||||
//Random sound
|
||||
if (Spell[i].Text_Sound[random_text])
|
||||
@@ -269,7 +269,7 @@ void SimpleAI::UpdateAI(const uint32 diff)
|
||||
Spell_Timer[i] = Spell[i].Cooldown + (rand() % Spell[i].CooldownRandomAddition);
|
||||
else Spell_Timer[i] = Spell[i].Cooldown;
|
||||
|
||||
}else Spell_Timer[i] -= diff;
|
||||
} else Spell_Timer[i] -= diff;
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -8,10 +8,10 @@
|
||||
enum CastTarget
|
||||
{
|
||||
CAST_SELF = 0, //Self cast
|
||||
CAST_HOSTILE_TARGET, //Our current target (ie: highest aggro)
|
||||
CAST_HOSTILE_TARGET, //Our current pTarget (ie: highest aggro)
|
||||
CAST_HOSTILE_SECOND_AGGRO, //Second highest aggro (generaly used for cleaves and some special attacks)
|
||||
CAST_HOSTILE_LAST_AGGRO, //Dead last on aggro (no idea what this could be used for)
|
||||
CAST_HOSTILE_RANDOM, //Just any random target on our threat list
|
||||
CAST_HOSTILE_RANDOM, //Just any random pTarget on our threat list
|
||||
CAST_FRIENDLY_RANDOM, //NOT YET IMPLEMENTED
|
||||
|
||||
//Special cases
|
||||
|
||||
@@ -164,7 +164,7 @@ Creature* ScriptedAI::DoSpawnCreature(uint32 uiId, float fX, float fY, float fZ,
|
||||
return m_creature->SummonCreature(uiId, m_creature->GetPositionX()+fX, m_creature->GetPositionY()+fY, m_creature->GetPositionZ()+fZ, fAngle, (TempSummonType)uiType, uiDespawntime);
|
||||
}
|
||||
|
||||
Unit* ScriptedAI::SelectUnit(SelectAggroTarget target, uint32 uiPosition)
|
||||
Unit* ScriptedAI::SelectUnit(SelectAggroTarget pTarget, uint32 uiPosition)
|
||||
{
|
||||
//ThreatList m_threatlist;
|
||||
std::list<HostilReference*>& threatlist = m_creature->getThreatManager().getThreatList();
|
||||
@@ -174,7 +174,7 @@ Unit* ScriptedAI::SelectUnit(SelectAggroTarget target, uint32 uiPosition)
|
||||
if (uiPosition >= threatlist.size() || !threatlist.size())
|
||||
return NULL;
|
||||
|
||||
switch (target)
|
||||
switch (pTarget)
|
||||
{
|
||||
case SELECT_TARGET_RANDOM:
|
||||
advance (itr , uiPosition + (rand() % (threatlist.size() - uiPosition ) ));
|
||||
@@ -197,7 +197,7 @@ Unit* ScriptedAI::SelectUnit(SelectAggroTarget target, uint32 uiPosition)
|
||||
|
||||
SpellEntry const* ScriptedAI::SelectSpell(Unit* pTarget, int32 uiSchool, int32 uiMechanic, SelectTargetType selectTargets, uint32 uiPowerCostMin, uint32 uiPowerCostMax, float fRangeMin, float fRangeMax, SelectEffect selectEffects)
|
||||
{
|
||||
//No target so we can't cast
|
||||
//No pTarget so we can't cast
|
||||
if (!pTarget)
|
||||
return false;
|
||||
|
||||
@@ -264,7 +264,7 @@ SpellEntry const* ScriptedAI::SelectSpell(Unit* pTarget, int32 uiSchool, int32 u
|
||||
if (fRangeMax && m_creature->GetSpellMaxRangeForTarget(pTarget, pTempRange) > fRangeMax)
|
||||
continue;
|
||||
|
||||
//Check if our target is in range
|
||||
//Check if our pTarget is in range
|
||||
if (m_creature->IsWithinDistInMap(pTarget, m_creature->GetSpellMinRangeForTarget(pTarget, pTempRange)) || !m_creature->IsWithinDistInMap(pTarget, m_creature->GetSpellMaxRangeForTarget(pTarget, pTempRange)))
|
||||
continue;
|
||||
|
||||
@@ -282,7 +282,7 @@ SpellEntry const* ScriptedAI::SelectSpell(Unit* pTarget, int32 uiSchool, int32 u
|
||||
|
||||
bool ScriptedAI::CanCast(Unit* pTarget, SpellEntry const* pSpell, bool bTriggered)
|
||||
{
|
||||
//No target so we can't cast
|
||||
//No pTarget so we can't cast
|
||||
if (!pTarget || !pSpell)
|
||||
return false;
|
||||
|
||||
|
||||
@@ -49,7 +49,7 @@ struct TRINITY_DLL_DECL ScriptedAI : public CreatureAI
|
||||
//CreatureAI Functions
|
||||
//*************
|
||||
|
||||
void AttackStartNoMove(Unit *target);
|
||||
void AttackStartNoMove(Unit *pTarget);
|
||||
|
||||
// Called at any Damage from any attacker (before damage apply)
|
||||
void DamageTaken(Unit* pDone_by, uint32& uiDamage) {}
|
||||
@@ -73,7 +73,7 @@ struct TRINITY_DLL_DECL ScriptedAI : public CreatureAI
|
||||
void SpellHit(Unit* caster, const SpellEntry *spell) {}
|
||||
|
||||
// Called when spell hits a target
|
||||
void SpellHitTarget(Unit* target, const SpellEntry *spell) {}
|
||||
void SpellHitTarget(Unit *pTarget, const SpellEntry *spell) {}
|
||||
|
||||
//Called at waypoint reached or PointMovement end
|
||||
void MovementInform(uint32 type, uint32 id){}
|
||||
@@ -153,7 +153,7 @@ struct TRINITY_DLL_DECL ScriptedAI : public CreatureAI
|
||||
Creature* DoSpawnCreature(uint32 uiId, float fX, float fY, float fZ, float fAngle, uint32 uiType, uint32 uiDespawntime);
|
||||
|
||||
//Selects a unit from the creature's current aggro list
|
||||
Unit* SelectUnit(SelectAggroTarget target, uint32 uiPosition);
|
||||
Unit* SelectUnit(SelectAggroTarget pTarget, uint32 uiPosition);
|
||||
|
||||
bool HealthBelowPct(uint32 pct) const { return me->GetHealth() * 100 < m_creature->GetMaxHealth() * pct; }
|
||||
|
||||
|
||||
@@ -260,7 +260,7 @@ struct TRINITY_DLL_DECL npc_grimstoneAI : public npc_escortAI
|
||||
}
|
||||
}
|
||||
}
|
||||
}else MobDeath_Timer -= diff;
|
||||
} else MobDeath_Timer -= diff;
|
||||
}
|
||||
|
||||
if (Event_Timer)
|
||||
@@ -328,7 +328,7 @@ struct TRINITY_DLL_DECL npc_grimstoneAI : public npc_escortAI
|
||||
break;
|
||||
}
|
||||
++EventPhase;
|
||||
}else Event_Timer -= diff;
|
||||
} else Event_Timer -= diff;
|
||||
}
|
||||
|
||||
if (CanWalk)
|
||||
@@ -395,7 +395,7 @@ struct TRINITY_DLL_DECL mob_phalanxAI : public ScriptedAI
|
||||
{
|
||||
DoCast(m_creature->getVictim(),SPELL_MIGHTYBLOW);
|
||||
MightyBlow_Timer = 10000;
|
||||
}else MightyBlow_Timer -= diff;
|
||||
} else MightyBlow_Timer -= diff;
|
||||
|
||||
DoMeleeAttackIfReady();
|
||||
}
|
||||
@@ -1199,7 +1199,7 @@ struct TRINITY_DLL_DECL npc_rocknotAI : public npc_escortAI
|
||||
DoGo(DATA_GO_BAR_KEG,0);
|
||||
BreakKeg_Timer = 0;
|
||||
BreakDoor_Timer = 1000;
|
||||
}else BreakKeg_Timer -= diff;
|
||||
} else BreakKeg_Timer -= diff;
|
||||
}
|
||||
|
||||
if (BreakDoor_Timer)
|
||||
@@ -1218,7 +1218,7 @@ struct TRINITY_DLL_DECL npc_rocknotAI : public npc_escortAI
|
||||
pInstance->SetData(TYPE_BAR,DONE);
|
||||
|
||||
BreakDoor_Timer = 0;
|
||||
}else BreakDoor_Timer -= diff;
|
||||
} else BreakDoor_Timer -= diff;
|
||||
}
|
||||
|
||||
npc_escortAI::UpdateAI(diff);
|
||||
|
||||
+2
-20
@@ -34,10 +34,6 @@ struct TRINITY_DLL_DECL boss_ambassador_flamelashAI : public ScriptedAI
|
||||
|
||||
uint32 FireBlast_Timer;
|
||||
uint32 Spirit_Timer;
|
||||
int Rand;
|
||||
int RandX;
|
||||
int RandY;
|
||||
Creature* Summoned;
|
||||
|
||||
void Reset()
|
||||
{
|
||||
@@ -49,22 +45,8 @@ struct TRINITY_DLL_DECL boss_ambassador_flamelashAI : public ScriptedAI
|
||||
|
||||
void SummonSpirits(Unit* victim)
|
||||
{
|
||||
Rand = rand()%10;
|
||||
switch (rand()%2)
|
||||
{
|
||||
case 0: RandX -= Rand; break;
|
||||
case 1: RandX += Rand; break;
|
||||
}
|
||||
Rand = 0;
|
||||
Rand = rand()%10;
|
||||
switch (rand()%2)
|
||||
{
|
||||
case 0: RandY -= Rand; break;
|
||||
case 1: RandY += Rand; break;
|
||||
}
|
||||
Summoned = DoSpawnCreature(9178, RandX, RandY, 0, 0, TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN, 60000);
|
||||
if (Summoned)
|
||||
(Summoned->AI())->AttackStart(victim);
|
||||
if (Creature *Spirit = DoSpawnCreature(9178, RAND(irand(0,-9),irand(0,9)), RAND(irand(0,-9),irand(0,9)), 0, 0, TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN, 60000))
|
||||
Spirit->AI()->AttackStart(victim);
|
||||
}
|
||||
|
||||
void UpdateAI(const uint32 diff)
|
||||
|
||||
@@ -71,8 +71,8 @@ struct TRINITY_DLL_DECL boss_anubshiahAI : public ScriptedAI
|
||||
//CurseOfTongues_Timer
|
||||
if (CurseOfTongues_Timer <= diff)
|
||||
{
|
||||
if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true))
|
||||
DoCast(target,SPELL_CURSEOFTONGUES);
|
||||
if (Unit *pTarget = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true))
|
||||
DoCast(pTarget,SPELL_CURSEOFTONGUES);
|
||||
CurseOfTongues_Timer = 18000;
|
||||
} else CurseOfTongues_Timer -= diff;
|
||||
|
||||
@@ -93,8 +93,8 @@ struct TRINITY_DLL_DECL boss_anubshiahAI : public ScriptedAI
|
||||
//EnvelopingWeb_Timer
|
||||
if (EnvelopingWeb_Timer <= diff)
|
||||
{
|
||||
if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true))
|
||||
DoCast(target,SPELL_ENVELOPINGWEB);
|
||||
if (Unit *pTarget = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true))
|
||||
DoCast(pTarget,SPELL_ENVELOPINGWEB);
|
||||
EnvelopingWeb_Timer = 12000;
|
||||
} else EnvelopingWeb_Timer -= diff;
|
||||
|
||||
|
||||
+3
-3
@@ -69,8 +69,8 @@ struct TRINITY_DLL_DECL boss_draganthaurissanAI : public ScriptedAI
|
||||
|
||||
if (HandOfThaurissan_Timer <= diff)
|
||||
{
|
||||
if (Unit* target = SelectUnit(SELECT_TARGET_RANDOM,0))
|
||||
DoCast(target,SPELL_HANDOFTHAURISSAN);
|
||||
if (Unit *pTarget = SelectUnit(SELECT_TARGET_RANDOM,0))
|
||||
DoCast(pTarget,SPELL_HANDOFTHAURISSAN);
|
||||
|
||||
//3 Hands of Thaurissan will be casted
|
||||
//if (Counter < 3)
|
||||
@@ -83,7 +83,7 @@ struct TRINITY_DLL_DECL boss_draganthaurissanAI : public ScriptedAI
|
||||
HandOfThaurissan_Timer = 5000;
|
||||
//Counter=0;
|
||||
//}
|
||||
}else HandOfThaurissan_Timer -= diff;
|
||||
} else HandOfThaurissan_Timer -= diff;
|
||||
|
||||
//AvatarOfFlame_Timer
|
||||
if (AvatarOfFlame_Timer <= diff)
|
||||
|
||||
+4
-42
@@ -39,14 +39,6 @@ struct TRINITY_DLL_DECL boss_general_angerforgeAI : public ScriptedAI
|
||||
uint32 Cleave_Timer;
|
||||
uint32 Adds_Timer;
|
||||
bool Medics;
|
||||
int Rand1;
|
||||
int Rand1X;
|
||||
int Rand1Y;
|
||||
int Rand2;
|
||||
int Rand2X;
|
||||
int Rand2Y;
|
||||
Creature* SummonedAdds;
|
||||
Creature* SummonedMedics;
|
||||
|
||||
void Reset()
|
||||
{
|
||||
@@ -63,44 +55,14 @@ struct TRINITY_DLL_DECL boss_general_angerforgeAI : public ScriptedAI
|
||||
|
||||
void SummonAdds(Unit* victim)
|
||||
{
|
||||
Rand1 = rand()%15;
|
||||
switch (rand()%2)
|
||||
{
|
||||
case 0: Rand1X = 0 - Rand1; break;
|
||||
case 1: Rand1X = 0 + Rand1; break;
|
||||
}
|
||||
Rand1 = 0;
|
||||
Rand1 = rand()%15;
|
||||
switch (rand()%2)
|
||||
{
|
||||
case 0: Rand1Y = 0 - Rand1; break;
|
||||
case 1: Rand1Y = 0 + Rand1; break;
|
||||
}
|
||||
Rand1 = 0;
|
||||
SummonedAdds = DoSpawnCreature(8901, Rand1X, Rand1Y, 0, 0, TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN, 120000);
|
||||
if (SummonedAdds)
|
||||
(SummonedAdds->AI())->AttackStart(victim);
|
||||
if (Creature *SummonedAdd = DoSpawnCreature(8901, RAND(irand(0,-14),irand(0,14)), RAND(irand(0,-14),irand(0,14)), 0, 0, TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN, 120000))
|
||||
SummonedAdd->AI()->AttackStart(victim);
|
||||
}
|
||||
|
||||
void SummonMedics(Unit* victim)
|
||||
{
|
||||
Rand2 = rand()%10;
|
||||
switch (rand()%2)
|
||||
{
|
||||
case 0: Rand2X = 0 - Rand2; break;
|
||||
case 1: Rand2X = 0 + Rand2; break;
|
||||
}
|
||||
Rand2 = 0;
|
||||
Rand2 = rand()%10;
|
||||
switch (rand()%2)
|
||||
{
|
||||
case 0: Rand2Y = 0 - Rand2; break;
|
||||
case 1: Rand2Y = 0 + Rand2; break;
|
||||
}
|
||||
Rand2 = 0;
|
||||
SummonedMedics = DoSpawnCreature(8894, Rand2X, Rand2Y, 0, 0, TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN, 120000);
|
||||
if (SummonedMedics)
|
||||
(SummonedMedics->AI())->AttackStart(victim);
|
||||
if (Creature *SummonedMedic = DoSpawnCreature(8894, RAND(irand(0,-9),irand(0,9)), RAND(irand(0,-9),irand(0,9)), 0, 0, TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN, 120000))
|
||||
SummonedMedic->AI()->AttackStart(victim);
|
||||
}
|
||||
|
||||
void UpdateAI(const uint32 diff)
|
||||
|
||||
+2
-2
@@ -57,14 +57,14 @@ struct TRINITY_DLL_DECL boss_gorosh_the_dervishAI : public ScriptedAI
|
||||
{
|
||||
DoCast(m_creature,SPELL_WHIRLWIND);
|
||||
WhirlWind_Timer = 15000;
|
||||
}else WhirlWind_Timer -= diff;
|
||||
} else WhirlWind_Timer -= diff;
|
||||
|
||||
//MortalStrike_Timer
|
||||
if (MortalStrike_Timer <= diff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(),SPELL_MORTALSTRIKE);
|
||||
MortalStrike_Timer = 15000;
|
||||
}else MortalStrike_Timer -= diff;
|
||||
} else MortalStrike_Timer -= diff;
|
||||
|
||||
DoMeleeAttackIfReady();
|
||||
}
|
||||
|
||||
+4
-4
@@ -61,16 +61,16 @@ struct TRINITY_DLL_DECL boss_high_interrogator_gerstahnAI : public ScriptedAI
|
||||
//ShadowWordPain_Timer
|
||||
if (ShadowWordPain_Timer <= diff)
|
||||
{
|
||||
if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true))
|
||||
DoCast(target,SPELL_SHADOWWORDPAIN);
|
||||
if (Unit *pTarget = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true))
|
||||
DoCast(pTarget,SPELL_SHADOWWORDPAIN);
|
||||
ShadowWordPain_Timer = 7000;
|
||||
} else ShadowWordPain_Timer -= diff;
|
||||
|
||||
//ManaBurn_Timer
|
||||
if (ManaBurn_Timer <= diff)
|
||||
{
|
||||
if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true))
|
||||
DoCast(target,SPELL_MANABURN);
|
||||
if (Unit *pTarget = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true))
|
||||
DoCast(pTarget,SPELL_MANABURN);
|
||||
ManaBurn_Timer = 10000;
|
||||
} else ManaBurn_Timer -= diff;
|
||||
|
||||
|
||||
@@ -57,7 +57,7 @@ struct TRINITY_DLL_DECL boss_magmusAI : public ScriptedAI
|
||||
{
|
||||
DoCast(m_creature->getVictim(),SPELL_FIERYBURST);
|
||||
FieryBurst_Timer = 6000;
|
||||
}else FieryBurst_Timer -= diff;
|
||||
} else FieryBurst_Timer -= diff;
|
||||
|
||||
//WarStomp_Timer
|
||||
if (m_creature->GetHealth()*100 / m_creature->GetMaxHealth() < 51)
|
||||
@@ -66,7 +66,7 @@ struct TRINITY_DLL_DECL boss_magmusAI : public ScriptedAI
|
||||
{
|
||||
DoCast(m_creature->getVictim(),SPELL_WARSTOMP);
|
||||
WarStomp_Timer = 8000;
|
||||
}else WarStomp_Timer -= diff;
|
||||
} else WarStomp_Timer -= diff;
|
||||
}
|
||||
|
||||
DoMeleeAttackIfReady();
|
||||
|
||||
+3
-3
@@ -69,21 +69,21 @@ struct TRINITY_DLL_DECL boss_moira_bronzebeardAI : public ScriptedAI
|
||||
{
|
||||
DoCast(m_creature->getVictim(),SPELL_MINDBLAST);
|
||||
MindBlast_Timer = 14000;
|
||||
}else MindBlast_Timer -= diff;
|
||||
} else MindBlast_Timer -= diff;
|
||||
|
||||
//ShadowWordPain_Timer
|
||||
if (ShadowWordPain_Timer <= diff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(),SPELL_SHADOWWORDPAIN);
|
||||
ShadowWordPain_Timer = 18000;
|
||||
}else ShadowWordPain_Timer -= diff;
|
||||
} else ShadowWordPain_Timer -= diff;
|
||||
|
||||
//Smite_Timer
|
||||
if (Smite_Timer <= diff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(),SPELL_SMITE);
|
||||
Smite_Timer = 10000;
|
||||
}else Smite_Timer -= diff;
|
||||
} else Smite_Timer -= diff;
|
||||
|
||||
}
|
||||
};
|
||||
|
||||
+2
-2
@@ -170,8 +170,8 @@ struct TRINITY_DLL_DECL boss_doomrelAI : public ScriptedAI
|
||||
//Immolate_Timer
|
||||
if (Immolate_Timer <= diff)
|
||||
{
|
||||
if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true))
|
||||
DoCast(target,SPELL_IMMOLATE);
|
||||
if (Unit *pTarget = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true))
|
||||
DoCast(pTarget,SPELL_IMMOLATE);
|
||||
|
||||
Immolate_Timer = 25000;
|
||||
} else Immolate_Timer -= diff;
|
||||
|
||||
+3
-3
@@ -343,8 +343,8 @@ struct TRINITY_DLL_DECL instance_blackrock_depths : public ScriptedInstance
|
||||
{
|
||||
boss->setFaction(FACTION_HOSTILE);
|
||||
boss->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_OOC_NOT_ATTACKABLE);
|
||||
if (Unit* target = boss->SelectNearestTarget(500))
|
||||
boss->AI()->AttackStart(target);
|
||||
if (Unit *pTarget = boss->SelectNearestTarget(500))
|
||||
boss->AI()->AttackStart(pTarget);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -401,7 +401,7 @@ struct TRINITY_DLL_DECL instance_blackrock_depths : public ScriptedInstance
|
||||
TombTimer = TIMER_TOMBOFTHESEVEN;
|
||||
TombEventCounter++;
|
||||
TombOfSevenEvent();
|
||||
}else TombTimer -= diff;
|
||||
} else TombTimer -= diff;
|
||||
}
|
||||
if (GhostKillCount >= 7 && TombEventStarterGUID)
|
||||
TombOfSevenEnd();
|
||||
|
||||
@@ -85,9 +85,9 @@ struct TRINITY_DLL_DECL boss_gythAI : public ScriptedAI
|
||||
Unit* Summoned = m_creature->SummonCreature(creatureId, m_creature->GetPositionX(), m_creature->GetPositionY(), m_creature->GetPositionZ(), 0, TEMPSUMMON_TIMED_OR_DEAD_DESPAWN, 240000);
|
||||
if (Summoned)
|
||||
{
|
||||
Unit* target = SelectUnit(SELECT_TARGET_RANDOM, 0);
|
||||
if (target)
|
||||
Summoned->AddThreat(target, 1.0f);
|
||||
Unit *pTarget = SelectUnit(SELECT_TARGET_RANDOM, 0);
|
||||
if (pTarget)
|
||||
Summoned->AddThreat(pTarget, 1.0f);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+5
-8
@@ -99,15 +99,12 @@ struct TRINITY_DLL_DECL boss_overlordwyrmthalakAI : public ScriptedAI
|
||||
//Summon two Beserks
|
||||
if (!Summoned && m_creature->GetHealth()*100 / m_creature->GetMaxHealth() < 51)
|
||||
{
|
||||
Unit* target = NULL;
|
||||
target = SelectUnit(SELECT_TARGET_RANDOM,0);
|
||||
Unit *pTarget = SelectTarget(SELECT_TARGET_RANDOM,0, 100, true);
|
||||
|
||||
SummonedCreature = m_creature->SummonCreature(9216,ADD_1X,ADD_1Y,ADD_1Z,ADD_1O,TEMPSUMMON_TIMED_DESPAWN,300000);
|
||||
if (SummonedCreature)
|
||||
(SummonedCreature->AI())->AttackStart(target);
|
||||
SummonedCreature = m_creature->SummonCreature(9268,ADD_2X,ADD_2Y,ADD_2Z,ADD_2O,TEMPSUMMON_TIMED_DESPAWN,300000);
|
||||
if (SummonedCreature)
|
||||
(SummonedCreature->AI())->AttackStart(target);
|
||||
if (SummonedCreature = m_creature->SummonCreature(9216,ADD_1X,ADD_1Y,ADD_1Z,ADD_1O,TEMPSUMMON_TIMED_DESPAWN,300000))
|
||||
SummonedCreature->AI()->AttackStart(pTarget);
|
||||
if (SummonedCreature = m_creature->SummonCreature(9268,ADD_2X,ADD_2Y,ADD_2Z,ADD_2O,TEMPSUMMON_TIMED_DESPAWN,300000))
|
||||
SummonedCreature->AI()->AttackStart(pTarget);
|
||||
Summoned = true;
|
||||
}
|
||||
|
||||
|
||||
+2
-2
@@ -69,8 +69,8 @@ struct TRINITY_DLL_DECL boss_pyroguard_emberseerAI : public ScriptedAI
|
||||
//PyroBlast_Timer
|
||||
if (PyroBlast_Timer <= diff)
|
||||
{
|
||||
if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true))
|
||||
DoCast(target,SPELL_PYROBLAST);
|
||||
if (Unit *pTarget = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true))
|
||||
DoCast(pTarget,SPELL_PYROBLAST);
|
||||
PyroBlast_Timer = 15000;
|
||||
} else PyroBlast_Timer -= diff;
|
||||
|
||||
|
||||
+3
-3
@@ -59,13 +59,13 @@ struct TRINITY_DLL_DECL boss_shadowvoshAI : public ScriptedAI
|
||||
{
|
||||
DoCast(m_creature->getVictim(),SPELL_CURSEOFBLOOD);
|
||||
CurseOfBlood_Timer = 45000;
|
||||
}else CurseOfBlood_Timer -= diff;
|
||||
} else CurseOfBlood_Timer -= diff;
|
||||
|
||||
//Hex_Timer
|
||||
if (Hex_Timer <= diff)
|
||||
{
|
||||
if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true))
|
||||
DoCast(target,SPELL_HEX);
|
||||
if (Unit *pTarget = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true))
|
||||
DoCast(pTarget,SPELL_HEX);
|
||||
Hex_Timer = 15000;
|
||||
} else Hex_Timer -= diff;
|
||||
|
||||
|
||||
@@ -62,8 +62,8 @@ struct TRINITY_DLL_DECL boss_thebeastAI : public ScriptedAI
|
||||
//Immolate_Timer
|
||||
if (Immolate_Timer <= diff)
|
||||
{
|
||||
if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true))
|
||||
DoCast(target,SPELL_IMMOLATE);
|
||||
if (Unit *pTarget = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true))
|
||||
DoCast(pTarget,SPELL_IMMOLATE);
|
||||
Immolate_Timer = 8000;
|
||||
} else Immolate_Timer -= diff;
|
||||
|
||||
|
||||
@@ -62,8 +62,7 @@ struct TRINITY_DLL_DECL boss_chromaggusAI : public ScriptedAI
|
||||
//5 possiblities for the first breath, 4 for the second, 20 total possiblites
|
||||
//This way we don't end up casting 2 of the same breath
|
||||
//TL TL would be stupid
|
||||
srand(time(NULL));
|
||||
switch (rand()%20)
|
||||
switch (urand(0,19))
|
||||
{
|
||||
//B1 - Incin
|
||||
case 0:
|
||||
@@ -240,15 +239,15 @@ struct TRINITY_DLL_DECL boss_chromaggusAI : public ScriptedAI
|
||||
//Cast affliction
|
||||
DoCast(pUnit, SpellAfflict, true);
|
||||
|
||||
//Chromatic mutation if target is effected by all afflictions
|
||||
//Chromatic mutation if pTarget is effected by all afflictions
|
||||
if (pUnit->HasAura(SPELL_BROODAF_BLUE)
|
||||
&& pUnit->HasAura(SPELL_BROODAF_BLACK)
|
||||
&& pUnit->HasAura(SPELL_BROODAF_RED)
|
||||
&& pUnit->HasAura(SPELL_BROODAF_BRONZE)
|
||||
&& pUnit->HasAura(SPELL_BROODAF_GREEN))
|
||||
{
|
||||
//target->RemoveAllAuras();
|
||||
//DoCast(target,SPELL_CHROMATIC_MUT_1);
|
||||
//pTarget->RemoveAllAuras();
|
||||
//DoCast(pTarget,SPELL_CHROMATIC_MUT_1);
|
||||
|
||||
//Chromatic mutation is causing issues
|
||||
//Assuming it is caused by a lack of core support for Charm
|
||||
|
||||
@@ -76,7 +76,7 @@ struct TRINITY_DLL_DECL boss_flamegorAI : public ScriptedAI
|
||||
{
|
||||
DoScriptText(EMOTE_FRENZY, m_creature);
|
||||
DoCast(m_creature,SPELL_FRENZY);
|
||||
Frenzy_Timer = 8000 + (rand()%2000);
|
||||
Frenzy_Timer = urand(8000, 10000);
|
||||
} else Frenzy_Timer -= diff;
|
||||
|
||||
DoMeleeAttackIfReady();
|
||||
|
||||
@@ -203,7 +203,7 @@ struct TRINITY_DLL_DECL boss_nefarianAI : public ScriptedAI
|
||||
}
|
||||
|
||||
ClassCall_Timer = 35000 + (rand() % 5000);
|
||||
}else ClassCall_Timer -= diff;
|
||||
} else ClassCall_Timer -= diff;
|
||||
|
||||
//Phase3 begins when we are below X health
|
||||
if (!Phase3 && (m_creature->GetHealth()*100 / m_creature->GetMaxHealth()) < 20)
|
||||
|
||||
@@ -102,8 +102,8 @@ struct TRINITY_DLL_DECL boss_razorgoreAI : public ScriptedAI
|
||||
|
||||
// Aura Check. If the gamer is affected by confliguration we attack a random gamer.
|
||||
if (m_creature->getVictim() && m_creature->getVictim()->HasAura(SPELL_CONFLAGRATION))
|
||||
if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 1, 100, true))
|
||||
m_creature->TauntApply(target);
|
||||
if (Unit *pTarget = SelectTarget(SELECT_TARGET_RANDOM, 1, 100, true))
|
||||
m_creature->TauntApply(pTarget);
|
||||
|
||||
DoMeleeAttackIfReady();
|
||||
}
|
||||
|
||||
@@ -74,10 +74,10 @@ struct TRINITY_DLL_DECL boss_vaelAI : public ScriptedAI
|
||||
DoingSpeech = false;
|
||||
}
|
||||
|
||||
void BeginSpeech(Unit* target)
|
||||
void BeginSpeech(Unit *pTarget)
|
||||
{
|
||||
//Stand up and begin speach
|
||||
PlayerGUID = target->GetGUID();
|
||||
PlayerGUID = pTarget->GetGUID();
|
||||
|
||||
//10 seconds
|
||||
DoScriptText(SAY_LINE1, m_creature);
|
||||
@@ -167,18 +167,18 @@ struct TRINITY_DLL_DECL boss_vaelAI : public ScriptedAI
|
||||
//BurningAdrenalineCaster_Timer
|
||||
if (BurningAdrenalineCaster_Timer <= diff)
|
||||
{
|
||||
Unit* target = NULL;
|
||||
Unit *pTarget = NULL;
|
||||
|
||||
uint8 i = 0;
|
||||
while (i < 3) // max 3 tries to get a random target with power_mana
|
||||
while (i < 3) // max 3 tries to get a random pTarget with power_mana
|
||||
{
|
||||
++i;
|
||||
if (target = SelectTarget(SELECT_TARGET_RANDOM, 1, 100, true)) //not aggro leader
|
||||
if (target->getPowerType() == POWER_MANA)
|
||||
if (pTarget = SelectTarget(SELECT_TARGET_RANDOM, 1, 100, true)) //not aggro leader
|
||||
if (pTarget->getPowerType() == POWER_MANA)
|
||||
i = 3;
|
||||
}
|
||||
if (target) // cast on self (see below)
|
||||
target->CastSpell(target,SPELL_BURNINGADRENALINE,1);
|
||||
if (pTarget) // cast on self (see below)
|
||||
pTarget->CastSpell(pTarget,SPELL_BURNINGADRENALINE,1);
|
||||
|
||||
BurningAdrenalineCaster_Timer = 15000;
|
||||
} else BurningAdrenalineCaster_Timer -= diff;
|
||||
|
||||
+18
-19
@@ -72,8 +72,7 @@ struct TRINITY_DLL_DECL boss_victor_nefariusAI : public ScriptedAI
|
||||
boss_victor_nefariusAI(Creature *c) : ScriptedAI(c)
|
||||
{
|
||||
NefarianGUID = 0;
|
||||
srand(time(NULL));
|
||||
switch (rand()%20)
|
||||
switch (urand(0,19))
|
||||
{
|
||||
case 0:
|
||||
DrakType1 = CREATURE_BRONZE_DRAKANOID;
|
||||
@@ -184,7 +183,7 @@ struct TRINITY_DLL_DECL boss_victor_nefariusAI : public ScriptedAI
|
||||
m_creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
||||
}
|
||||
|
||||
void BeginEvent(Player* target)
|
||||
void BeginEvent(Player *pTarget)
|
||||
{
|
||||
DoScriptText(SAY_GAMESBEGIN_2, m_creature);
|
||||
|
||||
@@ -200,7 +199,7 @@ struct TRINITY_DLL_DECL boss_victor_nefariusAI : public ScriptedAI
|
||||
m_creature->SetUInt32Value(UNIT_NPC_FLAGS,0);
|
||||
m_creature->setFaction(103);
|
||||
m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
||||
AttackStart(target);
|
||||
AttackStart(pTarget);
|
||||
}
|
||||
|
||||
void EnterCombat(Unit *who)
|
||||
@@ -214,7 +213,7 @@ struct TRINITY_DLL_DECL boss_victor_nefariusAI : public ScriptedAI
|
||||
if (who && who->GetTypeId() == TYPEID_PLAYER && m_creature->IsHostileTo(who))
|
||||
{
|
||||
//Add them to our threat list
|
||||
m_creature->AddThreat(who,0.0f);
|
||||
m_creature->AddThreat(who, 0.0f);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -229,8 +228,8 @@ struct TRINITY_DLL_DECL boss_victor_nefariusAI : public ScriptedAI
|
||||
//ShadowBoltTimer
|
||||
if (ShadowBoltTimer <= diff)
|
||||
{
|
||||
if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true))
|
||||
DoCast(target,SPELL_SHADOWBOLT);
|
||||
if (Unit *pTarget = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true))
|
||||
DoCast(pTarget, SPELL_SHADOWBOLT);
|
||||
|
||||
ShadowBoltTimer = urand(3000,10000);
|
||||
} else ShadowBoltTimer -= diff;
|
||||
@@ -238,8 +237,8 @@ struct TRINITY_DLL_DECL boss_victor_nefariusAI : public ScriptedAI
|
||||
//FearTimer
|
||||
if (FearTimer <= diff)
|
||||
{
|
||||
if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true))
|
||||
DoCast(target,SPELL_FEAR);
|
||||
if (Unit *pTarget = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true))
|
||||
DoCast(pTarget, SPELL_FEAR);
|
||||
|
||||
FearTimer = 10000 + (rand()%10000);
|
||||
} else FearTimer -= diff;
|
||||
@@ -250,7 +249,7 @@ struct TRINITY_DLL_DECL boss_victor_nefariusAI : public ScriptedAI
|
||||
//Spawn 2 random types of creatures at the 2 locations
|
||||
uint32 CreatureID;
|
||||
Creature* Spawned = NULL;
|
||||
Unit* target = NULL;
|
||||
Unit *pTarget = NULL;
|
||||
|
||||
//1 in 3 chance it will be a chromatic
|
||||
if (urand(0,2) == 0)
|
||||
@@ -262,10 +261,10 @@ struct TRINITY_DLL_DECL boss_victor_nefariusAI : public ScriptedAI
|
||||
|
||||
//Spawn Creature and force it to start attacking a random target
|
||||
Spawned = m_creature->SummonCreature(CreatureID,ADD_X1,ADD_Y1,ADD_Z1,5.000,TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT,5000);
|
||||
target = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true);
|
||||
if (target && Spawned)
|
||||
pTarget = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true);
|
||||
if (pTarget && Spawned)
|
||||
{
|
||||
Spawned->AI()->AttackStart(target);
|
||||
Spawned->AI()->AttackStart(pTarget);
|
||||
Spawned->setFaction(103);
|
||||
}
|
||||
|
||||
@@ -278,10 +277,10 @@ struct TRINITY_DLL_DECL boss_victor_nefariusAI : public ScriptedAI
|
||||
++SpawnedAdds;
|
||||
|
||||
Spawned = m_creature->SummonCreature(CreatureID,ADD_X2,ADD_Y2,ADD_Z2,5.000,TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT,5000);
|
||||
target = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true);
|
||||
if (target && Spawned)
|
||||
pTarget = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true);
|
||||
if (pTarget && Spawned)
|
||||
{
|
||||
Spawned->AI()->AttackStart(target);
|
||||
Spawned->AI()->AttackStart(pTarget);
|
||||
Spawned->setFaction(103);
|
||||
}
|
||||
|
||||
@@ -306,10 +305,10 @@ struct TRINITY_DLL_DECL boss_victor_nefariusAI : public ScriptedAI
|
||||
|
||||
//Spawn nef and have him attack a random target
|
||||
Creature* Nefarian = m_creature->SummonCreature(CREATURE_NEFARIAN,NEF_X,NEF_Y,NEF_Z,0,TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT,120000);
|
||||
target = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true);
|
||||
if (target && Nefarian)
|
||||
pTarget = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true);
|
||||
if (pTarget && Nefarian)
|
||||
{
|
||||
Nefarian->AI()->AttackStart(target);
|
||||
Nefarian->AI()->AttackStart(pTarget);
|
||||
Nefarian->setFaction(103);
|
||||
NefarianGUID = Nefarian->GetGUID();
|
||||
}
|
||||
|
||||
@@ -42,10 +42,6 @@ struct TRINITY_DLL_DECL boss_kruulAI : public ScriptedAI
|
||||
uint32 VoidBolt_Timer;
|
||||
uint32 Rage_Timer;
|
||||
uint32 Hound_Timer;
|
||||
int Rand;
|
||||
int RandX;
|
||||
int RandY;
|
||||
Creature* Summoned;
|
||||
|
||||
void Reset()
|
||||
{
|
||||
@@ -66,28 +62,12 @@ struct TRINITY_DLL_DECL boss_kruulAI : public ScriptedAI
|
||||
{
|
||||
// When a player, pet or totem gets killed, Lord Kazzak casts this spell to instantly regenerate 70,000 health.
|
||||
DoCast(m_creature,SPELL_CAPTURESOUL);
|
||||
|
||||
}
|
||||
|
||||
void SummonHounds(Unit* victim)
|
||||
void SummonHounds(Unit* pVictim)
|
||||
{
|
||||
Rand = rand()%10;
|
||||
switch (rand()%2)
|
||||
{
|
||||
case 0: RandX = 0 - Rand; break;
|
||||
case 1: RandX = 0 + Rand; break;
|
||||
}
|
||||
Rand = 0;
|
||||
Rand = rand()%10;
|
||||
switch (rand()%2)
|
||||
{
|
||||
case 0: RandY = 0 - Rand; break;
|
||||
case 1: RandY = 0 + Rand; break;
|
||||
}
|
||||
Rand = 0;
|
||||
Summoned = DoSpawnCreature(19207, RandX, RandY, 0, 0, TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN, 300000);
|
||||
if (Summoned)
|
||||
(Summoned->AI())->AttackStart(victim);
|
||||
if (Creature *Hound = DoSpawnCreature(19207, RAND(irand(0,-9),irand(0,9)), RAND(irand(0,-9),irand(0,9)), 0, 0, TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN, 300000))
|
||||
Hound->AI()->AttackStart(pVictim);
|
||||
}
|
||||
|
||||
void UpdateAI(const uint32 diff)
|
||||
@@ -97,72 +77,64 @@ struct TRINITY_DLL_DECL boss_kruulAI : public ScriptedAI
|
||||
return;
|
||||
|
||||
//ShadowVolley_Timer
|
||||
if (ShadowVolley_Timer < diff)
|
||||
if (ShadowVolley_Timer <= diff)
|
||||
{
|
||||
if (rand()%100 < 46)
|
||||
{
|
||||
if (urand(0,99) < 45)
|
||||
DoCast(m_creature->getVictim(),SPELL_SHADOWVOLLEY);
|
||||
}
|
||||
|
||||
ShadowVolley_Timer = 5000;
|
||||
}else ShadowVolley_Timer -= diff;
|
||||
} else ShadowVolley_Timer -= diff;
|
||||
|
||||
//Cleave_Timer
|
||||
if (Cleave_Timer < diff)
|
||||
if (Cleave_Timer <= diff)
|
||||
{
|
||||
if (rand()%100 < 50)
|
||||
{
|
||||
if (urand(0,1))
|
||||
DoCast(m_creature->getVictim(),SPELL_CLEAVE);
|
||||
}
|
||||
|
||||
Cleave_Timer = 10000;
|
||||
}else Cleave_Timer -= diff;
|
||||
} else Cleave_Timer -= diff;
|
||||
|
||||
//ThunderClap_Timer
|
||||
if (ThunderClap_Timer < diff)
|
||||
if (ThunderClap_Timer <= diff)
|
||||
{
|
||||
if (rand()%100 < 20)
|
||||
{
|
||||
if (urand(0,9) < 2)
|
||||
DoCast(m_creature->getVictim(),SPELL_THUNDERCLAP);
|
||||
}
|
||||
|
||||
ThunderClap_Timer = 12000;
|
||||
}else ThunderClap_Timer -= diff;
|
||||
} else ThunderClap_Timer -= diff;
|
||||
|
||||
//TwistedReflection_Timer
|
||||
if (TwistedReflection_Timer < diff)
|
||||
if (TwistedReflection_Timer <= diff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(),SPELL_TWISTEDREFLECTION);
|
||||
TwistedReflection_Timer = 30000;
|
||||
}else TwistedReflection_Timer -= diff;
|
||||
} else TwistedReflection_Timer -= diff;
|
||||
|
||||
//VoidBolt_Timer
|
||||
if (VoidBolt_Timer < diff)
|
||||
if (VoidBolt_Timer <= diff)
|
||||
{
|
||||
if (rand()%100 < 40)
|
||||
{
|
||||
if (urand(0,9) < 4)
|
||||
DoCast(m_creature->getVictim(),SPELL_VOIDBOLT);
|
||||
}
|
||||
|
||||
VoidBolt_Timer = 18000;
|
||||
}else VoidBolt_Timer -= diff;
|
||||
} else VoidBolt_Timer -= diff;
|
||||
|
||||
//Rage_Timer
|
||||
if (Rage_Timer < diff)
|
||||
if (Rage_Timer <= diff)
|
||||
{
|
||||
DoCast(m_creature,SPELL_RAGE);
|
||||
Rage_Timer = 70000;
|
||||
}else Rage_Timer -= diff;
|
||||
} else Rage_Timer -= diff;
|
||||
|
||||
//Hound_Timer
|
||||
if (Hound_Timer < diff)
|
||||
if (Hound_Timer <= diff)
|
||||
{
|
||||
SummonHounds(m_creature->getVictim());
|
||||
SummonHounds(m_creature->getVictim());
|
||||
SummonHounds(m_creature->getVictim());
|
||||
|
||||
Hound_Timer = 45000;
|
||||
}else Hound_Timer -= diff;
|
||||
} else Hound_Timer -= diff;
|
||||
|
||||
DoMeleeAttackIfReady();
|
||||
}
|
||||
|
||||
@@ -29,7 +29,7 @@ EndScriptData */
|
||||
# item_Defias_Gunpowder
|
||||
#####*/
|
||||
|
||||
bool ItemUse_item_defias_gunpowder(Player* pPlayer, Item* _Item, SpellCastTargets const& targets)
|
||||
bool ItemUse_item_defias_gunpowder(Player* pPlayer, Item* pItem, SpellCastTargets const& targets)
|
||||
{
|
||||
ScriptedInstance *pInstance = pPlayer->GetInstanceData();
|
||||
|
||||
@@ -46,7 +46,7 @@ bool ItemUse_item_defias_gunpowder(Player* pPlayer, Item* _Item, SpellCastTarget
|
||||
pInstance->SetData(EVENT_STATE, CANNON_GUNPOWDER_USED);
|
||||
}
|
||||
|
||||
pPlayer->DestroyItemCount(_Item->GetEntry(), 1, true);
|
||||
pPlayer->DestroyItemCount(pItem->GetEntry(), 1, true);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
@@ -62,7 +62,7 @@ struct TRINITY_DLL_DECL npc_narm_faulkAI : public ScriptedAI
|
||||
{
|
||||
if (m_creature->IsStandState())
|
||||
{
|
||||
if (lifeTimer < diff)
|
||||
if (lifeTimer <= diff)
|
||||
{
|
||||
EnterEvadeMode();
|
||||
return;
|
||||
|
||||
@@ -92,12 +92,12 @@ struct TRINITY_DLL_DECL boss_twilight_corrupterAI : public ScriptedAI
|
||||
{
|
||||
if(!UpdateVictim())
|
||||
return;
|
||||
if(SoulCorruption_Timer < diff)
|
||||
if (SoulCorruption_Timer <= diff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(),SPELL_SOUL_CORRUPTION);
|
||||
SoulCorruption_Timer = rand()%4000+15000; //gotta confirm Timers
|
||||
} else SoulCorruption_Timer-=diff;
|
||||
if(CreatureOfNightmare_Timer < diff)
|
||||
if (CreatureOfNightmare_Timer <= diff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(),SPELL_SOUL_CORRUPTION);
|
||||
CreatureOfNightmare_Timer = 45000; //gotta confirm Timers
|
||||
|
||||
@@ -61,7 +61,7 @@ struct TRINITY_DLL_DECL npc_henze_faulkAI : public ScriptedAI
|
||||
{
|
||||
if (m_creature->IsStandState())
|
||||
{
|
||||
if (lifeTimer < diff)
|
||||
if (lifeTimer <= diff)
|
||||
{
|
||||
EnterEvadeMode();
|
||||
return;
|
||||
|
||||
@@ -227,16 +227,16 @@ struct TRINITY_DLL_DECL npc_secondTrialAI : public ScriptedAI
|
||||
void UpdateAI(const uint32 diff)
|
||||
{
|
||||
if (questPhase == 1)
|
||||
if (timer < diff)
|
||||
if (timer <= diff)
|
||||
{
|
||||
m_creature->SetUInt32Value(UNIT_FIELD_BYTES_1, UNIT_STAND_STATE_STAND);
|
||||
m_creature->setFaction(FACTION_HOSTILE);
|
||||
questPhase = 0;
|
||||
|
||||
if (Unit *target = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true))
|
||||
if (Unit *pTarget = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true))
|
||||
{
|
||||
m_creature->AddThreat(target, 5000000.0f);
|
||||
AttackStart(target);
|
||||
m_creature->AddThreat(pTarget, 5000000.0f);
|
||||
AttackStart(pTarget);
|
||||
}
|
||||
}
|
||||
else
|
||||
@@ -248,7 +248,7 @@ struct TRINITY_DLL_DECL npc_secondTrialAI : public ScriptedAI
|
||||
// healer
|
||||
if (spellFlashLight)
|
||||
if (m_creature->GetHealth()*100 / m_creature->GetMaxHealth() < 70)
|
||||
if (timerFlashLight < diff)
|
||||
if (timerFlashLight <= diff)
|
||||
{
|
||||
DoCast(m_creature, SPELL_FLASH_OF_LIGHT);
|
||||
timerFlashLight = TIMER_FLASH_OF_LIGHT + rand()%TIMER_FLASH_OF_LIGHT;
|
||||
@@ -257,7 +257,7 @@ struct TRINITY_DLL_DECL npc_secondTrialAI : public ScriptedAI
|
||||
timerFlashLight -= diff;
|
||||
|
||||
if (spellJustice)
|
||||
if (timerJustice < diff)
|
||||
if (timerJustice <= diff)
|
||||
{
|
||||
DoCast(m_creature, SPELL_SEAL_OF_JUSTICE);
|
||||
timerJustice = TIMER_SEAL_OF_JUSTICE + rand()%TIMER_SEAL_OF_JUSTICE;
|
||||
@@ -266,7 +266,7 @@ struct TRINITY_DLL_DECL npc_secondTrialAI : public ScriptedAI
|
||||
timerJustice -= diff;
|
||||
|
||||
if (spellJudLight)
|
||||
if (timerJudLight < diff)
|
||||
if (timerJudLight <= diff)
|
||||
{
|
||||
DoCast(m_creature, SPELL_JUDGEMENT_OF_LIGHT);
|
||||
timerJudLight = TIMER_JUDGEMENT_OF_LIGHT + rand()%TIMER_JUDGEMENT_OF_LIGHT;
|
||||
@@ -275,7 +275,7 @@ struct TRINITY_DLL_DECL npc_secondTrialAI : public ScriptedAI
|
||||
timerJudLight -= diff;
|
||||
|
||||
if (spellCommand)
|
||||
if (timerCommand < diff)
|
||||
if (timerCommand <= diff)
|
||||
{
|
||||
DoCast(m_creature, TIMER_SEAL_OF_COMMAND);
|
||||
timerCommand = TIMER_SEAL_OF_COMMAND + rand()%TIMER_SEAL_OF_COMMAND;
|
||||
@@ -321,7 +321,7 @@ struct TRINITY_DLL_DECL master_kelerun_bloodmournAI : public ScriptedAI
|
||||
// Quest accepted but object not activated, object despawned (if in sync 1 minute!)
|
||||
if (questPhase == 1)
|
||||
{
|
||||
if (timer < diff)
|
||||
if (timer <= diff)
|
||||
Reset();
|
||||
else
|
||||
timer -= diff;
|
||||
@@ -329,7 +329,7 @@ struct TRINITY_DLL_DECL master_kelerun_bloodmournAI : public ScriptedAI
|
||||
// fight the 4 paladin mobs phase
|
||||
else if (questPhase == 2)
|
||||
{
|
||||
if (timer < diff)
|
||||
if (timer <= diff)
|
||||
{
|
||||
if (Creature* paladinSpawn = Unit::GetCreature((*m_creature), paladinGuid[paladinPhase]))
|
||||
{
|
||||
@@ -658,7 +658,7 @@ struct TRINITY_DLL_DECL npc_infused_crystalAI : public Scripted_NoMovementAI
|
||||
m_creature->SummonCreature(MOB_ENRAGED_WRAITH, SpawnLocations[ran2].x, SpawnLocations[ran2].y, SpawnLocations[ran2].z, 0, TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN, 10000);
|
||||
m_creature->SummonCreature(MOB_ENRAGED_WRAITH, SpawnLocations[ran3].x, SpawnLocations[ran3].y, SpawnLocations[ran3].z, 0, TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN, 10000);
|
||||
WaveTimer = 30000;
|
||||
}else WaveTimer -= diff;
|
||||
} else WaveTimer -= diff;
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@@ -126,7 +126,7 @@ bool GOHello_gilded_brazier(Player* pPlayer, GameObject* pGo)
|
||||
{
|
||||
Creature *Stillblade = pPlayer->SummonCreature(17716, 8106.11, -7542.06, 151.775, 3.02598, TEMPSUMMON_DEAD_DESPAWN, 60000);
|
||||
if (Stillblade)
|
||||
(Stillblade->AI())->AttackStart(pPlayer);
|
||||
Stillblade->AI()->AttackStart(pPlayer);
|
||||
}
|
||||
return true;
|
||||
};
|
||||
|
||||
@@ -279,7 +279,7 @@ struct TRINITY_DLL_DECL npc_rinjiAI : public npc_escortAI
|
||||
{
|
||||
if (HasEscortState(STATE_ESCORT_ESCORTING) && m_uiPostEventCount)
|
||||
{
|
||||
if (m_uiPostEventTimer < uiDiff)
|
||||
if (m_uiPostEventTimer <= uiDiff)
|
||||
{
|
||||
m_uiPostEventTimer = 3000;
|
||||
|
||||
|
||||
@@ -71,7 +71,7 @@ struct TRINITY_DLL_DECL npc_converted_sentryAI : public ScriptedAI
|
||||
if (m_creature->isPet())
|
||||
CAST_PET(m_creature)->SetDuration(7500);
|
||||
Credit = true;
|
||||
}else Timer -= diff;
|
||||
} else Timer -= diff;
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
@@ -103,7 +103,7 @@ struct TRINITY_DLL_DECL boss_curatorAI : public ScriptedAI
|
||||
|
||||
//don't know if he's supposed to do summon/evocate after hard enrage (probably not)
|
||||
Enraged = true;
|
||||
}else BerserkTimer -= diff;
|
||||
} else BerserkTimer -= diff;
|
||||
|
||||
if (Evocating)
|
||||
{
|
||||
@@ -120,13 +120,13 @@ struct TRINITY_DLL_DECL boss_curatorAI : public ScriptedAI
|
||||
{
|
||||
//Summon Astral Flare
|
||||
Creature* AstralFlare = DoSpawnCreature(17096, rand()%37, rand()%37, 0, 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 5000);
|
||||
Unit* target = NULL;
|
||||
target = SelectUnit(SELECT_TARGET_RANDOM, 0);
|
||||
Unit *pTarget = NULL;
|
||||
pTarget = SelectUnit(SELECT_TARGET_RANDOM, 0);
|
||||
|
||||
if (AstralFlare && target)
|
||||
if (AstralFlare && pTarget)
|
||||
{
|
||||
AstralFlare->CastSpell(AstralFlare, SPELL_ASTRAL_FLARE_PASSIVE, false);
|
||||
AstralFlare->AI()->AttackStart(target);
|
||||
AstralFlare->AI()->AttackStart(pTarget);
|
||||
}
|
||||
|
||||
//Reduce Mana by 10% of max health
|
||||
@@ -155,7 +155,7 @@ struct TRINITY_DLL_DECL boss_curatorAI : public ScriptedAI
|
||||
}
|
||||
|
||||
AddTimer = 10000;
|
||||
}else AddTimer -= diff;
|
||||
} else AddTimer -= diff;
|
||||
|
||||
if (m_creature->GetHealth()*100 / m_creature->GetMaxHealth() <= 15)
|
||||
{
|
||||
@@ -172,8 +172,8 @@ struct TRINITY_DLL_DECL boss_curatorAI : public ScriptedAI
|
||||
else
|
||||
HatefulBoltTimer = 15000;
|
||||
|
||||
if (Unit* target = SelectUnit(SELECT_TARGET_TOPAGGRO, 1))
|
||||
DoCast(target, SPELL_HATEFUL_BOLT);
|
||||
if (Unit *pTarget = SelectUnit(SELECT_TARGET_TOPAGGRO, 1))
|
||||
DoCast(pTarget, SPELL_HATEFUL_BOLT);
|
||||
|
||||
} else HatefulBoltTimer -= diff;
|
||||
|
||||
|
||||
@@ -103,16 +103,16 @@ struct TRINITY_DLL_DECL boss_maiden_of_virtueAI : public ScriptedAI
|
||||
|
||||
if (Holyfire_Timer <= diff)
|
||||
{
|
||||
if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true))
|
||||
DoCast(target,SPELL_HOLYFIRE);
|
||||
if (Unit *pTarget = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true))
|
||||
DoCast(pTarget,SPELL_HOLYFIRE);
|
||||
|
||||
Holyfire_Timer = urand(8000,23000); //Anywhere from 8 to 23 seconds, good luck having several of those in a row!
|
||||
} else Holyfire_Timer -= diff;
|
||||
|
||||
if (Holywrath_Timer <= diff)
|
||||
{
|
||||
if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true))
|
||||
DoCast(target,SPELL_HOLYWRATH);
|
||||
if (Unit *pTarget = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true))
|
||||
DoCast(pTarget,SPELL_HOLYWRATH);
|
||||
|
||||
Holywrath_Timer = urand(20000,25000); //20-30 secs sounds nice
|
||||
} else Holywrath_Timer -= diff;
|
||||
|
||||
@@ -243,20 +243,20 @@ struct TRINITY_DLL_DECL boss_attumenAI : public ScriptedAI
|
||||
{
|
||||
if (ChargeTimer <= diff)
|
||||
{
|
||||
Unit *target;
|
||||
Unit *pTarget;
|
||||
std::list<HostilReference *> t_list = m_creature->getThreatManager().getThreatList();
|
||||
std::vector<Unit *> target_list;
|
||||
for (std::list<HostilReference *>::iterator itr = t_list.begin(); itr!= t_list.end(); ++itr)
|
||||
{
|
||||
target = Unit::GetUnit(*m_creature, (*itr)->getUnitGuid());
|
||||
if (target && !target->IsWithinDist(m_creature, ATTACK_DISTANCE, false))
|
||||
target_list.push_back(target);
|
||||
target = NULL;
|
||||
pTarget = Unit::GetUnit(*m_creature, (*itr)->getUnitGuid());
|
||||
if (pTarget && !pTarget->IsWithinDist(m_creature, ATTACK_DISTANCE, false))
|
||||
target_list.push_back(pTarget);
|
||||
pTarget = NULL;
|
||||
}
|
||||
if (target_list.size())
|
||||
target = *(target_list.begin()+rand()%target_list.size());
|
||||
pTarget = *(target_list.begin()+rand()%target_list.size());
|
||||
|
||||
DoCast(target, SPELL_BERSERKER_CHARGE);
|
||||
DoCast(pTarget, SPELL_BERSERKER_CHARGE);
|
||||
ChargeTimer = 20000;
|
||||
} else ChargeTimer -= diff;
|
||||
}
|
||||
|
||||
@@ -271,12 +271,12 @@ struct TRINITY_DLL_DECL boss_moroesAI : public ScriptedAI
|
||||
|
||||
if (Blind_Timer <= diff)
|
||||
{
|
||||
Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, m_creature->GetMeleeReach()*5, true);
|
||||
if (target && m_creature->IsWithinMeleeRange(target))
|
||||
Unit *pTarget = SelectTarget(SELECT_TARGET_RANDOM, 0, m_creature->GetMeleeReach()*5, true);
|
||||
if (pTarget && m_creature->IsWithinMeleeRange(pTarget))
|
||||
{
|
||||
DoCast(target, SPELL_BLIND);
|
||||
DoCast(pTarget, SPELL_BLIND);
|
||||
Blind_Timer = 40000;
|
||||
} else Blind_Timer = 1000 + diff; // if target is out of melee range, wait a bit.
|
||||
} else Blind_Timer = 1000 + diff; // if pTarget is out of melee range, wait a bit.
|
||||
} else Blind_Timer -= diff;
|
||||
}
|
||||
|
||||
@@ -286,8 +286,8 @@ struct TRINITY_DLL_DECL boss_moroesAI : public ScriptedAI
|
||||
{
|
||||
DoScriptText(RAND(SAY_SPECIAL_1,SAY_SPECIAL_2), m_creature);
|
||||
|
||||
if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true))
|
||||
target->CastSpell(target, SPELL_GARROTE,true);
|
||||
if (Unit *pTarget = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true))
|
||||
pTarget->CastSpell(pTarget, SPELL_GARROTE,true);
|
||||
|
||||
InVanish = false;
|
||||
} else Wait_Timer -= diff;
|
||||
@@ -398,17 +398,17 @@ struct TRINITY_DLL_DECL boss_baroness_dorothea_millstipeAI : public boss_moroes_
|
||||
|
||||
if (ManaBurn_Timer <= diff)
|
||||
{
|
||||
if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true))
|
||||
if (target->getPowerType() == POWER_MANA)
|
||||
DoCast(target,SPELL_MANABURN);
|
||||
if (Unit *pTarget = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true))
|
||||
if (pTarget->getPowerType() == POWER_MANA)
|
||||
DoCast(pTarget,SPELL_MANABURN);
|
||||
ManaBurn_Timer = 5000; // 3 sec cast
|
||||
} else ManaBurn_Timer -= diff;
|
||||
|
||||
if (ShadowWordPain_Timer <= diff)
|
||||
{
|
||||
if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true))
|
||||
if (Unit *pTarget = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true))
|
||||
{
|
||||
DoCast(target,SPELL_SWPAIN);
|
||||
DoCast(pTarget,SPELL_SWPAIN);
|
||||
ShadowWordPain_Timer = 7000;
|
||||
}
|
||||
} else ShadowWordPain_Timer -= diff;
|
||||
@@ -507,9 +507,9 @@ struct TRINITY_DLL_DECL boss_lady_catriona_von_indiAI : public boss_moroes_guest
|
||||
|
||||
if (GreaterHeal_Timer <= diff)
|
||||
{
|
||||
Unit* target = SelectGuestTarget();
|
||||
Unit *pTarget = SelectGuestTarget();
|
||||
|
||||
DoCast(target, SPELL_GREATERHEAL);
|
||||
DoCast(pTarget, SPELL_GREATERHEAL);
|
||||
GreaterHeal_Timer = 17000;
|
||||
} else GreaterHeal_Timer -= diff;
|
||||
|
||||
@@ -521,8 +521,8 @@ struct TRINITY_DLL_DECL boss_lady_catriona_von_indiAI : public boss_moroes_guest
|
||||
|
||||
if (DispelMagic_Timer <= diff)
|
||||
{
|
||||
if (Unit* target = RAND(SelectGuestTarget(), SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true)))
|
||||
DoCast(target, SPELL_DISPELMAGIC);
|
||||
if (Unit *pTarget = RAND(SelectGuestTarget(), SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true)))
|
||||
DoCast(pTarget, SPELL_DISPELMAGIC);
|
||||
|
||||
DispelMagic_Timer = 25000;
|
||||
} else DispelMagic_Timer -= diff;
|
||||
@@ -571,26 +571,26 @@ struct TRINITY_DLL_DECL boss_lady_keira_berrybuckAI : public boss_moroes_guestAI
|
||||
|
||||
if (HolyLight_Timer <= diff)
|
||||
{
|
||||
Unit* target = SelectGuestTarget();
|
||||
Unit *pTarget = SelectGuestTarget();
|
||||
|
||||
DoCast(target, SPELL_HOLYLIGHT);
|
||||
DoCast(pTarget, SPELL_HOLYLIGHT);
|
||||
HolyLight_Timer = 10000;
|
||||
} else HolyLight_Timer -= diff;
|
||||
|
||||
if (GreaterBless_Timer <= diff)
|
||||
{
|
||||
Unit* target = SelectGuestTarget();
|
||||
Unit *pTarget = SelectGuestTarget();
|
||||
|
||||
DoCast(target, SPELL_GREATERBLESSOFMIGHT);
|
||||
DoCast(pTarget, SPELL_GREATERBLESSOFMIGHT);
|
||||
|
||||
GreaterBless_Timer = 50000;
|
||||
} else GreaterBless_Timer -= diff;
|
||||
|
||||
if (Cleanse_Timer <= diff)
|
||||
{
|
||||
Unit* target = SelectGuestTarget();
|
||||
Unit *pTarget = SelectGuestTarget();
|
||||
|
||||
DoCast(target, SPELL_CLEANSE);
|
||||
DoCast(pTarget, SPELL_CLEANSE);
|
||||
|
||||
Cleanse_Timer = 10000;
|
||||
} else Cleanse_Timer -= diff;
|
||||
|
||||
@@ -90,9 +90,9 @@ struct TRINITY_DLL_DECL boss_netherspiteAI : public ScriptedAI
|
||||
uint64 BeamerGUID[3]; // guid's of auxiliary beaming portals
|
||||
uint64 BeamTarget[3]; // guid's of portals' current targets
|
||||
|
||||
bool IsBetween(WorldObject* u1, WorldObject* target, WorldObject* u2) // the in-line checker
|
||||
bool IsBetween(WorldObject* u1, WorldObject *pTarget, WorldObject* u2) // the in-line checker
|
||||
{
|
||||
if(!u1 || !u2 || !target)
|
||||
if(!u1 || !u2 || !pTarget)
|
||||
return false;
|
||||
|
||||
float xn, yn, xp, yp, xh, yh;
|
||||
@@ -100,10 +100,10 @@ struct TRINITY_DLL_DECL boss_netherspiteAI : public ScriptedAI
|
||||
yn = u1->GetPositionY();
|
||||
xp = u2->GetPositionX();
|
||||
yp = u2->GetPositionY();
|
||||
xh = target->GetPositionX();
|
||||
yh = target->GetPositionY();
|
||||
xh = pTarget->GetPositionX();
|
||||
yh = pTarget->GetPositionY();
|
||||
|
||||
// check if target is between (not checking distance from the beam yet)
|
||||
// check if pTarget is between (not checking distance from the beam yet)
|
||||
if(dist(xn,yn,xh,yh)>=dist(xn,yn,xp,yp) || dist(xp,yp,xh,yh)>=dist(xn,yn,xp,yp))
|
||||
return false;
|
||||
// check distance from the beam
|
||||
@@ -163,7 +163,7 @@ struct TRINITY_DLL_DECL boss_netherspiteAI : public ScriptedAI
|
||||
// the one who's been casted upon before
|
||||
Unit *current = Unit::GetUnit(*portal, BeamTarget[j]);
|
||||
// temporary store for the best suitable beam reciever
|
||||
Unit *target = m_creature;
|
||||
Unit *pTarget = m_creature;
|
||||
|
||||
if(Map* map = m_creature->GetMap())
|
||||
{
|
||||
@@ -174,41 +174,41 @@ struct TRINITY_DLL_DECL boss_netherspiteAI : public ScriptedAI
|
||||
{
|
||||
Player* p = i->getSource();
|
||||
if(p && p->isAlive() // alive
|
||||
&& (!target || target->GetDistance2d(portal)>p->GetDistance2d(portal)) // closer than current best
|
||||
&& (!pTarget || pTarget->GetDistance2d(portal)>p->GetDistance2d(portal)) // closer than current best
|
||||
&& !p->HasAura(PlayerDebuff[j],0) // not exhausted
|
||||
&& !p->HasAura(PlayerBuff[(j+1)%3],0) // not on another beam
|
||||
&& !p->HasAura(PlayerBuff[(j+2)%3],0)
|
||||
&& IsBetween(m_creature, p, portal)) // on the beam
|
||||
target = p;
|
||||
pTarget = p;
|
||||
}
|
||||
}
|
||||
// buff the target
|
||||
if(target->GetTypeId() == TYPEID_PLAYER)
|
||||
target->AddAura(PlayerBuff[j], target);
|
||||
if(pTarget->GetTypeId() == TYPEID_PLAYER)
|
||||
pTarget->AddAura(PlayerBuff[j], pTarget);
|
||||
else
|
||||
target->AddAura(NetherBuff[j], target);
|
||||
// cast visual beam on the chosen target if switched
|
||||
// simple target switching isn't working -> using BeamerGUID to cast (workaround)
|
||||
if(!current || target != current)
|
||||
pTarget->AddAura(NetherBuff[j], pTarget);
|
||||
// cast visual beam on the chosen pTarget if switched
|
||||
// simple pTarget switching isn't working -> using BeamerGUID to cast (workaround)
|
||||
if(!current || pTarget != current)
|
||||
{
|
||||
BeamTarget[j] = target->GetGUID();
|
||||
BeamTarget[j] = pTarget->GetGUID();
|
||||
// remove currently beaming portal
|
||||
if(Creature *beamer = Unit::GetCreature(*portal, BeamerGUID[j]))
|
||||
{
|
||||
beamer->CastSpell(target, PortalBeam[j], false);
|
||||
beamer->CastSpell(pTarget, PortalBeam[j], false);
|
||||
beamer->DisappearAndDie();
|
||||
BeamerGUID[j] = 0;
|
||||
}
|
||||
// create new one and start beaming on the target
|
||||
if(Creature *beamer = portal->SummonCreature(PortalID[j],portal->GetPositionX(),portal->GetPositionY(),portal->GetPositionZ(),portal->GetOrientation(),TEMPSUMMON_TIMED_DESPAWN,60000))
|
||||
{
|
||||
beamer->CastSpell(target, PortalBeam[j], false);
|
||||
beamer->CastSpell(pTarget, PortalBeam[j], false);
|
||||
BeamerGUID[j] = beamer->GetGUID();
|
||||
}
|
||||
}
|
||||
// aggro target if Red Beam
|
||||
if(j==RED_PORTAL && m_creature->getVictim() != target && target->GetTypeId() == TYPEID_PLAYER)
|
||||
m_creature->getThreatManager().addThreat(target, 100000.0f+DoGetThreat(m_creature->getVictim()));
|
||||
// aggro pTarget if Red Beam
|
||||
if(j==RED_PORTAL && m_creature->getVictim() != pTarget && pTarget->GetTypeId() == TYPEID_PLAYER)
|
||||
m_creature->getThreatManager().addThreat(pTarget, 100000.0f+DoGetThreat(m_creature->getVictim()));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -270,12 +270,12 @@ struct TRINITY_DLL_DECL boss_netherspiteAI : public ScriptedAI
|
||||
} else VoidZoneTimer -= diff;
|
||||
|
||||
// NetherInfusion Berserk
|
||||
if(!Berserk && NetherInfusionTimer < diff)
|
||||
if (!Berserk && NetherInfusionTimer <= diff)
|
||||
{
|
||||
m_creature->AddAura(SPELL_NETHER_INFUSION, m_creature);
|
||||
DoCast(m_creature, SPELL_NETHERSPITE_ROAR);
|
||||
Berserk = true;
|
||||
}else NetherInfusionTimer -= diff;
|
||||
} else NetherInfusionTimer -= diff;
|
||||
|
||||
if(PortalPhase) // PORTAL PHASE
|
||||
{
|
||||
@@ -308,8 +308,8 @@ struct TRINITY_DLL_DECL boss_netherspiteAI : public ScriptedAI
|
||||
// Netherbreath
|
||||
if (NetherbreathTimer <= diff)
|
||||
{
|
||||
if(Unit* target = SelectTarget(SELECT_TARGET_RANDOM,0,40,true))
|
||||
DoCast(target,SPELL_NETHERBREATH);
|
||||
if(Unit *pTarget = SelectTarget(SELECT_TARGET_RANDOM,0,40,true))
|
||||
DoCast(pTarget,SPELL_NETHERBREATH);
|
||||
NetherbreathTimer = urand(5000,7000);
|
||||
} else NetherbreathTimer -= diff;
|
||||
|
||||
|
||||
@@ -309,23 +309,23 @@ struct TRINITY_DLL_DECL boss_nightbaneAI : public ScriptedAI
|
||||
|
||||
if (CharredEarthTimer <= diff)
|
||||
{
|
||||
if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true))
|
||||
DoCast(target,SPELL_CHARRED_EARTH);
|
||||
if (Unit *pTarget = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true))
|
||||
DoCast(pTarget,SPELL_CHARRED_EARTH);
|
||||
CharredEarthTimer = 20000;
|
||||
} else CharredEarthTimer -= diff;
|
||||
|
||||
if (TailSweepTimer <= diff)
|
||||
{
|
||||
if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true))
|
||||
if (!m_creature->HasInArc(M_PI, target))
|
||||
DoCast(target,SPELL_TAIL_SWEEP);
|
||||
if (Unit *pTarget = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true))
|
||||
if (!m_creature->HasInArc(M_PI, pTarget))
|
||||
DoCast(pTarget,SPELL_TAIL_SWEEP);
|
||||
TailSweepTimer = 15000;
|
||||
} else TailSweepTimer -= diff;
|
||||
|
||||
if (SearingCindersTimer <= diff)
|
||||
{
|
||||
if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true))
|
||||
DoCast(target,SPELL_SEARING_CINDERS);
|
||||
if (Unit *pTarget = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true))
|
||||
DoCast(pTarget,SPELL_SEARING_CINDERS);
|
||||
SearingCindersTimer = 10000;
|
||||
} else SearingCindersTimer -= diff;
|
||||
|
||||
@@ -367,8 +367,8 @@ struct TRINITY_DLL_DECL boss_nightbaneAI : public ScriptedAI
|
||||
|
||||
if (DistractingAshTimer <= diff)
|
||||
{
|
||||
if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true))
|
||||
DoCast(target,SPELL_DISTRACTING_ASH);
|
||||
if (Unit *pTarget = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true))
|
||||
DoCast(pTarget,SPELL_DISTRACTING_ASH);
|
||||
DistractingAshTimer = 2000; //timer wrong
|
||||
} else DistractingAshTimer -= diff;
|
||||
}
|
||||
@@ -384,8 +384,8 @@ struct TRINITY_DLL_DECL boss_nightbaneAI : public ScriptedAI
|
||||
|
||||
if (FireballBarrageTimer <= diff)
|
||||
{
|
||||
if (Unit* target = SelectUnit(SELECT_TARGET_FARTHEST, 0))
|
||||
DoCast(target,SPELL_FIREBALL_BARRAGE);
|
||||
if (Unit *pTarget = SelectUnit(SELECT_TARGET_FARTHEST, 0))
|
||||
DoCast(pTarget,SPELL_FIREBALL_BARRAGE);
|
||||
FireballBarrageTimer = 20000;
|
||||
} else FireballBarrageTimer -= diff;
|
||||
|
||||
|
||||
@@ -288,15 +288,15 @@ struct TRINITY_DLL_DECL boss_malchezaarAI : public ScriptedAI
|
||||
if (!t_list.size())
|
||||
return;
|
||||
|
||||
//begin + 1 , so we don't target the one with the highest threat
|
||||
//begin + 1 , so we don't pTarget the one with the highest threat
|
||||
std::list<HostilReference *>::iterator itr = t_list.begin();
|
||||
std::advance(itr, 1);
|
||||
for (; itr!= t_list.end(); ++itr) //store the threat list in a different container
|
||||
{
|
||||
Unit *target = Unit::GetUnit(*m_creature, (*itr)->getUnitGuid());
|
||||
Unit *pTarget = Unit::GetUnit(*m_creature, (*itr)->getUnitGuid());
|
||||
//only on alive players
|
||||
if (target && target->isAlive() && target->GetTypeId() == TYPEID_PLAYER)
|
||||
targets.push_back(target);
|
||||
if (pTarget && pTarget->isAlive() && pTarget->GetTypeId() == TYPEID_PLAYER)
|
||||
targets.push_back(pTarget);
|
||||
}
|
||||
|
||||
//cut down to size if we have more than 5 targets
|
||||
@@ -306,14 +306,14 @@ struct TRINITY_DLL_DECL boss_malchezaarAI : public ScriptedAI
|
||||
int i = 0;
|
||||
for (std::vector<Unit *>::iterator iter = targets.begin(); iter!= targets.end(); ++iter, ++i)
|
||||
{
|
||||
Unit *target = *iter;
|
||||
if (target)
|
||||
Unit *pTarget = *iter;
|
||||
if (pTarget)
|
||||
{
|
||||
enfeeble_targets[i] = target->GetGUID();
|
||||
enfeeble_health[i] = target->GetHealth();
|
||||
enfeeble_targets[i] = pTarget->GetGUID();
|
||||
enfeeble_health[i] = pTarget->GetHealth();
|
||||
|
||||
target->CastSpell(target, SPELL_ENFEEBLE, true, 0, 0, m_creature->GetGUID());
|
||||
target->SetHealth(1);
|
||||
pTarget->CastSpell(pTarget, SPELL_ENFEEBLE, true, 0, 0, m_creature->GetGUID());
|
||||
pTarget->SetHealth(1);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -323,9 +323,9 @@ struct TRINITY_DLL_DECL boss_malchezaarAI : public ScriptedAI
|
||||
{
|
||||
for (uint8 i = 0; i < 5; ++i)
|
||||
{
|
||||
Unit *target = Unit::GetUnit(*m_creature, enfeeble_targets[i]);
|
||||
if (target && target->isAlive())
|
||||
target->SetHealth(enfeeble_health[i]);
|
||||
Unit *pTarget = Unit::GetUnit(*m_creature, enfeeble_targets[i]);
|
||||
if (pTarget && pTarget->isAlive())
|
||||
pTarget->SetHealth(enfeeble_health[i]);
|
||||
enfeeble_targets[i] = 0;
|
||||
enfeeble_health[i] = 0;
|
||||
}
|
||||
@@ -372,7 +372,7 @@ struct TRINITY_DLL_DECL boss_malchezaarAI : public ScriptedAI
|
||||
{
|
||||
EnfeebleResetHealth();
|
||||
EnfeebleResetTimer=0;
|
||||
}else EnfeebleResetTimer -= diff;
|
||||
} else EnfeebleResetTimer -= diff;
|
||||
|
||||
if (m_creature->hasUnitState(UNIT_STAT_STUNNED)) //While shifting to phase 2 malchezaar stuns himself
|
||||
return;
|
||||
@@ -430,7 +430,7 @@ struct TRINITY_DLL_DECL boss_malchezaarAI : public ScriptedAI
|
||||
|
||||
DoScriptText(SAY_AXE_TOSS2, m_creature);
|
||||
|
||||
Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true);
|
||||
Unit *pTarget = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true);
|
||||
for (uint8 i = 0; i < 2; ++i)
|
||||
{
|
||||
Creature *axe = m_creature->SummonCreature(MALCHEZARS_AXE, m_creature->GetPositionX(), m_creature->GetPositionY(), m_creature->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 1000);
|
||||
@@ -439,12 +439,12 @@ struct TRINITY_DLL_DECL boss_malchezaarAI : public ScriptedAI
|
||||
axe->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
||||
axe->setFaction(m_creature->getFaction());
|
||||
axes[i] = axe->GetGUID();
|
||||
if (target)
|
||||
if (pTarget)
|
||||
{
|
||||
axe->AI()->AttackStart(target);
|
||||
// axe->getThreatManager().tauntApply(target); //Taunt Apply and fade out does not work properly
|
||||
axe->AI()->AttackStart(pTarget);
|
||||
// axe->getThreatManager().tauntApply(pTarget); //Taunt Apply and fade out does not work properly
|
||||
// So we'll use a hack to add a lot of threat to our target
|
||||
axe->AddThreat(target, 10000000.0f);
|
||||
axe->AddThreat(pTarget, 10000000.0f);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -475,7 +475,7 @@ struct TRINITY_DLL_DECL boss_malchezaarAI : public ScriptedAI
|
||||
{
|
||||
AxesTargetSwitchTimer = urand(7500,20000);
|
||||
|
||||
if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true))
|
||||
if (Unit *pTarget = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true))
|
||||
{
|
||||
for (uint8 i = 0; i < 2; ++i)
|
||||
{
|
||||
@@ -484,10 +484,10 @@ struct TRINITY_DLL_DECL boss_malchezaarAI : public ScriptedAI
|
||||
float threat = 1000000.0f;
|
||||
if (axe->getVictim())
|
||||
DoModifyThreatPercent(axe->getVictim(), -100);
|
||||
if (target)
|
||||
axe->AddThreat(target, threat);
|
||||
if (pTarget)
|
||||
axe->AddThreat(pTarget, threat);
|
||||
//axe->getThreatManager().tauntFadeOut(axe->getVictim());
|
||||
//axe->getThreatManager().tauntApply(target);
|
||||
//axe->getThreatManager().tauntApply(pTarget);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -495,8 +495,8 @@ struct TRINITY_DLL_DECL boss_malchezaarAI : public ScriptedAI
|
||||
|
||||
if (AmplifyDamageTimer <= diff)
|
||||
{
|
||||
if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true))
|
||||
DoCast(target, SPELL_AMPLIFY_DAMAGE);
|
||||
if (Unit *pTarget = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true))
|
||||
DoCast(pTarget, SPELL_AMPLIFY_DAMAGE);
|
||||
AmplifyDamageTimer = urand(20000,30000);
|
||||
} else AmplifyDamageTimer -= diff;
|
||||
}
|
||||
@@ -518,17 +518,17 @@ struct TRINITY_DLL_DECL boss_malchezaarAI : public ScriptedAI
|
||||
{
|
||||
if (SWPainTimer <= diff)
|
||||
{
|
||||
Unit* target = NULL;
|
||||
Unit *pTarget = NULL;
|
||||
if (phase == 1)
|
||||
target = m_creature->getVictim(); // the tank
|
||||
pTarget = m_creature->getVictim(); // the tank
|
||||
else // anyone but the tank
|
||||
target = SelectTarget(SELECT_TARGET_RANDOM, 1, 100, true);
|
||||
pTarget = SelectTarget(SELECT_TARGET_RANDOM, 1, 100, true);
|
||||
|
||||
if (target)
|
||||
DoCast(target, SPELL_SW_PAIN);
|
||||
if (pTarget)
|
||||
DoCast(pTarget, SPELL_SW_PAIN);
|
||||
|
||||
SWPainTimer = 20000;
|
||||
}else SWPainTimer -= diff;
|
||||
} else SWPainTimer -= diff;
|
||||
}
|
||||
|
||||
if (phase != 3)
|
||||
|
||||
@@ -183,10 +183,10 @@ struct TRINITY_DLL_DECL boss_aranAI : public ScriptedAI
|
||||
//store the threat list in a different container
|
||||
for (std::list<HostilReference *>::iterator itr = t_list.begin(); itr!= t_list.end(); ++itr)
|
||||
{
|
||||
Unit *target = Unit::GetUnit(*m_creature, (*itr)->getUnitGuid());
|
||||
Unit *pTarget = Unit::GetUnit(*m_creature, (*itr)->getUnitGuid());
|
||||
//only on alive players
|
||||
if (target && target->isAlive() && target->GetTypeId() == TYPEID_PLAYER)
|
||||
targets.push_back(target);
|
||||
if (pTarget && pTarget->isAlive() && pTarget->GetTypeId() == TYPEID_PLAYER)
|
||||
targets.push_back(pTarget);
|
||||
}
|
||||
|
||||
//cut down to size if we have more than 3 targets
|
||||
@@ -221,7 +221,7 @@ struct TRINITY_DLL_DECL boss_aranAI : public ScriptedAI
|
||||
pInstance->HandleGameObject(pInstance->GetData64(DATA_GO_LIBRARY_DOOR), false);
|
||||
CloseDoorTimer = 0;
|
||||
}
|
||||
}else CloseDoorTimer -= diff;
|
||||
} else CloseDoorTimer -= diff;
|
||||
}
|
||||
|
||||
//Cooldowns for casts
|
||||
@@ -295,9 +295,8 @@ struct TRINITY_DLL_DECL boss_aranAI : public ScriptedAI
|
||||
{
|
||||
if (!m_creature->IsNonMeleeSpellCasted(false))
|
||||
{
|
||||
Unit* target = NULL;
|
||||
target = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true);
|
||||
if (!target)
|
||||
Unit *pTarget = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true);
|
||||
if (!pTarget)
|
||||
return;
|
||||
|
||||
uint32 Spells[3];
|
||||
@@ -324,7 +323,7 @@ struct TRINITY_DLL_DECL boss_aranAI : public ScriptedAI
|
||||
if (AvailableSpells)
|
||||
{
|
||||
CurrentNormalSpell = Spells[rand() % AvailableSpells];
|
||||
DoCast(target, CurrentNormalSpell);
|
||||
DoCast(pTarget, CurrentNormalSpell);
|
||||
}
|
||||
}
|
||||
NormalCastTimer = 1000;
|
||||
@@ -365,16 +364,12 @@ struct TRINITY_DLL_DECL boss_aranAI : public ScriptedAI
|
||||
break;
|
||||
}
|
||||
|
||||
LastSuperSpell = Available[rand()%2];
|
||||
LastSuperSpell = Available[urand(0,1)];
|
||||
|
||||
switch (LastSuperSpell)
|
||||
{
|
||||
case SUPER_AE:
|
||||
|
||||
if (rand()%2)
|
||||
DoScriptText(SAY_EXPLOSION1, m_creature);
|
||||
else
|
||||
DoScriptText(SAY_EXPLOSION2, m_creature);
|
||||
DoScriptText(RAND(SAY_EXPLOSION1,SAY_EXPLOSION2), m_creature);
|
||||
|
||||
m_creature->CastSpell(m_creature, SPELL_BLINK_CENTER, true);
|
||||
m_creature->CastSpell(m_creature, SPELL_PLAYERPULL, true);
|
||||
@@ -383,10 +378,7 @@ struct TRINITY_DLL_DECL boss_aranAI : public ScriptedAI
|
||||
break;
|
||||
|
||||
case SUPER_FLAME:
|
||||
if (rand()%2)
|
||||
DoScriptText(SAY_FLAMEWREATH1, m_creature);
|
||||
else
|
||||
DoScriptText(SAY_FLAMEWREATH2, m_creature);
|
||||
DoScriptText(RAND(SAY_FLAMEWREATH1,SAY_FLAMEWREATH2), m_creature);
|
||||
|
||||
FlameWreathTimer = 20000;
|
||||
FlameWreathCheckTime = 500;
|
||||
@@ -399,11 +391,7 @@ struct TRINITY_DLL_DECL boss_aranAI : public ScriptedAI
|
||||
break;
|
||||
|
||||
case SUPER_BLIZZARD:
|
||||
|
||||
if (rand()%2)
|
||||
DoScriptText(SAY_BLIZZARD1, m_creature);
|
||||
else
|
||||
DoScriptText(SAY_BLIZZARD2, m_creature);
|
||||
DoScriptText(RAND(SAY_BLIZZARD1,SAY_BLIZZARD2), m_creature);
|
||||
|
||||
if (Creature* pSpawn = m_creature->SummonCreature(CREATURE_ARAN_BLIZZARD, 0.0f, 0.0f, 0.0f, 0.0f, TEMPSUMMON_TIMED_DESPAWN, 25000))
|
||||
{
|
||||
@@ -413,8 +401,8 @@ struct TRINITY_DLL_DECL boss_aranAI : public ScriptedAI
|
||||
break;
|
||||
}
|
||||
|
||||
SuperCastTimer = 35000 + (rand()%5000);
|
||||
}else SuperCastTimer -= diff;
|
||||
SuperCastTimer = urand(35000,40000);
|
||||
} else SuperCastTimer -= diff;
|
||||
|
||||
if (!ElementalsSpawned && m_creature->GetHealth()*100 / m_creature->GetMaxHealth() < 40)
|
||||
{
|
||||
@@ -446,7 +434,7 @@ struct TRINITY_DLL_DECL boss_aranAI : public ScriptedAI
|
||||
DoScriptText(SAY_TIMEOVER, m_creature);
|
||||
|
||||
BerserkTimer = 60000;
|
||||
}else BerserkTimer -= diff;
|
||||
} else BerserkTimer -= diff;
|
||||
|
||||
//Flame Wreath check
|
||||
if (FlameWreathTimer)
|
||||
@@ -471,7 +459,7 @@ struct TRINITY_DLL_DECL boss_aranAI : public ScriptedAI
|
||||
}
|
||||
}
|
||||
FlameWreathCheckTime = 500;
|
||||
}else FlameWreathCheckTime -= diff;
|
||||
} else FlameWreathCheckTime -= diff;
|
||||
}
|
||||
|
||||
if (ArcaneCooldown && FireCooldown && FrostCooldown)
|
||||
|
||||
@@ -45,7 +45,7 @@ EndScriptData */
|
||||
#define SPELL_FIENDISH_PORTAL 30171 // Opens portal and summons Fiendish Portal, 2 sec cast
|
||||
#define SPELL_FIENDISH_PORTAL_1 30179 // Opens portal and summons Fiendish Portal, instant cast
|
||||
|
||||
#define SPELL_FIREBOLT 30050 // Blasts a target for 150 Fire damage.
|
||||
#define SPELL_FIREBOLT 30050 // Blasts a pTarget for 150 Fire damage.
|
||||
#define SPELL_BROKEN_PACT 30065 // All damage taken increased by 25%.
|
||||
#define SPELL_AMPLIFY_FLAMES 30053 // Increases the Fire damage taken by an enemy by 500 for 25 sec.
|
||||
|
||||
@@ -93,7 +93,7 @@ struct TRINITY_DLL_DECL mob_kilrekAI : public ScriptedAI
|
||||
if (Terestian && Terestian->isAlive())
|
||||
DoCast(Terestian, SPELL_BROKEN_PACT, true);
|
||||
}
|
||||
}else ERROR_INST_DATA(m_creature);
|
||||
} else ERROR_INST_DATA(m_creature);
|
||||
}
|
||||
|
||||
void UpdateAI(const uint32 diff)
|
||||
@@ -108,7 +108,7 @@ struct TRINITY_DLL_DECL mob_kilrekAI : public ScriptedAI
|
||||
DoCast(m_creature->getVictim(),SPELL_AMPLIFY_FLAMES);
|
||||
|
||||
AmplifyTimer = urand(10000,20000);
|
||||
}else AmplifyTimer -= diff;
|
||||
} else AmplifyTimer -= diff;
|
||||
|
||||
DoMeleeAttackIfReady();
|
||||
}
|
||||
@@ -277,15 +277,15 @@ struct TRINITY_DLL_DECL boss_terestianAI : public ScriptedAI
|
||||
|
||||
if (SacrificeTimer <= diff)
|
||||
{
|
||||
Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 1, 100, true);
|
||||
if (target && target->isAlive())
|
||||
Unit *pTarget = SelectTarget(SELECT_TARGET_RANDOM, 1, 100, true);
|
||||
if (pTarget && pTarget->isAlive())
|
||||
{
|
||||
DoCast(target, SPELL_SACRIFICE, true);
|
||||
DoCast(target, SPELL_SUMMON_DEMONCHAINS, true);
|
||||
DoCast(pTarget, SPELL_SACRIFICE, true);
|
||||
DoCast(pTarget, SPELL_SUMMON_DEMONCHAINS, true);
|
||||
|
||||
if (Creature* Chains = m_creature->FindNearestCreature(CREATURE_DEMONCHAINS, 5000))
|
||||
{
|
||||
CAST_AI(mob_demon_chainAI, Chains->AI())->SacrificeGUID = target->GetGUID();
|
||||
CAST_AI(mob_demon_chainAI, Chains->AI())->SacrificeGUID = pTarget->GetGUID();
|
||||
Chains->CastSpell(Chains, SPELL_DEMON_CHAINS, true);
|
||||
DoScriptText(RAND(SAY_SACRIFICE1,SAY_SACRIFICE2), m_creature);
|
||||
SacrificeTimer = 30000;
|
||||
@@ -328,7 +328,7 @@ struct TRINITY_DLL_DECL boss_terestianAI : public ScriptedAI
|
||||
}
|
||||
};
|
||||
|
||||
#define SPELL_FIREBOLT 30050 // Blasts a target for 181-209 Fire damage.
|
||||
#define SPELL_FIREBOLT 30050 // Blasts a pTarget for 181-209 Fire damage.
|
||||
|
||||
struct TRINITY_DLL_DECL mob_fiendish_impAI : public ScriptedAI
|
||||
{
|
||||
|
||||
@@ -352,8 +352,8 @@ struct TRINITY_DLL_DECL boss_strawmanAI : public ScriptedAI
|
||||
|
||||
if (BrainWipeTimer <= diff)
|
||||
{
|
||||
if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true))
|
||||
DoCast(target, SPELL_BRAIN_WIPE);
|
||||
if (Unit *pTarget = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true))
|
||||
DoCast(pTarget, SPELL_BRAIN_WIPE);
|
||||
BrainWipeTimer = 20000;
|
||||
} else BrainWipeTimer -= diff;
|
||||
|
||||
@@ -528,7 +528,7 @@ struct TRINITY_DLL_DECL boss_roarAI : public ScriptedAI
|
||||
{
|
||||
m_creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
||||
AggroTimer = 0;
|
||||
}else AggroTimer -= diff;
|
||||
} else AggroTimer -= diff;
|
||||
}
|
||||
|
||||
if (!UpdateVictim())
|
||||
@@ -800,15 +800,15 @@ struct TRINITY_DLL_DECL boss_bigbadwolfAI : public ScriptedAI
|
||||
{
|
||||
if (!IsChasing)
|
||||
{
|
||||
if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true))
|
||||
if (Unit *pTarget = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true))
|
||||
{
|
||||
DoScriptText(SAY_WOLF_HOOD, m_creature);
|
||||
DoCast(target, SPELL_LITTLE_RED_RIDING_HOOD, true);
|
||||
TempThreat = DoGetThreat(target);
|
||||
DoCast(pTarget, SPELL_LITTLE_RED_RIDING_HOOD, true);
|
||||
TempThreat = DoGetThreat(pTarget);
|
||||
if (TempThreat)
|
||||
DoModifyThreatPercent(target, -100);
|
||||
HoodGUID = target->GetGUID();
|
||||
m_creature->AddThreat(target, 1000000.0f);
|
||||
DoModifyThreatPercent(pTarget, -100);
|
||||
HoodGUID = pTarget->GetGUID();
|
||||
m_creature->AddThreat(pTarget, 1000000.0f);
|
||||
ChaseTimer = 20000;
|
||||
IsChasing = true;
|
||||
}
|
||||
@@ -817,12 +817,12 @@ struct TRINITY_DLL_DECL boss_bigbadwolfAI : public ScriptedAI
|
||||
{
|
||||
IsChasing = false;
|
||||
|
||||
if (Unit* target = Unit::GetUnit((*m_creature), HoodGUID))
|
||||
if (Unit *pTarget = Unit::GetUnit((*m_creature), HoodGUID))
|
||||
{
|
||||
HoodGUID = 0;
|
||||
if (DoGetThreat(target))
|
||||
DoModifyThreatPercent(target, -100);
|
||||
m_creature->AddThreat(target, TempThreat);
|
||||
if (DoGetThreat(pTarget))
|
||||
DoModifyThreatPercent(pTarget, -100);
|
||||
m_creature->AddThreat(pTarget, TempThreat);
|
||||
TempThreat = 0;
|
||||
}
|
||||
|
||||
@@ -911,19 +911,19 @@ void PretendToDie(Creature* pCreature)
|
||||
pCreature->SetStandState(UNIT_STAND_STATE_DEAD);
|
||||
};
|
||||
|
||||
void Resurrect(Creature* target)
|
||||
void Resurrect(Creature *pTarget)
|
||||
{
|
||||
target->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
||||
target->SetHealth(target->GetMaxHealth());
|
||||
target->SetStandState(UNIT_STAND_STATE_STAND);
|
||||
target->CastSpell(target, SPELL_RES_VISUAL, true);
|
||||
if (target->getVictim())
|
||||
pTarget->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
||||
pTarget->SetHealth(pTarget->GetMaxHealth());
|
||||
pTarget->SetStandState(UNIT_STAND_STATE_STAND);
|
||||
pTarget->CastSpell(pTarget, SPELL_RES_VISUAL, true);
|
||||
if (pTarget->getVictim())
|
||||
{
|
||||
target->GetMotionMaster()->MoveChase(target->getVictim());
|
||||
target->AI()->AttackStart(target->getVictim());
|
||||
pTarget->GetMotionMaster()->MoveChase(pTarget->getVictim());
|
||||
pTarget->AI()->AttackStart(pTarget->getVictim());
|
||||
}
|
||||
else
|
||||
target->GetMotionMaster()->Initialize();
|
||||
pTarget->GetMotionMaster()->Initialize();
|
||||
};
|
||||
|
||||
struct TRINITY_DLL_DECL boss_julianneAI : public ScriptedAI
|
||||
@@ -1253,7 +1253,7 @@ void boss_julianneAI::UpdateAI(const uint32 diff)
|
||||
{
|
||||
DoScriptText(SAY_JULIANNE_ENTER, m_creature);
|
||||
EntryYellTimer = 0;
|
||||
}else EntryYellTimer -= diff;
|
||||
} else EntryYellTimer -= diff;
|
||||
}
|
||||
|
||||
if (AggroYellTimer)
|
||||
@@ -1264,7 +1264,7 @@ void boss_julianneAI::UpdateAI(const uint32 diff)
|
||||
m_creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
||||
m_creature->setFaction(16);
|
||||
AggroYellTimer = 0;
|
||||
}else AggroYellTimer -= diff;
|
||||
} else AggroYellTimer -= diff;
|
||||
}
|
||||
|
||||
if (DrinkPoisonTimer)
|
||||
@@ -1276,7 +1276,7 @@ void boss_julianneAI::UpdateAI(const uint32 diff)
|
||||
Phase = PHASE_ROMULO;
|
||||
SummonRomuloTimer = 10000;
|
||||
DrinkPoisonTimer = 0;
|
||||
}else DrinkPoisonTimer -= diff;
|
||||
} else DrinkPoisonTimer -= diff;
|
||||
}
|
||||
|
||||
if (Phase == PHASE_ROMULO && !SummonedRomulo)
|
||||
@@ -1309,7 +1309,7 @@ void boss_julianneAI::UpdateAI(const uint32 diff)
|
||||
|
||||
ResurrectSelfTimer = 0;
|
||||
ResurrectTimer = 1000;
|
||||
}else ResurrectSelfTimer -= diff;
|
||||
} else ResurrectSelfTimer -= diff;
|
||||
}
|
||||
|
||||
if (!UpdateVictim() || IsFakingDeath)
|
||||
@@ -1333,8 +1333,8 @@ void boss_julianneAI::UpdateAI(const uint32 diff)
|
||||
|
||||
if (BlindingPassionTimer <= diff)
|
||||
{
|
||||
if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true))
|
||||
DoCast(target, SPELL_BLINDING_PASSION);
|
||||
if (Unit *pTarget = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true))
|
||||
DoCast(pTarget, SPELL_BLINDING_PASSION);
|
||||
BlindingPassionTimer = urand(30000,45000);
|
||||
} else BlindingPassionTimer -= diff;
|
||||
|
||||
@@ -1388,10 +1388,10 @@ void boss_romuloAI::UpdateAI(const uint32 diff)
|
||||
|
||||
if (BackwardLungeTimer <= diff)
|
||||
{
|
||||
Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 1, 100, true);
|
||||
if (target && !m_creature->HasInArc(M_PI, target))
|
||||
Unit *pTarget = SelectTarget(SELECT_TARGET_RANDOM, 1, 100, true);
|
||||
if (pTarget && !m_creature->HasInArc(M_PI, pTarget))
|
||||
{
|
||||
DoCast(target, SPELL_BACKWARD_LUNGE);
|
||||
DoCast(pTarget, SPELL_BACKWARD_LUNGE);
|
||||
BackwardLungeTimer = urand(15000,30000);
|
||||
}
|
||||
} else BackwardLungeTimer -= diff;
|
||||
@@ -1404,8 +1404,8 @@ void boss_romuloAI::UpdateAI(const uint32 diff)
|
||||
|
||||
if (DeadlySwatheTimer <= diff)
|
||||
{
|
||||
if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true))
|
||||
DoCast(target, SPELL_DEADLY_SWATHE);
|
||||
if (Unit *pTarget = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true))
|
||||
DoCast(pTarget, SPELL_DEADLY_SWATHE);
|
||||
DeadlySwatheTimer = urand(15000,25000);
|
||||
} else DeadlySwatheTimer -= diff;
|
||||
|
||||
|
||||
+35
-36
@@ -273,7 +273,7 @@ struct TRINITY_DLL_DECL boss_felblood_kaelthasAI : public ScriptedAI
|
||||
// *Heroic mode only:
|
||||
if (Heroic)
|
||||
{
|
||||
if (PyroblastTimer < diff)
|
||||
if (PyroblastTimer <= diff)
|
||||
{
|
||||
m_creature->InterruptSpell(CURRENT_CHANNELED_SPELL);
|
||||
m_creature->InterruptSpell(CURRENT_GENERIC_SPELL);
|
||||
@@ -283,18 +283,18 @@ struct TRINITY_DLL_DECL boss_felblood_kaelthasAI : public ScriptedAI
|
||||
} else PyroblastTimer -= diff;
|
||||
}
|
||||
|
||||
if (FireballTimer < diff)
|
||||
if (FireballTimer <= diff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(), Heroic ? SPELL_FIREBALL_HEROIC : SPELL_FIREBALL_NORMAL);
|
||||
FireballTimer = urand(2000,6000);
|
||||
} else FireballTimer -= diff;
|
||||
|
||||
if (PhoenixTimer < diff)
|
||||
if (PhoenixTimer <= diff)
|
||||
{
|
||||
|
||||
Unit* target = SelectUnit(SELECT_TARGET_RANDOM,1);
|
||||
Unit *pTarget = SelectUnit(SELECT_TARGET_RANDOM,1);
|
||||
|
||||
uint32 random = rand()%2 + 1;
|
||||
uint8 random = urand(1,2);
|
||||
float x = KaelLocations[random][0];
|
||||
float y = KaelLocations[random][1];
|
||||
|
||||
@@ -303,25 +303,25 @@ struct TRINITY_DLL_DECL boss_felblood_kaelthasAI : public ScriptedAI
|
||||
{
|
||||
Phoenix->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE + UNIT_FLAG_NON_ATTACKABLE);
|
||||
SetThreatList(Phoenix);
|
||||
Phoenix->AI()->AttackStart(target);
|
||||
Phoenix->AI()->AttackStart(pTarget);
|
||||
}
|
||||
|
||||
DoScriptText(SAY_PHOENIX, m_creature);
|
||||
|
||||
PhoenixTimer = 60000;
|
||||
}else PhoenixTimer -= diff;
|
||||
} else PhoenixTimer -= diff;
|
||||
|
||||
if (FlameStrikeTimer < diff)
|
||||
if (FlameStrikeTimer <= diff)
|
||||
{
|
||||
if (Unit* target = SelectUnit(SELECT_TARGET_RANDOM, 0))
|
||||
if (Unit *pTarget = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true))
|
||||
{
|
||||
m_creature->InterruptSpell(CURRENT_CHANNELED_SPELL);
|
||||
m_creature->InterruptSpell(CURRENT_GENERIC_SPELL);
|
||||
DoCast(target, SPELL_FLAMESTRIKE3, true);
|
||||
DoCast(pTarget, SPELL_FLAMESTRIKE3, true);
|
||||
DoScriptText(SAY_FLAMESTRIKE, m_creature);
|
||||
}
|
||||
FlameStrikeTimer = 15000 + rand()%10000;
|
||||
}else FlameStrikeTimer -= diff;
|
||||
FlameStrikeTimer = urand(15000,25000);
|
||||
} else FlameStrikeTimer -= diff;
|
||||
|
||||
// Below 50%
|
||||
if (m_creature->GetMaxHealth() * 0.5 > m_creature->GetHealth())
|
||||
@@ -341,7 +341,7 @@ struct TRINITY_DLL_DECL boss_felblood_kaelthasAI : public ScriptedAI
|
||||
|
||||
case 1:
|
||||
{
|
||||
if (GravityLapseTimer < diff)
|
||||
if (GravityLapseTimer <= diff)
|
||||
{
|
||||
switch(GravityLapsePhase)
|
||||
{
|
||||
@@ -385,15 +385,15 @@ struct TRINITY_DLL_DECL boss_felblood_kaelthasAI : public ScriptedAI
|
||||
|
||||
for (uint8 i = 0; i < 3; ++i)
|
||||
{
|
||||
Unit* target = NULL;
|
||||
target = SelectUnit(SELECT_TARGET_RANDOM,0);
|
||||
Unit *pTarget = NULL;
|
||||
pTarget = SelectUnit(SELECT_TARGET_RANDOM,0);
|
||||
|
||||
Creature* Orb = DoSpawnCreature(CREATURE_ARCANE_SPHERE, 5, 5, 0, 0, TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN, 30000);
|
||||
if (Orb && target)
|
||||
if (Orb && pTarget)
|
||||
{
|
||||
//SetThreatList(Orb);
|
||||
Orb->AddThreat(target, 1.0f);
|
||||
Orb->AI()->AttackStart(target);
|
||||
Orb->AddThreat(pTarget, 1.0f);
|
||||
Orb->AI()->AttackStart(pTarget);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -410,7 +410,7 @@ struct TRINITY_DLL_DECL boss_felblood_kaelthasAI : public ScriptedAI
|
||||
GravityLapsePhase = 0;
|
||||
break;
|
||||
}
|
||||
}else GravityLapseTimer -= diff;
|
||||
} else GravityLapseTimer -= diff;
|
||||
}
|
||||
break;
|
||||
}
|
||||
@@ -441,7 +441,7 @@ struct TRINITY_DLL_DECL mob_felkael_flamestrikeAI : public ScriptedAI
|
||||
void MoveInLineOfSight(Unit *who) {}
|
||||
void UpdateAI(const uint32 diff)
|
||||
{
|
||||
if (FlameStrikeTimer < diff)
|
||||
if (FlameStrikeTimer <= diff)
|
||||
{
|
||||
DoCast(m_creature, Heroic ? SPELL_FLAMESTRIKE1_HEROIC : SPELL_FLAMESTRIKE1_NORMAL, true);
|
||||
m_creature->Kill(m_creature);
|
||||
@@ -532,13 +532,12 @@ struct TRINITY_DLL_DECL mob_felkael_phoenixAI : public ScriptedAI
|
||||
if (Rebirth)
|
||||
{
|
||||
|
||||
if (Death_Timer < diff)
|
||||
if (Death_Timer <= diff)
|
||||
{
|
||||
m_creature->SummonCreature(CREATURE_PHOENIX_EGG, 0.0f, 0.0f, 0.0f, 0.0f, TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN, 45000);
|
||||
m_creature->setDeathState(JUST_DIED);
|
||||
m_creature->RemoveCorpse();
|
||||
m_creature->DisappearAndDie();
|
||||
Rebirth = false;
|
||||
}else Death_Timer -= diff;
|
||||
} else Death_Timer -= diff;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -546,10 +545,10 @@ struct TRINITY_DLL_DECL mob_felkael_phoenixAI : public ScriptedAI
|
||||
if (!UpdateVictim())
|
||||
return;
|
||||
|
||||
if (BurnTimer < diff)
|
||||
if (BurnTimer <= diff)
|
||||
{
|
||||
//spell Burn should possible do this, but it doesn't, so do this for now.
|
||||
uint32 dmg = urand(1650,2050);
|
||||
uint16 dmg = urand(1650,2050);
|
||||
m_creature->DealDamage(m_creature, dmg, 0, DOT, SPELL_SCHOOL_MASK_FIRE, NULL, false);
|
||||
BurnTimer += 2000;
|
||||
} BurnTimer -= diff;
|
||||
@@ -567,7 +566,6 @@ struct TRINITY_DLL_DECL mob_felkael_phoenix_eggAI : public ScriptedAI
|
||||
void Reset()
|
||||
{
|
||||
HatchTimer = 10000;
|
||||
|
||||
}
|
||||
|
||||
void EnterCombat(Unit* who) {}
|
||||
@@ -575,7 +573,7 @@ struct TRINITY_DLL_DECL mob_felkael_phoenix_eggAI : public ScriptedAI
|
||||
|
||||
void UpdateAI(const uint32 diff)
|
||||
{
|
||||
if (HatchTimer < diff)
|
||||
if (HatchTimer <= diff)
|
||||
{
|
||||
m_creature->SummonCreature(CREATURE_PHOENIX, 0.0f, 0.0f, 0.0f, 0.0f, TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN, 60000);
|
||||
m_creature->Kill(m_creature);
|
||||
@@ -586,7 +584,7 @@ struct TRINITY_DLL_DECL mob_felkael_phoenix_eggAI : public ScriptedAI
|
||||
|
||||
struct TRINITY_DLL_DECL mob_arcane_sphereAI : public ScriptedAI
|
||||
{
|
||||
mob_arcane_sphereAI(Creature *c) : ScriptedAI(c) {Reset();}
|
||||
mob_arcane_sphereAI(Creature *c) : ScriptedAI(c) { Reset(); }
|
||||
|
||||
uint32 DespawnTimer;
|
||||
uint32 ChangeTargetTimer;
|
||||
@@ -606,21 +604,22 @@ struct TRINITY_DLL_DECL mob_arcane_sphereAI : public ScriptedAI
|
||||
|
||||
void UpdateAI(const uint32 diff)
|
||||
{
|
||||
if (DespawnTimer < diff)
|
||||
if (DespawnTimer <= diff)
|
||||
m_creature->Kill(m_creature);
|
||||
else DespawnTimer -= diff;
|
||||
else
|
||||
DespawnTimer -= diff;
|
||||
|
||||
//Return since we have no target
|
||||
if (!UpdateVictim())
|
||||
return;
|
||||
|
||||
if (ChangeTargetTimer < diff)
|
||||
if (ChangeTargetTimer <= diff)
|
||||
{
|
||||
if (Unit* target = SelectUnit(SELECT_TARGET_RANDOM,0))
|
||||
if (Unit *pTarget = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true))
|
||||
{
|
||||
m_creature->AddThreat(target, 1.0f);
|
||||
m_creature->TauntApply(target);
|
||||
AttackStart(target);
|
||||
m_creature->AddThreat(pTarget, 1.0f);
|
||||
m_creature->TauntApply(pTarget);
|
||||
AttackStart(pTarget);
|
||||
}
|
||||
|
||||
ChangeTargetTimer = urand(5000,15000);
|
||||
|
||||
+75
-75
@@ -246,72 +246,72 @@ struct TRINITY_DLL_DECL boss_priestess_delrissaAI : public ScriptedAI
|
||||
if (HealTimer <= diff)
|
||||
{
|
||||
uint32 health = m_creature->GetHealth();
|
||||
Unit* target = m_creature;
|
||||
Unit *pTarget = m_creature;
|
||||
for (uint8 i = 0; i < MAX_ACTIVE_LACKEY; ++i)
|
||||
{
|
||||
if (Unit* pAdd = Unit::GetUnit(*m_creature, m_auiLackeyGUID[i]))
|
||||
{
|
||||
if (pAdd->isAlive() && pAdd->GetHealth() < health)
|
||||
target = pAdd;
|
||||
pTarget = pAdd;
|
||||
}
|
||||
}
|
||||
|
||||
DoCast(target, SPELL_FLASH_HEAL);
|
||||
DoCast(pTarget, SPELL_FLASH_HEAL);
|
||||
HealTimer = 15000;
|
||||
}else HealTimer -= diff;
|
||||
} else HealTimer -= diff;
|
||||
|
||||
if (RenewTimer <= diff)
|
||||
{
|
||||
Unit* target = m_creature;
|
||||
Unit *pTarget = m_creature;
|
||||
|
||||
if (urand(0,1))
|
||||
if (Unit* pAdd = Unit::GetUnit(*m_creature, m_auiLackeyGUID[rand()%MAX_ACTIVE_LACKEY]))
|
||||
if (pAdd->isAlive())
|
||||
target = pAdd;
|
||||
pTarget = pAdd;
|
||||
|
||||
DoCast(target,Heroic ? SPELL_RENEW_HEROIC : SPELL_RENEW_NORMAL);
|
||||
DoCast(pTarget,Heroic ? SPELL_RENEW_HEROIC : SPELL_RENEW_NORMAL);
|
||||
RenewTimer = 5000;
|
||||
} else RenewTimer -= diff;
|
||||
|
||||
if (ShieldTimer <= diff)
|
||||
{
|
||||
Unit* target = m_creature;
|
||||
Unit *pTarget = m_creature;
|
||||
|
||||
if (urand(0,1))
|
||||
if (Unit* pAdd = Unit::GetUnit(*m_creature, m_auiLackeyGUID[rand()%MAX_ACTIVE_LACKEY]))
|
||||
if (pAdd->isAlive() && !pAdd->HasAura(SPELL_SHIELD))
|
||||
target = pAdd;
|
||||
pTarget = pAdd;
|
||||
|
||||
DoCast(target, SPELL_SHIELD);
|
||||
DoCast(pTarget, SPELL_SHIELD);
|
||||
ShieldTimer = 7500;
|
||||
} else ShieldTimer -= diff;
|
||||
|
||||
if (DispelTimer <= diff)
|
||||
{
|
||||
Unit* target = NULL;
|
||||
Unit *pTarget = NULL;
|
||||
bool friendly = false;
|
||||
|
||||
if (urand(0,1))
|
||||
target = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true);
|
||||
pTarget = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true);
|
||||
else
|
||||
{
|
||||
friendly = true;
|
||||
|
||||
if (urand(0,1))
|
||||
target = m_creature;
|
||||
pTarget = m_creature;
|
||||
else
|
||||
if (Unit* pAdd = Unit::GetUnit(*m_creature, m_auiLackeyGUID[rand()%MAX_ACTIVE_LACKEY]))
|
||||
if (pAdd->isAlive())
|
||||
target = pAdd;
|
||||
pTarget = pAdd;
|
||||
}
|
||||
|
||||
if (target)
|
||||
DoCast(target, SPELL_DISPEL_MAGIC);
|
||||
if (pTarget)
|
||||
DoCast(pTarget, SPELL_DISPEL_MAGIC);
|
||||
|
||||
DispelTimer = 12000;
|
||||
} else DispelTimer -= diff;
|
||||
|
||||
if (SWPainTimer < diff)
|
||||
if (SWPainTimer <= diff)
|
||||
{
|
||||
if (Unit* pTarget = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true))
|
||||
DoCast(pTarget, Heroic ? SPELL_SW_PAIN_HEROIC : SPELL_SW_PAIN_NORMAL);
|
||||
@@ -754,14 +754,14 @@ struct TRINITY_DLL_DECL boss_yazzaiAI : public boss_priestess_lackey_commonAI
|
||||
|
||||
boss_priestess_lackey_commonAI::UpdateAI(diff);
|
||||
|
||||
if (Polymorph_Timer < diff)
|
||||
if (Polymorph_Timer <= diff)
|
||||
{
|
||||
if (Unit* target = SelectUnit(SELECT_TARGET_RANDOM, 0))
|
||||
if (Unit *pTarget = SelectUnit(SELECT_TARGET_RANDOM, 0))
|
||||
{
|
||||
DoCast(target, SPELL_POLYMORPH);
|
||||
DoCast(pTarget, SPELL_POLYMORPH);
|
||||
Polymorph_Timer = 20000;
|
||||
}
|
||||
}else Polymorph_Timer -= diff;
|
||||
} else Polymorph_Timer -= diff;
|
||||
|
||||
if (((m_creature->GetHealth()*100 / m_creature->GetMaxHealth()) < 35) && !HasIceBlocked)
|
||||
{
|
||||
@@ -769,42 +769,42 @@ struct TRINITY_DLL_DECL boss_yazzaiAI : public boss_priestess_lackey_commonAI
|
||||
HasIceBlocked = true;
|
||||
}
|
||||
|
||||
if (Blizzard_Timer < diff)
|
||||
if (Blizzard_Timer <= diff)
|
||||
{
|
||||
if (Unit* pUnit = SelectUnit(SELECT_TARGET_RANDOM, 0))
|
||||
DoCast(pUnit, SPELL_BLIZZARD);
|
||||
|
||||
Blizzard_Timer = 8000;
|
||||
}else Blizzard_Timer -= diff;
|
||||
} else Blizzard_Timer -= diff;
|
||||
|
||||
if (Ice_Lance_Timer < diff)
|
||||
if (Ice_Lance_Timer <= diff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(), SPELL_ICE_LANCE);
|
||||
Ice_Lance_Timer = 12000;
|
||||
}else Ice_Lance_Timer -= diff;
|
||||
} else Ice_Lance_Timer -= diff;
|
||||
|
||||
if (Cone_of_Cold_Timer < diff)
|
||||
if (Cone_of_Cold_Timer <= diff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(), SPELL_CONE_OF_COLD);
|
||||
Cone_of_Cold_Timer = 10000;
|
||||
}else Cone_of_Cold_Timer -= diff;
|
||||
} else Cone_of_Cold_Timer -= diff;
|
||||
|
||||
if (Frostbolt_Timer < diff)
|
||||
if (Frostbolt_Timer <= diff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(), SPELL_FROSTBOLT);
|
||||
Frostbolt_Timer = 8000;
|
||||
}else Frostbolt_Timer -= diff;
|
||||
} else Frostbolt_Timer -= diff;
|
||||
|
||||
if (Blink_Timer < diff)
|
||||
if (Blink_Timer <= diff)
|
||||
{
|
||||
bool InMeleeRange = false;
|
||||
std::list<HostilReference*>& t_list = m_creature->getThreatManager().getThreatList();
|
||||
for (std::list<HostilReference*>::iterator itr = t_list.begin(); itr!= t_list.end(); ++itr)
|
||||
{
|
||||
if (Unit* target = Unit::GetUnit(*m_creature, (*itr)->getUnitGuid()))
|
||||
if (Unit *pTarget = Unit::GetUnit(*m_creature, (*itr)->getUnitGuid()))
|
||||
{
|
||||
//if in melee range
|
||||
if (target->IsWithinDistInMap(m_creature, 5))
|
||||
if (pTarget->IsWithinDistInMap(m_creature, 5))
|
||||
{
|
||||
InMeleeRange = true;
|
||||
break;
|
||||
@@ -817,7 +817,7 @@ struct TRINITY_DLL_DECL boss_yazzaiAI : public boss_priestess_lackey_commonAI
|
||||
DoCast(m_creature, SPELL_BLINK);
|
||||
|
||||
Blink_Timer = 8000;
|
||||
}else Blink_Timer -= diff;
|
||||
} else Blink_Timer -= diff;
|
||||
|
||||
DoMeleeAttackIfReady();
|
||||
}
|
||||
@@ -875,16 +875,16 @@ struct TRINITY_DLL_DECL boss_warlord_salarisAI : public boss_priestess_lackey_co
|
||||
|
||||
boss_priestess_lackey_commonAI::UpdateAI(diff);
|
||||
|
||||
if (Intercept_Stun_Timer < diff)
|
||||
if (Intercept_Stun_Timer <= diff)
|
||||
{
|
||||
bool InMeleeRange = false;
|
||||
std::list<HostilReference*>& t_list = m_creature->getThreatManager().getThreatList();
|
||||
for (std::list<HostilReference*>::iterator itr = t_list.begin(); itr!= t_list.end(); ++itr)
|
||||
{
|
||||
if (Unit* target = Unit::GetUnit(*m_creature, (*itr)->getUnitGuid()))
|
||||
if (Unit *pTarget = Unit::GetUnit(*m_creature, (*itr)->getUnitGuid()))
|
||||
{
|
||||
//if in melee range
|
||||
if (target->IsWithinDistInMap(m_creature, ATTACK_DISTANCE))
|
||||
if (pTarget->IsWithinDistInMap(m_creature, ATTACK_DISTANCE))
|
||||
{
|
||||
InMeleeRange = true;
|
||||
break;
|
||||
@@ -900,37 +900,37 @@ struct TRINITY_DLL_DECL boss_warlord_salarisAI : public boss_priestess_lackey_co
|
||||
}
|
||||
|
||||
Intercept_Stun_Timer = 10000;
|
||||
}else Intercept_Stun_Timer -= diff;
|
||||
} else Intercept_Stun_Timer -= diff;
|
||||
|
||||
if (Disarm_Timer < diff)
|
||||
if (Disarm_Timer <= diff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(),SPELL_DISARM);
|
||||
Disarm_Timer = 6000;
|
||||
}else Disarm_Timer -= diff;
|
||||
} else Disarm_Timer -= diff;
|
||||
|
||||
if (Hamstring_Timer < diff)
|
||||
if (Hamstring_Timer <= diff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(), SPELL_HAMSTRING);
|
||||
Hamstring_Timer = 4500;
|
||||
}else Hamstring_Timer -= diff;
|
||||
} else Hamstring_Timer -= diff;
|
||||
|
||||
if (Mortal_Strike_Timer < diff)
|
||||
if (Mortal_Strike_Timer <= diff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(), SPELL_MORTAL_STRIKE);
|
||||
Mortal_Strike_Timer = 4500;
|
||||
}else Mortal_Strike_Timer -= diff;
|
||||
} else Mortal_Strike_Timer -= diff;
|
||||
|
||||
if (Piercing_Howl_Timer < diff)
|
||||
if (Piercing_Howl_Timer <= diff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(), SPELL_PIERCING_HOWL);
|
||||
Piercing_Howl_Timer = 10000;
|
||||
}else Piercing_Howl_Timer -= diff;
|
||||
} else Piercing_Howl_Timer -= diff;
|
||||
|
||||
if (Frightening_Shout_Timer < diff)
|
||||
if (Frightening_Shout_Timer <= diff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(), SPELL_FRIGHTENING_SHOUT);
|
||||
Frightening_Shout_Timer = 18000;
|
||||
}else Frightening_Shout_Timer -= diff;
|
||||
} else Frightening_Shout_Timer -= diff;
|
||||
|
||||
DoMeleeAttackIfReady();
|
||||
}
|
||||
@@ -997,13 +997,13 @@ struct TRINITY_DLL_DECL boss_garaxxasAI : public boss_priestess_lackey_commonAI
|
||||
|
||||
if (m_creature->IsWithinDistInMap(m_creature->getVictim(), ATTACK_DISTANCE))
|
||||
{
|
||||
if (Wing_Clip_Timer < diff)
|
||||
if (Wing_Clip_Timer <= diff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(), SPELL_WING_CLIP);
|
||||
Wing_Clip_Timer = 4000;
|
||||
}else Wing_Clip_Timer -= diff;
|
||||
} else Wing_Clip_Timer -= diff;
|
||||
|
||||
if (Freezing_Trap_Timer < diff)
|
||||
if (Freezing_Trap_Timer <= diff)
|
||||
{
|
||||
//attempt find go summoned from spell (casted by m_creature)
|
||||
GameObject* pGo = m_creature->GetGameObject(SPELL_FREEZING_TRAP);
|
||||
@@ -1017,35 +1017,35 @@ struct TRINITY_DLL_DECL boss_garaxxasAI : public boss_priestess_lackey_commonAI
|
||||
DoCast(m_creature->getVictim(), SPELL_FREEZING_TRAP);
|
||||
Freezing_Trap_Timer = 15000;
|
||||
}
|
||||
}else Freezing_Trap_Timer -= diff;
|
||||
} else Freezing_Trap_Timer -= diff;
|
||||
|
||||
DoMeleeAttackIfReady();
|
||||
}
|
||||
else
|
||||
{
|
||||
if (Concussive_Shot_Timer < diff)
|
||||
if (Concussive_Shot_Timer <= diff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(), SPELL_CONCUSSIVE_SHOT);
|
||||
Concussive_Shot_Timer = 8000;
|
||||
}else Concussive_Shot_Timer -= diff;
|
||||
} else Concussive_Shot_Timer -= diff;
|
||||
|
||||
if (Multi_Shot_Timer < diff)
|
||||
if (Multi_Shot_Timer <= diff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(), SPELL_MULTI_SHOT);
|
||||
Multi_Shot_Timer = 10000;
|
||||
}else Multi_Shot_Timer -= diff;
|
||||
} else Multi_Shot_Timer -= diff;
|
||||
|
||||
if (Aimed_Shot_Timer < diff)
|
||||
if (Aimed_Shot_Timer <= diff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(), SPELL_AIMED_SHOT);
|
||||
Aimed_Shot_Timer = 6000;
|
||||
}else Aimed_Shot_Timer -= diff;
|
||||
} else Aimed_Shot_Timer -= diff;
|
||||
|
||||
if (Shoot_Timer < diff)
|
||||
if (Shoot_Timer <= diff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(), SPELL_SHOOT);
|
||||
Shoot_Timer = 2500;
|
||||
}else Shoot_Timer -= diff;
|
||||
} else Shoot_Timer -= diff;
|
||||
}
|
||||
}
|
||||
};
|
||||
@@ -1097,20 +1097,20 @@ struct TRINITY_DLL_DECL boss_apokoAI : public boss_priestess_lackey_commonAI
|
||||
|
||||
boss_priestess_lackey_commonAI::UpdateAI(diff);
|
||||
|
||||
if (Totem_Timer < diff)
|
||||
if (Totem_Timer <= diff)
|
||||
{
|
||||
DoCast(m_creature, RAND(SPELL_WINDFURY_TOTEM,SPELL_FIRE_NOVA_TOTEM,SPELL_EARTHBIND_TOTEM));
|
||||
++Totem_Amount;
|
||||
Totem_Timer = Totem_Amount*2000;
|
||||
} else Totem_Timer -= diff;
|
||||
|
||||
if (War_Stomp_Timer < diff)
|
||||
if (War_Stomp_Timer <= diff)
|
||||
{
|
||||
DoCast(m_creature, SPELL_WAR_STOMP);
|
||||
War_Stomp_Timer = 10000;
|
||||
} else War_Stomp_Timer -= diff;
|
||||
|
||||
if (Purge_Timer < diff)
|
||||
if (Purge_Timer <= diff)
|
||||
{
|
||||
if (Unit* pUnit = SelectUnit(SELECT_TARGET_RANDOM, 0))
|
||||
DoCast(pUnit, SPELL_PURGE);
|
||||
@@ -1118,13 +1118,13 @@ struct TRINITY_DLL_DECL boss_apokoAI : public boss_priestess_lackey_commonAI
|
||||
Purge_Timer = 15000;
|
||||
} else Purge_Timer -= diff;
|
||||
|
||||
if (Frost_Shock_Timer < diff)
|
||||
if (Frost_Shock_Timer <= diff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(), SPELL_FROST_SHOCK);
|
||||
Frost_Shock_Timer = 7000;
|
||||
} else Frost_Shock_Timer -= diff;
|
||||
|
||||
if (Healing_Wave_Timer < diff)
|
||||
if (Healing_Wave_Timer <= diff)
|
||||
{
|
||||
// std::vector<Add*>::iterator itr = Group.begin() + rand()%Group.size();
|
||||
// uint64 guid = (*itr)->guid;
|
||||
@@ -1187,25 +1187,25 @@ struct TRINITY_DLL_DECL boss_zelfanAI : public boss_priestess_lackey_commonAI
|
||||
|
||||
boss_priestess_lackey_commonAI::UpdateAI(diff);
|
||||
|
||||
if (Goblin_Dragon_Gun_Timer < diff)
|
||||
if (Goblin_Dragon_Gun_Timer <= diff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(), SPELL_GOBLIN_DRAGON_GUN);
|
||||
Goblin_Dragon_Gun_Timer = 10000;
|
||||
}else Goblin_Dragon_Gun_Timer -= diff;
|
||||
} else Goblin_Dragon_Gun_Timer -= diff;
|
||||
|
||||
if (Rocket_Launch_Timer < diff)
|
||||
if (Rocket_Launch_Timer <= diff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(), SPELL_ROCKET_LAUNCH);
|
||||
Rocket_Launch_Timer = 9000;
|
||||
}else Rocket_Launch_Timer -= diff;
|
||||
} else Rocket_Launch_Timer -= diff;
|
||||
|
||||
if (Fel_Iron_Bomb_Timer < diff)
|
||||
if (Fel_Iron_Bomb_Timer <= diff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(), SPELL_FEL_IRON_BOMB);
|
||||
Fel_Iron_Bomb_Timer = 15000;
|
||||
}else Fel_Iron_Bomb_Timer -= diff;
|
||||
} else Fel_Iron_Bomb_Timer -= diff;
|
||||
|
||||
if (Recombobulate_Timer < diff)
|
||||
if (Recombobulate_Timer <= diff)
|
||||
{
|
||||
for (uint8 i = 0; i < MAX_ACTIVE_LACKEY; ++i)
|
||||
{
|
||||
@@ -1219,13 +1219,13 @@ struct TRINITY_DLL_DECL boss_zelfanAI : public boss_priestess_lackey_commonAI
|
||||
}
|
||||
}
|
||||
Recombobulate_Timer = 2000;
|
||||
}else Recombobulate_Timer -= diff;
|
||||
} else Recombobulate_Timer -= diff;
|
||||
|
||||
if (High_Explosive_Sheep_Timer < diff)
|
||||
if (High_Explosive_Sheep_Timer <= diff)
|
||||
{
|
||||
DoCast(m_creature, SPELL_HIGH_EXPLOSIVE_SHEEP);
|
||||
High_Explosive_Sheep_Timer = 65000;
|
||||
}else High_Explosive_Sheep_Timer -= diff;
|
||||
} else High_Explosive_Sheep_Timer -= diff;
|
||||
|
||||
DoMeleeAttackIfReady();
|
||||
}
|
||||
@@ -1253,7 +1253,7 @@ CreatureAI* GetAI_zelfan(Creature* pCreature)
|
||||
//
|
||||
// void UpdateAI(const uint32 diff)
|
||||
// {
|
||||
// if (Explosion_Timer < diff)
|
||||
// if (Explosion_Timer <= diff)
|
||||
// {
|
||||
// DoCast(m_creature->getVictim(), SPELL_SHEEP_EXPLOSION);
|
||||
// }else
|
||||
|
||||
+6
-6
@@ -110,7 +110,7 @@ struct TRINITY_DLL_DECL boss_selin_fireheartAI : public ScriptedAI
|
||||
// Small door opened after event are expected to be closed by default
|
||||
// Set Inst data for encounter
|
||||
pInstance->SetData(DATA_SELIN_EVENT, NOT_STARTED);
|
||||
}else error_log(ERROR_INST_DATA);
|
||||
} else error_log(ERROR_INST_DATA);
|
||||
|
||||
DrainLifeTimer = 3000 + rand()%4000;
|
||||
DrainManaTimer = DrainLifeTimer + 5000;
|
||||
@@ -239,7 +239,7 @@ struct TRINITY_DLL_DECL boss_selin_fireheartAI : public ScriptedAI
|
||||
uint32 maxPowerMana = m_creature->GetMaxPower(POWER_MANA);
|
||||
if (maxPowerMana && ((m_creature->GetPower(POWER_MANA)*100 / maxPowerMana) < 10))
|
||||
{
|
||||
if (DrainLifeTimer < diff)
|
||||
if (DrainLifeTimer <= diff)
|
||||
{
|
||||
DoCast(SelectUnit(SELECT_TARGET_RANDOM, 0), SPELL_DRAIN_LIFE);
|
||||
DrainLifeTimer = 10000;
|
||||
@@ -248,7 +248,7 @@ struct TRINITY_DLL_DECL boss_selin_fireheartAI : public ScriptedAI
|
||||
// Heroic only
|
||||
if (Heroic)
|
||||
{
|
||||
if (DrainManaTimer < diff)
|
||||
if (DrainManaTimer <= diff)
|
||||
{
|
||||
DoCast(SelectUnit(SELECT_TARGET_RANDOM, 1), SPELL_DRAIN_MANA);
|
||||
DrainManaTimer = 10000;
|
||||
@@ -256,7 +256,7 @@ struct TRINITY_DLL_DECL boss_selin_fireheartAI : public ScriptedAI
|
||||
}
|
||||
}
|
||||
|
||||
if (FelExplosionTimer < diff)
|
||||
if (FelExplosionTimer <= diff)
|
||||
{
|
||||
if (!m_creature->IsNonMeleeSpellCasted(false))
|
||||
{
|
||||
@@ -269,7 +269,7 @@ struct TRINITY_DLL_DECL boss_selin_fireheartAI : public ScriptedAI
|
||||
maxPowerMana = m_creature->GetMaxPower(POWER_MANA);
|
||||
if (maxPowerMana && ((m_creature->GetPower(POWER_MANA)*100 / maxPowerMana) < 10))
|
||||
{
|
||||
if (DrainCrystalTimer < diff)
|
||||
if (DrainCrystalTimer <= diff)
|
||||
{
|
||||
SelectNearestCrystal();
|
||||
if (Heroic) DrainCrystalTimer = 10000 + rand()%5000;
|
||||
@@ -281,7 +281,7 @@ struct TRINITY_DLL_DECL boss_selin_fireheartAI : public ScriptedAI
|
||||
{
|
||||
if (IsDraining)
|
||||
{
|
||||
if (EmpowerTimer < diff)
|
||||
if (EmpowerTimer <= diff)
|
||||
{
|
||||
IsDraining = false;
|
||||
DrainingCrystal = false;
|
||||
|
||||
@@ -151,31 +151,31 @@ struct TRINITY_DLL_DECL boss_vexallusAI : public ScriptedAI
|
||||
m_creature->SummonCreature(NPC_PURE_ENERGY, 0.0f, 0.0f, 0.0f, 0.0f, TEMPSUMMON_CORPSE_DESPAWN, 0);
|
||||
}
|
||||
|
||||
if (ChainLightningTimer < diff)
|
||||
if (ChainLightningTimer <= diff)
|
||||
{
|
||||
if (Unit* target = SelectUnit(SELECT_TARGET_RANDOM, 0))
|
||||
DoCast(target, Heroic ? SPELL_H_CHAIN_LIGHTNING : SPELL_CHAIN_LIGHTNING);
|
||||
if (Unit *pTarget = SelectUnit(SELECT_TARGET_RANDOM, 0))
|
||||
DoCast(pTarget, Heroic ? SPELL_H_CHAIN_LIGHTNING : SPELL_CHAIN_LIGHTNING);
|
||||
|
||||
ChainLightningTimer = 8000;
|
||||
}else ChainLightningTimer -= diff;
|
||||
} else ChainLightningTimer -= diff;
|
||||
|
||||
if (ArcaneShockTimer < diff)
|
||||
if (ArcaneShockTimer <= diff)
|
||||
{
|
||||
if (Unit* target = SelectUnit(SELECT_TARGET_RANDOM, 0))
|
||||
if (target)
|
||||
DoCast(target, Heroic ? SPELL_H_ARCANE_SHOCK : SPELL_ARCANE_SHOCK);
|
||||
if (Unit *pTarget = SelectUnit(SELECT_TARGET_RANDOM, 0))
|
||||
if (pTarget)
|
||||
DoCast(pTarget, Heroic ? SPELL_H_ARCANE_SHOCK : SPELL_ARCANE_SHOCK);
|
||||
|
||||
ArcaneShockTimer = 8000;
|
||||
}else ArcaneShockTimer -= diff;
|
||||
} else ArcaneShockTimer -= diff;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (OverloadTimer < diff)
|
||||
if (OverloadTimer <= diff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(), SPELL_OVERLOAD);
|
||||
|
||||
OverloadTimer = 2000;
|
||||
}else OverloadTimer -= diff;
|
||||
} else OverloadTimer -= diff;
|
||||
}
|
||||
|
||||
DoMeleeAttackIfReady();
|
||||
|
||||
+1
-1
@@ -112,7 +112,7 @@ struct TRINITY_DLL_DECL npc_kalecgosAI : public ScriptedAI
|
||||
m_creature->UpdateEntry(NPC_KAEL);
|
||||
|
||||
m_uiTransformTimer = 0;
|
||||
}else m_uiTransformTimer -= uiDiff;
|
||||
} else m_uiTransformTimer -= uiDiff;
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
@@ -64,29 +64,29 @@ struct TRINITY_DLL_DECL boss_baron_geddonAI : public ScriptedAI
|
||||
}
|
||||
|
||||
//Inferno_Timer
|
||||
if (Inferno_Timer < diff)
|
||||
if (Inferno_Timer <= diff)
|
||||
{
|
||||
DoCast(m_creature,SPELL_INFERNO);
|
||||
Inferno_Timer = 45000;
|
||||
}else Inferno_Timer -= diff;
|
||||
} else Inferno_Timer -= diff;
|
||||
|
||||
//IgniteMana_Timer
|
||||
if (IgniteMana_Timer < diff)
|
||||
if (IgniteMana_Timer <= diff)
|
||||
{
|
||||
if (Unit* target = SelectUnit(SELECT_TARGET_RANDOM,0))
|
||||
DoCast(target,SPELL_IGNITEMANA);
|
||||
if (Unit *pTarget = SelectUnit(SELECT_TARGET_RANDOM,0))
|
||||
DoCast(pTarget,SPELL_IGNITEMANA);
|
||||
|
||||
IgniteMana_Timer = 30000;
|
||||
}else IgniteMana_Timer -= diff;
|
||||
} else IgniteMana_Timer -= diff;
|
||||
|
||||
//LivingBomb_Timer
|
||||
if (LivingBomb_Timer < diff)
|
||||
if (LivingBomb_Timer <= diff)
|
||||
{
|
||||
if (Unit* target = SelectUnit(SELECT_TARGET_RANDOM,0))
|
||||
DoCast(target,SPELL_LIVINGBOMB);
|
||||
if (Unit *pTarget = SelectUnit(SELECT_TARGET_RANDOM,0))
|
||||
DoCast(pTarget,SPELL_LIVINGBOMB);
|
||||
|
||||
LivingBomb_Timer = 35000;
|
||||
}else LivingBomb_Timer -= diff;
|
||||
} else LivingBomb_Timer -= diff;
|
||||
|
||||
DoMeleeAttackIfReady();
|
||||
}
|
||||
|
||||
@@ -59,18 +59,18 @@ struct TRINITY_DLL_DECL boss_garrAI : public ScriptedAI
|
||||
return;
|
||||
|
||||
//AntiMagicPulse_Timer
|
||||
if (AntiMagicPulse_Timer < diff)
|
||||
if (AntiMagicPulse_Timer <= diff)
|
||||
{
|
||||
DoCast(m_creature,SPELL_ANTIMAGICPULSE);
|
||||
AntiMagicPulse_Timer = 10000 + rand()%5000;
|
||||
}else AntiMagicPulse_Timer -= diff;
|
||||
} else AntiMagicPulse_Timer -= diff;
|
||||
|
||||
//MagmaShackles_Timer
|
||||
if (MagmaShackles_Timer < diff)
|
||||
if (MagmaShackles_Timer <= diff)
|
||||
{
|
||||
DoCast(m_creature,SPELL_MAGMASHACKLES);
|
||||
MagmaShackles_Timer = 8000 + rand()%4000;
|
||||
}else MagmaShackles_Timer -= diff;
|
||||
} else MagmaShackles_Timer -= diff;
|
||||
|
||||
DoMeleeAttackIfReady();
|
||||
}
|
||||
@@ -97,13 +97,13 @@ struct TRINITY_DLL_DECL mob_fireswornAI : public ScriptedAI
|
||||
return;
|
||||
|
||||
//Immolate_Timer
|
||||
if (Immolate_Timer < diff)
|
||||
if (Immolate_Timer <= diff)
|
||||
{
|
||||
if (Unit* target = SelectUnit(SELECT_TARGET_RANDOM,0))
|
||||
DoCast(target,SPELL_IMMOLATE);
|
||||
if (Unit *pTarget = SelectUnit(SELECT_TARGET_RANDOM,0))
|
||||
DoCast(pTarget,SPELL_IMMOLATE);
|
||||
|
||||
Immolate_Timer = 5000 + rand()%5000;
|
||||
}else Immolate_Timer -= diff;
|
||||
Immolate_Timer = urand(5000,10000);
|
||||
} else Immolate_Timer -= diff;
|
||||
|
||||
//Cast Erruption and let them die
|
||||
if (m_creature->GetHealth() <= m_creature->GetMaxHealth() * 0.10)
|
||||
|
||||
@@ -50,28 +50,29 @@ struct TRINITY_DLL_DECL boss_gehennasAI : public ScriptedAI
|
||||
return;
|
||||
|
||||
//ShadowBolt_Timer
|
||||
if (ShadowBolt_Timer < diff)
|
||||
if (ShadowBolt_Timer <= diff)
|
||||
{
|
||||
if (Unit* bTarget = SelectUnit(SELECT_TARGET_RANDOM,1))
|
||||
DoCast(bTarget,SPELL_SHADOWBOLT);
|
||||
if (Unit *pTarget = SelectUnit(SELECT_TARGET_RANDOM, 1))
|
||||
DoCast(pTarget, SPELL_SHADOWBOLT);
|
||||
|
||||
ShadowBolt_Timer = 7000;
|
||||
}else ShadowBolt_Timer -= diff;
|
||||
} else ShadowBolt_Timer -= diff;
|
||||
|
||||
//RainOfFire_Timer
|
||||
if (RainOfFire_Timer < diff)
|
||||
if (RainOfFire_Timer <= diff)
|
||||
{
|
||||
if (Unit* target = SelectUnit(SELECT_TARGET_RANDOM,0))
|
||||
DoCast(target,SPELL_RAINOFFIRE);
|
||||
if (Unit *pTarget = SelectUnit(SELECT_TARGET_RANDOM, 0))
|
||||
DoCast(pTarget, SPELL_RAINOFFIRE);
|
||||
|
||||
RainOfFire_Timer = 4000 + rand()%8000;
|
||||
}else RainOfFire_Timer -= diff;
|
||||
RainOfFire_Timer = urand(4000,12000);
|
||||
} else RainOfFire_Timer -= diff;
|
||||
|
||||
//GehennasCurse_Timer
|
||||
if (GehennasCurse_Timer < diff)
|
||||
if (GehennasCurse_Timer <= diff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(),SPELL_GEHENNASCURSE);
|
||||
GehennasCurse_Timer = 22000 + rand()%8000;
|
||||
}else GehennasCurse_Timer -= diff;
|
||||
GehennasCurse_Timer = urand(22000,30000);
|
||||
} else GehennasCurse_Timer -= diff;
|
||||
|
||||
DoMeleeAttackIfReady();
|
||||
}
|
||||
|
||||
@@ -52,25 +52,25 @@ struct TRINITY_DLL_DECL boss_lucifronAI : public ScriptedAI
|
||||
return;
|
||||
|
||||
//Impending doom timer
|
||||
if (ImpendingDoom_Timer < diff)
|
||||
if (ImpendingDoom_Timer <= diff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(),SPELL_IMPENDINGDOOM);
|
||||
ImpendingDoom_Timer = 20000;
|
||||
}else ImpendingDoom_Timer -= diff;
|
||||
} else ImpendingDoom_Timer -= diff;
|
||||
|
||||
//Lucifron's curse timer
|
||||
if (LucifronCurse_Timer < diff)
|
||||
if (LucifronCurse_Timer <= diff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(),SPELL_LUCIFRONCURSE);
|
||||
LucifronCurse_Timer = 15000;
|
||||
}else LucifronCurse_Timer -= diff;
|
||||
} else LucifronCurse_Timer -= diff;
|
||||
|
||||
//Shadowshock
|
||||
if (ShadowShock_Timer < diff)
|
||||
if (ShadowShock_Timer <= diff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(),SPELL_SHADOWSHOCK);
|
||||
ShadowShock_Timer = 6000;
|
||||
}else ShadowShock_Timer -= diff;
|
||||
} else ShadowShock_Timer -= diff;
|
||||
|
||||
DoMeleeAttackIfReady();
|
||||
}
|
||||
|
||||
@@ -58,28 +58,28 @@ struct TRINITY_DLL_DECL boss_magmadarAI : public ScriptedAI
|
||||
return;
|
||||
|
||||
//Frenzy_Timer
|
||||
if (Frenzy_Timer < diff)
|
||||
if (Frenzy_Timer <= diff)
|
||||
{
|
||||
DoScriptText(EMOTE_FRENZY, m_creature);
|
||||
DoCast(m_creature,SPELL_FRENZY);
|
||||
Frenzy_Timer = 15000;
|
||||
}else Frenzy_Timer -= diff;
|
||||
} else Frenzy_Timer -= diff;
|
||||
|
||||
//Panic_Timer
|
||||
if (Panic_Timer < diff)
|
||||
if (Panic_Timer <= diff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(),SPELL_PANIC);
|
||||
Panic_Timer = 35000;
|
||||
}else Panic_Timer -= diff;
|
||||
} else Panic_Timer -= diff;
|
||||
|
||||
//Lavabomb_Timer
|
||||
if (Lavabomb_Timer < diff)
|
||||
if (Lavabomb_Timer <= diff)
|
||||
{
|
||||
if (Unit* target = SelectUnit(SELECT_TARGET_RANDOM,0))
|
||||
DoCast(target,SPELL_LAVABOMB_ALT);
|
||||
if (Unit *pTarget = SelectUnit(SELECT_TARGET_RANDOM,0))
|
||||
DoCast(pTarget,SPELL_LAVABOMB_ALT);
|
||||
|
||||
Lavabomb_Timer = 12000;
|
||||
}else Lavabomb_Timer -= diff;
|
||||
} else Lavabomb_Timer -= diff;
|
||||
|
||||
DoMeleeAttackIfReady();
|
||||
}
|
||||
|
||||
+6
-6
@@ -91,29 +91,29 @@ struct TRINITY_DLL_DECL boss_majordomoAI : public ScriptedAI
|
||||
}
|
||||
|
||||
//MagicReflection_Timer
|
||||
// if (MagicReflection_Timer < diff)
|
||||
// if (MagicReflection_Timer <= diff)
|
||||
// {
|
||||
// DoCast(m_creature, SPELL_MAGICREFLECTION);
|
||||
|
||||
//60 seconds until we should cast this agian
|
||||
// MagicReflection_Timer = 30000;
|
||||
// }else MagicReflection_Timer -= diff;
|
||||
// } else MagicReflection_Timer -= diff;
|
||||
|
||||
//DamageReflection_Timer
|
||||
// if (DamageReflection_Timer < diff)
|
||||
// if (DamageReflection_Timer <= diff)
|
||||
// {
|
||||
// DoCast(m_creature, SPELL_DAMAGEREFLECTION);
|
||||
|
||||
//60 seconds until we should cast this agian
|
||||
// DamageReflection_Timer = 30000;
|
||||
// }else DamageReflection_Timer -= diff;
|
||||
// } else DamageReflection_Timer -= diff;
|
||||
|
||||
//Blastwave_Timer
|
||||
if (Blastwave_Timer < diff)
|
||||
if (Blastwave_Timer <= diff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(),SPELL_BLASTWAVE);
|
||||
Blastwave_Timer = 10000;
|
||||
}else Blastwave_Timer -= diff;
|
||||
} else Blastwave_Timer -= diff;
|
||||
|
||||
DoMeleeAttackIfReady();
|
||||
}
|
||||
|
||||
@@ -136,7 +136,7 @@ struct TRINITY_DLL_DECL boss_ragnarosAI : public ScriptedAI
|
||||
|
||||
void UpdateAI(const uint32 diff)
|
||||
{
|
||||
if (WasBanished && Attack_Timer < diff)
|
||||
if (WasBanished && Attack_Timer <= diff)
|
||||
{
|
||||
//Become unbanished again
|
||||
m_creature->setFaction(14);
|
||||
@@ -155,54 +155,50 @@ struct TRINITY_DLL_DECL boss_ragnarosAI : public ScriptedAI
|
||||
return;
|
||||
|
||||
//WrathOfRagnaros_Timer
|
||||
if (WrathOfRagnaros_Timer < diff)
|
||||
if (WrathOfRagnaros_Timer <= diff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(),SPELL_WRATHOFRAGNAROS);
|
||||
|
||||
if (rand()%2 == 0)
|
||||
{
|
||||
if (urand(0,1))
|
||||
DoScriptText(SAY_WRATH, m_creature);
|
||||
}
|
||||
|
||||
WrathOfRagnaros_Timer = 30000;
|
||||
}else WrathOfRagnaros_Timer -= diff;
|
||||
} else WrathOfRagnaros_Timer -= diff;
|
||||
|
||||
//HandOfRagnaros_Timer
|
||||
if (HandOfRagnaros_Timer < diff)
|
||||
if (HandOfRagnaros_Timer <= diff)
|
||||
{
|
||||
DoCast(m_creature,SPELL_HANDOFRAGNAROS);
|
||||
|
||||
if (rand()%2==0)
|
||||
{
|
||||
if (urand(0,1))
|
||||
DoScriptText(SAY_HAND, m_creature);
|
||||
}
|
||||
|
||||
HandOfRagnaros_Timer = 25000;
|
||||
}else HandOfRagnaros_Timer -= diff;
|
||||
} else HandOfRagnaros_Timer -= diff;
|
||||
|
||||
//LavaBurst_Timer
|
||||
if (LavaBurst_Timer < diff)
|
||||
if (LavaBurst_Timer <= diff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(),SPELL_LAVABURST);
|
||||
LavaBurst_Timer = 10000;
|
||||
}else LavaBurst_Timer -= diff;
|
||||
} else LavaBurst_Timer -= diff;
|
||||
|
||||
//Erruption_Timer
|
||||
if (LavaBurst_Timer < diff)
|
||||
if (LavaBurst_Timer <= diff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(),SPELL_ERRUPTION);
|
||||
Erruption_Timer = 20000 + rand()%25000;
|
||||
}else Erruption_Timer -= diff;
|
||||
Erruption_Timer = urand(20000,45000);
|
||||
} else Erruption_Timer -= diff;
|
||||
|
||||
//ElementalFire_Timer
|
||||
if (ElementalFire_Timer < diff)
|
||||
if (ElementalFire_Timer <= diff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(),SPELL_ELEMENTALFIRE);
|
||||
ElementalFire_Timer = 10000 + rand()%4000;
|
||||
}else ElementalFire_Timer -= diff;
|
||||
ElementalFire_Timer = urand(10000,14000);
|
||||
} else ElementalFire_Timer -= diff;
|
||||
|
||||
//Submerge_Timer
|
||||
if (!WasBanished && Submerge_Timer < diff)
|
||||
if (!WasBanished && Submerge_Timer <= diff)
|
||||
{
|
||||
//Creature spawning and ragnaros becomming unattackable
|
||||
//is not very well supported in the core
|
||||
@@ -254,7 +250,7 @@ struct TRINITY_DLL_DECL boss_ragnarosAI : public ScriptedAI
|
||||
}
|
||||
|
||||
Submerge_Timer = 180000;
|
||||
}else Submerge_Timer -= diff;
|
||||
} else Submerge_Timer -= diff;
|
||||
|
||||
//If we are within range melee the target
|
||||
if (m_creature->IsWithinMeleeRange(m_creature->getVictim()))
|
||||
@@ -269,7 +265,7 @@ struct TRINITY_DLL_DECL boss_ragnarosAI : public ScriptedAI
|
||||
else
|
||||
{
|
||||
//MagmaBurst_Timer
|
||||
if (MagmaBurst_Timer < diff)
|
||||
if (MagmaBurst_Timer <= diff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(),SPELL_MAGMABURST);
|
||||
|
||||
@@ -281,7 +277,7 @@ struct TRINITY_DLL_DECL boss_ragnarosAI : public ScriptedAI
|
||||
}
|
||||
|
||||
MagmaBurst_Timer = 2500;
|
||||
}else MagmaBurst_Timer -= diff;
|
||||
} else MagmaBurst_Timer -= diff;
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
@@ -57,53 +57,50 @@ struct TRINITY_DLL_DECL boss_shazzrahAI : public ScriptedAI
|
||||
return;
|
||||
|
||||
//ArcaneExplosion_Timer
|
||||
if (ArcaneExplosion_Timer < diff)
|
||||
if (ArcaneExplosion_Timer <= diff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(),SPELL_ARCANEEXPLOSION);
|
||||
ArcaneExplosion_Timer = 5000 + rand()%4000;
|
||||
}else ArcaneExplosion_Timer -= diff;
|
||||
} else ArcaneExplosion_Timer -= diff;
|
||||
|
||||
//ShazzrahCurse_Timer
|
||||
if (ShazzrahCurse_Timer < diff)
|
||||
if (ShazzrahCurse_Timer <= diff)
|
||||
{
|
||||
Unit* target = NULL;
|
||||
target = SelectUnit(SELECT_TARGET_RANDOM,0);
|
||||
if (target) DoCast(target,SPELL_SHAZZRAHCURSE);
|
||||
Unit *pTarget = NULL;
|
||||
pTarget = SelectUnit(SELECT_TARGET_RANDOM,0);
|
||||
if (pTarget) DoCast(pTarget,SPELL_SHAZZRAHCURSE);
|
||||
|
||||
ShazzrahCurse_Timer = 25000 + rand()%5000;
|
||||
}else ShazzrahCurse_Timer -= diff;
|
||||
} else ShazzrahCurse_Timer -= diff;
|
||||
|
||||
//DeadenMagic_Timer
|
||||
if (DeadenMagic_Timer < diff)
|
||||
if (DeadenMagic_Timer <= diff)
|
||||
{
|
||||
DoCast(m_creature,SPELL_DEADENMAGIC);
|
||||
DeadenMagic_Timer = 35000;
|
||||
}else DeadenMagic_Timer -= diff;
|
||||
} else DeadenMagic_Timer -= diff;
|
||||
|
||||
//Countspell_Timer
|
||||
if (Countspell_Timer < diff)
|
||||
if (Countspell_Timer <= diff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(),SPELL_COUNTERSPELL);
|
||||
Countspell_Timer = 16000 + rand()%4000;
|
||||
}else Countspell_Timer -= diff;
|
||||
} else Countspell_Timer -= diff;
|
||||
|
||||
//Blink_Timer
|
||||
if (Blink_Timer < diff)
|
||||
if (Blink_Timer <= diff)
|
||||
{
|
||||
// Teleporting him to a random gamer and casting Arcane Explosion after that.
|
||||
// Blink is not working cause of LoS System we need to do this hardcoded.
|
||||
Unit* target = NULL;
|
||||
target = SelectUnit(SELECT_TARGET_RANDOM,0);
|
||||
|
||||
if (target)
|
||||
if (Unit *pTarget = SelectTarget(SELECT_TARGET_RANDOM,0, 100, true))
|
||||
{
|
||||
DoTeleportTo(target->GetPositionX(), target->GetPositionY(), target->GetPositionZ());
|
||||
DoCast(target,SPELL_ARCANEEXPLOSION);
|
||||
DoResetThreat();
|
||||
DoTeleportTo(pTarget->GetPositionX(), pTarget->GetPositionY(), pTarget->GetPositionZ());
|
||||
DoCast(pTarget, SPELL_ARCANEEXPLOSION);
|
||||
DoResetThreat();
|
||||
}
|
||||
|
||||
Blink_Timer = 45000;
|
||||
}else Blink_Timer -= diff;
|
||||
} else Blink_Timer -= diff;
|
||||
|
||||
DoMeleeAttackIfReady();
|
||||
}
|
||||
|
||||
+29
-29
@@ -64,55 +64,55 @@ struct TRINITY_DLL_DECL boss_sulfuronAI : public ScriptedAI
|
||||
return;
|
||||
|
||||
//DemoralizingShout_Timer
|
||||
if (DemoralizingShout_Timer < diff)
|
||||
if (DemoralizingShout_Timer <= diff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(),SPELL_DEMORALIZINGSHOUT);
|
||||
DemoralizingShout_Timer = 15000 + rand()%5000;
|
||||
}else DemoralizingShout_Timer -= diff;
|
||||
} else DemoralizingShout_Timer -= diff;
|
||||
|
||||
//Inspire_Timer
|
||||
if (Inspire_Timer < diff)
|
||||
if (Inspire_Timer <= diff)
|
||||
{
|
||||
Creature* target = NULL;
|
||||
Creature *pTarget = NULL;
|
||||
std::list<Creature*> pList = DoFindFriendlyMissingBuff(45.0f,SPELL_INSPIRE);
|
||||
if (!pList.empty())
|
||||
{
|
||||
std::list<Creature*>::iterator i = pList.begin();
|
||||
advance(i, (rand()%pList.size()));
|
||||
target = (*i);
|
||||
pTarget = (*i);
|
||||
}
|
||||
|
||||
if (target)
|
||||
DoCast(target,SPELL_INSPIRE);
|
||||
if (pTarget)
|
||||
DoCast(pTarget,SPELL_INSPIRE);
|
||||
|
||||
DoCast(m_creature,SPELL_INSPIRE);
|
||||
|
||||
Inspire_Timer = 20000 + rand()%6000;
|
||||
}else Inspire_Timer -= diff;
|
||||
} else Inspire_Timer -= diff;
|
||||
|
||||
//Knockdown_Timer
|
||||
if (Knockdown_Timer < diff)
|
||||
if (Knockdown_Timer <= diff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(),SPELL_KNOCKDOWN);
|
||||
Knockdown_Timer = 12000 + rand()%3000;
|
||||
}else Knockdown_Timer -= diff;
|
||||
} else Knockdown_Timer -= diff;
|
||||
|
||||
//Flamespear_Timer
|
||||
if (Flamespear_Timer < diff)
|
||||
if (Flamespear_Timer <= diff)
|
||||
{
|
||||
Unit* target = NULL;
|
||||
target = SelectUnit(SELECT_TARGET_RANDOM,0);
|
||||
if (target) DoCast(target,SPELL_FLAMESPEAR);
|
||||
Unit *pTarget = NULL;
|
||||
pTarget = SelectUnit(SELECT_TARGET_RANDOM,0);
|
||||
if (pTarget) DoCast(pTarget,SPELL_FLAMESPEAR);
|
||||
|
||||
Flamespear_Timer = 12000 + rand()%4000;
|
||||
}else Flamespear_Timer -= diff;
|
||||
} else Flamespear_Timer -= diff;
|
||||
|
||||
//DarkStrike_Timer
|
||||
if (Darkstrike_Timer < diff)
|
||||
if (Darkstrike_Timer <= diff)
|
||||
{
|
||||
DoCast(m_creature, SPELL_DARKSTRIKE);
|
||||
Darkstrike_Timer = 15000 + rand()%3000;
|
||||
}else Darkstrike_Timer -= diff;
|
||||
} else Darkstrike_Timer -= diff;
|
||||
|
||||
DoMeleeAttackIfReady();
|
||||
}
|
||||
@@ -143,7 +143,7 @@ struct TRINITY_DLL_DECL mob_flamewaker_priestAI : public ScriptedAI
|
||||
return;
|
||||
|
||||
//Casting Heal to Sulfuron or other Guards.
|
||||
if (Heal_Timer < diff)
|
||||
if (Heal_Timer <= diff)
|
||||
{
|
||||
Unit* pUnit = DoSelectLowestHpFriendly(60.0f, 1);
|
||||
if (!pUnit)
|
||||
@@ -152,27 +152,27 @@ struct TRINITY_DLL_DECL mob_flamewaker_priestAI : public ScriptedAI
|
||||
DoCast(pUnit, SPELL_HEAL);
|
||||
|
||||
Heal_Timer = 15000+rand()%5000;
|
||||
}else Heal_Timer -= diff;
|
||||
} else Heal_Timer -= diff;
|
||||
|
||||
//ShadowWordPain_Timer
|
||||
if (ShadowWordPain_Timer < diff)
|
||||
if (ShadowWordPain_Timer <= diff)
|
||||
{
|
||||
Unit* target = NULL;
|
||||
target = SelectUnit(SELECT_TARGET_RANDOM,0);
|
||||
if (target) DoCast(target,SPELL_SHADOWWORDPAIN);
|
||||
Unit *pTarget = NULL;
|
||||
pTarget = SelectUnit(SELECT_TARGET_RANDOM,0);
|
||||
if (pTarget) DoCast(pTarget,SPELL_SHADOWWORDPAIN);
|
||||
|
||||
ShadowWordPain_Timer = 18000+rand()%8000;
|
||||
}else ShadowWordPain_Timer -= diff;
|
||||
} else ShadowWordPain_Timer -= diff;
|
||||
|
||||
//Immolate_Timer
|
||||
if (Immolate_Timer < diff)
|
||||
if (Immolate_Timer <= diff)
|
||||
{
|
||||
Unit* target = NULL;
|
||||
target = SelectUnit(SELECT_TARGET_RANDOM,0);
|
||||
if (target) DoCast(target,SPELL_IMMOLATE);
|
||||
Unit *pTarget = NULL;
|
||||
pTarget = SelectUnit(SELECT_TARGET_RANDOM,0);
|
||||
if (pTarget) DoCast(pTarget,SPELL_IMMOLATE);
|
||||
|
||||
Immolate_Timer = 15000+rand()%10000;
|
||||
}else Immolate_Timer -= diff;
|
||||
} else Immolate_Timer -= diff;
|
||||
|
||||
DoMeleeAttackIfReady();
|
||||
}
|
||||
|
||||
@@ -146,7 +146,7 @@ struct TRINITY_DLL_DECL npc_unworthy_initiateAI : public ScriptedAI
|
||||
}
|
||||
}
|
||||
|
||||
void EventStart(Creature* anchor, Player* target)
|
||||
void EventStart(Creature* anchor, Player *pTarget)
|
||||
{
|
||||
wait_timer = 5000;
|
||||
phase = PHASE_TO_EQUIP;
|
||||
@@ -158,8 +158,8 @@ struct TRINITY_DLL_DECL npc_unworthy_initiateAI : public ScriptedAI
|
||||
float z;
|
||||
anchor->GetContactPoint(me, anchorX, anchorY, z, 1.0f);
|
||||
|
||||
playerGUID = target->GetGUID();
|
||||
DoScriptText(say_event_start[rand()%8], me, target);
|
||||
playerGUID = pTarget->GetGUID();
|
||||
DoScriptText(say_event_start[rand()%8], me, pTarget);
|
||||
}
|
||||
|
||||
void UpdateAI(const uint32 diff);
|
||||
@@ -247,8 +247,8 @@ void npc_unworthy_initiateAI::UpdateAI(const uint32 diff)
|
||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_OOC_NOT_ATTACKABLE);
|
||||
phase = PHASE_ATTACKING;
|
||||
|
||||
if (Player* target = Unit::GetPlayer(playerGUID))
|
||||
me->AI()->AttackStart(target);
|
||||
if (Player *pTarget = Unit::GetPlayer(playerGUID))
|
||||
me->AI()->AttackStart(pTarget);
|
||||
wait_timer = 0;
|
||||
}
|
||||
}
|
||||
@@ -538,7 +538,7 @@ struct TRINITY_DLL_DECL npc_dark_rider_of_acherusAI : public ScriptedAI
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}else PhaseTimer -= diff;
|
||||
} else PhaseTimer -= diff;
|
||||
|
||||
}
|
||||
|
||||
@@ -878,7 +878,7 @@ struct TRINITY_DLL_DECL npc_scarlet_minerAI : public npc_escortAI
|
||||
AddWaypoint(11, 2202.595947, -6061.325684, 5.882018 );
|
||||
AddWaypoint(12, 2188.974609, -6080.866699, 3.370027 );
|
||||
|
||||
if(rand()%2)
|
||||
if(urand(0,1))
|
||||
{
|
||||
AddWaypoint(13, 2176.483887, -6110.407227, 1.855181 );
|
||||
AddWaypoint(14, 2172.516602, -6146.752441, 1.074235 );
|
||||
@@ -956,7 +956,7 @@ struct TRINITY_DLL_DECL npc_scarlet_minerAI : public npc_escortAI
|
||||
car->AI()->DoAction();
|
||||
IntroPhase = 0;
|
||||
}
|
||||
}else IntroTimer-=diff;
|
||||
} else IntroTimer-=diff;
|
||||
}
|
||||
npc_escortAI::UpdateAI(diff);
|
||||
}
|
||||
@@ -987,9 +987,9 @@ bool GOHello_go_inconspicuous_mine_car(Player* pPlayer, GameObject* pGO)
|
||||
{
|
||||
car->AI()->SetGUID(miner->GetGUID());
|
||||
CAST_AI(npc_scarlet_minerAI, miner->AI())->InitCartQuest(pPlayer);
|
||||
}else error_log("TSCR: GOHello_go_inconspicuous_mine_car vehicle entry is not correct.");
|
||||
}else error_log("TSCR: GOHello_go_inconspicuous_mine_car player is not on the vehicle.");
|
||||
}else error_log("TSCR: GOHello_go_inconspicuous_mine_car Scarlet Miner cant be found by script.");
|
||||
} else error_log("TSCR: GOHello_go_inconspicuous_mine_car vehicle entry is not correct.");
|
||||
} else error_log("TSCR: GOHello_go_inconspicuous_mine_car player is not on the vehicle.");
|
||||
} else error_log("TSCR: GOHello_go_inconspicuous_mine_car Scarlet Miner cant be found by script.");
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -118,7 +118,7 @@ struct TRINITY_DLL_DECL npc_crusade_persuadedAI : public ScriptedAI
|
||||
|
||||
++uiSpeech_counter;
|
||||
DoCastAOE(58111, true);
|
||||
}else uiSpeech_timer -= diff;
|
||||
} else uiSpeech_timer -= diff;
|
||||
|
||||
return;
|
||||
}
|
||||
@@ -394,7 +394,7 @@ struct TRINITY_DLL_DECL mob_scarlet_courierAI : public ScriptedAI
|
||||
}
|
||||
uiStage_timer = 3000;
|
||||
uiStage = 0;
|
||||
}else uiStage_timer -= diff;
|
||||
} else uiStage_timer -= diff;
|
||||
}
|
||||
|
||||
if(!UpdateVictim())
|
||||
|
||||
@@ -582,7 +582,7 @@ struct TRINITY_DLL_DECL npc_highlord_darion_mograineAI : public npc_escortAI
|
||||
|
||||
if (!bIsBattle)
|
||||
{
|
||||
if (uiPhase_timer < diff)
|
||||
if (uiPhase_timer <= diff)
|
||||
{
|
||||
// ******* Before battle *****************************************************************
|
||||
switch(uiStep)
|
||||
@@ -1287,43 +1287,43 @@ struct TRINITY_DLL_DECL npc_highlord_darion_mograineAI : public npc_escortAI
|
||||
break;
|
||||
}
|
||||
|
||||
}else uiPhase_timer -= diff;
|
||||
} else uiPhase_timer -= diff;
|
||||
}
|
||||
|
||||
// ******* During battle *****************************************************************
|
||||
else
|
||||
{
|
||||
if (uiAnti_magic_zone < diff)
|
||||
if (uiAnti_magic_zone <= diff)
|
||||
{
|
||||
DoCast(me, SPELL_ANTI_MAGIC_ZONE1);
|
||||
uiAnti_magic_zone = 25000 + rand()%5000;
|
||||
} else uiAnti_magic_zone -= diff;
|
||||
|
||||
if (uiDeath_strike < diff)
|
||||
if (uiDeath_strike <= diff)
|
||||
{
|
||||
DoCast(me->getVictim(), SPELL_DEATH_STRIKE);
|
||||
uiDeath_strike = 5000 + rand()%5000;
|
||||
} else uiDeath_strike -= diff;
|
||||
|
||||
if (uiDeath_embrace < diff)
|
||||
if (uiDeath_embrace <= diff)
|
||||
{
|
||||
DoCast(me->getVictim(), SPELL_DEATH_EMBRACE);
|
||||
uiDeath_embrace = 5000 + rand()%5000;
|
||||
} else uiDeath_embrace -= diff;
|
||||
|
||||
if (uiIcy_touch < diff)
|
||||
if (uiIcy_touch <= diff)
|
||||
{
|
||||
DoCast(me->getVictim(), SPELL_ICY_TOUCH1);
|
||||
uiIcy_touch = 5000 + rand()%5000;
|
||||
} else uiIcy_touch -= diff;
|
||||
|
||||
if (uiUnholy_blight < diff)
|
||||
if (uiUnholy_blight <= diff)
|
||||
{
|
||||
DoCast(me->getVictim(), SPELL_UNHOLY_BLIGHT);
|
||||
uiUnholy_blight = 5000 + rand()%5000;
|
||||
} else uiUnholy_blight -= diff;
|
||||
|
||||
if (uiFight_speech < diff)
|
||||
if (uiFight_speech <= diff)
|
||||
{
|
||||
DoScriptText(RAND(SAY_LIGHT_OF_DAWN09,SAY_LIGHT_OF_DAWN10,SAY_LIGHT_OF_DAWN11,
|
||||
SAY_LIGHT_OF_DAWN12,SAY_LIGHT_OF_DAWN13,SAY_LIGHT_OF_DAWN14,
|
||||
@@ -1335,14 +1335,14 @@ struct TRINITY_DLL_DECL npc_highlord_darion_mograineAI : public npc_escortAI
|
||||
} else uiFight_speech -= diff;
|
||||
|
||||
// Check spawns
|
||||
if (uiSpawncheck < diff)
|
||||
if (uiSpawncheck <= diff)
|
||||
{
|
||||
SpawnNPC();
|
||||
uiSpawncheck = 1000;
|
||||
} else uiSpawncheck -= diff;
|
||||
|
||||
// Check targets
|
||||
if (uiTargetcheck < diff)
|
||||
if (uiTargetcheck <= diff)
|
||||
{
|
||||
for (uint8 i = 0; i < ENCOUNTER_GHOUL_NUMBER; ++i)
|
||||
NPCChangeTarget(uiGhoulGUID[i]);
|
||||
@@ -1371,7 +1371,7 @@ struct TRINITY_DLL_DECL npc_highlord_darion_mograineAI : public npc_escortAI
|
||||
uiTirionGUID = pTemp->GetGUID();
|
||||
}
|
||||
}
|
||||
if (uiFight_duration < diff)
|
||||
if (uiFight_duration <= diff)
|
||||
{
|
||||
bIsBattle = false;
|
||||
uiFight_duration = 300000;
|
||||
@@ -1614,8 +1614,8 @@ bool GossipSelect_npc_highlord_darion_mograine(Player* pPlayer, Creature* pCreat
|
||||
{
|
||||
case GOSSIP_ACTION_INFO_DEF+1:
|
||||
pPlayer->CLOSE_GOSSIP_MENU();
|
||||
((npc_highlord_darion_mograineAI*)pCreature->AI())->uiStep = 1;
|
||||
((npc_highlord_darion_mograineAI*)pCreature->AI())->Start(true, false, pPlayer->GetGUID());
|
||||
CAST_AI(npc_highlord_darion_mograineAI, pCreature->AI())->uiStep = 1;
|
||||
CAST_AI(npc_highlord_darion_mograineAI, pCreature->AI())->Start(true, false, pPlayer->GetGUID());
|
||||
break;
|
||||
}
|
||||
return true;
|
||||
|
||||
+2
-2
@@ -48,7 +48,7 @@ struct TRINITY_DLL_DECL npc_valkyr_battle_maidenAI : public PassiveAI
|
||||
|
||||
void UpdateAI(const uint32 diff)
|
||||
{
|
||||
if(FlyBackTimer < diff)
|
||||
if (FlyBackTimer <= diff)
|
||||
{
|
||||
Player *plr = NULL;
|
||||
if(me->isSummon())
|
||||
@@ -91,7 +91,7 @@ struct TRINITY_DLL_DECL npc_valkyr_battle_maidenAI : public PassiveAI
|
||||
break;
|
||||
}
|
||||
++phase;
|
||||
}else FlyBackTimer-=diff;
|
||||
} else FlyBackTimer-=diff;
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
+8
-8
@@ -87,27 +87,27 @@ struct TRINITY_DLL_DECL boss_arcanist_doanAI : public ScriptedAI
|
||||
bShielded = true;
|
||||
}
|
||||
|
||||
if (Polymorph_Timer < diff)
|
||||
if (Polymorph_Timer <= diff)
|
||||
{
|
||||
if (Unit* target = SelectUnit(SELECT_TARGET_RANDOM,1))
|
||||
DoCast(target,SPELL_POLYMORPH);
|
||||
if (Unit *pTarget = SelectUnit(SELECT_TARGET_RANDOM,1))
|
||||
DoCast(pTarget,SPELL_POLYMORPH);
|
||||
|
||||
Polymorph_Timer = 20000;
|
||||
}else Polymorph_Timer -= diff;
|
||||
} else Polymorph_Timer -= diff;
|
||||
|
||||
//AoESilence_Timer
|
||||
if (AoESilence_Timer < diff)
|
||||
if (AoESilence_Timer <= diff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(),SPELL_AOESILENCE);
|
||||
AoESilence_Timer = 15000 + rand()%5000;
|
||||
}else AoESilence_Timer -= diff;
|
||||
} else AoESilence_Timer -= diff;
|
||||
|
||||
//ArcaneExplosion_Timer
|
||||
if (ArcaneExplosion_Timer < diff)
|
||||
if (ArcaneExplosion_Timer <= diff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(),SPELL_ARCANEEXPLOSION);
|
||||
ArcaneExplosion_Timer = 8000;
|
||||
}else ArcaneExplosion_Timer -= diff;
|
||||
} else ArcaneExplosion_Timer -= diff;
|
||||
|
||||
DoMeleeAttackIfReady();
|
||||
}
|
||||
|
||||
+6
-6
@@ -55,28 +55,28 @@ struct TRINITY_DLL_DECL boss_azshir_the_sleeplessAI : public ScriptedAI
|
||||
if (m_creature->GetHealth()*100 / m_creature->GetMaxHealth() <= 50 && !m_creature->IsNonMeleeSpellCasted(false))
|
||||
{
|
||||
//SoulSiphon_Timer
|
||||
if (SoulSiphon_Timer < diff)
|
||||
if (SoulSiphon_Timer <= diff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(),SPELL_SOULSIPHON);
|
||||
return;
|
||||
|
||||
SoulSiphon_Timer = 20000;
|
||||
}else SoulSiphon_Timer -= diff;
|
||||
} else SoulSiphon_Timer -= diff;
|
||||
}
|
||||
|
||||
//CallOfTheGrave_Timer
|
||||
if (CallOftheGrave_Timer < diff)
|
||||
if (CallOftheGrave_Timer <= diff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(),SPELL_CALLOFTHEGRAVE);
|
||||
CallOftheGrave_Timer = 30000;
|
||||
}else CallOftheGrave_Timer -= diff;
|
||||
} else CallOftheGrave_Timer -= diff;
|
||||
|
||||
//Terrify_Timer
|
||||
if (Terrify_Timer < diff)
|
||||
if (Terrify_Timer <= diff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(),SPELL_TERRIFY);
|
||||
Terrify_Timer = 20000;
|
||||
}else Terrify_Timer -= diff;
|
||||
} else Terrify_Timer -= diff;
|
||||
|
||||
DoMeleeAttackIfReady();
|
||||
}
|
||||
|
||||
+8
-8
@@ -77,32 +77,32 @@ struct TRINITY_DLL_DECL boss_bloodmage_thalnosAI : public ScriptedAI
|
||||
}
|
||||
|
||||
//FlameShock_Timer
|
||||
if (FlameShock_Timer < diff)
|
||||
if (FlameShock_Timer <= diff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(),SPELL_FLAMESHOCK);
|
||||
FlameShock_Timer = 10000 + rand()%5000;
|
||||
}else FlameShock_Timer -= diff;
|
||||
} else FlameShock_Timer -= diff;
|
||||
|
||||
//FlameSpike_Timer
|
||||
if (FlameSpike_Timer < diff)
|
||||
if (FlameSpike_Timer <= diff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(),SPELL_FLAMESPIKE);
|
||||
FlameSpike_Timer = 30000;
|
||||
}else FlameSpike_Timer -= diff;
|
||||
} else FlameSpike_Timer -= diff;
|
||||
|
||||
//FireNova_Timer
|
||||
if (FireNova_Timer < diff)
|
||||
if (FireNova_Timer <= diff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(),SPELL_FIRENOVA);
|
||||
FireNova_Timer = 40000;
|
||||
}else FireNova_Timer -= diff;
|
||||
} else FireNova_Timer -= diff;
|
||||
|
||||
//ShadowBolt_Timer
|
||||
if (ShadowBolt_Timer < diff)
|
||||
if (ShadowBolt_Timer <= diff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(),SPELL_SHADOWBOLT);
|
||||
ShadowBolt_Timer = 2000;
|
||||
}else ShadowBolt_Timer -= diff;
|
||||
} else ShadowBolt_Timer -= diff;
|
||||
|
||||
DoMeleeAttackIfReady();
|
||||
}
|
||||
|
||||
+15
-15
@@ -230,9 +230,9 @@ struct TRINITY_DLL_DECL mob_headAI : public ScriptedAI
|
||||
}
|
||||
|
||||
void EnterCombat(Unit *who) {}
|
||||
void SaySound(int32 textEntry, Unit *target = 0)
|
||||
void SaySound(int32 textEntry, Unit *pTarget = 0)
|
||||
{
|
||||
DoScriptText(textEntry, m_creature, target);
|
||||
DoScriptText(textEntry, m_creature, pTarget);
|
||||
//DoCast(m_creature,SPELL_HEAD_SPEAKS,true);
|
||||
Creature *speaker = DoSpawnCreature(HELPER,0,0,0,0,TEMPSUMMON_TIMED_DESPAWN,1000);
|
||||
if (speaker)
|
||||
@@ -297,7 +297,7 @@ struct TRINITY_DLL_DECL mob_headAI : public ScriptedAI
|
||||
{
|
||||
if (!withbody)
|
||||
{
|
||||
if (wait < diff)
|
||||
if (wait <= diff)
|
||||
{
|
||||
wait = 1000;
|
||||
if (!m_creature->getVictim()) return;
|
||||
@@ -305,7 +305,7 @@ struct TRINITY_DLL_DECL mob_headAI : public ScriptedAI
|
||||
m_creature->GetMotionMaster()->MoveFleeing(m_creature->getVictim());
|
||||
} else wait -= diff;
|
||||
|
||||
if (laugh < diff)
|
||||
if (laugh <= diff)
|
||||
{
|
||||
laugh = urand(15000,30000);
|
||||
DoPlaySoundToSet(m_creature, RandomLaugh[urand(0,2)]);
|
||||
@@ -320,7 +320,7 @@ struct TRINITY_DLL_DECL mob_headAI : public ScriptedAI
|
||||
{
|
||||
if (die)
|
||||
{
|
||||
if (wait < diff)
|
||||
if (wait <= diff)
|
||||
{
|
||||
die = false;
|
||||
if (Unit *body = Unit::GetUnit((*m_creature), bodyGUID))
|
||||
@@ -488,9 +488,9 @@ struct TRINITY_DLL_DECL boss_headless_horsemanAI : public ScriptedAI
|
||||
}
|
||||
}
|
||||
|
||||
void SaySound(int32 textEntry, Unit *target = 0)
|
||||
void SaySound(int32 textEntry, Unit *pTarget = 0)
|
||||
{
|
||||
DoScriptText(textEntry, m_creature, target);
|
||||
DoScriptText(textEntry, m_creature, pTarget);
|
||||
laugh += 4000;
|
||||
}
|
||||
|
||||
@@ -608,7 +608,7 @@ struct TRINITY_DLL_DECL boss_headless_horsemanAI : public ScriptedAI
|
||||
{
|
||||
if (!IsFlying)
|
||||
{
|
||||
if (say_timer < diff)
|
||||
if (say_timer <= diff)
|
||||
{
|
||||
say_timer = 3000;
|
||||
Player *plr = SelectRandomPlayer(100.0f,false);
|
||||
@@ -647,7 +647,7 @@ struct TRINITY_DLL_DECL boss_headless_horsemanAI : public ScriptedAI
|
||||
case 1:
|
||||
if (burned)
|
||||
break;
|
||||
if (burn < diff)
|
||||
if (burn <= diff)
|
||||
{
|
||||
if (Creature *flame = m_creature->SummonCreature(HELPER,Spawn[0].x,Spawn[0].y,Spawn[0].z,0,TEMPSUMMON_TIMED_DESPAWN,17000))
|
||||
CAST_AI(mob_wisp_invisAI, flame->AI())->SetType(2);
|
||||
@@ -655,7 +655,7 @@ struct TRINITY_DLL_DECL boss_headless_horsemanAI : public ScriptedAI
|
||||
} else burn -= diff;
|
||||
break;
|
||||
case 2:
|
||||
if (conflagrate < diff)
|
||||
if (conflagrate <= diff)
|
||||
{
|
||||
if (Unit *plr = SelectRandomPlayer(30.0f))
|
||||
m_creature->CastSpell(plr,SPELL_CONFLAGRATION,false);
|
||||
@@ -663,7 +663,7 @@ struct TRINITY_DLL_DECL boss_headless_horsemanAI : public ScriptedAI
|
||||
} else conflagrate -= diff;
|
||||
break;
|
||||
case 3:
|
||||
if (summonadds < diff)
|
||||
if (summonadds <= diff)
|
||||
{
|
||||
m_creature->InterruptNonMeleeSpells(false);
|
||||
DoCast(m_creature,SPELL_SUMMON_PUMPKIN);
|
||||
@@ -673,7 +673,7 @@ struct TRINITY_DLL_DECL boss_headless_horsemanAI : public ScriptedAI
|
||||
break;
|
||||
}
|
||||
|
||||
if (laugh < diff)
|
||||
if (laugh <= diff)
|
||||
{
|
||||
laugh = urand(11000,22000);
|
||||
m_creature->MonsterTextEmote(EMOTE_LAUGHS,NULL);
|
||||
@@ -683,7 +683,7 @@ struct TRINITY_DLL_DECL boss_headless_horsemanAI : public ScriptedAI
|
||||
if (UpdateVictim())
|
||||
{
|
||||
DoMeleeAttackIfReady();
|
||||
if (cleave < diff)
|
||||
if (cleave <= diff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(),SPELL_CLEAVE);
|
||||
cleave = urand(2000,6000); //1 cleave per 2.0-6.0sec
|
||||
@@ -692,7 +692,7 @@ struct TRINITY_DLL_DECL boss_headless_horsemanAI : public ScriptedAI
|
||||
}
|
||||
else
|
||||
{
|
||||
if (regen < diff)
|
||||
if (regen <= diff)
|
||||
{
|
||||
regen = 1000; //"body calls head"
|
||||
if (m_creature->GetHealth()/m_creature->GetMaxHealth() == 1 && !returned)
|
||||
@@ -712,7 +712,7 @@ struct TRINITY_DLL_DECL boss_headless_horsemanAI : public ScriptedAI
|
||||
}
|
||||
else regen -= diff;
|
||||
|
||||
if (whirlwind < diff)
|
||||
if (whirlwind <= diff)
|
||||
{
|
||||
whirlwind = urand(4000,8000);
|
||||
if (urand(0,1))
|
||||
|
||||
@@ -86,19 +86,19 @@ struct TRINITY_DLL_DECL boss_herodAI : public ScriptedAI
|
||||
}
|
||||
|
||||
//Cleave_Timer
|
||||
if (Cleave_Timer < diff)
|
||||
if (Cleave_Timer <= diff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(),SPELL_CLEAVE);
|
||||
Cleave_Timer = 12000;
|
||||
}else Cleave_Timer -= diff;
|
||||
} else Cleave_Timer -= diff;
|
||||
|
||||
// Whirlwind_Timer
|
||||
if (Whirlwind_Timer < diff)
|
||||
if (Whirlwind_Timer <= diff)
|
||||
{
|
||||
DoScriptText(SAY_WHIRLWIND, m_creature);
|
||||
DoCast(m_creature->getVictim(),SPELL_WHIRLWIND);
|
||||
Whirlwind_Timer = 30000;
|
||||
}else Whirlwind_Timer -= diff;
|
||||
} else Whirlwind_Timer -= diff;
|
||||
|
||||
DoMeleeAttackIfReady();
|
||||
}
|
||||
@@ -126,11 +126,11 @@ struct TRINITY_DLL_DECL mob_scarlet_traineeAI : public npc_escortAI
|
||||
{
|
||||
if (Start_Timer)
|
||||
{
|
||||
if (Start_Timer < diff)
|
||||
if (Start_Timer <= diff)
|
||||
{
|
||||
Start(true,true);
|
||||
Start_Timer = 0;
|
||||
}else Start_Timer -= diff;
|
||||
} else Start_Timer -= diff;
|
||||
}
|
||||
|
||||
npc_escortAI::UpdateAI(diff);
|
||||
|
||||
+16
-16
@@ -66,29 +66,29 @@ struct TRINITY_DLL_DECL boss_high_inquisitor_fairbanksAI : public ScriptedAI
|
||||
return;
|
||||
|
||||
//If we are <25% hp cast Heal
|
||||
if (m_creature->GetHealth()*100 / m_creature->GetMaxHealth() <= 25 && !m_creature->IsNonMeleeSpellCasted(false) && Heal_Timer < diff)
|
||||
if (m_creature->GetHealth()*100 / m_creature->GetMaxHealth() <= 25 && !m_creature->IsNonMeleeSpellCasted(false) && Heal_Timer <= diff)
|
||||
{
|
||||
DoCast(m_creature,SPELL_HEAL);
|
||||
Heal_Timer = 30000;
|
||||
}else Heal_Timer -= diff;
|
||||
} else Heal_Timer -= diff;
|
||||
|
||||
//Fear_Timer
|
||||
if (Fear_Timer < diff)
|
||||
if (Fear_Timer <= diff)
|
||||
{
|
||||
if (Unit* target = SelectUnit(SELECT_TARGET_RANDOM,1))
|
||||
DoCast(target,SPELL_FEAR);
|
||||
if (Unit *pTarget = SelectUnit(SELECT_TARGET_RANDOM,1))
|
||||
DoCast(pTarget,SPELL_FEAR);
|
||||
|
||||
Fear_Timer = 40000;
|
||||
}else Fear_Timer -= diff;
|
||||
} else Fear_Timer -= diff;
|
||||
|
||||
//Sleep_Timer
|
||||
if (Sleep_Timer < diff)
|
||||
if (Sleep_Timer <= diff)
|
||||
{
|
||||
if (Unit* target = SelectUnit(SELECT_TARGET_TOPAGGRO,0))
|
||||
DoCast(target,SPELL_SLEEP);
|
||||
if (Unit *pTarget = SelectUnit(SELECT_TARGET_TOPAGGRO,0))
|
||||
DoCast(pTarget,SPELL_SLEEP);
|
||||
|
||||
Sleep_Timer = 30000;
|
||||
}else Sleep_Timer -= diff;
|
||||
} else Sleep_Timer -= diff;
|
||||
|
||||
//PowerWordShield_Timer
|
||||
if (!PowerWordShield && m_creature->GetHealth()*100 / m_creature->GetMaxHealth() <= 25)
|
||||
@@ -98,20 +98,20 @@ struct TRINITY_DLL_DECL boss_high_inquisitor_fairbanksAI : public ScriptedAI
|
||||
}
|
||||
|
||||
//Dispel_Timer
|
||||
if (Dispel_Timer < diff)
|
||||
if (Dispel_Timer <= diff)
|
||||
{
|
||||
if (Unit* target = SelectUnit(SELECT_TARGET_RANDOM,0))
|
||||
DoCast(target, SPELL_DISPELMAGIC);
|
||||
if (Unit *pTarget = SelectUnit(SELECT_TARGET_RANDOM,0))
|
||||
DoCast(pTarget, SPELL_DISPELMAGIC);
|
||||
|
||||
DispelMagic_Timer = 30000;
|
||||
}else DispelMagic_Timer -= diff;
|
||||
} else DispelMagic_Timer -= diff;
|
||||
|
||||
//CurseOfBlood_Timer
|
||||
if (CurseOfBlood_Timer < diff)
|
||||
if (CurseOfBlood_Timer <= diff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(),SPELL_CURSEOFBLOOD);
|
||||
CurseOfBlood_Timer = 25000;
|
||||
}else CurseOfBlood_Timer -= diff;
|
||||
} else CurseOfBlood_Timer -= diff;
|
||||
|
||||
DoMeleeAttackIfReady();
|
||||
}
|
||||
|
||||
+2
-2
@@ -51,11 +51,11 @@ struct TRINITY_DLL_DECL boss_houndmaster_lokseyAI : public ScriptedAI
|
||||
if (!UpdateVictim())
|
||||
return;
|
||||
|
||||
if (BloodLust_Timer < diff)
|
||||
if (BloodLust_Timer <= diff)
|
||||
{
|
||||
DoCast(m_creature,SPELL_BLOODLUST);
|
||||
BloodLust_Timer = 20000;
|
||||
}else BloodLust_Timer -= diff;
|
||||
} else BloodLust_Timer -= diff;
|
||||
|
||||
DoMeleeAttackIfReady();
|
||||
}
|
||||
|
||||
+2
-2
@@ -92,11 +92,11 @@ struct TRINITY_DLL_DECL boss_interrogator_vishasAI : public ScriptedAI
|
||||
}
|
||||
|
||||
//ShadowWordPain_Timer
|
||||
if (ShadowWordPain_Timer < diff)
|
||||
if (ShadowWordPain_Timer <= diff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(),SPELL_SHADOWWORDPAIN);
|
||||
ShadowWordPain_Timer = 5000 + rand()%10000;;
|
||||
}else ShadowWordPain_Timer -= diff;
|
||||
} else ShadowWordPain_Timer -= diff;
|
||||
|
||||
DoMeleeAttackIfReady();
|
||||
}
|
||||
|
||||
+1
-1
@@ -262,7 +262,7 @@ struct TRINITY_DLL_DECL boss_high_inquisitor_whitemaneAI : public ScriptedAI
|
||||
if (m_bCanResurrect)
|
||||
{
|
||||
//When casting resuruction make sure to delay so on rez when reinstate battle deepsleep runs out
|
||||
if (m_pInstance && m_uiWait_Timer < uiDiff)
|
||||
if (m_pInstance && m_uiWait_Timer <= uiDiff)
|
||||
{
|
||||
if (Unit* Mograine = Unit::GetUnit((*m_creature), m_pInstance->GetData64(DATA_MOGRAINE)))
|
||||
{
|
||||
|
||||
@@ -55,32 +55,32 @@ struct TRINITY_DLL_DECL boss_scornAI : public ScriptedAI
|
||||
return;
|
||||
|
||||
//LichSlap_Timer
|
||||
if (LichSlap_Timer < diff)
|
||||
if (LichSlap_Timer <= diff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(),SPELL_LICHSLAP);
|
||||
LichSlap_Timer = 45000;
|
||||
}else LichSlap_Timer -= diff;
|
||||
} else LichSlap_Timer -= diff;
|
||||
|
||||
//FrostboltVolley_Timer
|
||||
if (FrostboltVolley_Timer < diff)
|
||||
if (FrostboltVolley_Timer <= diff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(),SPELL_FROSTBOLTVOLLEY);
|
||||
FrostboltVolley_Timer = 20000;
|
||||
}else FrostboltVolley_Timer -= diff;
|
||||
} else FrostboltVolley_Timer -= diff;
|
||||
|
||||
//MindFlay_Timer
|
||||
if (MindFlay_Timer < diff)
|
||||
if (MindFlay_Timer <= diff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(),SPELL_MINDFLAY);
|
||||
MindFlay_Timer = 20000;
|
||||
}else MindFlay_Timer -= diff;
|
||||
} else MindFlay_Timer -= diff;
|
||||
|
||||
//FrostNova_Timer
|
||||
if (FrostNova_Timer < diff)
|
||||
if (FrostNova_Timer <= diff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(),SPELL_FROSTNOVA);
|
||||
FrostNova_Timer = 15000;
|
||||
}else FrostNova_Timer -= diff;
|
||||
} else FrostNova_Timer -= diff;
|
||||
|
||||
DoMeleeAttackIfReady();
|
||||
}
|
||||
|
||||
+39
-39
@@ -88,123 +88,123 @@ struct TRINITY_DLL_DECL boss_darkmaster_gandlingAI : public ScriptedAI
|
||||
return;
|
||||
|
||||
//ArcaneMissiles_Timer
|
||||
if (ArcaneMissiles_Timer < diff)
|
||||
if (ArcaneMissiles_Timer <= diff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(),SPELL_ARCANEMISSILES);
|
||||
ArcaneMissiles_Timer = 8000;
|
||||
}else ArcaneMissiles_Timer -= diff;
|
||||
} else ArcaneMissiles_Timer -= diff;
|
||||
|
||||
//ShadowShield_Timer
|
||||
if (ShadowShield_Timer < diff)
|
||||
if (ShadowShield_Timer <= diff)
|
||||
{
|
||||
DoCast(m_creature,SPELL_SHADOWSHIELD);
|
||||
ShadowShield_Timer = 14000 + rand()%14000;
|
||||
}else ShadowShield_Timer -= diff;
|
||||
} else ShadowShield_Timer -= diff;
|
||||
|
||||
//Curse_Timer
|
||||
if (Curse_Timer < diff)
|
||||
if (Curse_Timer <= diff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(),SPELL_CURSE);
|
||||
Curse_Timer = 15000 + rand()%12000;
|
||||
}else Curse_Timer -= diff;
|
||||
} else Curse_Timer -= diff;
|
||||
|
||||
//Teleporting Random Target to one of the six pre boss rooms and spawn 3-4 skeletons near the gamer.
|
||||
//We will only telport if gandling has more than 3% of hp so teleported gamers can always loot.
|
||||
if (m_creature->GetHealth()*100 / m_creature->GetMaxHealth() > 3)
|
||||
{
|
||||
if (Teleport_Timer < diff)
|
||||
if (Teleport_Timer <= diff)
|
||||
{
|
||||
Unit* target = NULL;
|
||||
target = SelectUnit(SELECT_TARGET_RANDOM,0);
|
||||
if (target && target->GetTypeId() == TYPEID_PLAYER)
|
||||
Unit *pTarget = NULL;
|
||||
pTarget = SelectUnit(SELECT_TARGET_RANDOM,0);
|
||||
if (pTarget && pTarget->GetTypeId() == TYPEID_PLAYER)
|
||||
{
|
||||
if (DoGetThreat(target))
|
||||
DoModifyThreatPercent(target, -100);
|
||||
if (DoGetThreat(pTarget))
|
||||
DoModifyThreatPercent(pTarget, -100);
|
||||
|
||||
switch(rand()%6)
|
||||
{
|
||||
case 0:
|
||||
DoTeleportPlayer(target, 250.0696,0.3921,84.8408,3.149);
|
||||
DoTeleportPlayer(pTarget, 250.0696,0.3921,84.8408,3.149);
|
||||
Summoned = m_creature->SummonCreature(16119,254.2325,0.3417,84.8407,0,TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT,10000);
|
||||
if (Summoned)
|
||||
(Summoned->AI())->AttackStart(target);
|
||||
Summoned->AI()->AttackStart(pTarget);
|
||||
Summoned = m_creature->SummonCreature(16119,257.7133,4.0226,84.8407,0,TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT,10000);
|
||||
if (Summoned)
|
||||
(Summoned->AI())->AttackStart(target);
|
||||
Summoned->AI()->AttackStart(pTarget);
|
||||
Summoned = m_creature->SummonCreature(16119,258.6702,-2.60656,84.8407,0,TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT,10000);
|
||||
if (Summoned)
|
||||
(Summoned->AI())->AttackStart(target);
|
||||
Summoned->AI()->AttackStart(pTarget);
|
||||
break;
|
||||
case 1:
|
||||
DoTeleportPlayer(target, 181.4220,-91.9481,84.8410,1.608);
|
||||
DoTeleportPlayer(pTarget, 181.4220,-91.9481,84.8410,1.608);
|
||||
Summoned = m_creature->SummonCreature(16119,184.0519,-73.5649,84.8407,0,TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT,10000);
|
||||
if (Summoned)
|
||||
(Summoned->AI())->AttackStart(target);
|
||||
Summoned->AI()->AttackStart(pTarget);
|
||||
Summoned = m_creature->SummonCreature(16119,179.5951,-73.7045,84.8407,0,TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT,10000);
|
||||
if (Summoned)
|
||||
(Summoned->AI())->AttackStart(target);
|
||||
Summoned->AI()->AttackStart(pTarget);
|
||||
Summoned = m_creature->SummonCreature(16119,180.6452,-78.2143,84.8407,0,TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT,10000);
|
||||
if (Summoned)
|
||||
(Summoned->AI())->AttackStart(target);
|
||||
Summoned->AI()->AttackStart(pTarget);
|
||||
Summoned = m_creature->SummonCreature(16119,283.2274,-78.1518,84.8407,0,TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT,10000);
|
||||
if (Summoned)
|
||||
(Summoned->AI())->AttackStart(target);
|
||||
Summoned->AI()->AttackStart(pTarget);
|
||||
break;
|
||||
case 2:
|
||||
DoTeleportPlayer(target, 95.1547,-1.8173,85.2289,0.043);
|
||||
DoTeleportPlayer(pTarget, 95.1547,-1.8173,85.2289,0.043);
|
||||
Summoned = m_creature->SummonCreature(16119,100.9404,-1.8016,85.2289,0,TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT,10000);
|
||||
if (Summoned)
|
||||
(Summoned->AI())->AttackStart(target);
|
||||
Summoned->AI()->AttackStart(pTarget);
|
||||
Summoned = m_creature->SummonCreature(16119,101.3729,0.4882,85.2289,0,TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT,10000);
|
||||
if (Summoned)
|
||||
(Summoned->AI())->AttackStart(target);
|
||||
Summoned->AI()->AttackStart(pTarget);
|
||||
Summoned = m_creature->SummonCreature(16119,101.4596,-4.4740,85.2289,0,TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT,10000);
|
||||
if (Summoned)
|
||||
(Summoned->AI())->AttackStart(target);
|
||||
Summoned->AI()->AttackStart(pTarget);
|
||||
break;
|
||||
case 3:
|
||||
DoTeleportPlayer(target, 250.0696,0.3921,72.6722,3.149);
|
||||
DoTeleportPlayer(pTarget, 250.0696,0.3921,72.6722,3.149);
|
||||
Summoned = m_creature->SummonCreature(16119,240.34481,0.7368,72.6722,0,TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT,10000);
|
||||
if (Summoned)
|
||||
(Summoned->AI())->AttackStart(target);
|
||||
Summoned->AI()->AttackStart(pTarget);
|
||||
Summoned = m_creature->SummonCreature(16119,240.3633,-2.9520,72.6722,0,TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT,10000);
|
||||
if (Summoned)
|
||||
(Summoned->AI())->AttackStart(target);
|
||||
Summoned->AI()->AttackStart(pTarget);
|
||||
Summoned = m_creature->SummonCreature(16119,240.6702,3.34949,72.6722,0,TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT,10000);
|
||||
if (Summoned)
|
||||
(Summoned->AI())->AttackStart(target);
|
||||
Summoned->AI()->AttackStart(pTarget);
|
||||
break;
|
||||
case 4:
|
||||
DoTeleportPlayer(target, 181.4220,-91.9481,70.7734,1.608);
|
||||
DoTeleportPlayer(pTarget, 181.4220,-91.9481,70.7734,1.608);
|
||||
Summoned = m_creature->SummonCreature(16119,184.0519,-73.5649,70.7734,0,TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT,10000);
|
||||
if (Summoned)
|
||||
(Summoned->AI())->AttackStart(target);
|
||||
Summoned->AI()->AttackStart(pTarget);
|
||||
Summoned = m_creature->SummonCreature(16119,179.5951,-73.7045,70.7734,0,TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT,10000);
|
||||
if (Summoned)
|
||||
(Summoned->AI())->AttackStart(target);
|
||||
Summoned->AI()->AttackStart(pTarget);
|
||||
Summoned = m_creature->SummonCreature(16119,180.6452,-78.2143,70.7734,0,TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT,10000);
|
||||
if (Summoned)
|
||||
(Summoned->AI())->AttackStart(target);
|
||||
Summoned->AI()->AttackStart(pTarget);
|
||||
Summoned = m_creature->SummonCreature(16119,283.2274,-78.1518,70.7734,0,TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT,10000);
|
||||
if (Summoned)
|
||||
(Summoned->AI())->AttackStart(target);
|
||||
Summoned->AI()->AttackStart(pTarget);
|
||||
break;
|
||||
case 5:
|
||||
DoTeleportPlayer(target, 106.1541,-1.8994,75.3663,0.043);
|
||||
DoTeleportPlayer(pTarget, 106.1541,-1.8994,75.3663,0.043);
|
||||
Summoned = m_creature->SummonCreature(16119,115.3945,-1.5555,75.3663,0,TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT,10000);
|
||||
if (Summoned)
|
||||
(Summoned->AI())->AttackStart(target);
|
||||
Summoned->AI()->AttackStart(pTarget);
|
||||
Summoned = m_creature->SummonCreature(16119,257.7133,1.8066,75.3663,0,TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT,10000);
|
||||
if (Summoned)
|
||||
(Summoned->AI())->AttackStart(target);
|
||||
Summoned->AI()->AttackStart(pTarget);
|
||||
Summoned = m_creature->SummonCreature(16119,258.6702,-5.1001,75.3663,0,TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT,10000);
|
||||
if (Summoned)
|
||||
(Summoned->AI())->AttackStart(target);
|
||||
Summoned->AI()->AttackStart(pTarget);
|
||||
break;
|
||||
}
|
||||
}
|
||||
Teleport_Timer = 20000 + rand()%15000;
|
||||
}else Teleport_Timer -= diff;
|
||||
} else Teleport_Timer -= diff;
|
||||
}
|
||||
|
||||
DoMeleeAttackIfReady();
|
||||
|
||||
@@ -68,35 +68,35 @@ struct TRINITY_DLL_DECL boss_illuciabarovAI : public ScriptedAI
|
||||
return;
|
||||
|
||||
//CurseOfAgony_Timer
|
||||
if (CurseOfAgony_Timer < diff)
|
||||
if (CurseOfAgony_Timer <= diff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(),SPELL_CURSEOFAGONY);
|
||||
CurseOfAgony_Timer = 30000;
|
||||
}else CurseOfAgony_Timer -= diff;
|
||||
} else CurseOfAgony_Timer -= diff;
|
||||
|
||||
//ShadowShock_Timer
|
||||
if (ShadowShock_Timer < diff)
|
||||
if (ShadowShock_Timer <= diff)
|
||||
{
|
||||
Unit* target = NULL;
|
||||
target = SelectUnit(SELECT_TARGET_RANDOM,0);
|
||||
if (target) DoCast(target,SPELL_SHADOWSHOCK);
|
||||
Unit *pTarget = NULL;
|
||||
pTarget = SelectUnit(SELECT_TARGET_RANDOM,0);
|
||||
if (pTarget) DoCast(pTarget,SPELL_SHADOWSHOCK);
|
||||
|
||||
ShadowShock_Timer = 12000;
|
||||
}else ShadowShock_Timer -= diff;
|
||||
} else ShadowShock_Timer -= diff;
|
||||
|
||||
//Silence_Timer
|
||||
if (Silence_Timer < diff)
|
||||
if (Silence_Timer <= diff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(),SPELL_SILENCE);
|
||||
Silence_Timer = 14000;
|
||||
}else Silence_Timer -= diff;
|
||||
} else Silence_Timer -= diff;
|
||||
|
||||
//Fear_Timer
|
||||
if (Fear_Timer < diff)
|
||||
if (Fear_Timer <= diff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(),SPELL_FEAR);
|
||||
Fear_Timer = 30000;
|
||||
}else Fear_Timer -= diff;
|
||||
} else Fear_Timer -= diff;
|
||||
|
||||
DoMeleeAttackIfReady();
|
||||
}
|
||||
|
||||
+13
-13
@@ -75,31 +75,31 @@ struct TRINITY_DLL_DECL boss_instructormaliciaAI : public ScriptedAI
|
||||
return;
|
||||
|
||||
//CallOfGraves_Timer
|
||||
if (CallOfGraves_Timer < diff)
|
||||
if (CallOfGraves_Timer <= diff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(),SPELL_CALLOFGRAVES);
|
||||
CallOfGraves_Timer = 65000;
|
||||
}else CallOfGraves_Timer -= diff;
|
||||
} else CallOfGraves_Timer -= diff;
|
||||
|
||||
//Corruption_Timer
|
||||
if (Corruption_Timer < diff)
|
||||
if (Corruption_Timer <= diff)
|
||||
{
|
||||
Unit* target = NULL;
|
||||
target = SelectUnit(SELECT_TARGET_RANDOM,0);
|
||||
if (target) DoCast(target,SPELL_CORRUPTION);
|
||||
Unit *pTarget = NULL;
|
||||
pTarget = SelectUnit(SELECT_TARGET_RANDOM,0);
|
||||
if (pTarget) DoCast(pTarget,SPELL_CORRUPTION);
|
||||
|
||||
Corruption_Timer = 24000;
|
||||
}else Corruption_Timer -= diff;
|
||||
} else Corruption_Timer -= diff;
|
||||
|
||||
//Renew_Timer
|
||||
if (Renew_Timer < diff)
|
||||
if (Renew_Timer <= diff)
|
||||
{
|
||||
DoCast(m_creature, SPELL_RENEW);
|
||||
Renew_Timer = 10000;
|
||||
}else Renew_Timer -= diff;
|
||||
} else Renew_Timer -= diff;
|
||||
|
||||
//FlashHeal_Timer
|
||||
if (FlashHeal_Timer < diff)
|
||||
if (FlashHeal_Timer <= diff)
|
||||
{
|
||||
DoCast(m_creature,SPELL_FLASHHEAL);
|
||||
|
||||
@@ -114,10 +114,10 @@ struct TRINITY_DLL_DECL boss_instructormaliciaAI : public ScriptedAI
|
||||
FlashCounter=0;
|
||||
FlashHeal_Timer = 30000;
|
||||
}
|
||||
}else FlashHeal_Timer -= diff;
|
||||
} else FlashHeal_Timer -= diff;
|
||||
|
||||
//HealingTouch_Timer
|
||||
if (HealingTouch_Timer < diff)
|
||||
if (HealingTouch_Timer <= diff)
|
||||
{
|
||||
DoCast(m_creature,SPELL_HEALINGTOUCH);
|
||||
|
||||
@@ -132,7 +132,7 @@ struct TRINITY_DLL_DECL boss_instructormaliciaAI : public ScriptedAI
|
||||
TouchCounter=0;
|
||||
HealingTouch_Timer = 30000;
|
||||
}
|
||||
}else HealingTouch_Timer -= diff;
|
||||
} else HealingTouch_Timer -= diff;
|
||||
|
||||
DoMeleeAttackIfReady();
|
||||
}
|
||||
|
||||
@@ -38,10 +38,6 @@ struct TRINITY_DLL_DECL boss_jandicebarovAI : public ScriptedAI
|
||||
//uint32 Illusioncounter;
|
||||
uint32 Invisible_Timer;
|
||||
bool Invisible;
|
||||
int Rand;
|
||||
int RandX;
|
||||
int RandY;
|
||||
Creature* Summoned;
|
||||
|
||||
void Reset()
|
||||
{
|
||||
@@ -57,28 +53,13 @@ struct TRINITY_DLL_DECL boss_jandicebarovAI : public ScriptedAI
|
||||
|
||||
void SummonIllusions(Unit* victim)
|
||||
{
|
||||
Rand = rand()%10;
|
||||
switch (rand()%2)
|
||||
{
|
||||
case 0: RandX = 0 - Rand; break;
|
||||
case 1: RandX = 0 + Rand; break;
|
||||
}
|
||||
Rand = 0;
|
||||
Rand = rand()%10;
|
||||
switch (rand()%2)
|
||||
{
|
||||
case 0: RandY = 0 - Rand; break;
|
||||
case 1: RandY = 0 + Rand; break;
|
||||
}
|
||||
Rand = 0;
|
||||
Summoned = DoSpawnCreature(11439, RandX, RandY, 0, 0, TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN, 60000);
|
||||
if (Summoned)
|
||||
(Summoned->AI())->AttackStart(victim);
|
||||
if (Creature *Illusion = DoSpawnCreature(11439, RAND(irand(0,-9),irand(0,9)), RAND(irand(0,-9),irand(0,9)), 0, 0, TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN, 60000))
|
||||
Illusion->AI()->AttackStart(victim);
|
||||
}
|
||||
|
||||
void UpdateAI(const uint32 diff)
|
||||
{
|
||||
if (Invisible && Invisible_Timer < diff)
|
||||
if (Invisible && Invisible_Timer <= diff)
|
||||
{
|
||||
//Become visible again
|
||||
m_creature->setFaction(14);
|
||||
@@ -97,17 +78,17 @@ struct TRINITY_DLL_DECL boss_jandicebarovAI : public ScriptedAI
|
||||
return;
|
||||
|
||||
//CurseOfBlood_Timer
|
||||
if (CurseOfBlood_Timer < diff)
|
||||
if (CurseOfBlood_Timer <= diff)
|
||||
{
|
||||
//Cast
|
||||
DoCast(m_creature->getVictim(),SPELL_CURSEOFBLOOD);
|
||||
|
||||
//45 seconds
|
||||
CurseOfBlood_Timer = 30000;
|
||||
}else CurseOfBlood_Timer -= diff;
|
||||
} else CurseOfBlood_Timer -= diff;
|
||||
|
||||
//Illusion_Timer
|
||||
if (!Invisible && Illusion_Timer < diff)
|
||||
if (!Invisible && Illusion_Timer <= diff)
|
||||
{
|
||||
|
||||
//Inturrupt any spell casting
|
||||
@@ -118,22 +99,22 @@ struct TRINITY_DLL_DECL boss_jandicebarovAI : public ScriptedAI
|
||||
DoModifyThreatPercent(m_creature->getVictim(),-99);
|
||||
|
||||
//Summon 10 Illusions attacking random gamers
|
||||
Unit* target = NULL;
|
||||
Unit *pTarget = NULL;
|
||||
for (uint8 i = 0; i < 10; ++i)
|
||||
{
|
||||
target = SelectUnit(SELECT_TARGET_RANDOM,0);
|
||||
if (target)
|
||||
SummonIllusions(target);
|
||||
pTarget = SelectUnit(SELECT_TARGET_RANDOM,0);
|
||||
if (pTarget)
|
||||
SummonIllusions(pTarget);
|
||||
}
|
||||
Invisible = true;
|
||||
Invisible_Timer = 3000;
|
||||
|
||||
//25 seconds until we should cast this agian
|
||||
Illusion_Timer = 25000;
|
||||
}else Illusion_Timer -= diff;
|
||||
} else Illusion_Timer -= diff;
|
||||
|
||||
// //Illusion_Timer
|
||||
// if (Illusion_Timer < diff)
|
||||
// if (Illusion_Timer <= diff)
|
||||
// {
|
||||
// //Cast
|
||||
// DoCast(m_creature->getVictim(),SPELL_ILLUSION);
|
||||
@@ -150,7 +131,7 @@ struct TRINITY_DLL_DECL boss_jandicebarovAI : public ScriptedAI
|
||||
// Illusioncounter=0;
|
||||
// }
|
||||
//
|
||||
// }else Illusion_Timer -= diff;
|
||||
// } else Illusion_Timer -= diff;
|
||||
|
||||
DoMeleeAttackIfReady();
|
||||
}
|
||||
@@ -181,14 +162,14 @@ struct TRINITY_DLL_DECL mob_illusionofjandicebarovAI : public ScriptedAI
|
||||
return;
|
||||
|
||||
//Cleave_Timer
|
||||
if (Cleave_Timer < diff)
|
||||
if (Cleave_Timer <= diff)
|
||||
{
|
||||
//Cast
|
||||
DoCast(m_creature->getVictim(),SPELL_CLEAVE);
|
||||
|
||||
//5-8 seconds
|
||||
Cleave_Timer = 5000 + rand()%3000;
|
||||
}else Cleave_Timer -= diff;
|
||||
} else Cleave_Timer -= diff;
|
||||
|
||||
DoMeleeAttackIfReady();
|
||||
}
|
||||
|
||||
@@ -35,14 +35,6 @@ struct TRINITY_DLL_DECL boss_kormokAI : public ScriptedAI
|
||||
uint32 Minion_Timer;
|
||||
uint32 Mage_Timer;
|
||||
bool Mages;
|
||||
int Rand1;
|
||||
int Rand1X;
|
||||
int Rand1Y;
|
||||
int Rand2;
|
||||
int Rand2X;
|
||||
int Rand2Y;
|
||||
Creature* SummonedMinions;
|
||||
Creature* SummonedMages;
|
||||
|
||||
void Reset()
|
||||
{
|
||||
@@ -57,46 +49,16 @@ struct TRINITY_DLL_DECL boss_kormokAI : public ScriptedAI
|
||||
{
|
||||
}
|
||||
|
||||
void SummonMinion(Unit* victim)
|
||||
void SummonMinions(Unit* victim)
|
||||
{
|
||||
Rand1 = rand()%8;
|
||||
switch (rand()%2)
|
||||
{
|
||||
case 0: Rand1X = 0 - Rand1; break;
|
||||
case 1: Rand1X = 0 + Rand1; break;
|
||||
}
|
||||
Rand1 = 0;
|
||||
Rand1 = rand()%8;
|
||||
switch (rand()%2)
|
||||
{
|
||||
case 0: Rand1Y = 0 - Rand1; break;
|
||||
case 1: Rand1Y = 0 + Rand1; break;
|
||||
}
|
||||
Rand1 = 0;
|
||||
SummonedMinions = DoSpawnCreature(16119, Rand1X, Rand1Y, 0, 0, TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN, 120000);
|
||||
if (SummonedMinions)
|
||||
(SummonedMinions->AI())->AttackStart(victim);
|
||||
if (Creature *SummonedMinion = DoSpawnCreature(16119, RAND(irand(0,-7),irand(0,7)), RAND(irand(0,-7),irand(0,7)), 0, 0, TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN, 120000))
|
||||
SummonedMinion->AI()->AttackStart(victim);
|
||||
}
|
||||
|
||||
void SummonMages(Unit* victim)
|
||||
{
|
||||
Rand2 = rand()%10;
|
||||
switch (rand()%2)
|
||||
{
|
||||
case 0: Rand2X = 0 - Rand2; break;
|
||||
case 1: Rand2X = 0 + Rand2; break;
|
||||
}
|
||||
Rand2 = 0;
|
||||
Rand2 = rand()%10;
|
||||
switch (rand()%2)
|
||||
{
|
||||
case 0: Rand2Y = 0 - Rand2; break;
|
||||
case 1: Rand2Y = 0 + Rand2; break;
|
||||
}
|
||||
Rand2 = 0;
|
||||
SummonedMages = DoSpawnCreature(16120, Rand2X, Rand2Y, 0, 0, TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN, 120000);
|
||||
if (SummonedMages)
|
||||
(SummonedMages->AI())->AttackStart(victim);
|
||||
if (Creature *SummonedMage = DoSpawnCreature(16120, RAND(irand(0,-9),irand(0,9)), RAND(irand(0,-9),irand(0,9)), 0, 0, TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN, 120000))
|
||||
SummonedMage->AI()->AttackStart(victim);
|
||||
}
|
||||
|
||||
void UpdateAI(const uint32 diff)
|
||||
@@ -105,30 +67,30 @@ struct TRINITY_DLL_DECL boss_kormokAI : public ScriptedAI
|
||||
return;
|
||||
|
||||
//ShadowVolley_Timer
|
||||
if (ShadowVolley_Timer < diff)
|
||||
if (ShadowVolley_Timer <= diff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(),SPELL_SHADOWBOLTVOLLEY);
|
||||
ShadowVolley_Timer = 15000;
|
||||
}else ShadowVolley_Timer -= diff;
|
||||
} else ShadowVolley_Timer -= diff;
|
||||
|
||||
//BoneShield_Timer
|
||||
if (BoneShield_Timer < diff)
|
||||
if (BoneShield_Timer <= diff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(),SPELL_BONESHIELD);
|
||||
BoneShield_Timer = 45000;
|
||||
}else BoneShield_Timer -= diff;
|
||||
} else BoneShield_Timer -= diff;
|
||||
|
||||
//Minion_Timer
|
||||
if (Minion_Timer < diff)
|
||||
if (Minion_Timer <= diff)
|
||||
{
|
||||
//Cast
|
||||
SummonMinion(m_creature->getVictim());
|
||||
SummonMinion(m_creature->getVictim());
|
||||
SummonMinion(m_creature->getVictim());
|
||||
SummonMinion(m_creature->getVictim());
|
||||
SummonMinions(m_creature->getVictim());
|
||||
SummonMinions(m_creature->getVictim());
|
||||
SummonMinions(m_creature->getVictim());
|
||||
SummonMinions(m_creature->getVictim());
|
||||
|
||||
Minion_Timer = 12000;
|
||||
}else Minion_Timer -= diff;
|
||||
} else Minion_Timer -= diff;
|
||||
|
||||
//Summon 2 Bone Mages
|
||||
if (!Mages && m_creature->GetHealth()*100 / m_creature->GetMaxHealth() < 26)
|
||||
|
||||
+7
-7
@@ -64,21 +64,21 @@ struct TRINITY_DLL_DECL boss_lordalexeibarovAI : public ScriptedAI
|
||||
return;
|
||||
|
||||
//Immolate_Timer
|
||||
if (Immolate_Timer < diff)
|
||||
if (Immolate_Timer <= diff)
|
||||
{
|
||||
Unit* target = NULL;
|
||||
target = SelectUnit(SELECT_TARGET_RANDOM,0);
|
||||
if (target) DoCast(target,SPELL_IMMOLATE);
|
||||
Unit *pTarget = NULL;
|
||||
pTarget = SelectUnit(SELECT_TARGET_RANDOM,0);
|
||||
if (pTarget) DoCast(pTarget,SPELL_IMMOLATE);
|
||||
|
||||
Immolate_Timer = 12000;
|
||||
}else Immolate_Timer -= diff;
|
||||
} else Immolate_Timer -= diff;
|
||||
|
||||
//VeilofShadow_Timer
|
||||
if (VeilofShadow_Timer < diff)
|
||||
if (VeilofShadow_Timer <= diff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(),SPELL_VEILOFSHADOW);
|
||||
VeilofShadow_Timer = 20000;
|
||||
}else VeilofShadow_Timer -= diff;
|
||||
} else VeilofShadow_Timer -= diff;
|
||||
|
||||
DoMeleeAttackIfReady();
|
||||
}
|
||||
|
||||
+8
-8
@@ -68,32 +68,32 @@ struct TRINITY_DLL_DECL boss_lorekeeperpolkeltAI : public ScriptedAI
|
||||
return;
|
||||
|
||||
//VolatileInfection_Timer
|
||||
if (VolatileInfection_Timer < diff)
|
||||
if (VolatileInfection_Timer <= diff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(),SPELL_VOLATILEINFECTION);
|
||||
VolatileInfection_Timer = 32000;
|
||||
}else VolatileInfection_Timer -= diff;
|
||||
} else VolatileInfection_Timer -= diff;
|
||||
|
||||
//Darkplague_Timer
|
||||
if (Darkplague_Timer < diff)
|
||||
if (Darkplague_Timer <= diff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(),SPELL_DARKPLAGUE);
|
||||
Darkplague_Timer = 8000;
|
||||
}else Darkplague_Timer -= diff;
|
||||
} else Darkplague_Timer -= diff;
|
||||
|
||||
//CorrosiveAcid_Timer
|
||||
if (CorrosiveAcid_Timer < diff)
|
||||
if (CorrosiveAcid_Timer <= diff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(),SPELL_CORROSIVEACID);
|
||||
CorrosiveAcid_Timer = 25000;
|
||||
}else CorrosiveAcid_Timer -= diff;
|
||||
} else CorrosiveAcid_Timer -= diff;
|
||||
|
||||
//NoxiousCatalyst_Timer
|
||||
if (NoxiousCatalyst_Timer < diff)
|
||||
if (NoxiousCatalyst_Timer <= diff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(),SPELL_NOXIOUSCATALYST);
|
||||
NoxiousCatalyst_Timer = 38000;
|
||||
}else NoxiousCatalyst_Timer -= diff;
|
||||
} else NoxiousCatalyst_Timer -= diff;
|
||||
|
||||
DoMeleeAttackIfReady();
|
||||
}
|
||||
|
||||
+15
-15
@@ -63,49 +63,49 @@ struct TRINITY_DLL_DECL boss_rasfrostAI : public ScriptedAI
|
||||
return;
|
||||
|
||||
//IceArmor_Timer
|
||||
if (IceArmor_Timer < diff)
|
||||
if (IceArmor_Timer <= diff)
|
||||
{
|
||||
DoCast(m_creature, SPELL_ICEARMOR);
|
||||
IceArmor_Timer = 180000;
|
||||
}else IceArmor_Timer -= diff;
|
||||
} else IceArmor_Timer -= diff;
|
||||
|
||||
//Frostbolt_Timer
|
||||
if (Frostbolt_Timer < diff)
|
||||
if (Frostbolt_Timer <= diff)
|
||||
{
|
||||
Unit* target = NULL;
|
||||
target = SelectUnit(SELECT_TARGET_RANDOM,0);
|
||||
if (target) DoCast(target,SPELL_FROSTBOLT);
|
||||
Unit *pTarget = NULL;
|
||||
pTarget = SelectUnit(SELECT_TARGET_RANDOM,0);
|
||||
if (pTarget) DoCast(pTarget,SPELL_FROSTBOLT);
|
||||
|
||||
Frostbolt_Timer = 8000;
|
||||
}else Frostbolt_Timer -= diff;
|
||||
} else Frostbolt_Timer -= diff;
|
||||
|
||||
//Freeze_Timer
|
||||
if (Freeze_Timer < diff)
|
||||
if (Freeze_Timer <= diff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(),SPELL_FREEZE);
|
||||
Freeze_Timer = 24000;
|
||||
}else Freeze_Timer -= diff;
|
||||
} else Freeze_Timer -= diff;
|
||||
|
||||
//Fear_Timer
|
||||
if (Fear_Timer < diff)
|
||||
if (Fear_Timer <= diff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(),SPELL_FEAR);
|
||||
Fear_Timer = 30000;
|
||||
}else Fear_Timer -= diff;
|
||||
} else Fear_Timer -= diff;
|
||||
|
||||
//ChillNova_Timer
|
||||
if (ChillNova_Timer < diff)
|
||||
if (ChillNova_Timer <= diff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(),SPELL_CHILLNOVA);
|
||||
ChillNova_Timer = 14000;
|
||||
}else ChillNova_Timer -= diff;
|
||||
} else ChillNova_Timer -= diff;
|
||||
|
||||
//FrostVolley_Timer
|
||||
if (FrostVolley_Timer < diff)
|
||||
if (FrostVolley_Timer <= diff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(),SPELL_FROSTVOLLEY);
|
||||
FrostVolley_Timer = 15000;
|
||||
}else FrostVolley_Timer -= diff;
|
||||
} else FrostVolley_Timer -= diff;
|
||||
|
||||
DoMeleeAttackIfReady();
|
||||
}
|
||||
|
||||
@@ -70,32 +70,32 @@ struct TRINITY_DLL_DECL boss_theravenianAI : public ScriptedAI
|
||||
return;
|
||||
|
||||
//Trample_Timer
|
||||
if (Trample_Timer < diff)
|
||||
if (Trample_Timer <= diff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(),SPELL_TRAMPLE);
|
||||
Trample_Timer = 10000;
|
||||
}else Trample_Timer -= diff;
|
||||
} else Trample_Timer -= diff;
|
||||
|
||||
//Cleave_Timer
|
||||
if (Cleave_Timer < diff)
|
||||
if (Cleave_Timer <= diff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(),SPELL_CLEAVE);
|
||||
Cleave_Timer = 7000;
|
||||
}else Cleave_Timer -= diff;
|
||||
} else Cleave_Timer -= diff;
|
||||
|
||||
//SunderingCleave_Timer
|
||||
if (SunderingCleave_Timer < diff)
|
||||
if (SunderingCleave_Timer <= diff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(),SPELL_SUNDERINCLEAVE);
|
||||
SunderingCleave_Timer = 20000;
|
||||
}else SunderingCleave_Timer -= diff;
|
||||
} else SunderingCleave_Timer -= diff;
|
||||
|
||||
//KnockAway_Timer
|
||||
if (KnockAway_Timer < diff)
|
||||
if (KnockAway_Timer <= diff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(),SPELL_KNOCKAWAY);
|
||||
KnockAway_Timer = 12000;
|
||||
}else KnockAway_Timer -= diff;
|
||||
} else KnockAway_Timer -= diff;
|
||||
|
||||
DoMeleeAttackIfReady();
|
||||
}
|
||||
|
||||
@@ -54,7 +54,7 @@ struct TRINITY_DLL_DECL boss_vectusAI : public ScriptedAI
|
||||
return;
|
||||
|
||||
//FireShield_Timer
|
||||
if (m_uiFireShield_Timer < uiDiff)
|
||||
if (m_uiFireShield_Timer <= uiDiff)
|
||||
{
|
||||
DoCast(m_creature, SPELL_FIRESHIELD);
|
||||
m_uiFireShield_Timer = 90000;
|
||||
@@ -63,7 +63,7 @@ struct TRINITY_DLL_DECL boss_vectusAI : public ScriptedAI
|
||||
m_uiFireShield_Timer -= uiDiff;
|
||||
|
||||
//BlastWave_Timer
|
||||
if (m_uiBlastWave_Timer < uiDiff)
|
||||
if (m_uiBlastWave_Timer <= uiDiff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(), SPELL_BLAST_WAVE);
|
||||
m_uiBlastWave_Timer = 12000;
|
||||
@@ -74,7 +74,7 @@ struct TRINITY_DLL_DECL boss_vectusAI : public ScriptedAI
|
||||
//Frenzy_Timer
|
||||
if (m_creature->GetHealth()*100 / m_creature->GetMaxHealth() < 25)
|
||||
{
|
||||
if (m_uiFrenzy_Timer < uiDiff)
|
||||
if (m_uiFrenzy_Timer <= uiDiff)
|
||||
{
|
||||
DoCast(m_creature, SPELL_FRENZY);
|
||||
DoScriptText(EMOTE_GENERIC_FRENZY_KILL, m_creature);
|
||||
|
||||
@@ -65,7 +65,7 @@ struct TRINITY_DLL_DECL npc_blood_knight_stillbladeAI : public ScriptedAI
|
||||
{
|
||||
if (m_creature->IsStandState())
|
||||
{
|
||||
if (lifeTimer < diff)
|
||||
if (lifeTimer <= diff)
|
||||
m_creature->AI()->EnterEvadeMode();
|
||||
else
|
||||
lifeTimer -= diff;
|
||||
|
||||
@@ -284,7 +284,7 @@ struct TRINITY_DLL_DECL pyrewood_ambushAI : public ScriptedAI
|
||||
|
||||
if(KillCount && Phase < 6)
|
||||
{
|
||||
if(!UpdateVictim()) //reset() on target Despawn...
|
||||
if(!UpdateVictim()) //reset() on pTarget Despawn...
|
||||
return;
|
||||
|
||||
DoMeleeAttackIfReady();
|
||||
|
||||
@@ -72,7 +72,7 @@ struct TRINITY_DLL_DECL mob_yennikuAI : public ScriptedAI
|
||||
{
|
||||
if (bReset)
|
||||
{
|
||||
if (Reset_Timer < diff)
|
||||
if (Reset_Timer <= diff)
|
||||
{
|
||||
EnterEvadeMode();
|
||||
bReset = false;
|
||||
|
||||
@@ -111,8 +111,8 @@ struct TRINITY_DLL_DECL boss_baron_rivendareAI : public ScriptedAI
|
||||
|
||||
void JustSummoned(Creature* summoned)
|
||||
{
|
||||
if (Unit* target = SelectUnit(SELECT_TARGET_RANDOM,0))
|
||||
summoned->AI()->AttackStart(target);
|
||||
if (Unit *pTarget = SelectUnit(SELECT_TARGET_RANDOM,0))
|
||||
summoned->AI()->AttackStart(pTarget);
|
||||
}
|
||||
|
||||
void JustDied(Unit* Killer)
|
||||
@@ -127,38 +127,38 @@ struct TRINITY_DLL_DECL boss_baron_rivendareAI : public ScriptedAI
|
||||
return;
|
||||
|
||||
//ShadowBolt
|
||||
if (ShadowBolt_Timer < diff)
|
||||
if (ShadowBolt_Timer <= diff)
|
||||
{
|
||||
if (Unit* target = SelectUnit(SELECT_TARGET_RANDOM, 0))
|
||||
if (Unit *pTarget = SelectUnit(SELECT_TARGET_RANDOM, 0))
|
||||
DoCast(m_creature->getVictim(),SPELL_SHADOWBOLT);
|
||||
|
||||
ShadowBolt_Timer = 10000;
|
||||
}else ShadowBolt_Timer -= diff;
|
||||
} else ShadowBolt_Timer -= diff;
|
||||
|
||||
//Cleave
|
||||
if (Cleave_Timer < diff)
|
||||
if (Cleave_Timer <= diff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(),SPELL_CLEAVE);
|
||||
//13 seconds until we should cast this again
|
||||
Cleave_Timer = 7000 + (rand()%10000);
|
||||
}else Cleave_Timer -= diff;
|
||||
} else Cleave_Timer -= diff;
|
||||
|
||||
//MortalStrike
|
||||
if (MortalStrike_Timer < diff)
|
||||
if (MortalStrike_Timer <= diff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(),SPELL_MORTALSTRIKE);
|
||||
MortalStrike_Timer = 10000 + (rand()%15000);
|
||||
}else MortalStrike_Timer -= diff;
|
||||
} else MortalStrike_Timer -= diff;
|
||||
|
||||
//RaiseDead
|
||||
// if (RaiseDead_Timer < diff)
|
||||
// if (RaiseDead_Timer <= diff)
|
||||
// {
|
||||
// DoCast(m_creature,SPELL_RAISEDEAD);
|
||||
// RaiseDead_Timer = 45000;
|
||||
// }else RaiseDead_Timer -= diff;
|
||||
// } else RaiseDead_Timer -= diff;
|
||||
|
||||
//SummonSkeletons
|
||||
if (SummonSkeletons_Timer < diff)
|
||||
if (SummonSkeletons_Timer <= diff)
|
||||
{
|
||||
m_creature->SummonCreature(11197,ADD_1X,ADD_1Y,ADD_1Z,ADD_1O,TEMPSUMMON_TIMED_DESPAWN,29000);
|
||||
m_creature->SummonCreature(11197,ADD_2X,ADD_2Y,ADD_2Z,ADD_2O,TEMPSUMMON_TIMED_DESPAWN,29000);
|
||||
@@ -169,7 +169,7 @@ struct TRINITY_DLL_DECL boss_baron_rivendareAI : public ScriptedAI
|
||||
|
||||
//34 seconds until we should cast this again
|
||||
SummonSkeletons_Timer = 40000;
|
||||
}else SummonSkeletons_Timer -= diff;
|
||||
} else SummonSkeletons_Timer -= diff;
|
||||
|
||||
DoMeleeAttackIfReady();
|
||||
}
|
||||
|
||||
+11
-11
@@ -67,45 +67,45 @@ struct TRINITY_DLL_DECL boss_baroness_anastariAI : public ScriptedAI
|
||||
return;
|
||||
|
||||
//BansheeWail
|
||||
if (BansheeWail_Timer < diff)
|
||||
if (BansheeWail_Timer <= diff)
|
||||
{
|
||||
if (rand()%100 < 95)
|
||||
DoCast(m_creature->getVictim(),SPELL_BANSHEEWAIL);
|
||||
//4 seconds until we should cast this again
|
||||
BansheeWail_Timer = 4000;
|
||||
}else BansheeWail_Timer -= diff;
|
||||
} else BansheeWail_Timer -= diff;
|
||||
|
||||
//BansheeCurse
|
||||
if (BansheeCurse_Timer < diff)
|
||||
if (BansheeCurse_Timer <= diff)
|
||||
{
|
||||
if (rand()%100 < 75)
|
||||
DoCast(m_creature->getVictim(),SPELL_BANSHEECURSE);
|
||||
//18 seconds until we should cast this again
|
||||
BansheeCurse_Timer = 18000;
|
||||
}else BansheeCurse_Timer -= diff;
|
||||
} else BansheeCurse_Timer -= diff;
|
||||
|
||||
//Silence
|
||||
if (Silence_Timer < diff)
|
||||
if (Silence_Timer <= diff)
|
||||
{
|
||||
if (rand()%100 < 80)
|
||||
DoCast(m_creature->getVictim(),SPELL_SILENCE);
|
||||
//13 seconds until we should cast this again
|
||||
Silence_Timer = 13000;
|
||||
}else Silence_Timer -= diff;
|
||||
} else Silence_Timer -= diff;
|
||||
|
||||
//Possess
|
||||
/* if (Possess_Timer < diff)
|
||||
/* if (Possess_Timer <= diff)
|
||||
{
|
||||
//Cast
|
||||
if (rand()%100 < 65)
|
||||
{
|
||||
Unit* target = NULL;
|
||||
target = SelectUnit(SELECT_TARGET_RANDOM,0);
|
||||
if (target)DoCast(target,SPELL_POSSESS);
|
||||
Unit *pTarget = NULL;
|
||||
pTarget = SelectUnit(SELECT_TARGET_RANDOM,0);
|
||||
if (pTarget)DoCast(pTarget,SPELL_POSSESS);
|
||||
}
|
||||
//50 seconds until we should cast this again
|
||||
Possess_Timer = 50000;
|
||||
}else Possess_Timer -= diff;
|
||||
} else Possess_Timer -= diff;
|
||||
*/
|
||||
|
||||
DoMeleeAttackIfReady();
|
||||
|
||||
+8
-8
@@ -113,7 +113,7 @@ struct TRINITY_DLL_DECL boss_cannon_master_willeyAI : public ScriptedAI
|
||||
return;
|
||||
|
||||
//Pummel
|
||||
if (Pummel_Timer < diff)
|
||||
if (Pummel_Timer <= diff)
|
||||
{
|
||||
//Cast
|
||||
if (rand()%100 < 90) //90% chance to cast
|
||||
@@ -122,10 +122,10 @@ struct TRINITY_DLL_DECL boss_cannon_master_willeyAI : public ScriptedAI
|
||||
}
|
||||
//12 seconds until we should cast this again
|
||||
Pummel_Timer = 12000;
|
||||
}else Pummel_Timer -= diff;
|
||||
} else Pummel_Timer -= diff;
|
||||
|
||||
//KnockAway
|
||||
if (KnockAway_Timer < diff)
|
||||
if (KnockAway_Timer <= diff)
|
||||
{
|
||||
//Cast
|
||||
if (rand()%100 < 80) //80% chance to cast
|
||||
@@ -134,19 +134,19 @@ struct TRINITY_DLL_DECL boss_cannon_master_willeyAI : public ScriptedAI
|
||||
}
|
||||
//14 seconds until we should cast this again
|
||||
KnockAway_Timer = 14000;
|
||||
}else KnockAway_Timer -= diff;
|
||||
} else KnockAway_Timer -= diff;
|
||||
|
||||
//Shoot
|
||||
if (Shoot_Timer < diff)
|
||||
if (Shoot_Timer <= diff)
|
||||
{
|
||||
//Cast
|
||||
DoCast(m_creature->getVictim(),SPELL_SHOOT);
|
||||
//1 seconds until we should cast this again
|
||||
Shoot_Timer = 1000;
|
||||
}else Shoot_Timer -= diff;
|
||||
} else Shoot_Timer -= diff;
|
||||
|
||||
//SummonRifleman
|
||||
if (SummonRifleman_Timer < diff)
|
||||
if (SummonRifleman_Timer <= diff)
|
||||
{
|
||||
//Cast
|
||||
switch (rand()%9)
|
||||
@@ -199,7 +199,7 @@ struct TRINITY_DLL_DECL boss_cannon_master_willeyAI : public ScriptedAI
|
||||
}
|
||||
//30 seconds until we should cast this again
|
||||
SummonRifleman_Timer = 30000;
|
||||
}else SummonRifleman_Timer -= diff;
|
||||
} else SummonRifleman_Timer -= diff;
|
||||
|
||||
DoMeleeAttackIfReady();
|
||||
}
|
||||
|
||||
+18
-18
@@ -116,32 +116,32 @@ struct TRINITY_DLL_DECL boss_dathrohan_balnazzarAI : public ScriptedAI
|
||||
if (!m_bTransformed)
|
||||
{
|
||||
//MindBlast
|
||||
if (m_uiMindBlast_Timer < uiDiff)
|
||||
if (m_uiMindBlast_Timer <= uiDiff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(),SPELL_MINDBLAST);
|
||||
m_uiMindBlast_Timer = 15000 + rand()%5000;
|
||||
}else m_uiMindBlast_Timer -= uiDiff;
|
||||
} else m_uiMindBlast_Timer -= uiDiff;
|
||||
|
||||
//CrusadersHammer
|
||||
if (m_uiCrusadersHammer_Timer < uiDiff)
|
||||
if (m_uiCrusadersHammer_Timer <= uiDiff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(),SPELL_CRUSADERSHAMMER);
|
||||
m_uiCrusadersHammer_Timer = 12000;
|
||||
}else m_uiCrusadersHammer_Timer -= uiDiff;
|
||||
} else m_uiCrusadersHammer_Timer -= uiDiff;
|
||||
|
||||
//CrusaderStrike
|
||||
if (m_uiCrusaderStrike_Timer < uiDiff)
|
||||
if (m_uiCrusaderStrike_Timer <= uiDiff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(),SPELL_CRUSADERSTRIKE);
|
||||
m_uiCrusaderStrike_Timer = 15000;
|
||||
}else m_uiCrusaderStrike_Timer -= uiDiff;
|
||||
} else m_uiCrusaderStrike_Timer -= uiDiff;
|
||||
|
||||
//HolyStrike
|
||||
if (m_uiHolyStrike_Timer < uiDiff)
|
||||
if (m_uiHolyStrike_Timer <= uiDiff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(),SPELL_HOLYSTRIKE);
|
||||
m_uiHolyStrike_Timer = 15000;
|
||||
}else m_uiHolyStrike_Timer -= uiDiff;
|
||||
} else m_uiHolyStrike_Timer -= uiDiff;
|
||||
|
||||
//BalnazzarTransform
|
||||
if (m_creature->GetHealth()*100 / m_creature->GetMaxHealth() < 40)
|
||||
@@ -158,43 +158,43 @@ struct TRINITY_DLL_DECL boss_dathrohan_balnazzarAI : public ScriptedAI
|
||||
else
|
||||
{
|
||||
//MindBlast
|
||||
if (m_uiMindBlast_Timer < uiDiff)
|
||||
if (m_uiMindBlast_Timer <= uiDiff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(),SPELL_MINDBLAST);
|
||||
m_uiMindBlast_Timer = 15000 + rand()%5000;
|
||||
}else m_uiMindBlast_Timer -= uiDiff;
|
||||
} else m_uiMindBlast_Timer -= uiDiff;
|
||||
|
||||
//ShadowShock
|
||||
if (m_uiShadowShock_Timer < uiDiff)
|
||||
if (m_uiShadowShock_Timer <= uiDiff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(),SPELL_SHADOWSHOCK);
|
||||
m_uiShadowShock_Timer = 11000;
|
||||
}else m_uiShadowShock_Timer -= uiDiff;
|
||||
} else m_uiShadowShock_Timer -= uiDiff;
|
||||
|
||||
//PsychicScream
|
||||
if (m_uiPsychicScream_Timer < uiDiff)
|
||||
if (m_uiPsychicScream_Timer <= uiDiff)
|
||||
{
|
||||
if (Unit* pTarget = SelectUnit(SELECT_TARGET_RANDOM,0))
|
||||
DoCast(pTarget,SPELL_PSYCHICSCREAM);
|
||||
|
||||
m_uiPsychicScream_Timer = 20000;
|
||||
}else m_uiPsychicScream_Timer -= uiDiff;
|
||||
} else m_uiPsychicScream_Timer -= uiDiff;
|
||||
|
||||
//DeepSleep
|
||||
if (m_uiDeepSleep_Timer < uiDiff)
|
||||
if (m_uiDeepSleep_Timer <= uiDiff)
|
||||
{
|
||||
if (Unit *pTarget = SelectUnit(SELECT_TARGET_RANDOM,0))
|
||||
DoCast(pTarget,SPELL_SLEEP);
|
||||
|
||||
m_uiDeepSleep_Timer = 15000;
|
||||
}else m_uiDeepSleep_Timer -= uiDiff;
|
||||
} else m_uiDeepSleep_Timer -= uiDiff;
|
||||
|
||||
//MindControl
|
||||
if (m_uiMindControl_Timer < uiDiff)
|
||||
if (m_uiMindControl_Timer <= uiDiff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(),SPELL_MINDCONTROL);
|
||||
m_uiMindControl_Timer = 15000;
|
||||
}else m_uiMindControl_Timer -= uiDiff;
|
||||
} else m_uiMindControl_Timer -= uiDiff;
|
||||
}
|
||||
|
||||
DoMeleeAttackIfReady();
|
||||
|
||||
+8
-8
@@ -78,7 +78,7 @@ struct TRINITY_DLL_DECL boss_magistrate_barthilasAI : public ScriptedAI
|
||||
if (!UpdateVictim())
|
||||
return;
|
||||
|
||||
if (FuriousAnger_Timer < diff)
|
||||
if (FuriousAnger_Timer <= diff)
|
||||
{
|
||||
FuriousAnger_Timer = 4000;
|
||||
if (AngerCount > 25)
|
||||
@@ -86,28 +86,28 @@ struct TRINITY_DLL_DECL boss_magistrate_barthilasAI : public ScriptedAI
|
||||
|
||||
++AngerCount;
|
||||
m_creature->CastSpell(m_creature,SPELL_FURIOUS_ANGER,false);
|
||||
}else FuriousAnger_Timer -= diff;
|
||||
} else FuriousAnger_Timer -= diff;
|
||||
|
||||
//DrainingBlow
|
||||
if (DrainingBlow_Timer < diff)
|
||||
if (DrainingBlow_Timer <= diff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(),SPELL_DRAININGBLOW);
|
||||
DrainingBlow_Timer = 15000;
|
||||
}else DrainingBlow_Timer -= diff;
|
||||
} else DrainingBlow_Timer -= diff;
|
||||
|
||||
//CrowdPummel
|
||||
if (CrowdPummel_Timer < diff)
|
||||
if (CrowdPummel_Timer <= diff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(),SPELL_CROWDPUMMEL);
|
||||
CrowdPummel_Timer = 15000;
|
||||
}else CrowdPummel_Timer -= diff;
|
||||
} else CrowdPummel_Timer -= diff;
|
||||
|
||||
//MightyBlow
|
||||
if (MightyBlow_Timer < diff)
|
||||
if (MightyBlow_Timer <= diff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(),SPELL_MIGHTYBLOW);
|
||||
MightyBlow_Timer = 20000;
|
||||
}else MightyBlow_Timer -= diff;
|
||||
} else MightyBlow_Timer -= diff;
|
||||
|
||||
DoMeleeAttackIfReady();
|
||||
}
|
||||
|
||||
@@ -66,28 +66,28 @@ struct TRINITY_DLL_DECL boss_maleki_the_pallidAI : public ScriptedAI
|
||||
return;
|
||||
|
||||
//Frostbolt
|
||||
if (Frostbolt_Timer < diff)
|
||||
if (Frostbolt_Timer <= diff)
|
||||
{
|
||||
if (rand()%100 < 90)
|
||||
DoCast(m_creature->getVictim(),SPELL_FROSTBOLT);
|
||||
Frostbolt_Timer = 3500;
|
||||
}else Frostbolt_Timer -= diff;
|
||||
} else Frostbolt_Timer -= diff;
|
||||
|
||||
//IceTomb
|
||||
if (IceTomb_Timer < diff)
|
||||
if (IceTomb_Timer <= diff)
|
||||
{
|
||||
if (rand()%100 < 65)
|
||||
DoCast(m_creature->getVictim(),SPELL_ICETOMB);
|
||||
IceTomb_Timer = 28000;
|
||||
}else IceTomb_Timer -= diff;
|
||||
} else IceTomb_Timer -= diff;
|
||||
|
||||
//DrainLife
|
||||
if (DrainLife_Timer < diff)
|
||||
if (DrainLife_Timer <= diff)
|
||||
{
|
||||
if (rand()%100 < 55)
|
||||
DoCast(m_creature->getVictim(),SPELL_DRAINLIFE);
|
||||
DrainLife_Timer = 31000;
|
||||
}else DrainLife_Timer -= diff;
|
||||
} else DrainLife_Timer -= diff;
|
||||
|
||||
DoMeleeAttackIfReady();
|
||||
}
|
||||
|
||||
@@ -40,16 +40,12 @@ struct TRINITY_DLL_DECL boss_nerubenkanAI : public ScriptedAI
|
||||
|
||||
uint32 EncasingWebs_Timer;
|
||||
uint32 PierceArmor_Timer;
|
||||
uint32 CryptScarabs_Timer;
|
||||
uint32 CryptScarabs_Timer;
|
||||
uint32 RaiseUndeadScarab_Timer;
|
||||
int Rand;
|
||||
int RandX;
|
||||
int RandY;
|
||||
Creature* Summoned;
|
||||
|
||||
void Reset()
|
||||
{
|
||||
CryptScarabs_Timer = 3000;
|
||||
CryptScarabs_Timer = 3000;
|
||||
EncasingWebs_Timer = 7000;
|
||||
PierceArmor_Timer = 19000;
|
||||
RaiseUndeadScarab_Timer = 3000;
|
||||
@@ -67,23 +63,8 @@ struct TRINITY_DLL_DECL boss_nerubenkanAI : public ScriptedAI
|
||||
|
||||
void RaiseUndeadScarab(Unit* victim)
|
||||
{
|
||||
Rand = rand()%10;
|
||||
switch (rand()%2)
|
||||
{
|
||||
case 0: RandX = 0 - Rand; break;
|
||||
case 1: RandX = 0 + Rand; break;
|
||||
}
|
||||
Rand = 0;
|
||||
Rand = rand()%10;
|
||||
switch (rand()%2)
|
||||
{
|
||||
case 0: RandY = 0 - Rand; break;
|
||||
case 1: RandY = 0 + Rand; break;
|
||||
}
|
||||
Rand = 0;
|
||||
Summoned = DoSpawnCreature(10876, RandX, RandY, 0, 0, TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN, 180000);
|
||||
if (Summoned)
|
||||
(Summoned->AI())->AttackStart(victim);
|
||||
if (Creature *UndeadScarab = DoSpawnCreature(10876, RAND(irand(0,-9),irand(0,9)), RAND(irand(0,-9),irand(0,9)), 0, 0, TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN, 180000))
|
||||
UndeadScarab->AI()->AttackStart(victim);
|
||||
}
|
||||
|
||||
void UpdateAI(const uint32 diff)
|
||||
@@ -92,33 +73,33 @@ struct TRINITY_DLL_DECL boss_nerubenkanAI : public ScriptedAI
|
||||
return;
|
||||
|
||||
//EncasingWebs
|
||||
if (EncasingWebs_Timer < diff)
|
||||
if (EncasingWebs_Timer <= diff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(),SPELL_ENCASINGWEBS);
|
||||
EncasingWebs_Timer = 30000;
|
||||
}else EncasingWebs_Timer -= diff;
|
||||
} else EncasingWebs_Timer -= diff;
|
||||
|
||||
//PierceArmor
|
||||
if (PierceArmor_Timer < diff)
|
||||
if (PierceArmor_Timer <= diff)
|
||||
{
|
||||
if (rand()%100 < 75)
|
||||
if (urand(0,3) < 2)
|
||||
DoCast(m_creature->getVictim(),SPELL_PIERCEARMOR);
|
||||
PierceArmor_Timer = 35000;
|
||||
}else PierceArmor_Timer -= diff;
|
||||
} else PierceArmor_Timer -= diff;
|
||||
|
||||
//CryptScarabs_Timer
|
||||
if (CryptScarabs_Timer < diff)
|
||||
if (CryptScarabs_Timer <= diff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(),SPELL_CRYPT_SCARABS);
|
||||
CryptScarabs_Timer = 20000;
|
||||
}else CryptScarabs_Timer -= diff;
|
||||
} else CryptScarabs_Timer -= diff;
|
||||
|
||||
//RaiseUndeadScarab
|
||||
if (RaiseUndeadScarab_Timer < diff)
|
||||
if (RaiseUndeadScarab_Timer <= diff)
|
||||
{
|
||||
RaiseUndeadScarab(m_creature->getVictim());
|
||||
RaiseUndeadScarab_Timer = 16000;
|
||||
}else RaiseUndeadScarab_Timer -= diff;
|
||||
} else RaiseUndeadScarab_Timer -= diff;
|
||||
|
||||
DoMeleeAttackIfReady();
|
||||
}
|
||||
|
||||
+4
-4
@@ -118,23 +118,23 @@ struct TRINITY_DLL_DECL boss_silver_hand_bossesAI : public ScriptedAI
|
||||
if (!UpdateVictim())
|
||||
return;
|
||||
|
||||
if (HolyLight_Timer < diff)
|
||||
if (HolyLight_Timer <= diff)
|
||||
{
|
||||
if (m_creature->GetHealth()*5 < m_creature->GetMaxHealth())
|
||||
{
|
||||
DoCast(m_creature, SPELL_HOLY_LIGHT);
|
||||
HolyLight_Timer = 20000;
|
||||
}
|
||||
}else HolyLight_Timer -= diff;
|
||||
} else HolyLight_Timer -= diff;
|
||||
|
||||
if (DivineShield_Timer < diff)
|
||||
if (DivineShield_Timer <= diff)
|
||||
{
|
||||
if (m_creature->GetHealth()*20 < m_creature->GetMaxHealth())
|
||||
{
|
||||
DoCast(m_creature, SPELL_DIVINE_SHIELD);
|
||||
DivineShield_Timer = 40000;
|
||||
}
|
||||
}else DivineShield_Timer -= diff;
|
||||
} else DivineShield_Timer -= diff;
|
||||
|
||||
DoMeleeAttackIfReady();
|
||||
}
|
||||
|
||||
+10
-10
@@ -66,7 +66,7 @@ struct TRINITY_DLL_DECL boss_postmaster_malownAI : public ScriptedAI
|
||||
return;
|
||||
|
||||
//WailingDead
|
||||
if (WailingDead_Timer < diff)
|
||||
if (WailingDead_Timer <= diff)
|
||||
{
|
||||
//Cast
|
||||
if (rand()%100 < 65) //65% chance to cast
|
||||
@@ -75,10 +75,10 @@ struct TRINITY_DLL_DECL boss_postmaster_malownAI : public ScriptedAI
|
||||
}
|
||||
//19 seconds until we should cast this again
|
||||
WailingDead_Timer = 19000;
|
||||
}else WailingDead_Timer -= diff;
|
||||
} else WailingDead_Timer -= diff;
|
||||
|
||||
//Backhand
|
||||
if (Backhand_Timer < diff)
|
||||
if (Backhand_Timer <= diff)
|
||||
{
|
||||
//Cast
|
||||
if (rand()%100 < 45) //45% chance to cast
|
||||
@@ -87,10 +87,10 @@ struct TRINITY_DLL_DECL boss_postmaster_malownAI : public ScriptedAI
|
||||
}
|
||||
//8 seconds until we should cast this again
|
||||
Backhand_Timer = 8000;
|
||||
}else Backhand_Timer -= diff;
|
||||
} else Backhand_Timer -= diff;
|
||||
|
||||
//CurseOfWeakness
|
||||
if (CurseOfWeakness_Timer < diff)
|
||||
if (CurseOfWeakness_Timer <= diff)
|
||||
{
|
||||
//Cast
|
||||
if (rand()%100 < 3) //3% chance to cast
|
||||
@@ -99,10 +99,10 @@ struct TRINITY_DLL_DECL boss_postmaster_malownAI : public ScriptedAI
|
||||
}
|
||||
//20 seconds until we should cast this again
|
||||
CurseOfWeakness_Timer = 20000;
|
||||
}else CurseOfWeakness_Timer -= diff;
|
||||
} else CurseOfWeakness_Timer -= diff;
|
||||
|
||||
//CurseOfTongues
|
||||
if (CurseOfTongues_Timer < diff)
|
||||
if (CurseOfTongues_Timer <= diff)
|
||||
{
|
||||
//Cast
|
||||
if (rand()%100 < 3) //3% chance to cast
|
||||
@@ -111,10 +111,10 @@ struct TRINITY_DLL_DECL boss_postmaster_malownAI : public ScriptedAI
|
||||
}
|
||||
//22 seconds until we should cast this again
|
||||
CurseOfTongues_Timer = 22000;
|
||||
}else CurseOfTongues_Timer -= diff;
|
||||
} else CurseOfTongues_Timer -= diff;
|
||||
|
||||
//CallOfTheGrave
|
||||
if (CallOfTheGrave_Timer < diff)
|
||||
if (CallOfTheGrave_Timer <= diff)
|
||||
{
|
||||
//Cast
|
||||
if (rand()%100 < 5) //5% chance to cast
|
||||
@@ -123,7 +123,7 @@ struct TRINITY_DLL_DECL boss_postmaster_malownAI : public ScriptedAI
|
||||
}
|
||||
//25 seconds until we should cast this again
|
||||
CallOfTheGrave_Timer = 25000;
|
||||
}else CallOfTheGrave_Timer -= diff;
|
||||
} else CallOfTheGrave_Timer -= diff;
|
||||
|
||||
DoMeleeAttackIfReady();
|
||||
}
|
||||
|
||||
+4
-4
@@ -70,18 +70,18 @@ struct TRINITY_DLL_DECL boss_ramstein_the_gorgerAI : public ScriptedAI
|
||||
return;
|
||||
|
||||
//Trample
|
||||
if (Trample_Timer < diff)
|
||||
if (Trample_Timer <= diff)
|
||||
{
|
||||
DoCast(m_creature,SPELL_TRAMPLE);
|
||||
Trample_Timer = 7000;
|
||||
}else Trample_Timer -= diff;
|
||||
} else Trample_Timer -= diff;
|
||||
|
||||
//Knockout
|
||||
if (Knockout_Timer < diff)
|
||||
if (Knockout_Timer <= diff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(),SPELL_KNOCKOUT);
|
||||
Knockout_Timer = 10000;
|
||||
}else Knockout_Timer -= diff;
|
||||
} else Knockout_Timer -= diff;
|
||||
|
||||
DoMeleeAttackIfReady();
|
||||
}
|
||||
|
||||
@@ -56,13 +56,13 @@ struct TRINITY_DLL_DECL boss_timmy_the_cruelAI : public ScriptedAI
|
||||
return;
|
||||
|
||||
//RavenousClaw
|
||||
if (RavenousClaw_Timer < diff)
|
||||
if (RavenousClaw_Timer <= diff)
|
||||
{
|
||||
//Cast
|
||||
DoCast(m_creature->getVictim(),SPELL_RAVENOUSCLAW);
|
||||
//15 seconds until we should cast this again
|
||||
RavenousClaw_Timer = 15000;
|
||||
}else RavenousClaw_Timer -= diff;
|
||||
} else RavenousClaw_Timer -= diff;
|
||||
|
||||
DoMeleeAttackIfReady();
|
||||
}
|
||||
|
||||
@@ -385,7 +385,7 @@ struct TRINITY_DLL_DECL instance_stratholme : public ScriptedInstance
|
||||
SetData(TYPE_BARON_RUN, FAIL);
|
||||
BaronRun_Timer = 0;
|
||||
debug_log("TSCR: Instance Stratholme: Baron run event reached end. Event has state %u.",GetData(TYPE_BARON_RUN));
|
||||
}else BaronRun_Timer -= diff;
|
||||
} else BaronRun_Timer -= diff;
|
||||
}
|
||||
|
||||
if (SlaugtherSquare_Timer)
|
||||
@@ -402,7 +402,7 @@ struct TRINITY_DLL_DECL instance_stratholme : public ScriptedInstance
|
||||
debug_log("TSCR: Instance Stratholme: Black guard sentries spawned. Opening gates to baron.");
|
||||
}
|
||||
SlaugtherSquare_Timer = 0;
|
||||
}else SlaugtherSquare_Timer -= diff;
|
||||
} else SlaugtherSquare_Timer -= diff;
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user