Пример #1
0
        void JustDied(Unit* /*killer*/) override
        {
            Talk(SAY_DEATH);
            DespawnGolem();

            instance->SetBossState(DATA_VOLKHAN, DONE);
        }
Пример #2
0
        void JustDied(Unit* /*killer*/) override
        {
            Talk(SAY_DEATH);
            DespawnGolem();

            _JustDied();
        }
Пример #3
0
        void Reset()
        {
            m_bIsStriking = false;
            m_bHasTemper = false;
            m_bCanShatterGolem = false;
            m_bMove = false;

            m_uiPause_Timer = 1500;
            m_uiShatteringStomp_Timer = 30000;
            m_uiShatter_Timer = 3000;
            m_uiCheckTimer = 1100;
            m_uiCheckZ = 1000;
            GolemsShattered = 0;

            m_uiHealthAmountModifier = 1;

            DespawnGolem();

            me->SetReactState(REACT_AGGRESSIVE);
            if (!me->HasUnitMovementFlag(MOVEMENTFLAG_WALKING))
                me->AddUnitMovementFlag(MOVEMENTFLAG_WALKING);

            if (m_pInstance)
                m_pInstance->SetData(TYPE_VOLKHAN, NOT_STARTED);
        }
Пример #4
0
    void JustDied(Unit* pKiller)
    {
        DoScriptText(SAY_DEATH, m_creature);
        DespawnGolem();

        if (m_pInstance)
            m_pInstance->SetData(TYPE_VOLKHAN, DONE);
    }
Пример #5
0
        void JustDied(Unit* /*killer*/)
        {
            Talk(SAY_DEATH);
            DespawnGolem();

            if (instance)
                instance->SetData(TYPE_VOLKHAN, DONE);
        }
Пример #6
0
 void Reset() override
 {
     Initialize();
     _Reset();
     DespawnGolem();
     m_lGolemGUIDList.clear();
     events.SetPhase(PHASE_INTRO);
     events.ScheduleEvent(EVENT_FORGE_CAST, 2 * IN_MILLISECONDS, 0, PHASE_INTRO);
 }
Пример #7
0
        void Reset() override
        {
            Initialize();

            DespawnGolem();
            m_lGolemGUIDList.clear();

            instance->SetBossState(DATA_VOLKHAN, NOT_STARTED);
        }
Пример #8
0
    void JustDied(Unit* pKiller)
    {
        DoScriptText(SAY_DEATH, m_creature);
        DespawnGolem();

        if (m_pInstance)
            if (m_uiArchivCounter < 5)
            {
                m_pInstance->DoCompleteAchievement(ACHIEVEMENT_SHATTER_RESISTANT);
            }
            m_pInstance->SetData(TYPE_VOLKHAN, DONE);
    }
Пример #9
0
    void UpdateAI(const uint32 uiDiff)
    {
        //Return since we have no target
        if (!m_creature->SelectHostileTarget() || !m_creature->getVictim())
            return;

        if(m_creature->getVictim()->GetEntry() == NPC_BRITTLE_GOLEM)
            DespawnGolem();

        if (m_creature->GetHealthPercent() <= (80 - 20 * m_uiShatter_Counter))
        {
            if (DoCastSpellIfCan(m_creature, m_bIsRegularMode ? SPELL_SHATTERING_STOMP_N : SPELL_SHATTERING_STOMP_H) == CAST_OK)
            {
                m_bMussShatter = true;
                DoScriptText(urand(0, 1) ? SAY_STOMP_1 : SAY_STOMP_2, m_creature);
                DoScriptText(EMOTE_SHATTER, m_creature);
                m_uiShatter_Counter++;
            }
        }
        if (m_bMussShatter)
        {
            if (m_uiMussShatterTimer < uiDiff)
            {
                m_bMussShatter = false;
                for(GuidList::iterator itr = m_lGolemGUIDList.begin(); itr != m_lGolemGUIDList.end(); ++itr)
                {
                    if (Creature* pTemp = m_creature->GetMap()->GetCreature(*itr))
                    {
                        if (pTemp->GetEntry() == NPC_BRITTLE_GOLEM)
                            ++m_uiArchivCounter;
                        pTemp->CastSpell(pTemp, m_bIsRegularMode ? SPELL_SHATTER_N : SPELL_SHATTER_H, true);
                        pTemp->ForcedDespawn(500);
                    }
                }
                m_lGolemGUIDList.clear();
                m_uiMussShatterTimer = 3000;
            }
            else
                m_uiMussShatterTimer -= uiDiff;
        }

        if (m_creature->GetHealthPercent() < float(90 - 20*m_uiHealthAmountModifier) && (m_creature->GetHealthPercent() > 9.0f))
        {
        	if (DoCastSpellIfCan(m_creature,SPELL_TEMPER, false) == CAST_OK){
        		++m_uiHealthAmountModifier;

        		DoScriptText(urand(0, 1) ? SAY_FORGE_1 : SAY_FORGE_2, m_creature);
        	}
        }

        DoMeleeAttackIfReady();
    }
Пример #10
0
        void Reset()
        {
            m_bIsStriking = false;
            m_bHasTemper = false;
            m_bCanShatterGolem = false;

            m_uiPause_Timer = 3500;
            m_uiShatteringStomp_Timer = 0;
            m_uiShatter_Timer = 5000;
            GolemsShattered = 0;

            m_uiHealthAmountModifier = 1;

            DespawnGolem();
            m_lGolemGUIDList.clear();

            if (m_pInstance)
                m_pInstance->SetData(TYPE_VOLKHAN, NOT_STARTED);
        }
Пример #11
0
        void Reset() override
        {
            m_bIsStriking = false;
            m_bHasTemper = false;
            m_bCanShatterGolem = false;

            m_uiPause_Timer = 3500;
            m_uiShatteringStomp_Timer = 0;
            m_uiShatter_Timer = 5000;
            m_uiDelay_Timer = 1000;
            m_uiSummonPhase = 0;
            GolemsShattered = 0;

            m_uiHealthAmountModifier = 1;

            DespawnGolem();
            m_lGolemGUIDList.clear();

            instance->SetBossState(DATA_VOLKHAN, NOT_STARTED);
        }
Пример #12
0
        void JustDied(Unit* /*killer*/)
        {
            Talk(SAY_DEATH);
            DespawnGolem();

            if (m_instance)
                m_instance->SetData(TYPE_VOLKHAN, DONE);

            if (IsHeroic() && GolemsShattered < 5)
            {
                AchievementEntry const* AchievShatterResistant = sAchievementStore.LookupEntry(ACHIEVEMENT_SHATTER_RESISTANT);
                if (AchievShatterResistant)
                {
                    Map* map = me->GetMap();
                    if (map && map->IsDungeon())
                    {
                        Map::PlayerList const &players = map->GetPlayers();
                        for (Map::PlayerList::const_iterator itr = players.begin(); itr != players.end(); ++itr)
                            itr->getSource()->CompletedAchievement(AchievShatterResistant);
                    }
                }
            }
        }