void Update(uint32 diff) { if (!m_vGOEvents.empty()) { for (auto iter = m_vGOEvents.begin(); iter != m_vGOEvents.end();) { iter->despawnTimer += diff; if (!GhostOPlasmEventStep((*iter))) iter = m_vGOEvents.erase(iter); else ++iter; } } if (GetData(TYPE_OMEN) == DONE) { // Timer before Omen event reset (OOC) if (m_uiOmenResetTimer < diff) { if (Creature* pOmen = GetSingleCreatureFromStorage(NPC_OMEN)) { // Return is Omen is in fight if (pOmen->isInCombat()) return; pOmen->ForcedDespawn(); } m_encounter[TYPE_OMEN] = NOT_STARTED; m_uiOmenResetTimer = 0; m_uiRocketsCounter = 0; m_uiOmenMoonlightTimer = 0; b_isOmenSpellCreditDone = false; } else m_uiOmenResetTimer -= diff; // Spell summoning GO traps for buff and quest credit for Omen if (!b_isOmenSpellCreditDone) { if (m_uiOmenMoonlightTimer < diff) { if (Creature* pOmen = GetSingleCreatureFromStorage(NPC_OMEN)) { pOmen->CastSpell(pOmen, SPELL_OMEN_MOONLIGHT, TRIGGERED_OLD_TRIGGERED); b_isOmenSpellCreditDone = true; } m_uiOmenMoonlightTimer = 0; } else m_uiOmenMoonlightTimer -= diff; } } }
void Update(uint32 diff) { if (!m_vGOEvents.empty()) { for (auto iter = m_vGOEvents.begin(); iter != m_vGOEvents.end();) { iter->despawnTimer += diff; if (!GhostOPlasmEventStep((*iter))) iter = m_vGOEvents.erase(iter); else ++iter; } } }