diff options
author | maximius <none@none> | 2009-10-29 00:01:29 -0700 |
---|---|---|
committer | maximius <none@none> | 2009-10-29 00:01:29 -0700 |
commit | 63d703c53c331be85bf926f1604476a0a77f3d0f (patch) | |
tree | 2c417ca4368b76d6a8f3273a1fceeee02e3cf259 /src | |
parent | b9fd59683c0146f1f6e46669ce3be183b2352720 (diff) |
*Cleanup (Brutallus' Intro should start properly now)
--HG--
branch : trunk
Diffstat (limited to 'src')
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); |