// Wrapper to despawn the Spikes
    void DoDespawnPursuingSpikes()
    {
        if (Creature* pPursuingSpikes = m_creature->GetMap()->GetCreature(m_PursuingSpikesGuid))
            pPursuingSpikes->ForcedDespawn();

        m_PursuingSpikesGuid.Clear();
    }
Example #2
0
    void Reset() override
    {
        m_uiSaluteTimer = 0;
        m_uiResetTimer = 0;

        m_playerGuid.Clear();
    }
Example #3
0
    void Reset() override
    {
        m_doctorGuid.Clear();
        m_pCoord = nullptr;

        // no select
        m_creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
        // no regen health
        m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IN_COMBAT);
        // to make them lay with face down
        m_creature->SetStandState(UNIT_STAND_STATE_DEAD);

        switch (m_creature->GetEntry())
        {
                // lower max health
            case 12923:
            case 12938:                                     // Injured Soldier
                m_creature->SetHealth(uint32(m_creature->GetMaxHealth()*.75));
                break;
            case 12924:
            case 12936:                                     // Badly injured Soldier
                m_creature->SetHealth(uint32(m_creature->GetMaxHealth()*.50));
                break;
            case 12925:
            case 12937:                                     // Critically injured Soldier
                m_creature->SetHealth(uint32(m_creature->GetMaxHealth()*.25));
                break;
        }
    }
 void Reset() override
 {
     m_uiPhase = 0;
     m_uiPhaseTimer = 5000;
     SetReactState(REACT_AGGRESSIVE);
     m_playerGuid.Clear();
 }
Example #5
0
    void Reset() override
    {
        m_uiAcidBreathTimer         = 10000;
        m_uiNoxiousBreathTimer      = 3000;
        m_uiShadowboltVolleyTimer   = 5000;
        m_uiTyrandeMoveTimer        = 0;

        m_remulosGuid.Clear();
        m_tyrandeGuid.Clear();

        m_uiHealthCheck             = 85;
        m_uiEventPhase              = 0;
        m_uiEventTimer              = 0;

        // For some reason the boss doesn't move in combat
        SetCombatMovement(false);
    }
Example #6
0
 void SummonedCreatureDespawn(Creature* pSummoned) override
 {
     if (pSummoned->GetEntry() == NPC_WINDSOR)
     {
         m_windsorGuid.Clear();
         m_bIsEventInProgress = false;
     }
 }
Example #7
0
    void Reset() override
    {
        m_uiKnockBackTimer = urand(5000, 8000);
        m_playerGuid.Clear();

        if (!m_uiPhase)
            m_creature->SetStandState(UNIT_STAND_STATE_DEAD);
    }
Example #8
0
    void Reset()
    {
        m_uiPhase = 0;
        m_uiPhaseTimer = 5000;
        m_playerGuid.Clear();

        if (m_creature->getFaction() != m_uiNormFaction)
            m_creature->setFaction(m_uiNormFaction);
    }
    void Reset()
    {
        m_creature->SetUInt32Value(UNIT_NPC_FLAGS, m_uiNpcFlags);

        m_playerGuid.Clear();
        m_creepjackGuid.Clear();
        m_maloneGuid.Clear();

        bEvent = false;
        bActiveAttack = false;

        m_uiSayTimer = 1000;
        m_uiStep = 0;

        //expect database to have correct faction (1194) and then only unit flags set/remove needed
        m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
        m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_PASSIVE);
    }
Example #10
0
 void Reset() override
 {
     _Reset();
     _armDied = false;
     _ifLooks = true;
     _rubbleCount = 0;
     me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
     eyebeamTarget.Clear();
 }
Example #11
0
        void DespawnBoatGhosts(ObjectGuid& CreatureGUID)
        {
            // @todo: fire visual after ancestor despawns.
            if (CreatureGUID)
                if (Creature* temp = ObjectAccessor::GetCreature(*me, CreatureGUID))
                    temp->DisappearAndDie();

            CreatureGUID.Clear();
        }
        void UpdateAI(uint32 diff) override
        {
            if (!UpdateVictim())
                return;

            DoMeleeAttackIfReady();

            if (ChaseTimer <= diff)
            {
                if (!IsChasing)
                {
                    if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true))
                    {
                        Talk(SAY_WOLF_HOOD);
                        DoCast(target, SPELL_LITTLE_RED_RIDING_HOOD, true);
                        TempThreat = DoGetThreat(target);
                        if (TempThreat)
                            DoModifyThreatPercent(target, -100);
                        HoodGUID = target->GetGUID();
                        me->AddThreat(target, 1000000.0f);
                        ChaseTimer = 20000;
                        IsChasing = true;
                    }
                }
                else
                {
                    IsChasing = false;

                    if (Unit* target = ObjectAccessor::GetUnit(*me, HoodGUID))
                    {
                        HoodGUID.Clear();
                        if (DoGetThreat(target))
                            DoModifyThreatPercent(target, -100);
                        me->AddThreat(target, TempThreat);
                        TempThreat = 0;
                    }

                    ChaseTimer = 40000;
                }
            } else ChaseTimer -= diff;

            if (IsChasing)
                return;

            if (FearTimer <= diff)
            {
                DoCastVictim(SPELL_TERRIFYING_HOWL);
                FearTimer = urand(25000, 35000);
            } else FearTimer -= diff;

            if (SwipeTimer <= diff)
            {
                DoCastVictim(SPELL_WIDE_SWIPE);
                SwipeTimer = urand(25000, 30000);
            } else SwipeTimer -= diff;
        }
