24#define INFERNAL_Z 275.5f
28 {-10922.8f, -1985.2f},
29 {-10916.2f, -1996.2f},
30 {-10932.2f, -2008.1f},
31 {-10948.8f, -2022.1f},
32 {-10958.7f, -1997.7f},
33 {-10971.5f, -1997.5f},
34 {-10990.8f, -1995.1f},
35 {-10989.8f, -1976.5f},
36 {-10971.6f, -1973.0f},
37 {-10955.5f, -1974.0f},
38 {-10939.6f, -1969.8f},
39 {-10958.0f, -1952.2f},
40 {-10941.7f, -1954.8f},
41 {-10943.1f, -1988.5f},
42 {-10948.8f, -2005.1f},
43 {-10984.0f, -2019.3f},
44 {-10932.8f, -1979.6f},
128 creature->AI()->KilledUnit(who);
190 for (
uint8 i = 0; i < 2; i++)
195 for (
uint8 j = 0; j < 5; j++)
211 for (
uint8 i = 0; i < 5; ++i)
268 for (std::vector<uint64>::const_iterator itr =
infernals.begin(); itr !=
infernals.end(); ++itr)
270 if (pInfernal->IsAlive())
272 pInfernal->SetVisible(
false);
281 for (
uint8 i = 0; i < 2; ++i)
308 std::vector<Unit*> targets;
314 ThreatContainer::StorageType::const_iterator itr = t_list.begin();
315 std::advance(itr, 1);
316 for (; itr != t_list.end(); ++itr)
319 targets.push_back(target);
322 while (targets.size() > 5)
323 targets.erase(targets.begin()+rand()%targets.size());
326 for (std::vector<Unit*>::const_iterator iter = targets.begin(); iter != targets.end(); ++iter, ++i)
327 if (
Unit* target = *iter)
333 target->SetHealth(1);
339 for (
uint8 i = 0; i < 5; ++i)
342 if (target && target->
IsAlive())
354 me->GetRandomNearPosition(pos, 60);
393 me->SetTarget(
me->GetVictim()->GetGUID());
399 me->InterruptNonMeleeSpells(
false);
446 for (
uint8 i = 0; i < 2; ++i)
490 for (
uint8 i = 0; i < 2; ++i)
494 if (axe->GetVictim())
497 axe->AddThreat(target, 1000000.0f);
532 target =
me->GetVictim();
562 if (
me->IsWithinMeleeRange(
me->GetVictim()) && !
me->IsNonMeleeSpellCasted(
false))
565 if (
me->isAttackReady() &&
me->GetVictim())
567 me->AttackerStateUpdate(
me->GetVictim());
568 me->resetAttackTimer();
581 for (std::vector<uint64>::iterator itr =
infernals.begin(); itr!=
infernals.end(); ++itr)
582 if (*itr == infernal->
GetGUID())
624 if (pMalchezaar && pMalchezaar->
IsAlive())
@ TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT
@ TEMPSUMMON_TIMED_DESPAWN
@ UNIT_FLAG_NOT_SELECTABLE
@ UNIT_FIELD_NATIVE_DISPLAY_ID
@ UNIT_FIELD_MAX_OFF_HAND_DAMAGE
@ UNIT_FIELD_MIN_OFF_HAND_DAMAGE
float frand(float min, float max)
static InfernalPoint InfernalPoints[]
@ INFERNAL_MODEL_INVISIBLE
void AddSC_boss_malchezaar()
void Talk(uint8 id, WorldObject const *whisperTarget=NULL)
void SetDisplayId(uint32 modelId) OVERRIDE
CreatureScript(const char *name)
void SetFlag(uint16 index, uint32 newFlag)
std::list< HostileReference * > StorageType
void DoMeleeAttackIfReady()
void DoCast(uint32 spellId)
Unit * SelectTarget(SelectAggroTarget targetType, uint32 position=0, float dist=0.0f, bool playerOnly=false, int32 aura=0)
void DoCastVictim(uint32 spellId, bool triggered=false)
virtual void AttackStart(Unit *)
void setFaction(uint32 faction)
void Kill(Unit *victim, bool durabilityLoss=true)
void AddThreat(Unit *victim, float fThreat, SpellSchoolMask schoolMask=SPELL_SCHOOL_MASK_NORMAL, SpellInfo const *threatSpell=NULL)
void SetHealth(uint32 val)
static Creature * GetCreature(WorldObject &object, uint64 guid)
static Unit * GetUnit(WorldObject &object, uint64 guid)
InstanceScript * GetInstanceScript()
CreatureAI * GetAI(Creature *creature) const OVERRIDE
CreatureAI * GetAI(Creature *creature) const OVERRIDE
C::value_type const & SelectRandomContainerElement(C const &container)
void Relocate(float x, float y)
void SetEquipmentSlots(bool loadDefault, int32 mainHand=EQUIP_NO_CHANGE, int32 offHand=EQUIP_NO_CHANGE, int32 ranged=EQUIP_NO_CHANGE)
bool HealthBelowPct(uint32 pct) const
ScriptedAI(Creature *creature)
void DoModifyThreatPercent(Unit *unit, int32 pct)
void SummonInfernal(const uint32)
InstanceScript * instance
uint32 enfeeble_health[5]
uint32 EnfeebleResetTimer
uint32 AmplifyDamageTimer
void EnterCombat(Unit *) OVERRIDE
void EnfeebleHealthEffect()
void Cleanup(Creature *infernal, InfernalPoint *point)
void DoMeleeAttacksIfReady()
uint32 InfernalCleanupTimer
uint64 enfeeble_targets[5]
void JustDied(Unit *) OVERRIDE
void KilledUnit(Unit *) OVERRIDE
void UpdateAI(uint32 diff) OVERRIDE
== Triggered Actions Requested ==================
std::vector< InfernalPoint * > positions
void EnfeebleResetHealth()
boss_malchezaarAI(Creature *creature)
uint32 AxesTargetSwitchTimer
std::vector< uint64 > infernals
void SpellHit(Unit *, const SpellInfo *spell) OVERRIDE
void EnterCombat(Unit *) OVERRIDE
void MoveInLineOfSight(Unit *) OVERRIDE
void DamageTaken(Unit *done_by, uint32 &damage) OVERRIDE
netherspite_infernalAI(Creature *creature)
void KilledUnit(Unit *who) OVERRIDE
void UpdateAI(uint32 diff) OVERRIDE
== Triggered Actions Requested ==================