void Reset()
    {
        ClearCastQueue();

        m_harmstringTimer = urand(5000, 15000);
        m_arcingTimer = urand(15000, 20000);
    }
示例#2
0
    void Reset()
    {
        ClearCastQueue();

        m_vanishTimer = urand(15000, 25000);
        m_checkTimer = 1000;
    }
示例#3
0
    void Reset()
    {
        events.Reset();
        ClearCastQueue();

        events.ScheduleEvent(EVENT_SHADOW_VOLLEY, 3000);
        events.ScheduleEvent(EVENT_CLEAVE, 5000);
        events.ScheduleEvent(EVENT_THUNDER_CLAP, urand(12000, 20000));
        events.ScheduleEvent(EVENT_VOID_BOLT, 30000);
        events.ScheduleEvent(EVENT_MARKOFKAZZAK, 25000);
        events.ScheduleEvent(EVENT_TWIST_REFLECT, 33000);

        events.ScheduleEvent(EVENT_ENRAGE, 60000);

        QueryResultAutoPtr resultWorldBossRespawn = QueryResultAutoPtr(NULL); 
        resultWorldBossRespawn = GameDataDatabase.PQuery("SELECT RespawnTime FROM worldboss_respawn WHERE BossEntry = %i", m_creature->GetEntry());
        if (resultWorldBossRespawn)
        {
            Field* fieldsWBR = resultWorldBossRespawn->Fetch();
            uint64 last_time_killed = fieldsWBR[0].GetUInt64();
            last_time_killed += 259200;
            if (last_time_killed >= time(0))
                me->DisappearAndDie();
        }
    }
    void Reset()
    {
        ClearCastQueue();

        m_spreadTimer = urand(10000, 20000);
        m_shootTimer = 2000;
    }
示例#5
0
    void Reset()
    {
        ClearCastQueue();
        events.Reset();

        instance->SetData(DATA_THELURKERBELOWEVENT, NOT_STARTED);
        instance->SetData(DATA_STRANGE_POOL, NOT_STARTED);

        // Do not fall to the ground ;]
        me->AddUnitMovementFlag(MOVEFLAG_SWIMMING);
        me->SetLevitate(true);

        // Set reactstate to: Defensive
        me->SetReactState(REACT_DEFENSIVE);
        me->SetVisibility(VISIBILITY_OFF);

        me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
        me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_ATTACKABLE_2);

        events.ScheduleEvent(LURKER_EVENT_SPOUT_EMOTE, 42000);
        events.ScheduleEvent(LURKER_EVENT_WHIRL, 18000);
        events.ScheduleEvent(LURKER_EVENT_GEYSER, 0);
        events.ScheduleEvent(LURKER_EVENT_SUBMERGE, 90000);

        // Timers
        m_checkTimer = 3000;

        // Bools
        m_rotating = false;
        m_submerged = false;

        summons.DespawnAll();
        me->CastSpell(me, SPELL_SUBMERGE, false);
    }
    void Reset()
    {
        events.Reset();
        ClearCastQueue();

        events.ScheduleEvent(EVENT_SHIELD, 15000);
        events.ScheduleEvent(EVENT_HEAL, urand(7000, 10000));
    }
示例#7
0
 void OnAuraRemove(Aura* aur, bool stackApply)
 {
     if (aur->GetId() == SPELL_SPELL_FURY)
     {
         ClearCastQueue();
         SetAutocast(SPELL_FEL_FIREBALL, RAND(6300, 8300), true);
     }
 }
示例#8
0
 void OnAuraApply(Aura* aur, Unit* caster, bool stackApply)
 {
     if (aur->GetId() == SPELL_SPELL_FURY)
     {
         ClearCastQueue();
         SetAutocast(SPELL_FEL_FIREBALL, 1000, true);    // 1 sec GCD
     }
 }
    void Reset()
    {
        events.Reset();
        ClearCastQueue();

        events.ScheduleEvent(EVENT_DARK_DECAY, 10000);
        events.ScheduleEvent(EVENT_SUMMON, 15000);
        events.ScheduleEvent(EVENT_DEATH_COIL, 20000);
    }
    void Reset()
    {
        ClearCastQueue();

        AmnenarsWrath_Timer = 8000;
        FrostBolt_Timer = 1000;
        Spectrals = false;
        summons.DespawnAll();
    }
示例#11
0
    void Reset()
    {
        events.Reset();
        ClearCastQueue();

        events.ScheduleEvent(EVENT_SPELL_SHIELD, 31000);
        events.ScheduleEvent(EVENT_BLAST_WAVE, 5000);

        SetAutocast(SPELL_GREATER_FIREBALL, 4000, true);
    }