Example #13
0
 void UpdateAI(const uint32 diff)
 {
     if (me->isSpawned() && cleansedGuid)
     {
         GameObject* cleansed = me->GetMap()->GetGameObject(cleansedGuid);
         if (cleansed)
             cleansed->AddObjectToRemoveList();
         cleansedGuid.Clear();
     }
 }
    void Reset() override
    {
        m_targetGuid.Clear();

        m_uiFearTimer          = urand(11000, 29000);
        m_uiRibbonOfSoulsTimer = urand(4000, 8000);
        m_uiStolenSoulTimer    = urand(19000, 31000);

        m_bHasSummonedAvatar = false;
    }
 void WaypointStart(uint32 uiPointId)
 {
     if (uiPointId == 30)
     {
         if (GameObject* pBogbeanPlant = m_creature->GetMap()->GetGameObject(m_bogbeanPlantGuid))
             pBogbeanPlant->Use(m_creature);
         m_bogbeanPlantGuid.Clear();
         m_creature->HandleEmote(EMOTE_ONESHOT_NONE);
     }
 }
Example #16
0
    void Reset()
    {
        if (!HasEscortState(STATE_ESCORT_ESCORTING))
        {
            m_uiSubEvent = 0;
            m_uiSubEventTimer = 0;
            m_alleyGuid.Clear();
            m_lastDraeneiMachineGuid.Clear();

            // Reset fields, that were changed on escort-start
            m_creature->HandleEmote(EMOTE_STATE_STUN);
            // Faction is reset with npc_escortAI::JustRespawned();

            // Unclear how these flags are set/removed in relation to the faction change at start of escort.
            // Workaround here, so that the flags are removed during escort (and while not in evade mode)
            m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_OOC_NOT_ATTACKABLE + UNIT_FLAG_PASSIVE);
        }
        else
            m_creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_OOC_NOT_ATTACKABLE);
    }
Example #17
0
    void Reset()
    {
        m_bEvent = false;
        m_bIsMovingToLunch = false;
        m_playerGuid.Clear();
        m_uiEventTimer = 5000;
        m_uiEventPhase = 0;

        if (m_creature->GetEntry() == NPC_KYLE_FRIENDLY)
            m_creature->UpdateEntry(NPC_KYLE_FRENZIED);
    }
Example #18
0
    void Reset() override
    {
        m_creature->SetVisibility(VISIBILITY_ON);

        m_hunterGuid.Clear();

        m_uiTemptressKiss_Timer = urand(3000, 6000);
        m_uiLightingBolt_Timer = urand(3000, 6000);
        m_uiThreatCheck_Timer = 5000;
        m_uiSplitCheck_Timer = 7500;
    }
    void Reset() override
    {
        if (m_creature->GetEntry() != NPC_VAZRUDEN_HERALD)
            m_creature->UpdateEntry(NPC_VAZRUDEN_HERALD);

        m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);

        m_uiMovementTimer = 0;
        m_bIsEventInProgress = false;
        m_bIsDescending = false;
        m_lastSeenPlayerGuid.Clear();
        m_vazrudenGuid.Clear();
        m_uiFireballTimer = 0;
        m_uiConeOfFireTimer = urand(8100, 19700);
        m_uiBellowingRoarTimer = 100;                       // TODO Guesswork, though such an AoE fear soon after landing seems fitting

        // see boss_onyxia
        // sort of a hack, it is unclear how this really work but the values appear to be valid
        m_creature->SetByteValue(UNIT_FIELD_BYTES_1, 3, UNIT_BYTE1_FLAG_FLY_ANIM);
        m_creature->SetLevitate(true);
    }
        void Reset() override
        {
            Initialize();

            Creature* Pet = ObjectAccessor::GetCreature(*me, SummonedPet);
            if (Pet && Pet->IsAlive())
                Pet->DealDamage(Pet, Pet->GetHealth(), NULL, DIRECT_DAMAGE, SPELL_SCHOOL_MASK_NORMAL, NULL, false);

            SummonedPet.Clear();

            instance->SetData(DATA_KARATHRESSEVENT, NOT_STARTED);
        }
        void Reset() override
        {
            Initialize();

            Creature* Pet = ObjectAccessor::GetCreature(*me, SummonedPet);
            if (Pet && Pet->IsAlive())
                Pet->KillSelf();

            SummonedPet.Clear();

            instance->SetData(DATA_KARATHRESSEVENT, NOT_STARTED);
        }
        void Despawn()
        {
            if (!debuffGUID)
                return;

            Unit* debuff = ObjectAccessor::GetUnit(*me, debuffGUID);
            if (debuff)
            {
                debuff->SetVisible(false);
                debuffGUID.Clear();
            }
        }
