mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-22 10:05:32 +01:00
*Replace a ton of switches with RAND(), and overload RAND() to support up to 16 parameters.
*Add a safety check to prevent knocking players off of transports, just in case they die while on one. *Fix a couple incorrect spell defines. --HG-- branch : trunk
This commit is contained in:
@@ -46,14 +46,7 @@ void guardAI::Reset()
|
||||
void guardAI::EnterCombat(Unit *who)
|
||||
{
|
||||
if (m_creature->GetEntry() == 15184)
|
||||
{
|
||||
switch(rand()%3)
|
||||
{
|
||||
case 0: DoScriptText(SAY_GUARD_SIL_AGGRO1, m_creature, who); break;
|
||||
case 1: DoScriptText(SAY_GUARD_SIL_AGGRO1, m_creature, who); break;
|
||||
case 2: DoScriptText(SAY_GUARD_SIL_AGGRO1, m_creature, who); break;
|
||||
}
|
||||
}
|
||||
DoScriptText(RAND(SAY_GUARD_SIL_AGGRO1,SAY_GUARD_SIL_AGGRO2,SAY_GUARD_SIL_AGGRO3), m_creature, who);
|
||||
|
||||
if (SpellEntry const *spell = m_creature->reachWithSpellAttack(who))
|
||||
DoCastSpell(who, spell);
|
||||
|
||||
@@ -65,11 +65,7 @@ struct TRINITY_DLL_DECL boss_curatorAI : public ScriptedAI
|
||||
|
||||
void KilledUnit(Unit *victim)
|
||||
{
|
||||
switch(rand()%2)
|
||||
{
|
||||
case 0: DoScriptText(SAY_KILL1, m_creature); break;
|
||||
case 1: DoScriptText(SAY_KILL2, m_creature); break;
|
||||
}
|
||||
DoScriptText(RAND(SAY_KILL1,SAY_KILL2), m_creature);
|
||||
}
|
||||
|
||||
void JustDied(Unit *victim)
|
||||
@@ -151,10 +147,9 @@ struct TRINITY_DLL_DECL boss_curatorAI : public ScriptedAI
|
||||
}
|
||||
else
|
||||
{
|
||||
switch(rand()%4)
|
||||
if(urand(0,1) == 0)
|
||||
{
|
||||
case 0: DoScriptText(SAY_SUMMON1, m_creature); break;
|
||||
case 1: DoScriptText(SAY_SUMMON2, m_creature); break;
|
||||
DoScriptText(RAND(SAY_SUMMON1,SAY_SUMMON2), m_creature);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -62,15 +62,8 @@ struct TRINITY_DLL_DECL boss_maiden_of_virtueAI : public ScriptedAI
|
||||
|
||||
void KilledUnit(Unit* Victim)
|
||||
{
|
||||
if (rand()%2)
|
||||
return;
|
||||
|
||||
switch(rand()%3)
|
||||
{
|
||||
case 0: DoScriptText(SAY_SLAY1, m_creature);break;
|
||||
case 1: DoScriptText(SAY_SLAY2, m_creature);break;
|
||||
case 2: DoScriptText(SAY_SLAY3, m_creature);break;
|
||||
}
|
||||
if (urand(0,1) == 0)
|
||||
DoScriptText(RAND(SAY_SLAY1,SAY_SLAY2,SAY_SLAY3), m_creature);
|
||||
}
|
||||
|
||||
void JustDied(Unit* Killer)
|
||||
@@ -80,7 +73,7 @@ struct TRINITY_DLL_DECL boss_maiden_of_virtueAI : public ScriptedAI
|
||||
|
||||
void EnterCombat(Unit *who)
|
||||
{
|
||||
DoScriptText(SAY_AGGRO, m_creature);
|
||||
DoScriptText(SAY_AGGRO, m_creature);
|
||||
}
|
||||
|
||||
void UpdateAI(const uint32 diff)
|
||||
@@ -92,25 +85,21 @@ struct TRINITY_DLL_DECL boss_maiden_of_virtueAI : public ScriptedAI
|
||||
{
|
||||
DoCast(m_creature, SPELL_BERSERK,true);
|
||||
Enraged = true;
|
||||
}else Enrage_Timer -=diff;
|
||||
} else Enrage_Timer -=diff;
|
||||
|
||||
if (Holyground_Timer < diff)
|
||||
{
|
||||
DoCast(m_creature, SPELL_HOLYGROUND, true); //Triggered so it doesn't interrupt her at all
|
||||
Holyground_Timer = 3000;
|
||||
}else Holyground_Timer -= diff;
|
||||
} else Holyground_Timer -= diff;
|
||||
|
||||
if (Repentance_Timer < diff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(),SPELL_REPENTANCE);
|
||||
DoScriptText(RAND(SAY_REPENTANCE1,SAY_REPENTANCE2), m_creature);
|
||||
|
||||
switch(rand()%2)
|
||||
{
|
||||
case 0: DoScriptText(SAY_REPENTANCE1, m_creature);break;
|
||||
case 1: DoScriptText(SAY_REPENTANCE2, m_creature);break;
|
||||
}
|
||||
Repentance_Timer = 25000 + rand()%10000; //A little randomness on that spell
|
||||
}else Repentance_Timer -= diff;
|
||||
} else Repentance_Timer -= diff;
|
||||
|
||||
if (Holyfire_Timer < diff)
|
||||
{
|
||||
@@ -118,7 +107,7 @@ struct TRINITY_DLL_DECL boss_maiden_of_virtueAI : public ScriptedAI
|
||||
DoCast(target,SPELL_HOLYFIRE);
|
||||
|
||||
Holyfire_Timer = 8000 + rand()%15000; //Anywhere from 8 to 23 seconds, good luck having several of those in a row!
|
||||
}else Holyfire_Timer -= diff;
|
||||
} else Holyfire_Timer -= diff;
|
||||
|
||||
if (Holywrath_Timer < diff)
|
||||
{
|
||||
@@ -127,7 +116,7 @@ struct TRINITY_DLL_DECL boss_maiden_of_virtueAI : public ScriptedAI
|
||||
|
||||
Holywrath_Timer = 20000+(rand()%5000); //20-30 secs sounds nice
|
||||
|
||||
}else Holywrath_Timer -= diff;
|
||||
} else Holywrath_Timer -= diff;
|
||||
|
||||
DoMeleeAttackIfReady();
|
||||
}
|
||||
|
||||
@@ -86,12 +86,7 @@ struct TRINITY_DLL_DECL boss_midnightAI : public ScriptedAI
|
||||
Attumen = pAttumen->GetGUID();
|
||||
pAttumen->AI()->AttackStart(m_creature->getVictim());
|
||||
SetMidnight(pAttumen, m_creature->GetGUID());
|
||||
switch(rand()%3)
|
||||
{
|
||||
case 0: DoScriptText(SAY_APPEAR1, pAttumen); break;
|
||||
case 1: DoScriptText(SAY_APPEAR2, pAttumen); break;
|
||||
case 2: DoScriptText(SAY_APPEAR3, pAttumen); break;
|
||||
}
|
||||
DoScriptText(RAND(SAY_APPEAR1,SAY_APPEAR2,SAY_APPEAR3), pAttumen);
|
||||
}
|
||||
}
|
||||
else if (Phase == 2 && (m_creature->GetHealth()*100)/m_creature->GetMaxHealth() < 25)
|
||||
@@ -190,11 +185,7 @@ struct TRINITY_DLL_DECL boss_attumenAI : public ScriptedAI
|
||||
|
||||
void KilledUnit(Unit *victim)
|
||||
{
|
||||
switch(rand()%2)
|
||||
{
|
||||
case 0: DoScriptText(SAY_KILL1, m_creature); break;
|
||||
case 1: DoScriptText(SAY_KILL2, m_creature); break;
|
||||
}
|
||||
DoScriptText(RAND(SAY_KILL1,SAY_KILL2), m_creature);
|
||||
}
|
||||
|
||||
void JustDied(Unit *victim)
|
||||
@@ -244,11 +235,7 @@ struct TRINITY_DLL_DECL boss_attumenAI : public ScriptedAI
|
||||
|
||||
if (RandomYellTimer < diff)
|
||||
{
|
||||
switch(rand()%2)
|
||||
{
|
||||
case 0: DoScriptText(SAY_RANDOM1, m_creature); break;
|
||||
case 1: DoScriptText(SAY_RANDOM2, m_creature); break;
|
||||
}
|
||||
DoScriptText(RAND(SAY_RANDOM1,SAY_RANDOM2), m_creature);
|
||||
RandomYellTimer = 30000 + (rand()%31)*1000;
|
||||
} else RandomYellTimer -= diff;
|
||||
|
||||
|
||||
@@ -121,12 +121,7 @@ struct TRINITY_DLL_DECL boss_moroesAI : public ScriptedAI
|
||||
|
||||
void KilledUnit(Unit* victim)
|
||||
{
|
||||
switch (rand()%3)
|
||||
{
|
||||
case 0: DoScriptText(SAY_KILL_1, m_creature); break;
|
||||
case 1: DoScriptText(SAY_KILL_2, m_creature); break;
|
||||
case 2: DoScriptText(SAY_KILL_3, m_creature); break;
|
||||
}
|
||||
DoScriptText(RAND(SAY_KILL_1,SAY_KILL_2,SAY_KILL_3), m_creature);
|
||||
}
|
||||
|
||||
void JustDied(Unit* victim)
|
||||
@@ -237,7 +232,7 @@ struct TRINITY_DLL_DECL boss_moroesAI : public ScriptedAI
|
||||
{
|
||||
Temp->AI()->AttackStart(m_creature->getVictim());
|
||||
DoZoneInCombat(Temp);
|
||||
}else
|
||||
} else
|
||||
EnterEvadeMode();
|
||||
}
|
||||
}
|
||||
@@ -274,7 +269,7 @@ struct TRINITY_DLL_DECL boss_moroesAI : public ScriptedAI
|
||||
}
|
||||
}
|
||||
CheckAdds_Timer = 5000;
|
||||
}else CheckAdds_Timer -= diff;
|
||||
} else CheckAdds_Timer -= diff;
|
||||
|
||||
if (!Enrage)
|
||||
{
|
||||
@@ -285,13 +280,13 @@ struct TRINITY_DLL_DECL boss_moroesAI : public ScriptedAI
|
||||
InVanish = true;
|
||||
Vanish_Timer = 30000;
|
||||
Wait_Timer = 5000;
|
||||
}else Vanish_Timer -= diff;
|
||||
} else Vanish_Timer -= diff;
|
||||
|
||||
if (Gouge_Timer < diff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(), SPELL_GOUGE);
|
||||
Gouge_Timer = 40000;
|
||||
}else Gouge_Timer -= diff;
|
||||
} else Gouge_Timer -= diff;
|
||||
|
||||
if (Blind_Timer < diff)
|
||||
{
|
||||
@@ -304,24 +299,20 @@ struct TRINITY_DLL_DECL boss_moroesAI : public ScriptedAI
|
||||
}
|
||||
else
|
||||
Blind_Timer = 1000;
|
||||
}else Blind_Timer -= diff;
|
||||
} else Blind_Timer -= diff;
|
||||
}
|
||||
|
||||
if (InVanish)
|
||||
{
|
||||
if (Wait_Timer < diff)
|
||||
{
|
||||
switch(rand()%2)
|
||||
{
|
||||
case 0: DoScriptText(SAY_SPECIAL_1, m_creature); break;
|
||||
case 1: DoScriptText(SAY_SPECIAL_2, m_creature); break;
|
||||
}
|
||||
DoScriptText(RAND(SAY_SPECIAL_1,SAY_SPECIAL_2), m_creature);
|
||||
|
||||
if (Unit* target = SelectUnit(SELECT_TARGET_RANDOM, 0))
|
||||
target->CastSpell(target, SPELL_GARROTE,true);
|
||||
|
||||
InVanish = false;
|
||||
}else Wait_Timer -= diff;
|
||||
} else Wait_Timer -= diff;
|
||||
}
|
||||
|
||||
if (!InVanish)
|
||||
|
||||
@@ -212,12 +212,7 @@ struct TRINITY_DLL_DECL boss_malchezaarAI : public ScriptedAI
|
||||
|
||||
void KilledUnit(Unit *victim)
|
||||
{
|
||||
switch(rand()%3)
|
||||
{
|
||||
case 0: DoScriptText(SAY_SLAY1, m_creature); break;
|
||||
case 1: DoScriptText(SAY_SLAY2, m_creature); break;
|
||||
case 2: DoScriptText(SAY_SLAY3, m_creature); break;
|
||||
}
|
||||
DoScriptText(RAND(SAY_SLAY1,SAY_SLAY2,SAY_SLAY3), m_creature);
|
||||
}
|
||||
|
||||
void JustDied(Unit *victim)
|
||||
@@ -364,11 +359,7 @@ struct TRINITY_DLL_DECL boss_malchezaarAI : public ScriptedAI
|
||||
DoCast(Infernal, SPELL_INFERNAL_RELAY);
|
||||
}
|
||||
|
||||
switch(rand()%2)
|
||||
{
|
||||
case 0: DoScriptText(SAY_SUMMON1, m_creature); break;
|
||||
case 1: DoScriptText(SAY_SUMMON2, m_creature); break;
|
||||
}
|
||||
DoScriptText(RAND(SAY_SUMMON1,SAY_SUMMON2), m_creature);
|
||||
}
|
||||
|
||||
void UpdateAI(const uint32 diff)
|
||||
|
||||
@@ -147,11 +147,7 @@ struct TRINITY_DLL_DECL boss_aranAI : public ScriptedAI
|
||||
|
||||
void KilledUnit(Unit *victim)
|
||||
{
|
||||
switch(rand()%2)
|
||||
{
|
||||
case 0: DoScriptText(SAY_KILL1, m_creature); break;
|
||||
case 1: DoScriptText(SAY_KILL2, m_creature); break;
|
||||
}
|
||||
DoScriptText(RAND(SAY_KILL1,SAY_KILL2), m_creature);
|
||||
}
|
||||
|
||||
void JustDied(Unit *victim)
|
||||
@@ -167,12 +163,7 @@ struct TRINITY_DLL_DECL boss_aranAI : public ScriptedAI
|
||||
|
||||
void EnterCombat(Unit *who)
|
||||
{
|
||||
switch(rand()%3)
|
||||
{
|
||||
case 0: DoScriptText(SAY_AGGRO1, m_creature); break;
|
||||
case 1: DoScriptText(SAY_AGGRO2, m_creature); break;
|
||||
case 2: DoScriptText(SAY_AGGRO3, m_creature); break;
|
||||
}
|
||||
DoScriptText(RAND(SAY_AGGRO1,SAY_AGGRO2,SAY_AGGRO3), m_creature);
|
||||
|
||||
if (pInstance)
|
||||
{
|
||||
|
||||
@@ -226,11 +226,7 @@ struct TRINITY_DLL_DECL boss_terestianAI : public ScriptedAI
|
||||
|
||||
void KilledUnit(Unit *victim)
|
||||
{
|
||||
switch(rand()%2)
|
||||
{
|
||||
case 0: DoScriptText(SAY_SLAY1, m_creature); break;
|
||||
case 1: DoScriptText(SAY_SLAY2, m_creature); break;
|
||||
}
|
||||
DoScriptText(RAND(SAY_SLAY1,SAY_SLAY2), m_creature);
|
||||
}
|
||||
|
||||
void JustDied(Unit *killer)
|
||||
@@ -297,11 +293,7 @@ struct TRINITY_DLL_DECL boss_terestianAI : public ScriptedAI
|
||||
{
|
||||
CAST_AI(mob_demon_chainAI, Chains->AI())->SacrificeGUID = target->GetGUID();
|
||||
Chains->CastSpell(Chains, SPELL_DEMON_CHAINS, true);
|
||||
switch(rand()%2)
|
||||
{
|
||||
case 0: DoScriptText(SAY_SACRIFICE1, m_creature); break;
|
||||
case 1: DoScriptText(SAY_SACRIFICE2, m_creature); break;
|
||||
}
|
||||
DoScriptText(RAND(SAY_SACRIFICE1,SAY_SACRIFICE2), m_creature);
|
||||
SacrificeTimer = 30000;
|
||||
}
|
||||
}
|
||||
@@ -324,11 +316,7 @@ struct TRINITY_DLL_DECL boss_terestianAI : public ScriptedAI
|
||||
PortalGUID[i] = Portal->GetGUID();
|
||||
}
|
||||
SummonedPortals = true;
|
||||
switch(rand()%2)
|
||||
{
|
||||
case 0: DoScriptText(SAY_SUMMON1, m_creature); break;
|
||||
case 1: DoScriptText(SAY_SUMMON2, m_creature); break;
|
||||
}
|
||||
DoScriptText(RAND(SAY_SUMMON1,SAY_SUMMON2), m_creature);
|
||||
}
|
||||
uint32 random = rand()%2;
|
||||
Creature* Imp = m_creature->SummonCreature(CREATURE_FIENDISHIMP, PortalLocations[random][0], PortalLocations[random][1], PORTAL_Z, 0, TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN, 15000);
|
||||
|
||||
@@ -580,11 +580,7 @@ struct TRINITY_DLL_DECL boss_croneAI : public ScriptedAI
|
||||
|
||||
void EnterCombat(Unit* who)
|
||||
{
|
||||
switch(rand()%2)
|
||||
{
|
||||
case 0: DoScriptText(SAY_CRONE_AGGRO, m_creature); break;
|
||||
case 1: DoScriptText(SAY_CRONE_AGGRO2, m_creature); break;
|
||||
}
|
||||
DoScriptText(RAND(SAY_CRONE_AGGRO,SAY_CRONE_AGGRO2), m_creature);
|
||||
m_creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
||||
m_creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_OOC_NOT_ATTACKABLE);
|
||||
}
|
||||
|
||||
@@ -1110,21 +1110,16 @@ struct TRINITY_DLL_DECL boss_apokoAI : public boss_priestess_lackey_commonAI
|
||||
|
||||
if (Totem_Timer < diff)
|
||||
{
|
||||
switch(rand()%3)
|
||||
{
|
||||
case 0: DoCast(m_creature, SPELL_WINDFURY_TOTEM); break;
|
||||
case 1: DoCast(m_creature, SPELL_FIRE_NOVA_TOTEM); break;
|
||||
case 2: DoCast(m_creature, SPELL_EARTHBIND_TOTEM); break;
|
||||
}
|
||||
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;
|
||||
} else Totem_Timer -= diff;
|
||||
|
||||
if (War_Stomp_Timer < diff)
|
||||
{
|
||||
DoCast(m_creature, SPELL_WAR_STOMP);
|
||||
War_Stomp_Timer = 10000;
|
||||
}else War_Stomp_Timer -= diff;
|
||||
} else War_Stomp_Timer -= diff;
|
||||
|
||||
if (Purge_Timer < diff)
|
||||
{
|
||||
@@ -1132,13 +1127,13 @@ struct TRINITY_DLL_DECL boss_apokoAI : public boss_priestess_lackey_commonAI
|
||||
DoCast(pUnit, SPELL_PURGE);
|
||||
|
||||
Purge_Timer = 15000;
|
||||
}else Purge_Timer -= diff;
|
||||
} else Purge_Timer -= diff;
|
||||
|
||||
if (Frost_Shock_Timer < diff)
|
||||
{
|
||||
DoCast(m_creature->getVictim(), SPELL_FROST_SHOCK);
|
||||
Frost_Shock_Timer = 7000;
|
||||
}else Frost_Shock_Timer -= diff;
|
||||
} else Frost_Shock_Timer -= diff;
|
||||
|
||||
if (Healing_Wave_Timer < diff)
|
||||
{
|
||||
@@ -1153,7 +1148,7 @@ struct TRINITY_DLL_DECL boss_apokoAI : public boss_priestess_lackey_commonAI
|
||||
Healing_Wave_Timer = 5000;
|
||||
// }
|
||||
// }
|
||||
}else Healing_Wave_Timer -= diff;
|
||||
} else Healing_Wave_Timer -= diff;
|
||||
|
||||
DoMeleeAttackIfReady();
|
||||
}
|
||||
|
||||
@@ -191,11 +191,7 @@ struct TRINITY_DLL_DECL boss_selin_fireheartAI : public ScriptedAI
|
||||
|
||||
void KilledUnit(Unit* victim)
|
||||
{
|
||||
switch(rand()%2)
|
||||
{
|
||||
case 0: DoScriptText(SAY_KILL_1, m_creature); break;
|
||||
case 1: DoScriptText(SAY_KILL_2, m_creature); break;
|
||||
}
|
||||
DoScriptText(RAND(SAY_KILL_1,SAY_KILL_2), m_creature);
|
||||
}
|
||||
|
||||
void MovementInform(uint32 type, uint32 id)
|
||||
|
||||
@@ -49,16 +49,8 @@ CreatureAI* GetAI_mob_ancient_core_hound(Creature* pCreature)
|
||||
ai->Spell[0].First_Cast = 10000;
|
||||
ai->Spell[0].Cast_Target_Type = CAST_HOSTILE_TARGET;
|
||||
|
||||
uint32 RandDebuff = 0;
|
||||
switch(rand()%6)
|
||||
{
|
||||
case 0 : RandDebuff = SPELL_GROUND_STOMP; break;
|
||||
case 1 : RandDebuff = SPELL_ANCIENT_DREAD; break;
|
||||
case 2 : RandDebuff = SPELL_CAUTERIZING_FLAMES; break;
|
||||
case 3 : RandDebuff = SPELL_WITHERING_HEAT; break;
|
||||
case 4 : RandDebuff = SPELL_ANCIENT_DESPAIR; break;
|
||||
case 5 : RandDebuff = SPELL_ANCIENT_HYSTERIA; break;
|
||||
}
|
||||
uint32 RandDebuff = RAND(SPELL_GROUND_STOMP,SPELL_ANCIENT_DREAD,SPELL_CAUTERIZING_FLAMES,
|
||||
SPELL_WITHERING_HEAT,SPELL_ANCIENT_DESPAIR,SPELL_ANCIENT_HYSTERIA);
|
||||
|
||||
ai->Spell[1].Enabled = true;
|
||||
ai->Spell[1].Spell_Id = RandDebuff;
|
||||
|
||||
@@ -77,26 +77,12 @@ struct TRINITY_DLL_DECL npc_crusade_persuadedAI : public ScriptedAI
|
||||
me->SetReactState(REACT_PASSIVE);
|
||||
DoCastAOE(58111, true);
|
||||
|
||||
switch(rand()%6)
|
||||
{
|
||||
case 0: DoScriptText(SAY_PERSUADE1, caster);break;
|
||||
case 1: DoScriptText(SAY_PERSUADE2, caster);break;
|
||||
case 2: DoScriptText(SAY_PERSUADE3, caster);break;
|
||||
case 3: DoScriptText(SAY_PERSUADE4, caster);break;
|
||||
case 4: DoScriptText(SAY_PERSUADE5, caster);break;
|
||||
case 5: DoScriptText(SAY_PERSUADE6, caster);break;
|
||||
case 6: DoScriptText(SAY_PERSUADE7, caster);break;
|
||||
}
|
||||
DoScriptText(RAND(SAY_PERSUADE1,SAY_PERSUADE2,SAY_PERSUADE3,
|
||||
SAY_PERSUADE4,SAY_PERSUADE5,SAY_PERSUADE6,
|
||||
SAY_PERSUADE7), caster);
|
||||
|
||||
switch(rand()%5)
|
||||
{
|
||||
case 0: DoScriptText(SAY_CRUSADER1, me);break;
|
||||
case 1: DoScriptText(SAY_CRUSADER2, me);break;
|
||||
case 2: DoScriptText(SAY_CRUSADER3, me);break;
|
||||
case 3: DoScriptText(SAY_CRUSADER4, me);break;
|
||||
case 4: DoScriptText(SAY_CRUSADER5, me);break;
|
||||
case 5: DoScriptText(SAY_CRUSADER6, me);break;
|
||||
}
|
||||
DoScriptText(RAND(SAY_CRUSADER1,SAY_CRUSADER2,SAY_CRUSADER3,
|
||||
SAY_CRUSADER4,SAY_CRUSADER5,SAY_CRUSADER6), me);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -488,12 +474,8 @@ struct TRINITY_DLL_DECL mob_high_inquisitor_valrothAI : public ScriptedAI
|
||||
|
||||
void Shout()
|
||||
{
|
||||
switch(rand()%20)
|
||||
{
|
||||
case 0: DoScriptText(SAY_VALROTH3, me);break;
|
||||
case 1: DoScriptText(SAY_VALROTH4, me);break;
|
||||
case 2: DoScriptText(SAY_VALROTH5, me);break;
|
||||
}
|
||||
if(rand()%100 < 15)
|
||||
DoScriptText(RAND(SAY_VALROTH3,SAY_VALROTH4,SAY_VALROTH5), me);
|
||||
}
|
||||
|
||||
void JustDied(Unit* killer)
|
||||
|
||||
@@ -1297,62 +1297,49 @@ struct TRINITY_DLL_DECL npc_highlord_darion_mograineAI : public npc_escortAI
|
||||
{
|
||||
DoCast(me, SPELL_ANTI_MAGIC_ZONE1);
|
||||
uiAnti_magic_zone = 25000 + rand()%5000;
|
||||
}else uiAnti_magic_zone -= diff;
|
||||
} else uiAnti_magic_zone -= diff;
|
||||
|
||||
if (uiDeath_strike < diff)
|
||||
{
|
||||
DoCast(me->getVictim(), SPELL_DEATH_STRIKE);
|
||||
uiDeath_strike = 5000 + rand()%5000;
|
||||
}else uiDeath_strike -= diff;
|
||||
} else uiDeath_strike -= diff;
|
||||
|
||||
if (uiDeath_embrace < diff)
|
||||
{
|
||||
DoCast(me->getVictim(), SPELL_DEATH_EMBRACE);
|
||||
uiDeath_embrace = 5000 + rand()%5000;
|
||||
}else uiDeath_embrace -= diff;
|
||||
} else uiDeath_embrace -= diff;
|
||||
|
||||
if (uiIcy_touch < diff)
|
||||
{
|
||||
DoCast(me->getVictim(), SPELL_ICY_TOUCH1);
|
||||
uiIcy_touch = 5000 + rand()%5000;
|
||||
}else uiIcy_touch -= diff;
|
||||
} else uiIcy_touch -= diff;
|
||||
|
||||
if (uiUnholy_blight < diff)
|
||||
{
|
||||
DoCast(me->getVictim(), SPELL_UNHOLY_BLIGHT);
|
||||
uiUnholy_blight = 5000 + rand()%5000;
|
||||
}else uiUnholy_blight -= diff;
|
||||
} else uiUnholy_blight -= diff;
|
||||
|
||||
if (uiFight_speech < diff)
|
||||
{
|
||||
switch(rand()%15)
|
||||
{
|
||||
case 0: DoScriptText(SAY_LIGHT_OF_DAWN09, me);break;
|
||||
case 1: DoScriptText(SAY_LIGHT_OF_DAWN10, me);break;
|
||||
case 2: DoScriptText(SAY_LIGHT_OF_DAWN11, me);break;
|
||||
case 3: DoScriptText(SAY_LIGHT_OF_DAWN12, me);break;
|
||||
case 4: DoScriptText(SAY_LIGHT_OF_DAWN13, me);break;
|
||||
case 5: DoScriptText(SAY_LIGHT_OF_DAWN14, me);break;
|
||||
case 6: DoScriptText(SAY_LIGHT_OF_DAWN15, me);break;
|
||||
case 7: DoScriptText(SAY_LIGHT_OF_DAWN16, me);break;
|
||||
case 8: DoScriptText(SAY_LIGHT_OF_DAWN17, me);break;
|
||||
case 9: DoScriptText(SAY_LIGHT_OF_DAWN18, me);break;
|
||||
case 10: DoScriptText(SAY_LIGHT_OF_DAWN19, me);break;
|
||||
case 11: DoScriptText(SAY_LIGHT_OF_DAWN20, me);break;
|
||||
case 12: DoScriptText(SAY_LIGHT_OF_DAWN21, me);break;
|
||||
case 13: DoScriptText(SAY_LIGHT_OF_DAWN22, me);break;
|
||||
case 14: DoScriptText(SAY_LIGHT_OF_DAWN23, me);break;
|
||||
case 15: DoScriptText(SAY_LIGHT_OF_DAWN24, me);break;
|
||||
}
|
||||
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,
|
||||
SAY_LIGHT_OF_DAWN15,SAY_LIGHT_OF_DAWN16,SAY_LIGHT_OF_DAWN17,
|
||||
SAY_LIGHT_OF_DAWN18,SAY_LIGHT_OF_DAWN19,SAY_LIGHT_OF_DAWN20,
|
||||
SAY_LIGHT_OF_DAWN21,SAY_LIGHT_OF_DAWN22,SAY_LIGHT_OF_DAWN23,
|
||||
SAY_LIGHT_OF_DAWN24), me);
|
||||
uiFight_speech = 15000 + rand()%5000;
|
||||
}else uiFight_speech -= diff;
|
||||
} else uiFight_speech -= diff;
|
||||
|
||||
// Check spawns
|
||||
if (uiSpawncheck < diff)
|
||||
{
|
||||
SpawnNPC();
|
||||
uiSpawncheck = 1000;
|
||||
}else uiSpawncheck -= diff;
|
||||
} else uiSpawncheck -= diff;
|
||||
|
||||
// Check targets
|
||||
if (uiTargetcheck < diff)
|
||||
@@ -1370,7 +1357,7 @@ struct TRINITY_DLL_DECL npc_highlord_darion_mograineAI : public npc_escortAI
|
||||
NPCChangeTarget(uiThassarianGUID);
|
||||
|
||||
uiTargetcheck = 10000;
|
||||
}else uiTargetcheck -= diff;
|
||||
} else uiTargetcheck -= diff;
|
||||
|
||||
// Battle end
|
||||
if (uiFight_duration < diff + 5000)
|
||||
@@ -1476,7 +1463,7 @@ struct TRINITY_DLL_DECL npc_highlord_darion_mograineAI : public npc_escortAI
|
||||
|
||||
SetHoldState(false);
|
||||
|
||||
}else uiFight_duration -= diff;
|
||||
} else uiFight_duration -= diff;
|
||||
|
||||
DoMeleeAttackIfReady();
|
||||
}
|
||||
|
||||
@@ -130,12 +130,7 @@ struct TRINITY_DLL_DECL boss_brutallusAI : public ScriptedAI
|
||||
|
||||
void KilledUnit(Unit* victim)
|
||||
{
|
||||
switch(rand()%3)
|
||||
{
|
||||
case 0: DoScriptText(YELL_KILL1, m_creature); break;
|
||||
case 1: DoScriptText(YELL_KILL2, m_creature); break;
|
||||
case 2: DoScriptText(YELL_KILL3, m_creature); break;
|
||||
}
|
||||
DoScriptText(RAND(YELL_KILL1,YELL_KILL2,YELL_KILL3), m_creature);
|
||||
}
|
||||
|
||||
void JustDied(Unit* Killer)
|
||||
@@ -155,7 +150,8 @@ struct TRINITY_DLL_DECL boss_brutallusAI : public ScriptedAI
|
||||
{
|
||||
if (!Intro)
|
||||
return;
|
||||
if (Madrigosa){
|
||||
if (Madrigosa)
|
||||
{
|
||||
Madrigosa->setDeathState(ALIVE);
|
||||
Madrigosa->setActive(true);
|
||||
IsIntro = true;
|
||||
@@ -176,7 +172,7 @@ struct TRINITY_DLL_DECL boss_brutallusAI : public ScriptedAI
|
||||
if (!Madrigosa)
|
||||
return;
|
||||
|
||||
switch(IntroPhase)
|
||||
switch (IntroPhase)
|
||||
{
|
||||
case 0:
|
||||
DoScriptText(YELL_MADR_ICE_BARRIER, Madrigosa);
|
||||
@@ -260,17 +256,20 @@ struct TRINITY_DLL_DECL boss_brutallusAI : public ScriptedAI
|
||||
{
|
||||
if (IsIntro)
|
||||
{
|
||||
if (IntroPhaseTimer < diff){
|
||||
if (IntroPhaseTimer < diff)
|
||||
DoIntro();
|
||||
}else IntroPhaseTimer -= diff;
|
||||
else IntroPhaseTimer -= diff;
|
||||
|
||||
if (IntroPhase == 3 + 1){
|
||||
if (IntroFrostBoltTimer < diff){
|
||||
if (Madrigosa){
|
||||
if (IntroPhase == 3 + 1)
|
||||
{
|
||||
if (IntroFrostBoltTimer < diff)
|
||||
{
|
||||
if (Madrigosa)
|
||||
{
|
||||
Madrigosa->CastSpell(m_creature, SPELL_INTRO_FROSTBOLT, false);
|
||||
IntroFrostBoltTimer = 2000;
|
||||
}
|
||||
}else IntroFrostBoltTimer -= diff;
|
||||
} else IntroFrostBoltTimer -= diff;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -281,33 +280,28 @@ struct TRINITY_DLL_DECL boss_brutallusAI : public ScriptedAI
|
||||
{
|
||||
DoCast(m_creature->getVictim(), SPELL_METEOR_SLASH);
|
||||
SlashTimer = 11000;
|
||||
}else SlashTimer -= diff;
|
||||
} else SlashTimer -= diff;
|
||||
|
||||
if (StompTimer < diff)
|
||||
{
|
||||
switch(rand()%3)
|
||||
{
|
||||
case 0: DoScriptText(YELL_LOVE1, m_creature); break;
|
||||
case 1: DoScriptText(YELL_LOVE2, m_creature); break;
|
||||
case 2: DoScriptText(YELL_LOVE3, m_creature); break;
|
||||
}
|
||||
DoScriptText(RAND(YELL_LOVE1,YELL_LOVE2,YELL_LOVE3), m_creature);
|
||||
DoCast(m_creature->getVictim(), SPELL_STOMP);
|
||||
StompTimer = 30000;
|
||||
}else StompTimer -= diff;
|
||||
} else StompTimer -= diff;
|
||||
|
||||
if (BurnTimer < diff)
|
||||
{
|
||||
if (Unit *target = SelectUnit(SELECT_TARGET_RANDOM, 0))
|
||||
target->CastSpell(target, SPELL_BURN, true);
|
||||
BurnTimer = 60000;
|
||||
}else BurnTimer -= diff;
|
||||
} else BurnTimer -= diff;
|
||||
|
||||
if (BerserkTimer < diff && !Enraged)
|
||||
{
|
||||
DoScriptText(YELL_BERSERK, m_creature);
|
||||
DoCast(m_creature, SPELL_BERSERK);
|
||||
Enraged = true;
|
||||
}else BerserkTimer -= diff;
|
||||
} else BerserkTimer -= diff;
|
||||
|
||||
DoMeleeAttackIfReady();
|
||||
}
|
||||
|
||||
@@ -196,11 +196,7 @@ struct TRINITY_DLL_DECL boss_felmystAI : public ScriptedAI
|
||||
|
||||
void KilledUnit(Unit* victim)
|
||||
{
|
||||
switch(rand()%2)
|
||||
{
|
||||
case 0: DoScriptText(YELL_KILL1, m_creature); break;
|
||||
case 1: DoScriptText(YELL_KILL2, m_creature); break;
|
||||
}
|
||||
DoScriptText(RAND(YELL_KILL1,YELL_KILL2), m_creature);
|
||||
}
|
||||
|
||||
void JustRespawned()
|
||||
|
||||
@@ -10,19 +10,19 @@ Script Data End */
|
||||
|
||||
//Spells
|
||||
|
||||
#define SPELL_DETERMINED_STAB 55104
|
||||
#define SPELL_GROUND_TREMOR 55142
|
||||
#define SPELL_NUMBING_SHOUT 55106
|
||||
#define SPELL_DETERMINED_STAB 55104
|
||||
#define SPELL_GROUND_TREMOR 55142
|
||||
#define SPELL_NUMBING_SHOUT 55106
|
||||
|
||||
#define SPELL_DETERMINED_GORE 55102
|
||||
#define SPELL_DETERMINED_GORE_1 59444
|
||||
#define SPELL_QUAKE 55101
|
||||
#define SPELL_NUMBING_ROAR 55100
|
||||
#define SPELL_DETERMINED_GORE 55102
|
||||
#define SPELL_DETERMINED_GORE_1 59444
|
||||
#define SPELL_QUAKE 55101
|
||||
#define SPELL_NUMBING_ROAR 55100
|
||||
|
||||
#define SPELL_MOJO_FRENZY 55163
|
||||
#define SPELL_TRANSFORMATION 55098 //Periodic, The caster transforms into a powerful mammoth, increasing Physical damage done by 25% and granting immunity to Stun effects.
|
||||
#define SPELL_MOJO_FRENZY 55163
|
||||
#define SPELL_TRANSFORMATION 55098 //Periodic, The caster transforms into a powerful mammoth, increasing Physical damage done by 25% and granting immunity to Stun effects.
|
||||
|
||||
#define ACHIEVEMENT_LESS_RABI 2040
|
||||
#define ACHIEVEMENT_LESS_RABI 2040
|
||||
|
||||
//Yell
|
||||
#define SAY_AGGRO -1604010
|
||||
|
||||
@@ -39,9 +39,9 @@
|
||||
|
||||
#define SPELL_SMOKE_TRAIL 63575
|
||||
|
||||
#define SPELL_MIMIRON_INFERNO 62910 // Not Blizzlike
|
||||
#define SPELL_MIMIRON_INFERNO 62910
|
||||
|
||||
#define SPELL_HODIR_FURY 62297 // Not Blizzlike
|
||||
#define SPELL_HODIR_FURY 62297
|
||||
|
||||
#define SPELL_ELECTROSHOCK 62522
|
||||
|
||||
|
||||
@@ -13,8 +13,8 @@ update creature_template set scriptname = '' where entry = '';
|
||||
|
||||
//Spells
|
||||
#define SPELL_SHROUD_OF_DARKNESS 54524
|
||||
#define SPELL_SUMMON_VOID_SENTRY 54524
|
||||
#define SPELL_VOID_SHIFT 54524
|
||||
#define SPELL_SUMMON_VOID_SENTRY 54369
|
||||
#define SPELL_VOID_SHIFT 54361
|
||||
|
||||
#define NPC_VOID_SENTRY 29364
|
||||
|
||||
@@ -58,12 +58,8 @@ struct TRINITY_DLL_DECL boss_zuramatAI : public ScriptedAI
|
||||
{
|
||||
if (victim == m_creature)
|
||||
return;
|
||||
switch(rand()%3)
|
||||
{
|
||||
case 0: DoScriptText(SAY_SLAY_1, m_creature);break;
|
||||
case 1: DoScriptText(SAY_SLAY_2, m_creature);break;
|
||||
case 2: DoScriptText(SAY_SLAY_3, m_creature);break;
|
||||
}
|
||||
|
||||
DoScriptText(RAND(SAY_SLAY_1,SAY_SLAY_2,SAY_SLAY_3), m_creature);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user