aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/bindings/scripts/scripts/eastern_kingdoms/karazhan/boss_moroes.cpp17
-rw-r--r--src/bindings/scripts/scripts/eastern_kingdoms/sunwell_plateau/boss_brutallus.cpp19
-rw-r--r--src/bindings/scripts/scripts/eastern_kingdoms/sunwell_plateau/boss_kalecgos.cpp6
-rw-r--r--src/game/CreatureAIImpl.h2
4 files changed, 24 insertions, 20 deletions
diff --git a/src/bindings/scripts/scripts/eastern_kingdoms/karazhan/boss_moroes.cpp b/src/bindings/scripts/scripts/eastern_kingdoms/karazhan/boss_moroes.cpp
index 62e34084c34..dc6eb082313 100644
--- a/src/bindings/scripts/scripts/eastern_kingdoms/karazhan/boss_moroes.cpp
+++ b/src/bindings/scripts/scripts/eastern_kingdoms/karazhan/boss_moroes.cpp
@@ -265,18 +265,21 @@ struct TRINITY_DLL_DECL boss_moroesAI : public ScriptedAI
if (Gouge_Timer <= diff)
{
- DoCast(m_creature->getVictim(), SPELL_GOUGE);
+ DoCastVictim(SPELL_GOUGE);
Gouge_Timer = 40000;
} else Gouge_Timer -= diff;
if (Blind_Timer <= diff)
{
- Unit *pTarget = SelectTarget(SELECT_TARGET_RANDOM, 0, m_creature->GetMeleeReach()*5, true);
- if (pTarget && m_creature->IsWithinMeleeRange(pTarget))
- {
- DoCast(pTarget, SPELL_BLIND);
- Blind_Timer = 40000;
- } else Blind_Timer = 1000 + diff; // if target is out of melee range, wait a bit.
+ std::list<Unit*> pTargets;
+ SelectTargetList(pTargets, 5, SELECT_TARGET_RANDOM, m_creature->GetMeleeReach()*5, true);
+ for (std::list<Unit*>::iterator i = pTargets.begin(); i != pTargets.end(); ++i)
+ if(!m_creature->IsWithinMeleeRange(*i))
+ {
+ DoCast(pTarget, SPELL_BLIND);
+ break;
+ }
+ Blind_Timer = 40000;
} else Blind_Timer -= diff;
}
diff --git a/src/bindings/scripts/scripts/eastern_kingdoms/sunwell_plateau/boss_brutallus.cpp b/src/bindings/scripts/scripts/eastern_kingdoms/sunwell_plateau/boss_brutallus.cpp
index 14ccaca72a6..f7d0ffcc231 100644
--- a/src/bindings/scripts/scripts/eastern_kingdoms/sunwell_plateau/boss_brutallus.cpp
+++ b/src/bindings/scripts/scripts/eastern_kingdoms/sunwell_plateau/boss_brutallus.cpp
@@ -104,6 +104,7 @@ struct TRINITY_DLL_DECL boss_brutallusAI : public ScriptedAI
m_creature->CastSpell(m_creature, SPELL_DUAL_WIELD, true);
m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
+ m_creature->SetReactState(REACT_DEFENSIVE); //enables MoveInLineOfSight
Madrigosa = Unit::GetUnit(*m_creature, pInstance->GetData64(DATA_MADRIGOSA));
//Creature* boss = Unit::GetCreature((*m_creature),AzgalorGUID);
if (!Madrigosa) error_log("Madrigosa was not found");
@@ -217,7 +218,7 @@ struct TRINITY_DLL_DECL boss_brutallusAI : public ScriptedAI
++IntroPhase;
break;
case 7:
- m_creature->DealDamage(Madrigosa, Madrigosa->GetHealth(), NULL, DIRECT_DAMAGE, SPELL_SCHOOL_MASK_NORMAL, NULL, true);
+ m_creature->Kill(Madrigosa);
DoScriptText(YELL_MADR_DEATH, Madrigosa);
m_creature->SetHealth(m_creature->GetMaxHealth());
m_creature->AttackStop();
@@ -291,15 +292,15 @@ struct TRINITY_DLL_DECL boss_brutallusAI : public ScriptedAI
if (BurnTimer <= diff)
{
- if (Unit *pTarget = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true))
- if(!pTarget->HasAura(SPELL_BURN))
+ std::list<Unit*> pTargets;
+ SelectTargetList(pTargets, 10, SELECT_TARGET_RANDOM, 100, true);
+ for (std::list<Unit*>::iterator i = pTargets.begin(); i != pTargets.end(); ++i)
+ if(!(*i)->HasAura(SPELL_BURN))
{
- pTarget->CastSpell(pTarget, SPELL_BURN, true);
- BurnTimer = urand(60000,180000);
- } else
- BurnTimer = 1000 + diff; // if target has SPELL_BURN, wait a bit.
- else
- BurnTimer = urand(60000,180000); // no targets!?
+ DoCast(*i, SPELL_BURN, true);
+ break;
+ }
+ BurnTimer = urand(60000,180000);
} else BurnTimer -= diff;
if (BerserkTimer < diff && !Enraged)
diff --git a/src/bindings/scripts/scripts/eastern_kingdoms/sunwell_plateau/boss_kalecgos.cpp b/src/bindings/scripts/scripts/eastern_kingdoms/sunwell_plateau/boss_kalecgos.cpp
index 375c212d3d7..0fc61faece8 100644
--- a/src/bindings/scripts/scripts/eastern_kingdoms/sunwell_plateau/boss_kalecgos.cpp
+++ b/src/bindings/scripts/scripts/eastern_kingdoms/sunwell_plateau/boss_kalecgos.cpp
@@ -40,7 +40,7 @@ enum Quotes
SAY_GOOD_NEAR_DEATH2 = -1580008,
SAY_GOOD_PLRWIN = -1580009,
- //Shattrowar
+ //Sathrovarr
SAY_SATH_AGGRO = -1580010,
SAY_SATH_DEATH = -1580011,
SAY_SATH_SPELL1 = -1580012,
@@ -105,7 +105,7 @@ enum SWPActions
#define MAX_PLAYERS_IN_SPECTRAL_REALM 0 //over this, teleport object won't work, 0 disables check
-uint32 WildMagic[]= { 44978, 45001, 45002, 45004, 45006, 45010 };
+uint32 WildMagic[] = { 44978, 45001, 45002, 45004, 45006, 45010 };
struct TRINITY_DLL_DECL boss_kalecgosAI : public ScriptedAI
{
@@ -165,7 +165,7 @@ struct TRINITY_DLL_DECL boss_kalecgosAI : public ScriptedAI
FrostBreathTimer = 15000;
WildMagicTimer = 10000;
TailLashTimer = 25000;
- SpectralBlastTimer = 20000+(rand()%5000);
+ SpectralBlastTimer = urand(20000,25000);
CheckTimer = 1000;
ResetTimer = 30000;
diff --git a/src/game/CreatureAIImpl.h b/src/game/CreatureAIImpl.h
index 38d91624c75..1048968ce82 100644
--- a/src/game/CreatureAIImpl.h
+++ b/src/game/CreatureAIImpl.h
@@ -581,7 +581,7 @@ inline bool CreatureAI::_EnterEvadeMode()
inline void UnitAI::DoCast(Unit* victim, uint32 spellId, bool triggered)
{
- if(!victim || me->hasUnitState(UNIT_STAT_CASTING) && !triggered)
+ if(!victim || (me->hasUnitState(UNIT_STAT_CASTING) && !triggered))
return;
me->CastSpell(victim, spellId, triggered);