mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-22 18:15:31 +01:00
Apply code style for my prev. commit and fixed spell anti-magic zone
--HG-- branch : trunk
This commit is contained in:
@@ -27,28 +27,27 @@ EndScriptData */
|
||||
enum
|
||||
{
|
||||
//yells
|
||||
|
||||
//eadric
|
||||
SPELL_VENGEANCE = 66889,
|
||||
SPELL_RADIANCE = 66862,
|
||||
SPELL_VENGEANCE = 66889,
|
||||
SPELL_RADIANCE = 66862,
|
||||
SPELL_RADIANCE_H = 67681,
|
||||
SPELL_HAMMER_OF_JUSTICE = 66940,
|
||||
SPELL_HAMMER_OF_JUSTICE = 66940,
|
||||
SPELL_HAMMER = 67680,
|
||||
//paletress
|
||||
SPELL_SMITE = 66536,
|
||||
SPELL_SMITE_H = 67674,
|
||||
SPELL_HOLY_FIRE = 66538,
|
||||
SPELL_HOLY_FIRE = 66538,
|
||||
SPELL_HOLY_FIRE_H = 67676,
|
||||
SPELL_RENEW = 66537,
|
||||
SPELL_RENEW_H = 67675,
|
||||
SPELL_HOLY_NOVA = 66546,
|
||||
SPELL_HOLY_NOVA = 66546,
|
||||
SPELL_SHIELD = 66515,
|
||||
SPELL_CONFESS = 66547,
|
||||
//memory
|
||||
SPELL_FEAR = 66552,
|
||||
SPELL_FEAR_H = 67677,
|
||||
SPELL_SHADOWS = 66619,
|
||||
SPELL_SHADOWS_H = 67678,
|
||||
SPELL_SHADOWS_H = 67678,
|
||||
SPELL_OLD_WOUNDS = 66620,
|
||||
SPELL_OLD_WOUNDS_H = 67679,
|
||||
};
|
||||
@@ -99,6 +98,7 @@ struct TRINITY_DLL_DECL boss_eadricAI : public ScriptedAI
|
||||
{
|
||||
if (!m_pInstance)
|
||||
return;
|
||||
|
||||
if (m_pInstance->GetData(TYPE_ARGENT_CHALLENGE) == DONE)
|
||||
m_creature->ForcedDespawn();
|
||||
else
|
||||
@@ -109,35 +109,42 @@ struct TRINITY_DLL_DECL boss_eadricAI : public ScriptedAI
|
||||
{
|
||||
if (!m_pInstance)
|
||||
return;
|
||||
|
||||
m_pInstance->SetData(TYPE_ARGENT_CHALLENGE, DONE);
|
||||
}
|
||||
|
||||
void UpdateAI(const uint32 diff)
|
||||
{
|
||||
if (!m_creature->SelectVictim() || !m_creature->getVictim())
|
||||
return;
|
||||
if (!m_creature->SelectVictim() || !m_creature->getVictim())
|
||||
return;
|
||||
|
||||
if (Vengeance_Timer < diff)
|
||||
{
|
||||
{
|
||||
DoCast(m_creature, SPELL_VENGEANCE);
|
||||
Vengeance_Timer = 12000;
|
||||
}else Vengeance_Timer -= diff;
|
||||
Vengeance_Timer = 12000;
|
||||
}
|
||||
else
|
||||
Vengeance_Timer -= diff;
|
||||
|
||||
if (Radiance_Timer < diff)
|
||||
{
|
||||
{
|
||||
DoCast(m_creature, m_bIsRegularMode ? SPELL_RADIANCE : SPELL_RADIANCE_H);
|
||||
Radiance_Timer = 20000;
|
||||
}else Radiance_Timer -= diff;
|
||||
Radiance_Timer = 20000;
|
||||
}
|
||||
else
|
||||
Radiance_Timer -= diff;
|
||||
|
||||
if (Hammer_Timer < diff)
|
||||
{
|
||||
if (Unit* target = SelectUnit(SELECT_TARGET_RANDOM,0))
|
||||
{
|
||||
if (Unit* target = SelectUnit(SELECT_TARGET_RANDOM,0))
|
||||
{
|
||||
DoCast(target, SPELL_HAMMER_OF_JUSTICE);
|
||||
HammerTarget = target->GetGUID();
|
||||
}
|
||||
Hammer_Timer = 50000;
|
||||
}else Hammer_Timer -= diff;
|
||||
Hammer_Timer = 50000;
|
||||
}
|
||||
else
|
||||
Hammer_Timer -= diff;
|
||||
|
||||
if (Hammer_Dmg_Timer < diff)
|
||||
{
|
||||
@@ -145,10 +152,11 @@ struct TRINITY_DLL_DECL boss_eadricAI : public ScriptedAI
|
||||
DoCast(pHammerTarget, SPELL_HAMMER);
|
||||
Hammer_Dmg_Timer = 50000;
|
||||
}
|
||||
else Hammer_Dmg_Timer -= diff;
|
||||
else
|
||||
Hammer_Dmg_Timer -= diff;
|
||||
|
||||
DoMeleeAttackIfReady();
|
||||
}
|
||||
DoMeleeAttackIfReady();
|
||||
}
|
||||
};
|
||||
|
||||
CreatureAI* GetAI_boss_eadric(Creature* pCreature)
|
||||
@@ -160,301 +168,313 @@ CreatureAI* GetAI_boss_eadric(Creature* pCreature)
|
||||
struct TRINITY_DLL_DECL boss_paletressAI : public ScriptedAI
|
||||
{
|
||||
boss_paletressAI(Creature* pCreature) : ScriptedAI(pCreature)
|
||||
{
|
||||
Reset();
|
||||
m_pInstance = (ScriptedInstance*)pCreature->GetInstanceData();
|
||||
}
|
||||
{
|
||||
Reset();
|
||||
m_pInstance = (ScriptedInstance*)pCreature->GetInstanceData();
|
||||
}
|
||||
|
||||
ScriptedInstance* m_pInstance;
|
||||
ScriptedInstance* m_pInstance;
|
||||
bool m_bIsRegularMode;
|
||||
|
||||
uint32 Smite_Timer;
|
||||
uint32 Holy_Fire_Timer;
|
||||
uint32 Renew_Timer;
|
||||
uint32 Shield_Delay;
|
||||
uint32 Shield_Check;
|
||||
uint32 Smite_Timer;
|
||||
uint32 Holy_Fire_Timer;
|
||||
uint32 Renew_Timer;
|
||||
uint32 Shield_Delay;
|
||||
uint32 Shield_Check;
|
||||
|
||||
bool summoned;
|
||||
bool shielded;
|
||||
bool summoned;
|
||||
bool shielded;
|
||||
|
||||
void Reset()
|
||||
{
|
||||
m_creature->SetRespawnDelay(999999999);
|
||||
m_creature->RemoveAurasDueToSpell(SPELL_SHIELD);
|
||||
Smite_Timer = 5000;
|
||||
Holy_Fire_Timer = 10000;
|
||||
Renew_Timer = 7000;
|
||||
Shield_Delay = 0;
|
||||
Shield_Check = 1000;
|
||||
summoned = false;
|
||||
shielded = false;
|
||||
m_creature->SetRespawnDelay(999999999);
|
||||
m_creature->RemoveAurasDueToSpell(SPELL_SHIELD);
|
||||
Smite_Timer = 5000;
|
||||
Holy_Fire_Timer = 10000;
|
||||
Renew_Timer = 7000;
|
||||
Shield_Delay = 0;
|
||||
Shield_Check = 1000;
|
||||
summoned = false;
|
||||
shielded = false;
|
||||
}
|
||||
|
||||
void EnterEvadeMode()
|
||||
{
|
||||
m_creature->RemoveAurasDueToSpell(SPELL_SHIELD);
|
||||
Smite_Timer = 2000;
|
||||
Holy_Fire_Timer = 10000;
|
||||
Renew_Timer = 7000;
|
||||
Shield_Delay = 0;
|
||||
Shield_Check = 1000;
|
||||
summoned = false;
|
||||
shielded = false;
|
||||
m_creature->RemoveArenaAuras(true);
|
||||
m_creature->SendMonsterMove(746.864441, 660.918762, 411.695465, 4.698700, m_creature->GetDefaultMovementType(), 1);
|
||||
m_creature->GetMap()->CreatureRelocation(m_creature, 754.360779, 660.816162, 412.395996, 4.698700);
|
||||
m_creature->SetHealth(m_creature->GetMaxHealth());
|
||||
}
|
||||
void EnterEvadeMode()
|
||||
{
|
||||
m_creature->RemoveAurasDueToSpell(SPELL_SHIELD);
|
||||
Smite_Timer = 2000;
|
||||
Holy_Fire_Timer = 10000;
|
||||
Renew_Timer = 7000;
|
||||
Shield_Delay = 0;
|
||||
Shield_Check = 1000;
|
||||
summoned = false;
|
||||
shielded = false;
|
||||
m_creature->RemoveArenaAuras(true);
|
||||
m_creature->SendMonsterMove(746.864441, 660.918762, 411.695465, 4.698700, m_creature->GetDefaultMovementType(), 1);
|
||||
m_creature->GetMap()->CreatureRelocation(m_creature, 754.360779, 660.816162, 412.395996, 4.698700);
|
||||
m_creature->SetHealth(m_creature->GetMaxHealth());
|
||||
}
|
||||
|
||||
void Aggro(Unit* pWho)
|
||||
{
|
||||
if (!m_pInstance)
|
||||
return;
|
||||
m_pInstance->SetData(TYPE_ARGENT_CHALLENGE, IN_PROGRESS);
|
||||
}
|
||||
void Aggro(Unit* pWho)
|
||||
{
|
||||
if (!m_pInstance)
|
||||
return;
|
||||
|
||||
void JustDied(Unit* pKiller)
|
||||
{
|
||||
if (!m_pInstance)
|
||||
return;
|
||||
m_pInstance->SetData(TYPE_ARGENT_CHALLENGE, DONE);
|
||||
}
|
||||
m_pInstance->SetData(TYPE_ARGENT_CHALLENGE, IN_PROGRESS);
|
||||
}
|
||||
|
||||
void UpdateAI(const uint32 diff)
|
||||
void JustDied(Unit* pKiller)
|
||||
{
|
||||
if (!m_pInstance)
|
||||
return;
|
||||
|
||||
m_pInstance->SetData(TYPE_ARGENT_CHALLENGE, DONE);
|
||||
}
|
||||
|
||||
void UpdateAI(const uint32 diff)
|
||||
{
|
||||
if (!m_creature->SelectVictim() || !m_creature->getVictim())
|
||||
return;
|
||||
|
||||
if (Smite_Timer < diff)
|
||||
if (Smite_Timer < diff)
|
||||
{
|
||||
if (Unit* target = SelectUnit(SELECT_TARGET_RANDOM,0))
|
||||
DoCast(target, m_bIsRegularMode ? SPELL_SMITE : SPELL_SMITE_H);
|
||||
if (Unit* target = SelectUnit(SELECT_TARGET_RANDOM,0))
|
||||
DoCast(target, m_bIsRegularMode ? SPELL_SMITE : SPELL_SMITE_H);
|
||||
Smite_Timer = 2000;
|
||||
}else Smite_Timer -= diff;
|
||||
}
|
||||
else
|
||||
Smite_Timer -= diff;
|
||||
|
||||
if (Holy_Fire_Timer < diff)
|
||||
if (Holy_Fire_Timer < diff)
|
||||
{
|
||||
m_creature->CastStop(m_bIsRegularMode ? SPELL_SMITE : SPELL_SMITE_H);
|
||||
if (Unit* target = SelectUnit(SELECT_TARGET_RANDOM,0))
|
||||
DoCast(target, m_bIsRegularMode ? SPELL_HOLY_FIRE : SPELL_HOLY_FIRE_H);
|
||||
m_creature->CastStop(m_bIsRegularMode ? SPELL_SMITE : SPELL_SMITE_H);
|
||||
if (Unit* target = SelectUnit(SELECT_TARGET_RANDOM,0))
|
||||
DoCast(target, m_bIsRegularMode ? SPELL_HOLY_FIRE : SPELL_HOLY_FIRE_H);
|
||||
Holy_Fire_Timer = 10000;
|
||||
}else Holy_Fire_Timer -= diff;
|
||||
}
|
||||
else
|
||||
Holy_Fire_Timer -= diff;
|
||||
|
||||
if (Renew_Timer < diff)
|
||||
if (Renew_Timer < diff)
|
||||
{
|
||||
m_creature->CastStop(m_bIsRegularMode ? SPELL_SMITE : SPELL_SMITE_H);
|
||||
m_creature->CastStop(m_bIsRegularMode ? SPELL_HOLY_FIRE : SPELL_HOLY_FIRE_H);
|
||||
switch(urand(0, 1))
|
||||
m_creature->CastStop(m_bIsRegularMode ? SPELL_SMITE : SPELL_SMITE_H);
|
||||
m_creature->CastStop(m_bIsRegularMode ? SPELL_HOLY_FIRE : SPELL_HOLY_FIRE_H);
|
||||
switch(urand(0, 1))
|
||||
{
|
||||
case 0:
|
||||
if (Creature* pTemp = ((Creature*)Unit::GetUnit((*m_creature), m_pInstance->GetData64(DATA_MEMORY))))
|
||||
if (pTemp->isAlive())
|
||||
DoCast(pTemp, m_bIsRegularMode ? SPELL_RENEW : SPELL_RENEW_H);
|
||||
else
|
||||
DoCast(pTemp, m_bIsRegularMode ? SPELL_RENEW : SPELL_RENEW_H);
|
||||
{
|
||||
if (Creature* pTemp = ((Creature*)Unit::GetUnit((*m_creature), m_pInstance->GetData64(DATA_MEMORY))))
|
||||
if (pTemp->isAlive())
|
||||
DoCast(pTemp, m_bIsRegularMode ? SPELL_RENEW : SPELL_RENEW_H);
|
||||
else
|
||||
DoCast(pTemp, m_bIsRegularMode ? SPELL_RENEW : SPELL_RENEW_H);
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
DoCast(m_creature, m_bIsRegularMode ? SPELL_RENEW : SPELL_RENEW_H);
|
||||
case 1:
|
||||
DoCast(m_creature, m_bIsRegularMode ? SPELL_RENEW : SPELL_RENEW_H);
|
||||
break;
|
||||
}
|
||||
}
|
||||
Renew_Timer = 15000;
|
||||
}else Renew_Timer -= diff;
|
||||
}
|
||||
else
|
||||
Renew_Timer -= diff;
|
||||
|
||||
if ((m_creature->GetHealth()*100 / m_creature->GetMaxHealth()) < 35 && !summoned)
|
||||
{
|
||||
m_creature->CastStop(m_bIsRegularMode ? SPELL_SMITE : SPELL_SMITE_H);
|
||||
m_creature->CastStop(m_bIsRegularMode ? SPELL_HOLY_FIRE : SPELL_HOLY_FIRE_H);
|
||||
DoCast(m_creature, SPELL_HOLY_NOVA);
|
||||
switch(urand(0, 24))
|
||||
if ((m_creature->GetHealth()*100 / m_creature->GetMaxHealth()) < 35 && !summoned)
|
||||
{
|
||||
m_creature->CastStop(m_bIsRegularMode ? SPELL_SMITE : SPELL_SMITE_H);
|
||||
m_creature->CastStop(m_bIsRegularMode ? SPELL_HOLY_FIRE : SPELL_HOLY_FIRE_H);
|
||||
DoCast(m_creature, SPELL_HOLY_NOVA);
|
||||
switch(urand(0, 24))
|
||||
{
|
||||
case 0:
|
||||
if (Creature* pTemp = m_creature->SummonCreature(MEMORY_ALGALON, 0.0f, 0.0f, 0.0f, 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 5000))
|
||||
{
|
||||
pTemp->AddThreat(m_creature->getVictim(),1000.0f);
|
||||
pTemp->AI()->AttackStart(m_creature->getVictim());
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
if (Creature* pTemp = m_creature->SummonCreature(MEMORY_CHROMAGGUS, 0.0f, 0.0f, 0.0f, 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 5000))
|
||||
{
|
||||
pTemp->AddThreat(m_creature->getVictim(),1000.0f);
|
||||
pTemp->AI()->AttackStart(m_creature->getVictim());
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
if (Creature* pTemp = m_creature->SummonCreature(MEMORY_CYANIGOSA, 0.0f, 0.0f, 0.0f, 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 5000))
|
||||
{
|
||||
pTemp->AddThreat(m_creature->getVictim(),1000.0f);
|
||||
pTemp->AI()->AttackStart(m_creature->getVictim());
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
if (Creature* pTemp = m_creature->SummonCreature(MEMORY_DELRISSA, 0.0f, 0.0f, 0.0f, 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 5000))
|
||||
{
|
||||
pTemp->AddThreat(m_creature->getVictim(),1000.0f);
|
||||
pTemp->AI()->AttackStart(m_creature->getVictim());
|
||||
}
|
||||
break;
|
||||
case 4:
|
||||
if (Creature* pTemp = m_creature->SummonCreature(MEMORY_ECK, 0.0f, 0.0f, 0.0f, 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 5000))
|
||||
{
|
||||
pTemp->AddThreat(m_creature->getVictim(),1000.0f);
|
||||
pTemp->AI()->AttackStart(m_creature->getVictim());
|
||||
}
|
||||
break;
|
||||
case 5:
|
||||
if (Creature* pTemp = m_creature->SummonCreature(MEMORY_ENTROPIUS, 0.0f, 0.0f, 0.0f, 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 5000))
|
||||
{
|
||||
pTemp->AddThreat(m_creature->getVictim(),1000.0f);
|
||||
pTemp->AI()->AttackStart(m_creature->getVictim());
|
||||
}
|
||||
break;
|
||||
case 6:
|
||||
if (Creature* pTemp = m_creature->SummonCreature(MEMORY_GRUUL, 0.0f, 0.0f, 0.0f, 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 5000))
|
||||
{
|
||||
pTemp->AddThreat(m_creature->getVictim(),1000.0f);
|
||||
pTemp->AI()->AttackStart(m_creature->getVictim());
|
||||
}
|
||||
break;
|
||||
case 7:
|
||||
if (Creature* pTemp = m_creature->SummonCreature(MEMORY_HAKKAR, 0.0f, 0.0f, 0.0f, 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 5000))
|
||||
{
|
||||
pTemp->AddThreat(m_creature->getVictim(),1000.0f);
|
||||
pTemp->AI()->AttackStart(m_creature->getVictim());
|
||||
}
|
||||
break;
|
||||
case 8:
|
||||
if (Creature* pTemp = m_creature->SummonCreature(MEMORY_HEIGAN, 0.0f, 0.0f, 0.0f, 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 5000))
|
||||
{
|
||||
pTemp->AddThreat(m_creature->getVictim(),1000.0f);
|
||||
pTemp->AI()->AttackStart(m_creature->getVictim());
|
||||
}
|
||||
break;
|
||||
case 9:
|
||||
if (Creature* pTemp = m_creature->SummonCreature(MEMORY_HEROD, 0.0f, 0.0f, 0.0f, 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 5000))
|
||||
{
|
||||
pTemp->AddThreat(m_creature->getVictim(),1000.0f);
|
||||
pTemp->AI()->AttackStart(m_creature->getVictim());
|
||||
}
|
||||
break;
|
||||
case 10:
|
||||
if (Creature* pTemp = m_creature->SummonCreature(MEMORY_HOGGER, 0.0f, 0.0f, 0.0f, 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 5000))
|
||||
{
|
||||
pTemp->AddThreat(m_creature->getVictim(),1000.0f);
|
||||
pTemp->AI()->AttackStart(m_creature->getVictim());
|
||||
}
|
||||
break;
|
||||
case 11:
|
||||
if (Creature* pTemp = m_creature->SummonCreature(MEMORY_IGNIS, 0.0f, 0.0f, 0.0f, 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 5000))
|
||||
{
|
||||
pTemp->AddThreat(m_creature->getVictim(),1000.0f);
|
||||
pTemp->AI()->AttackStart(m_creature->getVictim());
|
||||
}
|
||||
break;
|
||||
case 12:
|
||||
if (Creature* pTemp = m_creature->SummonCreature(MEMORY_ILLIDAN, 0.0f, 0.0f, 0.0f, 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 5000))
|
||||
{
|
||||
pTemp->AddThreat(m_creature->getVictim(),1000.0f);
|
||||
pTemp->AI()->AttackStart(m_creature->getVictim());
|
||||
}
|
||||
break;
|
||||
case 13:
|
||||
if (Creature* pTemp = m_creature->SummonCreature(MEMORY_INGVAR, 0.0f, 0.0f, 0.0f, 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 5000))
|
||||
{
|
||||
pTemp->AddThreat(m_creature->getVictim(),1000.0f);
|
||||
pTemp->AI()->AttackStart(m_creature->getVictim());
|
||||
}
|
||||
break;
|
||||
case 14:
|
||||
if (Creature* pTemp = m_creature->SummonCreature(MEMORY_KALITHRESH, 0.0f, 0.0f, 0.0f, 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 5000))
|
||||
{
|
||||
pTemp->AddThreat(m_creature->getVictim(),1000.0f);
|
||||
pTemp->AI()->AttackStart(m_creature->getVictim());
|
||||
}
|
||||
break;
|
||||
case 15:
|
||||
if (Creature* pTemp = m_creature->SummonCreature(MEMORY_LUCIFRON, 0.0f, 0.0f, 0.0f, 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 5000))
|
||||
{
|
||||
pTemp->AddThreat(m_creature->getVictim(),1000.0f);
|
||||
pTemp->AI()->AttackStart(m_creature->getVictim());
|
||||
}
|
||||
break;
|
||||
case 16:
|
||||
if (Creature* pTemp = m_creature->SummonCreature(MEMORY_MALCHEZAAR, 0.0f, 0.0f, 0.0f, 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 5000))
|
||||
{
|
||||
pTemp->AddThreat(m_creature->getVictim(),1000.0f);
|
||||
pTemp->AI()->AttackStart(m_creature->getVictim());
|
||||
}
|
||||
break;
|
||||
case 17:
|
||||
if (Creature* pTemp = m_creature->SummonCreature(MEMORY_MUTANUS, 0.0f, 0.0f, 0.0f, 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 5000))
|
||||
{
|
||||
pTemp->AddThreat(m_creature->getVictim(),1000.0f);
|
||||
pTemp->AI()->AttackStart(m_creature->getVictim());
|
||||
}
|
||||
break;
|
||||
case 18:
|
||||
if (Creature* pTemp = m_creature->SummonCreature(MEMORY_ONYXIA, 0.0f, 0.0f, 0.0f, 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 5000))
|
||||
{
|
||||
pTemp->AddThreat(m_creature->getVictim(),1000.0f);
|
||||
pTemp->AI()->AttackStart(m_creature->getVictim());
|
||||
}
|
||||
break;
|
||||
case 19:
|
||||
if (Creature* pTemp = m_creature->SummonCreature(MEMORY_THUNDERAAN, 0.0f, 0.0f, 0.0f, 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 5000))
|
||||
{
|
||||
pTemp->AddThreat(m_creature->getVictim(),1000.0f);
|
||||
pTemp->AI()->AttackStart(m_creature->getVictim());
|
||||
}
|
||||
break;
|
||||
case 20:
|
||||
if (Creature* pTemp = m_creature->SummonCreature(MEMORY_VANCLEEF, 0.0f, 0.0f, 0.0f, 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 5000))
|
||||
{
|
||||
pTemp->AddThreat(m_creature->getVictim(),1000.0f);
|
||||
pTemp->AI()->AttackStart(m_creature->getVictim());
|
||||
}
|
||||
break;
|
||||
case 21:
|
||||
if (Creature* pTemp = m_creature->SummonCreature(MEMORY_VASHJ, 0.0f, 0.0f, 0.0f, 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 5000))
|
||||
{
|
||||
pTemp->AddThreat(m_creature->getVictim(),1000.0f);
|
||||
pTemp->AI()->AttackStart(m_creature->getVictim());
|
||||
}
|
||||
break;
|
||||
case 22:
|
||||
if (Creature* pTemp = m_creature->SummonCreature(MEMORY_VEKNILASH, 0.0f, 0.0f, 0.0f, 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 5000))
|
||||
{
|
||||
pTemp->AddThreat(m_creature->getVictim(),1000.0f);
|
||||
pTemp->AI()->AttackStart(m_creature->getVictim());
|
||||
}
|
||||
break;
|
||||
case 23:
|
||||
if (Creature* pTemp = m_creature->SummonCreature(MEMORY_VEZAX, 0.0f, 0.0f, 0.0f, 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 5000))
|
||||
{
|
||||
pTemp->AddThreat(m_creature->getVictim(),1000.0f);
|
||||
pTemp->AI()->AttackStart(m_creature->getVictim());
|
||||
}
|
||||
break;
|
||||
case 24:
|
||||
if (Creature* pTemp = m_creature->SummonCreature(MEMORY_ARCHIMONDE, 0.0f, 0.0f, 0.0f, 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 5000))
|
||||
{
|
||||
pTemp->AddThreat(m_creature->getVictim(),1000.0f);
|
||||
pTemp->AI()->AttackStart(m_creature->getVictim());
|
||||
}
|
||||
break;
|
||||
}
|
||||
summoned = true;
|
||||
Shield_Delay = 1000;
|
||||
if (Creature* pTemp = m_creature->SummonCreature(MEMORY_ALGALON, 0.0f, 0.0f, 0.0f, 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 5000))
|
||||
{
|
||||
pTemp->AddThreat(m_creature->getVictim(),1000.0f);
|
||||
pTemp->AI()->AttackStart(m_creature->getVictim());
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
if (Creature* pTemp = m_creature->SummonCreature(MEMORY_CHROMAGGUS, 0.0f, 0.0f, 0.0f, 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 5000))
|
||||
{
|
||||
pTemp->AddThreat(m_creature->getVictim(),1000.0f);
|
||||
pTemp->AI()->AttackStart(m_creature->getVictim());
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
if (Creature* pTemp = m_creature->SummonCreature(MEMORY_CYANIGOSA, 0.0f, 0.0f, 0.0f, 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 5000))
|
||||
{
|
||||
pTemp->AddThreat(m_creature->getVictim(),1000.0f);
|
||||
pTemp->AI()->AttackStart(m_creature->getVictim());
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
if (Creature* pTemp = m_creature->SummonCreature(MEMORY_DELRISSA, 0.0f, 0.0f, 0.0f, 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 5000))
|
||||
{
|
||||
pTemp->AddThreat(m_creature->getVictim(),1000.0f);
|
||||
pTemp->AI()->AttackStart(m_creature->getVictim());
|
||||
}
|
||||
break;
|
||||
case 4:
|
||||
if (Creature* pTemp = m_creature->SummonCreature(MEMORY_ECK, 0.0f, 0.0f, 0.0f, 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 5000))
|
||||
{
|
||||
pTemp->AddThreat(m_creature->getVictim(),1000.0f);
|
||||
pTemp->AI()->AttackStart(m_creature->getVictim());
|
||||
}
|
||||
break;
|
||||
case 5:
|
||||
if (Creature* pTemp = m_creature->SummonCreature(MEMORY_ENTROPIUS, 0.0f, 0.0f, 0.0f, 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 5000))
|
||||
{
|
||||
pTemp->AddThreat(m_creature->getVictim(),1000.0f);
|
||||
pTemp->AI()->AttackStart(m_creature->getVictim());
|
||||
}
|
||||
break;
|
||||
case 6:
|
||||
if (Creature* pTemp = m_creature->SummonCreature(MEMORY_GRUUL, 0.0f, 0.0f, 0.0f, 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 5000))
|
||||
{
|
||||
pTemp->AddThreat(m_creature->getVictim(),1000.0f);
|
||||
pTemp->AI()->AttackStart(m_creature->getVictim());
|
||||
}
|
||||
break;
|
||||
case 7:
|
||||
if (Creature* pTemp = m_creature->SummonCreature(MEMORY_HAKKAR, 0.0f, 0.0f, 0.0f, 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 5000))
|
||||
{
|
||||
pTemp->AddThreat(m_creature->getVictim(),1000.0f);
|
||||
pTemp->AI()->AttackStart(m_creature->getVictim());
|
||||
}
|
||||
break;
|
||||
case 8:
|
||||
if (Creature* pTemp = m_creature->SummonCreature(MEMORY_HEIGAN, 0.0f, 0.0f, 0.0f, 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 5000))
|
||||
{
|
||||
pTemp->AddThreat(m_creature->getVictim(),1000.0f);
|
||||
pTemp->AI()->AttackStart(m_creature->getVictim());
|
||||
}
|
||||
break;
|
||||
case 9:
|
||||
if (Creature* pTemp = m_creature->SummonCreature(MEMORY_HEROD, 0.0f, 0.0f, 0.0f, 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 5000))
|
||||
{
|
||||
pTemp->AddThreat(m_creature->getVictim(),1000.0f);
|
||||
pTemp->AI()->AttackStart(m_creature->getVictim());
|
||||
}
|
||||
break;
|
||||
case 10:
|
||||
if (Creature* pTemp = m_creature->SummonCreature(MEMORY_HOGGER, 0.0f, 0.0f, 0.0f, 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 5000))
|
||||
{
|
||||
pTemp->AddThreat(m_creature->getVictim(),1000.0f);
|
||||
pTemp->AI()->AttackStart(m_creature->getVictim());
|
||||
}
|
||||
break;
|
||||
case 11:
|
||||
if (Creature* pTemp = m_creature->SummonCreature(MEMORY_IGNIS, 0.0f, 0.0f, 0.0f, 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 5000))
|
||||
{
|
||||
pTemp->AddThreat(m_creature->getVictim(),1000.0f);
|
||||
pTemp->AI()->AttackStart(m_creature->getVictim());
|
||||
}
|
||||
break;
|
||||
case 12:
|
||||
if (Creature* pTemp = m_creature->SummonCreature(MEMORY_ILLIDAN, 0.0f, 0.0f, 0.0f, 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 5000))
|
||||
{
|
||||
pTemp->AddThreat(m_creature->getVictim(),1000.0f);
|
||||
pTemp->AI()->AttackStart(m_creature->getVictim());
|
||||
}
|
||||
break;
|
||||
case 13:
|
||||
if (Creature* pTemp = m_creature->SummonCreature(MEMORY_INGVAR, 0.0f, 0.0f, 0.0f, 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 5000))
|
||||
{
|
||||
pTemp->AddThreat(m_creature->getVictim(),1000.0f);
|
||||
pTemp->AI()->AttackStart(m_creature->getVictim());
|
||||
}
|
||||
break;
|
||||
case 14:
|
||||
if (Creature* pTemp = m_creature->SummonCreature(MEMORY_KALITHRESH, 0.0f, 0.0f, 0.0f, 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 5000))
|
||||
{
|
||||
pTemp->AddThreat(m_creature->getVictim(),1000.0f);
|
||||
pTemp->AI()->AttackStart(m_creature->getVictim());
|
||||
}
|
||||
break;
|
||||
case 15:
|
||||
if (Creature* pTemp = m_creature->SummonCreature(MEMORY_LUCIFRON, 0.0f, 0.0f, 0.0f, 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 5000))
|
||||
{
|
||||
pTemp->AddThreat(m_creature->getVictim(),1000.0f);
|
||||
pTemp->AI()->AttackStart(m_creature->getVictim());
|
||||
}
|
||||
break;
|
||||
case 16:
|
||||
if (Creature* pTemp = m_creature->SummonCreature(MEMORY_MALCHEZAAR, 0.0f, 0.0f, 0.0f, 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 5000))
|
||||
{
|
||||
pTemp->AddThreat(m_creature->getVictim(),1000.0f);
|
||||
pTemp->AI()->AttackStart(m_creature->getVictim());
|
||||
}
|
||||
break;
|
||||
case 17:
|
||||
if (Creature* pTemp = m_creature->SummonCreature(MEMORY_MUTANUS, 0.0f, 0.0f, 0.0f, 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 5000))
|
||||
{
|
||||
pTemp->AddThreat(m_creature->getVictim(),1000.0f);
|
||||
pTemp->AI()->AttackStart(m_creature->getVictim());
|
||||
}
|
||||
break;
|
||||
case 18:
|
||||
if (Creature* pTemp = m_creature->SummonCreature(MEMORY_ONYXIA, 0.0f, 0.0f, 0.0f, 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 5000))
|
||||
{
|
||||
pTemp->AddThreat(m_creature->getVictim(),1000.0f);
|
||||
pTemp->AI()->AttackStart(m_creature->getVictim());
|
||||
}
|
||||
break;
|
||||
case 19:
|
||||
if (Creature* pTemp = m_creature->SummonCreature(MEMORY_THUNDERAAN, 0.0f, 0.0f, 0.0f, 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 5000))
|
||||
{
|
||||
pTemp->AddThreat(m_creature->getVictim(),1000.0f);
|
||||
pTemp->AI()->AttackStart(m_creature->getVictim());
|
||||
}
|
||||
break;
|
||||
case 20:
|
||||
if (Creature* pTemp = m_creature->SummonCreature(MEMORY_VANCLEEF, 0.0f, 0.0f, 0.0f, 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 5000))
|
||||
{
|
||||
pTemp->AddThreat(m_creature->getVictim(),1000.0f);
|
||||
pTemp->AI()->AttackStart(m_creature->getVictim());
|
||||
}
|
||||
break;
|
||||
case 21:
|
||||
if (Creature* pTemp = m_creature->SummonCreature(MEMORY_VASHJ, 0.0f, 0.0f, 0.0f, 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 5000))
|
||||
{
|
||||
pTemp->AddThreat(m_creature->getVictim(),1000.0f);
|
||||
pTemp->AI()->AttackStart(m_creature->getVictim());
|
||||
}
|
||||
break;
|
||||
case 22:
|
||||
if (Creature* pTemp = m_creature->SummonCreature(MEMORY_VEKNILASH, 0.0f, 0.0f, 0.0f, 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 5000))
|
||||
{
|
||||
pTemp->AddThreat(m_creature->getVictim(),1000.0f);
|
||||
pTemp->AI()->AttackStart(m_creature->getVictim());
|
||||
}
|
||||
break;
|
||||
case 23:
|
||||
if (Creature* pTemp = m_creature->SummonCreature(MEMORY_VEZAX, 0.0f, 0.0f, 0.0f, 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 5000))
|
||||
{
|
||||
pTemp->AddThreat(m_creature->getVictim(),1000.0f);
|
||||
pTemp->AI()->AttackStart(m_creature->getVictim());
|
||||
}
|
||||
break;
|
||||
case 24:
|
||||
if (Creature* pTemp = m_creature->SummonCreature(MEMORY_ARCHIMONDE, 0.0f, 0.0f, 0.0f, 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 5000))
|
||||
{
|
||||
pTemp->AddThreat(m_creature->getVictim(),1000.0f);
|
||||
pTemp->AI()->AttackStart(m_creature->getVictim());
|
||||
}
|
||||
break;
|
||||
}
|
||||
summoned = true;
|
||||
Shield_Delay = 1000;
|
||||
}
|
||||
|
||||
if (Shield_Delay < diff && !shielded && summoned)
|
||||
{
|
||||
{
|
||||
m_creature->CastStop(m_bIsRegularMode ? SPELL_SMITE : SPELL_SMITE_H);
|
||||
m_creature->CastStop(m_bIsRegularMode ? SPELL_HOLY_FIRE : SPELL_HOLY_FIRE_H);
|
||||
DoCast(m_creature, SPELL_SHIELD);
|
||||
shielded = true;
|
||||
shielded = true;
|
||||
Shield_Check = 1000;
|
||||
}else Shield_Delay -= diff;
|
||||
}
|
||||
else
|
||||
Shield_Delay -= diff;
|
||||
|
||||
if (!m_creature->FindNearestCreature(35052, 200, true) && !m_creature->FindNearestCreature(35041, 200, true) && !m_creature->FindNearestCreature(35033, 200, true) &&
|
||||
!m_creature->FindNearestCreature(35046, 200, true) && !m_creature->FindNearestCreature(35043, 200, true) && !m_creature->FindNearestCreature(35047, 200, true) &&
|
||||
@@ -483,52 +503,58 @@ CreatureAI* GetAI_boss_paletress(Creature* pCreature)
|
||||
struct TRINITY_DLL_DECL mob_toc5_memoryAI : public ScriptedAI
|
||||
{
|
||||
mob_toc5_memoryAI(Creature* pCreature) : ScriptedAI(pCreature)
|
||||
{
|
||||
Reset();
|
||||
m_pInstance = (ScriptedInstance*)pCreature->GetInstanceData();
|
||||
}
|
||||
{
|
||||
Reset();
|
||||
m_pInstance = (ScriptedInstance*)pCreature->GetInstanceData();
|
||||
}
|
||||
|
||||
ScriptedInstance* m_pInstance;
|
||||
ScriptedInstance* m_pInstance;
|
||||
bool m_bIsRegularMode;
|
||||
|
||||
uint32 Old_Wounds_Timer;
|
||||
uint32 Shadows_Timer;
|
||||
uint32 Fear_Timer;
|
||||
uint32 Old_Wounds_Timer;
|
||||
uint32 Shadows_Timer;
|
||||
uint32 Fear_Timer;
|
||||
|
||||
void Reset()
|
||||
{
|
||||
Old_Wounds_Timer = 5000;
|
||||
Shadows_Timer = 8000;
|
||||
Fear_Timer = 13000;
|
||||
Old_Wounds_Timer = 5000;
|
||||
Shadows_Timer = 8000;
|
||||
Fear_Timer = 13000;
|
||||
}
|
||||
|
||||
void UpdateAI(const uint32 diff)
|
||||
void UpdateAI(const uint32 diff)
|
||||
{
|
||||
if (!m_creature->SelectVictim() || !m_creature->getVictim())
|
||||
return;
|
||||
|
||||
if (Old_Wounds_Timer < diff)
|
||||
if (Old_Wounds_Timer < diff)
|
||||
{
|
||||
if (Unit* target = SelectUnit(SELECT_TARGET_RANDOM,0))
|
||||
DoCast(target, m_bIsRegularMode ? SPELL_OLD_WOUNDS : SPELL_OLD_WOUNDS_H);
|
||||
if (Unit* target = SelectUnit(SELECT_TARGET_RANDOM,0))
|
||||
DoCast(target, m_bIsRegularMode ? SPELL_OLD_WOUNDS : SPELL_OLD_WOUNDS_H);
|
||||
Old_Wounds_Timer = 10000;
|
||||
}else Old_Wounds_Timer -= diff;
|
||||
}
|
||||
else
|
||||
Old_Wounds_Timer -= diff;
|
||||
|
||||
if (Fear_Timer < diff)
|
||||
if (Fear_Timer < diff)
|
||||
{
|
||||
DoCast(m_creature, m_bIsRegularMode ? SPELL_FEAR : SPELL_FEAR_H);
|
||||
DoCast(m_creature, m_bIsRegularMode ? SPELL_FEAR : SPELL_FEAR_H);
|
||||
Fear_Timer = 40000;
|
||||
}else Fear_Timer -= diff;
|
||||
}
|
||||
else
|
||||
Fear_Timer -= diff;
|
||||
|
||||
if (Shadows_Timer < diff)
|
||||
if (Shadows_Timer < diff)
|
||||
{
|
||||
if (Unit* target = SelectUnit(SELECT_TARGET_RANDOM,1))
|
||||
DoCast(target, m_bIsRegularMode ? SPELL_SHADOWS : SPELL_SHADOWS_H);
|
||||
if (Unit* target = SelectUnit(SELECT_TARGET_RANDOM,1))
|
||||
DoCast(target, m_bIsRegularMode ? SPELL_SHADOWS : SPELL_SHADOWS_H);
|
||||
Shadows_Timer = 10000;
|
||||
}else Shadows_Timer -= diff;
|
||||
}
|
||||
else
|
||||
Shadows_Timer -= diff;
|
||||
|
||||
DoMeleeAttackIfReady();
|
||||
}
|
||||
DoMeleeAttackIfReady();
|
||||
}
|
||||
};
|
||||
|
||||
CreatureAI* GetAI_mob_toc5_memory(Creature* pCreature)
|
||||
@@ -542,16 +568,16 @@ void AddSC_boss_argent_challenge()
|
||||
|
||||
NewScript = new Script;
|
||||
NewScript->Name = "boss_eadric";
|
||||
NewScript->GetAI = &GetAI_boss_eadric;
|
||||
NewScript->GetAI = &GetAI_boss_eadric;
|
||||
NewScript->RegisterSelf();
|
||||
|
||||
NewScript = new Script;
|
||||
NewScript = new Script;
|
||||
NewScript->Name = "boss_paletress";
|
||||
NewScript->GetAI = &GetAI_boss_paletress;
|
||||
NewScript->GetAI = &GetAI_boss_paletress;
|
||||
NewScript->RegisterSelf();
|
||||
|
||||
NewScript = new Script;
|
||||
NewScript = new Script;
|
||||
NewScript->Name = "mob_toc5_memory";
|
||||
NewScript->GetAI = &GetAI_mob_toc5_memory;
|
||||
NewScript->GetAI = &GetAI_mob_toc5_memory;
|
||||
NewScript->RegisterSelf();
|
||||
}
|
||||
|
||||
@@ -31,78 +31,81 @@ enum
|
||||
//undead
|
||||
SPELL_PLAGUE_STRIKE = 67724,
|
||||
SPELL_PLAGUE_STRIKE_H = 67884,
|
||||
SPELL_ICY_TOUCH = 67718,
|
||||
SPELL_ICY_TOUCH = 67718,
|
||||
SPELL_ICY_TOUCH_H = 67881,
|
||||
SPELL_OBLITERATE = 67725,
|
||||
SPELL_OBLITERATE_H = 67883,
|
||||
SPELL_CHOKE = 68306,
|
||||
SPELL_CHOKE = 68306,
|
||||
//skeleton
|
||||
SPELL_ARMY = 42650, //replacing original one, since that one spawns millions of ghouls!!
|
||||
SPELL_ARMY = 42650, //replacing original one, since that one spawns millions of ghouls!!
|
||||
//ghost
|
||||
SPELL_DEATH = 67808,
|
||||
SPELL_DEATH_H = 67875,
|
||||
SPELL_MARK = 67823,
|
||||
SPELL_MARK = 67823,
|
||||
|
||||
//risen ghoul
|
||||
SPELL_CLAW = 67879,
|
||||
SPELL_CLAW = 67879,
|
||||
SPELL_EXPLODE = 67729,
|
||||
SPELL_EXPLODE_H = 67886,
|
||||
SPELL_LEAP = 67749,
|
||||
SPELL_EXPLODE_H = 67886,
|
||||
SPELL_LEAP = 67749,
|
||||
SPELL_LEAP_H = 67880,
|
||||
|
||||
//sword ID
|
||||
EQUIP_SWORD = 40343
|
||||
EQUIP_SWORD = 40343
|
||||
};
|
||||
|
||||
// Risen Ghoul
|
||||
struct TRINITY_DLL_DECL mob_toc5_risen_ghoulAI : public ScriptedAI
|
||||
{
|
||||
mob_toc5_risen_ghoulAI(Creature* pCreature) : ScriptedAI(pCreature)
|
||||
{
|
||||
Reset();
|
||||
m_pInstance = (ScriptedInstance*)pCreature->GetInstanceData();
|
||||
}
|
||||
{
|
||||
Reset();
|
||||
m_pInstance = (ScriptedInstance*)pCreature->GetInstanceData();
|
||||
}
|
||||
|
||||
ScriptedInstance* m_pInstance;
|
||||
ScriptedInstance* m_pInstance;
|
||||
bool m_bIsRegularMode;
|
||||
|
||||
uint32 Attack;
|
||||
uint32 Attack;
|
||||
|
||||
void Reset()
|
||||
{
|
||||
Attack = 2500;
|
||||
Attack = 2500;
|
||||
}
|
||||
|
||||
void UpdateAI(const uint32 diff)
|
||||
void UpdateAI(const uint32 diff)
|
||||
{
|
||||
if (!m_creature->SelectVictim() || !m_creature->getVictim())
|
||||
return;
|
||||
|
||||
if (Attack < diff)
|
||||
if (Attack < diff)
|
||||
{
|
||||
if (Creature* pTemp = ((Creature*)Unit::GetUnit((*m_creature), m_pInstance->GetData64(DATA_BLACK_KNIGHT))))
|
||||
if (pTemp->isAlive())
|
||||
if ((pTemp->GetHealth()*100 / pTemp->GetMaxHealth()) < 25)
|
||||
DoCast(m_creature, m_bIsRegularMode ? SPELL_EXPLODE : SPELL_EXPLODE_H);
|
||||
if (m_creature->IsWithinDistInMap(m_creature->getVictim(), 4))
|
||||
{
|
||||
DoCast(m_creature->getVictim(), SPELL_CLAW);
|
||||
if (Unit* target = SelectUnit(SELECT_TARGET_RANDOM,1))
|
||||
m_creature->AI()->AttackStart(target);
|
||||
Attack = 2500;
|
||||
}else
|
||||
if (m_creature->IsWithinDistInMap(m_creature->getVictim(), 30))
|
||||
{
|
||||
DoCast(m_creature->getVictim(), m_bIsRegularMode ? SPELL_LEAP : SPELL_LEAP_H);
|
||||
Attack = 2500;
|
||||
}
|
||||
}else Attack -= diff;
|
||||
if (Creature* pTemp = ((Creature*)Unit::GetUnit((*m_creature), m_pInstance->GetData64(DATA_BLACK_KNIGHT))))
|
||||
if (pTemp->isAlive())
|
||||
if ((pTemp->GetHealth()*100 / pTemp->GetMaxHealth()) < 25)
|
||||
DoCast(m_creature, m_bIsRegularMode ? SPELL_EXPLODE : SPELL_EXPLODE_H);
|
||||
if (m_creature->IsWithinDistInMap(m_creature->getVictim(), 4))
|
||||
{
|
||||
DoCast(m_creature->getVictim(), SPELL_CLAW);
|
||||
if (Unit* target = SelectUnit(SELECT_TARGET_RANDOM,1))
|
||||
m_creature->AI()->AttackStart(target);
|
||||
Attack = 2500;
|
||||
}
|
||||
else
|
||||
if (m_creature->IsWithinDistInMap(m_creature->getVictim(), 30))
|
||||
{
|
||||
DoCast(m_creature->getVictim(), m_bIsRegularMode ? SPELL_LEAP : SPELL_LEAP_H);
|
||||
Attack = 2500;
|
||||
}
|
||||
}
|
||||
else
|
||||
Attack -= diff;
|
||||
|
||||
if ((m_creature->GetHealth()*100 / m_creature->GetMaxHealth()) < 25)
|
||||
DoCast(m_creature, m_bIsRegularMode ? SPELL_EXPLODE : SPELL_EXPLODE_H);
|
||||
if ((m_creature->GetHealth()*100 / m_creature->GetMaxHealth()) < 25)
|
||||
DoCast(m_creature, m_bIsRegularMode ? SPELL_EXPLODE : SPELL_EXPLODE_H);
|
||||
|
||||
DoMeleeAttackIfReady();
|
||||
}
|
||||
DoMeleeAttackIfReady();
|
||||
}
|
||||
};
|
||||
|
||||
CreatureAI* GetAI_mob_toc5_risen_ghoul(Creature* pCreature)
|
||||
@@ -114,106 +117,105 @@ CreatureAI* GetAI_mob_toc5_risen_ghoul(Creature* pCreature)
|
||||
struct TRINITY_DLL_DECL boss_black_knightAI : public ScriptedAI
|
||||
{
|
||||
boss_black_knightAI(Creature* pCreature) : ScriptedAI(pCreature)
|
||||
{
|
||||
Reset();
|
||||
m_pInstance = (ScriptedInstance*)pCreature->GetInstanceData();
|
||||
}
|
||||
{
|
||||
Reset();
|
||||
m_pInstance = (ScriptedInstance*)pCreature->GetInstanceData();
|
||||
}
|
||||
|
||||
ScriptedInstance* m_pInstance;
|
||||
bool m_bIsRegularMode;
|
||||
|
||||
uint32 Plague_Strike_Timer;
|
||||
uint32 Icy_Touch_Timer;
|
||||
uint32 Obliterate_Timer;
|
||||
uint32 Choke_Timer;
|
||||
uint32 Death_Timer;
|
||||
uint32 Mark_Timer;
|
||||
uint32 Phase_Delay;
|
||||
uint32 Summon_Ghoul;
|
||||
uint32 Plague_Strike_Timer;
|
||||
uint32 Icy_Touch_Timer;
|
||||
uint32 Obliterate_Timer;
|
||||
uint32 Choke_Timer;
|
||||
uint32 Death_Timer;
|
||||
uint32 Mark_Timer;
|
||||
uint32 Phase_Delay;
|
||||
uint32 Summon_Ghoul;
|
||||
|
||||
bool phase1;
|
||||
bool phase2;
|
||||
bool phase3;
|
||||
bool ghoul;
|
||||
bool phase1;
|
||||
bool phase2;
|
||||
bool phase3;
|
||||
bool ghoul;
|
||||
|
||||
void Reset()
|
||||
{
|
||||
m_creature->SetRespawnDelay(999999999);
|
||||
m_creature->SetDisplayId(29837);
|
||||
SetEquipmentSlots(false, EQUIP_SWORD, EQUIP_NO_CHANGE, EQUIP_NO_CHANGE);
|
||||
Plague_Strike_Timer = 5000;
|
||||
Icy_Touch_Timer = 10000;
|
||||
Obliterate_Timer = 16000;
|
||||
Choke_Timer = 15000;
|
||||
Summon_Ghoul = 4000;
|
||||
phase1 = true;
|
||||
phase2 = false;
|
||||
phase3 = false;
|
||||
ghoul = false;
|
||||
m_creature->SetRespawnDelay(999999999);
|
||||
m_creature->SetDisplayId(29837);
|
||||
SetEquipmentSlots(false, EQUIP_SWORD, EQUIP_NO_CHANGE, EQUIP_NO_CHANGE);
|
||||
Plague_Strike_Timer = 5000;
|
||||
Icy_Touch_Timer = 10000;
|
||||
Obliterate_Timer = 16000;
|
||||
Choke_Timer = 15000;
|
||||
Summon_Ghoul = 4000;
|
||||
phase1 = true;
|
||||
phase2 = false;
|
||||
phase3 = false;
|
||||
ghoul = false;
|
||||
}
|
||||
|
||||
void EnterEvadeMode()
|
||||
{
|
||||
m_creature->SetDisplayId(29837);
|
||||
Plague_Strike_Timer = 5000;
|
||||
Icy_Touch_Timer = 10000;
|
||||
Obliterate_Timer = 16000;
|
||||
Choke_Timer = 15000;
|
||||
Summon_Ghoul = 4000;
|
||||
phase1 = true;
|
||||
phase2 = false;
|
||||
phase3 = false;
|
||||
ghoul = false;
|
||||
m_creature->RemoveArenaAuras(true);
|
||||
m_creature->SendMonsterMove(746.864441, 660.918762, 411.695465, 4.698700, m_creature->GetDefaultMovementType(), 1);
|
||||
m_creature->GetMap()->CreatureRelocation(m_creature, 754.360779, 660.816162, 412.395996, 4.698700);
|
||||
m_creature->SetHealth(m_creature->GetMaxHealth());
|
||||
}
|
||||
|
||||
void Aggro(Unit* pWho)
|
||||
void EnterEvadeMode()
|
||||
{
|
||||
if (!m_pInstance)
|
||||
return;
|
||||
if (m_pInstance->GetData(TYPE_BLACK_KNIGHT) == DONE)
|
||||
m_creature->ForcedDespawn();
|
||||
else
|
||||
m_pInstance->SetData(TYPE_BLACK_KNIGHT, IN_PROGRESS);
|
||||
m_creature->SetDisplayId(29837);
|
||||
Plague_Strike_Timer = 5000;
|
||||
Icy_Touch_Timer = 10000;
|
||||
Obliterate_Timer = 16000;
|
||||
Choke_Timer = 15000;
|
||||
Summon_Ghoul = 4000;
|
||||
phase1 = true;
|
||||
phase2 = false;
|
||||
phase3 = false;
|
||||
ghoul = false;
|
||||
m_creature->RemoveArenaAuras(true);
|
||||
m_creature->SendMonsterMove(746.864441, 660.918762, 411.695465, 4.698700, m_creature->GetDefaultMovementType(), 1);
|
||||
m_creature->GetMap()->CreatureRelocation(m_creature, 754.360779, 660.816162, 412.395996, 4.698700);
|
||||
m_creature->SetHealth(m_creature->GetMaxHealth());
|
||||
}
|
||||
|
||||
void DamageTaken(Unit* pDoneBy, uint32& uiDamage)
|
||||
void Aggro(Unit* pWho)
|
||||
{
|
||||
if (uiDamage > m_creature->GetHealth() && !phase3){
|
||||
uiDamage = 0;
|
||||
if (phase2)
|
||||
StartPhase3();
|
||||
if (phase1)
|
||||
StartPhase2();
|
||||
}
|
||||
if (!m_pInstance)
|
||||
return;
|
||||
|
||||
if (m_pInstance->GetData(TYPE_BLACK_KNIGHT) == DONE)
|
||||
m_creature->ForcedDespawn();
|
||||
else
|
||||
m_pInstance->SetData(TYPE_BLACK_KNIGHT, IN_PROGRESS);
|
||||
}
|
||||
|
||||
void JustDied(Unit* pKiller)
|
||||
void DamageTaken(Unit* pDoneBy, uint32& uiDamage)
|
||||
{
|
||||
if (!m_pInstance)
|
||||
return;
|
||||
if (phase3)
|
||||
{
|
||||
m_pInstance->SetData(TYPE_BLACK_KNIGHT, DONE);
|
||||
}
|
||||
if (phase2)
|
||||
if (!m_creature->isAlive())
|
||||
{
|
||||
m_creature->Respawn();
|
||||
StartPhase3();
|
||||
}
|
||||
if (phase1)
|
||||
if (!m_creature->isAlive())
|
||||
{
|
||||
m_creature->Respawn();
|
||||
StartPhase2();
|
||||
}
|
||||
}
|
||||
if (uiDamage > m_creature->GetHealth() && !phase3){
|
||||
uiDamage = 0;
|
||||
if (phase2)
|
||||
StartPhase3();
|
||||
if (phase1)
|
||||
StartPhase2();
|
||||
}
|
||||
|
||||
void StartPhase2()
|
||||
void JustDied(Unit* pKiller)
|
||||
{
|
||||
if (!m_pInstance)
|
||||
return;
|
||||
|
||||
if (phase3)
|
||||
m_pInstance->SetData(TYPE_BLACK_KNIGHT, DONE);
|
||||
if (phase2)
|
||||
if (!m_creature->isAlive())
|
||||
{
|
||||
m_creature->Respawn();
|
||||
StartPhase3();
|
||||
}
|
||||
if (phase1)
|
||||
if (!m_creature->isAlive())
|
||||
{
|
||||
m_creature->Respawn();
|
||||
StartPhase2();
|
||||
}
|
||||
}
|
||||
|
||||
void StartPhase2()
|
||||
{
|
||||
m_creature->SetHealth(m_creature->GetMaxHealth());
|
||||
m_creature->SetDisplayId(27550);
|
||||
@@ -238,60 +240,74 @@ struct TRINITY_DLL_DECL boss_black_knightAI : public ScriptedAI
|
||||
Mark_Timer = 9000;
|
||||
}
|
||||
|
||||
void UpdateAI(const uint32 diff)
|
||||
void UpdateAI(const uint32 diff)
|
||||
{
|
||||
if (!m_creature->SelectVictim() || !m_creature->getVictim())
|
||||
return;
|
||||
|
||||
if (Plague_Strike_Timer < diff && !phase3)
|
||||
if (Plague_Strike_Timer < diff && !phase3)
|
||||
{
|
||||
DoCast(m_creature->getVictim(), m_bIsRegularMode ? SPELL_PLAGUE_STRIKE : SPELL_PLAGUE_STRIKE_H);
|
||||
DoCast(m_creature->getVictim(), m_bIsRegularMode ? SPELL_PLAGUE_STRIKE : SPELL_PLAGUE_STRIKE_H);
|
||||
Plague_Strike_Timer = 10500;
|
||||
}else Plague_Strike_Timer -= diff;
|
||||
}
|
||||
else
|
||||
Plague_Strike_Timer -= diff;
|
||||
|
||||
if (Icy_Touch_Timer < diff && !phase3)
|
||||
if (Icy_Touch_Timer < diff && !phase3)
|
||||
{
|
||||
DoCast(m_creature->getVictim(), m_bIsRegularMode ? SPELL_ICY_TOUCH : SPELL_ICY_TOUCH_H);
|
||||
DoCast(m_creature->getVictim(), m_bIsRegularMode ? SPELL_ICY_TOUCH : SPELL_ICY_TOUCH_H);
|
||||
Icy_Touch_Timer = 10000;
|
||||
}else Icy_Touch_Timer -= diff;
|
||||
}
|
||||
else
|
||||
Icy_Touch_Timer -= diff;
|
||||
|
||||
if (Obliterate_Timer < diff && !phase3)
|
||||
if (Obliterate_Timer < diff && !phase3)
|
||||
{
|
||||
DoCast(m_creature->getVictim(), m_bIsRegularMode ? SPELL_OBLITERATE : SPELL_OBLITERATE_H);
|
||||
DoCast(m_creature->getVictim(), m_bIsRegularMode ? SPELL_OBLITERATE : SPELL_OBLITERATE_H);
|
||||
Obliterate_Timer = 11000;
|
||||
}else Obliterate_Timer -= diff;
|
||||
}
|
||||
else
|
||||
Obliterate_Timer -= diff;
|
||||
|
||||
if (Choke_Timer < diff && phase1)
|
||||
if (Choke_Timer < diff && phase1)
|
||||
{
|
||||
if (Unit* target = SelectUnit(SELECT_TARGET_RANDOM,1))
|
||||
DoCast(m_creature->getVictim(), SPELL_CHOKE);
|
||||
Choke_Timer = 15000;
|
||||
}else Choke_Timer -= diff;
|
||||
if (Unit* target = SelectUnit(SELECT_TARGET_RANDOM,1))
|
||||
DoCast(m_creature->getVictim(), SPELL_CHOKE);
|
||||
Choke_Timer = 15000;
|
||||
}
|
||||
else
|
||||
Choke_Timer -= diff;
|
||||
|
||||
if (Summon_Ghoul < diff && phase1 && !ghoul)
|
||||
if (Summon_Ghoul < diff && phase1 && !ghoul)
|
||||
{
|
||||
if (m_pInstance->GetData(DATA_TOC5_ANNOUNCER) == m_pInstance->GetData(DATA_JAEREN))
|
||||
m_creature->SummonCreature(NPC_RISEN_JAEREN, 0.0f, 0.0f, 0.0f, 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 5000);
|
||||
else
|
||||
m_creature->SummonCreature(NPC_RISEN_ARELAS, 0.0f, 0.0f, 0.0f, 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 5000);
|
||||
ghoul = true;
|
||||
}else Summon_Ghoul -= diff;
|
||||
if (m_pInstance->GetData(DATA_TOC5_ANNOUNCER) == m_pInstance->GetData(DATA_JAEREN))
|
||||
m_creature->SummonCreature(NPC_RISEN_JAEREN, 0.0f, 0.0f, 0.0f, 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 5000);
|
||||
else
|
||||
m_creature->SummonCreature(NPC_RISEN_ARELAS, 0.0f, 0.0f, 0.0f, 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 5000);
|
||||
ghoul = true;
|
||||
}
|
||||
else
|
||||
Summon_Ghoul -= diff;
|
||||
|
||||
if (Mark_Timer < diff && phase3)
|
||||
if (Mark_Timer < diff && phase3)
|
||||
{
|
||||
if (Unit* target = SelectUnit(SELECT_TARGET_RANDOM,1))
|
||||
DoCast(target, SPELL_MARK);
|
||||
Mark_Timer = 15000;
|
||||
}else Mark_Timer -= diff;
|
||||
if (Unit* target = SelectUnit(SELECT_TARGET_RANDOM,1))
|
||||
DoCast(target, SPELL_MARK);
|
||||
Mark_Timer = 15000;
|
||||
}
|
||||
else
|
||||
Mark_Timer -= diff;
|
||||
|
||||
if (Death_Timer < diff && phase3)
|
||||
if (Death_Timer < diff && phase3)
|
||||
{
|
||||
DoCast(m_creature, m_bIsRegularMode ? SPELL_DEATH : SPELL_DEATH_H);
|
||||
Death_Timer = 3500;
|
||||
}else Death_Timer -= diff;
|
||||
DoCast(m_creature, m_bIsRegularMode ? SPELL_DEATH : SPELL_DEATH_H);
|
||||
Death_Timer = 3500;
|
||||
}
|
||||
else
|
||||
Death_Timer -= diff;
|
||||
|
||||
DoMeleeAttackIfReady();
|
||||
}
|
||||
DoMeleeAttackIfReady();
|
||||
}
|
||||
};
|
||||
|
||||
CreatureAI* GetAI_boss_black_knight(Creature* pCreature)
|
||||
@@ -305,11 +321,11 @@ void AddSC_boss_black_knight()
|
||||
|
||||
NewScript = new Script;
|
||||
NewScript->Name = "mob_toc5_risen_ghoul";
|
||||
NewScript->GetAI = &GetAI_mob_toc5_risen_ghoul;
|
||||
NewScript->GetAI = &GetAI_mob_toc5_risen_ghoul;
|
||||
NewScript->RegisterSelf();
|
||||
|
||||
NewScript = new Script;
|
||||
NewScript = new Script;
|
||||
NewScript->Name = "boss_black_knight";
|
||||
NewScript->GetAI = &GetAI_boss_black_knight;
|
||||
NewScript->GetAI = &GetAI_boss_black_knight;
|
||||
NewScript->RegisterSelf();
|
||||
}
|
||||
|
||||
@@ -69,16 +69,16 @@ struct TRINITY_DLL_DECL npc_toc5_announcerAI : public ScriptedAI
|
||||
|
||||
if(pInstance->GetData(TYPE_GRAND_CHAMPIONS) == DONE && pInstance->GetData(TYPE_ARGENT_CHALLENGE) == NOT_STARTED && pInstance->GetData(TYPE_BLACK_KNIGHT) == NOT_STARTED)
|
||||
{
|
||||
argent = RAND(35119,34928);
|
||||
argent = RAND(35119,34928);
|
||||
m_creature->SummonCreature(argent, 746.864441, 660.918762, 411.695465, 4.698700, TEMPSUMMON_MANUAL_DESPAWN, 0);
|
||||
pInstance->SetData(TYPE_ARGENT_CHALLENGE, IN_PROGRESS);
|
||||
pInstance->SetData(TYPE_ARGENT_CHALLENGE, IN_PROGRESS);
|
||||
}
|
||||
|
||||
if(pInstance->GetData(TYPE_GRAND_CHAMPIONS) == DONE && pInstance->GetData(TYPE_ARGENT_CHALLENGE) == DONE && pInstance->GetData(TYPE_BLACK_KNIGHT) == NOT_STARTED)
|
||||
{
|
||||
m_creature->SummonCreature(NPC_BLACK_KNIGHT, 746.864441, 660.918762, 411.695465, 4.698700, TEMPSUMMON_MANUAL_DESPAWN, 0);
|
||||
pInstance->SetData(TYPE_BLACK_KNIGHT, IN_PROGRESS);
|
||||
m_creature->DealDamage(m_creature, m_creature->GetHealth(), NULL, DIRECT_DAMAGE, SPELL_SCHOOL_MASK_NORMAL, NULL, false);
|
||||
m_creature->DealDamage(m_creature, m_creature->GetHealth(), NULL, DIRECT_DAMAGE, SPELL_SCHOOL_MASK_NORMAL, NULL, false);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -123,7 +123,7 @@ void AddSC_trial_of_the_champion()
|
||||
|
||||
NewScript = new Script;
|
||||
NewScript->Name = "npc_toc5_announcer";
|
||||
NewScript->GetAI = &GetAI_npc_toc5_announcer;
|
||||
NewScript->GetAI = &GetAI_npc_toc5_announcer;
|
||||
NewScript->pGossipHello = &GossipHello_npc_toc5_announcer;
|
||||
NewScript->pGossipSelect = &GossipSelect_npc_toc5_announcer;
|
||||
NewScript->RegisterSelf();
|
||||
|
||||
@@ -21,8 +21,8 @@ enum
|
||||
DATA_CHAMPIONID_1 = 11,
|
||||
DATA_CHAMPIONID_2 = 12,
|
||||
DATA_CHAMPIONID_3 = 13,
|
||||
DATA_MEMORY = 14,
|
||||
DATA_ARGENT_CHALLENGER = 15,
|
||||
DATA_MEMORY = 14,
|
||||
DATA_ARGENT_CHALLENGER = 15,
|
||||
|
||||
NPC_JACOB = 34705,
|
||||
NPC_AMBROSE = 34702,
|
||||
@@ -41,38 +41,38 @@ enum
|
||||
NPC_RISEN_ARELAS = 35564,
|
||||
NPC_JAEREN = 35004,
|
||||
NPC_ARELAS = 35005,
|
||||
MEMORY_ALGALON = 35052,
|
||||
MEMORY_ARCHIMONDE = 35041,
|
||||
MEMORY_CHROMAGGUS = 35033,
|
||||
MEMORY_CYANIGOSA = 35046,
|
||||
MEMORY_DELRISSA = 35043,
|
||||
MEMORY_ECK = 35047,
|
||||
MEMORY_ENTROPIUS = 35044,
|
||||
MEMORY_GRUUL = 35039,
|
||||
MEMORY_HAKKAR = 35034,
|
||||
MEMORY_HEIGAN = 35049,
|
||||
MEMORY_HEROD = 35030,
|
||||
MEMORY_HOGGER = 34942,
|
||||
MEMORY_IGNIS = 35050,
|
||||
MEMORY_ILLIDAN = 35042,
|
||||
MEMORY_INGVAR = 35045,
|
||||
MEMORY_KALITHRESH = 35037,
|
||||
MEMORY_LUCIFRON = 35031,
|
||||
MEMORY_MALCHEZAAR = 35038,
|
||||
MEMORY_MUTANUS = 35029,
|
||||
MEMORY_ONYXIA = 35048,
|
||||
MEMORY_THUNDERAAN = 35032,
|
||||
MEMORY_VANCLEEF = 35028,
|
||||
MEMORY_VASHJ = 35040,
|
||||
MEMORY_VEKNILASH = 35036,
|
||||
MEMORY_VEZAX = 35051,
|
||||
MEMORY_ALGALON = 35052,
|
||||
MEMORY_ARCHIMONDE = 35041,
|
||||
MEMORY_CHROMAGGUS = 35033,
|
||||
MEMORY_CYANIGOSA = 35046,
|
||||
MEMORY_DELRISSA = 35043,
|
||||
MEMORY_ECK = 35047,
|
||||
MEMORY_ENTROPIUS = 35044,
|
||||
MEMORY_GRUUL = 35039,
|
||||
MEMORY_HAKKAR = 35034,
|
||||
MEMORY_HEIGAN = 35049,
|
||||
MEMORY_HEROD = 35030,
|
||||
MEMORY_HOGGER = 34942,
|
||||
MEMORY_IGNIS = 35050,
|
||||
MEMORY_ILLIDAN = 35042,
|
||||
MEMORY_INGVAR = 35045,
|
||||
MEMORY_KALITHRESH = 35037,
|
||||
MEMORY_LUCIFRON = 35031,
|
||||
MEMORY_MALCHEZAAR = 35038,
|
||||
MEMORY_MUTANUS = 35029,
|
||||
MEMORY_ONYXIA = 35048,
|
||||
MEMORY_THUNDERAAN = 35032,
|
||||
MEMORY_VANCLEEF = 35028,
|
||||
MEMORY_VASHJ = 35040,
|
||||
MEMORY_VEKNILASH = 35036,
|
||||
MEMORY_VEZAX = 35051,
|
||||
|
||||
GO_CHAMPIONS_LOOT = 195709,
|
||||
GO_CHAMPIONS_LOOT_H = 195710,
|
||||
GO_CHAMPIONS_LOOT_H = 195710,
|
||||
GO_EADRIC_LOOT = 195374,
|
||||
GO_EADRIC_LOOT_H = 195375,
|
||||
GO_EADRIC_LOOT_H = 195375,
|
||||
GO_PALETRESS_LOOT = 195323,
|
||||
GO_PALETRESS_LOOT_H = 195324
|
||||
GO_PALETRESS_LOOT_H = 195324
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -2071,7 +2071,6 @@ void Unit::CalcAbsorbResist(Unit *pVictim, SpellSchoolMask schoolMask, DamageEff
|
||||
absorbed = canabsorb;
|
||||
|
||||
RemainingDamage -= absorbed;
|
||||
triggeredSpells.push_back(TriggeredSpellInfo(0, this, caster, absorbed, *i));
|
||||
}
|
||||
continue;
|
||||
default:
|
||||
|
||||
Reference in New Issue
Block a user