示例#12
0
    void Reset()
    {
        ClearCastQueue();

        DoubleBreath_Timer = 8000+rand()%5000;
        Stomp_Timer = 15000+rand()%5000;

        if(pInstance)
            pInstance->SetData(DATA_YOREVENT, NOT_STARTED);
    }
示例#13
0
    void Reset()
    {
        ClearCastQueue();

        m_smiteTimer = 200;
        m_cohTimer = 20000;
        m_wrathTimer = urand(8000,12000);
        m_shieldTimer = 15000;

        m_checkTimer = 1000;
    }
    void Reset()
    {
        events.Reset();
        ClearCastQueue();

        events.ScheduleEvent(EVENT_POLYMORPH, urand(10000, 20000)); //Probably too quick
        events.ScheduleEvent(EVENT_ARCANE_SHOCK, 20000);
        events.ScheduleEvent(EVENT_ARCANE_EXPLO, 30000);

        SetAutocast(SPELL_LIGHTNING_BOLT, 2200, true);
    }
示例#15
0
    void Reset()
    {
        ClearCastQueue();

        HealingWard_Timer = 15000;
        NovaTotem_Timer = 45000;
        LightningBolt_Timer = 10000;
        EarthGrab_Timer = 15000;
        StoneSkin_Timer = 15000;
        Summons.DespawnAll();
    }
示例#16
0
    void UpdateAI(const uint32 diff)
    {
      if(!me->isInCombat())
      {
          if(SummonImp_Timer < diff)
          {
              // check if still having pet ;]
              if(!me->GetMap()->GetCreature(SummonGUID))
                  SummonGUID = 0;

              if(!SummonGUID)
                  DoCast(m_creature, SPELL_SUMMON_SUNBLADE_IMP, false);
              SummonImp_Timer = 15000;
          }
          else
              SummonImp_Timer -= diff;
      }

      if(!me->IsNonMeleeSpellCasted(false) && !me->isInCombat())
      {
          if(OOCTimer < diff)
          {
              HandleOffCombatEffects();
              OOCTimer = 10000;
          }
          else
              OOCTimer -= diff;
      }

      if(!UpdateVictim())
      return;

      if(FelArmor_Timer < diff)
      {
          if(!me->HasAura(SPELL_FEL_ARMOR, 0))
              DoCast(me, SPELL_FEL_ARMOR, true);
          FelArmor_Timer = 120000;
      }
      else
          FelArmor_Timer -= diff;

      if(Immolate_Timer < diff)
      {
          ClearCastQueue();
          AddSpellToCast(m_creature->getVictim(), SPELL_IMMOLATE);
          Immolate_Timer = urand(16000, 25000);
      }
      else
          Immolate_Timer -= diff;

      CheckCasterNoMovementInRange(diff);
      CastNextSpellIfAnyAndReady(diff);
      DoMeleeAttackIfReady();
    }
示例#17
0
    void Reset()
    {
        events.Reset();
        ClearCastQueue();

        events.ScheduleEvent(EVENT_POLYMORPH, 5000);
        events.ScheduleEvent(EVENT_ARCANE_SHOCK, 20000);
        events.ScheduleEvent(EVENT_ARCANE_EXPLO, 30000);

        SetAutocast(SPELL_LIGHTNING_BOLT, 2200, true);
    }
示例#18
0
    void Reset()
    {
        ClearCastQueue();

        m_consecrationTimer = urand(6000, 10000);
        m_hammerTimer = 10000;
        m_sealTimer = 1000;
        m_auraTimer = urand(3000, 30000);
        m_blessingTimer = urand(35000, 50000);
        m_judgementTimer = 16000;

        m_checkTimer = 1000;
    }
示例#19
0
    void Reset()
    {
        ClearCastQueue();

        m_blizzardTimer = urand(12000, 20000);
        m_flamestrikeTimer = 3800;
        m_dampenTimer = 67200;
        m_aexpTimer = 3000;
        m_immunityTimer = 60000;
        SetAutocast(SPELL_ARCANE_BOLT, 2000, true, CAST_TANK, 40.0f, true);

        m_checkTimer = 1000;
    }
示例#20
0
 void OnAuraApply(Aura *aur, Unit *caster, bool stackApply)
 {
     if(aur->GetId() == SPELL_BEARFORM && aur->GetEffIndex() == 0)
     {
         LaceratingSlash_Timer = 2000;               // dur 18s
         RendFlesh_Timer = 3000;                     // dur 5s
         DeafeningRoar_Timer = 5000 + rand()%5000;   // dur 2s
         inBearForm = true;
         DoScriptText(EMOTE_SHIFTEDTOBEAR, m_creature);
         m_creature->SetUInt32Value(UNIT_VIRTUAL_ITEM_SLOT_DISPLAY + 1, 0);
         ClearCastQueue();
     }
 }