Example #23
0
 void MovementInform(uint32, uint32) override
 {
     arrived = true;
     if (TargetGUID)
     {
         if (Unit* target = ObjectAccessor::GetUnit(*me, TargetGUID))
             DoCast(target, SPELL_EAGLE_SWOOP, true);
         TargetGUID.Clear();
         me->SetSpeed(MOVE_RUN, 1.2f);
         EagleSwoop_Timer = urand(5000, 10000);
     }
 }
    void Reset() override
    {
        DoScriptText(SAY_WIPE, m_creature);

        m_uiOrbitalStrikeTimer = 25000;
        m_uiShadowWhipTimer = 2000;
        m_uiAuraTimer = urand(12300, 23300);
        m_uiDemonicShieldTimer = 1000;
        m_uiShadowboltTimer = urand(6600, 8900);
        m_uiSummonTimer = urand(19600, 23100);
        m_playerGuid.Clear();
        m_bCanPullBack = false;
    }
    void Reset()
    {
        m_uiDrainLifeTimer = urand(3000, 7000);
        m_uiDrainManaTimer = m_uiDrainLifeTimer + 5000;
        m_uiFelExplosionTimer = 2100;
        m_uiDrainCrystalTimer = urand(10000, 15000);
        m_uiDrainCrystalTimer = urand(20000, 25000);
        m_uiEmpowerTimer = 10000;

        m_bIsDraining = false;
        m_bDrainingCrystal = false;
        m_crystalGuid.Clear();
    }
Example #26
0
        void JustDied(Unit* /*killer*/) override
        {
            if (!PlayerGUID)
                return;

            Player* player = ObjectAccessor::GetPlayer(*me, PlayerGUID);
            if (player && player->GetQuestStatus(10965) == QUEST_STATUS_INCOMPLETE)
            {
                player->FailQuest(10965);
                PlayerGUID.Clear();
                Reset();
            }
        }
    void Reset() override
    {
        m_uiEventTimer      = 0;
        m_uiSadEndTimer     = 0;
        m_uiPhase           = 0;
        m_uiCurrentWave     = 0;
        m_uiKillCounter     = 0;
        m_uiSaveCounter     = 0;

        m_playerGuid.Clear();
        m_lSummonedGuidList.clear();
        m_creature->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_QUESTGIVER);
    }
Example #28
0
    void Reset() override
    {
        m_playerGuid.Clear();

        m_bIsHealed = false;
        m_bCanRun = false;

        m_uiRunAwayTimer = 5000;

        m_creature->SetStandState(UNIT_STAND_STATE_KNEEL);
        // expect database to have RegenHealth=0
        m_creature->SetHealth(int(m_creature->GetMaxHealth() * 0.7));
    }
        void Reset() override
        {
            Weak = false;
            Materialize = false;
            Drained = false;
            WeakPercent = 25 + (rand32() % 16); // 25-40

            PlayerGUID.Clear();

            ManaBurnTimer = 5000 + (rand32() % 3 * 1000); // 5-8 sec cd

            if (me->GetEntry() == NPC_DRAINED_PHASE_HUNTER_ENTRY)
                me->UpdateEntry(NPC_PHASE_HUNTER_ENTRY);
        }
Example #30
0
    void Reset()
    {
        m_uiKnockBackTimer = urand(5000, 8000);
        m_playerGuid.Clear();

        if (!m_uiPhase)
        {
            m_creature->setFaction(m_creature->GetCreatureInfo()->faction_A);
            // TODO: Workaround? till better solution
            m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_OOC_NOT_ATTACKABLE);
            m_creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_PASSIVE);
            m_creature->SetStandState(UNIT_STAND_STATE_DEAD);
        }
    }