feat(Core): improved some hooks (#6302)

This commit is contained in:
Yehonal
2021-06-13 10:23:24 +02:00
committed by GitHub
parent 806dc4052f
commit baf437bb98
43 changed files with 162 additions and 93 deletions
@@ -359,7 +359,7 @@ bool AchievementCriteriaData::Meets(uint32 criteria_id, Player const* source, Un
return false; return false;
return target->getGender() == gender.gender; return target->getGender() == gender.gender;
case ACHIEVEMENT_CRITERIA_DATA_TYPE_SCRIPT: case ACHIEVEMENT_CRITERIA_DATA_TYPE_SCRIPT:
return sScriptMgr->OnCriteriaCheck(ScriptId, const_cast<Player*>(source), const_cast<Unit*>(target)); return sScriptMgr->OnCriteriaCheck(ScriptId, const_cast<Player*>(source), const_cast<Unit*>(target), criteria_id);
case ACHIEVEMENT_CRITERIA_DATA_TYPE_MAP_DIFFICULTY: case ACHIEVEMENT_CRITERIA_DATA_TYPE_MAP_DIFFICULTY:
{ {
if (source->GetMap()->IsRaid()) if (source->GetMap()->IsRaid())
@@ -2025,6 +2025,11 @@ void AchievementMgr::SetCriteriaProgress(AchievementCriteriaEntry const* entry,
if (entry->timeLimit && timedIter == m_timedAchievements.end()) if (entry->timeLimit && timedIter == m_timedAchievements.end())
return; return;
if (!sScriptMgr->OnBeforeCriteriaProgress(GetPlayer(), entry))
{
return;
}
#if defined(ENABLE_EXTRAS) && defined(ENABLE_EXTRA_LOGS) #if defined(ENABLE_EXTRAS) && defined(ENABLE_EXTRA_LOGS)
LOG_DEBUG("achievement", "AchievementMgr::SetCriteriaProgress(%u, %u) for %s", entry->ID, changeValue, m_player->GetGUID().ToString().c_str()); LOG_DEBUG("achievement", "AchievementMgr::SetCriteriaProgress(%u, %u) for %s", entry->ID, changeValue, m_player->GetGUID().ToString().c_str());
#endif #endif
@@ -2180,6 +2185,11 @@ void AchievementMgr::CompletedAchievement(AchievementEntry const* achievement)
return; return;
} }
if (!sScriptMgr->OnBeforeAchievementComplete(GetPlayer(), achievement))
{
return;
}
if (achievement->flags & ACHIEVEMENT_FLAG_COUNTER || HasAchieved(achievement->ID)) if (achievement->flags & ACHIEVEMENT_FLAG_COUNTER || HasAchieved(achievement->ID))
return; return;
@@ -14,9 +14,6 @@
#include "ScriptMgr.h" #include "ScriptMgr.h"
#include "World.h" #include "World.h"
constexpr uint32 MAX_ARENA_TEAM_ID = 0xFFF00000;
constexpr uint32 MAX_TEMP_ARENA_TEAM_ID = 0xFFFFFFFE;
ArenaTeamMgr::ArenaTeamMgr() ArenaTeamMgr::ArenaTeamMgr()
{ {
NextArenaTeamId = 1; NextArenaTeamId = 1;
@@ -9,6 +9,9 @@
#include "ArenaTeam.h" #include "ArenaTeam.h"
constexpr uint32 MAX_ARENA_TEAM_ID = 0xFFF00000;
constexpr uint32 MAX_TEMP_ARENA_TEAM_ID = 0xFFFFFFFE;
class ArenaTeamMgr class ArenaTeamMgr
{ {
ArenaTeamMgr(); ArenaTeamMgr();
@@ -3304,6 +3304,13 @@ void Player::GiveXP(uint32 xp, Unit* victim, float group_rate)
else else
bonus_xp = victim ? GetXPRestBonus(xp) : 0; // XP resting bonus bonus_xp = victim ? GetXPRestBonus(xp) : 0; // XP resting bonus
// hooks and multipliers can modify the xp with a zero or negative value
// check again before sending invalid xp to the client
if (xp < 1)
{
return;
}
SendLogXPGain(xp, victim, bonus_xp, recruitAFriend, group_rate); SendLogXPGain(xp, victim, bonus_xp, recruitAFriend, group_rate);
uint32 curXP = GetUInt32Value(PLAYER_XP); uint32 curXP = GetUInt32Value(PLAYER_XP);
@@ -11,6 +11,7 @@
#include "DBCEnums.h" #include "DBCEnums.h"
#include "Define.h" #include "Define.h"
#include "ObjectDefines.h" #include "ObjectDefines.h"
#include "ObjectGuid.h"
#include <list> #include <list>
#include <map> #include <map>
#include <mutex> #include <mutex>
+7 -2
View File
@@ -289,7 +289,8 @@ bool LootStoreItem::Roll(bool rate, Player const* player, Loot& loot, LootStore
{ {
float _chance = chance; float _chance = chance;
sScriptMgr->OnItemRoll(player, this, _chance, loot, store); if (!sScriptMgr->OnItemRoll(player, this, _chance, loot, store))
return false;
if (_chance >= 100.0f) if (_chance >= 100.0f)
return true; return true;
@@ -1205,7 +1206,8 @@ LootStoreItem const* LootTemplate::LootGroup::Roll(Loot& loot, Player const* pla
LootStoreItem* item = *itr; LootStoreItem* item = *itr;
float chance = item->chance; float chance = item->chance;
sScriptMgr->OnItemRoll(player, item, chance, loot, store); if (!sScriptMgr->OnItemRoll(player, item, chance, loot, store))
return nullptr;
if (chance >= 100.0f) if (chance >= 100.0f)
return item; return item;
@@ -1216,6 +1218,9 @@ LootStoreItem const* LootTemplate::LootGroup::Roll(Loot& loot, Player const* pla
} }
} }
if (!sScriptMgr->OnBeforeLootEqualChanced(player, EqualChanced, loot, store))
return nullptr;
possibleLoot = EqualChanced; possibleLoot = EqualChanced;
possibleLoot.remove_if(LootGroupInvalidSelector(loot, lootMode)); possibleLoot.remove_if(LootGroupInvalidSelector(loot, lootMode));
if (!possibleLoot.empty()) // If nothing selected yet - an item is taken from equal-chanced part if (!possibleLoot.empty()) // If nothing selected yet - an item is taken from equal-chanced part
+42 -4
View File
@@ -1344,13 +1344,13 @@ void ScriptMgr::OnShutdown()
FOREACH_SCRIPT(WorldScript)->OnShutdown(); FOREACH_SCRIPT(WorldScript)->OnShutdown();
} }
bool ScriptMgr::OnCriteriaCheck(uint32 scriptId, Player* source, Unit* target) bool ScriptMgr::OnCriteriaCheck(uint32 scriptId, Player* source, Unit* target, uint32 criteria_id)
{ {
ASSERT(source); ASSERT(source);
// target can be nullptr. // target can be nullptr.
GET_SCRIPT_RET(AchievementCriteriaScript, scriptId, tmpscript, false); GET_SCRIPT_RET(AchievementCriteriaScript, scriptId, tmpscript, false);
return tmpscript->OnCheck(source, target); return tmpscript->OnCheck(source, target, criteria_id);
} }
// Player // Player
@@ -1650,11 +1650,33 @@ void ScriptMgr::OnPlayerRemoveFromBattleground(Player* player, Battleground* bg)
FOREACH_SCRIPT(PlayerScript)->OnRemoveFromBattleground(player, bg); FOREACH_SCRIPT(PlayerScript)->OnRemoveFromBattleground(player, bg);
} }
bool ScriptMgr::OnBeforeAchievementComplete(Player* player, AchievementEntry const* achievement)
{
bool ret = true;
FOR_SCRIPTS_RET(PlayerScript, itr, end, ret) // return true by default if not scripts
if (!itr->second->OnBeforeAchiComplete(player, achievement))
ret = false; // we change ret value only when scripts return false
return ret;
}
void ScriptMgr::OnAchievementComplete(Player* player, AchievementEntry const* achievement) void ScriptMgr::OnAchievementComplete(Player* player, AchievementEntry const* achievement)
{ {
FOREACH_SCRIPT(PlayerScript)->OnAchiComplete(player, achievement); FOREACH_SCRIPT(PlayerScript)->OnAchiComplete(player, achievement);
} }
bool ScriptMgr::OnBeforeCriteriaProgress(Player* player, AchievementCriteriaEntry const* criteria)
{
bool ret = true;
FOR_SCRIPTS_RET(PlayerScript, itr, end, ret) // return true by default if not scripts
if (!itr->second->OnBeforeCriteriaProgress(player, criteria))
ret = false; // we change ret value only when scripts return false
return ret;
}
void ScriptMgr::OnCriteriaProgress(Player* player, AchievementCriteriaEntry const* criteria) void ScriptMgr::OnCriteriaProgress(Player* player, AchievementCriteriaEntry const* criteria)
{ {
FOREACH_SCRIPT(PlayerScript)->OnCriteriaProgress(player, criteria); FOREACH_SCRIPT(PlayerScript)->OnCriteriaProgress(player, criteria);
@@ -1981,9 +2003,25 @@ void ScriptMgr::OnBeforeDropAddItem(Player const* player, Loot& loot, bool canRa
FOREACH_SCRIPT(GlobalScript)->OnBeforeDropAddItem(player, loot, canRate, lootMode, LootStoreItem, store); FOREACH_SCRIPT(GlobalScript)->OnBeforeDropAddItem(player, loot, canRate, lootMode, LootStoreItem, store);
} }
void ScriptMgr::OnItemRoll(Player const* player, LootStoreItem const* LootStoreItem, float& chance, Loot& loot, LootStore const& store) bool ScriptMgr::OnItemRoll(Player const* player, LootStoreItem const* LootStoreItem, float& chance, Loot& loot, LootStore const& store)
{ {
FOREACH_SCRIPT(GlobalScript)->OnItemRoll(player, LootStoreItem, chance, loot, store); bool ret = true; // return true by default
FOR_SCRIPTS_RET(GlobalScript, itr, end, ret)
if (!itr->second->OnItemRoll(player, LootStoreItem, chance, loot, store))
ret = false; // we change ret value only when a script returns false
return ret;
}
bool ScriptMgr::OnBeforeLootEqualChanced(Player const* player, LootStoreItemList EqualChanced, Loot& loot, LootStore const& store) {
bool ret = true; // return true by default
FOR_SCRIPTS_RET(GlobalScript, itr, end, ret)
if (!itr->second->OnBeforeLootEqualChanced(player, EqualChanced, loot, store))
ret = false; // we change ret value only when a script returns false
return ret;
} }
void ScriptMgr::OnInitializeLockedDungeons(Player* player, uint8& level, uint32& lockData, lfg::LFGDungeonData const* dungeon) void ScriptMgr::OnInitializeLockedDungeons(Player* player, uint8& level, uint32& lockData, lfg::LFGDungeonData const* dungeon)
+14 -6
View File
@@ -688,8 +688,7 @@ protected:
public: public:
[[nodiscard]] bool IsDatabaseBound() const override { return true; } [[nodiscard]] bool IsDatabaseBound() const override { return true; }
// deprecated/legacy [[nodiscard]] virtual bool OnCheck(Player* /*source*/, Unit* /*target*/, uint32 /*criteria_id*/) { return true; };
[[nodiscard]] virtual bool OnCheck(Player* /*source*/, Unit* /*target*/) { return true; };
}; };
class PlayerScript : public ScriptObject class PlayerScript : public ScriptObject
@@ -830,9 +829,15 @@ public:
// Called when a player complete an achievement // Called when a player complete an achievement
virtual void OnAchiComplete(Player* /*player*/, AchievementEntry const* /*achievement*/) { } virtual void OnAchiComplete(Player* /*player*/, AchievementEntry const* /*achievement*/) { }
// Called before player complete an achievement, can be used to disable achievements in certain conditions
virtual bool OnBeforeAchiComplete(Player* /*player*/, AchievementEntry const* /*achievement*/) { return true; }
// Called when a player complete an achievement criteria // Called when a player complete an achievement criteria
virtual void OnCriteriaProgress(Player* /*player*/, AchievementCriteriaEntry const* /*criteria*/) { } virtual void OnCriteriaProgress(Player* /*player*/, AchievementCriteriaEntry const* /*criteria*/) { }
// Called before player complete an achievement criteria, can be used to disable achievement criteria in certain conditions
virtual bool OnBeforeCriteriaProgress(Player* /*player*/, AchievementCriteriaEntry const* /*criteria*/) { return true; }
// Called when an Achievement is saved to DB // Called when an Achievement is saved to DB
virtual void OnAchiSave(SQLTransaction& /*trans*/, Player* /*player*/, uint16 /*achId*/, CompletedAchievementData /*achiData*/) { } virtual void OnAchiSave(SQLTransaction& /*trans*/, Player* /*player*/, uint16 /*achId*/, CompletedAchievementData /*achiData*/) { }
@@ -1140,8 +1145,8 @@ public:
// loot // loot
virtual void OnAfterRefCount(Player const* /*player*/, LootStoreItem* /*LootStoreItem*/, Loot& /*loot*/, bool /*canRate*/, uint16 /*lootMode*/, uint32& /*maxcount*/, LootStore const& /*store*/) { } virtual void OnAfterRefCount(Player const* /*player*/, LootStoreItem* /*LootStoreItem*/, Loot& /*loot*/, bool /*canRate*/, uint16 /*lootMode*/, uint32& /*maxcount*/, LootStore const& /*store*/) { }
virtual void OnBeforeDropAddItem(Player const* /*player*/, Loot& /*loot*/, bool /*canRate*/, uint16 /*lootMode*/, LootStoreItem* /*LootStoreItem*/, LootStore const& /*store*/) { } virtual void OnBeforeDropAddItem(Player const* /*player*/, Loot& /*loot*/, bool /*canRate*/, uint16 /*lootMode*/, LootStoreItem* /*LootStoreItem*/, LootStore const& /*store*/) { }
virtual void OnItemRoll(Player const* /*player*/, LootStoreItem const* /*LootStoreItem*/, float& /*chance*/, Loot& /*loot*/, LootStore const& /*store*/) { }; virtual bool OnItemRoll(Player const* /*player*/, LootStoreItem const* /*LootStoreItem*/, float& /*chance*/, Loot& /*loot*/, LootStore const& /*store*/) { return true; };
virtual bool OnBeforeLootEqualChanced(Player const* /*player*/, LootStoreItemList /*EqualChanced*/, Loot& /*loot*/, LootStore const& /*store*/) { return true; }
virtual void OnInitializeLockedDungeons(Player* /*player*/, uint8& /*level*/, uint32& /*lockData*/, lfg::LFGDungeonData const* /*dungeon*/) { } virtual void OnInitializeLockedDungeons(Player* /*player*/, uint8& /*level*/, uint32& /*lockData*/, lfg::LFGDungeonData const* /*dungeon*/) { }
virtual void OnAfterInitializeLockedDungeons(Player* /*player*/) { } virtual void OnAfterInitializeLockedDungeons(Player* /*player*/) { }
@@ -1549,7 +1554,7 @@ public: /* TransportScript */
void OnRelocate(Transport* transport, uint32 waypointId, uint32 mapId, float x, float y, float z); void OnRelocate(Transport* transport, uint32 waypointId, uint32 mapId, float x, float y, float z);
public: /* AchievementCriteriaScript */ public: /* AchievementCriteriaScript */
bool OnCriteriaCheck(uint32 scriptId, Player* source, Unit* target); bool OnCriteriaCheck(uint32 scriptId, Player* source, Unit* target, uint32 criteria_id);
public: /* PlayerScript */ public: /* PlayerScript */
void OnBeforePlayerUpdate(Player* player, uint32 p_time); void OnBeforePlayerUpdate(Player* player, uint32 p_time);
@@ -1596,7 +1601,9 @@ public: /* PlayerScript */
void OnPlayerAddToBattleground(Player* player, Battleground* bg); void OnPlayerAddToBattleground(Player* player, Battleground* bg);
void OnPlayerRemoveFromBattleground(Player* player, Battleground* bg); void OnPlayerRemoveFromBattleground(Player* player, Battleground* bg);
void OnAchievementComplete(Player* player, AchievementEntry const* achievement); void OnAchievementComplete(Player* player, AchievementEntry const* achievement);
bool OnBeforeAchievementComplete(Player* player, AchievementEntry const* achievement);
void OnCriteriaProgress(Player* player, AchievementCriteriaEntry const* criteria); void OnCriteriaProgress(Player* player, AchievementCriteriaEntry const* criteria);
bool OnBeforeCriteriaProgress(Player* player, AchievementCriteriaEntry const* criteria);
void OnAchievementSave(SQLTransaction& trans, Player* player, uint16 achiId, CompletedAchievementData achiData); void OnAchievementSave(SQLTransaction& trans, Player* player, uint16 achiId, CompletedAchievementData achiData);
void OnCriteriaSave(SQLTransaction& trans, Player* player, uint16 critId, CriteriaProgress criteriaData); void OnCriteriaSave(SQLTransaction& trans, Player* player, uint16 critId, CriteriaProgress criteriaData);
void OnGossipSelect(Player* player, uint32 menu_id, uint32 sender, uint32 action); void OnGossipSelect(Player* player, uint32 menu_id, uint32 sender, uint32 action);
@@ -1727,7 +1734,8 @@ public: /* GlobalScript */
void OnBeforeUpdateArenaPoints(ArenaTeam* at, std::map<ObjectGuid, uint32>& ap); void OnBeforeUpdateArenaPoints(ArenaTeam* at, std::map<ObjectGuid, uint32>& ap);
void OnAfterRefCount(Player const* player, Loot& loot, bool canRate, uint16 lootMode, LootStoreItem* LootStoreItem, uint32& maxcount, LootStore const& store); void OnAfterRefCount(Player const* player, Loot& loot, bool canRate, uint16 lootMode, LootStoreItem* LootStoreItem, uint32& maxcount, LootStore const& store);
void OnBeforeDropAddItem(Player const* player, Loot& loot, bool canRate, uint16 lootMode, LootStoreItem* LootStoreItem, LootStore const& store); void OnBeforeDropAddItem(Player const* player, Loot& loot, bool canRate, uint16 lootMode, LootStoreItem* LootStoreItem, LootStore const& store);
void OnItemRoll(Player const* player, LootStoreItem const* LootStoreItem, float& chance, Loot& loot, LootStore const& store); bool OnItemRoll(Player const* player, LootStoreItem const* LootStoreItem, float& chance, Loot& loot, LootStore const& store);
bool OnBeforeLootEqualChanced(Player const* player, LootStoreItemList EqualChanced, Loot& loot, LootStore const& store);
void OnInitializeLockedDungeons(Player* player, uint8& level, uint32& lockData, lfg::LFGDungeonData const* dungeon); void OnInitializeLockedDungeons(Player* player, uint8& level, uint32& lockData, lfg::LFGDungeonData const* dungeon);
void OnAfterInitializeLockedDungeons(Player* player); void OnAfterInitializeLockedDungeons(Player* player);
void OnAfterUpdateEncounterState(Map* map, EncounterCreditType type, uint32 creditEntry, Unit* source, Difficulty difficulty_fixed, DungeonEncounterList const* encounters, uint32 dungeonCompleted, bool updated); void OnAfterUpdateEncounterState(Map* map, EncounterCreditType type, uint32 creditEntry, Unit* source, Difficulty difficulty_fixed, DungeonEncounterList const* encounters, uint32 dungeonCompleted, bool updated);
@@ -671,7 +671,7 @@ class achievement_pb_pilgrims_peril : public AchievementCriteriaScript
public: public:
achievement_pb_pilgrims_peril() : AchievementCriteriaScript("achievement_pb_pilgrims_peril") { } achievement_pb_pilgrims_peril() : AchievementCriteriaScript("achievement_pb_pilgrims_peril") { }
bool OnCheck(Player* source, Unit* /*target*/) override bool OnCheck(Player* source, Unit* /*target*/, uint32 /*criteria_id*/) override
{ {
if (source->HasItemOrGemWithIdEquipped(ITEM_PILGRIMS_DRESS, 1) || source->HasItemOrGemWithIdEquipped(ITEM_PILGRIMS_ROBE, 1) || source->HasItemOrGemWithIdEquipped(ITEM_PILGRIMS_ATTIRE, 1)) if (source->HasItemOrGemWithIdEquipped(ITEM_PILGRIMS_DRESS, 1) || source->HasItemOrGemWithIdEquipped(ITEM_PILGRIMS_ROBE, 1) || source->HasItemOrGemWithIdEquipped(ITEM_PILGRIMS_ATTIRE, 1))
return true; return true;
@@ -685,7 +685,7 @@ class achievement_pb_terokkar_turkey_time : public AchievementCriteriaScript
public: public:
achievement_pb_terokkar_turkey_time() : AchievementCriteriaScript("achievement_pb_terokkar_turkey_time") { } achievement_pb_terokkar_turkey_time() : AchievementCriteriaScript("achievement_pb_terokkar_turkey_time") { }
bool OnCheck(Player* source, Unit* /*target*/) override bool OnCheck(Player* source, Unit* /*target*/, uint32 /*criteria_id*/) override
{ {
if (source->HasItemOrGemWithIdEquipped(ITEM_PILGRIMS_HAT, 1) && (source->HasItemOrGemWithIdEquipped(ITEM_PILGRIMS_DRESS, 1) || source->HasItemOrGemWithIdEquipped(ITEM_PILGRIMS_ROBE, 1) || source->HasItemOrGemWithIdEquipped(ITEM_PILGRIMS_ATTIRE, 1))) if (source->HasItemOrGemWithIdEquipped(ITEM_PILGRIMS_HAT, 1) && (source->HasItemOrGemWithIdEquipped(ITEM_PILGRIMS_DRESS, 1) || source->HasItemOrGemWithIdEquipped(ITEM_PILGRIMS_ROBE, 1) || source->HasItemOrGemWithIdEquipped(ITEM_PILGRIMS_ATTIRE, 1)))
return true; return true;
@@ -381,7 +381,7 @@ public:
{ {
} }
bool OnCheck(Player* /*player*/, Unit* target) override bool OnCheck(Player* /*player*/, Unit* target, uint32 /*criteria_id*/) override
{ {
if (!target) if (!target)
return false; return false;
@@ -222,7 +222,7 @@ public:
{ {
} }
bool OnCheck(Player* /*player*/, Unit* target) override bool OnCheck(Player* /*player*/, Unit* target, uint32 /*criteria_id*/) override
{ {
if (!target) if (!target)
return false; return false;
@@ -204,7 +204,7 @@ public:
{ {
} }
bool OnCheck(Player* /*player*/, Unit* target) override bool OnCheck(Player* /*player*/, Unit* target, uint32 /*criteria_id*/) override
{ {
if (!target) if (!target)
return false; return false;
@@ -342,7 +342,7 @@ class achievement_oh_novos : public AchievementCriteriaScript
public: public:
achievement_oh_novos() : AchievementCriteriaScript("achievement_oh_novos") { } achievement_oh_novos() : AchievementCriteriaScript("achievement_oh_novos") { }
bool OnCheck(Player* /*player*/, Unit* target) override bool OnCheck(Player* /*player*/, Unit* target, uint32 /*criteria_id*/) override
{ {
return target && target->GetAI()->GetData(target->GetEntry()); return target && target->GetAI()->GetData(target->GetEntry());
} }
@@ -253,7 +253,7 @@ public:
{ {
} }
bool OnCheck(Player* /*player*/, Unit* target) override bool OnCheck(Player* /*player*/, Unit* target, uint32 /*criteria_id*/) override
{ {
if (!target) if (!target)
return false; return false;
@@ -265,7 +265,7 @@ public:
{ {
} }
bool OnCheck(Player* /*player*/, Unit* target) override bool OnCheck(Player* /*player*/, Unit* target, uint32 /*criteria_id*/) override
{ {
if (!target) if (!target)
return false; return false;
@@ -193,7 +193,7 @@ public:
{ {
} }
bool OnCheck(Player* /*player*/, Unit* target) override bool OnCheck(Player* /*player*/, Unit* target, uint32 /*criteria_id*/) override
{ {
return target && target->GetDisplayId() == target->GetNativeDisplayId(); return target && target->GetDisplayId() == target->GetNativeDisplayId();
} }
@@ -223,7 +223,7 @@ public:
{ {
} }
bool OnCheck(Player* /*player*/, Unit* target) override bool OnCheck(Player* /*player*/, Unit* target, uint32 /*criteria_id*/) override
{ {
if (!target) if (!target)
return false; return false;
@@ -972,7 +972,7 @@ class achievement_once_bitten_twice_shy : public AchievementCriteriaScript
public: public:
achievement_once_bitten_twice_shy(const char* name, uint8 spawnMode, bool wasVampire) : AchievementCriteriaScript(name), _spawnMode(spawnMode), _wasVampire(wasVampire) { } achievement_once_bitten_twice_shy(const char* name, uint8 spawnMode, bool wasVampire) : AchievementCriteriaScript(name), _spawnMode(spawnMode), _wasVampire(wasVampire) { }
bool OnCheck(Player* source, Unit* target) override bool OnCheck(Player* source, Unit* target, uint32 /*criteria_id*/) override
{ {
if (!target || !target->FindMap()) if (!target || !target->FindMap())
return false; return false;
@@ -1335,7 +1335,7 @@ class achievement_ive_gone_and_made_a_mess : public AchievementCriteriaScript
public: public:
achievement_ive_gone_and_made_a_mess() : AchievementCriteriaScript("achievement_ive_gone_and_made_a_mess") { } achievement_ive_gone_and_made_a_mess() : AchievementCriteriaScript("achievement_ive_gone_and_made_a_mess") { }
bool OnCheck(Player* /*source*/, Unit* target) override bool OnCheck(Player* /*source*/, Unit* target, uint32 /*criteria_id*/) override
{ {
if (target) if (target)
if (Creature* saurfang = target->ToCreature()) if (Creature* saurfang = target->ToCreature())
@@ -399,7 +399,7 @@ class achievement_flu_shot_shortage : public AchievementCriteriaScript
public: public:
achievement_flu_shot_shortage() : AchievementCriteriaScript("achievement_flu_shot_shortage") { } achievement_flu_shot_shortage() : AchievementCriteriaScript("achievement_flu_shot_shortage") { }
bool OnCheck(Player* /*source*/, Unit* target) override bool OnCheck(Player* /*source*/, Unit* target, uint32 /*criteria_id*/) override
{ {
if (target && target->GetTypeId() == TYPEID_UNIT) if (target && target->GetTypeId() == TYPEID_UNIT)
return target->ToCreature()->AI()->GetData(DATA_INOCULATED_STACK) < 3; return target->ToCreature()->AI()->GetData(DATA_INOCULATED_STACK) < 3;
@@ -2694,7 +2694,7 @@ class achievement_im_on_a_boat : public AchievementCriteriaScript
public: public:
achievement_im_on_a_boat() : AchievementCriteriaScript("achievement_im_on_a_boat") { } achievement_im_on_a_boat() : AchievementCriteriaScript("achievement_im_on_a_boat") { }
bool OnCheck(Player* /*source*/, Unit* target) override bool OnCheck(Player* /*source*/, Unit* target, uint32 /*criteria_id*/) override
{ {
return target->GetAI() && target->GetAI()->GetData(ACTION_SHIP_VISITS_ENEMY) == 1; return target->GetAI() && target->GetAI()->GetData(ACTION_SHIP_VISITS_ENEMY) == 1;
} }
@@ -1351,7 +1351,7 @@ class achievement_all_you_can_eat : public AchievementCriteriaScript
public: public:
achievement_all_you_can_eat() : AchievementCriteriaScript("achievement_all_you_can_eat") { } achievement_all_you_can_eat() : AchievementCriteriaScript("achievement_all_you_can_eat") { }
bool OnCheck(Player* /*source*/, Unit* target) override bool OnCheck(Player* /*source*/, Unit* target, uint32 /*criteria_id*/) override
{ {
if (!target || target->GetEntry() != NPC_SINDRAGOSA) if (!target || target->GetEntry() != NPC_SINDRAGOSA)
return false; return false;
@@ -3742,7 +3742,7 @@ class achievement_been_waiting_long_time : public AchievementCriteriaScript
public: public:
achievement_been_waiting_long_time() : AchievementCriteriaScript("achievement_been_waiting_long_time") { } achievement_been_waiting_long_time() : AchievementCriteriaScript("achievement_been_waiting_long_time") { }
bool OnCheck(Player* /*source*/, Unit* target) override bool OnCheck(Player* /*source*/, Unit* target, uint32 /*criteria_id*/) override
{ {
if (!target) if (!target)
return false; return false;
@@ -3756,7 +3756,7 @@ class achievement_neck_deep_in_vile : public AchievementCriteriaScript
public: public:
achievement_neck_deep_in_vile() : AchievementCriteriaScript("achievement_neck_deep_in_vile") { } achievement_neck_deep_in_vile() : AchievementCriteriaScript("achievement_neck_deep_in_vile") { }
bool OnCheck(Player* /*source*/, Unit* target) override bool OnCheck(Player* /*source*/, Unit* target, uint32 /*criteria_id*/) override
{ {
if (!target) if (!target)
return false; return false;
@@ -1489,7 +1489,7 @@ class achievement_portal_jockey : public AchievementCriteriaScript
public: public:
achievement_portal_jockey() : AchievementCriteriaScript("achievement_portal_jockey") { } achievement_portal_jockey() : AchievementCriteriaScript("achievement_portal_jockey") { }
bool OnCheck(Player* /*source*/, Unit* target) override bool OnCheck(Player* /*source*/, Unit* target, uint32 /*criteria_id*/) override
{ {
return target && target->GetEntry() == NPC_VALITHRIA_DREAMWALKER && !target->GetAI()->GetData(MISSED_PORTALS); return target && target->GetEntry() == NPC_VALITHRIA_DREAMWALKER && !target->GetAI()->GetData(MISSED_PORTALS);
} }
@@ -196,7 +196,7 @@ public:
{ {
} }
bool OnCheck(Player* /*player*/, Unit* target) override bool OnCheck(Player* /*player*/, Unit* target, uint32 /*criteria_id*/) override
{ {
if (!target) if (!target)
return false; return false;
@@ -186,7 +186,7 @@ public:
{ {
} }
bool OnCheck(Player* player, Unit* target) override bool OnCheck(Player* player, Unit* target, uint32 /*criteria_id*/) override
{ {
if (!target) if (!target)
return false; return false;
@@ -318,7 +318,7 @@ public:
{ {
} }
bool OnCheck(Player* /*player*/, Unit* target) override bool OnCheck(Player* /*player*/, Unit* target, uint32 /*criteria_id*/) override
{ {
if (!target) if (!target)
return false; return false;
@@ -1398,7 +1398,7 @@ class achievement_algalon_he_feeds_on_your_tears : public AchievementCriteriaScr
public: public:
achievement_algalon_he_feeds_on_your_tears() : AchievementCriteriaScript("achievement_algalon_he_feeds_on_your_tears") { } achievement_algalon_he_feeds_on_your_tears() : AchievementCriteriaScript("achievement_algalon_he_feeds_on_your_tears") { }
bool OnCheck(Player*, Unit* target /*Algalon*/) override bool OnCheck(Player*, Unit* target /*Algalon*/, uint32 /*criteria_id*/) override
{ {
return target && target->GetAI()->GetData(DATA_HAS_FED_ON_TEARS); return target && target->GetAI()->GetData(DATA_HAS_FED_ON_TEARS);
} }
@@ -1409,7 +1409,7 @@ class achievement_algalon_herald_of_the_titans : public AchievementCriteriaScrip
public: public:
achievement_algalon_herald_of_the_titans() : AchievementCriteriaScript("achievement_algalon_herald_of_the_titans") { } achievement_algalon_herald_of_the_titans() : AchievementCriteriaScript("achievement_algalon_herald_of_the_titans") { }
bool OnCheck(Player*, Unit* target /*Algalon*/) override bool OnCheck(Player*, Unit* target /*Algalon*/, uint32 /*criteria_id*/) override
{ {
return target && target->GetAI()->GetData(DATA_HERALD_OF_THE_TITANS); return target && target->GetAI()->GetData(DATA_HERALD_OF_THE_TITANS);
} }
@@ -928,7 +928,7 @@ public:
{ {
} }
bool OnCheck(Player* /*player*/, Unit* target) override bool OnCheck(Player* /*player*/, Unit* target, uint32 /*criteria_id*/) override
{ {
return target && target->GetAuraCount(SPELL_SUPERCHARGE) >= 2 && (!_targetEntry || target->GetEntry() == _targetEntry); return target && target->GetAuraCount(SPELL_SUPERCHARGE) >= 2 && (!_targetEntry || target->GetEntry() == _targetEntry);
} }
@@ -942,7 +942,7 @@ class achievement_cant_do_that_while_stunned : public AchievementCriteriaScript
public: public:
achievement_cant_do_that_while_stunned() : AchievementCriteriaScript("achievement_cant_do_that_while_stunned") {} achievement_cant_do_that_while_stunned() : AchievementCriteriaScript("achievement_cant_do_that_while_stunned") {}
bool OnCheck(Player* /*player*/, Unit* target) override bool OnCheck(Player* /*player*/, Unit* target, uint32 /*criteria_id*/) override
{ {
bool allow = target && target->GetAuraCount(SPELL_SUPERCHARGE) >= 2; bool allow = target && target->GetAuraCount(SPELL_SUPERCHARGE) >= 2;
if (!allow) if (!allow)
@@ -460,7 +460,7 @@ class achievement_auriaya_crazy_cat_lady : public AchievementCriteriaScript
public: public:
achievement_auriaya_crazy_cat_lady() : AchievementCriteriaScript("achievement_auriaya_crazy_cat_lady") {} achievement_auriaya_crazy_cat_lady() : AchievementCriteriaScript("achievement_auriaya_crazy_cat_lady") {}
bool OnCheck(Player* /*player*/, Unit* target) override bool OnCheck(Player* /*player*/, Unit* target, uint32 /*criteria_id*/) override
{ {
if (target) if (target)
if (InstanceScript* instance = target->GetInstanceScript()) if (InstanceScript* instance = target->GetInstanceScript())
@@ -476,7 +476,7 @@ class achievement_auriaya_nine_lives : public AchievementCriteriaScript
public: public:
achievement_auriaya_nine_lives() : AchievementCriteriaScript("achievement_auriaya_nine_lives") {} achievement_auriaya_nine_lives() : AchievementCriteriaScript("achievement_auriaya_nine_lives") {}
bool OnCheck(Player* /*player*/, Unit* target) override bool OnCheck(Player* /*player*/, Unit* target, uint32 /*criteria_id*/) override
{ {
if (target) if (target)
if (InstanceScript* instance = target->GetInstanceScript()) if (InstanceScript* instance = target->GetInstanceScript())
@@ -2076,7 +2076,7 @@ public:
{ {
} }
bool OnCheck(Player* /*player*/, Unit* target /*Flame Leviathan*/) override bool OnCheck(Player* /*player*/, Unit* target /*Flame Leviathan*/, uint32 /*criteria_id*/) override
{ {
return target && _towerCount <= target->GetAI()->GetData(DATA_GET_TOWER_COUNT); return target && _towerCount <= target->GetAI()->GetData(DATA_GET_TOWER_COUNT);
} }
@@ -2090,7 +2090,7 @@ class achievement_flame_leviathan_shutout : public AchievementCriteriaScript
public: public:
achievement_flame_leviathan_shutout() : AchievementCriteriaScript("achievement_flame_leviathan_shutout") {} achievement_flame_leviathan_shutout() : AchievementCriteriaScript("achievement_flame_leviathan_shutout") {}
bool OnCheck(Player* /*player*/, Unit* target /*Flame Leviathan*/) override bool OnCheck(Player* /*player*/, Unit* target /*Flame Leviathan*/, uint32 /*criteria_id*/) override
{ {
if (target) if (target)
if (target->GetAI()->GetData(DATA_GET_SHUTDOWN)) if (target->GetAI()->GetData(DATA_GET_SHUTDOWN))
@@ -2107,7 +2107,7 @@ public:
{ {
} }
bool OnCheck(Player* player, Unit*) override bool OnCheck(Player* player, Unit*, uint32 /*criteria_id*/) override
{ {
if (Vehicle* vehicle = player->GetVehicle()) if (Vehicle* vehicle = player->GetVehicle())
if (vehicle->GetCreatureEntry() == _entry1 || vehicle->GetCreatureEntry() == _entry2) if (vehicle->GetCreatureEntry() == _entry1 || vehicle->GetCreatureEntry() == _entry2)
@@ -2125,7 +2125,7 @@ class achievement_flame_leviathan_unbroken : public AchievementCriteriaScript
public: public:
achievement_flame_leviathan_unbroken() : AchievementCriteriaScript("achievement_flame_leviathan_unbroken") {} achievement_flame_leviathan_unbroken() : AchievementCriteriaScript("achievement_flame_leviathan_unbroken") {}
bool OnCheck(Player* player, Unit*) override bool OnCheck(Player* player, Unit*, uint32 /*criteria_id*/) override
{ {
if (player->GetInstanceScript()) if (player->GetInstanceScript())
if (player->GetInstanceScript()->GetData(DATA_UNBROKEN_ACHIEVEMENT)) if (player->GetInstanceScript()->GetData(DATA_UNBROKEN_ACHIEVEMENT))
@@ -1294,7 +1294,7 @@ class achievement_freya_getting_back_to_nature : public AchievementCriteriaScrip
public: public:
achievement_freya_getting_back_to_nature() : AchievementCriteriaScript("achievement_freya_getting_back_to_nature") {} achievement_freya_getting_back_to_nature() : AchievementCriteriaScript("achievement_freya_getting_back_to_nature") {}
bool OnCheck(Player* /*player*/, Unit* target /*Freya*/) override bool OnCheck(Player* /*player*/, Unit* target /*Freya*/, uint32 /*criteria_id*/) override
{ {
if (target) if (target)
if (target->GetAI()->GetData(DATA_BACK_TO_NATURE)) if (target->GetAI()->GetData(DATA_BACK_TO_NATURE))
@@ -1311,7 +1311,7 @@ public:
{ {
} }
bool OnCheck(Player* /*player*/, Unit* target /*Freya*/) override bool OnCheck(Player* /*player*/, Unit* target /*Freya*/, uint32 /*criteria_id*/) override
{ {
return target && _elderCount <= target->GetAI()->GetData(DATA_GET_ELDER_COUNT); return target && _elderCount <= target->GetAI()->GetData(DATA_GET_ELDER_COUNT);
} }
@@ -644,7 +644,7 @@ class achievement_smell_saronite : public AchievementCriteriaScript
public: public:
achievement_smell_saronite() : AchievementCriteriaScript("achievement_smell_saronite") {} achievement_smell_saronite() : AchievementCriteriaScript("achievement_smell_saronite") {}
bool OnCheck(Player* /*player*/, Unit* target) override bool OnCheck(Player* /*player*/, Unit* target, uint32 /*criteria_id*/) override
{ {
return target && target->GetEntry() == NPC_VEZAX && target->GetTypeId() == TYPEID_UNIT && target->ToCreature()->AI()->GetData(1); return target && target->GetEntry() == NPC_VEZAX && target->GetTypeId() == TYPEID_UNIT && target->ToCreature()->AI()->GetData(1);
} }
@@ -655,7 +655,7 @@ class achievement_shadowdodger : public AchievementCriteriaScript
public: public:
achievement_shadowdodger() : AchievementCriteriaScript("achievement_shadowdodger") {} achievement_shadowdodger() : AchievementCriteriaScript("achievement_shadowdodger") {}
bool OnCheck(Player* /*player*/, Unit* target) override bool OnCheck(Player* /*player*/, Unit* target, uint32 /*criteria_id*/) override
{ {
return target && target->GetEntry() == NPC_VEZAX && target->GetTypeId() == TYPEID_UNIT && target->ToCreature()->AI()->GetData(2); return target && target->GetEntry() == NPC_VEZAX && target->GetTypeId() == TYPEID_UNIT && target->ToCreature()->AI()->GetData(2);
} }
@@ -1449,7 +1449,7 @@ class achievement_cheese_the_freeze : public AchievementCriteriaScript
public: public:
achievement_cheese_the_freeze() : AchievementCriteriaScript("achievement_cheese_the_freeze") {} achievement_cheese_the_freeze() : AchievementCriteriaScript("achievement_cheese_the_freeze") {}
bool OnCheck(Player* /*player*/, Unit* target) override bool OnCheck(Player* /*player*/, Unit* target, uint32 /*criteria_id*/) override
{ {
return target && target->GetEntry() == NPC_HODIR && target->GetTypeId() == TYPEID_UNIT && target->ToCreature()->AI()->GetData(1); return target && target->GetEntry() == NPC_HODIR && target->GetTypeId() == TYPEID_UNIT && target->ToCreature()->AI()->GetData(1);
} }
@@ -1460,7 +1460,7 @@ class achievement_getting_cold_in_here : public AchievementCriteriaScript
public: public:
achievement_getting_cold_in_here() : AchievementCriteriaScript("achievement_getting_cold_in_here") {} achievement_getting_cold_in_here() : AchievementCriteriaScript("achievement_getting_cold_in_here") {}
bool OnCheck(Player* /*player*/, Unit* target) override bool OnCheck(Player* /*player*/, Unit* target, uint32 /*criteria_id*/) override
{ {
return target && target->GetEntry() == NPC_HODIR && target->GetTypeId() == TYPEID_UNIT && target->ToCreature()->AI()->GetData(2); return target && target->GetEntry() == NPC_HODIR && target->GetTypeId() == TYPEID_UNIT && target->ToCreature()->AI()->GetData(2);
} }
@@ -1471,7 +1471,7 @@ class achievement_i_could_say_that_this_cache_was_rare : public AchievementCrite
public: public:
achievement_i_could_say_that_this_cache_was_rare() : AchievementCriteriaScript("achievement_i_could_say_that_this_cache_was_rare") {} achievement_i_could_say_that_this_cache_was_rare() : AchievementCriteriaScript("achievement_i_could_say_that_this_cache_was_rare") {}
bool OnCheck(Player* /*player*/, Unit* target) override bool OnCheck(Player* /*player*/, Unit* target, uint32 /*criteria_id*/) override
{ {
return target && target->GetEntry() == NPC_HODIR && target->GetTypeId() == TYPEID_UNIT && target->ToCreature()->AI()->GetData(3); return target && target->GetEntry() == NPC_HODIR && target->GetTypeId() == TYPEID_UNIT && target->ToCreature()->AI()->GetData(3);
} }
@@ -1482,7 +1482,7 @@ class achievement_i_have_the_coolest_friends : public AchievementCriteriaScript
public: public:
achievement_i_have_the_coolest_friends() : AchievementCriteriaScript("achievement_i_have_the_coolest_friends") {} achievement_i_have_the_coolest_friends() : AchievementCriteriaScript("achievement_i_have_the_coolest_friends") {}
bool OnCheck(Player* /*player*/, Unit* target) override bool OnCheck(Player* /*player*/, Unit* target, uint32 /*criteria_id*/) override
{ {
return target && target->GetEntry() == NPC_HODIR && target->GetTypeId() == TYPEID_UNIT && target->ToCreature()->AI()->GetData(4); return target && target->GetEntry() == NPC_HODIR && target->GetTypeId() == TYPEID_UNIT && target->ToCreature()->AI()->GetData(4);
} }
@@ -1493,7 +1493,7 @@ class achievement_staying_buffed_all_winter_10 : public AchievementCriteriaScrip
public: public:
achievement_staying_buffed_all_winter_10() : AchievementCriteriaScript("achievement_staying_buffed_all_winter_10") {} achievement_staying_buffed_all_winter_10() : AchievementCriteriaScript("achievement_staying_buffed_all_winter_10") {}
bool OnCheck(Player* player, Unit* /*target*/) override bool OnCheck(Player* player, Unit* /*target*/, uint32 /*criteria_id*/) override
{ {
return player && player->HasAura(SPELL_MAGE_TOASTY_FIRE_AURA) && player->HasAura(SPELL_DRUID_STARLIGHT_AREA_AURA) && player->HasAura(SPELL_SHAMAN_STORM_POWER_10); return player && player->HasAura(SPELL_MAGE_TOASTY_FIRE_AURA) && player->HasAura(SPELL_DRUID_STARLIGHT_AREA_AURA) && player->HasAura(SPELL_SHAMAN_STORM_POWER_10);
} }
@@ -1504,7 +1504,7 @@ class achievement_staying_buffed_all_winter_25 : public AchievementCriteriaScrip
public: public:
achievement_staying_buffed_all_winter_25() : AchievementCriteriaScript("achievement_staying_buffed_all_winter_25") {} achievement_staying_buffed_all_winter_25() : AchievementCriteriaScript("achievement_staying_buffed_all_winter_25") {}
bool OnCheck(Player* player, Unit* /*target*/) override bool OnCheck(Player* player, Unit* /*target*/, uint32 /*criteria_id*/) override
{ {
return player && player->HasAura(SPELL_MAGE_TOASTY_FIRE_AURA) && player->HasAura(SPELL_DRUID_STARLIGHT_AREA_AURA) && player->HasAura(SPELL_SHAMAN_STORM_POWER_25); return player && player->HasAura(SPELL_MAGE_TOASTY_FIRE_AURA) && player->HasAura(SPELL_DRUID_STARLIGHT_AREA_AURA) && player->HasAura(SPELL_SHAMAN_STORM_POWER_25);
} }
@@ -551,7 +551,7 @@ class achievement_ignis_shattered : public AchievementCriteriaScript
public: public:
achievement_ignis_shattered() : AchievementCriteriaScript("achievement_ignis_shattered") {} achievement_ignis_shattered() : AchievementCriteriaScript("achievement_ignis_shattered") {}
bool OnCheck(Player* /*player*/, Unit* target) override bool OnCheck(Player* /*player*/, Unit* target, uint32 /*criteria_id*/) override
{ {
if (!target || target->GetTypeId() != TYPEID_UNIT) if (!target || target->GetTypeId() != TYPEID_UNIT)
return false; return false;
@@ -813,7 +813,7 @@ class achievement_kologarn_looks_could_kill : public AchievementCriteriaScript
public: public:
achievement_kologarn_looks_could_kill() : AchievementCriteriaScript("achievement_kologarn_looks_could_kill") {} achievement_kologarn_looks_could_kill() : AchievementCriteriaScript("achievement_kologarn_looks_could_kill") {}
bool OnCheck(Player* /*player*/, Unit* target) override bool OnCheck(Player* /*player*/, Unit* target, uint32 /*criteria_id*/) override
{ {
if (target) if (target)
if (InstanceScript* instance = target->GetInstanceScript()) if (InstanceScript* instance = target->GetInstanceScript())
@@ -829,7 +829,7 @@ class achievement_kologarn_rubble_and_roll : public AchievementCriteriaScript
public: public:
achievement_kologarn_rubble_and_roll() : AchievementCriteriaScript("achievement_kologarn_rubble_and_roll") {} achievement_kologarn_rubble_and_roll() : AchievementCriteriaScript("achievement_kologarn_rubble_and_roll") {}
bool OnCheck(Player* /*player*/, Unit* target) override bool OnCheck(Player* /*player*/, Unit* target, uint32 /*criteria_id*/) override
{ {
if (target) if (target)
if (InstanceScript* instance = target->GetInstanceScript()) if (InstanceScript* instance = target->GetInstanceScript())
@@ -845,7 +845,7 @@ class achievement_kologarn_with_open_arms : public AchievementCriteriaScript
public: public:
achievement_kologarn_with_open_arms() : AchievementCriteriaScript("achievement_kologarn_with_open_arms") {} achievement_kologarn_with_open_arms() : AchievementCriteriaScript("achievement_kologarn_with_open_arms") {}
bool OnCheck(Player* /*player*/, Unit* target) override bool OnCheck(Player* /*player*/, Unit* target, uint32 /*criteria_id*/) override
{ {
if (target) if (target)
if (InstanceScript* instance = target->GetInstanceScript()) if (InstanceScript* instance = target->GetInstanceScript())
@@ -2523,7 +2523,7 @@ class achievement_mimiron_firefighter : public AchievementCriteriaScript
public: public:
achievement_mimiron_firefighter() : AchievementCriteriaScript("achievement_mimiron_firefighter") {} achievement_mimiron_firefighter() : AchievementCriteriaScript("achievement_mimiron_firefighter") {}
bool OnCheck(Player* /*player*/, Unit* target) override bool OnCheck(Player* /*player*/, Unit* target, uint32 /*criteria_id*/) override
{ {
return target && target->GetEntry() == NPC_MIMIRON && target->GetTypeId() == TYPEID_UNIT && target->ToCreature()->AI()->GetData(1); return target && target->GetEntry() == NPC_MIMIRON && target->GetTypeId() == TYPEID_UNIT && target->ToCreature()->AI()->GetData(1);
} }
@@ -2534,7 +2534,7 @@ class achievement_mimiron_set_up_us_the_bomb_11 : public AchievementCriteriaScri
public: public:
achievement_mimiron_set_up_us_the_bomb_11() : AchievementCriteriaScript("achievement_mimiron_set_up_us_the_bomb_11") {} achievement_mimiron_set_up_us_the_bomb_11() : AchievementCriteriaScript("achievement_mimiron_set_up_us_the_bomb_11") {}
bool OnCheck(Player* /*player*/, Unit* target) override bool OnCheck(Player* /*player*/, Unit* target, uint32 /*criteria_id*/) override
{ {
return target && target->GetEntry() == NPC_MIMIRON && target->GetTypeId() == TYPEID_UNIT && !target->ToCreature()->AI()->GetData(11); return target && target->GetEntry() == NPC_MIMIRON && target->GetTypeId() == TYPEID_UNIT && !target->ToCreature()->AI()->GetData(11);
} }
@@ -2545,7 +2545,7 @@ class achievement_mimiron_set_up_us_the_bomb_12 : public AchievementCriteriaScri
public: public:
achievement_mimiron_set_up_us_the_bomb_12() : AchievementCriteriaScript("achievement_mimiron_set_up_us_the_bomb_12") {} achievement_mimiron_set_up_us_the_bomb_12() : AchievementCriteriaScript("achievement_mimiron_set_up_us_the_bomb_12") {}
bool OnCheck(Player* /*player*/, Unit* target) override bool OnCheck(Player* /*player*/, Unit* target, uint32 /*criteria_id*/) override
{ {
return target && target->GetEntry() == NPC_MIMIRON && target->GetTypeId() == TYPEID_UNIT && !target->ToCreature()->AI()->GetData(12); return target && target->GetEntry() == NPC_MIMIRON && target->GetTypeId() == TYPEID_UNIT && !target->ToCreature()->AI()->GetData(12);
} }
@@ -2556,7 +2556,7 @@ class achievement_mimiron_set_up_us_the_bomb_13 : public AchievementCriteriaScri
public: public:
achievement_mimiron_set_up_us_the_bomb_13() : AchievementCriteriaScript("achievement_mimiron_set_up_us_the_bomb_13") {} achievement_mimiron_set_up_us_the_bomb_13() : AchievementCriteriaScript("achievement_mimiron_set_up_us_the_bomb_13") {}
bool OnCheck(Player* /*player*/, Unit* target) override bool OnCheck(Player* /*player*/, Unit* target, uint32 /*criteria_id*/) override
{ {
return target && target->GetEntry() == NPC_MIMIRON && target->GetTypeId() == TYPEID_UNIT && !target->ToCreature()->AI()->GetData(13); return target && target->GetEntry() == NPC_MIMIRON && target->GetTypeId() == TYPEID_UNIT && !target->ToCreature()->AI()->GetData(13);
} }
@@ -1096,7 +1096,7 @@ class achievement_quick_shave : public AchievementCriteriaScript
public: public:
achievement_quick_shave() : AchievementCriteriaScript("achievement_quick_shave") {} achievement_quick_shave() : AchievementCriteriaScript("achievement_quick_shave") {}
bool OnCheck(Player* /*player*/, Unit* target) override bool OnCheck(Player* /*player*/, Unit* target, uint32 /*criteria_id*/) override
{ {
return target && target->GetTypeId() == TYPEID_UNIT && target->GetEntry() == NPC_RAZORSCALE && target->ToCreature()->AI()->GetData(1); return target && target->GetTypeId() == TYPEID_UNIT && target->GetEntry() == NPC_RAZORSCALE && target->ToCreature()->AI()->GetData(1);
} }
@@ -1107,7 +1107,7 @@ class achievement_iron_dwarf_medium_rare : public AchievementCriteriaScript
public: public:
achievement_iron_dwarf_medium_rare() : AchievementCriteriaScript("achievement_iron_dwarf_medium_rare") {} achievement_iron_dwarf_medium_rare() : AchievementCriteriaScript("achievement_iron_dwarf_medium_rare") {}
bool OnCheck(Player* /*player*/, Unit* target) override bool OnCheck(Player* /*player*/, Unit* target, uint32 /*criteria_id*/) override
{ {
return target && target->GetEntry() == NPC_RAZORSCALE; return target && target->GetEntry() == NPC_RAZORSCALE;
} }
@@ -1802,7 +1802,7 @@ class achievement_thorim_stand_in_the_lightning : public AchievementCriteriaScri
public: public:
achievement_thorim_stand_in_the_lightning() : AchievementCriteriaScript("achievement_thorim_stand_in_the_lightning") {} achievement_thorim_stand_in_the_lightning() : AchievementCriteriaScript("achievement_thorim_stand_in_the_lightning") {}
bool OnCheck(Player* player, Unit*) override bool OnCheck(Player* player, Unit*, uint32 /*criteria_id*/) override
{ {
if (InstanceScript* instance = player->GetInstanceScript()) if (InstanceScript* instance = player->GetInstanceScript())
if (Creature* cr = ObjectAccessor::GetCreature(*player, instance->GetGuidData(TYPE_THORIM))) if (Creature* cr = ObjectAccessor::GetCreature(*player, instance->GetGuidData(TYPE_THORIM)))
@@ -1817,7 +1817,7 @@ class achievement_thorim_lose_your_illusion : public AchievementCriteriaScript
public: public:
achievement_thorim_lose_your_illusion() : AchievementCriteriaScript("achievement_thorim_lose_your_illusion") {} achievement_thorim_lose_your_illusion() : AchievementCriteriaScript("achievement_thorim_lose_your_illusion") {}
bool OnCheck(Player* player, Unit*) override bool OnCheck(Player* player, Unit*, uint32 /*criteria_id*/) override
{ {
if (InstanceScript* instance = player->GetInstanceScript()) if (InstanceScript* instance = player->GetInstanceScript())
if (Creature* cr = ObjectAccessor::GetCreature(*player, instance->GetGuidData(TYPE_THORIM))) if (Creature* cr = ObjectAccessor::GetCreature(*player, instance->GetGuidData(TYPE_THORIM)))
@@ -1043,7 +1043,7 @@ class achievement_xt002_nerf_engineering : public AchievementCriteriaScript
public: public:
achievement_xt002_nerf_engineering() : AchievementCriteriaScript("achievement_xt002_nerf_engineering") {} achievement_xt002_nerf_engineering() : AchievementCriteriaScript("achievement_xt002_nerf_engineering") {}
bool OnCheck(Player* /*player*/, Unit* target) override bool OnCheck(Player* /*player*/, Unit* target, uint32 /*criteria_id*/) override
{ {
if (target) if (target)
if (InstanceScript* instance = target->GetInstanceScript()) if (InstanceScript* instance = target->GetInstanceScript())
@@ -1059,7 +1059,7 @@ class achievement_xt002_nerf_gravity_bombs : public AchievementCriteriaScript
public: public:
achievement_xt002_nerf_gravity_bombs() : AchievementCriteriaScript("achievement_xt002_nerf_gravity_bombs") {} achievement_xt002_nerf_gravity_bombs() : AchievementCriteriaScript("achievement_xt002_nerf_gravity_bombs") {}
bool OnCheck(Player* /*player*/, Unit* target) override bool OnCheck(Player* /*player*/, Unit* target, uint32 /*criteria_id*/) override
{ {
if (target) if (target)
if (InstanceScript* instance = target->GetInstanceScript()) if (InstanceScript* instance = target->GetInstanceScript())
@@ -2955,7 +2955,7 @@ class achievement_yogg_saron_drive_me_crazy : public AchievementCriteriaScript
public: public:
achievement_yogg_saron_drive_me_crazy() : AchievementCriteriaScript("achievement_yogg_saron_drive_me_crazy") {} achievement_yogg_saron_drive_me_crazy() : AchievementCriteriaScript("achievement_yogg_saron_drive_me_crazy") {}
bool OnCheck(Player* /*player*/, Unit* target) override bool OnCheck(Player* /*player*/, Unit* target, uint32 /*criteria_id*/) override
{ {
return target && target->GetAI()->GetData(DATA_GET_DRIVE_ME_CRAZY); // target = Yogg-Saron return target && target->GetAI()->GetData(DATA_GET_DRIVE_ME_CRAZY); // target = Yogg-Saron
} }
@@ -2969,7 +2969,7 @@ public:
{ {
} }
bool OnCheck(Player* player, Unit* /*target*/ /*Yogg-Saron*/) override bool OnCheck(Player* player, Unit* /*target*/ /*Yogg-Saron*/, uint32 /*criteria_id*/) override
{ {
if (player->GetInstanceScript()) if (player->GetInstanceScript())
if (Creature* sara = ObjectAccessor::GetCreature(*player, player->GetInstanceScript()->GetGuidData(NPC_SARA))) if (Creature* sara = ObjectAccessor::GetCreature(*player, player->GetInstanceScript()->GetGuidData(NPC_SARA)))
@@ -2990,7 +2990,7 @@ public:
{ {
} }
bool OnCheck(Player* player, Unit* /*target*/ /*Yogg-Saron*/) override bool OnCheck(Player* player, Unit* /*target*/ /*Yogg-Saron*/, uint32 /*criteria_id*/) override
{ {
if (player->GetInstanceScript()) if (player->GetInstanceScript())
if (Creature* sara = ObjectAccessor::GetCreature(*player, player->GetInstanceScript()->GetGuidData(NPC_BRAIN_OF_YOGG_SARON))) if (Creature* sara = ObjectAccessor::GetCreature(*player, player->GetInstanceScript()->GetGuidData(NPC_BRAIN_OF_YOGG_SARON)))
@@ -3008,7 +3008,7 @@ class achievement_yogg_saron_kiss_and_make_up : public AchievementCriteriaScript
public: public:
achievement_yogg_saron_kiss_and_make_up() : AchievementCriteriaScript("achievement_yogg_saron_kiss_and_make_up") {} achievement_yogg_saron_kiss_and_make_up() : AchievementCriteriaScript("achievement_yogg_saron_kiss_and_make_up") {}
bool OnCheck(Player* /*player*/, Unit* target /*Sara*/) override bool OnCheck(Player* /*player*/, Unit* target /*Sara*/, uint32 /*criteria_id*/) override
{ {
return target && target->GetEntry() == NPC_SARA && target->GetAI() && target->GetAI()->GetData(DATA_GET_SARA_PHASE); return target && target->GetEntry() == NPC_SARA && target->GetAI() && target->GetAI()->GetData(DATA_GET_SARA_PHASE);
} }
@@ -1045,7 +1045,7 @@ class achievement_wg_didnt_stand_a_chance : public AchievementCriteriaScript
public: public:
achievement_wg_didnt_stand_a_chance() : AchievementCriteriaScript("achievement_wg_didnt_stand_a_chance") { } achievement_wg_didnt_stand_a_chance() : AchievementCriteriaScript("achievement_wg_didnt_stand_a_chance") { }
bool OnCheck(Player* source, Unit* target) override bool OnCheck(Player* source, Unit* target, uint32 /*criteria_id*/) override
{ {
if (!target) if (!target)
return false; return false;
@@ -1069,7 +1069,7 @@ class achievement_wg_vehicular_gnomeslaughter : public AchievementCriteriaScript
public: public:
achievement_wg_vehicular_gnomeslaughter() : AchievementCriteriaScript("achievement_wg_vehicular_gnomeslaughter") { } achievement_wg_vehicular_gnomeslaughter() : AchievementCriteriaScript("achievement_wg_vehicular_gnomeslaughter") { }
bool OnCheck(Player* source, Unit* target) override bool OnCheck(Player* source, Unit* target, uint32 /*criteria_id*/) override
{ {
if (!target) if (!target)
return false; return false;
@@ -1089,7 +1089,7 @@ class achievement_wg_within_our_grasp : public AchievementCriteriaScript
public: public:
achievement_wg_within_our_grasp() : AchievementCriteriaScript("achievement_wg_within_our_grasp") { } achievement_wg_within_our_grasp() : AchievementCriteriaScript("achievement_wg_within_our_grasp") { }
bool OnCheck(Player* /*source*/, Unit* /*target*/) override bool OnCheck(Player* /*source*/, Unit* /*target*/, uint32 /*criteria_id*/) override
{ {
Battlefield* wintergrasp = sBattlefieldMgr->GetBattlefieldByBattleId(BATTLEFIELD_BATTLEID_WG); Battlefield* wintergrasp = sBattlefieldMgr->GetBattlefieldByBattleId(BATTLEFIELD_BATTLEID_WG);
if (!wintergrasp) if (!wintergrasp)
@@ -19,7 +19,7 @@ class achievement_resilient_victory : public AchievementCriteriaScript
public: public:
achievement_resilient_victory() : AchievementCriteriaScript("achievement_resilient_victory") { } achievement_resilient_victory() : AchievementCriteriaScript("achievement_resilient_victory") { }
bool OnCheck(Player* source, Unit* /*target*/) override bool OnCheck(Player* source, Unit* /*target*/, uint32 /*criteria_id*/) override
{ {
Battleground* bg = source->GetBattleground(); Battleground* bg = source->GetBattleground();
return bg && bg->GetBgTypeID(true) == BATTLEGROUND_AB && bg->ToBattlegroundAB()->IsTeamScores500Disadvantage(source->GetTeamId()); return bg && bg->GetBgTypeID(true) == BATTLEGROUND_AB && bg->ToBattlegroundAB()->IsTeamScores500Disadvantage(source->GetTeamId());
@@ -31,7 +31,7 @@ class achievement_bg_control_all_nodes : public AchievementCriteriaScript
public: public:
achievement_bg_control_all_nodes() : AchievementCriteriaScript("achievement_bg_control_all_nodes") { } achievement_bg_control_all_nodes() : AchievementCriteriaScript("achievement_bg_control_all_nodes") { }
bool OnCheck(Player* source, Unit* /*target*/) override bool OnCheck(Player* source, Unit* /*target*/, uint32 /*criteria_id*/) override
{ {
Battleground* bg = source->GetBattleground(); Battleground* bg = source->GetBattleground();
return bg && bg->AllNodesConrolledByTeam(source->GetTeamId()); return bg && bg->AllNodesConrolledByTeam(source->GetTeamId());
@@ -43,7 +43,7 @@ class achievement_save_the_day : public AchievementCriteriaScript
public: public:
achievement_save_the_day() : AchievementCriteriaScript("achievement_save_the_day") { } achievement_save_the_day() : AchievementCriteriaScript("achievement_save_the_day") { }
bool OnCheck(Player* source, Unit* target) override bool OnCheck(Player* source, Unit* target, uint32 /*criteria_id*/) override
{ {
if (!target) if (!target)
return false; return false;
@@ -62,7 +62,7 @@ class achievement_bg_ic_resource_glut : public AchievementCriteriaScript
public: public:
achievement_bg_ic_resource_glut() : AchievementCriteriaScript("achievement_bg_ic_resource_glut") { } achievement_bg_ic_resource_glut() : AchievementCriteriaScript("achievement_bg_ic_resource_glut") { }
bool OnCheck(Player* source, Unit* /*target*/) override bool OnCheck(Player* source, Unit* /*target*/, uint32 /*criteria_id*/) override
{ {
Battleground* bg = source->GetBattleground(); Battleground* bg = source->GetBattleground();
return bg && bg->GetBgTypeID(true) == BATTLEGROUND_IC && bg->ToBattlegroundIC()->IsResourceGlutAllowed(source->GetTeamId()); return bg && bg->GetBgTypeID(true) == BATTLEGROUND_IC && bg->ToBattlegroundIC()->IsResourceGlutAllowed(source->GetTeamId());
@@ -74,7 +74,7 @@ class achievement_bg_ic_glaive_grave : public AchievementCriteriaScript
public: public:
achievement_bg_ic_glaive_grave() : AchievementCriteriaScript("achievement_bg_ic_glaive_grave") { } achievement_bg_ic_glaive_grave() : AchievementCriteriaScript("achievement_bg_ic_glaive_grave") { }
bool OnCheck(Player* source, Unit* /*target*/) override bool OnCheck(Player* source, Unit* /*target*/, uint32 /*criteria_id*/) override
{ {
if (Creature* vehicle = source->GetVehicleCreatureBase()) if (Creature* vehicle = source->GetVehicleCreatureBase())
return vehicle->GetEntry() == NPC_GLAIVE_THROWER_H || vehicle->GetEntry() == NPC_GLAIVE_THROWER_A; return vehicle->GetEntry() == NPC_GLAIVE_THROWER_H || vehicle->GetEntry() == NPC_GLAIVE_THROWER_A;
@@ -88,7 +88,7 @@ class achievement_bg_ic_mowed_down : public AchievementCriteriaScript
public: public:
achievement_bg_ic_mowed_down() : AchievementCriteriaScript("achievement_bg_ic_mowed_down") { } achievement_bg_ic_mowed_down() : AchievementCriteriaScript("achievement_bg_ic_mowed_down") { }
bool OnCheck(Player* source, Unit* /*target*/) override bool OnCheck(Player* source, Unit* /*target*/, uint32 /*criteria_id*/) override
{ {
if (Creature* vehicle = source->GetVehicleCreatureBase()) if (Creature* vehicle = source->GetVehicleCreatureBase())
return vehicle->GetEntry() == NPC_KEEP_CANNON; return vehicle->GetEntry() == NPC_KEEP_CANNON;
@@ -102,7 +102,7 @@ class achievement_bg_sa_artillery : public AchievementCriteriaScript
public: public:
achievement_bg_sa_artillery() : AchievementCriteriaScript("achievement_bg_sa_artillery") { } achievement_bg_sa_artillery() : AchievementCriteriaScript("achievement_bg_sa_artillery") { }
bool OnCheck(Player* source, Unit* /*target*/) override bool OnCheck(Player* source, Unit* /*target*/, uint32 /*criteria_id*/) override
{ {
if (Creature* vehicle = source->GetVehicleCreatureBase()) if (Creature* vehicle = source->GetVehicleCreatureBase())
return vehicle->GetEntry() == NPC_ANTI_PERSONNAL_CANNON; return vehicle->GetEntry() == NPC_ANTI_PERSONNAL_CANNON;
@@ -119,7 +119,7 @@ public:
{ {
} }
bool OnCheck(Player* source, Unit* /*target*/) override bool OnCheck(Player* source, Unit* /*target*/, uint32 /*criteria_id*/) override
{ {
return source->InArena() && source->GetBattleground()->GetArenaType() == _arenaType; return source->InArena() && source->GetBattleground()->GetArenaType() == _arenaType;
} }
@@ -133,7 +133,7 @@ class achievement_sickly_gazelle : public AchievementCriteriaScript
public: public:
achievement_sickly_gazelle() : AchievementCriteriaScript("achievement_sickly_gazelle") { } achievement_sickly_gazelle() : AchievementCriteriaScript("achievement_sickly_gazelle") { }
bool OnCheck(Player* /*source*/, Unit* target) override bool OnCheck(Player* /*source*/, Unit* target, uint32 /*criteria_id*/) override
{ {
if (!target) if (!target)
return false; return false;
@@ -151,7 +151,7 @@ class achievement_everything_counts : public AchievementCriteriaScript
public: public:
achievement_everything_counts() : AchievementCriteriaScript("achievement_everything_counts") { } achievement_everything_counts() : AchievementCriteriaScript("achievement_everything_counts") { }
bool OnCheck(Player* source, Unit* /*target*/) override bool OnCheck(Player* source, Unit* /*target*/, uint32 /*criteria_id*/) override
{ {
Battleground* bg = source->GetBattleground(); Battleground* bg = source->GetBattleground();
return bg && bg->GetBgTypeID(true) == BATTLEGROUND_AV && bg->ToBattlegroundAV()->IsBothMinesControlledByTeam(source->GetTeamId()); return bg && bg->GetBgTypeID(true) == BATTLEGROUND_AV && bg->ToBattlegroundAV()->IsBothMinesControlledByTeam(source->GetTeamId());
@@ -163,7 +163,7 @@ class achievement_bg_av_perfection : public AchievementCriteriaScript
public: public:
achievement_bg_av_perfection() : AchievementCriteriaScript("achievement_bg_av_perfection") { } achievement_bg_av_perfection() : AchievementCriteriaScript("achievement_bg_av_perfection") { }
bool OnCheck(Player* source, Unit* /*target*/) override bool OnCheck(Player* source, Unit* /*target*/, uint32 /*criteria_id*/) override
{ {
Battleground* bg = source->GetBattleground(); Battleground* bg = source->GetBattleground();
return bg && bg->GetBgTypeID(true) == BATTLEGROUND_AV && bg->ToBattlegroundAV()->IsAllTowersControlledAndCaptainAlive(source->GetTeamId()); return bg && bg->GetBgTypeID(true) == BATTLEGROUND_AV && bg->ToBattlegroundAV()->IsAllTowersControlledAndCaptainAlive(source->GetTeamId());
@@ -175,7 +175,7 @@ class achievement_sa_defense_of_the_ancients : public AchievementCriteriaScript
public: public:
achievement_sa_defense_of_the_ancients() : AchievementCriteriaScript("achievement_sa_defense_of_the_ancients") { } achievement_sa_defense_of_the_ancients() : AchievementCriteriaScript("achievement_sa_defense_of_the_ancients") { }
bool OnCheck(Player* source, Unit* /*target*/) override bool OnCheck(Player* source, Unit* /*target*/, uint32 /*criteria_id*/) override
{ {
Battleground* bg = source->GetBattleground(); Battleground* bg = source->GetBattleground();
return bg && bg->GetBgTypeID(true) == BATTLEGROUND_SA && bg->ToBattlegroundSA()->AllowDefenseOfTheAncients(source); return bg && bg->GetBgTypeID(true) == BATTLEGROUND_SA && bg->ToBattlegroundSA()->AllowDefenseOfTheAncients(source);
@@ -197,7 +197,7 @@ class achievement_tilted : public AchievementCriteriaScript
public: public:
achievement_tilted() : AchievementCriteriaScript("achievement_tilted") {} achievement_tilted() : AchievementCriteriaScript("achievement_tilted") {}
bool OnCheck(Player* player, Unit* /*target*/) override bool OnCheck(Player* player, Unit* /*target*/, uint32 /*criteria_id*/) override
{ {
if (!player) if (!player)
return false; return false;
@@ -219,7 +219,7 @@ class achievement_not_even_a_scratch : public AchievementCriteriaScript
public: public:
achievement_not_even_a_scratch() : AchievementCriteriaScript("achievement_not_even_a_scratch") { } achievement_not_even_a_scratch() : AchievementCriteriaScript("achievement_not_even_a_scratch") { }
bool OnCheck(Player* source, Unit* /*target*/) override bool OnCheck(Player* source, Unit* /*target*/, uint32 /*criteria_id*/) override
{ {
if (!source) if (!source)
return false; return false;
@@ -234,7 +234,7 @@ class achievement_killed_exp_or_honor_target : public AchievementCriteriaScript
public: public:
achievement_killed_exp_or_honor_target() : AchievementCriteriaScript("achievement_killed_exp_or_honor_target") { } achievement_killed_exp_or_honor_target() : AchievementCriteriaScript("achievement_killed_exp_or_honor_target") { }
bool OnCheck(Player* player, Unit* target) override bool OnCheck(Player* player, Unit* target, uint32 /*criteria_id*/) override
{ {
return target && player->isHonorOrXPTarget(target); return target && player->isHonorOrXPTarget(target);
} }