示例#21
0
    void Reset()
    {
        ClearCastQueue();

        damageTaken = 0;
        SwarmTimer = 10000;
        SleepTimer = 60000;
        InfernoTimer = 60000;
        CheckTimer = 3000;

        if(pInstance && IsEvent)
            pInstance->SetData(DATA_ANETHERONEVENT, NOT_STARTED);
    }
示例#22
0
    void Reset()
    {
        events.Reset();
        ClearCastQueue();

        events.ScheduleEvent(EVENT_SHADOW_VOLLEY, 3000);
        events.ScheduleEvent(EVENT_CLEAVE, 5000);
        events.ScheduleEvent(EVENT_THUNDER_CLAP, urand(12000, 20000));
        events.ScheduleEvent(EVENT_VOID_BOLT, 30000);
        events.ScheduleEvent(EVENT_MARKOFKAZZAK, 25000);
        events.ScheduleEvent(EVENT_TWIST_REFLECT, 33000);

        events.ScheduleEvent(EVENT_ENRAGE, 60000);
    }
    void Reset()
    {
        events.Reset();
        ClearCastQueue();

        _phase = PHASE_ONE;

        instance->SetData(DATA_MAULGAREVENT, NOT_STARTED);
        events.ScheduleEvent(EVENT_MIGHTY_BLOW, urand(15000, 25000));
        events.ScheduleEvent(EVENT_ARCING_SMASH, urand(8000, 14000));
        events.ScheduleEvent(EVENT_WHIRLWIND, 30000);

        ForceSpellCast(me, SPELL_DUAL_WIELD);
    }
示例#24
0
 void OnAuraRemove(Aura *aur, bool stackRemove)
 {
     if(aur->GetId() == SPELL_BEARFORM && aur->GetEffIndex() == 0)
     {
         m_creature->SetUInt32Value(UNIT_VIRTUAL_ITEM_SLOT_DISPLAY + 1, 5122);
         DoScriptText(YELL_SHIFTEDTOTROLL, m_creature);
         Surge_Timer = 15000 + rand()%5000;
         BrutalSwipe_Timer = 7000 + rand()%5000;
         Mangle_Timer = 10000 + rand()%5000;
         ShapeShift_Timer = 45000 + rand()%5000;
         inBearForm = false;
         ClearCastQueue();
     }
 }
    void Reset()
    {
        ClearCastQueue();
        events.Reset();

        instance->SetData(DATA_LURKER_EVENT, NOT_STARTED);
        instance->SetData(DATA_LURKER_FISHING_EVENT, NOT_STARTED);

        // Do not fall to the ground ;]
        me->AddUnitMovementFlag(MOVEFLAG_SWIMMING);
        me->SetLevitate(true);

        // Set reactstate to: Defensive
        me->SetReactState(REACT_DEFENSIVE);
        me->SetVisibility(VISIBILITY_OFF);

        me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
        me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_ATTACKABLE_2);

        events.ScheduleEvent(LURKER_EVENT_SPOUT_EMOTE, 42000);
        events.ScheduleEvent(LURKER_EVENT_WHIRL, 18000);
        events.ScheduleEvent(LURKER_EVENT_GEYSER, rand()%5000 + 15000);
        events.ScheduleEvent(LURKER_EVENT_SUBMERGE, 90000);

        RotType = NOROTATE;
        SpoutAngle = 0;
        SpoutAnimTimer = 1000;
        RotTimer = 20000;
        SpoutTimer = 15000;
        m_checkTimer = 3000;
       
        m_rotating = false;
        m_submerged = true;
        ConsecutiveSubmerge = false;

        //Time values here is irrelevant, they just need to be set
        WaitTimer = 60000;
        WaitTimer2 = 60000;
        CanStartEvent = false;

        summons.DespawnAll();
        me->CastSpell(me, SPELL_SUBMERGE, false);
    }
示例#26
0
    void Reset()
    {
        ClearCastQueue();

        Reflection_Timer = 10000;
        Impale_Timer = 7000+rand()%7000;
        Rage_Timer = 45000;
        CurrentDistiller = 0;
        checkTimer = 3000;

        std::list<Creature*> naga_distillers = FindAllCreaturesWithEntry(17954, 100);
        for(std::list<Creature*>::iterator it = naga_distillers.begin(); it != naga_distillers.end(); it++)
        {
            (*it)->Respawn();
            (*it)->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
            (*it)->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
        }

        if (pInstance)
            pInstance->SetData(TYPE_WARLORD_KALITHRESH, NOT_STARTED);
    }
