Exemplo n.º 1
0
            void EnterCombat(Unit* /*who*/)
            {
                _EnterCombat();
                events.Reset();
                events.ScheduleEvent(EVENT_SILENCE, 30000);
                events.ScheduleEvent(EVENT_CYCLONE, 20000);
                events.ScheduleEvent(EVENT_STOMP, 30000);

                DoCast(me, SPELL_SUPREME);
                Talk(SAY_AGGRO);

                if (instance)
                {
                    Map* map = me->GetMap();
                    if (!map->IsDungeon())
                        return;

                    WorldPacket data(SMSG_WEATHER, (4+4+4));
                    data << uint32(WEATHER_STATE_HEAVY_SANDSTORM) << float(1) << uint8(0);
                    map->SendToPlayers(&data);

                    for (uint8 i = 0; i < NUM_TORNADOS; ++i)
                    {
                        Position Point;
                        me->GetRandomPoint(RoomCenter, RoomRadius, Point);
                        if (Creature* Tornado = me->GetMap()->SummonCreature(NPC_SAND_VORTEX, Point))
                            Tornado->CastSpell(Tornado, SPELL_SAND_STORM, true);
                    }

                    SpawnNextCrystal();
                }
            }
Exemplo n.º 2
0
            void EnterCombat(Unit* /*who*/) override
            {
                _EnterCombat();
                events.Reset();
                events.ScheduleEvent(EVENT_SILENCE, 30000);
                events.ScheduleEvent(EVENT_CYCLONE, 20000);
                events.ScheduleEvent(EVENT_STOMP, 30000);

                DoCast(me, SPELL_SUPREME);
                Talk(SAY_AGGRO);

                Map* map = me->GetMap();

                WorldPackets::Misc::Weather weather(WEATHER_STATE_HEAVY_SANDSTORM, 1.0f);
                map->SendToPlayers(weather.Write());

                for (uint8 i = 0; i < NUM_TORNADOS; ++i)
                {
                    Position Point = me->GetRandomPoint(RoomCenter, RoomRadius);
                    if (Creature* Tornado = map->SummonCreature(NPC_SAND_VORTEX, Point))
                        Tornado->CastSpell(Tornado, SPELL_SAND_STORM, true);
                }

                SpawnNextCrystal();
            }
Exemplo n.º 3
0
 void SpellHit(Unit* caster, SpellInfo const* spell)
 {
     for (uint8 i = 0; i < NUM_WEAKNESS; ++i)
     {
         if (spell->Id == SpellWeakness[i])
         {
             me->RemoveAurasDueToSpell(SPELL_SUPREME);
             ((TempSummon*)caster)->UnSummon();
             SpawnNextCrystal();
         }
     }
 }
Exemplo n.º 4
0
 void SpellHit(Unit* caster, SpellInfo const* spell) override
 {
     for (uint8 i = 0; i < NUM_WEAKNESS; ++i)
     {
         if (spell->Id == SpellWeakness[i])
         {
             me->RemoveAurasDueToSpell(SPELL_SUPREME);
             if (Creature* creatureCaster = caster->ToCreature())
                 creatureCaster->DespawnOrUnsummon();
             SpawnNextCrystal();
         }
     }
 }