Core/Criteria: Add all values of CriteriaStartEvent
This commit is contained in:
@@ -855,9 +855,9 @@ void CriteriaHandler::UpdateTimedCriteria(uint32 timeDiff)
|
||||
}
|
||||
}
|
||||
|
||||
void CriteriaHandler::StartCriteriaTimer(CriteriaTimedTypes type, uint32 entry, uint32 timeLost /* = 0 */)
|
||||
void CriteriaHandler::StartCriteriaTimer(CriteriaStartEvent startEvent, uint32 entry, uint32 timeLost /* = 0 */)
|
||||
{
|
||||
CriteriaList const& criteriaList = sCriteriaMgr->GetTimedCriteriaByType(type);
|
||||
CriteriaList const& criteriaList = sCriteriaMgr->GetTimedCriteriaByType(startEvent);
|
||||
for (Criteria const* criteria : criteriaList)
|
||||
{
|
||||
if (criteria->Entry->StartAsset != int32(entry))
|
||||
@@ -886,9 +886,9 @@ void CriteriaHandler::StartCriteriaTimer(CriteriaTimedTypes type, uint32 entry,
|
||||
}
|
||||
}
|
||||
|
||||
void CriteriaHandler::RemoveCriteriaTimer(CriteriaTimedTypes type, uint32 entry)
|
||||
void CriteriaHandler::RemoveCriteriaTimer(CriteriaStartEvent startEvent, uint32 entry)
|
||||
{
|
||||
CriteriaList const& criteriaList = sCriteriaMgr->GetTimedCriteriaByType(type);
|
||||
CriteriaList const& criteriaList = sCriteriaMgr->GetTimedCriteriaByType(startEvent);
|
||||
for (Criteria const* criteria : criteriaList)
|
||||
{
|
||||
if (criteria->Entry->StartAsset != int32(entry))
|
||||
@@ -3446,8 +3446,8 @@ void CriteriaMgr::LoadCriteriaList()
|
||||
{
|
||||
ASSERT(criteriaEntry->Type < CRITERIA_TYPE_TOTAL, "CRITERIA_TYPE_TOTAL must be greater than or equal to %u but is currently equal to %u",
|
||||
criteriaEntry->Type + 1, CRITERIA_TYPE_TOTAL);
|
||||
ASSERT(criteriaEntry->StartEvent < CRITERIA_TIMED_TYPE_MAX, "CRITERIA_TYPE_TOTAL must be greater than or equal to %u but is currently equal to %u",
|
||||
criteriaEntry->StartEvent + 1, CRITERIA_TIMED_TYPE_MAX);
|
||||
ASSERT(criteriaEntry->StartEvent < uint8(CriteriaStartEvent::Count), "CriteriaStartEvent::Count must be greater than or equal to %u but is currently equal to %u",
|
||||
criteriaEntry->StartEvent + 1, uint32(CriteriaStartEvent::Count));
|
||||
ASSERT(criteriaEntry->FailEvent < uint8(CriteriaFailEvent::Count), "CriteriaFailEvent::Count must be greater than or equal to %u but is currently equal to %u",
|
||||
criteriaEntry->FailEvent + 1, uint32(CriteriaFailEvent::Count));
|
||||
|
||||
|
||||
@@ -276,8 +276,8 @@ public:
|
||||
virtual void SendAllData(Player const* receiver) const = 0;
|
||||
|
||||
void UpdateTimedCriteria(uint32 timeDiff);
|
||||
void StartCriteriaTimer(CriteriaTimedTypes type, uint32 entry, uint32 timeLost = 0);
|
||||
void RemoveCriteriaTimer(CriteriaTimedTypes type, uint32 entry); // used for quest and scripted timed s
|
||||
void StartCriteriaTimer(CriteriaStartEvent startEvent, uint32 entry, uint32 timeLost = 0);
|
||||
void RemoveCriteriaTimer(CriteriaStartEvent startEvent, uint32 entry); // used for quest and scripted timed s
|
||||
|
||||
protected:
|
||||
virtual void SendCriteriaUpdate(Criteria const* criteria, CriteriaProgress const* progress, Seconds timeElapsed, bool timedCompleted) const = 0;
|
||||
@@ -345,9 +345,9 @@ public:
|
||||
return itr != _criteriaTreeByCriteria.end() ? &itr->second : nullptr;
|
||||
}
|
||||
|
||||
CriteriaList const& GetTimedCriteriaByType(CriteriaTimedTypes type) const
|
||||
CriteriaList const& GetTimedCriteriaByType(CriteriaStartEvent startEvent) const
|
||||
{
|
||||
return _criteriasByTimedType[type];
|
||||
return _criteriasByTimedType[size_t(startEvent)];
|
||||
}
|
||||
|
||||
CriteriaList const* GetCriteriaByFailEvent(CriteriaFailEvent condition, int32 asset)
|
||||
@@ -412,7 +412,7 @@ private:
|
||||
CriteriaList _scenarioCriteriasByType[CRITERIA_TYPE_TOTAL];
|
||||
CriteriaList _questObjectiveCriteriasByType[CRITERIA_TYPE_TOTAL];
|
||||
|
||||
CriteriaList _criteriasByTimedType[CRITERIA_TIMED_TYPE_MAX];
|
||||
CriteriaList _criteriasByTimedType[size_t(CriteriaStartEvent::Count)];
|
||||
std::unordered_map<int32, CriteriaList> _criteriasByFailEvent[size_t(CriteriaFailEvent::Count)];
|
||||
};
|
||||
|
||||
|
||||
@@ -1858,11 +1858,11 @@ WorldSafeLocsEntry const* Battleground::GetClosestGraveyard(Player* player)
|
||||
return sObjectMgr->GetClosestGraveyard(*player, player->GetTeam(), player);
|
||||
}
|
||||
|
||||
void Battleground::StartCriteriaTimer(CriteriaTimedTypes type, uint32 entry)
|
||||
void Battleground::StartCriteriaTimer(CriteriaStartEvent startEvent, uint32 entry)
|
||||
{
|
||||
for (BattlegroundPlayerMap::const_iterator itr = GetPlayers().begin(); itr != GetPlayers().end(); ++itr)
|
||||
if (Player* player = ObjectAccessor::FindPlayer(itr->first))
|
||||
player->StartCriteriaTimer(type, entry);
|
||||
player->StartCriteriaTimer(startEvent, entry);
|
||||
}
|
||||
|
||||
void Battleground::SetBracket(PVPDifficultyEntry const* bracketEntry)
|
||||
|
||||
@@ -280,7 +280,7 @@ class TC_GAME_API Battleground
|
||||
|
||||
/* achievement req. */
|
||||
virtual bool IsAllNodesControlledByTeam(uint32 /*team*/) const { return false; }
|
||||
void StartCriteriaTimer(CriteriaTimedTypes type, uint32 entry);
|
||||
void StartCriteriaTimer(CriteriaStartEvent startEvent, uint32 entry);
|
||||
virtual bool CheckAchievementCriteriaMeet(uint32 /*criteriaId*/, Player const* /*player*/, Unit const* /*target*/ = nullptr, uint32 /*miscvalue1*/ = 0);
|
||||
|
||||
/* Battleground */
|
||||
|
||||
@@ -214,7 +214,7 @@ void BattlegroundAB::StartingEventOpenDoors()
|
||||
DoorOpen(BG_AB_OBJECT_GATE_H);
|
||||
|
||||
// Achievement: Let's Get This Done
|
||||
StartCriteriaTimer(CRITERIA_TIMED_TYPE_EVENT, AB_EVENT_START_BATTLE);
|
||||
StartCriteriaTimer(CriteriaStartEvent::SendEvent, AB_EVENT_START_BATTLE);
|
||||
}
|
||||
|
||||
void BattlegroundAB::AddPlayer(Player* player)
|
||||
|
||||
@@ -433,7 +433,7 @@ void BattlegroundAV::StartingEventOpenDoors()
|
||||
DoorOpen(BG_AV_OBJECT_DOOR_A);
|
||||
|
||||
// Achievement: The Alterac Blitz
|
||||
StartCriteriaTimer(CRITERIA_TIMED_TYPE_EVENT, BG_AV_EVENT_START_BATTLE);
|
||||
StartCriteriaTimer(CriteriaStartEvent::SendEvent, BG_AV_EVENT_START_BATTLE);
|
||||
}
|
||||
|
||||
void BattlegroundAV::AddPlayer(Player* player)
|
||||
|
||||
@@ -142,7 +142,7 @@ void BattlegroundEY::StartingEventOpenDoors()
|
||||
}
|
||||
|
||||
// Achievement: Flurry
|
||||
StartCriteriaTimer(CRITERIA_TIMED_TYPE_EVENT, BG_EY_EVENT_START_BATTLE);
|
||||
StartCriteriaTimer(CriteriaStartEvent::SendEvent, BG_EY_EVENT_START_BATTLE);
|
||||
}
|
||||
|
||||
void BattlegroundEY::AddPoints(uint32 Team, uint32 Points)
|
||||
|
||||
@@ -345,7 +345,7 @@ void BattlegroundSA::PostUpdateImpl(uint32 diff)
|
||||
ToggleTimer();
|
||||
DemolisherStartState(false);
|
||||
Status = BG_SA_ROUND_ONE;
|
||||
StartCriteriaTimer(CRITERIA_TIMED_TYPE_EVENT, (Attackers == TEAM_ALLIANCE) ? 23748 : 21702);
|
||||
StartCriteriaTimer(CriteriaStartEvent::SendEvent, (Attackers == TEAM_ALLIANCE) ? 23748 : 21702);
|
||||
}
|
||||
if (TotalTime >= BG_SA_BOAT_START)
|
||||
StartShips();
|
||||
@@ -367,7 +367,7 @@ void BattlegroundSA::PostUpdateImpl(uint32 diff)
|
||||
ToggleTimer();
|
||||
DemolisherStartState(false);
|
||||
Status = BG_SA_ROUND_TWO;
|
||||
StartCriteriaTimer(CRITERIA_TIMED_TYPE_EVENT, (Attackers == TEAM_ALLIANCE) ? 23748 : 21702);
|
||||
StartCriteriaTimer(CriteriaStartEvent::SendEvent, (Attackers == TEAM_ALLIANCE) ? 23748 : 21702);
|
||||
// status was set to STATUS_WAIT_JOIN manually for Preparation, set it back now
|
||||
SetStatus(STATUS_IN_PROGRESS);
|
||||
for (BattlegroundPlayerMap::const_iterator itr = GetPlayers().begin(); itr != GetPlayers().end(); ++itr)
|
||||
|
||||
@@ -224,7 +224,7 @@ void BattlegroundWS::StartingEventOpenDoors()
|
||||
SpawnBGObject(BG_WS_OBJECT_DOOR_H_4, RESPAWN_ONE_DAY);
|
||||
|
||||
// players joining later are not eligibles
|
||||
StartCriteriaTimer(CRITERIA_TIMED_TYPE_EVENT, WS_EVENT_START_BATTLE);
|
||||
StartCriteriaTimer(CriteriaStartEvent::SendEvent, WS_EVENT_START_BATTLE);
|
||||
}
|
||||
|
||||
void BattlegroundWS::AddPlayer(Player* player)
|
||||
@@ -474,7 +474,7 @@ void BattlegroundWS::EventPlayerClickedOnFlag(Player* player, GameObject* target
|
||||
UpdateFlagState(HORDE, BG_WS_FLAG_STATE_ON_PLAYER);
|
||||
UpdateWorldState(BG_WS_FLAG_UNK_ALLIANCE, 1);
|
||||
player->CastSpell(player, BG_WS_SPELL_SILVERWING_FLAG, true);
|
||||
player->StartCriteriaTimer(CRITERIA_TIMED_TYPE_SPELL_TARGET, BG_WS_SPELL_SILVERWING_FLAG_PICKED);
|
||||
player->StartCriteriaTimer(CriteriaStartEvent::BeSpellTarget, BG_WS_SPELL_SILVERWING_FLAG_PICKED);
|
||||
if (_flagState[1] == BG_WS_FLAG_STATE_ON_PLAYER)
|
||||
_bothFlagsKept = true;
|
||||
}
|
||||
@@ -492,7 +492,7 @@ void BattlegroundWS::EventPlayerClickedOnFlag(Player* player, GameObject* target
|
||||
UpdateFlagState(ALLIANCE, BG_WS_FLAG_STATE_ON_PLAYER);
|
||||
UpdateWorldState(BG_WS_FLAG_UNK_HORDE, 1);
|
||||
player->CastSpell(player, BG_WS_SPELL_WARSONG_FLAG, true);
|
||||
player->StartCriteriaTimer(CRITERIA_TIMED_TYPE_SPELL_TARGET, BG_WS_SPELL_WARSONG_FLAG_PICKED);
|
||||
player->StartCriteriaTimer(CriteriaStartEvent::BeSpellTarget, BG_WS_SPELL_WARSONG_FLAG_PICKED);
|
||||
if (_flagState[0] == BG_WS_FLAG_STATE_ON_PLAYER)
|
||||
_bothFlagsKept = true;
|
||||
}
|
||||
|
||||
@@ -580,6 +580,27 @@ enum class CriteriaFailEvent : uint8
|
||||
Count
|
||||
};
|
||||
|
||||
enum class CriteriaStartEvent : uint8
|
||||
{
|
||||
None = 0, // - NONE -
|
||||
ReachLevel = 1, // Reach level {#Level}
|
||||
CompleteDailyQuest = 2, // Complete daily quest "{QuestV2}"
|
||||
StartBattleground = 3, // Start battleground "{Map}"
|
||||
WinRankedArenaMatchWithTeamSize = 4, // Win a ranked arena match with team size {#Team Size}
|
||||
GainAura = 5, // Gain aura "{Spell}"
|
||||
GainAuraEffect = 6, // Gain aura effect "{SpellAuraNames.EnumID}"
|
||||
CastSpell = 7, // Cast spell "{Spell}"
|
||||
BeSpellTarget = 8, // Have spell "{Spell}" cast on you
|
||||
AcceptQuest = 9, // Accept quest "{QuestV2}"
|
||||
KillNPC = 10, // Kill NPC "{Creature}"
|
||||
KillPlayer = 11, // Kill player
|
||||
UseItem = 12, // Use item "{Item}"
|
||||
SendEvent = 13, // Send event "{GameEvents}" (player-sent/instance only)
|
||||
BeginScenarioStep = 14, // Begin scenario step "{#Step}" (for use with "Player on Scenario" modifier only)
|
||||
|
||||
Count
|
||||
};
|
||||
|
||||
enum CriteriaFlags
|
||||
{
|
||||
CRITERIA_FLAG_SHOW_PROGRESS_BAR = 0x00000001, // Show progress as bar
|
||||
@@ -590,21 +611,6 @@ enum CriteriaFlags
|
||||
CRITERIA_FLAG_MONEY_COUNTER = 0x00000020 // Displays counter as money
|
||||
};
|
||||
|
||||
enum CriteriaTimedTypes : uint8
|
||||
{
|
||||
CRITERIA_TIMED_TYPE_EVENT = 1, // Timer is started by internal event with id in timerStartEvent
|
||||
CRITERIA_TIMED_TYPE_QUEST = 2, // Timer is started by accepting quest with entry in timerStartEvent
|
||||
CRITERIA_TIMED_TYPE_SPELL_CASTER = 5, // Timer is started by casting a spell with entry in timerStartEvent
|
||||
CRITERIA_TIMED_TYPE_SPELL_TARGET = 6, // Timer is started by being target of spell with entry in timerStartEvent
|
||||
CRITERIA_TIMED_TYPE_CREATURE = 7, // Timer is started by killing creature with entry in timerStartEvent
|
||||
CRITERIA_TIMED_TYPE_ITEM = 9, // Timer is started by using item with entry in timerStartEvent
|
||||
CRITERIA_TIMED_TYPE_UNK = 10, // Unknown
|
||||
CRITERIA_TIMED_TYPE_UNK_2 = 13, // Unknown
|
||||
CRITERIA_TIMED_TYPE_SCENARIO_STAGE = 14, // Timer is started by changing stages in a scenario
|
||||
|
||||
CRITERIA_TIMED_TYPE_MAX
|
||||
};
|
||||
|
||||
enum CriteriaTypes : uint8
|
||||
{
|
||||
CRITERIA_TYPE_KILL_CREATURE = 0,
|
||||
|
||||
@@ -15370,7 +15370,7 @@ void Player::AddQuest(Quest const* quest, Object* questGiver)
|
||||
|
||||
m_QuestStatusSave[quest_id] = QUEST_DEFAULT_SAVE_TYPE;
|
||||
|
||||
StartCriteriaTimer(CRITERIA_TIMED_TYPE_QUEST, quest_id);
|
||||
StartCriteriaTimer(CriteriaStartEvent::AcceptQuest, quest_id);
|
||||
|
||||
SendQuestUpdate(quest_id);
|
||||
|
||||
@@ -16808,7 +16808,7 @@ void Player::KilledMonsterCredit(uint32 entry, ObjectGuid guid /*= ObjectGuid::E
|
||||
real_entry = killed->GetEntry();
|
||||
}
|
||||
|
||||
StartCriteriaTimer(CRITERIA_TIMED_TYPE_CREATURE, real_entry); // MUST BE CALLED FIRST
|
||||
StartCriteriaTimer(CriteriaStartEvent::KillNPC, real_entry); // MUST BE CALLED FIRST
|
||||
UpdateCriteria(CRITERIA_TYPE_KILL_CREATURE, real_entry, addKillCount, 0, killed);
|
||||
|
||||
UpdateQuestObjectiveProgress(QUEST_OBJECTIVE_MONSTER, entry, 1, guid);
|
||||
@@ -26513,14 +26513,14 @@ bool Player::HasAchieved(uint32 achievementId) const
|
||||
return m_achievementMgr->HasAchieved(achievementId);
|
||||
}
|
||||
|
||||
void Player::StartCriteriaTimer(CriteriaTimedTypes type, uint32 entry, uint32 timeLost/* = 0*/)
|
||||
void Player::StartCriteriaTimer(CriteriaStartEvent startEvent, uint32 entry, uint32 timeLost/* = 0*/)
|
||||
{
|
||||
m_achievementMgr->StartCriteriaTimer(type, entry, timeLost);
|
||||
m_achievementMgr->StartCriteriaTimer(startEvent, entry, timeLost);
|
||||
}
|
||||
|
||||
void Player::RemoveCriteriaTimer(CriteriaTimedTypes type, uint32 entry)
|
||||
void Player::RemoveCriteriaTimer(CriteriaStartEvent startEvent, uint32 entry)
|
||||
{
|
||||
m_achievementMgr->RemoveCriteriaTimer(type, entry);
|
||||
m_achievementMgr->RemoveCriteriaTimer(startEvent, entry);
|
||||
}
|
||||
|
||||
void Player::ResetCriteria(CriteriaFailEvent condition, int32 failAsset, bool evenIfCriteriaComplete /* = false*/)
|
||||
|
||||
@@ -2482,8 +2482,8 @@ class TC_GAME_API Player : public Unit, public GridObject<Player>
|
||||
void ResetAchievements();
|
||||
void ResetCriteria(CriteriaFailEvent condition, int32 failAsset, bool evenIfCriteriaComplete = false);
|
||||
void UpdateCriteria(CriteriaTypes type, uint64 miscValue1 = 0, uint64 miscValue2 = 0, uint64 miscValue3 = 0, Unit* unit = nullptr);
|
||||
void StartCriteriaTimer(CriteriaTimedTypes type, uint32 entry, uint32 timeLost = 0);
|
||||
void RemoveCriteriaTimer(CriteriaTimedTypes type, uint32 entry);
|
||||
void StartCriteriaTimer(CriteriaStartEvent startEvent, uint32 entry, uint32 timeLost = 0);
|
||||
void RemoveCriteriaTimer(CriteriaStartEvent startEvent, uint32 entry);
|
||||
void CompletedAchievement(AchievementEntry const* entry);
|
||||
bool ModifierTreeSatisfied(uint32 modifierTreeId) const;
|
||||
|
||||
|
||||
@@ -485,7 +485,7 @@ void WorldSession::HandleQuestLogRemoveQuest(WorldPackets::Quest::QuestLogRemove
|
||||
_player->TakeQuestSourceItem(questId, true); // remove quest src item from player
|
||||
_player->AbandonQuest(questId); // remove all quest items player received before abandoning quest. Note, this does not remove normal drop items that happen to be quest requirements.
|
||||
_player->RemoveActiveQuest(questId);
|
||||
_player->RemoveCriteriaTimer(CRITERIA_TIMED_TYPE_QUEST, questId);
|
||||
_player->RemoveCriteriaTimer(CriteriaStartEvent::AcceptQuest, questId);
|
||||
|
||||
TC_LOG_INFO("network", "%s abandoned quest %u", _player->GetGUID().ToString().c_str(), questId);
|
||||
|
||||
|
||||
@@ -627,25 +627,25 @@ void InstanceScript::DoUpdateCriteria(CriteriaTypes type, uint32 miscValue1 /*=
|
||||
}
|
||||
|
||||
// Start timed achievement for all players in instance
|
||||
void InstanceScript::DoStartCriteriaTimer(CriteriaTimedTypes type, uint32 entry)
|
||||
void InstanceScript::DoStartCriteriaTimer(CriteriaStartEvent startEvent, uint32 entry)
|
||||
{
|
||||
Map::PlayerList const& PlayerList = instance->GetPlayers();
|
||||
|
||||
if (!PlayerList.isEmpty())
|
||||
for (Map::PlayerList::const_iterator i = PlayerList.begin(); i != PlayerList.end(); ++i)
|
||||
if (Player* player = i->GetSource())
|
||||
player->StartCriteriaTimer(type, entry);
|
||||
player->StartCriteriaTimer(startEvent, entry);
|
||||
}
|
||||
|
||||
// Stop timed achievement for all players in instance
|
||||
void InstanceScript::DoStopCriteriaTimer(CriteriaTimedTypes type, uint32 entry)
|
||||
void InstanceScript::DoStopCriteriaTimer(CriteriaStartEvent startEvent, uint32 entry)
|
||||
{
|
||||
Map::PlayerList const& PlayerList = instance->GetPlayers();
|
||||
|
||||
if (!PlayerList.isEmpty())
|
||||
for (Map::PlayerList::const_iterator i = PlayerList.begin(); i != PlayerList.end(); ++i)
|
||||
if (Player* player = i->GetSource())
|
||||
player->RemoveCriteriaTimer(type, entry);
|
||||
player->RemoveCriteriaTimer(startEvent, entry);
|
||||
}
|
||||
|
||||
// Remove Auras due to Spell on all players in instance
|
||||
|
||||
@@ -40,7 +40,7 @@ class Player;
|
||||
class Unit;
|
||||
struct InstanceSpawnGroupInfo;
|
||||
enum CriteriaTypes : uint8;
|
||||
enum CriteriaTimedTypes : uint8;
|
||||
enum class CriteriaStartEvent : uint8;
|
||||
enum EncounterCreditType : uint8;
|
||||
namespace WorldPackets
|
||||
{
|
||||
@@ -223,8 +223,8 @@ class TC_GAME_API InstanceScript : public ZoneScript
|
||||
void DoUpdateCriteria(CriteriaTypes type, uint32 miscValue1 = 0, uint32 miscValue2 = 0, Unit* unit = nullptr);
|
||||
|
||||
// Start/Stop Timed Achievement Criteria for all players in instance
|
||||
void DoStartCriteriaTimer(CriteriaTimedTypes type, uint32 entry);
|
||||
void DoStopCriteriaTimer(CriteriaTimedTypes type, uint32 entry);
|
||||
void DoStartCriteriaTimer(CriteriaStartEvent startEvent, uint32 entry);
|
||||
void DoStopCriteriaTimer(CriteriaStartEvent startEvent, uint32 entry);
|
||||
|
||||
// Remove Auras due to Spell on all players in instance
|
||||
void DoRemoveAurasDueToSpellOnPlayers(uint32 spell);
|
||||
|
||||
@@ -2616,14 +2616,14 @@ SpellMissInfo Spell::DoSpellHitOnUnit(Unit* unit, uint32 effectMask)
|
||||
|
||||
if (Player* player = unit->ToPlayer())
|
||||
{
|
||||
player->StartCriteriaTimer(CRITERIA_TIMED_TYPE_SPELL_TARGET, m_spellInfo->Id);
|
||||
player->StartCriteriaTimer(CriteriaStartEvent::BeSpellTarget, m_spellInfo->Id);
|
||||
player->UpdateCriteria(CRITERIA_TYPE_BE_SPELL_TARGET, m_spellInfo->Id, 0, 0, m_caster);
|
||||
player->UpdateCriteria(CRITERIA_TYPE_BE_SPELL_TARGET2, m_spellInfo->Id);
|
||||
}
|
||||
|
||||
if (Player* player = m_caster->ToPlayer())
|
||||
{
|
||||
player->StartCriteriaTimer(CRITERIA_TIMED_TYPE_SPELL_CASTER, m_spellInfo->Id);
|
||||
player->StartCriteriaTimer(CriteriaStartEvent::CastSpell, m_spellInfo->Id);
|
||||
player->UpdateCriteria(CRITERIA_TYPE_CAST_SPELL2, m_spellInfo->Id, 0, 0, unit);
|
||||
}
|
||||
|
||||
@@ -3335,7 +3335,7 @@ void Spell::_cast(bool skipCheck)
|
||||
{
|
||||
if (!(_triggeredCastFlags & TRIGGERED_IGNORE_CAST_ITEM) && m_CastItem)
|
||||
{
|
||||
player->StartCriteriaTimer(CRITERIA_TIMED_TYPE_ITEM, m_CastItem->GetEntry());
|
||||
player->StartCriteriaTimer(CriteriaStartEvent::UseItem, m_CastItem->GetEntry());
|
||||
player->UpdateCriteria(CRITERIA_TYPE_USE_ITEM, m_CastItem->GetEntry());
|
||||
}
|
||||
|
||||
|
||||
@@ -387,7 +387,7 @@ class npc_brann_bronzebeard_anraphet : public CreatureScript
|
||||
case EVENT_BRANN_UNLOCK_DOOR:
|
||||
Talk(BRANN_SAY_UNLOCK_DOOR);
|
||||
_instance->SetBossState(DATA_VAULT_OF_LIGHTS, DONE);
|
||||
_instance->DoStartCriteriaTimer(CRITERIA_TIMED_TYPE_EVENT, ACHIEV_VAULT_OF_LIGHTS_EVENT);
|
||||
_instance->DoStartCriteriaTimer(CriteriaStartEvent::SendEvent, ACHIEV_VAULT_OF_LIGHTS_EVENT);
|
||||
events.ScheduleEvent(EVENT_BRANN_MOVE_INTRO, 3500);
|
||||
break;
|
||||
case EVENT_BRANN_THINK:
|
||||
|
||||
@@ -157,7 +157,7 @@ public:
|
||||
_Reset();
|
||||
me->SetReactState(REACT_AGGRESSIVE);
|
||||
instance->SetData(DATA_ONYXIA_PHASE, Phase);
|
||||
instance->DoStopCriteriaTimer(CRITERIA_TIMED_TYPE_EVENT, ACHIEV_TIMED_START_EVENT);
|
||||
instance->DoStopCriteriaTimer(CriteriaStartEvent::SendEvent, ACHIEV_TIMED_START_EVENT);
|
||||
}
|
||||
|
||||
void JustEngagedWith(Unit* /*who*/) override
|
||||
@@ -168,7 +168,7 @@ public:
|
||||
events.ScheduleEvent(EVENT_TAIL_SWEEP, urand(15000, 20000));
|
||||
events.ScheduleEvent(EVENT_CLEAVE, urand(2000, 5000));
|
||||
events.ScheduleEvent(EVENT_WING_BUFFET, urand(10000, 20000));
|
||||
instance->DoStartCriteriaTimer(CRITERIA_TIMED_TYPE_EVENT, ACHIEV_TIMED_START_EVENT);
|
||||
instance->DoStartCriteriaTimer(CriteriaStartEvent::SendEvent, ACHIEV_TIMED_START_EVENT);
|
||||
}
|
||||
|
||||
void JustSummoned(Creature* summoned) override
|
||||
|
||||
@@ -171,7 +171,7 @@ public:
|
||||
Initialize();
|
||||
|
||||
instance->SetBossState(DATA_HERALD_VOLAZJ, NOT_STARTED);
|
||||
instance->DoStopCriteriaTimer(CRITERIA_TIMED_TYPE_EVENT, ACHIEV_QUICK_DEMISE_START_EVENT);
|
||||
instance->DoStopCriteriaTimer(CriteriaStartEvent::SendEvent, ACHIEV_QUICK_DEMISE_START_EVENT);
|
||||
|
||||
// Visible for all players in insanity
|
||||
for (uint32 i = 173; i <= 177; ++i)
|
||||
@@ -191,7 +191,7 @@ public:
|
||||
Talk(SAY_AGGRO);
|
||||
|
||||
instance->SetBossState(DATA_HERALD_VOLAZJ, IN_PROGRESS);
|
||||
instance->DoStartCriteriaTimer(CRITERIA_TIMED_TYPE_EVENT, ACHIEV_QUICK_DEMISE_START_EVENT);
|
||||
instance->DoStartCriteriaTimer(CriteriaStartEvent::SendEvent, ACHIEV_QUICK_DEMISE_START_EVENT);
|
||||
}
|
||||
|
||||
void JustSummoned(Creature* summon) override
|
||||
|
||||
@@ -123,7 +123,7 @@ public:
|
||||
{
|
||||
BossAI::Reset();
|
||||
me->RemoveUnitFlag(UnitFlags(UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_NOT_SELECTABLE));
|
||||
instance->DoStopCriteriaTimer(CRITERIA_TIMED_TYPE_EVENT, ACHIEV_GOTTA_GO_START_EVENT);
|
||||
instance->DoStopCriteriaTimer(CriteriaStartEvent::SendEvent, ACHIEV_GOTTA_GO_START_EVENT);
|
||||
_nextSubmerge = 75;
|
||||
_petCount = 0;
|
||||
}
|
||||
@@ -140,7 +140,7 @@ public:
|
||||
door2->SetGoState(GO_STATE_ACTIVE);
|
||||
|
||||
Talk(SAY_AGGRO);
|
||||
instance->DoStartCriteriaTimer(CRITERIA_TIMED_TYPE_EVENT, ACHIEV_GOTTA_GO_START_EVENT);
|
||||
instance->DoStartCriteriaTimer(CriteriaStartEvent::SendEvent, ACHIEV_GOTTA_GO_START_EVENT);
|
||||
|
||||
events.SetPhase(PHASE_EMERGE);
|
||||
events.ScheduleEvent(EVENT_CLOSE_DOOR, Seconds(5));
|
||||
|
||||
+2
-2
@@ -393,7 +393,7 @@ class boss_fjola : public CreatureScript
|
||||
TouchSpellId = SPELL_LIGHT_TOUCH;
|
||||
SpikeSpellId = SPELL_LIGHT_TWIN_SPIKE;
|
||||
|
||||
instance->DoStopCriteriaTimer(CRITERIA_TIMED_TYPE_EVENT, EVENT_START_TWINS_FIGHT);
|
||||
instance->DoStopCriteriaTimer(CriteriaStartEvent::SendEvent, EVENT_START_TWINS_FIGHT);
|
||||
boss_twin_baseAI::Reset();
|
||||
}
|
||||
|
||||
@@ -432,7 +432,7 @@ class boss_fjola : public CreatureScript
|
||||
|
||||
void JustEngagedWith(Unit* who) override
|
||||
{
|
||||
instance->DoStartCriteriaTimer(CRITERIA_TIMED_TYPE_EVENT, EVENT_START_TWINS_FIGHT);
|
||||
instance->DoStartCriteriaTimer(CriteriaStartEvent::SendEvent, EVENT_START_TWINS_FIGHT);
|
||||
events.ScheduleEvent(EVENT_SPECIAL_ABILITY, 45 * IN_MILLISECONDS);
|
||||
me->SummonCreature(NPC_BULLET_CONTROLLER, ToCCommonLoc[1].GetPositionX(), ToCCommonLoc[1].GetPositionY(), ToCCommonLoc[1].GetPositionZ(), 0.0f, TEMPSUMMON_MANUAL_DESPAWN);
|
||||
boss_twin_baseAI::JustEngagedWith(who);
|
||||
|
||||
@@ -812,7 +812,7 @@ class npc_jaina_or_sylvanas_escape_hor : public CreatureScript
|
||||
_events.Reset();
|
||||
_icewall = 0;
|
||||
_events.ScheduleEvent(EVENT_ESCAPE, 1000);
|
||||
_instance->DoStopCriteriaTimer(CRITERIA_TIMED_TYPE_EVENT, ACHIEV_NOT_RETREATING_EVENT);
|
||||
_instance->DoStopCriteriaTimer(CriteriaStartEvent::SendEvent, ACHIEV_NOT_RETREATING_EVENT);
|
||||
}
|
||||
|
||||
void JustDied(Unit* /*killer*/) override
|
||||
@@ -1061,7 +1061,7 @@ class npc_jaina_or_sylvanas_escape_hor : public CreatureScript
|
||||
}
|
||||
}
|
||||
_invincibility = false;
|
||||
_instance->DoStartCriteriaTimer(CRITERIA_TIMED_TYPE_EVENT, ACHIEV_NOT_RETREATING_EVENT);
|
||||
_instance->DoStartCriteriaTimer(CriteriaStartEvent::SendEvent, ACHIEV_NOT_RETREATING_EVENT);
|
||||
_events.ScheduleEvent(EVENT_ESCAPE_7, 1000);
|
||||
break;
|
||||
case EVENT_ESCAPE_7:
|
||||
|
||||
+1
-1
@@ -355,7 +355,7 @@ class instance_halls_of_reflection : public InstanceMapScript
|
||||
}
|
||||
break;
|
||||
case FAIL:
|
||||
DoStopCriteriaTimer(CRITERIA_TIMED_TYPE_EVENT, ACHIEV_NOT_RETREATING_EVENT);
|
||||
DoStopCriteriaTimer(CriteriaStartEvent::SendEvent, ACHIEV_NOT_RETREATING_EVENT);
|
||||
|
||||
if (Creature* jainaOrSylvanas = instance->GetCreature(JainaOrSylvanasEscapeGUID))
|
||||
jainaOrSylvanas->DespawnOrUnsummon(10000);
|
||||
|
||||
@@ -153,7 +153,7 @@ public:
|
||||
_JustDied();
|
||||
|
||||
// start achievement timer (kill Maexna within 20 min)
|
||||
instance->DoStartCriteriaTimer(CRITERIA_TIMED_TYPE_EVENT, ACHIEV_TIMED_START_EVENT);
|
||||
instance->DoStartCriteriaTimer(CriteriaStartEvent::SendEvent, ACHIEV_TIMED_START_EVENT);
|
||||
}
|
||||
|
||||
void JustEngagedWith(Unit* /*who*/) override
|
||||
|
||||
@@ -78,7 +78,7 @@ public:
|
||||
{
|
||||
_Reset();
|
||||
|
||||
instance->DoStopCriteriaTimer(CRITERIA_TIMED_TYPE_EVENT, ACHIEV_MAKE_QUICK_WERK_OF_HIM_STARTING_EVENT);
|
||||
instance->DoStopCriteriaTimer(CriteriaStartEvent::SendEvent, ACHIEV_MAKE_QUICK_WERK_OF_HIM_STARTING_EVENT);
|
||||
}
|
||||
|
||||
void KilledUnit(Unit* /*Victim*/) override
|
||||
@@ -101,7 +101,7 @@ public:
|
||||
events.ScheduleEvent(EVENT_HATEFUL, Seconds(1));
|
||||
events.ScheduleEvent(EVENT_BERSERK, Minutes(6));
|
||||
|
||||
instance->DoStartCriteriaTimer(CRITERIA_TIMED_TYPE_EVENT, ACHIEV_MAKE_QUICK_WERK_OF_HIM_STARTING_EVENT);
|
||||
instance->DoStartCriteriaTimer(CriteriaStartEvent::SendEvent, ACHIEV_MAKE_QUICK_WERK_OF_HIM_STARTING_EVENT);
|
||||
}
|
||||
|
||||
void UpdateAI(uint32 diff) override
|
||||
|
||||
@@ -383,7 +383,7 @@ public:
|
||||
|
||||
SetPhase(PHASE_NOT_STARTED, true);
|
||||
me->SetReactState(REACT_PASSIVE);
|
||||
instance->DoStopCriteriaTimer(CRITERIA_TIMED_TYPE_EVENT, ACHIEV_TIMED_START_EVENT);
|
||||
instance->DoStopCriteriaTimer(CriteriaStartEvent::SendEvent, ACHIEV_TIMED_START_EVENT);
|
||||
}
|
||||
|
||||
uint32 GetData(uint32 data) const override
|
||||
@@ -582,7 +582,7 @@ public:
|
||||
|
||||
Talk(SAY_START_P_ONE);
|
||||
DoCast(SPELL_BERSERK); // periodic aura, first tick in 10 minutes
|
||||
instance->DoStartCriteriaTimer(CRITERIA_TIMED_TYPE_EVENT, ACHIEV_TIMED_START_EVENT);
|
||||
instance->DoStartCriteriaTimer(CriteriaStartEvent::SendEvent, ACHIEV_TIMED_START_EVENT);
|
||||
}
|
||||
|
||||
void EnterEvadeMode(EvadeReason /*why*/) override
|
||||
|
||||
@@ -138,7 +138,7 @@ class boss_drakos : public CreatureScript
|
||||
Talk(SAY_DEATH);
|
||||
|
||||
// start achievement timer (kill Eregos within 20 min)
|
||||
instance->DoStartCriteriaTimer(CRITERIA_TIMED_TYPE_EVENT, ACHIEV_TIMED_START_EVENT);
|
||||
instance->DoStartCriteriaTimer(CriteriaStartEvent::SendEvent, ACHIEV_TIMED_START_EVENT);
|
||||
}
|
||||
|
||||
void KilledUnit(Unit* /*victim*/) override
|
||||
|
||||
@@ -97,7 +97,7 @@ public:
|
||||
{
|
||||
Initialize();
|
||||
_Reset();
|
||||
instance->DoStopCriteriaTimer(CRITERIA_TIMED_TYPE_EVENT, ACHIEV_TIMELY_DEATH_START_EVENT);
|
||||
instance->DoStopCriteriaTimer(CriteriaStartEvent::SendEvent, ACHIEV_TIMELY_DEATH_START_EVENT);
|
||||
}
|
||||
|
||||
void JustEngagedWith(Unit* /*who*/) override
|
||||
@@ -108,7 +108,7 @@ public:
|
||||
events.ScheduleEvent(EVENT_ARC_LIGHTNING, 15000);
|
||||
events.ScheduleEvent(EVENT_LIGHTNING_NOVA, 20000);
|
||||
events.ScheduleEvent(EVENT_RESUME_PULSING_SHOCKWAVE, 1000);
|
||||
instance->DoStartCriteriaTimer(CRITERIA_TIMED_TYPE_EVENT, ACHIEV_TIMELY_DEATH_START_EVENT);
|
||||
instance->DoStartCriteriaTimer(CriteriaStartEvent::SendEvent, ACHIEV_TIMELY_DEATH_START_EVENT);
|
||||
}
|
||||
|
||||
void JustDied(Unit* /*killer*/) override
|
||||
|
||||
@@ -68,7 +68,7 @@ class boss_maiden_of_grief : public CreatureScript
|
||||
events.ScheduleEvent(EVENT_SHOCK_OF_SORROW, urand(20000, 25000));
|
||||
events.ScheduleEvent(EVENT_PILLAR_OF_WOE, urand(5000, 15000));
|
||||
|
||||
instance->DoStopCriteriaTimer(CRITERIA_TIMED_TYPE_EVENT, ACHIEV_GOOD_GRIEF_START_EVENT);
|
||||
instance->DoStopCriteriaTimer(CriteriaStartEvent::SendEvent, ACHIEV_GOOD_GRIEF_START_EVENT);
|
||||
}
|
||||
|
||||
void JustEngagedWith(Unit* /*who*/) override
|
||||
@@ -76,7 +76,7 @@ class boss_maiden_of_grief : public CreatureScript
|
||||
_JustEngagedWith();
|
||||
Talk(SAY_AGGRO);
|
||||
|
||||
instance->DoStartCriteriaTimer(CRITERIA_TIMED_TYPE_EVENT, ACHIEV_GOOD_GRIEF_START_EVENT);
|
||||
instance->DoStartCriteriaTimer(CriteriaStartEvent::SendEvent, ACHIEV_GOOD_GRIEF_START_EVENT);
|
||||
}
|
||||
|
||||
void KilledUnit(Unit* who) override
|
||||
|
||||
@@ -786,7 +786,7 @@ class npc_living_constellation : public CreatureScript
|
||||
|
||||
me->DespawnOrUnsummon(1);
|
||||
if (InstanceScript* instance = me->GetInstanceScript())
|
||||
instance->DoStartCriteriaTimer(CRITERIA_TIMED_TYPE_EVENT, EVENT_ID_SUPERMASSIVE_START);
|
||||
instance->DoStartCriteriaTimer(CriteriaStartEvent::SendEvent, EVENT_ID_SUPERMASSIVE_START);
|
||||
caster->CastSpell(nullptr, SPELL_BLACK_HOLE_CREDIT, TRIGGERED_FULL_MASK);
|
||||
caster->ToCreature()->DespawnOrUnsummon(1);
|
||||
}
|
||||
|
||||
@@ -139,7 +139,7 @@ class boss_ignis : public CreatureScript
|
||||
if (Vehicle* _vehicle = me->GetVehicleKit())
|
||||
_vehicle->RemoveAllPassengers();
|
||||
|
||||
instance->DoStopCriteriaTimer(CRITERIA_TIMED_TYPE_EVENT, ACHIEVEMENT_IGNIS_START_EVENT);
|
||||
instance->DoStopCriteriaTimer(CriteriaStartEvent::SendEvent, ACHIEVEMENT_IGNIS_START_EVENT);
|
||||
}
|
||||
|
||||
void JustEngagedWith(Unit* /*who*/) override
|
||||
@@ -153,7 +153,7 @@ class boss_ignis : public CreatureScript
|
||||
events.ScheduleEvent(EVENT_END_POT, 40000);
|
||||
events.ScheduleEvent(EVENT_BERSERK, 480000);
|
||||
Initialize();
|
||||
instance->DoStartCriteriaTimer(CRITERIA_TIMED_TYPE_EVENT, ACHIEVEMENT_IGNIS_START_EVENT);
|
||||
instance->DoStartCriteriaTimer(CriteriaStartEvent::SendEvent, ACHIEVEMENT_IGNIS_START_EVENT);
|
||||
}
|
||||
|
||||
void JustDied(Unit* /*killer*/) override
|
||||
|
||||
@@ -199,7 +199,7 @@ class boss_kologarn : public CreatureScript
|
||||
if (!right && !left)
|
||||
events.ScheduleEvent(EVENT_STONE_SHOUT, 5000);
|
||||
|
||||
instance->DoStartCriteriaTimer(CRITERIA_TIMED_TYPE_EVENT, CRITERIA_DISARMED);
|
||||
instance->DoStartCriteriaTimer(CriteriaStartEvent::SendEvent, CRITERIA_DISARMED);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
@@ -203,7 +203,7 @@ class boss_xt002 : public CreatureScript
|
||||
|
||||
Initialize();
|
||||
|
||||
instance->DoStopCriteriaTimer(CRITERIA_TIMED_TYPE_EVENT, ACHIEV_MUST_DECONSTRUCT_FASTER);
|
||||
instance->DoStopCriteriaTimer(CriteriaStartEvent::SendEvent, ACHIEV_MUST_DECONSTRUCT_FASTER);
|
||||
}
|
||||
|
||||
void EnterEvadeMode(EvadeReason /*why*/) override
|
||||
@@ -223,7 +223,7 @@ class boss_xt002 : public CreatureScript
|
||||
//Tantrum is cast a bit slower the first time.
|
||||
events.ScheduleEvent(EVENT_TYMPANIC_TANTRUM, urand(TIMER_TYMPANIC_TANTRUM_MIN, TIMER_TYMPANIC_TANTRUM_MAX) * 2);
|
||||
|
||||
instance->DoStartCriteriaTimer(CRITERIA_TIMED_TYPE_EVENT, ACHIEV_MUST_DECONSTRUCT_FASTER);
|
||||
instance->DoStartCriteriaTimer(CriteriaStartEvent::SendEvent, ACHIEV_MUST_DECONSTRUCT_FASTER);
|
||||
}
|
||||
|
||||
void DoAction(int32 action) override
|
||||
|
||||
@@ -493,7 +493,7 @@ class boss_voice_of_yogg_saron : public CreatureScript
|
||||
events.SetPhase(PHASE_ONE);
|
||||
|
||||
instance->SetData(DATA_DRIVE_ME_CRAZY, uint32(true));
|
||||
instance->DoStopCriteriaTimer(CRITERIA_TIMED_TYPE_EVENT, ACHIEV_TIMED_START_EVENT);
|
||||
instance->DoStopCriteriaTimer(CriteriaStartEvent::SendEvent, ACHIEV_TIMED_START_EVENT);
|
||||
|
||||
Initialize();
|
||||
|
||||
@@ -517,7 +517,7 @@ class boss_voice_of_yogg_saron : public CreatureScript
|
||||
if (Creature* keeper = ObjectAccessor::GetCreature(*me, instance->GetGuidData(i)))
|
||||
keeper->SetInCombatWith(me);
|
||||
|
||||
instance->DoStartCriteriaTimer(CRITERIA_TIMED_TYPE_EVENT, ACHIEV_TIMED_START_EVENT);
|
||||
instance->DoStartCriteriaTimer(CriteriaStartEvent::SendEvent, ACHIEV_TIMED_START_EVENT);
|
||||
|
||||
DoCastAOE(SPELL_SUMMON_GUARDIAN_2, { SPELLVALUE_MAX_TARGETS, 1 });
|
||||
DoCast(me, SPELL_SANITY_PERIODIC);
|
||||
|
||||
@@ -572,7 +572,7 @@ class instance_ulduar : public InstanceMapScript
|
||||
case NPC_GUARDIAN_OF_LIFE:
|
||||
if (!conSpeedAtory)
|
||||
{
|
||||
DoStartCriteriaTimer(CRITERIA_TIMED_TYPE_EVENT, CRITERIA_CON_SPEED_ATORY);
|
||||
DoStartCriteriaTimer(CriteriaStartEvent::SendEvent, CRITERIA_CON_SPEED_ATORY);
|
||||
conSpeedAtory = true;
|
||||
}
|
||||
break;
|
||||
@@ -581,7 +581,7 @@ class instance_ulduar : public InstanceMapScript
|
||||
case NPC_BRIGHTLEAF:
|
||||
if (!lumberjacked)
|
||||
{
|
||||
DoStartCriteriaTimer(CRITERIA_TIMED_TYPE_EVENT, CRITERIA_LUMBERJACKED);
|
||||
DoStartCriteriaTimer(CriteriaStartEvent::SendEvent, CRITERIA_LUMBERJACKED);
|
||||
lumberjacked = true;
|
||||
}
|
||||
break;
|
||||
|
||||
@@ -171,7 +171,7 @@ public:
|
||||
if (!instance->GetCreature(DATA_GRAUF))
|
||||
me->SummonCreature(NPC_GRAUF, GraufLoc);
|
||||
|
||||
instance->DoStopCriteriaTimer(CRITERIA_TIMED_TYPE_EVENT, ACHIEV_LODI_DODI_WE_LOVES_THE_SKADI);
|
||||
instance->DoStopCriteriaTimer(CriteriaStartEvent::SendEvent, ACHIEV_LODI_DODI_WE_LOVES_THE_SKADI);
|
||||
}
|
||||
|
||||
void EnterEvadeMode(EvadeReason /*why*/) override
|
||||
@@ -235,7 +235,7 @@ public:
|
||||
SpawnFirstWave();
|
||||
Talk(SAY_AGGRO);
|
||||
_phase = PHASE_FLYING;
|
||||
instance->DoStartCriteriaTimer(CRITERIA_TIMED_TYPE_EVENT, ACHIEV_LODI_DODI_WE_LOVES_THE_SKADI);
|
||||
instance->DoStartCriteriaTimer(CriteriaStartEvent::SendEvent, ACHIEV_LODI_DODI_WE_LOVES_THE_SKADI);
|
||||
|
||||
scheduler
|
||||
.Schedule(Seconds(6), [this](TaskContext resetCheck)
|
||||
|
||||
Reference in New Issue
Block a user