示例#27
0
    void UpdateAI(const uint32 diff)
    {
        if (me->GetMotionMaster()->GetCurrentMovementGeneratorType() == POINT_MOTION_TYPE)
        {
            if (me->GetSelection())
                me->SetSelection(NULL);
            return;
        }

        if(ActivationTimer)
        {
            if(ActivationTimer <= diff)
            {
                ActivationTimer = 0;
                DoZoneInCombat(400);
                me->SetRooted(false);
                if(me->getVictim())
                    DoStartMovement(me->getVictim());
                SetAutocast(SPELL_FEL_FIREBALL, RAND(6300, 8300), true);
            }
            else
                ActivationTimer -= diff;
            return;
        }

        if(!UpdateVictim())
            return;

        if(SpellFury < diff)
        {
            ClearCastQueue();
            AddSpellToCast(SPELL_SPELL_FURY, CAST_SELF);
            SpellFury = 60000;
        }
        else
            SpellFury -= diff;

        CastNextSpellIfAnyAndReady(diff);
        DoMeleeAttackIfReady();
    }
示例#28
0
    void UpdateAI(const uint32 diff)
    {
      if(!me->IsNonMeleeSpellCasted(false) && !me->isInCombat())
      {
          if(OOCTimer < diff)
          {
              HandleOffCombatEffects();
              OOCTimer = 10000;
          }
          else
              OOCTimer -= diff;
      }

      if(!UpdateVictim())
          return;

      if(Frostbolt_Timer < diff)
      {
          AddSpellToCast(me->getVictim(), SPELL_FROSTBOLT);
          Frostbolt_Timer = SpellMgr::GetSpellCastTime(GetSpellStore()->LookupEntry(SPELL_FROSTBOLT))-(diff+100);
      }
      else
          Frostbolt_Timer -= diff;

      if(Arcane_Nova_Timer < diff)
      {
          ClearCastQueue();
          AddSpellToCast(SPELL_ARCANE_NOVA, CAST_SELF);
          Arcane_Nova_Timer = urand(16000, 20000);
      }
      else
          Arcane_Nova_Timer -= diff;

      CheckCasterNoMovementInRange(diff, 35.0);
      CastNextSpellIfAnyAndReady();
      DoMeleeAttackIfReady();
    }
示例#29
0
    void UpdateAI(const uint32 diff)
    {
        if(!me->IsNonMeleeSpellCasted(false) && !me->isInCombat())
        {
            if(OOCTimer < diff)
            {
                HandleOffCombatEffects();
                OOCTimer = 10000;
            }
            else
                OOCTimer -= diff;
        }

        if(!UpdateVictim())
            return;

        if(Drink_Timer < diff)
        {
            ClearCastQueue();
            AddSpellToCast(SPELL_DRINK_FEL_INFUSION, CAST_SELF);
            Drink_Timer = HeroicMode?urand(10000, 18000):urand(15000, 25000);
        }
        else
            Drink_Timer -= diff;

       if(Wretched_Cast_Timer < diff)
       {
           AddSpellToCast(m_creature->getVictim(), RAND(SPELL_WRETCHED_FIREBALL, SPELL_WRETCHED_FROSTBOLT));
           Wretched_Cast_Timer = me->HasAura(SPELL_DRINK_FEL_INFUSION, 1) ? 1400 : 2900;
       }
       else
           Wretched_Cast_Timer -= diff;

       CheckCasterNoMovementInRange(diff, 35.0);
       CastNextSpellIfAnyAndReady(diff);
       DoMeleeAttackIfReady();
    }
示例#30
0
    void Reset()
    {
        ClearCastQueue();

        Berserk = false;
        NetherInfusionTimer = 540000;
        VoidZoneTimer = 15000;
        NetherbreathTimer = 3000;
        ExhaustCheckTimer = 1000;
        HandleDoors(true);
        DestroyPortals();

        for(int i=0; i<3; ++i)
        {
            PortalGUID[i] = 0;
            BeamTarget[i] = 0;
            BeamerGUID[i] = 0;
        }

        m_creature->GetMotionMaster()->MovePath(NETHER_PATROL_PATH, true);

        if(pInstance && pInstance->GetData(DATA_NETHERSPITE_EVENT) != DONE)
            pInstance->SetData(DATA_NETHERSPITE_EVENT, NOT_STARTED);
    }