class npc_frost_bomb : public CreatureScript
{
public:
npc_frost_bomb() : CreatureScript("npc_frost_bomb") { }
CreatureAI* GetAI(Creature* pCreature) const
{
return new npc_frost_bombAI (pCreature);
}
struct npc_frost_bombAI : public Scripted_NoMovementAI
{
npc_frost_bombAI(Creature *pCreature) : Scripted_NoMovementAI(pCreature)
{
me->SetReactState(REACT_PASSIVE);
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_NOT_SELECTABLE | UNIT_FLAG_PACIFIED);
DoCast(me, SPELL_FROST_BOMB);
uiFrostTimer = 10000;
}
uint32 uiFrostTimer;
void UpdateAI(const uint32 diff)
{
if (uiFrostTimer <= diff)
{
DoCastAOE(SPELL_FLAME_SUPPRESSANT_2);
for (int8 n = 0; n < 2; n++)
{
uint32 npc;
if (n == 0)
npc = NPC_FLAME;
else
npc = NPC_FLAME_SPREAD;
std::list<Creature*> m_pCreatures;
GetCreatureListWithEntryInGrid(m_pCreatures, me, npc, 25);
if (!m_pCreatures.empty())
for(std::list<Creature*>::iterator iter = m_pCreatures.begin(); iter != m_pCreatures.end(); ++iter)
(*iter)->ForcedDespawn(1000);
}
uiFrostTimer = 10000;
}
else uiFrostTimer -= diff;
}
};
};
void AddSC_boss_mimiron()
{
new boss_mimiron();
new boss_leviathan_mk();
new boss_leviathan_mk_turret();
new npc_proximity_mine();
new boss_vx_001();
new npc_rocket_strike();
new boss_aerial_unit();
new npc_magnetic_core();
new npc_assault_bot();
new npc_emergency_bot();
new go_not_push_button();
new npc_mimiron_flame_trigger();
new npc_mimiron_flame_spread();
new npc_frost_bomb();
}
{ if (!(rand()%5)) if (instance) if (Creature _pMimiron = me->GetCreature(_me, instance->GetData64(DATA_MIMIRON))) { if (phase == PHASE_LEVIATHAN_SOLO) DoScriptText(RAND(SAY_MKII_SLAY_1, SAY_MKII_SLAY_2), pMimiron); else DoScriptText(RAND(SAY_V07TRON_SLAY_1, SAY_V07TRON_SLAY_2), pMimiron); } }
};
class boss_leviathan_mk_turret : public CreatureScript { public: boss_leviathan_mk_turret() : CreatureScript("boss_leviathan_mk_turret") { }
};
class npc_proximity_mine : public CreatureScript { public: npc_proximity_mine() : CreatureScript("npc_proximity_mine") { }
};
/---------------------------------------------
class boss_vx_001 : public CreatureScript { public: boss_vx_001() : CreatureScript("boss_vx_001") { }
};
class npc_rocket_strike : public CreatureScript { public: npc_rocket_strike() : CreatureScript("npc_rocket_strike") { }
};
/---------------------------------------------
class boss_aerial_unit : public CreatureScript { public: boss_aerial_unit() : CreatureScript("boss_aerial_unit") { }
};
class npc_magnetic_core : public CreatureScript { public: npc_magnetic_core() : CreatureScript("npc_magnetic_core") { }
};
class npc_assault_bot : public CreatureScript { public: npc_assault_bot() : CreatureScript("npc_assault_bot") { }
};
class npc_emergency_bot : public CreatureScript { public: npc_emergency_bot() : CreatureScript("npc_emergency_bot") { }
};
/---------------------------------------------
class go_not_push_button : public GameObjectScript { public: go_not_push_button() : GameObjectScript("go_not_push_button") { }
};
class npc_mimiron_flame_trigger : public CreatureScript { public: npc_mimiron_flame_trigger() : CreatureScript("npc_mimiron_flame_trigger") { }
};
class npc_mimiron_flame_spread : public CreatureScript { public: npc_mimiron_flame_spread() : CreatureScript("npc_mimiron_flame_spread") { }
};
class npc_frost_bomb : public CreatureScript { public: npc_frost_bomb() : CreatureScript("npc_frost_bomb") { }
};
void AddSC_boss_mimiron() { new boss_mimiron(); new boss_leviathan_mk(); new boss_leviathan_mk_turret(); new npc_proximity_mine(); new boss_vx_001(); new npc_rocket_strike(); new boss_aerial_unit(); new npc_magnetic_core(); new npc_assault_bot(); new npc_emergency_bot(); new go_not_push_button(); new npc_mimiron_flame_trigger(); new npc_mimiron_flame_spread(); new npc_frost_bomb(); }