void SummonedCreatureDies(Creature* summon, Unit* /*killer*/) override { uint32 entry = 0; _summons.Despawn(summon); // will eventually reset the event if something goes wrong switch (summon->GetEntry()) { case NPC_FIRJUS: entry = NPC_JLARBORN; break; case NPC_JLARBORN: entry = NPC_YOROS; break; case NPC_YOROS: entry = NPC_OLUF; break; case NPC_OLUF: Reset(); return; } SummonGladiator(entry); }
void StartEvent(uint64 uiGUID) { if (bEventInProgress) return; uiPlayerGUID = uiGUID; SummonGladiator(NPC_FIRJUS); }
void StartEvent(Player* pPlayer) { if (m_bEventInProgress) return; m_uiPlayerGUID = pPlayer->GetGUID(); SummonGladiator(NPC_FIRJUS); }
void StartEvent(Player* pPlayer) { if (m_bEventInProgress) return; m_playerGuid = pPlayer->GetObjectGuid(); SummonGladiator(NPC_FIRJUS); }
void SummonedCreatureDies(Creature* summoned, Unit* /*killer*/) { uint32 uiEntry = 0; // will eventually reset the event if something goes wrong switch (summoned->GetEntry()) { case NPC_FIRJUS: uiEntry = NPC_JLARBORN; break; case NPC_JLARBORN: uiEntry = NPC_YOROS; break; case NPC_YOROS: uiEntry = NPC_OLUF; break; case NPC_OLUF: Reset(); return; } SummonGladiator(uiEntry); }
void SummonedCreatureDespawn(Creature* pSummoned) override { uint32 uiEntry = 0; // will eventually reset the event if something goes wrong switch (pSummoned->GetEntry()) { case NPC_FIRJUS: uiEntry = NPC_JLARBORN; break; case NPC_JLARBORN: uiEntry = NPC_YOROS; break; case NPC_YOROS: uiEntry = NPC_OLUF; break; case NPC_OLUF: Reset(); return; } SummonGladiator(uiEntry); }
void QuestAccept(Player* player, Quest const* quest) override { if (quest->GetQuestId() == QUEST_DEFEAT_AT_RING) { if (_eventInProgress) return; _eventInProgress = true; _playerGUID = player->GetGUID(); _scheduler.CancelAll(); _summons.DespawnAll(); _scheduler.Schedule(20s, [this](TaskContext context) { bool reset = true; if (Player* player = ObjectAccessor::GetPlayer(*me, _playerGUID)) { if (player->IsAlive() && player->IsEngaged()) { for (auto itr = _summons.begin(); reset && itr != _summons.end(); ++itr) { Creature* summon = ObjectAccessor::GetCreature(*me, *_summons.begin()); if (summon && player->IsEngagedBy(summon)) { context.Repeat(5s); reset = false; } } } } if (reset) Reset(); }); SummonGladiator(NPC_FIRJUS); } }