Apply code style for my prev. commit and fixed spell anti-magic zone

--HG--
branch : trunk
This commit is contained in:
n0n4m3
2009-12-25 18:28:29 +01:00
parent 7fbab0f69e
commit 4dae4e4083
5 changed files with 541 additions and 500 deletions

View File

@@ -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();
}

View File

@@ -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();
}

View File

@@ -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();

View File

@@ -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

View File

@@ -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: