*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:
maximius
2009-09-26 02:09:26 -07:00
parent 2853aa1cd1
commit f8a6434fc0
22 changed files with 323 additions and 248 deletions

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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