diff --git a/src/modules/Playerbot/AI/Actions/Action.cpp b/src/modules/Playerbot/AI/Actions/Action.cpp index 86c7c238b..8e4a9ca1f 100644 --- a/src/modules/Playerbot/AI/Actions/Action.cpp +++ b/src/modules/Playerbot/AI/Actions/Action.cpp @@ -29,8 +29,8 @@ #include "DBCEnums.h" #include "SharedDefines.h" #include "CommonActions.h" -#include "../ClassAI/SpellValidation_WoW112.h" -#include "../ClassAI/SpellValidation_WoW112_Part2.h" +#include "../ClassAI/SpellValidation_WoW120.h" +#include "../ClassAI/SpellValidation_WoW120_Part2.h" namespace Playerbot { @@ -451,7 +451,7 @@ void ActionFactory::RegisterAction(::std::string const& name, ::std::vector<::std::shared_ptr> actions; ChrSpecialization specEnum = static_cast(spec); - using namespace WoW112Spells; + using namespace WoW120Spells; switch (classId) { @@ -1119,7 +1119,7 @@ void ActionFactory::RegisterAction(::std::string const& name, ::std::vector<::std::shared_ptr> ActionFactory::CreateCombatActions(uint8 classId) { - using namespace WoW112Spells; + using namespace WoW120Spells; ::std::vector<::std::shared_ptr> actions; diff --git a/src/modules/Playerbot/AI/BotAI_EventHandlers.cpp b/src/modules/Playerbot/AI/BotAI_EventHandlers.cpp index b4a3cddbb..294e876d4 100644 --- a/src/modules/Playerbot/AI/BotAI_EventHandlers.cpp +++ b/src/modules/Playerbot/AI/BotAI_EventHandlers.cpp @@ -345,7 +345,7 @@ void BotAI::ProcessCombatInterrupt(CombatEvent const& event) if (!casterSnapshot || !casterSnapshot->isHostile) return; - // Check if spell is interruptible (WoW 11.2: check InterruptFlags) + // Check if spell is interruptible (WoW 12.0: check InterruptFlags) SpellInfo const* spellInfo = sSpellMgr->GetSpellInfo(event.spellId, DIFFICULTY_NONE); if (!spellInfo || spellInfo->InterruptFlags == SpellInterruptFlags::None) return; diff --git a/src/modules/Playerbot/AI/ClassAI/BaselineRotationManager.cpp b/src/modules/Playerbot/AI/ClassAI/BaselineRotationManager.cpp index 8f48a62fd..f45aaf8e5 100644 --- a/src/modules/Playerbot/AI/ClassAI/BaselineRotationManager.cpp +++ b/src/modules/Playerbot/AI/ClassAI/BaselineRotationManager.cpp @@ -753,7 +753,7 @@ void HunterBaselineRotation::ApplyBuffs(Player* bot) void BaselineRotationManager::InitializeRogueBaseline() { ::std::vector abilities; - // WoW 11.2 (The War Within) spell IDs: + // WoW 12.0 (The War Within) spell IDs: // - Sinister Strike: 193315 (retail), NOT 1752 (classic) // - Eviscerate: 196819 (retail) abilities.emplace_back(193315, 1, 40, 0, 10.0f, true); // Sinister Strike (retail) @@ -780,7 +780,7 @@ void BaselineRotationManager::InitializeDeathKnightBaseline() void BaselineRotationManager::InitializeShamanBaseline() { ::std::vector abilities; - // WoW 11.2 (The War Within) spell IDs: + // WoW 12.0 (The War Within) spell IDs: // - Lightning Bolt: 188196 (retail), NOT 403 (classic) // - Primal Strike: 73899 (retail) abilities.emplace_back(188196, 1, 0, 0, 10.0f, false); // Lightning Bolt (retail) @@ -799,7 +799,7 @@ void BaselineRotationManager::InitializeMageBaseline() void BaselineRotationManager::InitializeWarlockBaseline() { ::std::vector abilities; - // WoW 11.2 (The War Within) spell IDs: + // WoW 12.0 (The War Within) spell IDs: // - Shadow Bolt: 686 (same as classic) // - Corruption: 172 (same as classic) abilities.emplace_back(686, 1, 0, 0, 10.0f, false); // Shadow Bolt @@ -898,7 +898,7 @@ void WarlockBaselineRotation::ApplyBuffs(Player* bot) // THREAD-SAFETY FIX (2026-01-16): Use QueueSpellCast instead of bot->CastSpell() // ======================================================================== - // Warlock pet spell IDs (WoW 11.2) + // Warlock pet spell IDs (WoW 12.0) constexpr uint32 SUMMON_IMP = 688; constexpr uint32 SUMMON_VOIDWALKER = 697; diff --git a/src/modules/Playerbot/AI/ClassAI/CombatSpecializationTemplate_WoW112.h b/src/modules/Playerbot/AI/ClassAI/CombatSpecializationTemplate_WoW120.h similarity index 99% rename from src/modules/Playerbot/AI/ClassAI/CombatSpecializationTemplate_WoW112.h rename to src/modules/Playerbot/AI/ClassAI/CombatSpecializationTemplate_WoW120.h index f3599a7fd..f09fea511 100644 --- a/src/modules/Playerbot/AI/ClassAI/CombatSpecializationTemplate_WoW112.h +++ b/src/modules/Playerbot/AI/ClassAI/CombatSpecializationTemplate_WoW120.h @@ -10,14 +10,14 @@ #pragma once #include "CombatSpecializationBase.h" -#include "ResourceTypes_WoW112.h" +#include "ResourceTypes_WoW120.h" #include namespace Playerbot { /** - * Enhanced Combat Specialization Template for WoW 11.2 + * Enhanced Combat Specialization Template for WoW 12.0 * * This template provides specialized resource handling for all 13 classes. * Each class specialization inherits from this template with their specific resource type. diff --git a/src/modules/Playerbot/AI/ClassAI/DeathKnights/BloodDeathKnight.h b/src/modules/Playerbot/AI/ClassAI/DeathKnights/BloodDeathKnight.h index d5ffcb6ae..7685108ca 100644 --- a/src/modules/Playerbot/AI/ClassAI/DeathKnights/BloodDeathKnight.h +++ b/src/modules/Playerbot/AI/ClassAI/DeathKnights/BloodDeathKnight.h @@ -15,7 +15,7 @@ #include "../Common/RotationHelpers.h" #include "../CombatSpecializationTemplates.h" #include "../ResourceTypes.h" -#include "../SpellValidation_WoW112.h" // Central spell registry +#include "../SpellValidation_WoW120.h" // Central spell registry #include "../../Services/ThreatAssistant.h" #include "Player.h" #include "SpellMgr.h" @@ -29,64 +29,64 @@ namespace Playerbot { // ============================================================================ -// BLOOD DEATH KNIGHT SPELL ALIASES (WoW 11.2 - The War Within) +// BLOOD DEATH KNIGHT SPELL ALIASES (WoW 12.0 - The War Within) // Consolidated spell IDs from central registry - NO duplicates // ============================================================================ namespace BloodDeathKnightSpells { // Rune Spenders - constexpr uint32 HEART_STRIKE = WoW112Spells::DeathKnight::Blood::HEART_STRIKE; - constexpr uint32 BLOOD_BOIL = WoW112Spells::DeathKnight::Blood::BLOOD_BOIL; - constexpr uint32 DEATHS_CARESS = WoW112Spells::DeathKnight::Blood::DEATHS_CARESS; - constexpr uint32 MARROWREND = WoW112Spells::DeathKnight::Blood::MARROWREND; - constexpr uint32 CONSUMPTION = WoW112Spells::DeathKnight::Blood::CONSUMPTION; + constexpr uint32 HEART_STRIKE = WoW120Spells::DeathKnight::Blood::HEART_STRIKE; + constexpr uint32 BLOOD_BOIL = WoW120Spells::DeathKnight::Blood::BLOOD_BOIL; + constexpr uint32 DEATHS_CARESS = WoW120Spells::DeathKnight::Blood::DEATHS_CARESS; + constexpr uint32 MARROWREND = WoW120Spells::DeathKnight::Blood::MARROWREND; + constexpr uint32 CONSUMPTION = WoW120Spells::DeathKnight::Blood::CONSUMPTION; // Runic Power Spenders - constexpr uint32 DEATH_STRIKE = WoW112Spells::DeathKnight::DEATH_STRIKE; - constexpr uint32 DEATHS_AND_DECAY_BLOOD = WoW112Spells::DeathKnight::DEATH_AND_DECAY; - constexpr uint32 BONESTORM = WoW112Spells::DeathKnight::Blood::BONESTORM; + constexpr uint32 DEATH_STRIKE = WoW120Spells::DeathKnight::DEATH_STRIKE; + constexpr uint32 DEATHS_AND_DECAY_BLOOD = WoW120Spells::DeathKnight::DEATH_AND_DECAY; + constexpr uint32 BONESTORM = WoW120Spells::DeathKnight::Blood::BONESTORM; // Active Mitigation - constexpr uint32 VAMPIRIC_BLOOD = WoW112Spells::DeathKnight::Blood::VAMPIRIC_BLOOD; - constexpr uint32 DANCING_RUNE_WEAPON = WoW112Spells::DeathKnight::Blood::DANCING_RUNE_WEAPON; - constexpr uint32 ICEBOUND_FORTITUDE = WoW112Spells::DeathKnight::ICEBOUND_FORTITUDE; - constexpr uint32 ANTI_MAGIC_SHELL = WoW112Spells::DeathKnight::ANTI_MAGIC_SHELL; - constexpr uint32 RUNE_TAP = WoW112Spells::DeathKnight::Blood::RUNE_TAP; - constexpr uint32 VAMPIRIC_STRIKE = WoW112Spells::DeathKnight::Blood::VAMPIRIC_STRIKE; + constexpr uint32 VAMPIRIC_BLOOD = WoW120Spells::DeathKnight::Blood::VAMPIRIC_BLOOD; + constexpr uint32 DANCING_RUNE_WEAPON = WoW120Spells::DeathKnight::Blood::DANCING_RUNE_WEAPON; + constexpr uint32 ICEBOUND_FORTITUDE = WoW120Spells::DeathKnight::ICEBOUND_FORTITUDE; + constexpr uint32 ANTI_MAGIC_SHELL = WoW120Spells::DeathKnight::ANTI_MAGIC_SHELL; + constexpr uint32 RUNE_TAP = WoW120Spells::DeathKnight::Blood::RUNE_TAP; + constexpr uint32 VAMPIRIC_STRIKE = WoW120Spells::DeathKnight::Blood::VAMPIRIC_STRIKE; // Threat Generation - constexpr uint32 DARK_COMMAND = WoW112Spells::DeathKnight::DARK_COMMAND; - constexpr uint32 BLOOD_PLAGUE = WoW112Spells::DeathKnight::Blood::BLOOD_PLAGUE; - constexpr uint32 FROST_FEVER = WoW112Spells::DeathKnight::Frost::FROST_FEVER; + constexpr uint32 DARK_COMMAND = WoW120Spells::DeathKnight::DARK_COMMAND; + constexpr uint32 BLOOD_PLAGUE = WoW120Spells::DeathKnight::Blood::BLOOD_PLAGUE; + constexpr uint32 FROST_FEVER = WoW120Spells::DeathKnight::Frost::FROST_FEVER; // Major Cooldowns - constexpr uint32 RAISE_DEAD_BLOOD = WoW112Spells::DeathKnight::RAISE_DEAD; - constexpr uint32 ARMY_OF_THE_DEAD = WoW112Spells::DeathKnight::Unholy::ARMY_OF_THE_DEAD; - constexpr uint32 GOREFIENDS_GRASP = WoW112Spells::DeathKnight::Blood::GOREFIENDS_GRASP; - constexpr uint32 BLOODDRINKER = WoW112Spells::DeathKnight::Blood::BLOODDRINKER; - constexpr uint32 TOMBSTONE = WoW112Spells::DeathKnight::Blood::TOMBSTONE; + constexpr uint32 RAISE_DEAD_BLOOD = WoW120Spells::DeathKnight::RAISE_DEAD; + constexpr uint32 ARMY_OF_THE_DEAD = WoW120Spells::DeathKnight::Unholy::ARMY_OF_THE_DEAD; + constexpr uint32 GOREFIENDS_GRASP = WoW120Spells::DeathKnight::Blood::GOREFIENDS_GRASP; + constexpr uint32 BLOODDRINKER = WoW120Spells::DeathKnight::Blood::BLOODDRINKER; + constexpr uint32 TOMBSTONE = WoW120Spells::DeathKnight::Blood::TOMBSTONE; // Utility - constexpr uint32 DEATH_GRIP = WoW112Spells::DeathKnight::DEATH_GRIP; - constexpr uint32 DEATHS_ADVANCE = WoW112Spells::DeathKnight::DEATHS_ADVANCE; - constexpr uint32 MIND_FREEZE = WoW112Spells::DeathKnight::MIND_FREEZE; - constexpr uint32 ASPHYXIATE = WoW112Spells::DeathKnight::ASPHYXIATE; - constexpr uint32 CONTROL_UNDEAD = WoW112Spells::DeathKnight::CONTROL_UNDEAD; - constexpr uint32 RAISE_ALLY = WoW112Spells::DeathKnight::RAISE_ALLY; + constexpr uint32 DEATH_GRIP = WoW120Spells::DeathKnight::DEATH_GRIP; + constexpr uint32 DEATHS_ADVANCE = WoW120Spells::DeathKnight::DEATHS_ADVANCE; + constexpr uint32 MIND_FREEZE = WoW120Spells::DeathKnight::MIND_FREEZE; + constexpr uint32 ASPHYXIATE = WoW120Spells::DeathKnight::ASPHYXIATE; + constexpr uint32 CONTROL_UNDEAD = WoW120Spells::DeathKnight::CONTROL_UNDEAD; + constexpr uint32 RAISE_ALLY = WoW120Spells::DeathKnight::RAISE_ALLY; // Procs and Buffs - constexpr uint32 BONE_SHIELD = WoW112Spells::DeathKnight::Blood::BONE_SHIELD; - constexpr uint32 CRIMSON_SCOURGE = WoW112Spells::DeathKnight::Blood::CRIMSON_SCOURGE; - constexpr uint32 HEMOSTASIS = WoW112Spells::DeathKnight::Blood::HEMOSTASIS; - constexpr uint32 OSSUARY = WoW112Spells::DeathKnight::Blood::OSSUARY; + constexpr uint32 BONE_SHIELD = WoW120Spells::DeathKnight::Blood::BONE_SHIELD; + constexpr uint32 CRIMSON_SCOURGE = WoW120Spells::DeathKnight::Blood::CRIMSON_SCOURGE; + constexpr uint32 HEMOSTASIS = WoW120Spells::DeathKnight::Blood::HEMOSTASIS; + constexpr uint32 OSSUARY = WoW120Spells::DeathKnight::Blood::OSSUARY; // Talents - constexpr uint32 BLOOD_TAP = WoW112Spells::DeathKnight::Blood::BLOOD_TAP; - constexpr uint32 RAPID_DECOMPOSITION = WoW112Spells::DeathKnight::Blood::RAPID_DECOMPOSITION; - constexpr uint32 HEARTBREAKER = WoW112Spells::DeathKnight::Blood::HEARTBREAKER; - constexpr uint32 FOUL_BULWARK = WoW112Spells::DeathKnight::Blood::FOUL_BULWARK; - constexpr uint32 RELISH_IN_BLOOD = WoW112Spells::DeathKnight::Blood::RELISH_IN_BLOOD; + constexpr uint32 BLOOD_TAP = WoW120Spells::DeathKnight::Blood::BLOOD_TAP; + constexpr uint32 RAPID_DECOMPOSITION = WoW120Spells::DeathKnight::Blood::RAPID_DECOMPOSITION; + constexpr uint32 HEARTBREAKER = WoW120Spells::DeathKnight::Blood::HEARTBREAKER; + constexpr uint32 FOUL_BULWARK = WoW120Spells::DeathKnight::Blood::FOUL_BULWARK; + constexpr uint32 RELISH_IN_BLOOD = WoW120Spells::DeathKnight::Blood::RELISH_IN_BLOOD; } using namespace BloodDeathKnightSpells; @@ -596,7 +596,7 @@ private: // - Proper BotAI retrieval from Player instance (via custom Player extension or bot registry) // - ActionPriorityQueue registration for Blood DK spells (Vampiric Blood, Death Strike, Marrowrend, Heart Strike, Blood Boil) // - BehaviorTree construction with emergency defensives, active mitigation, bone shield maintenance, and threat generation sequences - // Reference: WoW 11.2 Death Knight mechanics, Blood specialization active mitigation patterns + // Reference: WoW 12.0 Death Knight mechanics, Blood specialization active mitigation patterns // BotAI* ai = dynamic_cast(bot->GetPlayerAI()); // if (!ai) return; diff --git a/src/modules/Playerbot/AI/ClassAI/DeathKnights/DeathKnightAI.cpp b/src/modules/Playerbot/AI/ClassAI/DeathKnights/DeathKnightAI.cpp index 25228a92d..87f295e95 100644 --- a/src/modules/Playerbot/AI/ClassAI/DeathKnights/DeathKnightAI.cpp +++ b/src/modules/Playerbot/AI/ClassAI/DeathKnights/DeathKnightAI.cpp @@ -13,7 +13,7 @@ #include "BloodDeathKnight.h" #include "FrostDeathKnight.h" #include "UnholyDeathKnight.h" -#include "../SpellValidation_WoW112.h" +#include "../SpellValidation_WoW120.h" #include "../../Combat/CombatBehaviorIntegration.h" #include "Player.h" #include "Group.h" @@ -108,17 +108,17 @@ struct DeathKnightMetrics }; // ============================================================================ -// Death Knight Spell IDs - Using Central SpellValidation Registry (WoW 11.2) +// Death Knight Spell IDs - Using Central SpellValidation Registry (WoW 12.0) // ============================================================================ -// All spell IDs sourced from SpellValidation_WoW112.h to maintain single source of truth +// All spell IDs sourced from SpellValidation_WoW120.h to maintain single source of truth // Namespace aliases for cleaner code -namespace DKSpells = WoW112Spells::DeathKnight; -namespace DKBlood = WoW112Spells::DeathKnight::Blood; -namespace DKFrost = WoW112Spells::DeathKnight::Frost; -namespace DKUnholy = WoW112Spells::DeathKnight::Unholy; +namespace DKSpells = WoW120Spells::DeathKnight; +namespace DKBlood = WoW120Spells::DeathKnight::Blood; +namespace DKFrost = WoW120Spells::DeathKnight::Frost; +namespace DKUnholy = WoW120Spells::DeathKnight::Unholy; -// Core Abilities (All Specs) - WoW 11.2 +// Core Abilities (All Specs) - WoW 12.0 static constexpr uint32 DK_DEATH_STRIKE = DKSpells::DEATH_STRIKE; static constexpr uint32 DK_DEATH_AND_DECAY = DKSpells::DEATH_AND_DECAY; static constexpr uint32 DK_DEATH_GRIP = DKSpells::DEATH_GRIP; @@ -134,7 +134,7 @@ static constexpr uint32 DK_DARK_COMMAND = DKSpells::DARK_COMMAND; static constexpr uint32 DK_ASPHYXIATE = DKSpells::ASPHYXIATE; static constexpr uint32 DK_DEATHS_ADVANCE = DKSpells::DEATHS_ADVANCE; -// Blood Specialization - WoW 11.2 +// Blood Specialization - WoW 12.0 static constexpr uint32 DK_HEART_STRIKE = DKBlood::HEART_STRIKE; static constexpr uint32 DK_BLOOD_BOIL = DKBlood::BLOOD_BOIL; static constexpr uint32 DK_RUNE_TAP = DKBlood::RUNE_TAP; @@ -145,7 +145,7 @@ static constexpr uint32 DK_BLOOD_PLAGUE = DKBlood::BLOOD_PLAGUE; static constexpr uint32 DK_MARROWREND = DKBlood::MARROWREND; static constexpr uint32 DK_DEATHS_CARESS = DKBlood::DEATHS_CARESS; -// Frost Specialization - WoW 11.2 +// Frost Specialization - WoW 12.0 static constexpr uint32 DK_FROST_STRIKE = DKFrost::FROST_STRIKE; static constexpr uint32 DK_HOWLING_BLAST = DKFrost::HOWLING_BLAST; static constexpr uint32 DK_OBLITERATE = DKFrost::OBLITERATE; @@ -155,7 +155,7 @@ static constexpr uint32 DK_FROST_FEVER = DKFrost::FROST_FEVER; static constexpr uint32 DK_HORN_OF_WINTER = DKFrost::HORN_OF_WINTER; static constexpr uint32 DK_REMORSELESS_WINTER = DKFrost::REMORSELESS_WINTER; -// Unholy Specialization - WoW 11.2 +// Unholy Specialization - WoW 12.0 static constexpr uint32 DK_SCOURGE_STRIKE = DKUnholy::SCOURGE_STRIKE; static constexpr uint32 DK_EPIDEMIC = DKUnholy::EPIDEMIC; static constexpr uint32 DK_ARMY_OF_THE_DEAD = DKUnholy::ARMY_OF_THE_DEAD; @@ -798,7 +798,7 @@ void DeathKnightAI::UpdateBuffs() uint32 currentTime = GameTime::GetGameTimeMS(); - // NOTE: Presences removed in WoW 11.2 - specializations are automatic + // NOTE: Presences removed in WoW 12.0 - specializations are automatic // Maintain Horn of Winter if (currentTime - _lastHorn > 30000 && !HasAura(DK_HORN_OF_WINTER)) @@ -1788,7 +1788,7 @@ void DeathKnightAI::ExecuteSpecializationRotation(Unit* target) void DeathKnightAI::UpdatePresenceIfNeeded() { - // NOTE: Presences removed in WoW 11.2 - specializations are automatic + // NOTE: Presences removed in WoW 12.0 - specializations are automatic // This function is kept for API compatibility but does nothing } diff --git a/src/modules/Playerbot/AI/ClassAI/DeathKnights/FrostDeathKnight.h b/src/modules/Playerbot/AI/ClassAI/DeathKnights/FrostDeathKnight.h index ceb00e816..f77655e65 100644 --- a/src/modules/Playerbot/AI/ClassAI/DeathKnights/FrostDeathKnight.h +++ b/src/modules/Playerbot/AI/ClassAI/DeathKnights/FrostDeathKnight.h @@ -15,7 +15,7 @@ #include "../Common/RotationHelpers.h" #include "../CombatSpecializationTemplates.h" #include "../ResourceTypes.h" -#include "../SpellValidation_WoW112.h" // Central spell registry +#include "../SpellValidation_WoW120.h" // Central spell registry #include "Player.h" #include "SpellMgr.h" #include "SpellAuraEffects.h" @@ -28,54 +28,54 @@ namespace Playerbot { // ============================================================================ -// FROST DEATH KNIGHT SPELL ALIASES (WoW 11.2 - The War Within) +// FROST DEATH KNIGHT SPELL ALIASES (WoW 12.0 - The War Within) // Consolidated spell IDs from central registry - NO duplicates // ============================================================================ namespace FrostDeathKnightSpells { // Rune Spenders - constexpr uint32 OBLITERATE = WoW112Spells::DeathKnight::Frost::OBLITERATE; - constexpr uint32 HOWLING_BLAST = WoW112Spells::DeathKnight::Frost::HOWLING_BLAST; - constexpr uint32 REMORSELESS_WINTER = WoW112Spells::DeathKnight::Frost::REMORSELESS_WINTER; - constexpr uint32 GLACIAL_ADVANCE = WoW112Spells::DeathKnight::Frost::GLACIAL_ADVANCE; - constexpr uint32 FROSTSCYTHE = WoW112Spells::DeathKnight::Frost::FROSTSCYTHE; + constexpr uint32 OBLITERATE = WoW120Spells::DeathKnight::Frost::OBLITERATE; + constexpr uint32 HOWLING_BLAST = WoW120Spells::DeathKnight::Frost::HOWLING_BLAST; + constexpr uint32 REMORSELESS_WINTER = WoW120Spells::DeathKnight::Frost::REMORSELESS_WINTER; + constexpr uint32 GLACIAL_ADVANCE = WoW120Spells::DeathKnight::Frost::GLACIAL_ADVANCE; + constexpr uint32 FROSTSCYTHE = WoW120Spells::DeathKnight::Frost::FROSTSCYTHE; // Runic Power Spenders - constexpr uint32 FROST_STRIKE = WoW112Spells::DeathKnight::Frost::FROST_STRIKE; - constexpr uint32 HORN_OF_WINTER = WoW112Spells::DeathKnight::Frost::HORN_OF_WINTER; + constexpr uint32 FROST_STRIKE = WoW120Spells::DeathKnight::Frost::FROST_STRIKE; + constexpr uint32 HORN_OF_WINTER = WoW120Spells::DeathKnight::Frost::HORN_OF_WINTER; // Cooldowns - constexpr uint32 PILLAR_OF_FROST = WoW112Spells::DeathKnight::Frost::PILLAR_OF_FROST; - constexpr uint32 EMPOWER_RUNE_WEAPON = WoW112Spells::DeathKnight::Frost::EMPOWER_RUNE_WEAPON; - constexpr uint32 BREATH_OF_SINDRAGOSA = WoW112Spells::DeathKnight::Frost::BREATH_OF_SINDRAGOSA; - constexpr uint32 FROSTWYRMS_FURY = WoW112Spells::DeathKnight::Frost::FROSTWYRMS_FURY; + constexpr uint32 PILLAR_OF_FROST = WoW120Spells::DeathKnight::Frost::PILLAR_OF_FROST; + constexpr uint32 EMPOWER_RUNE_WEAPON = WoW120Spells::DeathKnight::Frost::EMPOWER_RUNE_WEAPON; + constexpr uint32 BREATH_OF_SINDRAGOSA = WoW120Spells::DeathKnight::Frost::BREATH_OF_SINDRAGOSA; + constexpr uint32 FROSTWYRMS_FURY = WoW120Spells::DeathKnight::Frost::FROSTWYRMS_FURY; // Utility - constexpr uint32 DEATH_GRIP_FROST = WoW112Spells::DeathKnight::DEATH_GRIP; - constexpr uint32 MIND_FREEZE_FROST = WoW112Spells::DeathKnight::MIND_FREEZE; - constexpr uint32 CHAINS_OF_ICE = WoW112Spells::DeathKnight::CHAINS_OF_ICE; - constexpr uint32 DARK_COMMAND_FROST = WoW112Spells::DeathKnight::DARK_COMMAND; - constexpr uint32 ANTI_MAGIC_SHELL_FROST = WoW112Spells::DeathKnight::ANTI_MAGIC_SHELL; - constexpr uint32 ICEBOUND_FORTITUDE_FROST = WoW112Spells::DeathKnight::ICEBOUND_FORTITUDE; - constexpr uint32 DEATHS_ADVANCE_FROST = WoW112Spells::DeathKnight::DEATHS_ADVANCE; + constexpr uint32 DEATH_GRIP_FROST = WoW120Spells::DeathKnight::DEATH_GRIP; + constexpr uint32 MIND_FREEZE_FROST = WoW120Spells::DeathKnight::MIND_FREEZE; + constexpr uint32 CHAINS_OF_ICE = WoW120Spells::DeathKnight::CHAINS_OF_ICE; + constexpr uint32 DARK_COMMAND_FROST = WoW120Spells::DeathKnight::DARK_COMMAND; + constexpr uint32 ANTI_MAGIC_SHELL_FROST = WoW120Spells::DeathKnight::ANTI_MAGIC_SHELL; + constexpr uint32 ICEBOUND_FORTITUDE_FROST = WoW120Spells::DeathKnight::ICEBOUND_FORTITUDE; + constexpr uint32 DEATHS_ADVANCE_FROST = WoW120Spells::DeathKnight::DEATHS_ADVANCE; // Procs and Buffs - constexpr uint32 KILLING_MACHINE = WoW112Spells::DeathKnight::Frost::KILLING_MACHINE; - constexpr uint32 RIME = WoW112Spells::DeathKnight::Frost::RIME; - constexpr uint32 RAZORICE = WoW112Spells::DeathKnight::Frost::RAZORICE_PROC; - constexpr uint32 FROZEN_PULSE = WoW112Spells::DeathKnight::Frost::FROZEN_PULSE; + constexpr uint32 KILLING_MACHINE = WoW120Spells::DeathKnight::Frost::KILLING_MACHINE; + constexpr uint32 RIME = WoW120Spells::DeathKnight::Frost::RIME; + constexpr uint32 RAZORICE = WoW120Spells::DeathKnight::Frost::RAZORICE_PROC; + constexpr uint32 FROZEN_PULSE = WoW120Spells::DeathKnight::Frost::FROZEN_PULSE; // Diseases - constexpr uint32 FROST_FEVER_DK = WoW112Spells::DeathKnight::Frost::FROST_FEVER; + constexpr uint32 FROST_FEVER_DK = WoW120Spells::DeathKnight::Frost::FROST_FEVER; // Talents - constexpr uint32 OBLITERATION = WoW112Spells::DeathKnight::Frost::OBLITERATION; + constexpr uint32 OBLITERATION = WoW120Spells::DeathKnight::Frost::OBLITERATION; constexpr uint32 BREATH_OF_SINDRAGOSA_TALENT = BREATH_OF_SINDRAGOSA; - constexpr uint32 GATHERING_STORM = WoW112Spells::DeathKnight::Frost::GATHERING_STORM; - constexpr uint32 ICECAP = WoW112Spells::DeathKnight::Frost::ICECAP; - constexpr uint32 INEXORABLE_ASSAULT = WoW112Spells::DeathKnight::Frost::INEXORABLE_ASSAULT; - constexpr uint32 COLD_HEART = WoW112Spells::DeathKnight::Frost::COLD_HEART; + constexpr uint32 GATHERING_STORM = WoW120Spells::DeathKnight::Frost::GATHERING_STORM; + constexpr uint32 ICECAP = WoW120Spells::DeathKnight::Frost::ICECAP; + constexpr uint32 INEXORABLE_ASSAULT = WoW120Spells::DeathKnight::Frost::INEXORABLE_ASSAULT; + constexpr uint32 COLD_HEART = WoW120Spells::DeathKnight::Frost::COLD_HEART; // Aliases with FROST_ prefix for RegisterSpell compatibility constexpr uint32 FROST_ICEBOUND_FORTITUDE = ICEBOUND_FORTITUDE_FROST; @@ -630,7 +630,7 @@ private: // - Proper BotAI retrieval from Player instance (via custom Player extension or bot registry) // - ActionPriorityQueue registration for Frost DK spells (Icebound Fortitude, Pillar of Frost, Empower Rune Weapon, Obliterate, Howling Blast, Frost Strike, Breath of Sindragosa, Remorseless Winter, Horn of Winter) // - BehaviorTree construction with burst cooldowns, priority procs (Killing Machine/Rime), runic power/rune spenders - // Reference: WoW 11.2 Death Knight mechanics, Frost specialization burst windows and proc management + // Reference: WoW 12.0 Death Knight mechanics, Frost specialization burst windows and proc management // Commenting out for now until BotAI integration is implemented /* BotAI* ai = this->GetBot()->GetBotAI(); diff --git a/src/modules/Playerbot/AI/ClassAI/DeathKnights/UnholyDeathKnight.h b/src/modules/Playerbot/AI/ClassAI/DeathKnights/UnholyDeathKnight.h index ae5aab1cd..56943d948 100644 --- a/src/modules/Playerbot/AI/ClassAI/DeathKnights/UnholyDeathKnight.h +++ b/src/modules/Playerbot/AI/ClassAI/DeathKnights/UnholyDeathKnight.h @@ -15,7 +15,7 @@ #include "../Common/RotationHelpers.h" #include "../CombatSpecializationTemplates.h" #include "../ResourceTypes.h" -#include "../SpellValidation_WoW112.h" // Central spell registry +#include "../SpellValidation_WoW120.h" // Central spell registry #include "Player.h" #include "SpellMgr.h" #include "SpellAuraEffects.h" @@ -29,62 +29,62 @@ namespace Playerbot { // ============================================================================ -// UNHOLY DEATH KNIGHT SPELL ALIASES (WoW 11.2 - The War Within) +// UNHOLY DEATH KNIGHT SPELL ALIASES (WoW 12.0 - The War Within) // Consolidated spell IDs from central registry - NO duplicates // ============================================================================ namespace UnholyDeathKnightSpells { // Rune Spenders - constexpr uint32 FESTERING_STRIKE = WoW112Spells::DeathKnight::Unholy::FESTERING_STRIKE; - constexpr uint32 SCOURGE_STRIKE = WoW112Spells::DeathKnight::Unholy::SCOURGE_STRIKE; - constexpr uint32 CLAWING_SHADOWS = WoW112Spells::DeathKnight::Unholy::CLAWING_SHADOWS; - constexpr uint32 EPIDEMIC = WoW112Spells::DeathKnight::Unholy::EPIDEMIC; - constexpr uint32 DEFILE = WoW112Spells::DeathKnight::Unholy::DEFILE; + constexpr uint32 FESTERING_STRIKE = WoW120Spells::DeathKnight::Unholy::FESTERING_STRIKE; + constexpr uint32 SCOURGE_STRIKE = WoW120Spells::DeathKnight::Unholy::SCOURGE_STRIKE; + constexpr uint32 CLAWING_SHADOWS = WoW120Spells::DeathKnight::Unholy::CLAWING_SHADOWS; + constexpr uint32 EPIDEMIC = WoW120Spells::DeathKnight::Unholy::EPIDEMIC; + constexpr uint32 DEFILE = WoW120Spells::DeathKnight::Unholy::DEFILE; // Runic Power Spenders - constexpr uint32 DEATH_COIL = WoW112Spells::DeathKnight::DEATH_COIL; - constexpr uint32 DARK_TRANSFORMATION = WoW112Spells::DeathKnight::Unholy::DARK_TRANSFORMATION; + constexpr uint32 DEATH_COIL = WoW120Spells::DeathKnight::DEATH_COIL; + constexpr uint32 DARK_TRANSFORMATION = WoW120Spells::DeathKnight::Unholy::DARK_TRANSFORMATION; // Diseases - constexpr uint32 VIRULENT_PLAGUE = WoW112Spells::DeathKnight::Unholy::VIRULENT_PLAGUE; - constexpr uint32 OUTBREAK = WoW112Spells::DeathKnight::Unholy::OUTBREAK; + constexpr uint32 VIRULENT_PLAGUE = WoW120Spells::DeathKnight::Unholy::VIRULENT_PLAGUE; + constexpr uint32 OUTBREAK = WoW120Spells::DeathKnight::Unholy::OUTBREAK; // Pet Management - constexpr uint32 RAISE_DEAD_UNHOLY = WoW112Spells::DeathKnight::RAISE_DEAD; - constexpr uint32 SUMMON_GARGOYLE = WoW112Spells::DeathKnight::Unholy::SUMMON_GARGOYLE; - constexpr uint32 ARMY_OF_THE_DEAD_UNHOLY = WoW112Spells::DeathKnight::Unholy::ARMY_OF_THE_DEAD; - constexpr uint32 APOCALYPSE = WoW112Spells::DeathKnight::Unholy::APOCALYPSE; - constexpr uint32 RAISE_ABOMINATION = WoW112Spells::DeathKnight::Unholy::RAISE_ABOMINATION; + constexpr uint32 RAISE_DEAD_UNHOLY = WoW120Spells::DeathKnight::RAISE_DEAD; + constexpr uint32 SUMMON_GARGOYLE = WoW120Spells::DeathKnight::Unholy::SUMMON_GARGOYLE; + constexpr uint32 ARMY_OF_THE_DEAD_UNHOLY = WoW120Spells::DeathKnight::Unholy::ARMY_OF_THE_DEAD; + constexpr uint32 APOCALYPSE = WoW120Spells::DeathKnight::Unholy::APOCALYPSE; + constexpr uint32 RAISE_ABOMINATION = WoW120Spells::DeathKnight::Unholy::RAISE_ABOMINATION; // Major Cooldowns - constexpr uint32 UNHOLY_ASSAULT = WoW112Spells::DeathKnight::Unholy::UNHOLY_ASSAULT; - constexpr uint32 UNHOLY_BLIGHT = WoW112Spells::DeathKnight::Unholy::UNHOLY_BLIGHT; - constexpr uint32 SOUL_REAPER = WoW112Spells::DeathKnight::Unholy::SOUL_REAPER; + constexpr uint32 UNHOLY_ASSAULT = WoW120Spells::DeathKnight::Unholy::UNHOLY_ASSAULT; + constexpr uint32 UNHOLY_BLIGHT = WoW120Spells::DeathKnight::Unholy::UNHOLY_BLIGHT; + constexpr uint32 SOUL_REAPER = WoW120Spells::DeathKnight::Unholy::SOUL_REAPER; // Utility - constexpr uint32 DEATH_GRIP_UNHOLY = WoW112Spells::DeathKnight::DEATH_GRIP; - constexpr uint32 MIND_FREEZE_UNHOLY = WoW112Spells::DeathKnight::MIND_FREEZE; - constexpr uint32 CHAINS_OF_ICE_UNHOLY = WoW112Spells::DeathKnight::CHAINS_OF_ICE; - constexpr uint32 DARK_COMMAND_UNHOLY = WoW112Spells::DeathKnight::DARK_COMMAND; - constexpr uint32 ANTI_MAGIC_SHELL_UNHOLY = WoW112Spells::DeathKnight::ANTI_MAGIC_SHELL; - constexpr uint32 ICEBOUND_FORTITUDE_UNHOLY = WoW112Spells::DeathKnight::ICEBOUND_FORTITUDE; - constexpr uint32 DEATHS_ADVANCE_UNHOLY = WoW112Spells::DeathKnight::DEATHS_ADVANCE; - constexpr uint32 CONTROL_UNDEAD_UNHOLY = WoW112Spells::DeathKnight::CONTROL_UNDEAD; - constexpr uint32 RAISE_ALLY_UNHOLY = WoW112Spells::DeathKnight::RAISE_ALLY; + constexpr uint32 DEATH_GRIP_UNHOLY = WoW120Spells::DeathKnight::DEATH_GRIP; + constexpr uint32 MIND_FREEZE_UNHOLY = WoW120Spells::DeathKnight::MIND_FREEZE; + constexpr uint32 CHAINS_OF_ICE_UNHOLY = WoW120Spells::DeathKnight::CHAINS_OF_ICE; + constexpr uint32 DARK_COMMAND_UNHOLY = WoW120Spells::DeathKnight::DARK_COMMAND; + constexpr uint32 ANTI_MAGIC_SHELL_UNHOLY = WoW120Spells::DeathKnight::ANTI_MAGIC_SHELL; + constexpr uint32 ICEBOUND_FORTITUDE_UNHOLY = WoW120Spells::DeathKnight::ICEBOUND_FORTITUDE; + constexpr uint32 DEATHS_ADVANCE_UNHOLY = WoW120Spells::DeathKnight::DEATHS_ADVANCE; + constexpr uint32 CONTROL_UNDEAD_UNHOLY = WoW120Spells::DeathKnight::CONTROL_UNDEAD; + constexpr uint32 RAISE_ALLY_UNHOLY = WoW120Spells::DeathKnight::RAISE_ALLY; // Procs and Buffs - constexpr uint32 SUDDEN_DOOM = WoW112Spells::DeathKnight::Unholy::SUDDEN_DOOM; - constexpr uint32 RUNIC_CORRUPTION = WoW112Spells::DeathKnight::Unholy::RUNIC_CORRUPTION; - constexpr uint32 FESTERING_WOUND = WoW112Spells::DeathKnight::Unholy::FESTERING_WOUND; - constexpr uint32 UNHOLY_STRENGTH = WoW112Spells::DeathKnight::Unholy::UNHOLY_STRENGTH; + constexpr uint32 SUDDEN_DOOM = WoW120Spells::DeathKnight::Unholy::SUDDEN_DOOM; + constexpr uint32 RUNIC_CORRUPTION = WoW120Spells::DeathKnight::Unholy::RUNIC_CORRUPTION; + constexpr uint32 FESTERING_WOUND = WoW120Spells::DeathKnight::Unholy::FESTERING_WOUND; + constexpr uint32 UNHOLY_STRENGTH = WoW120Spells::DeathKnight::Unholy::UNHOLY_STRENGTH; // Talents - constexpr uint32 BURSTING_SORES = WoW112Spells::DeathKnight::Unholy::BURSTING_SORES; - constexpr uint32 INFECTED_CLAWS = WoW112Spells::DeathKnight::Unholy::INFECTED_CLAWS; - constexpr uint32 ALL_WILL_SERVE = WoW112Spells::DeathKnight::Unholy::ALL_WILL_SERVE; - constexpr uint32 UNHOLY_PACT = WoW112Spells::DeathKnight::Unholy::UNHOLY_PACT; - constexpr uint32 SUPERSTRAIN = WoW112Spells::DeathKnight::Unholy::SUPERSTRAIN; + constexpr uint32 BURSTING_SORES = WoW120Spells::DeathKnight::Unholy::BURSTING_SORES; + constexpr uint32 INFECTED_CLAWS = WoW120Spells::DeathKnight::Unholy::INFECTED_CLAWS; + constexpr uint32 ALL_WILL_SERVE = WoW120Spells::DeathKnight::Unholy::ALL_WILL_SERVE; + constexpr uint32 UNHOLY_PACT = WoW120Spells::DeathKnight::Unholy::UNHOLY_PACT; + constexpr uint32 SUPERSTRAIN = WoW120Spells::DeathKnight::Unholy::SUPERSTRAIN; // Aliases with UNHOLY_ prefix for RegisterSpell compatibility constexpr uint32 UNHOLY_ANTIMAGIC_SHELL = ANTI_MAGIC_SHELL_UNHOLY; @@ -648,7 +648,7 @@ private: // - Proper BotAI retrieval from Player instance (via custom Player extension or bot registry) // - ActionPriorityQueue registration for Unholy DK spells (Anti-Magic Shell, Army of the Dead, Apocalypse, Festering Strike, Scourge Strike, Death Coil) // - BehaviorTree construction with burst cooldowns, Festering Wound management, wound application/bursting, and runic power dump - // Reference: WoW 11.2 Death Knight mechanics, Unholy specialization pet management and Festering Wound stacking patterns + // Reference: WoW 12.0 Death Knight mechanics, Unholy specialization pet management and Festering Wound stacking patterns // Commenting out for now until BotAI integration is implemented /* BotAI* ai = this->GetBot()->GetBotAI(); diff --git a/src/modules/Playerbot/AI/ClassAI/DemonHunters/DemonHunterAI.h b/src/modules/Playerbot/AI/ClassAI/DemonHunters/DemonHunterAI.h index 8f8a4aebb..085545ca9 100644 --- a/src/modules/Playerbot/AI/ClassAI/DemonHunters/DemonHunterAI.h +++ b/src/modules/Playerbot/AI/ClassAI/DemonHunters/DemonHunterAI.h @@ -10,7 +10,7 @@ #pragma once #include "../ClassAI.h" -#include "../SpellValidation_WoW112.h" +#include "../SpellValidation_WoW120.h" #include #include #include @@ -26,54 +26,54 @@ class VengeanceDemonHunterRefactored; using HavocDemonHunter = HavocDemonHunterRefactored; using VengeanceDemonHunter = VengeanceDemonHunterRefactored; -// DemonHunter Spell IDs - Using central registry (WoW 11.2) +// DemonHunter Spell IDs - Using central registry (WoW 12.0) enum DemonHunterSpells { // Havoc abilities - CHAOS_STRIKE = WoW112Spells::DemonHunter::Common::CHAOS_STRIKE, - BLADE_DANCE = WoW112Spells::DemonHunter::Common::BLADE_DANCE, - DEATH_SWEEP = WoW112Spells::DemonHunter::Common::DEATH_SWEEP, - ANNIHILATION = WoW112Spells::DemonHunter::Common::ANNIHILATION, - METAMORPHOSIS_HAVOC = WoW112Spells::DemonHunter::Common::METAMORPHOSIS_HAVOC, - EYE_BEAM = WoW112Spells::DemonHunter::Common::EYE_BEAM, - DEMONS_BITE = WoW112Spells::DemonHunter::Common::DEMONS_BITE, - FEL_BARRAGE = WoW112Spells::DemonHunter::Common::FEL_BARRAGE, + CHAOS_STRIKE = WoW120Spells::DemonHunter::Common::CHAOS_STRIKE, + BLADE_DANCE = WoW120Spells::DemonHunter::Common::BLADE_DANCE, + DEATH_SWEEP = WoW120Spells::DemonHunter::Common::DEATH_SWEEP, + ANNIHILATION = WoW120Spells::DemonHunter::Common::ANNIHILATION, + METAMORPHOSIS_HAVOC = WoW120Spells::DemonHunter::Common::METAMORPHOSIS_HAVOC, + EYE_BEAM = WoW120Spells::DemonHunter::Common::EYE_BEAM, + DEMONS_BITE = WoW120Spells::DemonHunter::Common::DEMONS_BITE, + FEL_BARRAGE = WoW120Spells::DemonHunter::Common::FEL_BARRAGE, // Vengeance abilities - SOUL_CLEAVE = WoW112Spells::DemonHunter::Common::SOUL_CLEAVE, - SPIRIT_BOMB = WoW112Spells::DemonHunter::Common::SPIRIT_BOMB, - METAMORPHOSIS_VENGEANCE = WoW112Spells::DemonHunter::Common::METAMORPHOSIS_VENGEANCE, - SHEAR = WoW112Spells::DemonHunter::Common::SHEAR, - SOUL_BARRIER = WoW112Spells::DemonHunter::Common::SOUL_BARRIER, + SOUL_CLEAVE = WoW120Spells::DemonHunter::Common::SOUL_CLEAVE, + SPIRIT_BOMB = WoW120Spells::DemonHunter::Common::SPIRIT_BOMB, + METAMORPHOSIS_VENGEANCE = WoW120Spells::DemonHunter::Common::METAMORPHOSIS_VENGEANCE, + SHEAR = WoW120Spells::DemonHunter::Common::SHEAR, + SOUL_BARRIER = WoW120Spells::DemonHunter::Common::SOUL_BARRIER, // Defensive abilities - BLUR = WoW112Spells::DemonHunter::Common::BLUR, - DARKNESS = WoW112Spells::DemonHunter::Common::DARKNESS, - NETHERWALK = WoW112Spells::DemonHunter::Common::NETHERWALK, + BLUR = WoW120Spells::DemonHunter::Common::BLUR, + DARKNESS = WoW120Spells::DemonHunter::Common::DARKNESS, + NETHERWALK = WoW120Spells::DemonHunter::Common::NETHERWALK, // Shared abilities - DEMON_SPIKES = WoW112Spells::DemonHunter::Common::DEMON_SPIKES, - IMMOLATION_AURA = WoW112Spells::DemonHunter::Common::IMMOLATION_AURA, - FIERY_BRAND = WoW112Spells::DemonHunter::Common::FIERY_BRAND, - FEL_RUSH = WoW112Spells::DemonHunter::Common::FEL_RUSH, - VENGEFUL_RETREAT = WoW112Spells::DemonHunter::Common::VENGEFUL_RETREAT, - CONSUME_MAGIC = WoW112Spells::DemonHunter::Common::CONSUME_MAGIC, - SIGIL_OF_FLAME = WoW112Spells::DemonHunter::Common::SIGIL_OF_FLAME, - SIGIL_OF_SILENCE = WoW112Spells::DemonHunter::Common::SIGIL_OF_SILENCE, - SIGIL_OF_MISERY = WoW112Spells::DemonHunter::Common::SIGIL_OF_MISERY, - CHAOS_NOVA = WoW112Spells::DemonHunter::Common::CHAOS_NOVA, + DEMON_SPIKES = WoW120Spells::DemonHunter::Common::DEMON_SPIKES, + IMMOLATION_AURA = WoW120Spells::DemonHunter::Common::IMMOLATION_AURA, + FIERY_BRAND = WoW120Spells::DemonHunter::Common::FIERY_BRAND, + FEL_RUSH = WoW120Spells::DemonHunter::Common::FEL_RUSH, + VENGEFUL_RETREAT = WoW120Spells::DemonHunter::Common::VENGEFUL_RETREAT, + CONSUME_MAGIC = WoW120Spells::DemonHunter::Common::CONSUME_MAGIC, + SIGIL_OF_FLAME = WoW120Spells::DemonHunter::Common::SIGIL_OF_FLAME, + SIGIL_OF_SILENCE = WoW120Spells::DemonHunter::Common::SIGIL_OF_SILENCE, + SIGIL_OF_MISERY = WoW120Spells::DemonHunter::Common::SIGIL_OF_MISERY, + CHAOS_NOVA = WoW120Spells::DemonHunter::Common::CHAOS_NOVA, // Utility/Interrupts - DISRUPT = WoW112Spells::DemonHunter::Common::DISRUPT, - IMPRISON = WoW112Spells::DemonHunter::Common::IMPRISON, + DISRUPT = WoW120Spells::DemonHunter::Common::DISRUPT, + IMPRISON = WoW120Spells::DemonHunter::Common::IMPRISON, // Offensive cooldowns - NEMESIS = WoW112Spells::DemonHunter::Common::NEMESIS, + NEMESIS = WoW120Spells::DemonHunter::Common::NEMESIS, // Talent abilities - MOMENTUM_TALENT = WoW112Spells::DemonHunter::Common::MOMENTUM_TALENT, - DEMONIC_TALENT = WoW112Spells::DemonHunter::Common::DEMONIC_TALENT, - BLIND_FURY_TALENT = WoW112Spells::DemonHunter::Common::BLIND_FURY_TALENT + MOMENTUM_TALENT = WoW120Spells::DemonHunter::Common::MOMENTUM_TALENT, + DEMONIC_TALENT = WoW120Spells::DemonHunter::Common::DEMONIC_TALENT, + BLIND_FURY_TALENT = WoW120Spells::DemonHunter::Common::BLIND_FURY_TALENT }; class TC_GAME_API DemonHunterAI : public ClassAI diff --git a/src/modules/Playerbot/AI/ClassAI/DemonHunters/HavocDemonHunter.h b/src/modules/Playerbot/AI/ClassAI/DemonHunters/HavocDemonHunter.h index ad31fa822..b08a1f482 100644 --- a/src/modules/Playerbot/AI/ClassAI/DemonHunters/HavocDemonHunter.h +++ b/src/modules/Playerbot/AI/ClassAI/DemonHunters/HavocDemonHunter.h @@ -17,7 +17,7 @@ #include "../Common/CooldownManager.h" #include "../Common/RotationHelpers.h" #include "../CombatSpecializationTemplates.h" -#include "../SpellValidation_WoW112.h" +#include "../SpellValidation_WoW120.h" #include "ObjectGuid.h" #include "../../../Spatial/SpatialGridManager.h" #include "ObjectAccessor.h" @@ -49,55 +49,55 @@ using bot::ai::SpellCategory; // Note: bot::ai::Action() conflicts with Playerbot::Action, use bot::ai::Action() explicitly // ============================================================================ -// HAVOC DEMON HUNTER SPELL IDs (WoW 11.2 - The War Within) -// Using centralized spell registry from SpellValidation_WoW112.h +// HAVOC DEMON HUNTER SPELL IDs (WoW 12.0 - The War Within) +// Using centralized spell registry from SpellValidation_WoW120.h // Note: Uses enum to maintain compatibility with DemonHunterAI.h and existing code // ============================================================================ enum HavocSpells { - // Core Abilities - Using central registry: WoW112Spells::DemonHunter::Havoc - SPELL_DEMONS_BITE = WoW112Spells::DemonHunter::Havoc::DEMONS_BITE, - SPELL_CHAOS_STRIKE = WoW112Spells::DemonHunter::Havoc::CHAOS_STRIKE, - SPELL_ANNIHILATION = WoW112Spells::DemonHunter::Havoc::ANNIHILATION, - SPELL_BLADE_DANCE = WoW112Spells::DemonHunter::Havoc::BLADE_DANCE, - SPELL_DEATH_SWEEP = WoW112Spells::DemonHunter::Havoc::DEATH_SWEEP, - SPELL_EYE_BEAM = WoW112Spells::DemonHunter::Havoc::EYE_BEAM, - SPELL_IMMOLATION_AURA = WoW112Spells::DemonHunter::Havoc::IMMOLATION_AURA, - SPELL_FEL_RUSH = WoW112Spells::DemonHunter::FEL_RUSH, - SPELL_VENGEFUL_RETREAT = WoW112Spells::DemonHunter::VENGEFUL_RETREAT, + // Core Abilities - Using central registry: WoW120Spells::DemonHunter::Havoc + SPELL_DEMONS_BITE = WoW120Spells::DemonHunter::Havoc::DEMONS_BITE, + SPELL_CHAOS_STRIKE = WoW120Spells::DemonHunter::Havoc::CHAOS_STRIKE, + SPELL_ANNIHILATION = WoW120Spells::DemonHunter::Havoc::ANNIHILATION, + SPELL_BLADE_DANCE = WoW120Spells::DemonHunter::Havoc::BLADE_DANCE, + SPELL_DEATH_SWEEP = WoW120Spells::DemonHunter::Havoc::DEATH_SWEEP, + SPELL_EYE_BEAM = WoW120Spells::DemonHunter::Havoc::EYE_BEAM, + SPELL_IMMOLATION_AURA = WoW120Spells::DemonHunter::Havoc::IMMOLATION_AURA, + SPELL_FEL_RUSH = WoW120Spells::DemonHunter::FEL_RUSH, + SPELL_VENGEFUL_RETREAT = WoW120Spells::DemonHunter::VENGEFUL_RETREAT, - // Major Cooldowns - Using central registry: WoW112Spells::DemonHunter - SPELL_METAMORPHOSIS = WoW112Spells::DemonHunter::METAMORPHOSIS_HAVOC, - SPELL_FEL_BARRAGE = WoW112Spells::DemonHunter::Havoc::FEL_BARRAGE, - SPELL_CHAOS_NOVA = WoW112Spells::DemonHunter::CHAOS_NOVA, - SPELL_DARKNESS = WoW112Spells::DemonHunter::DARKNESS, - SPELL_BLUR = WoW112Spells::DemonHunter::BLUR, + // Major Cooldowns - Using central registry: WoW120Spells::DemonHunter + SPELL_METAMORPHOSIS = WoW120Spells::DemonHunter::METAMORPHOSIS_HAVOC, + SPELL_FEL_BARRAGE = WoW120Spells::DemonHunter::Havoc::FEL_BARRAGE, + SPELL_CHAOS_NOVA = WoW120Spells::DemonHunter::CHAOS_NOVA, + SPELL_DARKNESS = WoW120Spells::DemonHunter::DARKNESS, + SPELL_BLUR = WoW120Spells::DemonHunter::BLUR, - // Talents/Passives - Using central registry: WoW112Spells::DemonHunter::Havoc - SPELL_DEMONIC = WoW112Spells::DemonHunter::Havoc::DEMONIC, - SPELL_MOMENTUM = WoW112Spells::DemonHunter::Havoc::MOMENTUM, - SPELL_BLIND_FURY = WoW112Spells::DemonHunter::Havoc::BLIND_FURY, - SPELL_FIRST_BLOOD = WoW112Spells::DemonHunter::Havoc::FIRST_BLOOD, - SPELL_TRAIL_OF_RUIN = WoW112Spells::DemonHunter::Havoc::TRAIL_OF_RUIN, - SPELL_CHAOS_CLEAVE = WoW112Spells::DemonHunter::Havoc::CHAOS_CLEAVE, - SPELL_CYCLE_OF_HATRED = WoW112Spells::DemonHunter::Havoc::CYCLE_OF_HATRED, + // Talents/Passives - Using central registry: WoW120Spells::DemonHunter::Havoc + SPELL_DEMONIC = WoW120Spells::DemonHunter::Havoc::DEMONIC, + SPELL_MOMENTUM = WoW120Spells::DemonHunter::Havoc::MOMENTUM, + SPELL_BLIND_FURY = WoW120Spells::DemonHunter::Havoc::BLIND_FURY, + SPELL_FIRST_BLOOD = WoW120Spells::DemonHunter::Havoc::FIRST_BLOOD, + SPELL_TRAIL_OF_RUIN = WoW120Spells::DemonHunter::Havoc::TRAIL_OF_RUIN, + SPELL_CHAOS_CLEAVE = WoW120Spells::DemonHunter::Havoc::CHAOS_CLEAVE, + SPELL_CYCLE_OF_HATRED = WoW120Spells::DemonHunter::Havoc::CYCLE_OF_HATRED, - // Utility - Using central registry: WoW112Spells::DemonHunter - SPELL_DISRUPT = WoW112Spells::DemonHunter::DISRUPT, - SPELL_CONSUME_MAGIC = WoW112Spells::DemonHunter::CONSUME_MAGIC, - SPELL_IMPRISON = WoW112Spells::DemonHunter::IMPRISON, - SPELL_SPECTRAL_SIGHT = WoW112Spells::DemonHunter::SPECTRAL_SIGHT, - SPELL_TORMENT = WoW112Spells::DemonHunter::Havoc::TORMENT, + // Utility - Using central registry: WoW120Spells::DemonHunter + SPELL_DISRUPT = WoW120Spells::DemonHunter::DISRUPT, + SPELL_CONSUME_MAGIC = WoW120Spells::DemonHunter::CONSUME_MAGIC, + SPELL_IMPRISON = WoW120Spells::DemonHunter::IMPRISON, + SPELL_SPECTRAL_SIGHT = WoW120Spells::DemonHunter::SPECTRAL_SIGHT, + SPELL_TORMENT = WoW120Spells::DemonHunter::Havoc::TORMENT, - // Buffs/Debuffs - Using central registry: WoW112Spells::DemonHunter::Havoc - BUFF_MOMENTUM = WoW112Spells::DemonHunter::Havoc::BUFF_MOMENTUM, - BUFF_FURIOUS_GAZE = WoW112Spells::DemonHunter::Havoc::BUFF_FURIOUS_GAZE, - BUFF_METAMORPHOSIS = WoW112Spells::DemonHunter::Havoc::BUFF_METAMORPHOSIS, - BUFF_PREPARED = WoW112Spells::DemonHunter::Havoc::BUFF_PREPARED, - BUFF_IMMOLATION_AURA = WoW112Spells::DemonHunter::Havoc::IMMOLATION_AURA, - BUFF_BLADE_DANCE = WoW112Spells::DemonHunter::Havoc::BLADE_DANCE, - BUFF_BLUR = WoW112Spells::DemonHunter::BLUR + // Buffs/Debuffs - Using central registry: WoW120Spells::DemonHunter::Havoc + BUFF_MOMENTUM = WoW120Spells::DemonHunter::Havoc::BUFF_MOMENTUM, + BUFF_FURIOUS_GAZE = WoW120Spells::DemonHunter::Havoc::BUFF_FURIOUS_GAZE, + BUFF_METAMORPHOSIS = WoW120Spells::DemonHunter::Havoc::BUFF_METAMORPHOSIS, + BUFF_PREPARED = WoW120Spells::DemonHunter::Havoc::BUFF_PREPARED, + BUFF_IMMOLATION_AURA = WoW120Spells::DemonHunter::Havoc::IMMOLATION_AURA, + BUFF_BLADE_DANCE = WoW120Spells::DemonHunter::Havoc::BLADE_DANCE, + BUFF_BLUR = WoW120Spells::DemonHunter::BLUR }; // Fury resource type (simple uint32) diff --git a/src/modules/Playerbot/AI/ClassAI/DemonHunters/VengeanceDemonHunter.h b/src/modules/Playerbot/AI/ClassAI/DemonHunters/VengeanceDemonHunter.h index 903797c22..2aeaff280 100644 --- a/src/modules/Playerbot/AI/ClassAI/DemonHunters/VengeanceDemonHunter.h +++ b/src/modules/Playerbot/AI/ClassAI/DemonHunters/VengeanceDemonHunter.h @@ -15,7 +15,7 @@ #include "../Common/RotationHelpers.h" #include "../CombatSpecializationTemplates.h" #include "../ResourceTypes.h" -#include "../SpellValidation_WoW112.h" +#include "../SpellValidation_WoW120.h" #include "../../Services/ThreatAssistant.h" #include "Player.h" #include "SpellMgr.h" @@ -45,46 +45,46 @@ using bot::ai::SpellCategory; // Note: bot::ai::Action() conflicts with Playerbot::Action, use bot::ai::Action() explicitly // ============================================================================ -// VENGEANCE DEMON HUNTER SPELL IDs (WoW 11.2 - The War Within) -// Using centralized spell registry from SpellValidation_WoW112.h +// VENGEANCE DEMON HUNTER SPELL IDs (WoW 12.0 - The War Within) +// Using centralized spell registry from SpellValidation_WoW120.h // Note: Uses enum to maintain compatibility with DemonHunterAI.h and existing code // ============================================================================ enum VengeanceSpells { - // Pain Generators - Using central registry: WoW112Spells::DemonHunter::Vengeance - FRACTURE = WoW112Spells::DemonHunter::Vengeance::FRACTURE, - FEL_DEVASTATION = WoW112Spells::DemonHunter::Vengeance::FEL_DEVASTATION, + // Pain Generators - Using central registry: WoW120Spells::DemonHunter::Vengeance + FRACTURE = WoW120Spells::DemonHunter::Vengeance::FRACTURE, + FEL_DEVASTATION = WoW120Spells::DemonHunter::Vengeance::FEL_DEVASTATION, // Pain Spenders - use DemonHunterSpells from DemonHunterAI.h for SOUL_CLEAVE, SPIRIT_BOMB - FEL_DEVASTATION_SPENDER = WoW112Spells::DemonHunter::Vengeance::FEL_DEVASTATION, + FEL_DEVASTATION_SPENDER = WoW120Spells::DemonHunter::Vengeance::FEL_DEVASTATION, - // Sigils - Using central registry: WoW112Spells::DemonHunter::Vengeance - SIGIL_OF_CHAINS = WoW112Spells::DemonHunter::Vengeance::SIGIL_OF_CHAINS, + // Sigils - Using central registry: WoW120Spells::DemonHunter::Vengeance + SIGIL_OF_CHAINS = WoW120Spells::DemonHunter::Vengeance::SIGIL_OF_CHAINS, - // Threat and Utility - Using central registry: WoW112Spells::DemonHunter::Vengeance - INFERNAL_STRIKE = WoW112Spells::DemonHunter::Vengeance::INFERNAL_STRIKE, - THROW_GLAIVE_TANK = WoW112Spells::DemonHunter::Vengeance::THROW_GLAIVE_TANK, - TORMENT = WoW112Spells::DemonHunter::Vengeance::TORMENT, - CONSUME_MAGIC_TANK = WoW112Spells::DemonHunter::CONSUME_MAGIC, + // Threat and Utility - Using central registry: WoW120Spells::DemonHunter::Vengeance + INFERNAL_STRIKE = WoW120Spells::DemonHunter::Vengeance::INFERNAL_STRIKE, + THROW_GLAIVE_TANK = WoW120Spells::DemonHunter::Vengeance::THROW_GLAIVE_TANK, + TORMENT = WoW120Spells::DemonHunter::Vengeance::TORMENT, + CONSUME_MAGIC_TANK = WoW120Spells::DemonHunter::CONSUME_MAGIC, - // Defensive Cooldowns - Using central registry: WoW112Spells::DemonHunter::Vengeance - LAST_RESORT = WoW112Spells::DemonHunter::Vengeance::LAST_RESORT, - FEL_DEVASTATION_DEF = WoW112Spells::DemonHunter::Vengeance::FEL_DEVASTATION, + // Defensive Cooldowns - Using central registry: WoW120Spells::DemonHunter::Vengeance + LAST_RESORT = WoW120Spells::DemonHunter::Vengeance::LAST_RESORT, + FEL_DEVASTATION_DEF = WoW120Spells::DemonHunter::Vengeance::FEL_DEVASTATION, - // Passives/Procs - Using central registry: WoW112Spells::DemonHunter::Vengeance - IMMOLATION_AURA_TANK = WoW112Spells::DemonHunter::Vengeance::IMMOLATION_AURA_TANK, - SOUL_FRAGMENTS_BUFF = WoW112Spells::DemonHunter::Vengeance::SOUL_FRAGMENT, - PAINBRINGER_BUFF = WoW112Spells::DemonHunter::Vengeance::PAINBRINGER_BUFF, - FRAILTY_DEBUFF = WoW112Spells::DemonHunter::Vengeance::FRAILTY_DEBUFF, + // Passives/Procs - Using central registry: WoW120Spells::DemonHunter::Vengeance + IMMOLATION_AURA_TANK = WoW120Spells::DemonHunter::Vengeance::IMMOLATION_AURA_TANK, + SOUL_FRAGMENTS_BUFF = WoW120Spells::DemonHunter::Vengeance::SOUL_FRAGMENT, + PAINBRINGER_BUFF = WoW120Spells::DemonHunter::Vengeance::PAINBRINGER_BUFF, + FRAILTY_DEBUFF = WoW120Spells::DemonHunter::Vengeance::FRAILTY_DEBUFF, - // Talents - Using central registry: WoW112Spells::DemonHunter::Vengeance - AGONIZING_FLAMES = WoW112Spells::DemonHunter::Vengeance::AGONIZING_FLAMES, - BURNING_ALIVE = WoW112Spells::DemonHunter::Vengeance::BURNING_ALIVE, - FEED_THE_DEMON = WoW112Spells::DemonHunter::Vengeance::FEED_THE_DEMON, - SPIRIT_BOMB_TALENT = WoW112Spells::DemonHunter::Vengeance::SPIRIT_BOMB, - FRACTURE_TALENT = WoW112Spells::DemonHunter::Vengeance::FRACTURE, - SOUL_BARRIER_TALENT = WoW112Spells::DemonHunter::Vengeance::SOUL_BARRIER + // Talents - Using central registry: WoW120Spells::DemonHunter::Vengeance + AGONIZING_FLAMES = WoW120Spells::DemonHunter::Vengeance::AGONIZING_FLAMES, + BURNING_ALIVE = WoW120Spells::DemonHunter::Vengeance::BURNING_ALIVE, + FEED_THE_DEMON = WoW120Spells::DemonHunter::Vengeance::FEED_THE_DEMON, + SPIRIT_BOMB_TALENT = WoW120Spells::DemonHunter::Vengeance::SPIRIT_BOMB, + FRACTURE_TALENT = WoW120Spells::DemonHunter::Vengeance::FRACTURE, + SOUL_BARRIER_TALENT = WoW120Spells::DemonHunter::Vengeance::SOUL_BARRIER }; // Pain resource type (simple uint32) diff --git a/src/modules/Playerbot/AI/ClassAI/Druids/BalanceDruid.h b/src/modules/Playerbot/AI/ClassAI/Druids/BalanceDruid.h index c66621501..ce6546d8c 100644 --- a/src/modules/Playerbot/AI/ClassAI/Druids/BalanceDruid.h +++ b/src/modules/Playerbot/AI/ClassAI/Druids/BalanceDruid.h @@ -25,8 +25,8 @@ #include "../BotAI.h" #include "GameTime.h" -// Central Spell Registry - See WoW112Spells::Druid namespace -#include "../SpellValidation_WoW112.h" +// Central Spell Registry - See WoW120Spells::Druid namespace +#include "../SpellValidation_WoW120.h" namespace Playerbot { @@ -44,67 +44,67 @@ using bot::ai::SpellCategory; // Note: bot::ai::Action() conflicts with Playerbot::Action, use bot::ai::Action() explicitly // ============================================================================ -// BALANCE DRUID SPELL IDs (WoW 11.2 - The War Within) -// See central registry: WoW112Spells::Druid and WoW112Spells::Druid::Balance +// BALANCE DRUID SPELL IDs (WoW 12.0 - The War Within) +// See central registry: WoW120Spells::Druid and WoW120Spells::Druid::Balance // ============================================================================ enum BalanceDruidSpells { // Astral Power Generators - WRATH = WoW112Spells::Druid::Balance::WRATH, - STARFIRE = WoW112Spells::Druid::Balance::STARFIRE, - STELLAR_FLARE = WoW112Spells::Druid::Balance::STELLAR_FLARE, - FORCE_OF_NATURE = WoW112Spells::Druid::Balance::FORCE_OF_NATURE, + WRATH = WoW120Spells::Druid::Balance::WRATH, + STARFIRE = WoW120Spells::Druid::Balance::STARFIRE, + STELLAR_FLARE = WoW120Spells::Druid::Balance::STELLAR_FLARE, + FORCE_OF_NATURE = WoW120Spells::Druid::Balance::FORCE_OF_NATURE, // Astral Power Spenders - STARSURGE = WoW112Spells::Druid::Balance::STARSURGE, - STARFALL = WoW112Spells::Druid::Balance::STARFALL, - NEW_MOON = WoW112Spells::Druid::Balance::NEW_MOON, - HALF_MOON = WoW112Spells::Druid::Balance::HALF_MOON, - FULL_MOON = WoW112Spells::Druid::Balance::FULL_MOON, + STARSURGE = WoW120Spells::Druid::Balance::STARSURGE, + STARFALL = WoW120Spells::Druid::Balance::STARFALL, + NEW_MOON = WoW120Spells::Druid::Balance::NEW_MOON, + HALF_MOON = WoW120Spells::Druid::Balance::HALF_MOON, + FULL_MOON = WoW120Spells::Druid::Balance::FULL_MOON, // DoTs - MOONFIRE = WoW112Spells::Druid::Balance::MOONFIRE_BALANCE, - SUNFIRE = WoW112Spells::Druid::Balance::SUNFIRE_BALANCE, + MOONFIRE = WoW120Spells::Druid::Balance::MOONFIRE_BALANCE, + SUNFIRE = WoW120Spells::Druid::Balance::SUNFIRE_BALANCE, // Major Cooldowns - INCARNATION_CHOSEN = WoW112Spells::Druid::Balance::INCARNATION_CHOSEN, - CELESTIAL_ALIGNMENT = WoW112Spells::Druid::Balance::CELESTIAL_ALIGNMENT, - WARRIOR_OF_ELUNE = WoW112Spells::Druid::Balance::WARRIOR_OF_ELUNE, - FURY_OF_ELUNE = WoW112Spells::Druid::Balance::FURY_OF_ELUNE, - CONVOKE_THE_SPIRITS = WoW112Spells::Druid::Balance::CONVOKE_THE_SPIRITS, + INCARNATION_CHOSEN = WoW120Spells::Druid::Balance::INCARNATION_CHOSEN, + CELESTIAL_ALIGNMENT = WoW120Spells::Druid::Balance::CELESTIAL_ALIGNMENT, + WARRIOR_OF_ELUNE = WoW120Spells::Druid::Balance::WARRIOR_OF_ELUNE, + FURY_OF_ELUNE = WoW120Spells::Druid::Balance::FURY_OF_ELUNE, + CONVOKE_THE_SPIRITS = WoW120Spells::Druid::Balance::CONVOKE_THE_SPIRITS, // Utility - MOONKIN_FORM = WoW112Spells::Druid::MOONKIN_FORM, - SOLAR_BEAM = WoW112Spells::Druid::SOLAR_BEAM, - TYPHOON = WoW112Spells::Druid::TYPHOON, - MIGHTY_BASH = WoW112Spells::Druid::MIGHTY_BASH, - MASS_ENTANGLEMENT = WoW112Spells::Druid::MASS_ENTANGLEMENT, - REMOVE_CORRUPTION = WoW112Spells::Druid::REMOVE_CORRUPTION, - SOOTHE = WoW112Spells::Druid::SOOTHE, - INNERVATE = WoW112Spells::Druid::INNERVATE, + MOONKIN_FORM = WoW120Spells::Druid::MOONKIN_FORM, + SOLAR_BEAM = WoW120Spells::Druid::SOLAR_BEAM, + TYPHOON = WoW120Spells::Druid::TYPHOON, + MIGHTY_BASH = WoW120Spells::Druid::MIGHTY_BASH, + MASS_ENTANGLEMENT = WoW120Spells::Druid::MASS_ENTANGLEMENT, + REMOVE_CORRUPTION = WoW120Spells::Druid::REMOVE_CORRUPTION, + SOOTHE = WoW120Spells::Druid::SOOTHE, + INNERVATE = WoW120Spells::Druid::INNERVATE, // Defensives - BARKSKIN = WoW112Spells::Druid::BARKSKIN, - RENEWAL = WoW112Spells::Druid::RENEWAL, - REGROWTH = WoW112Spells::Druid::REGROWTH, - BEAR_FORM = WoW112Spells::Druid::BEAR_FORM, - FRENZIED_REGENERATION = WoW112Spells::Druid::Guardian::FRENZIED_REGENERATION, + BARKSKIN = WoW120Spells::Druid::BARKSKIN, + RENEWAL = WoW120Spells::Druid::RENEWAL, + REGROWTH = WoW120Spells::Druid::REGROWTH, + BEAR_FORM = WoW120Spells::Druid::BEAR_FORM, + FRENZIED_REGENERATION = WoW120Spells::Druid::Guardian::FRENZIED_REGENERATION, // Eclipse System - ECLIPSE_SOLAR = WoW112Spells::Druid::Balance::SOLAR_ECLIPSE, - ECLIPSE_LUNAR = WoW112Spells::Druid::Balance::LUNAR_ECLIPSE, - BALANCE_OF_ALL_THINGS = WoW112Spells::Druid::Balance::BALANCE_OF_ALL_THINGS, + ECLIPSE_SOLAR = WoW120Spells::Druid::Balance::SOLAR_ECLIPSE, + ECLIPSE_LUNAR = WoW120Spells::Druid::Balance::LUNAR_ECLIPSE, + BALANCE_OF_ALL_THINGS = WoW120Spells::Druid::Balance::BALANCE_OF_ALL_THINGS, // Procs and Buffs - SHOOTING_STARS = WoW112Spells::Druid::Balance::SHOOTING_STARS, - STARWEAVERS_WARP = WoW112Spells::Druid::Balance::STARWEAVERS_WARP, - STARWEAVERS_WEFT = WoW112Spells::Druid::Balance::STARWEAVERS_WEFT, + SHOOTING_STARS = WoW120Spells::Druid::Balance::SHOOTING_STARS, + STARWEAVERS_WARP = WoW120Spells::Druid::Balance::STARWEAVERS_WARP, + STARWEAVERS_WEFT = WoW120Spells::Druid::Balance::STARWEAVERS_WEFT, // Talents - WILD_MUSHROOM = WoW112Spells::Druid::Balance::WILD_MUSHROOM_GROUND, - TWIN_MOONS = WoW112Spells::Druid::Balance::TWIN_MOONS, - SOUL_OF_THE_FOREST = WoW112Spells::Druid::Balance::SOUL_OF_THE_FOREST + WILD_MUSHROOM = WoW120Spells::Druid::Balance::WILD_MUSHROOM_GROUND, + TWIN_MOONS = WoW120Spells::Druid::Balance::TWIN_MOONS, + SOUL_OF_THE_FOREST = WoW120Spells::Druid::Balance::SOUL_OF_THE_FOREST }; // Dual resource type for Balance Druid (Mana + Astral Power) diff --git a/src/modules/Playerbot/AI/ClassAI/Druids/DruidAI.h b/src/modules/Playerbot/AI/ClassAI/Druids/DruidAI.h index edfd21e2d..f8c415309 100644 --- a/src/modules/Playerbot/AI/ClassAI/Druids/DruidAI.h +++ b/src/modules/Playerbot/AI/ClassAI/Druids/DruidAI.h @@ -10,7 +10,7 @@ #pragma once #include "../ClassAI.h" -#include "../SpellValidation_WoW112.h" +#include "../SpellValidation_WoW120.h" #include #include @@ -128,86 +128,86 @@ private: uint32 GetComboPoints() const; // Spell ID constants - // Druid Spell IDs - Using central registry (WoW 11.2) + // Druid Spell IDs - Using central registry (WoW 12.0) enum DruidSpells { // Forms - BEAR_FORM = WoW112Spells::Druid::Common::BEAR_FORM, - CAT_FORM = WoW112Spells::Druid::Common::CAT_FORM, - MOONKIN_FORM = WoW112Spells::Druid::Common::MOONKIN_FORM, - TREE_OF_LIFE = WoW112Spells::Druid::Common::TREE_OF_LIFE, - TRAVEL_FORM = WoW112Spells::Druid::Common::TRAVEL_FORM, + BEAR_FORM = WoW120Spells::Druid::Common::BEAR_FORM, + CAT_FORM = WoW120Spells::Druid::Common::CAT_FORM, + MOONKIN_FORM = WoW120Spells::Druid::Common::MOONKIN_FORM, + TREE_OF_LIFE = WoW120Spells::Druid::Common::TREE_OF_LIFE, + TRAVEL_FORM = WoW120Spells::Druid::Common::TRAVEL_FORM, // Interrupts - SKULL_BASH_BEAR = WoW112Spells::Druid::Common::SKULL_BASH_BEAR, - SKULL_BASH_CAT = WoW112Spells::Druid::Common::SKULL_BASH_CAT, - SOLAR_BEAM = WoW112Spells::Druid::Common::SOLAR_BEAM, - TYPHOON = WoW112Spells::Druid::Common::TYPHOON, - MIGHTY_BASH = WoW112Spells::Druid::Common::MIGHTY_BASH, + SKULL_BASH_BEAR = WoW120Spells::Druid::Common::SKULL_BASH_BEAR, + SKULL_BASH_CAT = WoW120Spells::Druid::Common::SKULL_BASH_CAT, + SOLAR_BEAM = WoW120Spells::Druid::Common::SOLAR_BEAM, + TYPHOON = WoW120Spells::Druid::Common::TYPHOON, + MIGHTY_BASH = WoW120Spells::Druid::Common::MIGHTY_BASH, // Defensive abilities - BARKSKIN = WoW112Spells::Druid::Common::BARKSKIN, - SURVIVAL_INSTINCTS = WoW112Spells::Druid::Common::SURVIVAL_INSTINCTS, - FRENZIED_REGENERATION = WoW112Spells::Druid::Common::FRENZIED_REGENERATION, - IRONBARK = WoW112Spells::Druid::Common::IRONBARK, - CENARION_WARD = WoW112Spells::Druid::Common::CENARION_WARD, + BARKSKIN = WoW120Spells::Druid::Common::BARKSKIN, + SURVIVAL_INSTINCTS = WoW120Spells::Druid::Common::SURVIVAL_INSTINCTS, + FRENZIED_REGENERATION = WoW120Spells::Druid::Common::FRENZIED_REGENERATION, + IRONBARK = WoW120Spells::Druid::Common::IRONBARK, + CENARION_WARD = WoW120Spells::Druid::Common::CENARION_WARD, // Feral offensive - TIGERS_FURY = WoW112Spells::Druid::Common::TIGERS_FURY, - BERSERK_CAT = WoW112Spells::Druid::Common::BERSERK_CAT, - INCARNATION_KING = WoW112Spells::Druid::Common::INCARNATION_KING, + TIGERS_FURY = WoW120Spells::Druid::Common::TIGERS_FURY, + BERSERK_CAT = WoW120Spells::Druid::Common::BERSERK_CAT, + INCARNATION_KING = WoW120Spells::Druid::Common::INCARNATION_KING, // Feral abilities - SHRED = WoW112Spells::Druid::Common::SHRED, - RAKE = WoW112Spells::Druid::Common::RAKE, - RIP = WoW112Spells::Druid::Common::RIP, - FEROCIOUS_BITE = WoW112Spells::Druid::Common::FEROCIOUS_BITE, - SAVAGE_ROAR = WoW112Spells::Druid::Common::SAVAGE_ROAR, - SWIPE_CAT = WoW112Spells::Druid::Common::SWIPE_CAT, - THRASH_CAT = WoW112Spells::Druid::Common::THRASH_CAT, - PRIMAL_WRATH = WoW112Spells::Druid::Common::PRIMAL_WRATH, + SHRED = WoW120Spells::Druid::Common::SHRED, + RAKE = WoW120Spells::Druid::Common::RAKE, + RIP = WoW120Spells::Druid::Common::RIP, + FEROCIOUS_BITE = WoW120Spells::Druid::Common::FEROCIOUS_BITE, + SAVAGE_ROAR = WoW120Spells::Druid::Common::SAVAGE_ROAR, + SWIPE_CAT = WoW120Spells::Druid::Common::SWIPE_CAT, + THRASH_CAT = WoW120Spells::Druid::Common::THRASH_CAT, + PRIMAL_WRATH = WoW120Spells::Druid::Common::PRIMAL_WRATH, // Guardian abilities - MANGLE_BEAR = WoW112Spells::Druid::Common::MANGLE_BEAR, - MAUL = WoW112Spells::Druid::Common::MAUL, - IRONFUR = WoW112Spells::Druid::Common::IRONFUR, - THRASH_BEAR = WoW112Spells::Druid::Common::THRASH_BEAR, - SWIPE_BEAR = WoW112Spells::Druid::Common::SWIPE_BEAR, - BERSERK_BEAR = WoW112Spells::Druid::Common::BERSERK_BEAR, - INCARNATION_GUARDIAN = WoW112Spells::Druid::Common::INCARNATION_GUARDIAN, - PULVERIZE = WoW112Spells::Druid::Common::PULVERIZE, + MANGLE_BEAR = WoW120Spells::Druid::Common::MANGLE_BEAR, + MAUL = WoW120Spells::Druid::Common::MAUL, + IRONFUR = WoW120Spells::Druid::Common::IRONFUR, + THRASH_BEAR = WoW120Spells::Druid::Common::THRASH_BEAR, + SWIPE_BEAR = WoW120Spells::Druid::Common::SWIPE_BEAR, + BERSERK_BEAR = WoW120Spells::Druid::Common::BERSERK_BEAR, + INCARNATION_GUARDIAN = WoW120Spells::Druid::Common::INCARNATION_GUARDIAN, + PULVERIZE = WoW120Spells::Druid::Common::PULVERIZE, // Balance abilities - WRATH = WoW112Spells::Druid::Common::WRATH, - STARFIRE = WoW112Spells::Druid::Common::STARFIRE, - MOONFIRE = WoW112Spells::Druid::Common::MOONFIRE, - SUNFIRE = WoW112Spells::Druid::Common::SUNFIRE, - STARSURGE = WoW112Spells::Druid::Common::STARSURGE, - STARFALL = WoW112Spells::Druid::Common::STARFALL, - CELESTIAL_ALIGNMENT = WoW112Spells::Druid::Common::CELESTIAL_ALIGNMENT, - INCARNATION_BALANCE = WoW112Spells::Druid::Common::INCARNATION_BALANCE, + WRATH = WoW120Spells::Druid::Common::WRATH, + STARFIRE = WoW120Spells::Druid::Common::STARFIRE, + MOONFIRE = WoW120Spells::Druid::Common::MOONFIRE, + SUNFIRE = WoW120Spells::Druid::Common::SUNFIRE, + STARSURGE = WoW120Spells::Druid::Common::STARSURGE, + STARFALL = WoW120Spells::Druid::Common::STARFALL, + CELESTIAL_ALIGNMENT = WoW120Spells::Druid::Common::CELESTIAL_ALIGNMENT, + INCARNATION_BALANCE = WoW120Spells::Druid::Common::INCARNATION_BALANCE, // NOTE: LUNAR_STRIKE and SOLAR_WRATH were removed in WoW 11.x // They were merged with STARFIRE and WRATH respectively // Restoration abilities - REJUVENATION = WoW112Spells::Druid::Common::REJUVENATION, - REGROWTH = WoW112Spells::Druid::Common::REGROWTH, - LIFEBLOOM = WoW112Spells::Druid::Common::LIFEBLOOM, - HEALING_TOUCH = WoW112Spells::Druid::Common::HEALING_TOUCH, - WILD_GROWTH = WoW112Spells::Druid::Common::WILD_GROWTH, - SWIFTMEND = WoW112Spells::Druid::Common::SWIFTMEND, - TRANQUILITY = WoW112Spells::Druid::Common::TRANQUILITY, - INCARNATION_TREE = WoW112Spells::Druid::Common::INCARNATION_TREE, - NATURES_SWIFTNESS = WoW112Spells::Druid::Common::NATURES_SWIFTNESS, - EFFLORESCENCE = WoW112Spells::Druid::Common::EFFLORESCENCE, + REJUVENATION = WoW120Spells::Druid::Common::REJUVENATION, + REGROWTH = WoW120Spells::Druid::Common::REGROWTH, + LIFEBLOOM = WoW120Spells::Druid::Common::LIFEBLOOM, + HEALING_TOUCH = WoW120Spells::Druid::Common::HEALING_TOUCH, + WILD_GROWTH = WoW120Spells::Druid::Common::WILD_GROWTH, + SWIFTMEND = WoW120Spells::Druid::Common::SWIFTMEND, + TRANQUILITY = WoW120Spells::Druid::Common::TRANQUILITY, + INCARNATION_TREE = WoW120Spells::Druid::Common::INCARNATION_TREE, + NATURES_SWIFTNESS = WoW120Spells::Druid::Common::NATURES_SWIFTNESS, + EFFLORESCENCE = WoW120Spells::Druid::Common::EFFLORESCENCE, // Utility - REMOVE_CORRUPTION = WoW112Spells::Druid::Common::REMOVE_CORRUPTION, - NATURES_CURE = WoW112Spells::Druid::Common::NATURES_CURE, - REBIRTH = WoW112Spells::Druid::Common::REBIRTH, - INNERVATE = WoW112Spells::Druid::Common::INNERVATE, - STAMPEDING_ROAR = WoW112Spells::Druid::Common::STAMPEDING_ROAR, - MARK_OF_THE_WILD = WoW112Spells::Druid::MARK_OF_THE_WILD + REMOVE_CORRUPTION = WoW120Spells::Druid::Common::REMOVE_CORRUPTION, + NATURES_CURE = WoW120Spells::Druid::Common::NATURES_CURE, + REBIRTH = WoW120Spells::Druid::Common::REBIRTH, + INNERVATE = WoW120Spells::Druid::Common::INNERVATE, + STAMPEDING_ROAR = WoW120Spells::Druid::Common::STAMPEDING_ROAR, + MARK_OF_THE_WILD = WoW120Spells::Druid::MARK_OF_THE_WILD }; }; diff --git a/src/modules/Playerbot/AI/ClassAI/Druids/FeralDruid.h b/src/modules/Playerbot/AI/ClassAI/Druids/FeralDruid.h index fc66ee892..42b1fd077 100644 --- a/src/modules/Playerbot/AI/ClassAI/Druids/FeralDruid.h +++ b/src/modules/Playerbot/AI/ClassAI/Druids/FeralDruid.h @@ -31,8 +31,8 @@ #include "../../Decision/BehaviorTree.h" #include "../BotAI.h" -// Central Spell Registry - See WoW112Spells::Druid namespace -#include "../SpellValidation_WoW112.h" +// Central Spell Registry - See WoW120Spells::Druid namespace +#include "../SpellValidation_WoW120.h" namespace Playerbot { @@ -49,29 +49,29 @@ using bot::ai::SpellPriority; using bot::ai::SpellCategory; // Note: bot::ai::Action() conflicts with Playerbot::Action, use bot::ai::Action() explicitly -// WoW 11.2 (The War Within) - Feral Druid Spell IDs -// Using central registry: WoW112Spells::Druid and WoW112Spells::Druid::Feral -constexpr uint32 FERAL_SHRED = WoW112Spells::Druid::Feral::SHRED; -constexpr uint32 FERAL_RAKE = WoW112Spells::Druid::Feral::RAKE; -constexpr uint32 FERAL_RIP = WoW112Spells::Druid::Feral::RIP; -constexpr uint32 FERAL_FEROCIOUS_BITE = WoW112Spells::Druid::Feral::FEROCIOUS_BITE; -constexpr uint32 FERAL_SWIPE_CAT = WoW112Spells::Druid::Feral::SWIPE_CAT; -constexpr uint32 FERAL_THRASH_CAT = WoW112Spells::Druid::Feral::THRASH_CAT; -constexpr uint32 FERAL_BRUTAL_SLASH = WoW112Spells::Druid::Feral::BRUTAL_SLASH; -constexpr uint32 FERAL_PRIMAL_WRATH = WoW112Spells::Druid::Feral::PRIMAL_WRATH; -constexpr uint32 FERAL_MOONFIRE_CAT = WoW112Spells::Druid::Feral::MOONFIRE_FERAL; -constexpr uint32 FERAL_TIGERS_FURY = WoW112Spells::Druid::Feral::TIGERS_FURY; -constexpr uint32 FERAL_BERSERK = WoW112Spells::Druid::Feral::BERSERK; -constexpr uint32 FERAL_INCARNATION_KING = WoW112Spells::Druid::Feral::INCARNATION_FERAL; -constexpr uint32 FERAL_CONVOKE = WoW112Spells::Druid::Feral::CONVOKE_FERAL; -constexpr uint32 FERAL_BLOODTALONS = WoW112Spells::Druid::Feral::BLOODTALONS; -constexpr uint32 FERAL_CAT_FORM = WoW112Spells::Druid::CAT_FORM; -constexpr uint32 FERAL_DASH = WoW112Spells::Druid::DASH; -constexpr uint32 FERAL_STAMPEDING_ROAR = WoW112Spells::Druid::STAMPEDING_ROAR; -constexpr uint32 FERAL_SURVIVAL_INSTINCTS = WoW112Spells::Druid::SURVIVAL_INSTINCTS; -constexpr uint32 FERAL_BARKSKIN = WoW112Spells::Druid::BARKSKIN; -constexpr uint32 FERAL_RENEWAL = WoW112Spells::Druid::RENEWAL; -constexpr uint32 FERAL_REGROWTH = WoW112Spells::Druid::REGROWTH; +// WoW 12.0 (The War Within) - Feral Druid Spell IDs +// Using central registry: WoW120Spells::Druid and WoW120Spells::Druid::Feral +constexpr uint32 FERAL_SHRED = WoW120Spells::Druid::Feral::SHRED; +constexpr uint32 FERAL_RAKE = WoW120Spells::Druid::Feral::RAKE; +constexpr uint32 FERAL_RIP = WoW120Spells::Druid::Feral::RIP; +constexpr uint32 FERAL_FEROCIOUS_BITE = WoW120Spells::Druid::Feral::FEROCIOUS_BITE; +constexpr uint32 FERAL_SWIPE_CAT = WoW120Spells::Druid::Feral::SWIPE_CAT; +constexpr uint32 FERAL_THRASH_CAT = WoW120Spells::Druid::Feral::THRASH_CAT; +constexpr uint32 FERAL_BRUTAL_SLASH = WoW120Spells::Druid::Feral::BRUTAL_SLASH; +constexpr uint32 FERAL_PRIMAL_WRATH = WoW120Spells::Druid::Feral::PRIMAL_WRATH; +constexpr uint32 FERAL_MOONFIRE_CAT = WoW120Spells::Druid::Feral::MOONFIRE_FERAL; +constexpr uint32 FERAL_TIGERS_FURY = WoW120Spells::Druid::Feral::TIGERS_FURY; +constexpr uint32 FERAL_BERSERK = WoW120Spells::Druid::Feral::BERSERK; +constexpr uint32 FERAL_INCARNATION_KING = WoW120Spells::Druid::Feral::INCARNATION_FERAL; +constexpr uint32 FERAL_CONVOKE = WoW120Spells::Druid::Feral::CONVOKE_FERAL; +constexpr uint32 FERAL_BLOODTALONS = WoW120Spells::Druid::Feral::BLOODTALONS; +constexpr uint32 FERAL_CAT_FORM = WoW120Spells::Druid::CAT_FORM; +constexpr uint32 FERAL_DASH = WoW120Spells::Druid::DASH; +constexpr uint32 FERAL_STAMPEDING_ROAR = WoW120Spells::Druid::STAMPEDING_ROAR; +constexpr uint32 FERAL_SURVIVAL_INSTINCTS = WoW120Spells::Druid::SURVIVAL_INSTINCTS; +constexpr uint32 FERAL_BARKSKIN = WoW120Spells::Druid::BARKSKIN; +constexpr uint32 FERAL_RENEWAL = WoW120Spells::Druid::RENEWAL; +constexpr uint32 FERAL_REGROWTH = WoW120Spells::Druid::REGROWTH; // Feral Druid resource type (Energy + Combo Points) // Uses distinct type to avoid template instantiation conflicts with Rogue specs diff --git a/src/modules/Playerbot/AI/ClassAI/Druids/GuardianDruid.h b/src/modules/Playerbot/AI/ClassAI/Druids/GuardianDruid.h index 8176839af..7c30d9911 100644 --- a/src/modules/Playerbot/AI/ClassAI/Druids/GuardianDruid.h +++ b/src/modules/Playerbot/AI/ClassAI/Druids/GuardianDruid.h @@ -31,8 +31,8 @@ #include "../../Decision/BehaviorTree.h" #include "../BotAI.h" -// Central Spell Registry - See WoW112Spells::Druid namespace -#include "../SpellValidation_WoW112.h" +// Central Spell Registry - See WoW120Spells::Druid namespace +#include "../SpellValidation_WoW120.h" namespace Playerbot { @@ -49,26 +49,26 @@ using bot::ai::SpellPriority; using bot::ai::SpellCategory; // Note: bot::ai::Action() conflicts with Playerbot::Action, use bot::ai::Action() explicitly -// WoW 11.2 (The War Within) - Guardian Druid Spell IDs -// Using central registry: WoW112Spells::Druid and WoW112Spells::Druid::Guardian -constexpr uint32 GUARDIAN_MANGLE = WoW112Spells::Druid::Guardian::MANGLE; -constexpr uint32 GUARDIAN_THRASH = WoW112Spells::Druid::Guardian::THRASH_BEAR; -constexpr uint32 GUARDIAN_SWIPE = WoW112Spells::Druid::Guardian::SWIPE_BEAR; -constexpr uint32 GUARDIAN_MAUL = WoW112Spells::Druid::Guardian::MAUL; -constexpr uint32 GUARDIAN_IRONFUR = WoW112Spells::Druid::Guardian::IRONFUR; -constexpr uint32 GUARDIAN_FRENZIED_REGENERATION = WoW112Spells::Druid::Guardian::FRENZIED_REGENERATION; -constexpr uint32 GUARDIAN_BARKSKIN = WoW112Spells::Druid::BARKSKIN; -constexpr uint32 GUARDIAN_SURVIVAL_INSTINCTS = WoW112Spells::Druid::SURVIVAL_INSTINCTS; -constexpr uint32 GUARDIAN_PULVERIZE = WoW112Spells::Druid::Guardian::PULVERIZE; -constexpr uint32 GUARDIAN_INCARNATION_BEAR = WoW112Spells::Druid::Guardian::INCARNATION_GUARDIAN; -constexpr uint32 GUARDIAN_BERSERK = WoW112Spells::Druid::Guardian::BERSERK_GUARDIAN; -constexpr uint32 GUARDIAN_MOONFIRE = WoW112Spells::Druid::Guardian::MOONFIRE_BEAR; -constexpr uint32 GUARDIAN_RAGE_OF_SLEEPER = WoW112Spells::Druid::Guardian::RAGE_OF_THE_SLEEPER; -constexpr uint32 GUARDIAN_BEAR_FORM = WoW112Spells::Druid::BEAR_FORM; -constexpr uint32 GUARDIAN_BRISTLING_FUR = WoW112Spells::Druid::Guardian::BRISTLING_FUR; -constexpr uint32 GUARDIAN_RENEWAL = WoW112Spells::Druid::RENEWAL; -constexpr uint32 GUARDIAN_REGROWTH = WoW112Spells::Druid::REGROWTH; -constexpr uint32 GUARDIAN_GROWL = WoW112Spells::Druid::Guardian::GROWL; +// WoW 12.0 (The War Within) - Guardian Druid Spell IDs +// Using central registry: WoW120Spells::Druid and WoW120Spells::Druid::Guardian +constexpr uint32 GUARDIAN_MANGLE = WoW120Spells::Druid::Guardian::MANGLE; +constexpr uint32 GUARDIAN_THRASH = WoW120Spells::Druid::Guardian::THRASH_BEAR; +constexpr uint32 GUARDIAN_SWIPE = WoW120Spells::Druid::Guardian::SWIPE_BEAR; +constexpr uint32 GUARDIAN_MAUL = WoW120Spells::Druid::Guardian::MAUL; +constexpr uint32 GUARDIAN_IRONFUR = WoW120Spells::Druid::Guardian::IRONFUR; +constexpr uint32 GUARDIAN_FRENZIED_REGENERATION = WoW120Spells::Druid::Guardian::FRENZIED_REGENERATION; +constexpr uint32 GUARDIAN_BARKSKIN = WoW120Spells::Druid::BARKSKIN; +constexpr uint32 GUARDIAN_SURVIVAL_INSTINCTS = WoW120Spells::Druid::SURVIVAL_INSTINCTS; +constexpr uint32 GUARDIAN_PULVERIZE = WoW120Spells::Druid::Guardian::PULVERIZE; +constexpr uint32 GUARDIAN_INCARNATION_BEAR = WoW120Spells::Druid::Guardian::INCARNATION_GUARDIAN; +constexpr uint32 GUARDIAN_BERSERK = WoW120Spells::Druid::Guardian::BERSERK_GUARDIAN; +constexpr uint32 GUARDIAN_MOONFIRE = WoW120Spells::Druid::Guardian::MOONFIRE_BEAR; +constexpr uint32 GUARDIAN_RAGE_OF_SLEEPER = WoW120Spells::Druid::Guardian::RAGE_OF_THE_SLEEPER; +constexpr uint32 GUARDIAN_BEAR_FORM = WoW120Spells::Druid::BEAR_FORM; +constexpr uint32 GUARDIAN_BRISTLING_FUR = WoW120Spells::Druid::Guardian::BRISTLING_FUR; +constexpr uint32 GUARDIAN_RENEWAL = WoW120Spells::Druid::RENEWAL; +constexpr uint32 GUARDIAN_REGROWTH = WoW120Spells::Druid::REGROWTH; +constexpr uint32 GUARDIAN_GROWL = WoW120Spells::Druid::Guardian::GROWL; // Ironfur stacking tracker class GuardianIronfurTracker diff --git a/src/modules/Playerbot/AI/ClassAI/Druids/RestorationDruid.h b/src/modules/Playerbot/AI/ClassAI/Druids/RestorationDruid.h index acfe060b9..a7043ab1c 100644 --- a/src/modules/Playerbot/AI/ClassAI/Druids/RestorationDruid.h +++ b/src/modules/Playerbot/AI/ClassAI/Druids/RestorationDruid.h @@ -31,8 +31,8 @@ #include "../../Decision/BehaviorTree.h" #include "../BotAI.h" -// Central Spell Registry - See WoW112Spells::Druid namespace -#include "../SpellValidation_WoW112.h" +// Central Spell Registry - See WoW120Spells::Druid namespace +#include "../SpellValidation_WoW120.h" namespace Playerbot { @@ -49,26 +49,26 @@ using bot::ai::SpellPriority; using bot::ai::SpellCategory; // Note: bot::ai::Action() conflicts with Playerbot::Action, use bot::ai::Action() explicitly -// WoW 11.2 (The War Within) - Restoration Druid Spell IDs -// Using central registry: WoW112Spells::Druid and WoW112Spells::Druid::Restoration -constexpr uint32 RESTO_REJUVENATION = WoW112Spells::Druid::REJUVENATION; -constexpr uint32 RESTO_REGROWTH = WoW112Spells::Druid::REGROWTH; -constexpr uint32 RESTO_WILD_GROWTH = WoW112Spells::Druid::WILD_GROWTH; -constexpr uint32 RESTO_SWIFTMEND = WoW112Spells::Druid::SWIFTMEND; -constexpr uint32 RESTO_LIFEBLOOM = WoW112Spells::Druid::Restoration::LIFEBLOOM; -constexpr uint32 RESTO_EFFLORESCENCE = WoW112Spells::Druid::Restoration::EFFLORESCENCE; -constexpr uint32 RESTO_TRANQUILITY = WoW112Spells::Druid::Restoration::TRANQUILITY; -constexpr uint32 RESTO_IRONBARK = WoW112Spells::Druid::Restoration::IRONBARK; -constexpr uint32 RESTO_NATURES_SWIFTNESS = WoW112Spells::Druid::Restoration::NATURES_SWIFTNESS; -constexpr uint32 RESTO_CENARION_WARD = WoW112Spells::Druid::Restoration::CENARION_WARD; -constexpr uint32 RESTO_FLOURISH = WoW112Spells::Druid::Restoration::FLOURISH; -constexpr uint32 RESTO_INCARNATION_TREE = WoW112Spells::Druid::Restoration::INCARNATION_TREE; -constexpr uint32 RESTO_NOURISH = WoW112Spells::Druid::Restoration::NOURISH; -constexpr uint32 RESTO_HEALING_TOUCH = WoW112Spells::Druid::Restoration::HEALING_TOUCH; -constexpr uint32 RESTO_INNERVATE = WoW112Spells::Druid::INNERVATE; -constexpr uint32 RESTO_BARKSKIN = WoW112Spells::Druid::BARKSKIN; -constexpr uint32 RESTO_RENEWAL = WoW112Spells::Druid::RENEWAL; -constexpr uint32 RESTO_MOONFIRE = WoW112Spells::Druid::MOONFIRE; +// WoW 12.0 (The War Within) - Restoration Druid Spell IDs +// Using central registry: WoW120Spells::Druid and WoW120Spells::Druid::Restoration +constexpr uint32 RESTO_REJUVENATION = WoW120Spells::Druid::REJUVENATION; +constexpr uint32 RESTO_REGROWTH = WoW120Spells::Druid::REGROWTH; +constexpr uint32 RESTO_WILD_GROWTH = WoW120Spells::Druid::WILD_GROWTH; +constexpr uint32 RESTO_SWIFTMEND = WoW120Spells::Druid::SWIFTMEND; +constexpr uint32 RESTO_LIFEBLOOM = WoW120Spells::Druid::Restoration::LIFEBLOOM; +constexpr uint32 RESTO_EFFLORESCENCE = WoW120Spells::Druid::Restoration::EFFLORESCENCE; +constexpr uint32 RESTO_TRANQUILITY = WoW120Spells::Druid::Restoration::TRANQUILITY; +constexpr uint32 RESTO_IRONBARK = WoW120Spells::Druid::Restoration::IRONBARK; +constexpr uint32 RESTO_NATURES_SWIFTNESS = WoW120Spells::Druid::Restoration::NATURES_SWIFTNESS; +constexpr uint32 RESTO_CENARION_WARD = WoW120Spells::Druid::Restoration::CENARION_WARD; +constexpr uint32 RESTO_FLOURISH = WoW120Spells::Druid::Restoration::FLOURISH; +constexpr uint32 RESTO_INCARNATION_TREE = WoW120Spells::Druid::Restoration::INCARNATION_TREE; +constexpr uint32 RESTO_NOURISH = WoW120Spells::Druid::Restoration::NOURISH; +constexpr uint32 RESTO_HEALING_TOUCH = WoW120Spells::Druid::Restoration::HEALING_TOUCH; +constexpr uint32 RESTO_INNERVATE = WoW120Spells::Druid::INNERVATE; +constexpr uint32 RESTO_BARKSKIN = WoW120Spells::Druid::BARKSKIN; +constexpr uint32 RESTO_RENEWAL = WoW120Spells::Druid::RENEWAL; +constexpr uint32 RESTO_MOONFIRE = WoW120Spells::Druid::MOONFIRE; // Mana resource is defined in CombatSpecializationTemplates.h as uint32 // No custom ManaResource struct needed - use ManaResource (uint32 typedef) diff --git a/src/modules/Playerbot/AI/ClassAI/Evokers/AugmentationEvoker.h b/src/modules/Playerbot/AI/ClassAI/Evokers/AugmentationEvoker.h index abd208775..babf19c28 100644 --- a/src/modules/Playerbot/AI/ClassAI/Evokers/AugmentationEvoker.h +++ b/src/modules/Playerbot/AI/ClassAI/Evokers/AugmentationEvoker.h @@ -10,7 +10,7 @@ #include "../CombatSpecializationTemplates.h" #include "../ResourceTypes.h" -#include "../SpellValidation_WoW112.h" +#include "../SpellValidation_WoW120.h" #include "Player.h" #include "Group.h" #include "Log.h" @@ -34,29 +34,29 @@ using bot::ai::SpellCategory; // Note: bot::ai::Action() conflicts with Playerbot::Action, use bot::ai::Action() explicitly // ============================================================================ -// AUGMENTATION EVOKER SPELL IDs (WoW 11.2 - The War Within) -// See central registry: WoW112Spells::Evoker and WoW112Spells::Evoker::Augmentation +// AUGMENTATION EVOKER SPELL IDs (WoW 12.0 - The War Within) +// See central registry: WoW120Spells::Evoker and WoW120Spells::Evoker::Augmentation // ============================================================================ enum AugmentationEvokerSpells { // Core Buffs - EBON_MIGHT = WoW112Spells::Evoker::Augmentation::EBON_MIGHT, - PRESCIENCE = WoW112Spells::Evoker::Augmentation::PRESCIENCE, - BLISTERING_SCALES = WoW112Spells::Evoker::Augmentation::BLISTERING_SCALES, + EBON_MIGHT = WoW120Spells::Evoker::Augmentation::EBON_MIGHT, + PRESCIENCE = WoW120Spells::Evoker::Augmentation::PRESCIENCE, + BLISTERING_SCALES = WoW120Spells::Evoker::Augmentation::BLISTERING_SCALES, // Empowered Abilities - BREATH_OF_EONS = WoW112Spells::Evoker::Augmentation::BREATH_OF_EONS, + BREATH_OF_EONS = WoW120Spells::Evoker::Augmentation::BREATH_OF_EONS, // Essence Generation - AZURE_STRIKE_AUG = WoW112Spells::Evoker::AZURE_STRIKE, - ERUPTION = WoW112Spells::Evoker::Augmentation::ERUPTION, + AZURE_STRIKE_AUG = WoW120Spells::Evoker::AZURE_STRIKE, + ERUPTION = WoW120Spells::Evoker::Augmentation::ERUPTION, // Utility (shared with other Evoker specs) - AUG_OBSIDIAN_SCALES = WoW112Spells::Evoker::OBSIDIAN_SCALES, - AUG_RENEWING_BLAZE = WoW112Spells::Evoker::RENEWING_BLAZE, - AUG_QUELL = WoW112Spells::Evoker::QUELL, - AUG_HOVER = WoW112Spells::Evoker::HOVER + AUG_OBSIDIAN_SCALES = WoW120Spells::Evoker::OBSIDIAN_SCALES, + AUG_RENEWING_BLAZE = WoW120Spells::Evoker::RENEWING_BLAZE, + AUG_QUELL = WoW120Spells::Evoker::QUELL, + AUG_HOVER = WoW120Spells::Evoker::HOVER }; struct EssenceResourceAug diff --git a/src/modules/Playerbot/AI/ClassAI/Evokers/DevastationEvoker.h b/src/modules/Playerbot/AI/ClassAI/Evokers/DevastationEvoker.h index fe529d681..f376d4f3e 100644 --- a/src/modules/Playerbot/AI/ClassAI/Evokers/DevastationEvoker.h +++ b/src/modules/Playerbot/AI/ClassAI/Evokers/DevastationEvoker.h @@ -14,7 +14,7 @@ #include "../Common/RotationHelpers.h" #include "../CombatSpecializationTemplates.h" #include "../ResourceTypes.h" -#include "../SpellValidation_WoW112.h" +#include "../SpellValidation_WoW120.h" #include "Player.h" #include "SpellMgr.h" #include "SpellAuraEffects.h" @@ -39,49 +39,49 @@ using bot::ai::SpellCategory; // Note: bot::ai::Action() conflicts with Playerbot::Action, use bot::ai::Action() explicitly // ============================================================================ -// DEVASTATION EVOKER SPELL IDs (WoW 11.2 - The War Within) -// See central registry: WoW112Spells::Evoker and WoW112Spells::Evoker::Devastation +// DEVASTATION EVOKER SPELL IDs (WoW 12.0 - The War Within) +// See central registry: WoW120Spells::Evoker and WoW120Spells::Evoker::Devastation // ============================================================================ enum DevastationEvokerSpells { // Essence Generators - AZURE_STRIKE = WoW112Spells::Evoker::AZURE_STRIKE, - LIVING_FLAME = WoW112Spells::Evoker::LIVING_FLAME, + AZURE_STRIKE = WoW120Spells::Evoker::AZURE_STRIKE, + LIVING_FLAME = WoW120Spells::Evoker::LIVING_FLAME, // Essence Spenders (Empowered) - FIRE_BREATH = WoW112Spells::Evoker::FIRE_BREATH, - ETERNITY_SURGE = WoW112Spells::Evoker::Devastation::ETERNITY_SURGE, + FIRE_BREATH = WoW120Spells::Evoker::FIRE_BREATH, + ETERNITY_SURGE = WoW120Spells::Evoker::Devastation::ETERNITY_SURGE, // Direct Damage - DISINTEGRATE = WoW112Spells::Evoker::DISINTEGRATE, - PYRE = WoW112Spells::Evoker::Devastation::PYRE, - SHATTERING_STAR = WoW112Spells::Evoker::Devastation::SHATTERING_STAR, + DISINTEGRATE = WoW120Spells::Evoker::DISINTEGRATE, + PYRE = WoW120Spells::Evoker::Devastation::PYRE, + SHATTERING_STAR = WoW120Spells::Evoker::Devastation::SHATTERING_STAR, // Major Cooldowns - DRAGONRAGE = WoW112Spells::Evoker::Devastation::DRAGONRAGE, - DEEP_BREATH = WoW112Spells::Evoker::DEEP_BREATH, - TIP_THE_SCALES = WoW112Spells::Evoker::Devastation::TIP_THE_SCALES, + DRAGONRAGE = WoW120Spells::Evoker::Devastation::DRAGONRAGE, + DEEP_BREATH = WoW120Spells::Evoker::DEEP_BREATH, + TIP_THE_SCALES = WoW120Spells::Evoker::Devastation::TIP_THE_SCALES, // Procs and Buffs - ESSENCE_BURST = WoW112Spells::Evoker::Devastation::ESSENSE_BURST, - BURNOUT = WoW112Spells::Evoker::Devastation::BURNOUT, - IRIDESCENCE_BLUE = WoW112Spells::Evoker::Devastation::IRIDESCENCE_BLUE, - IRIDESCENCE_RED = WoW112Spells::Evoker::Devastation::IRIDESCENCE_RED, + ESSENCE_BURST = WoW120Spells::Evoker::Devastation::ESSENSE_BURST, + BURNOUT = WoW120Spells::Evoker::Devastation::BURNOUT, + IRIDESCENCE_BLUE = WoW120Spells::Evoker::Devastation::IRIDESCENCE_BLUE, + IRIDESCENCE_RED = WoW120Spells::Evoker::Devastation::IRIDESCENCE_RED, // Utility - HOVER = WoW112Spells::Evoker::HOVER, - OBSIDIAN_SCALES = WoW112Spells::Evoker::OBSIDIAN_SCALES, - RENEWING_BLAZE = WoW112Spells::Evoker::RENEWING_BLAZE, - QUELL = WoW112Spells::Evoker::QUELL, - TAIL_SWIPE = WoW112Spells::Evoker::TAIL_SWIPE, - WING_BUFFET = WoW112Spells::Evoker::WING_BUFFET, + HOVER = WoW120Spells::Evoker::HOVER, + OBSIDIAN_SCALES = WoW120Spells::Evoker::OBSIDIAN_SCALES, + RENEWING_BLAZE = WoW120Spells::Evoker::RENEWING_BLAZE, + QUELL = WoW120Spells::Evoker::QUELL, + TAIL_SWIPE = WoW120Spells::Evoker::TAIL_SWIPE, + WING_BUFFET = WoW120Spells::Evoker::WING_BUFFET, // Talents - ANIMOSITY = WoW112Spells::Evoker::Devastation::ANIMOSITY, - CATALYZE = WoW112Spells::Evoker::Devastation::CATALYZE, - FEED_THE_FLAMES = WoW112Spells::Evoker::Devastation::FEED_THE_FLAMES, - ONYX_LEGACY = WoW112Spells::Evoker::Devastation::ONYX_LEGACY + ANIMOSITY = WoW120Spells::Evoker::Devastation::ANIMOSITY, + CATALYZE = WoW120Spells::Evoker::Devastation::CATALYZE, + FEED_THE_FLAMES = WoW120Spells::Evoker::Devastation::FEED_THE_FLAMES, + ONYX_LEGACY = WoW120Spells::Evoker::Devastation::ONYX_LEGACY }; // Essence resource type for Devastation Evoker diff --git a/src/modules/Playerbot/AI/ClassAI/Evokers/EvokerAI.h b/src/modules/Playerbot/AI/ClassAI/Evokers/EvokerAI.h index c614000b2..3cd0df67f 100644 --- a/src/modules/Playerbot/AI/ClassAI/Evokers/EvokerAI.h +++ b/src/modules/Playerbot/AI/ClassAI/Evokers/EvokerAI.h @@ -10,7 +10,7 @@ #pragma once #include "../ClassAI.h" -#include "../SpellValidation_WoW112.h" +#include "../SpellValidation_WoW120.h" #include "Threading/LockHierarchy.h" #include "Position.h" #include @@ -22,12 +22,12 @@ namespace Playerbot { -// Namespace aliases for Evoker spells from central registry (WoW 11.2) -namespace EvokerSpells = WoW112Spells::Evoker; -namespace EvokerDevastation = WoW112Spells::Evoker::Devastation; -namespace EvokerPreservation = WoW112Spells::Evoker::Preservation; -namespace EvokerAugmentation = WoW112Spells::Evoker::Augmentation; -namespace EvokerCommon = WoW112Spells::Evoker::Common; +// Namespace aliases for Evoker spells from central registry (WoW 12.0) +namespace EvokerSpells = WoW120Spells::Evoker; +namespace EvokerDevastation = WoW120Spells::Evoker::Devastation; +namespace EvokerPreservation = WoW120Spells::Evoker::Preservation; +namespace EvokerAugmentation = WoW120Spells::Evoker::Augmentation; +namespace EvokerCommon = WoW120Spells::Evoker::Common; // Forward declarations for specialization classes (QW-4 FIX) class DevastationEvokerRefactored; @@ -134,56 +134,56 @@ public: explicit EvokerAI(Player* bot); ~EvokerAI(); - // Evoker Spell IDs - Using central registry (WoW 11.2) + // Evoker Spell IDs - Using central registry (WoW 12.0) enum EvokerSpells { // Basic abilities - AZURE_STRIKE = WoW112Spells::Evoker::Common::AZURE_STRIKE, - LIVING_FLAME = WoW112Spells::Evoker::Common::LIVING_FLAME, - HOVER = WoW112Spells::Evoker::HOVER, - SOAR = WoW112Spells::Evoker::SOAR, + AZURE_STRIKE = WoW120Spells::Evoker::Common::AZURE_STRIKE, + LIVING_FLAME = WoW120Spells::Evoker::Common::LIVING_FLAME, + HOVER = WoW120Spells::Evoker::HOVER, + SOAR = WoW120Spells::Evoker::SOAR, // Devastation abilities - ETERNITYS_SURGE = WoW112Spells::Evoker::Common::ETERNITYS_SURGE, - DISINTEGRATE = WoW112Spells::Evoker::Common::DISINTEGRATE, - PYRE = WoW112Spells::Evoker::Devastation::PYRE, - DEEP_BREATH = WoW112Spells::Evoker::Common::DEEP_BREATH, - FIRE_BREATH = WoW112Spells::Evoker::Common::FIRE_BREATH, - AZURE_STRIKE_DEVASTATION = WoW112Spells::Evoker::Common::AZURE_STRIKE, + ETERNITYS_SURGE = WoW120Spells::Evoker::Common::ETERNITYS_SURGE, + DISINTEGRATE = WoW120Spells::Evoker::Common::DISINTEGRATE, + PYRE = WoW120Spells::Evoker::Devastation::PYRE, + DEEP_BREATH = WoW120Spells::Evoker::Common::DEEP_BREATH, + FIRE_BREATH = WoW120Spells::Evoker::Common::FIRE_BREATH, + AZURE_STRIKE_DEVASTATION = WoW120Spells::Evoker::Common::AZURE_STRIKE, // Preservation abilities - DREAM_BREATH = WoW112Spells::Evoker::Common::DREAM_BREATH, - SPIRIT_BLOOM = WoW112Spells::Evoker::Common::SPIRITBLOOM, - SPIRITBLOOM = WoW112Spells::Evoker::Common::SPIRITBLOOM, - EMERALD_BLOSSOM = WoW112Spells::Evoker::Common::EMERALD_BLOSSOM, - VERDANT_EMBRACE = WoW112Spells::Evoker::Common::VERDANT_EMBRACE, - LIFEBIND = WoW112Spells::Evoker::Common::LIFEBIND, - EMERALD_COMMUNION = WoW112Spells::Evoker::Common::EMERALD_COMMUNION, - TEMPORAL_ANOMALY = WoW112Spells::Evoker::Common::TEMPORAL_ANOMALY, + DREAM_BREATH = WoW120Spells::Evoker::Common::DREAM_BREATH, + SPIRIT_BLOOM = WoW120Spells::Evoker::Common::SPIRITBLOOM, + SPIRITBLOOM = WoW120Spells::Evoker::Common::SPIRITBLOOM, + EMERALD_BLOSSOM = WoW120Spells::Evoker::Common::EMERALD_BLOSSOM, + VERDANT_EMBRACE = WoW120Spells::Evoker::Common::VERDANT_EMBRACE, + LIFEBIND = WoW120Spells::Evoker::Common::LIFEBIND, + EMERALD_COMMUNION = WoW120Spells::Evoker::Common::EMERALD_COMMUNION, + TEMPORAL_ANOMALY = WoW120Spells::Evoker::Common::TEMPORAL_ANOMALY, // Augmentation abilities - EBON_MIGHT = WoW112Spells::Evoker::Common::EBON_MIGHT, - BREATH_OF_EONS = WoW112Spells::Evoker::Common::BREATH_OF_EONS, - PRESCIENCE = WoW112Spells::Evoker::Common::PRESCIENCE, - BLISTERING_SCALES = WoW112Spells::Evoker::Common::BLISTERING_SCALES, + EBON_MIGHT = WoW120Spells::Evoker::Common::EBON_MIGHT, + BREATH_OF_EONS = WoW120Spells::Evoker::Common::BREATH_OF_EONS, + PRESCIENCE = WoW120Spells::Evoker::Common::PRESCIENCE, + BLISTERING_SCALES = WoW120Spells::Evoker::Common::BLISTERING_SCALES, // Utility abilities - BLESSING_OF_THE_BRONZE = WoW112Spells::Evoker::Common::BLESSING_OF_THE_BRONZE, - LANDSLIDE = WoW112Spells::Evoker::Common::LANDSLIDE, - TAIL_SWIPE = WoW112Spells::Evoker::Common::TAIL_SWIPE, - WING_BUFFET = WoW112Spells::Evoker::Common::WING_BUFFET, - SLEEP_WALK = WoW112Spells::Evoker::Common::SLEEP_WALK, - SPELL_QUELL = WoW112Spells::Evoker::Common::QUELL, - SPELL_DRAGONRAGE = WoW112Spells::Evoker::Common::DRAGONRAGE, + BLESSING_OF_THE_BRONZE = WoW120Spells::Evoker::Common::BLESSING_OF_THE_BRONZE, + LANDSLIDE = WoW120Spells::Evoker::Common::LANDSLIDE, + TAIL_SWIPE = WoW120Spells::Evoker::Common::TAIL_SWIPE, + WING_BUFFET = WoW120Spells::Evoker::Common::WING_BUFFET, + SLEEP_WALK = WoW120Spells::Evoker::Common::SLEEP_WALK, + SPELL_QUELL = WoW120Spells::Evoker::Common::QUELL, + SPELL_DRAGONRAGE = WoW120Spells::Evoker::Common::DRAGONRAGE, // Defensive abilities - OBSIDIAN_SCALES = WoW112Spells::Evoker::OBSIDIAN_SCALES, - RENEWING_BLAZE = WoW112Spells::Evoker::RENEWING_BLAZE, - RESCUE = WoW112Spells::Evoker::RESCUE, + OBSIDIAN_SCALES = WoW120Spells::Evoker::OBSIDIAN_SCALES, + RENEWING_BLAZE = WoW120Spells::Evoker::RENEWING_BLAZE, + RESCUE = WoW120Spells::Evoker::RESCUE, // Movement abilities - DEEP_BREATH_MOVEMENT = WoW112Spells::Evoker::Common::DEEP_BREATH, - SOAR_MOVEMENT = WoW112Spells::Evoker::SOAR, + DEEP_BREATH_MOVEMENT = WoW120Spells::Evoker::Common::DEEP_BREATH, + SOAR_MOVEMENT = WoW120Spells::Evoker::SOAR, // Additional constants - Using central registry where available ECHO = EvokerPreservation::ECHO, // Preservation echo mechanic (364343) diff --git a/src/modules/Playerbot/AI/ClassAI/Evokers/PreservationEvoker.h b/src/modules/Playerbot/AI/ClassAI/Evokers/PreservationEvoker.h index 8c6c96be1..bd320325e 100644 --- a/src/modules/Playerbot/AI/ClassAI/Evokers/PreservationEvoker.h +++ b/src/modules/Playerbot/AI/ClassAI/Evokers/PreservationEvoker.h @@ -14,7 +14,7 @@ #include "../Common/RotationHelpers.h" #include "../CombatSpecializationTemplates.h" #include "../ResourceTypes.h" -#include "../SpellValidation_WoW112.h" +#include "../SpellValidation_WoW120.h" #include "../../Services/HealingTargetSelector.h" #include "Player.h" #include "SpellMgr.h" @@ -41,55 +41,55 @@ using bot::ai::SpellCategory; // Note: bot::ai::Action() conflicts with Playerbot::Action, use bot::ai::Action() explicitly // ============================================================================ -// PRESERVATION EVOKER SPELL IDs (WoW 11.2 - The War Within) -// See central registry: WoW112Spells::Evoker and WoW112Spells::Evoker::Preservation +// PRESERVATION EVOKER SPELL IDs (WoW 12.0 - The War Within) +// See central registry: WoW120Spells::Evoker and WoW120Spells::Evoker::Preservation // ============================================================================ enum PreservationEvokerSpells { // Direct Heals - EMERALD_BLOSSOM = WoW112Spells::Evoker::EMERALD_BLOSSOM, - VERDANT_EMBRACE = WoW112Spells::Evoker::VERDANT_EMBRACE, - LIVING_FLAME_HEAL = WoW112Spells::Evoker::Preservation::LIVING_FLAME_HEAL, + EMERALD_BLOSSOM = WoW120Spells::Evoker::EMERALD_BLOSSOM, + VERDANT_EMBRACE = WoW120Spells::Evoker::VERDANT_EMBRACE, + LIVING_FLAME_HEAL = WoW120Spells::Evoker::Preservation::LIVING_FLAME_HEAL, // Empowered Heals - DREAM_BREATH = WoW112Spells::Evoker::Preservation::DREAM_BREATH, - SPIRIT_BLOOM = WoW112Spells::Evoker::Preservation::SPIRITBLOOM, + DREAM_BREATH = WoW120Spells::Evoker::Preservation::DREAM_BREATH, + SPIRIT_BLOOM = WoW120Spells::Evoker::Preservation::SPIRITBLOOM, // Echo System - ECHO = WoW112Spells::Evoker::Preservation::ECHO, - REVERSION = WoW112Spells::Evoker::Preservation::REVERSION, + ECHO = WoW120Spells::Evoker::Preservation::ECHO, + REVERSION = WoW120Spells::Evoker::Preservation::REVERSION, // Major Cooldowns - EMERALD_COMMUNION = WoW112Spells::Evoker::Preservation::EMERALD_COMMUNION, - TEMPORAL_ANOMALY = WoW112Spells::Evoker::Preservation::TEMPORAL_ANOMALY, - REWIND = WoW112Spells::Evoker::Preservation::REWIND, + EMERALD_COMMUNION = WoW120Spells::Evoker::Preservation::EMERALD_COMMUNION, + TEMPORAL_ANOMALY = WoW120Spells::Evoker::Preservation::TEMPORAL_ANOMALY, + REWIND = WoW120Spells::Evoker::Preservation::REWIND, // Utility - LIFEBIND = WoW112Spells::Evoker::Preservation::LIFEBIND, - BLESSING_BRONZE = WoW112Spells::Evoker::BLESSING_OF_THE_BRONZE, - TIME_DILATION = WoW112Spells::Evoker::Preservation::TIME_DILATION, - STASIS = WoW112Spells::Evoker::Preservation::STASIS, - RESCUE = WoW112Spells::Evoker::RESCUE, + LIFEBIND = WoW120Spells::Evoker::Preservation::LIFEBIND, + BLESSING_BRONZE = WoW120Spells::Evoker::BLESSING_OF_THE_BRONZE, + TIME_DILATION = WoW120Spells::Evoker::Preservation::TIME_DILATION, + STASIS = WoW120Spells::Evoker::Preservation::STASIS, + RESCUE = WoW120Spells::Evoker::RESCUE, // Defensive (shared with other Evoker specs) - PRES_OBSIDIAN_SCALES = WoW112Spells::Evoker::OBSIDIAN_SCALES, - PRES_RENEWING_BLAZE = WoW112Spells::Evoker::RENEWING_BLAZE, - TWIN_GUARDIAN = WoW112Spells::Evoker::Preservation::TWIN_GUARDIAN, + PRES_OBSIDIAN_SCALES = WoW120Spells::Evoker::OBSIDIAN_SCALES, + PRES_RENEWING_BLAZE = WoW120Spells::Evoker::RENEWING_BLAZE, + TWIN_GUARDIAN = WoW120Spells::Evoker::Preservation::TWIN_GUARDIAN, // Essence Generation - AZURE_STRIKE_PRES = WoW112Spells::Evoker::AZURE_STRIKE, - DISINTEGRATE_PRES = WoW112Spells::Evoker::DISINTEGRATE, + AZURE_STRIKE_PRES = WoW120Spells::Evoker::AZURE_STRIKE, + DISINTEGRATE_PRES = WoW120Spells::Evoker::DISINTEGRATE, // Procs - ESSENCE_BURST_PRES = WoW112Spells::Evoker::Preservation::ESSENCE_BURST_PRES, - CALL_OF_YSERA = WoW112Spells::Evoker::Preservation::CALL_OF_YSERA, + ESSENCE_BURST_PRES = WoW120Spells::Evoker::Preservation::ESSENCE_BURST_PRES, + CALL_OF_YSERA = WoW120Spells::Evoker::Preservation::CALL_OF_YSERA, // Talents - FIELD_OF_DREAMS = WoW112Spells::Evoker::Preservation::FIELD_OF_DREAMS, - FLOW_STATE = WoW112Spells::Evoker::Preservation::FLOW_STATE, - LIFEFORCE_MENDER = WoW112Spells::Evoker::Preservation::LIFEFORCE_MENDER, - TEMPORAL_COMPRESSION = WoW112Spells::Evoker::Preservation::TEMPORAL_COMPRESSION + FIELD_OF_DREAMS = WoW120Spells::Evoker::Preservation::FIELD_OF_DREAMS, + FLOW_STATE = WoW120Spells::Evoker::Preservation::FLOW_STATE, + LIFEFORCE_MENDER = WoW120Spells::Evoker::Preservation::LIFEFORCE_MENDER, + TEMPORAL_COMPRESSION = WoW120Spells::Evoker::Preservation::TEMPORAL_COMPRESSION }; // Essence resource (same as Devastation) diff --git a/src/modules/Playerbot/AI/ClassAI/Hunters/BeastMasteryHunter.h b/src/modules/Playerbot/AI/ClassAI/Hunters/BeastMasteryHunter.h index 41e487386..e09800563 100644 --- a/src/modules/Playerbot/AI/ClassAI/Hunters/BeastMasteryHunter.h +++ b/src/modules/Playerbot/AI/ClassAI/Hunters/BeastMasteryHunter.h @@ -18,7 +18,7 @@ #include "../Common/RotationHelpers.h" #include "../CombatSpecializationTemplates.h" #include "../ResourceTypes.h" -#include "../SpellValidation_WoW112.h" +#include "../SpellValidation_WoW120.h" #include "Pet.h" #include "PetDefines.h" #include "MotionMaster.h" @@ -53,45 +53,45 @@ using bot::ai::SpellCategory; // Note: bot::ai::Action() conflicts with Playerbot::Action, use bot::ai::Action() explicitly // ============================================================================ -// BEAST MASTERY HUNTER SPELL IDs (WoW 11.2 - The War Within) -// Using centralized spell registry from SpellValidation_WoW112.h +// BEAST MASTERY HUNTER SPELL IDs (WoW 12.0 - The War Within) +// Using centralized spell registry from SpellValidation_WoW120.h // ============================================================================ enum BeastMasterySpells { - // Core Abilities - Using central registry: WoW112Spells::Hunter::BeastMastery - SPELL_KILL_COMMAND = WoW112Spells::Hunter::BeastMastery::KILL_COMMAND, - SPELL_BARBED_SHOT = WoW112Spells::Hunter::BeastMastery::BARBED_SHOT, - SPELL_COBRA_SHOT = WoW112Spells::Hunter::BeastMastery::COBRA_SHOT, - SPELL_BESTIAL_WRATH = WoW112Spells::Hunter::BeastMastery::BESTIAL_WRATH, - SPELL_ASPECT_OF_THE_WILD = WoW112Spells::Hunter::BeastMastery::ASPECT_OF_THE_WILD, - SPELL_MULTISHOT = WoW112Spells::Hunter::BeastMastery::MULTI_SHOT_BM, + // Core Abilities - Using central registry: WoW120Spells::Hunter::BeastMastery + SPELL_KILL_COMMAND = WoW120Spells::Hunter::BeastMastery::KILL_COMMAND, + SPELL_BARBED_SHOT = WoW120Spells::Hunter::BeastMastery::BARBED_SHOT, + SPELL_COBRA_SHOT = WoW120Spells::Hunter::BeastMastery::COBRA_SHOT, + SPELL_BESTIAL_WRATH = WoW120Spells::Hunter::BeastMastery::BESTIAL_WRATH, + SPELL_ASPECT_OF_THE_WILD = WoW120Spells::Hunter::BeastMastery::ASPECT_OF_THE_WILD, + SPELL_MULTISHOT = WoW120Spells::Hunter::BeastMastery::MULTI_SHOT_BM, - // Pet Management - Using central registry: WoW112Spells::Hunter - SPELL_CALL_PET_1 = WoW112Spells::Hunter::CALL_PET_1, - SPELL_MEND_PET = WoW112Spells::Hunter::MEND_PET, - SPELL_REVIVE_PET = WoW112Spells::Hunter::REVIVE_PET, - SPELL_PET_ATTACK = WoW112Spells::Hunter::PET_ATTACK, - SPELL_PET_FOLLOW = WoW112Spells::Hunter::PET_FOLLOW, - SPELL_PET_STAY = WoW112Spells::Hunter::PET_STAY, + // Pet Management - Using central registry: WoW120Spells::Hunter + SPELL_CALL_PET_1 = WoW120Spells::Hunter::CALL_PET_1, + SPELL_MEND_PET = WoW120Spells::Hunter::MEND_PET, + SPELL_REVIVE_PET = WoW120Spells::Hunter::REVIVE_PET, + SPELL_PET_ATTACK = WoW120Spells::Hunter::PET_ATTACK, + SPELL_PET_FOLLOW = WoW120Spells::Hunter::PET_FOLLOW, + SPELL_PET_STAY = WoW120Spells::Hunter::PET_STAY, - // Talents/Special - Using central registry: WoW112Spells::Hunter::BeastMastery - SPELL_DIRE_BEAST = WoW112Spells::Hunter::BeastMastery::DIRE_BEAST, - SPELL_BLOODSHED = WoW112Spells::Hunter::BeastMastery::BLOODSHED, - SPELL_WILD_CALL = WoW112Spells::Hunter::BeastMastery::WILD_CALL, - SPELL_ANIMAL_COMPANION = WoW112Spells::Hunter::BeastMastery::ANIMAL_COMPANION, + // Talents/Special - Using central registry: WoW120Spells::Hunter::BeastMastery + SPELL_DIRE_BEAST = WoW120Spells::Hunter::BeastMastery::DIRE_BEAST, + SPELL_BLOODSHED = WoW120Spells::Hunter::BeastMastery::BLOODSHED, + SPELL_WILD_CALL = WoW120Spells::Hunter::BeastMastery::WILD_CALL, + SPELL_ANIMAL_COMPANION = WoW120Spells::Hunter::BeastMastery::ANIMAL_COMPANION, - // Buffs/Debuffs - Using central registry: WoW112Spells::Hunter - SPELL_HUNTERS_MARK = WoW112Spells::Hunter::HUNTERS_MARK, - SPELL_ASPECT_OF_CHEETAH = WoW112Spells::Hunter::ASPECT_OF_THE_CHEETAH, - SPELL_EXHILARATION = WoW112Spells::Hunter::EXHILARATION, - SPELL_PET_FRENZY = WoW112Spells::Hunter::BeastMastery::PET_FRENZY, + // Buffs/Debuffs - Using central registry: WoW120Spells::Hunter + SPELL_HUNTERS_MARK = WoW120Spells::Hunter::HUNTERS_MARK, + SPELL_ASPECT_OF_CHEETAH = WoW120Spells::Hunter::ASPECT_OF_THE_CHEETAH, + SPELL_EXHILARATION = WoW120Spells::Hunter::EXHILARATION, + SPELL_PET_FRENZY = WoW120Spells::Hunter::BeastMastery::PET_FRENZY, - // Utility - Using central registry: WoW112Spells::Hunter - SPELL_COUNTER_SHOT = WoW112Spells::Hunter::COUNTER_SHOT, - SPELL_TRANQUILIZING_SHOT = WoW112Spells::Hunter::TRANQUILIZING_SHOT, - SPELL_TAR_TRAP = WoW112Spells::Hunter::TAR_TRAP, - SPELL_FREEZING_TRAP = WoW112Spells::Hunter::FREEZING_TRAP + // Utility - Using central registry: WoW120Spells::Hunter + SPELL_COUNTER_SHOT = WoW120Spells::Hunter::COUNTER_SHOT, + SPELL_TRANQUILIZING_SHOT = WoW120Spells::Hunter::TRANQUILIZING_SHOT, + SPELL_TAR_TRAP = WoW120Spells::Hunter::TAR_TRAP, + SPELL_FREEZING_TRAP = WoW120Spells::Hunter::FREEZING_TRAP }; /** @@ -764,7 +764,7 @@ private: void UpdatePetManagement() { _petManager.EnsurePetActive(GetBot()->GetVictim()); } void SummonPet() { _petManager.SummonPet(); } void MendPetIfNeeded() { _petManager.MendPet(); } - void FeedPetIfNeeded() { /* Feeding not implemented in WoW 11.2 */ } + void FeedPetIfNeeded() { /* Feeding not implemented in WoW 12.0 */ } bool HasActivePet() const { return _petManager.HasActivePet(); } ::Playerbot::PetInfo GetPetInfo() const { diff --git a/src/modules/Playerbot/AI/ClassAI/Hunters/HunterAI.cpp b/src/modules/Playerbot/AI/ClassAI/Hunters/HunterAI.cpp index 1d6ba01f4..f3c929f96 100644 --- a/src/modules/Playerbot/AI/ClassAI/Hunters/HunterAI.cpp +++ b/src/modules/Playerbot/AI/ClassAI/Hunters/HunterAI.cpp @@ -369,7 +369,7 @@ bool HunterAI::HandlePositioning(::Unit* target) } - // Note: Wing Clip was removed in WoW 11.2 + // Note: Wing Clip was removed in WoW 12.0 // Movement will be handled by BotAI movement strategies Position optimalPos = _combatBehaviors->GetOptimalPosition(); @@ -1277,7 +1277,7 @@ bool HunterAI::ShouldPlaceTarTrap() const if (!CanPlaceTrap()) return false; - // Place tar trap for slowing multiple enemies (replaces Snake Trap in WoW 11.2) + // Place tar trap for slowing multiple enemies (replaces Snake Trap in WoW 12.0) return GetNearbyEnemyCount(10.0f) >= 2; } @@ -1297,7 +1297,7 @@ uint32 HunterAI::GetBestTrapForSituation() const return FREEZING_TRAP; if (ShouldPlaceExplosiveTrap()) return EXPLOSIVE_TRAP; - // TAR_TRAP replaces Snake Trap in WoW 11.2 + // TAR_TRAP replaces Snake Trap in WoW 12.0 return TAR_TRAP; } // Range management implementation @@ -1457,13 +1457,13 @@ void HunterAI::ManageAspects() void HunterAI::UpdateTracking() { - // Note: Tracking spells were removed in WoW 11.2 + // Note: Tracking spells were removed in WoW 12.0 // This function is kept for interface compatibility but does nothing } bool HunterAI::HasAnyAspect() { - // WoW 11.2 only has these aspects + // WoW 12.0 only has these aspects return HasAura(ASPECT_OF_THE_WILD) || HasAura(ASPECT_OF_THE_CHEETAH) || HasAura(ASPECT_OF_THE_TURTLE); @@ -1471,7 +1471,7 @@ bool HunterAI::HasAnyAspect() uint32 HunterAI::GetCurrentAspect() { - // WoW 11.2 aspects only + // WoW 12.0 aspects only if (HasAura(ASPECT_OF_THE_WILD)) return ASPECT_OF_THE_WILD; if (HasAura(ASPECT_OF_THE_CHEETAH)) return ASPECT_OF_THE_CHEETAH; if (HasAura(ASPECT_OF_THE_TURTLE)) return ASPECT_OF_THE_TURTLE; @@ -1480,7 +1480,7 @@ uint32 HunterAI::GetCurrentAspect() void HunterAI::SwitchToCombatAspect() { - // WoW 11.2: Aspect of the Wild is the primary combat aspect + // WoW 12.0: Aspect of the Wild is the primary combat aspect if (!HasAura(ASPECT_OF_THE_WILD) && _bot->HasSpell(ASPECT_OF_THE_WILD)) { CastSpell(ASPECT_OF_THE_WILD); @@ -1490,7 +1490,7 @@ void HunterAI::SwitchToCombatAspect() void HunterAI::SwitchToMovementAspect() { - // WoW 11.2: Aspect of the Cheetah is the movement aspect (Aspect of the Pack was removed) + // WoW 12.0: Aspect of the Cheetah is the movement aspect (Aspect of the Pack was removed) if (!HasAura(ASPECT_OF_THE_CHEETAH) && _bot->HasSpell(ASPECT_OF_THE_CHEETAH)) { CastSpell(ASPECT_OF_THE_CHEETAH); @@ -1508,7 +1508,7 @@ uint32 HunterAI::GetOptimalAspect() const { if (_bot->IsInCombat()) { - // WoW 11.2: Aspect of the Wild is the combat aspect + // WoW 12.0: Aspect of the Wild is the combat aspect // Note: Aspect of the Viper was removed - focus regenerates passively now if (_bot->HasSpell(ASPECT_OF_THE_WILD)) return ASPECT_OF_THE_WILD; diff --git a/src/modules/Playerbot/AI/ClassAI/Hunters/HunterAI.h b/src/modules/Playerbot/AI/ClassAI/Hunters/HunterAI.h index dc3333708..1c6880130 100644 --- a/src/modules/Playerbot/AI/ClassAI/Hunters/HunterAI.h +++ b/src/modules/Playerbot/AI/ClassAI/Hunters/HunterAI.h @@ -11,7 +11,7 @@ #define TRINITY_HUNTERPLAYERAI_H #include "../ClassAI.h" -#include "../SpellValidation_WoW112.h" +#include "../SpellValidation_WoW120.h" #include "../../Combat/CombatBehaviorIntegration.h" #include "Position.h" #include "ObjectGuid.h" @@ -267,55 +267,55 @@ private: public: // Hunter Spell IDs - // Hunter Spell IDs - Using central registry (WoW 11.2) + // Hunter Spell IDs - Using central registry (WoW 12.0) enum HunterSpells { // Shots and Attacks - STEADY_SHOT = WoW112Spells::Hunter::Common::STEADY_SHOT, - ARCANE_SHOT = WoW112Spells::Hunter::Common::ARCANE_SHOT, - MULTI_SHOT = WoW112Spells::Hunter::Common::MULTI_SHOT, - AIMED_SHOT = WoW112Spells::Hunter::Common::AIMED_SHOT, - KILL_SHOT = WoW112Spells::Hunter::Common::KILL_SHOT, - EXPLOSIVE_SHOT = WoW112Spells::Hunter::Common::EXPLOSIVE_SHOT, - SERPENT_STING = WoW112Spells::Hunter::Common::SERPENT_STING, - CONCUSSIVE_SHOT = WoW112Spells::Hunter::Common::CONCUSSIVE_SHOT, + STEADY_SHOT = WoW120Spells::Hunter::Common::STEADY_SHOT, + ARCANE_SHOT = WoW120Spells::Hunter::Common::ARCANE_SHOT, + MULTI_SHOT = WoW120Spells::Hunter::Common::MULTI_SHOT, + AIMED_SHOT = WoW120Spells::Hunter::Common::AIMED_SHOT, + KILL_SHOT = WoW120Spells::Hunter::Common::KILL_SHOT, + EXPLOSIVE_SHOT = WoW120Spells::Hunter::Common::EXPLOSIVE_SHOT, + SERPENT_STING = WoW120Spells::Hunter::Common::SERPENT_STING, + CONCUSSIVE_SHOT = WoW120Spells::Hunter::Common::CONCUSSIVE_SHOT, // Pet Abilities - KILL_COMMAND = WoW112Spells::Hunter::Common::KILL_COMMAND, - MEND_PET = WoW112Spells::Hunter::Common::MEND_PET, - REVIVE_PET = WoW112Spells::Hunter::Common::REVIVE_PET, - CALL_PET = WoW112Spells::Hunter::Common::CALL_PET, - MASTER_S_CALL = WoW112Spells::Hunter::Common::MASTERS_CALL, + KILL_COMMAND = WoW120Spells::Hunter::Common::KILL_COMMAND, + MEND_PET = WoW120Spells::Hunter::Common::MEND_PET, + REVIVE_PET = WoW120Spells::Hunter::Common::REVIVE_PET, + CALL_PET = WoW120Spells::Hunter::Common::CALL_PET, + MASTER_S_CALL = WoW120Spells::Hunter::Common::MASTERS_CALL, // Traps - FREEZING_TRAP = WoW112Spells::Hunter::Common::FREEZING_TRAP, - EXPLOSIVE_TRAP = WoW112Spells::Hunter::Common::EXPLOSIVE_TRAP, - TAR_TRAP = WoW112Spells::Hunter::Common::TAR_TRAP, + FREEZING_TRAP = WoW120Spells::Hunter::Common::FREEZING_TRAP, + EXPLOSIVE_TRAP = WoW120Spells::Hunter::Common::EXPLOSIVE_TRAP, + TAR_TRAP = WoW120Spells::Hunter::Common::TAR_TRAP, // Defensive/Utility - HUNTER_DISENGAGE = WoW112Spells::Hunter::Common::DISENGAGE, - FEIGN_DEATH = WoW112Spells::Hunter::Common::FEIGN_DEATH, - DETERRENCE = WoW112Spells::Hunter::Common::ASPECT_OF_THE_TURTLE, // Renamed to Aspect of the Turtle in 11.2 - EXHILARATION = WoW112Spells::Hunter::Common::EXHILARATION, - SCATTER_SHOT = WoW112Spells::Hunter::Common::SCATTER_SHOT, - COUNTER_SHOT = WoW112Spells::Hunter::Common::COUNTER_SHOT, + HUNTER_DISENGAGE = WoW120Spells::Hunter::Common::DISENGAGE, + FEIGN_DEATH = WoW120Spells::Hunter::Common::FEIGN_DEATH, + DETERRENCE = WoW120Spells::Hunter::Common::ASPECT_OF_THE_TURTLE, // Renamed to Aspect of the Turtle in 11.2 + EXHILARATION = WoW120Spells::Hunter::Common::EXHILARATION, + SCATTER_SHOT = WoW120Spells::Hunter::Common::SCATTER_SHOT, + COUNTER_SHOT = WoW120Spells::Hunter::Common::COUNTER_SHOT, - // Aspects (WoW 11.2 only) - ASPECT_OF_THE_WILD = WoW112Spells::Hunter::Common::ASPECT_OF_THE_WILD, - ASPECT_OF_THE_CHEETAH = WoW112Spells::Hunter::Common::ASPECT_OF_THE_CHEETAH, - ASPECT_OF_THE_TURTLE = WoW112Spells::Hunter::Common::ASPECT_OF_THE_TURTLE, + // Aspects (WoW 12.0 only) + ASPECT_OF_THE_WILD = WoW120Spells::Hunter::Common::ASPECT_OF_THE_WILD, + ASPECT_OF_THE_CHEETAH = WoW120Spells::Hunter::Common::ASPECT_OF_THE_CHEETAH, + ASPECT_OF_THE_TURTLE = WoW120Spells::Hunter::Common::ASPECT_OF_THE_TURTLE, // Marks/Debuffs - HUNTER_S_MARK = WoW112Spells::Hunter::Common::HUNTERS_MARK, + HUNTER_S_MARK = WoW120Spells::Hunter::Common::HUNTERS_MARK, // Cooldowns - RAPID_FIRE = WoW112Spells::Hunter::Common::RAPID_FIRE, - BESTIAL_WRATH = WoW112Spells::Hunter::Common::BESTIAL_WRATH, - TRUESHOT = WoW112Spells::Hunter::Common::TRUESHOT, - BARRAGE = WoW112Spells::Hunter::Common::BARRAGE, - VOLLEY = WoW112Spells::Hunter::Common::VOLLEY, + RAPID_FIRE = WoW120Spells::Hunter::Common::RAPID_FIRE, + BESTIAL_WRATH = WoW120Spells::Hunter::Common::BESTIAL_WRATH, + TRUESHOT = WoW120Spells::Hunter::Common::TRUESHOT, + BARRAGE = WoW120Spells::Hunter::Common::BARRAGE, + VOLLEY = WoW120Spells::Hunter::Common::VOLLEY, - // Note: Tracking spells were removed in WoW 11.2 - no longer supported + // Note: Tracking spells were removed in WoW 12.0 - no longer supported }; }; diff --git a/src/modules/Playerbot/AI/ClassAI/Hunters/MarksmanshipHunter.h b/src/modules/Playerbot/AI/ClassAI/Hunters/MarksmanshipHunter.h index b093827ca..a892b40e9 100644 --- a/src/modules/Playerbot/AI/ClassAI/Hunters/MarksmanshipHunter.h +++ b/src/modules/Playerbot/AI/ClassAI/Hunters/MarksmanshipHunter.h @@ -18,7 +18,7 @@ #include "../Common/RotationHelpers.h" #include "../CombatSpecializationTemplates.h" #include "../ResourceTypes.h" -#include "../SpellValidation_WoW112.h" +#include "../SpellValidation_WoW120.h" #include "Pet.h" #include "MotionMaster.h" #include "CharmInfo.h" @@ -50,47 +50,47 @@ using bot::ai::SpellCategory; // Note: bot::ai::Action() conflicts with Playerbot::Action, use bot::ai::Action() explicitly // ============================================================================ -// MARKSMANSHIP HUNTER SPELL IDs (WoW 11.2 - The War Within) -// Using centralized spell registry from SpellValidation_WoW112.h +// MARKSMANSHIP HUNTER SPELL IDs (WoW 12.0 - The War Within) +// Using centralized spell registry from SpellValidation_WoW120.h // ============================================================================ enum MarksmanshipSpells { - // Core Abilities - Using central registry: WoW112Spells::Hunter::Marksmanship - SPELL_AIMED_SHOT = WoW112Spells::Hunter::Marksmanship::AIMED_SHOT_MM, - SPELL_RAPID_FIRE = WoW112Spells::Hunter::Marksmanship::RAPID_FIRE_MM, - SPELL_STEADY_SHOT = WoW112Spells::Hunter::Marksmanship::STEADY_SHOT_MM, - SPELL_ARCANE_SHOT = WoW112Spells::Hunter::Marksmanship::ARCANE_SHOT_MM, - SPELL_TRUESHOT = WoW112Spells::Hunter::Marksmanship::TRUESHOT, - SPELL_DOUBLE_TAP = WoW112Spells::Hunter::Marksmanship::DOUBLE_TAP, + // Core Abilities - Using central registry: WoW120Spells::Hunter::Marksmanship + SPELL_AIMED_SHOT = WoW120Spells::Hunter::Marksmanship::AIMED_SHOT_MM, + SPELL_RAPID_FIRE = WoW120Spells::Hunter::Marksmanship::RAPID_FIRE_MM, + SPELL_STEADY_SHOT = WoW120Spells::Hunter::Marksmanship::STEADY_SHOT_MM, + SPELL_ARCANE_SHOT = WoW120Spells::Hunter::Marksmanship::ARCANE_SHOT_MM, + SPELL_TRUESHOT = WoW120Spells::Hunter::Marksmanship::TRUESHOT, + SPELL_DOUBLE_TAP = WoW120Spells::Hunter::Marksmanship::DOUBLE_TAP, - // AoE Abilities - Using central registry: WoW112Spells::Hunter - SPELL_MULTISHOT_MM = WoW112Spells::Hunter::MULTI_SHOT, - SPELL_EXPLOSIVE_SHOT = WoW112Spells::Hunter::Marksmanship::EXPLOSIVE_SHOT, - SPELL_VOLLEY = WoW112Spells::Hunter::Marksmanship::VOLLEY, + // AoE Abilities - Using central registry: WoW120Spells::Hunter + SPELL_MULTISHOT_MM = WoW120Spells::Hunter::MULTI_SHOT, + SPELL_EXPLOSIVE_SHOT = WoW120Spells::Hunter::Marksmanship::EXPLOSIVE_SHOT, + SPELL_VOLLEY = WoW120Spells::Hunter::Marksmanship::VOLLEY, - // Procs and Buffs - Using central registry: WoW112Spells::Hunter::Marksmanship - SPELL_PRECISE_SHOTS = WoW112Spells::Hunter::Marksmanship::PRECISE_SHOTS, - SPELL_TRICK_SHOTS = WoW112Spells::Hunter::Marksmanship::TRICK_SHOTS, - SPELL_LETHAL_SHOTS = WoW112Spells::Hunter::Marksmanship::LETHAL_SHOTS, - SPELL_CAREFUL_AIM = WoW112Spells::Hunter::Marksmanship::CAREFUL_AIM, + // Procs and Buffs - Using central registry: WoW120Spells::Hunter::Marksmanship + SPELL_PRECISE_SHOTS = WoW120Spells::Hunter::Marksmanship::PRECISE_SHOTS, + SPELL_TRICK_SHOTS = WoW120Spells::Hunter::Marksmanship::TRICK_SHOTS, + SPELL_LETHAL_SHOTS = WoW120Spells::Hunter::Marksmanship::LETHAL_SHOTS, + SPELL_CAREFUL_AIM = WoW120Spells::Hunter::Marksmanship::CAREFUL_AIM, - // Utility - Using central registry: WoW112Spells::Hunter - SPELL_HUNTERS_MARK_MM = WoW112Spells::Hunter::HUNTERS_MARK, - SPELL_BINDING_SHOT = WoW112Spells::Hunter::Marksmanship::BINDING_SHOT, - SPELL_SCATTER_SHOT = WoW112Spells::Hunter::Marksmanship::SCATTER_SHOT, - SPELL_BURSTING_SHOT = WoW112Spells::Hunter::Marksmanship::BURSTING_SHOT, - SPELL_COUNTER_SHOT_MM = WoW112Spells::Hunter::COUNTER_SHOT, + // Utility - Using central registry: WoW120Spells::Hunter + SPELL_HUNTERS_MARK_MM = WoW120Spells::Hunter::HUNTERS_MARK, + SPELL_BINDING_SHOT = WoW120Spells::Hunter::Marksmanship::BINDING_SHOT, + SPELL_SCATTER_SHOT = WoW120Spells::Hunter::Marksmanship::SCATTER_SHOT, + SPELL_BURSTING_SHOT = WoW120Spells::Hunter::Marksmanship::BURSTING_SHOT, + SPELL_COUNTER_SHOT_MM = WoW120Spells::Hunter::COUNTER_SHOT, - // Defensives - Using central registry: WoW112Spells::Hunter - SPELL_ASPECT_TURTLE = WoW112Spells::Hunter::ASPECT_OF_THE_TURTLE, - SPELL_EXHILARATION_MM = WoW112Spells::Hunter::EXHILARATION, - SPELL_SURVIVAL_TACTICS = WoW112Spells::Hunter::Marksmanship::SURVIVAL_TACTICS, + // Defensives - Using central registry: WoW120Spells::Hunter + SPELL_ASPECT_TURTLE = WoW120Spells::Hunter::ASPECT_OF_THE_TURTLE, + SPELL_EXHILARATION_MM = WoW120Spells::Hunter::EXHILARATION, + SPELL_SURVIVAL_TACTICS = WoW120Spells::Hunter::Marksmanship::SURVIVAL_TACTICS, - // Pet (minimal for MM) - Using central registry: WoW112Spells::Hunter - SPELL_CALL_PET_MM = WoW112Spells::Hunter::CALL_PET_1, - SPELL_DISMISS_PET = WoW112Spells::Hunter::DISMISS_PET, - SPELL_LONE_WOLF = WoW112Spells::Hunter::Marksmanship::LONE_WOLF + // Pet (minimal for MM) - Using central registry: WoW120Spells::Hunter + SPELL_CALL_PET_MM = WoW120Spells::Hunter::CALL_PET_1, + SPELL_DISMISS_PET = WoW120Spells::Hunter::DISMISS_PET, + SPELL_LONE_WOLF = WoW120Spells::Hunter::Marksmanship::LONE_WOLF }; /** diff --git a/src/modules/Playerbot/AI/ClassAI/Hunters/SurvivalHunter.h b/src/modules/Playerbot/AI/ClassAI/Hunters/SurvivalHunter.h index 17dd07b8d..722601cd3 100644 --- a/src/modules/Playerbot/AI/ClassAI/Hunters/SurvivalHunter.h +++ b/src/modules/Playerbot/AI/ClassAI/Hunters/SurvivalHunter.h @@ -16,7 +16,7 @@ #include "../Common/StatusEffectTracker.h" #include "../Common/CooldownManager.h" #include "../Common/RotationHelpers.h" -#include "../SpellValidation_WoW112.h" +#include "../SpellValidation_WoW120.h" #include "ObjectGuid.h" #include "../../../Spatial/SpatialGridManager.h" #include "ObjectAccessor.h" @@ -56,51 +56,51 @@ using bot::ai::SpellCategory; // Note: bot::ai::Action() conflicts with Playerbot::Action, use bot::ai::Action() explicitly // ============================================================================ -// SURVIVAL HUNTER SPELL IDs (WoW 11.2 - The War Within) -// Using centralized spell registry from SpellValidation_WoW112.h +// SURVIVAL HUNTER SPELL IDs (WoW 12.0 - The War Within) +// Using centralized spell registry from SpellValidation_WoW120.h // ============================================================================ enum SurvivalSpells { - // Core Melee Abilities - Using central registry: WoW112Spells::Hunter::Survival - SPELL_RAPTOR_STRIKE = WoW112Spells::Hunter::Survival::RAPTOR_STRIKE, - SPELL_MONGOOSE_BITE = WoW112Spells::Hunter::Survival::MONGOOSE_BITE, - SPELL_CARVE = WoW112Spells::Hunter::Survival::CARVE, - SPELL_BUTCHERY = WoW112Spells::Hunter::Survival::BUTCHERY, - SPELL_COORDINATED_ASSAULT = WoW112Spells::Hunter::Survival::COORDINATED_ASSAULT, - SPELL_FLANKING_STRIKE = WoW112Spells::Hunter::Survival::FLANKING_STRIKE, + // Core Melee Abilities - Using central registry: WoW120Spells::Hunter::Survival + SPELL_RAPTOR_STRIKE = WoW120Spells::Hunter::Survival::RAPTOR_STRIKE, + SPELL_MONGOOSE_BITE = WoW120Spells::Hunter::Survival::MONGOOSE_BITE, + SPELL_CARVE = WoW120Spells::Hunter::Survival::CARVE, + SPELL_BUTCHERY = WoW120Spells::Hunter::Survival::BUTCHERY, + SPELL_COORDINATED_ASSAULT = WoW120Spells::Hunter::Survival::COORDINATED_ASSAULT, + SPELL_FLANKING_STRIKE = WoW120Spells::Hunter::Survival::FLANKING_STRIKE, - // Wildfire Bombs - Using central registry: WoW112Spells::Hunter::Survival - SPELL_WILDFIRE_BOMB = WoW112Spells::Hunter::Survival::WILDFIRE_BOMB, - SPELL_SHRAPNEL_BOMB = WoW112Spells::Hunter::Survival::SHRAPNEL_BOMB, - SPELL_PHEROMONE_BOMB = WoW112Spells::Hunter::Survival::PHEROMONE_BOMB, - SPELL_VOLATILE_BOMB = WoW112Spells::Hunter::Survival::VOLATILE_BOMB, - SPELL_WILDFIRE_INFUSION = WoW112Spells::Hunter::Survival::WILDFIRE_INFUSION, + // Wildfire Bombs - Using central registry: WoW120Spells::Hunter::Survival + SPELL_WILDFIRE_BOMB = WoW120Spells::Hunter::Survival::WILDFIRE_BOMB, + SPELL_SHRAPNEL_BOMB = WoW120Spells::Hunter::Survival::SHRAPNEL_BOMB, + SPELL_PHEROMONE_BOMB = WoW120Spells::Hunter::Survival::PHEROMONE_BOMB, + SPELL_VOLATILE_BOMB = WoW120Spells::Hunter::Survival::VOLATILE_BOMB, + SPELL_WILDFIRE_INFUSION = WoW120Spells::Hunter::Survival::WILDFIRE_INFUSION, - // DoTs and Debuffs - Using central registry: WoW112Spells::Hunter::Survival - SPELL_SERPENT_STING = WoW112Spells::Hunter::Survival::SERPENT_STING, - SPELL_INTERNAL_BLEEDING = WoW112Spells::Hunter::Survival::INTERNAL_BLEEDING, - SPELL_BLOODSEEKER = WoW112Spells::Hunter::Survival::BLOODSEEKER, + // DoTs and Debuffs - Using central registry: WoW120Spells::Hunter::Survival + SPELL_SERPENT_STING = WoW120Spells::Hunter::Survival::SERPENT_STING, + SPELL_INTERNAL_BLEEDING = WoW120Spells::Hunter::Survival::INTERNAL_BLEEDING, + SPELL_BLOODSEEKER = WoW120Spells::Hunter::Survival::BLOODSEEKER, - // Focus Management - Using central registry: WoW112Spells::Hunter::Survival - SPELL_KILL_COMMAND_SURV = WoW112Spells::Hunter::Survival::KILL_COMMAND_SURVIVAL, - SPELL_TERMS_OF_ENGAGEMENT = WoW112Spells::Hunter::Survival::TERMS_OF_ENGAGEMENT, - SPELL_HARPOON = WoW112Spells::Hunter::Survival::HARPOON, + // Focus Management - Using central registry: WoW120Spells::Hunter::Survival + SPELL_KILL_COMMAND_SURV = WoW120Spells::Hunter::Survival::KILL_COMMAND_SURVIVAL, + SPELL_TERMS_OF_ENGAGEMENT = WoW120Spells::Hunter::Survival::TERMS_OF_ENGAGEMENT, + SPELL_HARPOON = WoW120Spells::Hunter::Survival::HARPOON, - // Utility - Using central registry: WoW112Spells::Hunter::Survival - SPELL_ASPECT_OF_EAGLE = WoW112Spells::Hunter::Survival::ASPECT_OF_THE_EAGLE, - SPELL_MUZZLE = WoW112Spells::Hunter::Survival::MUZZLE, - SPELL_STEEL_TRAP = WoW112Spells::Hunter::Survival::STEEL_TRAP, - SPELL_GUERRILLA_TACTICS = WoW112Spells::Hunter::Survival::GUERRILLA_TACTICS, + // Utility - Using central registry: WoW120Spells::Hunter::Survival + SPELL_ASPECT_OF_EAGLE = WoW120Spells::Hunter::Survival::ASPECT_OF_THE_EAGLE, + SPELL_MUZZLE = WoW120Spells::Hunter::Survival::MUZZLE, + SPELL_STEEL_TRAP = WoW120Spells::Hunter::Survival::STEEL_TRAP, + SPELL_GUERRILLA_TACTICS = WoW120Spells::Hunter::Survival::GUERRILLA_TACTICS, - // Pet - Using central registry: WoW112Spells::Hunter - SPELL_CALL_PET_SURV = WoW112Spells::Hunter::CALL_PET_1, - SPELL_MEND_PET_SURV = WoW112Spells::Hunter::MEND_PET, + // Pet - Using central registry: WoW120Spells::Hunter + SPELL_CALL_PET_SURV = WoW120Spells::Hunter::CALL_PET_1, + SPELL_MEND_PET_SURV = WoW120Spells::Hunter::MEND_PET, - // Defensives - Using central registry: WoW112Spells::Hunter - SPELL_ASPECT_TURTLE_SURV = WoW112Spells::Hunter::ASPECT_OF_THE_TURTLE, - SPELL_EXHILARATION_SURV = WoW112Spells::Hunter::EXHILARATION, - SPELL_SURVIVAL_OF_FITTEST = WoW112Spells::Hunter::SURVIVAL_OF_THE_FITTEST + // Defensives - Using central registry: WoW120Spells::Hunter + SPELL_ASPECT_TURTLE_SURV = WoW120Spells::Hunter::ASPECT_OF_THE_TURTLE, + SPELL_EXHILARATION_SURV = WoW120Spells::Hunter::EXHILARATION, + SPELL_SURVIVAL_OF_FITTEST = WoW120Spells::Hunter::SURVIVAL_OF_THE_FITTEST }; /** @@ -957,7 +957,7 @@ private: void UpdatePetManagement() { _petManager.EnsurePetActive(GetBot()->GetVictim()); } void SummonPet() { GetBot()->CastSpell(CastSpellTargetArg(GetBot()), SPELL_CALL_PET_SURV); } void MendPetIfNeeded() { if (_petManager.HasActivePet()) _petManager.EnsurePetActive(GetBot()->GetVictim()); } - void FeedPetIfNeeded() { /* Feeding not implemented in WoW 11.2 */ } + void FeedPetIfNeeded() { /* Feeding not implemented in WoW 12.0 */ } bool HasActivePet() const { return _petManager.HasActivePet(); } ::Playerbot::PetInfo GetPetInfo() const { diff --git a/src/modules/Playerbot/AI/ClassAI/Mages/ArcaneMage.h b/src/modules/Playerbot/AI/ClassAI/Mages/ArcaneMage.h index 7ff3ca421..5f1748071 100644 --- a/src/modules/Playerbot/AI/ClassAI/Mages/ArcaneMage.h +++ b/src/modules/Playerbot/AI/ClassAI/Mages/ArcaneMage.h @@ -21,7 +21,7 @@ #include "../Common/StatusEffectTracker.h" #include "../Common/CooldownManager.h" #include "../Common/RotationHelpers.h" -#include "../SpellValidation_WoW112.h" +#include "../SpellValidation_WoW120.h" #include "Player.h" #include "SpellAuras.h" #include "SpellMgr.h" @@ -51,29 +51,29 @@ using bot::ai::SpellCategory; // Note: bot::ai::Action() conflicts with Playerbot::Action, use bot::ai::Action() explicitly -// WoW 11.2 (The War Within) - Arcane Mage Spell IDs -// Use central spell registry (SpellValidation_WoW112.h) +// WoW 12.0 (The War Within) - Arcane Mage Spell IDs +// Use central spell registry (SpellValidation_WoW120.h) namespace ArcaneMageSpells { // Arcane Spec Spells - constexpr uint32 ARCANE_BLAST = WoW112Spells::Mage::Arcane::ARCANE_BLAST; - constexpr uint32 ARCANE_MISSILES = WoW112Spells::Mage::Arcane::ARCANE_MISSILES; - constexpr uint32 ARCANE_BARRAGE = WoW112Spells::Mage::Arcane::ARCANE_BARRAGE; - constexpr uint32 ARCANE_SURGE = WoW112Spells::Mage::Arcane::ARCANE_SURGE; - constexpr uint32 ARCANE_ORB = WoW112Spells::Mage::Arcane::ARCANE_ORB; - constexpr uint32 EVOCATION = WoW112Spells::Mage::Arcane::EVOCATION; - constexpr uint32 TOUCH_OF_MAGE = WoW112Spells::Mage::Arcane::TOUCH_OF_THE_MAGI; - constexpr uint32 ARCANE_FAMILIAR = WoW112Spells::Mage::Arcane::ARCANE_FAMILIAR; - constexpr uint32 PRESENCE_OF_MIND = WoW112Spells::Mage::Arcane::PRESENCE_OF_MIND; - constexpr uint32 ARCANE_EXPLOSION = WoW112Spells::Mage::Arcane::ARCANE_EXPLOSION; - constexpr uint32 SUPERNOVA = WoW112Spells::Mage::Arcane::SUPERNOVA; - constexpr uint32 SHIFTING_POWER = WoW112Spells::Mage::Arcane::SHIFTING_POWER; + constexpr uint32 ARCANE_BLAST = WoW120Spells::Mage::Arcane::ARCANE_BLAST; + constexpr uint32 ARCANE_MISSILES = WoW120Spells::Mage::Arcane::ARCANE_MISSILES; + constexpr uint32 ARCANE_BARRAGE = WoW120Spells::Mage::Arcane::ARCANE_BARRAGE; + constexpr uint32 ARCANE_SURGE = WoW120Spells::Mage::Arcane::ARCANE_SURGE; + constexpr uint32 ARCANE_ORB = WoW120Spells::Mage::Arcane::ARCANE_ORB; + constexpr uint32 EVOCATION = WoW120Spells::Mage::Arcane::EVOCATION; + constexpr uint32 TOUCH_OF_MAGE = WoW120Spells::Mage::Arcane::TOUCH_OF_THE_MAGI; + constexpr uint32 ARCANE_FAMILIAR = WoW120Spells::Mage::Arcane::ARCANE_FAMILIAR; + constexpr uint32 PRESENCE_OF_MIND = WoW120Spells::Mage::Arcane::PRESENCE_OF_MIND; + constexpr uint32 ARCANE_EXPLOSION = WoW120Spells::Mage::Arcane::ARCANE_EXPLOSION; + constexpr uint32 SUPERNOVA = WoW120Spells::Mage::Arcane::SUPERNOVA; + constexpr uint32 SHIFTING_POWER = WoW120Spells::Mage::Arcane::SHIFTING_POWER; // Common Mage Spells - constexpr uint32 ARCANE_INTELLECT = WoW112Spells::Mage::ARCANE_INTELLECT; - constexpr uint32 ICE_BLOCK = WoW112Spells::Mage::ICE_BLOCK; - constexpr uint32 MIRROR_IMAGE = WoW112Spells::Mage::MIRROR_IMAGE; - constexpr uint32 TIME_WARP = WoW112Spells::Mage::TIME_WARP; + constexpr uint32 ARCANE_INTELLECT = WoW120Spells::Mage::ARCANE_INTELLECT; + constexpr uint32 ICE_BLOCK = WoW120Spells::Mage::ICE_BLOCK; + constexpr uint32 MIRROR_IMAGE = WoW120Spells::Mage::MIRROR_IMAGE; + constexpr uint32 TIME_WARP = WoW120Spells::Mage::TIME_WARP; } // Make spells available in the namespace diff --git a/src/modules/Playerbot/AI/ClassAI/Mages/FireMage.h b/src/modules/Playerbot/AI/ClassAI/Mages/FireMage.h index c2882b6e0..cac980e0f 100644 --- a/src/modules/Playerbot/AI/ClassAI/Mages/FireMage.h +++ b/src/modules/Playerbot/AI/ClassAI/Mages/FireMage.h @@ -21,7 +21,7 @@ #include "../Common/StatusEffectTracker.h" #include "../Common/CooldownManager.h" #include "../Common/RotationHelpers.h" -#include "../SpellValidation_WoW112.h" +#include "../SpellValidation_WoW120.h" #include "Player.h" #include "SpellAuras.h" #include "SpellMgr.h" @@ -49,29 +49,29 @@ using bot::ai::SpellCategory; // Note: bot::ai::Action() conflicts with Playerbot::Action, use bot::ai::Action() explicitly -// WoW 11.2 (The War Within) - Fire Mage Spell IDs -// Use central spell registry (SpellValidation_WoW112.h) +// WoW 12.0 (The War Within) - Fire Mage Spell IDs +// Use central spell registry (SpellValidation_WoW120.h) namespace FireMageSpells { // Fire Spec Spells - constexpr uint32 FIRE_FIREBALL = WoW112Spells::Mage::FIREBALL; - constexpr uint32 FIRE_PYROBLAST = WoW112Spells::Mage::Fire::PYROBLAST; - constexpr uint32 FIRE_FIRE_BLAST = WoW112Spells::Mage::Fire::FIRE_BLAST; + constexpr uint32 FIRE_FIREBALL = WoW120Spells::Mage::FIREBALL; + constexpr uint32 FIRE_PYROBLAST = WoW120Spells::Mage::Fire::PYROBLAST; + constexpr uint32 FIRE_FIRE_BLAST = WoW120Spells::Mage::Fire::FIRE_BLAST; constexpr uint32 FIRE_FIREBLAST = FIRE_FIRE_BLAST; // Alias for consistency - constexpr uint32 FIRE_SCORCH = WoW112Spells::Mage::Fire::SCORCH; - constexpr uint32 FIRE_FLAMESTRIKE = WoW112Spells::Mage::Fire::FLAMESTRIKE; - constexpr uint32 FIRE_PHOENIX_FLAMES = WoW112Spells::Mage::Fire::PHOENIX_FLAMES; - constexpr uint32 FIRE_COMBUSTION = WoW112Spells::Mage::Fire::COMBUSTION; - constexpr uint32 FIRE_DRAGON_BREATH = WoW112Spells::Mage::DRAGONS_BREATH; - constexpr uint32 FIRE_METEOR = WoW112Spells::Mage::Fire::METEOR; - constexpr uint32 FIRE_LIVING_BOMB = WoW112Spells::Mage::Fire::LIVING_BOMB; - constexpr uint32 FIRE_BLAZING_BARRIER = WoW112Spells::Mage::Fire::BLAZING_BARRIER; + constexpr uint32 FIRE_SCORCH = WoW120Spells::Mage::Fire::SCORCH; + constexpr uint32 FIRE_FLAMESTRIKE = WoW120Spells::Mage::Fire::FLAMESTRIKE; + constexpr uint32 FIRE_PHOENIX_FLAMES = WoW120Spells::Mage::Fire::PHOENIX_FLAMES; + constexpr uint32 FIRE_COMBUSTION = WoW120Spells::Mage::Fire::COMBUSTION; + constexpr uint32 FIRE_DRAGON_BREATH = WoW120Spells::Mage::DRAGONS_BREATH; + constexpr uint32 FIRE_METEOR = WoW120Spells::Mage::Fire::METEOR; + constexpr uint32 FIRE_LIVING_BOMB = WoW120Spells::Mage::Fire::LIVING_BOMB; + constexpr uint32 FIRE_BLAZING_BARRIER = WoW120Spells::Mage::Fire::BLAZING_BARRIER; // Common Mage Spells - constexpr uint32 FIRE_ICE_BLOCK = WoW112Spells::Mage::ICE_BLOCK; - constexpr uint32 FIRE_MIRROR_IMAGE = WoW112Spells::Mage::MIRROR_IMAGE; - constexpr uint32 FIRE_SHIFTING_POWER = WoW112Spells::Mage::SHIFTING_POWER_COMMON; - constexpr uint32 FIRE_TIME_WARP = WoW112Spells::Mage::TIME_WARP; + constexpr uint32 FIRE_ICE_BLOCK = WoW120Spells::Mage::ICE_BLOCK; + constexpr uint32 FIRE_MIRROR_IMAGE = WoW120Spells::Mage::MIRROR_IMAGE; + constexpr uint32 FIRE_SHIFTING_POWER = WoW120Spells::Mage::SHIFTING_POWER_COMMON; + constexpr uint32 FIRE_TIME_WARP = WoW120Spells::Mage::TIME_WARP; } // Make spells available in the namespace diff --git a/src/modules/Playerbot/AI/ClassAI/Mages/FrostMage.h b/src/modules/Playerbot/AI/ClassAI/Mages/FrostMage.h index 5290f861d..204a39682 100644 --- a/src/modules/Playerbot/AI/ClassAI/Mages/FrostMage.h +++ b/src/modules/Playerbot/AI/ClassAI/Mages/FrostMage.h @@ -21,7 +21,7 @@ #include "../Common/StatusEffectTracker.h" #include "../Common/CooldownManager.h" #include "../Common/RotationHelpers.h" -#include "../SpellValidation_WoW112.h" +#include "../SpellValidation_WoW120.h" #include "Player.h" #include "SpellAuras.h" #include "SpellMgr.h" @@ -50,29 +50,29 @@ using bot::ai::SpellCategory; // Note: bot::ai::Action() conflicts with Playerbot::Action, use bot::ai::Action() explicitly -// WoW 11.2 (The War Within) - Frost Mage Spell IDs -// Use central spell registry (SpellValidation_WoW112.h) +// WoW 12.0 (The War Within) - Frost Mage Spell IDs +// Use central spell registry (SpellValidation_WoW120.h) namespace FrostMageSpells { // Frost Spec Spells - constexpr uint32 FROST_FROSTBOLT = WoW112Spells::Mage::FROSTBOLT; - constexpr uint32 FROST_ICE_LANCE = WoW112Spells::Mage::Frost::ICE_LANCE; - constexpr uint32 FROST_FLURRY = WoW112Spells::Mage::Frost::FLURRY; - constexpr uint32 FROST_FROZEN_ORB = WoW112Spells::Mage::Frost::FROZEN_ORB; - constexpr uint32 FROST_BLIZZARD = WoW112Spells::Mage::Frost::BLIZZARD; - constexpr uint32 FROST_COMET_STORM = WoW112Spells::Mage::Frost::COMET_STORM; - constexpr uint32 FROST_RAY_OF_FROST = WoW112Spells::Mage::Frost::RAY_OF_FROST; - constexpr uint32 FROST_GLACIAL_SPIKE = WoW112Spells::Mage::Frost::GLACIAL_SPIKE; - constexpr uint32 FROST_ICY_VEINS = WoW112Spells::Mage::Frost::ICY_VEINS; - constexpr uint32 FROST_CONE_OF_COLD = WoW112Spells::Mage::Frost::CONE_OF_COLD; - constexpr uint32 FROST_FREEZE = WoW112Spells::Mage::Frost::FREEZE; - constexpr uint32 FROST_SUMMON_WATER_ELEMENTAL = WoW112Spells::Mage::Frost::SUMMON_WATER_ELEMENTAL; - constexpr uint32 FROST_ICE_BARRIER = WoW112Spells::Mage::Frost::ICE_BARRIER; + constexpr uint32 FROST_FROSTBOLT = WoW120Spells::Mage::FROSTBOLT; + constexpr uint32 FROST_ICE_LANCE = WoW120Spells::Mage::Frost::ICE_LANCE; + constexpr uint32 FROST_FLURRY = WoW120Spells::Mage::Frost::FLURRY; + constexpr uint32 FROST_FROZEN_ORB = WoW120Spells::Mage::Frost::FROZEN_ORB; + constexpr uint32 FROST_BLIZZARD = WoW120Spells::Mage::Frost::BLIZZARD; + constexpr uint32 FROST_COMET_STORM = WoW120Spells::Mage::Frost::COMET_STORM; + constexpr uint32 FROST_RAY_OF_FROST = WoW120Spells::Mage::Frost::RAY_OF_FROST; + constexpr uint32 FROST_GLACIAL_SPIKE = WoW120Spells::Mage::Frost::GLACIAL_SPIKE; + constexpr uint32 FROST_ICY_VEINS = WoW120Spells::Mage::Frost::ICY_VEINS; + constexpr uint32 FROST_CONE_OF_COLD = WoW120Spells::Mage::Frost::CONE_OF_COLD; + constexpr uint32 FROST_FREEZE = WoW120Spells::Mage::Frost::FREEZE; + constexpr uint32 FROST_SUMMON_WATER_ELEMENTAL = WoW120Spells::Mage::Frost::SUMMON_WATER_ELEMENTAL; + constexpr uint32 FROST_ICE_BARRIER = WoW120Spells::Mage::Frost::ICE_BARRIER; // Common Mage Spells - constexpr uint32 FROST_ICE_BLOCK = WoW112Spells::Mage::ICE_BLOCK; - constexpr uint32 FROST_MIRROR_IMAGE = WoW112Spells::Mage::MIRROR_IMAGE; - constexpr uint32 FROST_SHIFTING_POWER = WoW112Spells::Mage::SHIFTING_POWER_COMMON; + constexpr uint32 FROST_ICE_BLOCK = WoW120Spells::Mage::ICE_BLOCK; + constexpr uint32 FROST_MIRROR_IMAGE = WoW120Spells::Mage::MIRROR_IMAGE; + constexpr uint32 FROST_SHIFTING_POWER = WoW120Spells::Mage::SHIFTING_POWER_COMMON; } // Make spells available in the namespace diff --git a/src/modules/Playerbot/AI/ClassAI/Mages/MageAI.h b/src/modules/Playerbot/AI/ClassAI/Mages/MageAI.h index f476a92c9..7e3f32be0 100644 --- a/src/modules/Playerbot/AI/ClassAI/Mages/MageAI.h +++ b/src/modules/Playerbot/AI/ClassAI/Mages/MageAI.h @@ -10,7 +10,7 @@ #pragma once #include "../ClassAI.h" -#include "../SpellValidation_WoW112.h" +#include "../SpellValidation_WoW120.h" #include "Threading/LockHierarchy.h" #include "Position.h" #include "../../Combat/BotThreatManager.h" @@ -194,59 +194,59 @@ private: } } _combatMetrics; - // Mage spell IDs - Using central registry (WoW 11.2) - static constexpr uint32 ARCANE_MISSILES = WoW112Spells::Mage::Common::ARCANE_MISSILES; - static constexpr uint32 ARCANE_BLAST = WoW112Spells::Mage::Common::ARCANE_BLAST; - static constexpr uint32 ARCANE_BARRAGE = WoW112Spells::Mage::Common::ARCANE_BARRAGE; - static constexpr uint32 ARCANE_ORB = WoW112Spells::Mage::Common::ARCANE_ORB; - static constexpr uint32 ARCANE_POWER = WoW112Spells::Mage::Common::ARCANE_POWER; - static constexpr uint32 ARCANE_INTELLECT = WoW112Spells::Mage::Common::ARCANE_INTELLECT; - static constexpr uint32 ARCANE_EXPLOSION = WoW112Spells::Mage::Common::ARCANE_EXPLOSION; + // Mage spell IDs - Using central registry (WoW 12.0) + static constexpr uint32 ARCANE_MISSILES = WoW120Spells::Mage::Common::ARCANE_MISSILES; + static constexpr uint32 ARCANE_BLAST = WoW120Spells::Mage::Common::ARCANE_BLAST; + static constexpr uint32 ARCANE_BARRAGE = WoW120Spells::Mage::Common::ARCANE_BARRAGE; + static constexpr uint32 ARCANE_ORB = WoW120Spells::Mage::Common::ARCANE_ORB; + static constexpr uint32 ARCANE_POWER = WoW120Spells::Mage::Common::ARCANE_POWER; + static constexpr uint32 ARCANE_INTELLECT = WoW120Spells::Mage::Common::ARCANE_INTELLECT; + static constexpr uint32 ARCANE_EXPLOSION = WoW120Spells::Mage::Common::ARCANE_EXPLOSION; // Fire spells - static constexpr uint32 FIREBALL = WoW112Spells::Mage::Common::FIREBALL; - static constexpr uint32 FIRE_BLAST = WoW112Spells::Mage::Common::FIRE_BLAST; - static constexpr uint32 PYROBLAST = WoW112Spells::Mage::Common::PYROBLAST; - static constexpr uint32 FLAMESTRIKE = WoW112Spells::Mage::Common::FLAMESTRIKE; - static constexpr uint32 SCORCH = WoW112Spells::Mage::Common::SCORCH; - static constexpr uint32 COMBUSTION = WoW112Spells::Mage::Common::COMBUSTION; - static constexpr uint32 LIVING_BOMB = WoW112Spells::Mage::Common::LIVING_BOMB; - static constexpr uint32 DRAGON_BREATH = WoW112Spells::Mage::Common::DRAGONS_BREATH; + static constexpr uint32 FIREBALL = WoW120Spells::Mage::Common::FIREBALL; + static constexpr uint32 FIRE_BLAST = WoW120Spells::Mage::Common::FIRE_BLAST; + static constexpr uint32 PYROBLAST = WoW120Spells::Mage::Common::PYROBLAST; + static constexpr uint32 FLAMESTRIKE = WoW120Spells::Mage::Common::FLAMESTRIKE; + static constexpr uint32 SCORCH = WoW120Spells::Mage::Common::SCORCH; + static constexpr uint32 COMBUSTION = WoW120Spells::Mage::Common::COMBUSTION; + static constexpr uint32 LIVING_BOMB = WoW120Spells::Mage::Common::LIVING_BOMB; + static constexpr uint32 DRAGON_BREATH = WoW120Spells::Mage::Common::DRAGONS_BREATH; // Frost spells - static constexpr uint32 FROSTBOLT = WoW112Spells::Mage::Common::FROSTBOLT; - static constexpr uint32 ICE_LANCE = WoW112Spells::Mage::Common::ICE_LANCE; - static constexpr uint32 FROZEN_ORB = WoW112Spells::Mage::Common::FROZEN_ORB; - static constexpr uint32 BLIZZARD = WoW112Spells::Mage::Common::BLIZZARD; - static constexpr uint32 CONE_OF_COLD = WoW112Spells::Mage::Common::CONE_OF_COLD; - static constexpr uint32 ICY_VEINS = WoW112Spells::Mage::Common::ICY_VEINS; - static constexpr uint32 WATER_ELEMENTAL = WoW112Spells::Mage::Common::SUMMON_WATER_ELEMENTAL; - static constexpr uint32 ICE_BARRIER = WoW112Spells::Mage::Common::ICE_BARRIER; - static constexpr uint32 FROST_NOVA = WoW112Spells::Mage::Common::FROST_NOVA; + static constexpr uint32 FROSTBOLT = WoW120Spells::Mage::Common::FROSTBOLT; + static constexpr uint32 ICE_LANCE = WoW120Spells::Mage::Common::ICE_LANCE; + static constexpr uint32 FROZEN_ORB = WoW120Spells::Mage::Common::FROZEN_ORB; + static constexpr uint32 BLIZZARD = WoW120Spells::Mage::Common::BLIZZARD; + static constexpr uint32 CONE_OF_COLD = WoW120Spells::Mage::Common::CONE_OF_COLD; + static constexpr uint32 ICY_VEINS = WoW120Spells::Mage::Common::ICY_VEINS; + static constexpr uint32 WATER_ELEMENTAL = WoW120Spells::Mage::Common::SUMMON_WATER_ELEMENTAL; + static constexpr uint32 ICE_BARRIER = WoW120Spells::Mage::Common::ICE_BARRIER; + static constexpr uint32 FROST_NOVA = WoW120Spells::Mage::Common::FROST_NOVA; // Crowd control - static constexpr uint32 POLYMORPH = WoW112Spells::Mage::Common::POLYMORPH; - static constexpr uint32 COUNTERSPELL = WoW112Spells::Mage::Common::COUNTERSPELL; + static constexpr uint32 POLYMORPH = WoW120Spells::Mage::Common::POLYMORPH; + static constexpr uint32 COUNTERSPELL = WoW120Spells::Mage::Common::COUNTERSPELL; // Defensive abilities - static constexpr uint32 BLINK = WoW112Spells::Mage::Common::BLINK; - static constexpr uint32 SHIMMER = WoW112Spells::Mage::Common::SHIMMER; - static constexpr uint32 INVISIBILITY = WoW112Spells::Mage::Common::INVISIBILITY; - static constexpr uint32 GREATER_INVISIBILITY = WoW112Spells::Mage::Common::GREATER_INVISIBILITY; - static constexpr uint32 ICE_BLOCK = WoW112Spells::Mage::Common::ICE_BLOCK; - static constexpr uint32 BLAZING_BARRIER = WoW112Spells::Mage::Common::BLAZING_BARRIER; + static constexpr uint32 BLINK = WoW120Spells::Mage::Common::BLINK; + static constexpr uint32 SHIMMER = WoW120Spells::Mage::Common::SHIMMER; + static constexpr uint32 INVISIBILITY = WoW120Spells::Mage::Common::INVISIBILITY; + static constexpr uint32 GREATER_INVISIBILITY = WoW120Spells::Mage::Common::GREATER_INVISIBILITY; + static constexpr uint32 ICE_BLOCK = WoW120Spells::Mage::Common::ICE_BLOCK; + static constexpr uint32 BLAZING_BARRIER = WoW120Spells::Mage::Common::BLAZING_BARRIER; // Utility - static constexpr uint32 MIRROR_IMAGE = WoW112Spells::Mage::MIRROR_IMAGE; - static constexpr uint32 PRESENCE_OF_MIND = WoW112Spells::Mage::Common::PRESENCE_OF_MIND; - static constexpr uint32 TIME_WARP = WoW112Spells::Mage::Common::TIME_WARP; - static constexpr uint32 TELEPORT_STORMWIND = WoW112Spells::Mage::Common::TELEPORT_STORMWIND; - static constexpr uint32 TELEPORT_IRONFORGE = WoW112Spells::Mage::Common::TELEPORT_IRONFORGE; - static constexpr uint32 PORTAL_STORMWIND = WoW112Spells::Mage::Common::PORTAL_STORMWIND; - static constexpr uint32 PORTAL_IRONFORGE = WoW112Spells::Mage::Common::PORTAL_IRONFORGE; + static constexpr uint32 MIRROR_IMAGE = WoW120Spells::Mage::MIRROR_IMAGE; + static constexpr uint32 PRESENCE_OF_MIND = WoW120Spells::Mage::Common::PRESENCE_OF_MIND; + static constexpr uint32 TIME_WARP = WoW120Spells::Mage::Common::TIME_WARP; + static constexpr uint32 TELEPORT_STORMWIND = WoW120Spells::Mage::Common::TELEPORT_STORMWIND; + static constexpr uint32 TELEPORT_IRONFORGE = WoW120Spells::Mage::Common::TELEPORT_IRONFORGE; + static constexpr uint32 PORTAL_STORMWIND = WoW120Spells::Mage::Common::PORTAL_STORMWIND; + static constexpr uint32 PORTAL_IRONFORGE = WoW120Spells::Mage::Common::PORTAL_IRONFORGE; // Conjure spells - static constexpr uint32 CONJURE_REFRESHMENT = WoW112Spells::Mage::CONJURE_REFRESHMENT; + static constexpr uint32 CONJURE_REFRESHMENT = WoW120Spells::Mage::CONJURE_REFRESHMENT; // Helper methods bool IsChanneling(); diff --git a/src/modules/Playerbot/AI/ClassAI/Monks/BrewmasterMonk.h b/src/modules/Playerbot/AI/ClassAI/Monks/BrewmasterMonk.h index c12b344b2..06a91d5ac 100644 --- a/src/modules/Playerbot/AI/ClassAI/Monks/BrewmasterMonk.h +++ b/src/modules/Playerbot/AI/ClassAI/Monks/BrewmasterMonk.h @@ -16,7 +16,7 @@ #include "../CombatSpecializationTemplates.h" #include "../ResourceTypes.h" #include "../../Services/ThreatAssistant.h" -#include "../SpellValidation_WoW112.h" +#include "../SpellValidation_WoW120.h" #include "Player.h" #include "SpellMgr.h" #include "SpellAuraEffects.h" @@ -41,14 +41,14 @@ using bot::ai::SpellCategory; // Note: bot::ai::Action() conflicts with Playerbot::Action, use bot::ai::Action() explicitly // ============================================================================ -// BREWMASTER MONK SPELL IDs (WoW 11.2 - The War Within) -// Using centralized spell registry from SpellValidation_WoW112.h +// BREWMASTER MONK SPELL IDs (WoW 12.0 - The War Within) +// Using centralized spell registry from SpellValidation_WoW120.h // ============================================================================ namespace BrewmasterMonkSpells { // Import from central registry - Monk common spells - using namespace WoW112Spells::Monk; + using namespace WoW120Spells::Monk; // Chi Generators constexpr uint32 KEG_SMASH = Brewmaster::KEG_SMASH; diff --git a/src/modules/Playerbot/AI/ClassAI/Monks/MistweaverMonk.h b/src/modules/Playerbot/AI/ClassAI/Monks/MistweaverMonk.h index c4ac26c8f..4c2762a06 100644 --- a/src/modules/Playerbot/AI/ClassAI/Monks/MistweaverMonk.h +++ b/src/modules/Playerbot/AI/ClassAI/Monks/MistweaverMonk.h @@ -15,7 +15,7 @@ #include "../Common/RotationHelpers.h" #include "../CombatSpecializationTemplates.h" #include "../ResourceTypes.h" -#include "../SpellValidation_WoW112.h" +#include "../SpellValidation_WoW120.h" #include "Player.h" #include "SpellMgr.h" #include "SpellAuraEffects.h" @@ -42,14 +42,14 @@ using bot::ai::SpellCategory; // Note: bot::ai::Action() conflicts with Playerbot::Action, use bot::ai::Action() explicitly // ============================================================================ -// MISTWEAVER MONK SPELL IDs (WoW 11.2 - The War Within) -// Using centralized spell registry from SpellValidation_WoW112.h +// MISTWEAVER MONK SPELL IDs (WoW 12.0 - The War Within) +// Using centralized spell registry from SpellValidation_WoW120.h // ============================================================================ namespace MistweaverMonkSpells { // Import from central registry - Monk common spells - using namespace WoW112Spells::Monk; + using namespace WoW120Spells::Monk; // Direct Heals constexpr uint32 VIVIFY = Mistweaver::VIVIFY; @@ -89,7 +89,7 @@ namespace MistweaverMonkSpells constexpr uint32 SPINNING_CRANE_KICK_MIST = Mistweaver::SPINNING_CRANE_KICK_MW; // Procs and Buffs - constexpr uint32 TEACHINGS_OF_THE_MONASTERY_MW = WoW112Spells::Monk::TEACHINGS_OF_THE_MONASTERY; + constexpr uint32 TEACHINGS_OF_THE_MONASTERY_MW = WoW120Spells::Monk::TEACHINGS_OF_THE_MONASTERY; constexpr uint32 ANCIENT_TEACHINGS = Mistweaver::ANCIENT_TEACHINGS; constexpr uint32 FAELINE_STOMP = Mistweaver::FAELINE_STOMP; diff --git a/src/modules/Playerbot/AI/ClassAI/Monks/MonkAI.cpp b/src/modules/Playerbot/AI/ClassAI/Monks/MonkAI.cpp index 452530326..669587ab4 100644 --- a/src/modules/Playerbot/AI/ClassAI/Monks/MonkAI.cpp +++ b/src/modules/Playerbot/AI/ClassAI/Monks/MonkAI.cpp @@ -287,7 +287,7 @@ void MonkAI::UpdateBuffs() return; // Note: Legacy of the White Tiger / Legacy of the Emperor were removed in modern WoW - // These raid-wide stat buffs are no longer available in WoW 11.2 + // These raid-wide stat buffs are no longer available in WoW 12.0 // Specialization-specific buff management ChrSpecialization spec = bot->GetPrimarySpecialization(); @@ -296,7 +296,7 @@ void MonkAI::UpdateBuffs() { case 268: // Brewmaster { - // Maintain Celestial Brew uptime when tanking (replaced Ironskin Brew in WoW 11.2) + // Maintain Celestial Brew uptime when tanking (replaced Ironskin Brew in WoW 12.0) if (!bot->HasAura(CELESTIAL_BREW) && bot->IsInCombat()) { if (bot->HasSpell(CELESTIAL_BREW) && HasEnoughResource(CELESTIAL_BREW)) @@ -1178,7 +1178,7 @@ void MonkAI::ExecuteBrewmasterRotation(::Unit* target) } } - // Maintain Celestial Brew (replaced Ironskin Brew in WoW 11.2) + // Maintain Celestial Brew (replaced Ironskin Brew in WoW 12.0) if (CanUseAbility(CELESTIAL_BREW)) { if (!GetBot()->HasAura(CELESTIAL_BREW)) diff --git a/src/modules/Playerbot/AI/ClassAI/Monks/MonkAI.h b/src/modules/Playerbot/AI/ClassAI/Monks/MonkAI.h index faba82c3f..726c2a436 100644 --- a/src/modules/Playerbot/AI/ClassAI/Monks/MonkAI.h +++ b/src/modules/Playerbot/AI/ClassAI/Monks/MonkAI.h @@ -10,7 +10,7 @@ #pragma once #include "../ClassAI.h" -#include "../SpellValidation_WoW112.h" +#include "../SpellValidation_WoW120.h" #include "Position.h" #include "Group.h" #include "Creature.h" @@ -750,82 +750,82 @@ private: static constexpr uint32 TOUCH_OF_DEATH_THRESHOLD = 15; // 15% health // Spell IDs - // Monk Spell IDs - Using central registry (WoW 11.2) - // All spell IDs now reference WoW112Spells::Monk namespace for consistency + // Monk Spell IDs - Using central registry (WoW 12.0) + // All spell IDs now reference WoW120Spells::Monk namespace for consistency enum MonkSpells { // Chi generators - TIGER_PALM = WoW112Spells::Monk::Common::TIGER_PALM, - EXPEL_HARM = WoW112Spells::Monk::Common::EXPEL_HARM, - CHI_WAVE = WoW112Spells::Monk::Common::CHI_WAVE, - CHI_BURST = WoW112Spells::Monk::Common::CHI_BURST, + TIGER_PALM = WoW120Spells::Monk::Common::TIGER_PALM, + EXPEL_HARM = WoW120Spells::Monk::Common::EXPEL_HARM, + CHI_WAVE = WoW120Spells::Monk::Common::CHI_WAVE, + CHI_BURST = WoW120Spells::Monk::Common::CHI_BURST, // Basic attacks - BLACKOUT_KICK = WoW112Spells::Monk::Common::BLACKOUT_KICK, - RISING_SUN_KICK = WoW112Spells::Monk::Common::RISING_SUN_KICK, - SPINNING_CRANE_KICK = WoW112Spells::Monk::Common::SPINNING_CRANE_KICK, + BLACKOUT_KICK = WoW120Spells::Monk::Common::BLACKOUT_KICK, + RISING_SUN_KICK = WoW120Spells::Monk::Common::RISING_SUN_KICK, + SPINNING_CRANE_KICK = WoW120Spells::Monk::Common::SPINNING_CRANE_KICK, // Windwalker abilities - FISTS_OF_FURY = WoW112Spells::Monk::Common::FISTS_OF_FURY, - WHIRLING_DRAGON_PUNCH = WoW112Spells::Monk::Common::WHIRLING_DRAGON_PUNCH, - STORM_EARTH_AND_FIRE = WoW112Spells::Monk::Common::STORM_EARTH_AND_FIRE, - TOUCH_OF_DEATH = WoW112Spells::Monk::Common::TOUCH_OF_DEATH, - FLYING_SERPENT_KICK = WoW112Spells::Monk::Common::FLYING_SERPENT_KICK, - MARK_OF_THE_CRANE = WoW112Spells::Monk::Common::MARK_OF_THE_CRANE, - RUSHING_JADE_WIND = WoW112Spells::Monk::Common::RUSHING_JADE_WIND, - SERENITY = WoW112Spells::Monk::Common::SERENITY, + FISTS_OF_FURY = WoW120Spells::Monk::Common::FISTS_OF_FURY, + WHIRLING_DRAGON_PUNCH = WoW120Spells::Monk::Common::WHIRLING_DRAGON_PUNCH, + STORM_EARTH_AND_FIRE = WoW120Spells::Monk::Common::STORM_EARTH_AND_FIRE, + TOUCH_OF_DEATH = WoW120Spells::Monk::Common::TOUCH_OF_DEATH, + FLYING_SERPENT_KICK = WoW120Spells::Monk::Common::FLYING_SERPENT_KICK, + MARK_OF_THE_CRANE = WoW120Spells::Monk::Common::MARK_OF_THE_CRANE, + RUSHING_JADE_WIND = WoW120Spells::Monk::Common::RUSHING_JADE_WIND, + SERENITY = WoW120Spells::Monk::Common::SERENITY, // Brewmaster abilities - KEG_SMASH = WoW112Spells::Monk::Common::KEG_SMASH, - BREATH_OF_FIRE = WoW112Spells::Monk::Common::BREATH_OF_FIRE, - CELESTIAL_BREW = WoW112Spells::Monk::Common::CELESTIAL_BREW, // Replaced IRONSKIN_BREW in WoW 11.2 - PURIFYING_BREW = WoW112Spells::Monk::Common::PURIFYING_BREW, - FORTIFYING_BREW = WoW112Spells::Monk::Common::FORTIFYING_BREW, - BLACK_OX_BREW = WoW112Spells::Monk::Common::BLACK_OX_BREW, - STAGGER = WoW112Spells::Monk::Common::STAGGER, - STAGGER_HEAVY = WoW112Spells::Monk::Common::STAGGER_HEAVY, - STAGGER_MODERATE = WoW112Spells::Monk::Common::STAGGER_MODERATE, - STAGGER_LIGHT = WoW112Spells::Monk::Common::STAGGER_LIGHT, - ZEN_MEDITATION = WoW112Spells::Monk::Common::ZEN_MEDITATION, - DAMPEN_HARM = WoW112Spells::Monk::Common::DAMPEN_HARM, + KEG_SMASH = WoW120Spells::Monk::Common::KEG_SMASH, + BREATH_OF_FIRE = WoW120Spells::Monk::Common::BREATH_OF_FIRE, + CELESTIAL_BREW = WoW120Spells::Monk::Common::CELESTIAL_BREW, // Replaced IRONSKIN_BREW in WoW 12.0 + PURIFYING_BREW = WoW120Spells::Monk::Common::PURIFYING_BREW, + FORTIFYING_BREW = WoW120Spells::Monk::Common::FORTIFYING_BREW, + BLACK_OX_BREW = WoW120Spells::Monk::Common::BLACK_OX_BREW, + STAGGER = WoW120Spells::Monk::Common::STAGGER, + STAGGER_HEAVY = WoW120Spells::Monk::Common::STAGGER_HEAVY, + STAGGER_MODERATE = WoW120Spells::Monk::Common::STAGGER_MODERATE, + STAGGER_LIGHT = WoW120Spells::Monk::Common::STAGGER_LIGHT, + ZEN_MEDITATION = WoW120Spells::Monk::Common::ZEN_MEDITATION, + DAMPEN_HARM = WoW120Spells::Monk::Common::DAMPEN_HARM, // Mistweaver abilities - RENEWING_MIST = WoW112Spells::Monk::Common::RENEWING_MIST, - ENVELOPING_MIST = WoW112Spells::Monk::Common::ENVELOPING_MIST, - VIVIFY = WoW112Spells::Monk::Common::VIVIFY, - ESSENCE_FONT = WoW112Spells::Monk::Common::ESSENCE_FONT, - SOOTHING_MIST = WoW112Spells::Monk::Common::SOOTHING_MIST, - LIFE_COCOON = WoW112Spells::Monk::Common::LIFE_COCOON, - REVIVAL = WoW112Spells::Monk::Common::REVIVAL, - THUNDER_FOCUS_TEA = WoW112Spells::Monk::Common::THUNDER_FOCUS_TEA, - MANA_TEA = WoW112Spells::Monk::Common::MANA_TEA, - TEACHINGS_OF_THE_MONASTERY = WoW112Spells::Monk::Common::TEACHINGS_OF_THE_MONASTERY, - SHEILUNS_GIFT = WoW112Spells::Monk::Common::SHEILUNS_GIFT, // WoW 11.2 ID: 399491 + RENEWING_MIST = WoW120Spells::Monk::Common::RENEWING_MIST, + ENVELOPING_MIST = WoW120Spells::Monk::Common::ENVELOPING_MIST, + VIVIFY = WoW120Spells::Monk::Common::VIVIFY, + ESSENCE_FONT = WoW120Spells::Monk::Common::ESSENCE_FONT, + SOOTHING_MIST = WoW120Spells::Monk::Common::SOOTHING_MIST, + LIFE_COCOON = WoW120Spells::Monk::Common::LIFE_COCOON, + REVIVAL = WoW120Spells::Monk::Common::REVIVAL, + THUNDER_FOCUS_TEA = WoW120Spells::Monk::Common::THUNDER_FOCUS_TEA, + MANA_TEA = WoW120Spells::Monk::Common::MANA_TEA, + TEACHINGS_OF_THE_MONASTERY = WoW120Spells::Monk::Common::TEACHINGS_OF_THE_MONASTERY, + SHEILUNS_GIFT = WoW120Spells::Monk::Common::SHEILUNS_GIFT, // WoW 12.0 ID: 399491 // Mobility - ROLL = WoW112Spells::Monk::Common::ROLL, - CHI_TORPEDO = WoW112Spells::Monk::Common::CHI_TORPEDO, - TRANSCENDENCE = WoW112Spells::Monk::Common::TRANSCENDENCE, - TRANSCENDENCE_TRANSFER = WoW112Spells::Monk::Common::TRANSCENDENCE_TRANSFER, - TIGERS_LUST = WoW112Spells::Monk::Common::TIGERS_LUST, + ROLL = WoW120Spells::Monk::Common::ROLL, + CHI_TORPEDO = WoW120Spells::Monk::Common::CHI_TORPEDO, + TRANSCENDENCE = WoW120Spells::Monk::Common::TRANSCENDENCE, + TRANSCENDENCE_TRANSFER = WoW120Spells::Monk::Common::TRANSCENDENCE_TRANSFER, + TIGERS_LUST = WoW120Spells::Monk::Common::TIGERS_LUST, // Utility and crowd control - PARALYSIS = WoW112Spells::Monk::Common::PARALYSIS, - LEG_SWEEP = WoW112Spells::Monk::Common::LEG_SWEEP, - SPEAR_HAND_STRIKE = WoW112Spells::Monk::Common::SPEAR_HAND_STRIKE, - RING_OF_PEACE = WoW112Spells::Monk::Common::RING_OF_PEACE, - CRACKLING_JADE_LIGHTNING = WoW112Spells::Monk::Common::CRACKLING_JADE_LIGHTNING, - DETOX = WoW112Spells::Monk::Common::DETOX, - RESUSCITATE = WoW112Spells::Monk::Common::RESUSCITATE, - PROVOKE = WoW112Spells::Monk::Common::PROVOKE, // Taunt + PARALYSIS = WoW120Spells::Monk::Common::PARALYSIS, + LEG_SWEEP = WoW120Spells::Monk::Common::LEG_SWEEP, + SPEAR_HAND_STRIKE = WoW120Spells::Monk::Common::SPEAR_HAND_STRIKE, + RING_OF_PEACE = WoW120Spells::Monk::Common::RING_OF_PEACE, + CRACKLING_JADE_LIGHTNING = WoW120Spells::Monk::Common::CRACKLING_JADE_LIGHTNING, + DETOX = WoW120Spells::Monk::Common::DETOX, + RESUSCITATE = WoW120Spells::Monk::Common::RESUSCITATE, + PROVOKE = WoW120Spells::Monk::Common::PROVOKE, // Taunt // Defensive cooldowns - TOUCH_OF_KARMA = WoW112Spells::Monk::Common::TOUCH_OF_KARMA, - DIFFUSE_MAGIC = WoW112Spells::Monk::Common::DIFFUSE_MAGIC, + TOUCH_OF_KARMA = WoW120Spells::Monk::Common::TOUCH_OF_KARMA, + DIFFUSE_MAGIC = WoW120Spells::Monk::Common::DIFFUSE_MAGIC, // Talents - using central registry where available - EYE_OF_THE_TIGER = WoW112Spells::Monk::Common::EYE_OF_THE_TIGER, - ENERGIZING_ELIXIR = WoW112Spells::Monk::Common::ENERGIZING_ELIXIR + EYE_OF_THE_TIGER = WoW120Spells::Monk::Common::EYE_OF_THE_TIGER, + ENERGIZING_ELIXIR = WoW120Spells::Monk::Common::ENERGIZING_ELIXIR }; // Advanced specialization management methods diff --git a/src/modules/Playerbot/AI/ClassAI/Monks/WindwalkerMonk.h b/src/modules/Playerbot/AI/ClassAI/Monks/WindwalkerMonk.h index 318f61d7a..e9beffae1 100644 --- a/src/modules/Playerbot/AI/ClassAI/Monks/WindwalkerMonk.h +++ b/src/modules/Playerbot/AI/ClassAI/Monks/WindwalkerMonk.h @@ -15,7 +15,7 @@ #include "../Common/RotationHelpers.h" #include "../CombatSpecializationTemplates.h" #include "../ResourceTypes.h" -#include "../SpellValidation_WoW112.h" +#include "../SpellValidation_WoW120.h" #include "Player.h" #include "SpellMgr.h" #include "SpellAuraEffects.h" @@ -40,21 +40,21 @@ using bot::ai::SpellCategory; // Note: bot::ai::Action() conflicts with Playerbot::Action, use bot::ai::Action() explicitly // ============================================================================ -// WINDWALKER MONK SPELL IDs (WoW 11.2 - The War Within) -// Using centralized spell registry from SpellValidation_WoW112.h +// WINDWALKER MONK SPELL IDs (WoW 12.0 - The War Within) +// Using centralized spell registry from SpellValidation_WoW120.h // ============================================================================ namespace WindwalkerMonkSpells { // Import from central registry - Monk common spells - using namespace WoW112Spells::Monk; + using namespace WoW120Spells::Monk; // Chi Generators constexpr uint32 TIGER_PALM_WIND = Windwalker::TIGER_PALM_WW; constexpr uint32 EXPEL_HARM_WIND = EXPEL_HARM; constexpr uint32 CHI_WAVE_WIND = Windwalker::CHI_WAVE_WW; constexpr uint32 CHI_BURST_WIND = Windwalker::CHI_BURST_WW; - constexpr uint32 CRACKLING_JADE_LIGHTNING_WW = WoW112Spells::Monk::CRACKLING_JADE_LIGHTNING; + constexpr uint32 CRACKLING_JADE_LIGHTNING_WW = WoW120Spells::Monk::CRACKLING_JADE_LIGHTNING; // Chi Spenders constexpr uint32 RISING_SUN_KICK = Windwalker::RISING_SUN_KICK_WW; diff --git a/src/modules/Playerbot/AI/ClassAI/Paladins/HolyPaladin.h b/src/modules/Playerbot/AI/ClassAI/Paladins/HolyPaladin.h index 60fa806f6..3ec958a0b 100644 --- a/src/modules/Playerbot/AI/ClassAI/Paladins/HolyPaladin.h +++ b/src/modules/Playerbot/AI/ClassAI/Paladins/HolyPaladin.h @@ -15,7 +15,7 @@ #include "../Common/RotationHelpers.h" #include "../CombatSpecializationTemplates.h" #include "../ResourceTypes.h" -#include "../SpellValidation_WoW112_Part2.h" // Central spell registry +#include "../SpellValidation_WoW120_Part2.h" // Central spell registry #include "Player.h" #include "SpellMgr.h" #include "SpellAuraEffects.h" @@ -32,61 +32,61 @@ namespace Playerbot { // ============================================================================ -// HOLY PALADIN SPELL ALIASES (WoW 11.2 - The War Within) +// HOLY PALADIN SPELL ALIASES (WoW 12.0 - The War Within) // Consolidated spell IDs from central registry - NO duplicates // ============================================================================ namespace HolyPaladinSpells { // Holy Power Generators - constexpr uint32 HOLY_SHOCK = WoW112Spells::Paladin::Holy::HOLY_SHOCK; - constexpr uint32 CRUSADER_STRIKE_HOLY = WoW112Spells::Paladin::CRUSADER_STRIKE; - constexpr uint32 JUDGMENT_HOLY = WoW112Spells::Paladin::Holy::JUDGMENT_HOLY; + constexpr uint32 HOLY_SHOCK = WoW120Spells::Paladin::Holy::HOLY_SHOCK; + constexpr uint32 CRUSADER_STRIKE_HOLY = WoW120Spells::Paladin::CRUSADER_STRIKE; + constexpr uint32 JUDGMENT_HOLY = WoW120Spells::Paladin::Holy::JUDGMENT_HOLY; // Holy Power Spenders - constexpr uint32 WORD_OF_GLORY = WoW112Spells::Paladin::WORD_OF_GLORY; - constexpr uint32 LIGHT_OF_DAWN = WoW112Spells::Paladin::Holy::LIGHT_OF_DAWN; - constexpr uint32 SHIELD_OF_THE_RIGHTEOUS_HOLY = WoW112Spells::Paladin::Protection::SHIELD_OF_THE_RIGHTEOUS; + constexpr uint32 WORD_OF_GLORY = WoW120Spells::Paladin::WORD_OF_GLORY; + constexpr uint32 LIGHT_OF_DAWN = WoW120Spells::Paladin::Holy::LIGHT_OF_DAWN; + constexpr uint32 SHIELD_OF_THE_RIGHTEOUS_HOLY = WoW120Spells::Paladin::Protection::SHIELD_OF_THE_RIGHTEOUS; // Direct Heals - constexpr uint32 FLASH_OF_LIGHT = WoW112Spells::Paladin::FLASH_OF_LIGHT; - constexpr uint32 HOLY_LIGHT = WoW112Spells::Paladin::HOLY_LIGHT; - constexpr uint32 DIVINE_TOLL = WoW112Spells::Paladin::Protection::DIVINE_TOLL; + constexpr uint32 FLASH_OF_LIGHT = WoW120Spells::Paladin::FLASH_OF_LIGHT; + constexpr uint32 HOLY_LIGHT = WoW120Spells::Paladin::HOLY_LIGHT; + constexpr uint32 DIVINE_TOLL = WoW120Spells::Paladin::Protection::DIVINE_TOLL; // AoE Heals - constexpr uint32 LIGHT_OF_THE_MARTYR = WoW112Spells::Paladin::Holy::LIGHT_OF_THE_MARTYR; - constexpr uint32 BEACON_OF_LIGHT = WoW112Spells::Paladin::Holy::BEACON_OF_LIGHT; - constexpr uint32 BEACON_OF_FAITH = WoW112Spells::Paladin::Holy::BEACON_OF_FAITH; - constexpr uint32 BEACON_OF_VIRTUE = WoW112Spells::Paladin::Holy::BEACON_OF_VIRTUE; + constexpr uint32 LIGHT_OF_THE_MARTYR = WoW120Spells::Paladin::Holy::LIGHT_OF_THE_MARTYR; + constexpr uint32 BEACON_OF_LIGHT = WoW120Spells::Paladin::Holy::BEACON_OF_LIGHT; + constexpr uint32 BEACON_OF_FAITH = WoW120Spells::Paladin::Holy::BEACON_OF_FAITH; + constexpr uint32 BEACON_OF_VIRTUE = WoW120Spells::Paladin::Holy::BEACON_OF_VIRTUE; // Cooldowns - constexpr uint32 AVENGING_WRATH_HOLY = WoW112Spells::Paladin::Holy::AVENGING_WRATH_HOLY; - constexpr uint32 AVENGING_CRUSADER = WoW112Spells::Paladin::Holy::AVENGING_CRUSADER; - constexpr uint32 HOLY_AVENGER = WoW112Spells::Paladin::Holy::HOLY_AVENGER; - constexpr uint32 DIVINE_PROTECTION = WoW112Spells::Paladin::DIVINE_PROTECTION; - constexpr uint32 BLESSING_OF_SACRIFICE = WoW112Spells::Paladin::BLESSING_OF_SACRIFICE; + constexpr uint32 AVENGING_WRATH_HOLY = WoW120Spells::Paladin::Holy::AVENGING_WRATH_HOLY; + constexpr uint32 AVENGING_CRUSADER = WoW120Spells::Paladin::Holy::AVENGING_CRUSADER; + constexpr uint32 HOLY_AVENGER = WoW120Spells::Paladin::Holy::HOLY_AVENGER; + constexpr uint32 DIVINE_PROTECTION = WoW120Spells::Paladin::DIVINE_PROTECTION; + constexpr uint32 BLESSING_OF_SACRIFICE = WoW120Spells::Paladin::BLESSING_OF_SACRIFICE; // Utility - constexpr uint32 CLEANSE = WoW112Spells::Paladin::CLEANSE; - constexpr uint32 BLESSING_OF_FREEDOM = WoW112Spells::Paladin::BLESSING_OF_FREEDOM; - constexpr uint32 BLESSING_OF_PROTECTION = WoW112Spells::Paladin::BLESSING_OF_PROTECTION; - constexpr uint32 LAY_ON_HANDS = WoW112Spells::Paladin::LAY_ON_HANDS; - constexpr uint32 DIVINE_SHIELD = WoW112Spells::Paladin::DIVINE_SHIELD; + constexpr uint32 CLEANSE = WoW120Spells::Paladin::CLEANSE; + constexpr uint32 BLESSING_OF_FREEDOM = WoW120Spells::Paladin::BLESSING_OF_FREEDOM; + constexpr uint32 BLESSING_OF_PROTECTION = WoW120Spells::Paladin::BLESSING_OF_PROTECTION; + constexpr uint32 LAY_ON_HANDS = WoW120Spells::Paladin::LAY_ON_HANDS; + constexpr uint32 DIVINE_SHIELD = WoW120Spells::Paladin::DIVINE_SHIELD; // Buffs/Auras - constexpr uint32 INFUSION_OF_LIGHT = WoW112Spells::Paladin::Holy::INFUSION_OF_LIGHT; - constexpr uint32 GLIMMER_OF_LIGHT = WoW112Spells::Paladin::Holy::GLIMMER_OF_LIGHT; - constexpr uint32 AURA_MASTERY = WoW112Spells::Paladin::Holy::AURA_MASTERY; + constexpr uint32 INFUSION_OF_LIGHT = WoW120Spells::Paladin::Holy::INFUSION_OF_LIGHT; + constexpr uint32 GLIMMER_OF_LIGHT = WoW120Spells::Paladin::Holy::GLIMMER_OF_LIGHT; + constexpr uint32 AURA_MASTERY = WoW120Spells::Paladin::Holy::AURA_MASTERY; // Auras - constexpr uint32 DEVOTION_AURA = WoW112Spells::Paladin::DEVOTION_AURA; - constexpr uint32 CONCENTRATION_AURA = WoW112Spells::Paladin::CONCENTRATION_AURA; - constexpr uint32 RETRIBUTION_AURA = WoW112Spells::Paladin::RETRIBUTION_AURA; + constexpr uint32 DEVOTION_AURA = WoW120Spells::Paladin::DEVOTION_AURA; + constexpr uint32 CONCENTRATION_AURA = WoW120Spells::Paladin::CONCENTRATION_AURA; + constexpr uint32 RETRIBUTION_AURA = WoW120Spells::Paladin::RETRIBUTION_AURA; // Talents - constexpr uint32 DIVINE_FAVOR = WoW112Spells::Paladin::Holy::DIVINE_FAVOR; - constexpr uint32 AWAKENING = WoW112Spells::Paladin::Holy::AWAKENING; - constexpr uint32 UNBREAKABLE_SPIRIT = WoW112Spells::Paladin::Holy::UNBREAKABLE_SPIRIT; + constexpr uint32 DIVINE_FAVOR = WoW120Spells::Paladin::Holy::DIVINE_FAVOR; + constexpr uint32 AWAKENING = WoW120Spells::Paladin::Holy::AWAKENING; + constexpr uint32 UNBREAKABLE_SPIRIT = WoW120Spells::Paladin::Holy::UNBREAKABLE_SPIRIT; } using namespace HolyPaladinSpells; diff --git a/src/modules/Playerbot/AI/ClassAI/Paladins/PaladinAI.cpp b/src/modules/Playerbot/AI/ClassAI/Paladins/PaladinAI.cpp index 4ec886fa9..da98083c1 100644 --- a/src/modules/Playerbot/AI/ClassAI/Paladins/PaladinAI.cpp +++ b/src/modules/Playerbot/AI/ClassAI/Paladins/PaladinAI.cpp @@ -588,7 +588,7 @@ void PaladinAI::UpdateBlessingManagement() _lastBlessingTime = currentTime; - // WoW 11.2: Most blessings are removed. Paladin now has situational blessings: + // WoW 12.0: Most blessings are removed. Paladin now has situational blessings: // - Blessing of Freedom (movement utility) // - Blessing of Protection (physical immunity) // - Blessing of Sacrifice (damage sharing) diff --git a/src/modules/Playerbot/AI/ClassAI/Paladins/PaladinAI.h b/src/modules/Playerbot/AI/ClassAI/Paladins/PaladinAI.h index ee1915e06..816d2e95a 100644 --- a/src/modules/Playerbot/AI/ClassAI/Paladins/PaladinAI.h +++ b/src/modules/Playerbot/AI/ClassAI/Paladins/PaladinAI.h @@ -10,7 +10,7 @@ #pragma once #include "../ClassAI.h" -#include "../SpellValidation_WoW112_Part2.h" +#include "../SpellValidation_WoW120_Part2.h" #include "Position.h" #include #include @@ -69,73 +69,73 @@ private: void DelegateToSpecialization(::Unit* target); // Paladin-specific spell IDs (comprehensive list for all specs) - // Paladin Spell IDs - Using central registry (WoW 11.2 only) + // Paladin Spell IDs - Using central registry (WoW 12.0 only) enum PaladinSpells { // Interrupts - REBUKE = WoW112Spells::Paladin::Common::REBUKE, - HAMMER_OF_JUSTICE = WoW112Spells::Paladin::Common::HAMMER_OF_JUSTICE, + REBUKE = WoW120Spells::Paladin::Common::REBUKE, + HAMMER_OF_JUSTICE = WoW120Spells::Paladin::Common::HAMMER_OF_JUSTICE, // Defensive Cooldowns - DIVINE_SHIELD = WoW112Spells::Paladin::Common::DIVINE_SHIELD, - SHIELD_OF_VENGEANCE = WoW112Spells::Paladin::Common::SHIELD_OF_VENGEANCE, - BLESSING_OF_PROTECTION = WoW112Spells::Paladin::Common::BLESSING_OF_PROTECTION, - ARDENT_DEFENDER = WoW112Spells::Paladin::Common::ARDENT_DEFENDER, - GUARDIAN_OF_ANCIENT_KINGS = WoW112Spells::Paladin::Common::GUARDIAN_OF_ANCIENT_KINGS, - LAY_ON_HANDS = WoW112Spells::Paladin::Common::LAY_ON_HANDS, - DIVINE_PROTECTION = WoW112Spells::Paladin::Common::DIVINE_PROTECTION, + DIVINE_SHIELD = WoW120Spells::Paladin::Common::DIVINE_SHIELD, + SHIELD_OF_VENGEANCE = WoW120Spells::Paladin::Common::SHIELD_OF_VENGEANCE, + BLESSING_OF_PROTECTION = WoW120Spells::Paladin::Common::BLESSING_OF_PROTECTION, + ARDENT_DEFENDER = WoW120Spells::Paladin::Common::ARDENT_DEFENDER, + GUARDIAN_OF_ANCIENT_KINGS = WoW120Spells::Paladin::Common::GUARDIAN_OF_ANCIENT_KINGS, + LAY_ON_HANDS = WoW120Spells::Paladin::Common::LAY_ON_HANDS, + DIVINE_PROTECTION = WoW120Spells::Paladin::Common::DIVINE_PROTECTION, // Offensive Cooldowns - AVENGING_WRATH = WoW112Spells::Paladin::Common::AVENGING_WRATH, - CRUSADE = WoW112Spells::Paladin::Common::CRUSADE, - HOLY_AVENGER = WoW112Spells::Paladin::Common::HOLY_AVENGER, - EXECUTION_SENTENCE = WoW112Spells::Paladin::Common::EXECUTION_SENTENCE, + AVENGING_WRATH = WoW120Spells::Paladin::Common::AVENGING_WRATH, + CRUSADE = WoW120Spells::Paladin::Common::CRUSADE, + HOLY_AVENGER = WoW120Spells::Paladin::Common::HOLY_AVENGER, + EXECUTION_SENTENCE = WoW120Spells::Paladin::Common::EXECUTION_SENTENCE, // Holy Power Generators - CRUSADER_STRIKE = WoW112Spells::Paladin::Common::CRUSADER_STRIKE, - BLADE_OF_JUSTICE = WoW112Spells::Paladin::Common::BLADE_OF_JUSTICE, - HAMMER_OF_THE_RIGHTEOUS = WoW112Spells::Paladin::Common::HAMMER_OF_THE_RIGHTEOUS, - JUDGMENT = WoW112Spells::Paladin::Common::JUDGMENT, - WAKE_OF_ASHES = WoW112Spells::Paladin::Common::WAKE_OF_ASHES, + CRUSADER_STRIKE = WoW120Spells::Paladin::Common::CRUSADER_STRIKE, + BLADE_OF_JUSTICE = WoW120Spells::Paladin::Common::BLADE_OF_JUSTICE, + HAMMER_OF_THE_RIGHTEOUS = WoW120Spells::Paladin::Common::HAMMER_OF_THE_RIGHTEOUS, + JUDGMENT = WoW120Spells::Paladin::Common::JUDGMENT, + WAKE_OF_ASHES = WoW120Spells::Paladin::Common::WAKE_OF_ASHES, // Holy Power Spenders - TEMPLARS_VERDICT = WoW112Spells::Paladin::Common::TEMPLARS_VERDICT, - FINAL_VERDICT = WoW112Spells::Paladin::Common::FINAL_VERDICT, - DIVINE_STORM = WoW112Spells::Paladin::Common::DIVINE_STORM, - SHIELD_OF_THE_RIGHTEOUS = WoW112Spells::Paladin::Common::SHIELD_OF_THE_RIGHTEOUS, - WORD_OF_GLORY = WoW112Spells::Paladin::Common::WORD_OF_GLORY, + TEMPLARS_VERDICT = WoW120Spells::Paladin::Common::TEMPLARS_VERDICT, + FINAL_VERDICT = WoW120Spells::Paladin::Common::FINAL_VERDICT, + DIVINE_STORM = WoW120Spells::Paladin::Common::DIVINE_STORM, + SHIELD_OF_THE_RIGHTEOUS = WoW120Spells::Paladin::Common::SHIELD_OF_THE_RIGHTEOUS, + WORD_OF_GLORY = WoW120Spells::Paladin::Common::WORD_OF_GLORY, // AoE Abilities - CONSECRATION = WoW112Spells::Paladin::Common::CONSECRATION, - HAMMER_OF_LIGHT = WoW112Spells::Paladin::Protection::LIGHTS_GUIDANCE, // Hero talent (Templar) + CONSECRATION = WoW120Spells::Paladin::Common::CONSECRATION, + HAMMER_OF_LIGHT = WoW120Spells::Paladin::Protection::LIGHTS_GUIDANCE, // Hero talent (Templar) - // Auras (WoW 11.2) - RETRIBUTION_AURA = WoW112Spells::Paladin::Common::RETRIBUTION_AURA, - DEVOTION_AURA = WoW112Spells::Paladin::Common::DEVOTION_AURA, - CRUSADER_AURA = WoW112Spells::Paladin::Common::CRUSADER_AURA, - CONCENTRATION_AURA = WoW112Spells::Paladin::CONCENTRATION_AURA, + // Auras (WoW 12.0) + RETRIBUTION_AURA = WoW120Spells::Paladin::Common::RETRIBUTION_AURA, + DEVOTION_AURA = WoW120Spells::Paladin::Common::DEVOTION_AURA, + CRUSADER_AURA = WoW120Spells::Paladin::Common::CRUSADER_AURA, + CONCENTRATION_AURA = WoW120Spells::Paladin::CONCENTRATION_AURA, - // Blessings (WoW 11.2) - BLESSING_OF_FREEDOM = WoW112Spells::Paladin::Common::BLESSING_OF_FREEDOM, - BLESSING_OF_SACRIFICE = WoW112Spells::Paladin::BLESSING_OF_SACRIFICE, + // Blessings (WoW 12.0) + BLESSING_OF_FREEDOM = WoW120Spells::Paladin::Common::BLESSING_OF_FREEDOM, + BLESSING_OF_SACRIFICE = WoW120Spells::Paladin::BLESSING_OF_SACRIFICE, // Healing Abilities (for Holy spec) - FLASH_OF_LIGHT = WoW112Spells::Paladin::Common::FLASH_OF_LIGHT, - HOLY_LIGHT = WoW112Spells::Paladin::Common::HOLY_LIGHT, - HOLY_SHOCK = WoW112Spells::Paladin::Common::HOLY_SHOCK, - LIGHT_OF_DAWN = WoW112Spells::Paladin::Common::LIGHT_OF_DAWN, - BEACON_OF_LIGHT = WoW112Spells::Paladin::Common::BEACON_OF_LIGHT, + FLASH_OF_LIGHT = WoW120Spells::Paladin::Common::FLASH_OF_LIGHT, + HOLY_LIGHT = WoW120Spells::Paladin::Common::HOLY_LIGHT, + HOLY_SHOCK = WoW120Spells::Paladin::Common::HOLY_SHOCK, + LIGHT_OF_DAWN = WoW120Spells::Paladin::Common::LIGHT_OF_DAWN, + BEACON_OF_LIGHT = WoW120Spells::Paladin::Common::BEACON_OF_LIGHT, // Utility - HAND_OF_RECKONING = WoW112Spells::Paladin::Common::HAND_OF_RECKONING, - CLEANSE = WoW112Spells::Paladin::Common::CLEANSE, - CLEANSE_TOXINS = WoW112Spells::Paladin::CLEANSE_TOXINS, - HAMMER_OF_WRATH = WoW112Spells::Paladin::Common::HAMMER_OF_WRATH, - BLINDING_LIGHT = WoW112Spells::Paladin::Common::BLINDING_LIGHT, - TURN_EVIL = WoW112Spells::Paladin::TURN_EVIL, + HAND_OF_RECKONING = WoW120Spells::Paladin::Common::HAND_OF_RECKONING, + CLEANSE = WoW120Spells::Paladin::Common::CLEANSE, + CLEANSE_TOXINS = WoW120Spells::Paladin::CLEANSE_TOXINS, + HAMMER_OF_WRATH = WoW120Spells::Paladin::Common::HAMMER_OF_WRATH, + BLINDING_LIGHT = WoW120Spells::Paladin::Common::BLINDING_LIGHT, + TURN_EVIL = WoW120Spells::Paladin::TURN_EVIL, // Movement - DIVINE_STEED = WoW112Spells::Paladin::Common::DIVINE_STEED + DIVINE_STEED = WoW120Spells::Paladin::Common::DIVINE_STEED }; diff --git a/src/modules/Playerbot/AI/ClassAI/Paladins/ProtectionPaladin.h b/src/modules/Playerbot/AI/ClassAI/Paladins/ProtectionPaladin.h index 8cfd39f86..105759b5c 100644 --- a/src/modules/Playerbot/AI/ClassAI/Paladins/ProtectionPaladin.h +++ b/src/modules/Playerbot/AI/ClassAI/Paladins/ProtectionPaladin.h @@ -15,7 +15,7 @@ #include "../Common/RotationHelpers.h" #include "../CombatSpecializationTemplates.h" #include "../ResourceTypes.h" -#include "../SpellValidation_WoW112_Part2.h" // Central spell registry +#include "../SpellValidation_WoW120_Part2.h" // Central spell registry #include "Player.h" #include "SpellMgr.h" #include "SpellAuraEffects.h" @@ -31,60 +31,60 @@ namespace Playerbot { // ============================================================================ -// PROTECTION PALADIN SPELL ALIASES (WoW 11.2 - The War Within) +// PROTECTION PALADIN SPELL ALIASES (WoW 12.0 - The War Within) // Consolidated spell IDs from central registry - NO duplicates // ============================================================================ namespace ProtectionPaladinSpells { // Holy Power Generators - constexpr uint32 JUDGMENT_PROT = WoW112Spells::Paladin::Protection::JUDGMENT_PROT; - constexpr uint32 HAMMER_OF_WRATH_PROT = WoW112Spells::Paladin::HAMMER_OF_WRATH; - constexpr uint32 BLESSED_HAMMER = WoW112Spells::Paladin::Protection::BLESSED_HAMMER; - constexpr uint32 AVENGERS_SHIELD = WoW112Spells::Paladin::Protection::AVENGERS_SHIELD; + constexpr uint32 JUDGMENT_PROT = WoW120Spells::Paladin::Protection::JUDGMENT_PROT; + constexpr uint32 HAMMER_OF_WRATH_PROT = WoW120Spells::Paladin::HAMMER_OF_WRATH; + constexpr uint32 BLESSED_HAMMER = WoW120Spells::Paladin::Protection::BLESSED_HAMMER; + constexpr uint32 AVENGERS_SHIELD = WoW120Spells::Paladin::Protection::AVENGERS_SHIELD; // Holy Power Spenders - constexpr uint32 SHIELD_OF_THE_RIGHTEOUS = WoW112Spells::Paladin::Protection::SHIELD_OF_THE_RIGHTEOUS; - constexpr uint32 WORD_OF_GLORY_PROT = WoW112Spells::Paladin::WORD_OF_GLORY; - constexpr uint32 LIGHT_OF_THE_PROTECTOR = WoW112Spells::Paladin::Protection::LIGHT_OF_THE_PROTECTOR; + constexpr uint32 SHIELD_OF_THE_RIGHTEOUS = WoW120Spells::Paladin::Protection::SHIELD_OF_THE_RIGHTEOUS; + constexpr uint32 WORD_OF_GLORY_PROT = WoW120Spells::Paladin::WORD_OF_GLORY; + constexpr uint32 LIGHT_OF_THE_PROTECTOR = WoW120Spells::Paladin::Protection::LIGHT_OF_THE_PROTECTOR; // Threat Generation - constexpr uint32 CONSECRATION = WoW112Spells::Paladin::CONSECRATION; - constexpr uint32 HAMMER_OF_THE_RIGHTEOUS = WoW112Spells::Paladin::Protection::HAMMER_OF_THE_RIGHTEOUS; + constexpr uint32 CONSECRATION = WoW120Spells::Paladin::CONSECRATION; + constexpr uint32 HAMMER_OF_THE_RIGHTEOUS = WoW120Spells::Paladin::Protection::HAMMER_OF_THE_RIGHTEOUS; // Active Mitigation - constexpr uint32 GUARDIAN_OF_ANCIENT_KINGS = WoW112Spells::Paladin::Protection::GUARDIAN_OF_ANCIENT_KINGS; - constexpr uint32 ARDENT_DEFENDER = WoW112Spells::Paladin::Protection::ARDENT_DEFENDER; - constexpr uint32 DIVINE_PROTECTION_PROT = WoW112Spells::Paladin::DIVINE_PROTECTION; - constexpr uint32 BLESSING_OF_SPELLWARDING = WoW112Spells::Paladin::Protection::BLESSING_OF_SPELLWARDING; + constexpr uint32 GUARDIAN_OF_ANCIENT_KINGS = WoW120Spells::Paladin::Protection::GUARDIAN_OF_ANCIENT_KINGS; + constexpr uint32 ARDENT_DEFENDER = WoW120Spells::Paladin::Protection::ARDENT_DEFENDER; + constexpr uint32 DIVINE_PROTECTION_PROT = WoW120Spells::Paladin::DIVINE_PROTECTION; + constexpr uint32 BLESSING_OF_SPELLWARDING = WoW120Spells::Paladin::Protection::BLESSING_OF_SPELLWARDING; // Major Cooldowns - constexpr uint32 AVENGING_WRATH_PROT = WoW112Spells::Paladin::AVENGING_WRATH; - constexpr uint32 SENTINEL = WoW112Spells::Paladin::Protection::SENTINEL; - constexpr uint32 FINAL_STAND = WoW112Spells::Paladin::Protection::FINAL_STAND; + constexpr uint32 AVENGING_WRATH_PROT = WoW120Spells::Paladin::AVENGING_WRATH; + constexpr uint32 SENTINEL = WoW120Spells::Paladin::Protection::SENTINEL; + constexpr uint32 FINAL_STAND = WoW120Spells::Paladin::Protection::FINAL_STAND; // Utility - constexpr uint32 HAND_OF_RECKONING = WoW112Spells::Paladin::HAND_OF_RECKONING; - constexpr uint32 BLESSING_OF_FREEDOM_PROT = WoW112Spells::Paladin::BLESSING_OF_FREEDOM; - constexpr uint32 BLESSING_OF_PROTECTION_PROT = WoW112Spells::Paladin::BLESSING_OF_PROTECTION; - constexpr uint32 LAY_ON_HANDS_PROT = WoW112Spells::Paladin::LAY_ON_HANDS; - constexpr uint32 DIVINE_SHIELD_PROT = WoW112Spells::Paladin::DIVINE_SHIELD; - constexpr uint32 CLEANSE_TOXINS = WoW112Spells::Paladin::CLEANSE_TOXINS; + constexpr uint32 HAND_OF_RECKONING = WoW120Spells::Paladin::HAND_OF_RECKONING; + constexpr uint32 BLESSING_OF_FREEDOM_PROT = WoW120Spells::Paladin::BLESSING_OF_FREEDOM; + constexpr uint32 BLESSING_OF_PROTECTION_PROT = WoW120Spells::Paladin::BLESSING_OF_PROTECTION; + constexpr uint32 LAY_ON_HANDS_PROT = WoW120Spells::Paladin::LAY_ON_HANDS; + constexpr uint32 DIVINE_SHIELD_PROT = WoW120Spells::Paladin::DIVINE_SHIELD; + constexpr uint32 CLEANSE_TOXINS = WoW120Spells::Paladin::CLEANSE_TOXINS; // Auras - constexpr uint32 DEVOTION_AURA_PROT = WoW112Spells::Paladin::DEVOTION_AURA; - constexpr uint32 CONCENTRATION_AURA_PROT = WoW112Spells::Paladin::CONCENTRATION_AURA; - constexpr uint32 RETRIBUTION_AURA_PROT = WoW112Spells::Paladin::RETRIBUTION_AURA; + constexpr uint32 DEVOTION_AURA_PROT = WoW120Spells::Paladin::DEVOTION_AURA; + constexpr uint32 CONCENTRATION_AURA_PROT = WoW120Spells::Paladin::CONCENTRATION_AURA; + constexpr uint32 RETRIBUTION_AURA_PROT = WoW120Spells::Paladin::RETRIBUTION_AURA; // Procs and Buffs - constexpr uint32 GRAND_CRUSADER = WoW112Spells::Paladin::Protection::GRAND_CRUSADER; - constexpr uint32 SHINING_LIGHT = WoW112Spells::Paladin::Protection::SHINING_LIGHT; + constexpr uint32 GRAND_CRUSADER = WoW120Spells::Paladin::Protection::GRAND_CRUSADER; + constexpr uint32 SHINING_LIGHT = WoW120Spells::Paladin::Protection::SHINING_LIGHT; // Talents - constexpr uint32 SERAPHIM = WoW112Spells::Paladin::Protection::SERAPHIM; - constexpr uint32 BULWARK_OF_RIGHTEOUS_FURY = WoW112Spells::Paladin::Protection::BULWARK_OF_RIGHTEOUS_FURY; - constexpr uint32 MOMENT_OF_GLORY = WoW112Spells::Paladin::Protection::MOMENT_OF_GLORY; - constexpr uint32 FIRST_AVENGER = WoW112Spells::Paladin::Protection::FIRST_AVENGER; + constexpr uint32 SERAPHIM = WoW120Spells::Paladin::Protection::SERAPHIM; + constexpr uint32 BULWARK_OF_RIGHTEOUS_FURY = WoW120Spells::Paladin::Protection::BULWARK_OF_RIGHTEOUS_FURY; + constexpr uint32 MOMENT_OF_GLORY = WoW120Spells::Paladin::Protection::MOMENT_OF_GLORY; + constexpr uint32 FIRST_AVENGER = WoW120Spells::Paladin::Protection::FIRST_AVENGER; } using namespace ProtectionPaladinSpells; diff --git a/src/modules/Playerbot/AI/ClassAI/Paladins/RetributionPaladin.h b/src/modules/Playerbot/AI/ClassAI/Paladins/RetributionPaladin.h index 5d3a19c9d..1f85a937e 100644 --- a/src/modules/Playerbot/AI/ClassAI/Paladins/RetributionPaladin.h +++ b/src/modules/Playerbot/AI/ClassAI/Paladins/RetributionPaladin.h @@ -18,7 +18,7 @@ #include "../Common/RotationHelpers.h" #include "../CombatSpecializationTemplates.h" #include "../ResourceTypes.h" -#include "../SpellValidation_WoW112_Part2.h" // Central spell registry +#include "../SpellValidation_WoW120_Part2.h" // Central spell registry // Phase 5 Integration: Decision Systems #include "../../Decision/ActionPriorityQueue.h" @@ -29,47 +29,47 @@ namespace Playerbot { // ============================================================================ -// RETRIBUTION PALADIN SPELL ALIASES (WoW 11.2 - The War Within) +// RETRIBUTION PALADIN SPELL ALIASES (WoW 12.0 - The War Within) // Consolidated spell IDs from central registry - NO duplicates -// NOTE: Seals, Exorcism, Holy Wrath removed (don't exist in WoW 11.2) +// NOTE: Seals, Exorcism, Holy Wrath removed (don't exist in WoW 12.0) // ============================================================================ namespace RetributionPaladinSpells { // Holy Power Generators - constexpr uint32 SPELL_BLADE_OF_JUSTICE = WoW112Spells::Paladin::Retribution::BLADE_OF_JUSTICE; - constexpr uint32 SPELL_CRUSADER_STRIKE = WoW112Spells::Paladin::CRUSADER_STRIKE; - constexpr uint32 SPELL_JUDGMENT = WoW112Spells::Paladin::JUDGMENT; - constexpr uint32 SPELL_WAKE_OF_ASHES = WoW112Spells::Paladin::Retribution::WAKE_OF_ASHES; - constexpr uint32 SPELL_HAMMER_OF_WRATH = WoW112Spells::Paladin::HAMMER_OF_WRATH; + constexpr uint32 SPELL_BLADE_OF_JUSTICE = WoW120Spells::Paladin::Retribution::BLADE_OF_JUSTICE; + constexpr uint32 SPELL_CRUSADER_STRIKE = WoW120Spells::Paladin::CRUSADER_STRIKE; + constexpr uint32 SPELL_JUDGMENT = WoW120Spells::Paladin::JUDGMENT; + constexpr uint32 SPELL_WAKE_OF_ASHES = WoW120Spells::Paladin::Retribution::WAKE_OF_ASHES; + constexpr uint32 SPELL_HAMMER_OF_WRATH = WoW120Spells::Paladin::HAMMER_OF_WRATH; // Holy Power Spenders - constexpr uint32 SPELL_TEMPLARS_VERDICT = WoW112Spells::Paladin::Retribution::TEMPLARS_VERDICT; - constexpr uint32 SPELL_FINAL_VERDICT = WoW112Spells::Paladin::Retribution::FINAL_VERDICT; - constexpr uint32 SPELL_DIVINE_STORM = WoW112Spells::Paladin::Retribution::DIVINE_STORM; - constexpr uint32 SPELL_JUSTICARS_VENGEANCE = WoW112Spells::Paladin::Retribution::JUSTICARS_VENGEANCE; + constexpr uint32 SPELL_TEMPLARS_VERDICT = WoW120Spells::Paladin::Retribution::TEMPLARS_VERDICT; + constexpr uint32 SPELL_FINAL_VERDICT = WoW120Spells::Paladin::Retribution::FINAL_VERDICT; + constexpr uint32 SPELL_DIVINE_STORM = WoW120Spells::Paladin::Retribution::DIVINE_STORM; + constexpr uint32 SPELL_JUSTICARS_VENGEANCE = WoW120Spells::Paladin::Retribution::JUSTICARS_VENGEANCE; // Cooldowns - constexpr uint32 SPELL_AVENGING_WRATH = WoW112Spells::Paladin::AVENGING_WRATH; - constexpr uint32 SPELL_CRUSADE = WoW112Spells::Paladin::Retribution::CRUSADE; - constexpr uint32 SPELL_EXECUTION_SENTENCE = WoW112Spells::Paladin::Retribution::EXECUTION_SENTENCE; - constexpr uint32 SPELL_FINAL_RECKONING = WoW112Spells::Paladin::Retribution::FINAL_RECKONING; - constexpr uint32 SPELL_SHIELD_OF_VENGEANCE = WoW112Spells::Paladin::Retribution::SHIELD_OF_VENGEANCE; + constexpr uint32 SPELL_AVENGING_WRATH = WoW120Spells::Paladin::AVENGING_WRATH; + constexpr uint32 SPELL_CRUSADE = WoW120Spells::Paladin::Retribution::CRUSADE; + constexpr uint32 SPELL_EXECUTION_SENTENCE = WoW120Spells::Paladin::Retribution::EXECUTION_SENTENCE; + constexpr uint32 SPELL_FINAL_RECKONING = WoW120Spells::Paladin::Retribution::FINAL_RECKONING; + constexpr uint32 SPELL_SHIELD_OF_VENGEANCE = WoW120Spells::Paladin::Retribution::SHIELD_OF_VENGEANCE; // Utility - constexpr uint32 SPELL_CONSECRATION = WoW112Spells::Paladin::CONSECRATION; - constexpr uint32 SPELL_HAMMER_OF_JUSTICE = WoW112Spells::Paladin::HAMMER_OF_JUSTICE; - constexpr uint32 SPELL_REBUKE = WoW112Spells::Paladin::REBUKE; - constexpr uint32 SPELL_BLESSING_OF_FREEDOM = WoW112Spells::Paladin::BLESSING_OF_FREEDOM; - constexpr uint32 SPELL_DIVINE_SHIELD = WoW112Spells::Paladin::DIVINE_SHIELD; + constexpr uint32 SPELL_CONSECRATION = WoW120Spells::Paladin::CONSECRATION; + constexpr uint32 SPELL_HAMMER_OF_JUSTICE = WoW120Spells::Paladin::HAMMER_OF_JUSTICE; + constexpr uint32 SPELL_REBUKE = WoW120Spells::Paladin::REBUKE; + constexpr uint32 SPELL_BLESSING_OF_FREEDOM = WoW120Spells::Paladin::BLESSING_OF_FREEDOM; + constexpr uint32 SPELL_DIVINE_SHIELD = WoW120Spells::Paladin::DIVINE_SHIELD; // Auras - constexpr uint32 SPELL_RETRIBUTION_AURA = WoW112Spells::Paladin::RETRIBUTION_AURA; + constexpr uint32 SPELL_RETRIBUTION_AURA = WoW120Spells::Paladin::RETRIBUTION_AURA; // Procs - constexpr uint32 SPELL_ART_OF_WAR = WoW112Spells::Paladin::Retribution::ART_OF_WAR; - constexpr uint32 SPELL_DIVINE_PURPOSE = WoW112Spells::Paladin::Retribution::DIVINE_PURPOSE_RET; - constexpr uint32 SPELL_BLADE_OF_WRATH = WoW112Spells::Paladin::Retribution::BLADE_OF_WRATH; + constexpr uint32 SPELL_ART_OF_WAR = WoW120Spells::Paladin::Retribution::ART_OF_WAR; + constexpr uint32 SPELL_DIVINE_PURPOSE = WoW120Spells::Paladin::Retribution::DIVINE_PURPOSE_RET; + constexpr uint32 SPELL_BLADE_OF_WRATH = WoW120Spells::Paladin::Retribution::BLADE_OF_WRATH; } using namespace RetributionPaladinSpells; @@ -145,7 +145,7 @@ public: { Player* bot = this->GetBot(); - // Maintain Retribution Aura (WoW 11.2) + // Maintain Retribution Aura (WoW 12.0) if (!bot->HasAura(SPELL_RETRIBUTION_AURA)) { this->CastSpell(SPELL_RETRIBUTION_AURA, bot); @@ -161,7 +161,7 @@ protected: // ======================================================================== /** - * Execute abilities based on priority system (WoW 11.2) + * Execute abilities based on priority system (WoW 12.0) */ void ExecutePriorityRotation(::Unit* target) { @@ -192,7 +192,7 @@ protected: } } - // Blade of Justice - Primary Holy Power generator (WoW 11.2) + // Blade of Justice - Primary Holy Power generator (WoW 12.0) if (this->CanUseAbility(SPELL_BLADE_OF_JUSTICE)) { this->CastSpell(SPELL_BLADE_OF_JUSTICE, target); @@ -200,7 +200,7 @@ protected: return; } - // Wake of Ashes - AoE HP generator (WoW 11.2) + // Wake of Ashes - AoE HP generator (WoW 12.0) if (_hasArtOfWar && this->CanUseAbility(SPELL_WAKE_OF_ASHES)) { this->CastSpell(SPELL_WAKE_OF_ASHES, this->GetBot()); @@ -234,7 +234,7 @@ protected: } /** - * Check for Retribution-specific procs (WoW 11.2) + * Check for Retribution-specific procs (WoW 12.0) */ void CheckForProcs() { @@ -248,7 +248,7 @@ protected: } /** - * NOTE: Seal twisting removed - Seals don't exist in WoW 11.2 (removed in Legion 7.0) + * NOTE: Seal twisting removed - Seals don't exist in WoW 12.0 (removed in Legion 7.0) * This function is kept as a stub for API compatibility. */ void UpdateSealTwisting() @@ -270,7 +270,7 @@ protected: void OnCombatStartSpecific(::Unit* target) override { - // Pop offensive cooldowns at start for burst (WoW 11.2) + // Pop offensive cooldowns at start for burst (WoW 12.0) if (ShouldUseCooldowns(target)) { Player* bot = this->GetBot(); @@ -526,7 +526,7 @@ protected: }) }) }), - // Generate HP (WoW 11.2) + // Generate HP (WoW 12.0) Sequence("Generate Holy Power", { Condition("HP < 5", [this](Player* bot, Unit*) { return this->_holyPower.GetAvailable() < 5; @@ -573,7 +573,7 @@ protected: }), // ================================================================ - // TIER 3: COOLDOWN USAGE (WoW 11.2) + // TIER 3: COOLDOWN USAGE (WoW 12.0) // ================================================================ Sequence("Use Cooldowns", { Condition("Boss or pack", [this](Player* bot, Unit* target) { @@ -611,7 +611,7 @@ protected: }), // ================================================================ - // TIER 4: STANDARD DPS ROTATION (WoW 11.2) + // TIER 4: STANDARD DPS ROTATION (WoW 12.0) // ================================================================ Sequence("Standard Rotation", { Selector("Rotation Priority", { @@ -668,7 +668,7 @@ private: CooldownManager _cooldowns; // ======================================================================== // SPELL IDs now defined in RetributionPaladinSpells namespace above - // Legacy spells removed: Seals, Exorcism, Holy Wrath (don't exist in WoW 11.2) + // Legacy spells removed: Seals, Exorcism, Holy Wrath (don't exist in WoW 12.0) // ======================================================================== // ======================================================================== diff --git a/src/modules/Playerbot/AI/ClassAI/Priests/DisciplinePriest.h b/src/modules/Playerbot/AI/ClassAI/Priests/DisciplinePriest.h index 52974225e..c2e781bd5 100644 --- a/src/modules/Playerbot/AI/ClassAI/Priests/DisciplinePriest.h +++ b/src/modules/Playerbot/AI/ClassAI/Priests/DisciplinePriest.h @@ -33,8 +33,8 @@ #include "../Common/CooldownManager.h" #include "../../BotAI.h" -// Central Spell Registry - See WoW112Spells::Priest namespace -#include "../SpellValidation_WoW112_Part2.h" +// Central Spell Registry - See WoW120Spells::Priest namespace +#include "../SpellValidation_WoW120_Part2.h" namespace Playerbot { @@ -51,27 +51,27 @@ using bot::ai::SpellPriority; using bot::ai::SpellCategory; // Note: bot::ai::Action() conflicts with Playerbot::Action, use bot::ai::Action() explicitly -// WoW 11.2 (The War Within) - Discipline Priest Spell IDs -// Using central registry: WoW112Spells::Priest and WoW112Spells::Priest::Discipline -constexpr uint32 DISC_SMITE = WoW112Spells::Priest::SMITE; -constexpr uint32 DISC_PENANCE = WoW112Spells::Priest::Discipline::PENANCE; -constexpr uint32 DISC_POWER_WORD_SHIELD = WoW112Spells::Priest::POWER_WORD_SHIELD; -constexpr uint32 DISC_SHADOW_MEND = WoW112Spells::Priest::Discipline::SHADOW_MEND; -constexpr uint32 DISC_PURGE_WICKED = WoW112Spells::Priest::Discipline::PURGE_THE_WICKED; -constexpr uint32 DISC_POWER_WORD_RADIANCE = WoW112Spells::Priest::Discipline::POWER_WORD_RADIANCE; -constexpr uint32 DISC_RAPTURE = WoW112Spells::Priest::Discipline::RAPTURE; -constexpr uint32 DISC_PAIN_SUPPRESSION = WoW112Spells::Priest::Discipline::PAIN_SUPPRESSION; -constexpr uint32 DISC_BARRIER = WoW112Spells::Priest::Discipline::POWER_WORD_BARRIER; -constexpr uint32 DISC_EVANGELISM = WoW112Spells::Priest::Discipline::EVANGELISM; -constexpr uint32 DISC_SCHISM = WoW112Spells::Priest::Discipline::SCHISM; -constexpr uint32 DISC_MINDGAMES = WoW112Spells::Priest::Discipline::MINDGAMES; -constexpr uint32 DISC_SHADOW_COVENANT = WoW112Spells::Priest::Discipline::SHADOW_COVENANT; -constexpr uint32 DISC_POWER_WORD_LIFE = WoW112Spells::Priest::Discipline::POWER_WORD_LIFE; -constexpr uint32 DISC_PURIFY = WoW112Spells::Priest::PURIFY; -constexpr uint32 DISC_SHADOW_WORD_PAIN = WoW112Spells::Priest::SHADOW_WORD_PAIN; -constexpr uint32 DISC_FADE = WoW112Spells::Priest::FADE; -constexpr uint32 DISC_DESPERATE_PRAYER = WoW112Spells::Priest::DESPERATE_PRAYER; -constexpr uint32 DISC_POWER_WORD_FORTITUDE = WoW112Spells::Priest::POWER_WORD_FORTITUDE; +// WoW 12.0 (The War Within) - Discipline Priest Spell IDs +// Using central registry: WoW120Spells::Priest and WoW120Spells::Priest::Discipline +constexpr uint32 DISC_SMITE = WoW120Spells::Priest::SMITE; +constexpr uint32 DISC_PENANCE = WoW120Spells::Priest::Discipline::PENANCE; +constexpr uint32 DISC_POWER_WORD_SHIELD = WoW120Spells::Priest::POWER_WORD_SHIELD; +constexpr uint32 DISC_SHADOW_MEND = WoW120Spells::Priest::Discipline::SHADOW_MEND; +constexpr uint32 DISC_PURGE_WICKED = WoW120Spells::Priest::Discipline::PURGE_THE_WICKED; +constexpr uint32 DISC_POWER_WORD_RADIANCE = WoW120Spells::Priest::Discipline::POWER_WORD_RADIANCE; +constexpr uint32 DISC_RAPTURE = WoW120Spells::Priest::Discipline::RAPTURE; +constexpr uint32 DISC_PAIN_SUPPRESSION = WoW120Spells::Priest::Discipline::PAIN_SUPPRESSION; +constexpr uint32 DISC_BARRIER = WoW120Spells::Priest::Discipline::POWER_WORD_BARRIER; +constexpr uint32 DISC_EVANGELISM = WoW120Spells::Priest::Discipline::EVANGELISM; +constexpr uint32 DISC_SCHISM = WoW120Spells::Priest::Discipline::SCHISM; +constexpr uint32 DISC_MINDGAMES = WoW120Spells::Priest::Discipline::MINDGAMES; +constexpr uint32 DISC_SHADOW_COVENANT = WoW120Spells::Priest::Discipline::SHADOW_COVENANT; +constexpr uint32 DISC_POWER_WORD_LIFE = WoW120Spells::Priest::Discipline::POWER_WORD_LIFE; +constexpr uint32 DISC_PURIFY = WoW120Spells::Priest::PURIFY; +constexpr uint32 DISC_SHADOW_WORD_PAIN = WoW120Spells::Priest::SHADOW_WORD_PAIN; +constexpr uint32 DISC_FADE = WoW120Spells::Priest::FADE; +constexpr uint32 DISC_DESPERATE_PRAYER = WoW120Spells::Priest::DESPERATE_PRAYER; +constexpr uint32 DISC_POWER_WORD_FORTITUDE = WoW120Spells::Priest::POWER_WORD_FORTITUDE; // Atonement tracker - tracks which allies have Atonement buff for damage-to-healing conversion class AtonementTracker diff --git a/src/modules/Playerbot/AI/ClassAI/Priests/HolyPriest.h b/src/modules/Playerbot/AI/ClassAI/Priests/HolyPriest.h index d2faf0456..8a7e01fcf 100644 --- a/src/modules/Playerbot/AI/ClassAI/Priests/HolyPriest.h +++ b/src/modules/Playerbot/AI/ClassAI/Priests/HolyPriest.h @@ -36,8 +36,8 @@ // TrinityCore 11.2 New Priest Talents #include "PriestTalentEnhancements.h" -// Central Spell Registry - See WoW112Spells::Priest namespace -#include "../SpellValidation_WoW112_Part2.h" +// Central Spell Registry - See WoW120Spells::Priest namespace +#include "../SpellValidation_WoW120_Part2.h" namespace Playerbot { @@ -54,36 +54,36 @@ using bot::ai::SpellPriority; using bot::ai::SpellCategory; // Note: bot::ai::Action() conflicts with Playerbot::Action, use bot::ai::Action() explicitly -// WoW 11.2 (The War Within) - Holy Priest Spell IDs -// Using central registry: WoW112Spells::Priest and WoW112Spells::Priest::HolyPriest -constexpr uint32 HOLY_HEAL = WoW112Spells::Priest::HolyPriest::HEAL; -constexpr uint32 HOLY_FLASH_HEAL = WoW112Spells::Priest::FLASH_HEAL; -constexpr uint32 HOLY_PRAYER_OF_HEALING = WoW112Spells::Priest::HolyPriest::PRAYER_OF_HEALING; -constexpr uint32 HOLY_RENEW = WoW112Spells::Priest::HolyPriest::RENEW; -constexpr uint32 HOLY_PRAYER_OF_MENDING = WoW112Spells::Priest::HolyPriest::PRAYER_OF_MENDING; -constexpr uint32 HOLY_CIRCLE_OF_HEALING = WoW112Spells::Priest::HolyPriest::CIRCLE_OF_HEALING; -constexpr uint32 HOLY_HOLY_WORD_SERENITY = WoW112Spells::Priest::HolyPriest::HOLY_WORD_SERENITY; -constexpr uint32 HOLY_HOLY_WORD_SANCTIFY = WoW112Spells::Priest::HolyPriest::HOLY_WORD_SANCTIFY; -constexpr uint32 HOLY_HOLY_WORD_SALVATION = WoW112Spells::Priest::HolyPriest::HOLY_WORD_SALVATION; -constexpr uint32 HOLY_DIVINE_HYMN = WoW112Spells::Priest::HolyPriest::DIVINE_HYMN; -constexpr uint32 HOLY_GUARDIAN_SPIRIT = WoW112Spells::Priest::HolyPriest::GUARDIAN_SPIRIT; -constexpr uint32 HOLY_APOTHEOSIS = WoW112Spells::Priest::HolyPriest::APOTHEOSIS; -constexpr uint32 HOLY_DIVINE_STAR = WoW112Spells::Priest::Discipline::DIVINE_STAR; -constexpr uint32 HOLY_HALO = WoW112Spells::Priest::Discipline::HALO; -constexpr uint32 HOLY_HOLY_FIRE = WoW112Spells::Priest::HolyPriest::HOLY_FIRE; -constexpr uint32 HOLY_SMITE = WoW112Spells::Priest::SMITE; -constexpr uint32 HOLY_SYMBOL_OF_HOPE = WoW112Spells::Priest::HolyPriest::SYMBOL_OF_HOPE; -constexpr uint32 HOLY_FADE = WoW112Spells::Priest::FADE; -constexpr uint32 HOLY_DESPERATE_PRAYER = WoW112Spells::Priest::DESPERATE_PRAYER; -constexpr uint32 HOLY_POWER_WORD_FORTITUDE = WoW112Spells::Priest::POWER_WORD_FORTITUDE; -constexpr uint32 HOLY_PURIFY = WoW112Spells::Priest::PURIFY; +// WoW 12.0 (The War Within) - Holy Priest Spell IDs +// Using central registry: WoW120Spells::Priest and WoW120Spells::Priest::HolyPriest +constexpr uint32 HOLY_HEAL = WoW120Spells::Priest::HolyPriest::HEAL; +constexpr uint32 HOLY_FLASH_HEAL = WoW120Spells::Priest::FLASH_HEAL; +constexpr uint32 HOLY_PRAYER_OF_HEALING = WoW120Spells::Priest::HolyPriest::PRAYER_OF_HEALING; +constexpr uint32 HOLY_RENEW = WoW120Spells::Priest::HolyPriest::RENEW; +constexpr uint32 HOLY_PRAYER_OF_MENDING = WoW120Spells::Priest::HolyPriest::PRAYER_OF_MENDING; +constexpr uint32 HOLY_CIRCLE_OF_HEALING = WoW120Spells::Priest::HolyPriest::CIRCLE_OF_HEALING; +constexpr uint32 HOLY_HOLY_WORD_SERENITY = WoW120Spells::Priest::HolyPriest::HOLY_WORD_SERENITY; +constexpr uint32 HOLY_HOLY_WORD_SANCTIFY = WoW120Spells::Priest::HolyPriest::HOLY_WORD_SANCTIFY; +constexpr uint32 HOLY_HOLY_WORD_SALVATION = WoW120Spells::Priest::HolyPriest::HOLY_WORD_SALVATION; +constexpr uint32 HOLY_DIVINE_HYMN = WoW120Spells::Priest::HolyPriest::DIVINE_HYMN; +constexpr uint32 HOLY_GUARDIAN_SPIRIT = WoW120Spells::Priest::HolyPriest::GUARDIAN_SPIRIT; +constexpr uint32 HOLY_APOTHEOSIS = WoW120Spells::Priest::HolyPriest::APOTHEOSIS; +constexpr uint32 HOLY_DIVINE_STAR = WoW120Spells::Priest::Discipline::DIVINE_STAR; +constexpr uint32 HOLY_HALO = WoW120Spells::Priest::Discipline::HALO; +constexpr uint32 HOLY_HOLY_FIRE = WoW120Spells::Priest::HolyPriest::HOLY_FIRE; +constexpr uint32 HOLY_SMITE = WoW120Spells::Priest::SMITE; +constexpr uint32 HOLY_SYMBOL_OF_HOPE = WoW120Spells::Priest::HolyPriest::SYMBOL_OF_HOPE; +constexpr uint32 HOLY_FADE = WoW120Spells::Priest::FADE; +constexpr uint32 HOLY_DESPERATE_PRAYER = WoW120Spells::Priest::DESPERATE_PRAYER; +constexpr uint32 HOLY_POWER_WORD_FORTITUDE = WoW120Spells::Priest::POWER_WORD_FORTITUDE; +constexpr uint32 HOLY_PURIFY = WoW120Spells::Priest::PURIFY; // NEW: TrinityCore 11.2 Talent Spell IDs -// See central registry: WoW112Spells::Priest::HolyPriest -constexpr uint32 HOLY_EMPYREAL_BLAZE = 372616; // -> WoW112Spells::Priest::HolyPriest::EMPYREAL_BLAZE -constexpr uint32 HOLY_EMPYREAL_BLAZE_AURA = 372617; // -> WoW112Spells::Priest::HolyPriest::EMPYREAL_BLAZE_AURA -constexpr uint32 HOLY_POWER_SURGE = 453109; // -> WoW112Spells::Priest::HolyPriest::POWER_SURGE -constexpr uint32 HOLY_POWER_SURGE_PERIODIC = 453112; // -> WoW112Spells::Priest::HolyPriest::POWER_SURGE_PERIODIC +// See central registry: WoW120Spells::Priest::HolyPriest +constexpr uint32 HOLY_EMPYREAL_BLAZE = 372616; // -> WoW120Spells::Priest::HolyPriest::EMPYREAL_BLAZE +constexpr uint32 HOLY_EMPYREAL_BLAZE_AURA = 372617; // -> WoW120Spells::Priest::HolyPriest::EMPYREAL_BLAZE_AURA +constexpr uint32 HOLY_POWER_SURGE = 453109; // -> WoW120Spells::Priest::HolyPriest::POWER_SURGE +constexpr uint32 HOLY_POWER_SURGE_PERIODIC = 453112; // -> WoW120Spells::Priest::HolyPriest::POWER_SURGE_PERIODIC // Renew HoT tracker class RenewTracker diff --git a/src/modules/Playerbot/AI/ClassAI/Priests/PriestAI.cpp b/src/modules/Playerbot/AI/ClassAI/Priests/PriestAI.cpp index be3f584c7..aca45b1bf 100644 --- a/src/modules/Playerbot/AI/ClassAI/Priests/PriestAI.cpp +++ b/src/modules/Playerbot/AI/ClassAI/Priests/PriestAI.cpp @@ -35,10 +35,10 @@ namespace Playerbot { // Namespace aliases for central spell registry -namespace PriestCommon = WoW112Spells::Priest::Common; -namespace PriestDiscipline = WoW112Spells::Priest::Discipline; -namespace PriestHoly = WoW112Spells::Priest::HolyPriest; -namespace PriestShadow = WoW112Spells::Priest::Shadow; +namespace PriestCommon = WoW120Spells::Priest::Common; +namespace PriestDiscipline = WoW120Spells::Priest::Discipline; +namespace PriestHoly = WoW120Spells::Priest::HolyPriest; +namespace PriestShadow = WoW120Spells::Priest::Shadow; // Talent IDs for specialization detection // NOTE: Renamed to avoid conflict with PriestTalents namespace in PriestTalentEnhancements.h @@ -642,12 +642,12 @@ void PriestAI::UpdatePriestBuffs() } } - // Note: Inner Fire, Divine Spirit, and Shadow Protection were removed in WoW 11.2 + // Note: Inner Fire, Divine Spirit, and Shadow Protection were removed in WoW 12.0 } void PriestAI::CastInnerFire() { - // Inner Fire was removed in WoW 11.2 - this method is kept for backward compatibility + // Inner Fire was removed in WoW 12.0 - this method is kept for backward compatibility // but does nothing in modern WoW (void)_lastInnerFire; // Suppress unused variable warning } @@ -778,7 +778,7 @@ void PriestAI::CastDispelMagic() void PriestAI::CastFearWard() { - // Fear Ward was removed in WoW 11.2 - this method is kept for backward compatibility + // Fear Ward was removed in WoW 12.0 - this method is kept for backward compatibility // but does nothing in modern WoW (void)_lastFearWard; // Suppress unused variable warning } @@ -1022,7 +1022,7 @@ uint32 PriestAI::CountUnbuffedGroupMembers(uint32 spellId) bool PriestAI::IsHealingSpell(uint32 spellId) { - // Common healing spell IDs - Using central registry (WoW 11.2) + // Common healing spell IDs - Using central registry (WoW 12.0) return (spellId == PriestHoly::HOLY_WORD_SERENITY || // 2050 - Holy Word: Serenity spellId == PriestCommon::HEAL || // 2060 - Heal spellId == PriestCommon::FLASH_HEAL || // 2061 - Flash Heal @@ -1038,7 +1038,7 @@ bool PriestAI::IsHealingSpell(uint32 spellId) bool PriestAI::IsDamageSpell(uint32 spellId) { - // Common damage spell IDs - Using central registry (WoW 11.2) + // Common damage spell IDs - Using central registry (WoW 12.0) return (spellId == PriestCommon::SHADOW_WORD_PAIN || // 589 - Shadow Word: Pain spellId == PriestCommon::MIND_BLAST || // 8092 - Mind Blast spellId == PriestCommon::MIND_FLAY || // 15407 - Mind Flay @@ -1053,7 +1053,7 @@ bool PriestAI::IsDamageSpell(uint32 spellId) bool PriestAI::IsEmergencyHeal(uint32 spellId) { - // Fast heals for emergencies - Using central registry (WoW 11.2) + // Fast heals for emergencies - Using central registry (WoW 12.0) return (spellId == PriestCommon::FLASH_HEAL || // 2061 - Flash Heal spellId == PriestCommon::DESPERATE_PRAYER || // 19236 - Desperate Prayer spellId == PriestHoly::GUARDIAN_SPIRIT || // 47788 - Guardian Spirit diff --git a/src/modules/Playerbot/AI/ClassAI/Priests/PriestAI.h b/src/modules/Playerbot/AI/ClassAI/Priests/PriestAI.h index c79b3d4a9..356fe5c21 100644 --- a/src/modules/Playerbot/AI/ClassAI/Priests/PriestAI.h +++ b/src/modules/Playerbot/AI/ClassAI/Priests/PriestAI.h @@ -10,7 +10,7 @@ #pragma once #include "../ClassAI.h" -#include "../SpellValidation_WoW112_Part2.h" +#include "../SpellValidation_WoW120_Part2.h" #include "../BaselineRotationManager.h" #include "Position.h" #include @@ -153,66 +153,66 @@ private: static constexpr uint32 PSYCHIC_SCREAM_COOLDOWN = 30000; // 30 seconds static constexpr float MANA_CONSERVATION_THRESHOLD = 0.3f; // 30% static constexpr float EMERGENCY_HEALTH_THRESHOLD = 0.25f; // 25% - // Note: FEAR_WARD_COOLDOWN and INNER_FIRE_DURATION removed - spells no longer exist in WoW 11.2 + // Note: FEAR_WARD_COOLDOWN and INNER_FIRE_DURATION removed - spells no longer exist in WoW 12.0 - // Spell IDs - Using central registry (WoW 11.2) + // Spell IDs - Using central registry (WoW 12.0) enum PriestSpells { // Utility spells - DISPEL_MAGIC = WoW112Spells::Priest::Common::DISPEL_MAGIC, - MASS_DISPEL = WoW112Spells::Priest::Common::MASS_DISPEL, - PSYCHIC_SCREAM = WoW112Spells::Priest::Common::PSYCHIC_SCREAM, - FADE = WoW112Spells::Priest::Common::FADE, - DESPERATE_PRAYER = WoW112Spells::Priest::Common::DESPERATE_PRAYER, - SILENCE = WoW112Spells::Priest::Common::SILENCE, - PURIFY = WoW112Spells::Priest::Common::PURIFY, - DISPERSION = WoW112Spells::Priest::Common::DISPERSION, - LEAP_OF_FAITH = WoW112Spells::Priest::Common::LEAP_OF_FAITH, - SHACKLE_UNDEAD = WoW112Spells::Priest::Common::SHACKLE_UNDEAD, + DISPEL_MAGIC = WoW120Spells::Priest::Common::DISPEL_MAGIC, + MASS_DISPEL = WoW120Spells::Priest::Common::MASS_DISPEL, + PSYCHIC_SCREAM = WoW120Spells::Priest::Common::PSYCHIC_SCREAM, + FADE = WoW120Spells::Priest::Common::FADE, + DESPERATE_PRAYER = WoW120Spells::Priest::Common::DESPERATE_PRAYER, + SILENCE = WoW120Spells::Priest::Common::SILENCE, + PURIFY = WoW120Spells::Priest::Common::PURIFY, + DISPERSION = WoW120Spells::Priest::Common::DISPERSION, + LEAP_OF_FAITH = WoW120Spells::Priest::Common::LEAP_OF_FAITH, + SHACKLE_UNDEAD = WoW120Spells::Priest::Common::SHACKLE_UNDEAD, // Buffs - POWER_WORD_FORTITUDE = WoW112Spells::Priest::Common::POWER_WORD_FORTITUDE, - POWER_INFUSION = WoW112Spells::Priest::Common::POWER_INFUSION, - LEVITATE = WoW112Spells::Priest::Common::LEVITATE, - SYMBOL_OF_HOPE = WoW112Spells::Priest::HolyPriest::SYMBOL_OF_HOPE, + POWER_WORD_FORTITUDE = WoW120Spells::Priest::Common::POWER_WORD_FORTITUDE, + POWER_INFUSION = WoW120Spells::Priest::Common::POWER_INFUSION, + LEVITATE = WoW120Spells::Priest::Common::LEVITATE, + SYMBOL_OF_HOPE = WoW120Spells::Priest::HolyPriest::SYMBOL_OF_HOPE, // Healing spells (Common) - FLASH_HEAL = WoW112Spells::Priest::Common::FLASH_HEAL, - HEAL = WoW112Spells::Priest::Common::HEAL, - RENEW = WoW112Spells::Priest::Common::RENEW, - PRAYER_OF_MENDING = WoW112Spells::Priest::Common::PRAYER_OF_MENDING, - POWER_WORD_SHIELD = WoW112Spells::Priest::Common::POWER_WORD_SHIELD, + FLASH_HEAL = WoW120Spells::Priest::Common::FLASH_HEAL, + HEAL = WoW120Spells::Priest::Common::HEAL, + RENEW = WoW120Spells::Priest::Common::RENEW, + PRAYER_OF_MENDING = WoW120Spells::Priest::Common::PRAYER_OF_MENDING, + POWER_WORD_SHIELD = WoW120Spells::Priest::Common::POWER_WORD_SHIELD, // Damage spells (Common) - SMITE = WoW112Spells::Priest::Common::SMITE, - SHADOW_WORD_PAIN = WoW112Spells::Priest::Common::SHADOW_WORD_PAIN, - SHADOW_WORD_DEATH = WoW112Spells::Priest::Common::SHADOW_WORD_DEATH, - MIND_BLAST = WoW112Spells::Priest::Common::MIND_BLAST, - HOLY_FIRE = WoW112Spells::Priest::Common::HOLY_FIRE, - VAMPIRIC_TOUCH = WoW112Spells::Priest::Common::VAMPIRIC_TOUCH, - MIND_FLAY = WoW112Spells::Priest::Common::MIND_FLAY, + SMITE = WoW120Spells::Priest::Common::SMITE, + SHADOW_WORD_PAIN = WoW120Spells::Priest::Common::SHADOW_WORD_PAIN, + SHADOW_WORD_DEATH = WoW120Spells::Priest::Common::SHADOW_WORD_DEATH, + MIND_BLAST = WoW120Spells::Priest::Common::MIND_BLAST, + HOLY_FIRE = WoW120Spells::Priest::Common::HOLY_FIRE, + VAMPIRIC_TOUCH = WoW120Spells::Priest::Common::VAMPIRIC_TOUCH, + MIND_FLAY = WoW120Spells::Priest::Common::MIND_FLAY, // Holy spec - HOLY_WORD_SERENITY = WoW112Spells::Priest::Common::HOLY_WORD_SERENITY, - HOLY_WORD_SANCTIFY = WoW112Spells::Priest::Common::HOLY_WORD_SANCTIFY, - CIRCLE_OF_HEALING = WoW112Spells::Priest::Common::CIRCLE_OF_HEALING, - GUARDIAN_SPIRIT = WoW112Spells::Priest::HolyPriest::GUARDIAN_SPIRIT, - DIVINE_HYMN = WoW112Spells::Priest::HolyPriest::DIVINE_HYMN, - PRAYER_OF_HEALING = WoW112Spells::Priest::HolyPriest::PRAYER_OF_HEALING, + HOLY_WORD_SERENITY = WoW120Spells::Priest::Common::HOLY_WORD_SERENITY, + HOLY_WORD_SANCTIFY = WoW120Spells::Priest::Common::HOLY_WORD_SANCTIFY, + CIRCLE_OF_HEALING = WoW120Spells::Priest::Common::CIRCLE_OF_HEALING, + GUARDIAN_SPIRIT = WoW120Spells::Priest::HolyPriest::GUARDIAN_SPIRIT, + DIVINE_HYMN = WoW120Spells::Priest::HolyPriest::DIVINE_HYMN, + PRAYER_OF_HEALING = WoW120Spells::Priest::HolyPriest::PRAYER_OF_HEALING, // Discipline spec - PENANCE = WoW112Spells::Priest::Discipline::PENANCE, - SHADOW_MEND = WoW112Spells::Priest::Discipline::SHADOW_MEND, - PAIN_SUPPRESSION = WoW112Spells::Priest::Discipline::PAIN_SUPPRESSION, - POWER_WORD_BARRIER = WoW112Spells::Priest::Discipline::POWER_WORD_BARRIER, - RAPTURE = WoW112Spells::Priest::Discipline::RAPTURE, + PENANCE = WoW120Spells::Priest::Discipline::PENANCE, + SHADOW_MEND = WoW120Spells::Priest::Discipline::SHADOW_MEND, + PAIN_SUPPRESSION = WoW120Spells::Priest::Discipline::PAIN_SUPPRESSION, + POWER_WORD_BARRIER = WoW120Spells::Priest::Discipline::POWER_WORD_BARRIER, + RAPTURE = WoW120Spells::Priest::Discipline::RAPTURE, // Shadow spec - SHADOWFORM = WoW112Spells::Priest::Common::SHADOWFORM, - DEVOURING_PLAGUE = WoW112Spells::Priest::Common::DEVOURING_PLAGUE, - VAMPIRIC_EMBRACE = WoW112Spells::Priest::Shadow::VAMPIRIC_EMBRACE, - VOID_ERUPTION = WoW112Spells::Priest::Shadow::VOID_ERUPTION, - VOID_BOLT = WoW112Spells::Priest::Shadow::VOID_BOLT + SHADOWFORM = WoW120Spells::Priest::Common::SHADOWFORM, + DEVOURING_PLAGUE = WoW120Spells::Priest::Common::DEVOURING_PLAGUE, + VAMPIRIC_EMBRACE = WoW120Spells::Priest::Shadow::VAMPIRIC_EMBRACE, + VOID_ERUPTION = WoW120Spells::Priest::Shadow::VOID_ERUPTION, + VOID_BOLT = WoW120Spells::Priest::Shadow::VOID_BOLT }; }; diff --git a/src/modules/Playerbot/AI/ClassAI/Priests/ShadowPriest.h b/src/modules/Playerbot/AI/ClassAI/Priests/ShadowPriest.h index cf157354f..1ed7747a6 100644 --- a/src/modules/Playerbot/AI/ClassAI/Priests/ShadowPriest.h +++ b/src/modules/Playerbot/AI/ClassAI/Priests/ShadowPriest.h @@ -36,8 +36,8 @@ // TrinityCore 11.2 New Priest Talents #include "PriestTalentEnhancements.h" -// Central Spell Registry - See WoW112Spells::Priest namespace -#include "../SpellValidation_WoW112_Part2.h" +// Central Spell Registry - See WoW120Spells::Priest namespace +#include "../SpellValidation_WoW120_Part2.h" namespace Playerbot { @@ -54,33 +54,33 @@ using bot::ai::SpellPriority; using bot::ai::SpellCategory; // Note: bot::ai::Action() conflicts with Playerbot::Action, use bot::ai::Action() explicitly -// WoW 11.2 (The War Within) - Shadow Priest Spell IDs -// Using central registry: WoW112Spells::Priest and WoW112Spells::Priest::Shadow -constexpr uint32 SHADOW_MIND_BLAST = WoW112Spells::Priest::Shadow::MIND_BLAST_SHADOW; -constexpr uint32 SHADOW_MIND_FLAY = WoW112Spells::Priest::Shadow::MIND_FLAY; -constexpr uint32 SHADOW_VAMPIRIC_TOUCH = WoW112Spells::Priest::Shadow::VAMPIRIC_TOUCH; -constexpr uint32 SHADOW_SHADOW_WORD_PAIN = WoW112Spells::Priest::SHADOW_WORD_PAIN; -constexpr uint32 SHADOW_DEVOURING_PLAGUE = WoW112Spells::Priest::Shadow::DEVOURING_PLAGUE; -constexpr uint32 SHADOW_VOID_ERUPTION = WoW112Spells::Priest::Shadow::VOID_ERUPTION; -constexpr uint32 SHADOW_VOID_BOLT = WoW112Spells::Priest::Shadow::VOID_BOLT; -constexpr uint32 SHADOW_MIND_SEAR = WoW112Spells::Priest::Shadow::MIND_SEAR; -constexpr uint32 SHADOW_SHADOW_CRASH = WoW112Spells::Priest::Shadow::SHADOW_CRASH; -constexpr uint32 SHADOW_VOID_TORRENT = WoW112Spells::Priest::Shadow::VOID_TORRENT; -constexpr uint32 SHADOW_DARK_ASCENSION = WoW112Spells::Priest::Shadow::DARK_ASCENSION; -constexpr uint32 SHADOW_MINDGAMES = WoW112Spells::Priest::Shadow::MINDGAMES_SHADOW; -constexpr uint32 SHADOW_SHADOW_WORD_DEATH = WoW112Spells::Priest::SHADOW_WORD_DEATH; -constexpr uint32 SHADOW_VAMPIRIC_EMBRACE = WoW112Spells::Priest::Shadow::VAMPIRIC_EMBRACE; -constexpr uint32 SHADOW_DISPERSION = WoW112Spells::Priest::Shadow::DISPERSION; -constexpr uint32 SHADOW_FADE = WoW112Spells::Priest::FADE; -constexpr uint32 SHADOW_DESPERATE_PRAYER = WoW112Spells::Priest::DESPERATE_PRAYER; -constexpr uint32 SHADOW_POWER_WORD_FORTITUDE = WoW112Spells::Priest::POWER_WORD_FORTITUDE; -constexpr uint32 SHADOW_SHADOWFORM = WoW112Spells::Priest::Shadow::SHADOWFORM; +// WoW 12.0 (The War Within) - Shadow Priest Spell IDs +// Using central registry: WoW120Spells::Priest and WoW120Spells::Priest::Shadow +constexpr uint32 SHADOW_MIND_BLAST = WoW120Spells::Priest::Shadow::MIND_BLAST_SHADOW; +constexpr uint32 SHADOW_MIND_FLAY = WoW120Spells::Priest::Shadow::MIND_FLAY; +constexpr uint32 SHADOW_VAMPIRIC_TOUCH = WoW120Spells::Priest::Shadow::VAMPIRIC_TOUCH; +constexpr uint32 SHADOW_SHADOW_WORD_PAIN = WoW120Spells::Priest::SHADOW_WORD_PAIN; +constexpr uint32 SHADOW_DEVOURING_PLAGUE = WoW120Spells::Priest::Shadow::DEVOURING_PLAGUE; +constexpr uint32 SHADOW_VOID_ERUPTION = WoW120Spells::Priest::Shadow::VOID_ERUPTION; +constexpr uint32 SHADOW_VOID_BOLT = WoW120Spells::Priest::Shadow::VOID_BOLT; +constexpr uint32 SHADOW_MIND_SEAR = WoW120Spells::Priest::Shadow::MIND_SEAR; +constexpr uint32 SHADOW_SHADOW_CRASH = WoW120Spells::Priest::Shadow::SHADOW_CRASH; +constexpr uint32 SHADOW_VOID_TORRENT = WoW120Spells::Priest::Shadow::VOID_TORRENT; +constexpr uint32 SHADOW_DARK_ASCENSION = WoW120Spells::Priest::Shadow::DARK_ASCENSION; +constexpr uint32 SHADOW_MINDGAMES = WoW120Spells::Priest::Shadow::MINDGAMES_SHADOW; +constexpr uint32 SHADOW_SHADOW_WORD_DEATH = WoW120Spells::Priest::SHADOW_WORD_DEATH; +constexpr uint32 SHADOW_VAMPIRIC_EMBRACE = WoW120Spells::Priest::Shadow::VAMPIRIC_EMBRACE; +constexpr uint32 SHADOW_DISPERSION = WoW120Spells::Priest::Shadow::DISPERSION; +constexpr uint32 SHADOW_FADE = WoW120Spells::Priest::FADE; +constexpr uint32 SHADOW_DESPERATE_PRAYER = WoW120Spells::Priest::DESPERATE_PRAYER; +constexpr uint32 SHADOW_POWER_WORD_FORTITUDE = WoW120Spells::Priest::POWER_WORD_FORTITUDE; +constexpr uint32 SHADOW_SHADOWFORM = WoW120Spells::Priest::Shadow::SHADOWFORM; // TrinityCore 11.2 Talent Spell IDs -// Using central registry: WoW112Spells::Priest::Shadow -constexpr uint32 SHADOW_MINDBENDER = WoW112Spells::Priest::Shadow::MINDBENDER; -constexpr uint32 SHADOW_SHADOWFIEND = WoW112Spells::Priest::Shadow::SHADOWFIEND_SHADOW; -constexpr uint32 SHADOW_HALO = WoW112Spells::Priest::Shadow::HALO_SHADOW; +// Using central registry: WoW120Spells::Priest::Shadow +constexpr uint32 SHADOW_MINDBENDER = WoW120Spells::Priest::Shadow::MINDBENDER; +constexpr uint32 SHADOW_SHADOWFIEND = WoW120Spells::Priest::Shadow::SHADOWFIEND_SHADOW; +constexpr uint32 SHADOW_HALO = WoW120Spells::Priest::Shadow::HALO_SHADOW; // Insanity tracker (Shadow Priest secondary resource - primary is still Mana) class InsanityTracker diff --git a/src/modules/Playerbot/AI/ClassAI/ResourceManager.cpp b/src/modules/Playerbot/AI/ClassAI/ResourceManager.cpp index a0acf61b1..9cc9d4e2c 100644 --- a/src/modules/Playerbot/AI/ClassAI/ResourceManager.cpp +++ b/src/modules/Playerbot/AI/ClassAI/ResourceManager.cpp @@ -1292,7 +1292,7 @@ float ResourceCalculator::CalculateManaRegen(Player* player) if (!player) return 0.0f; - // WoW 11.2 mana regeneration formula based on intellect and haste + // WoW 12.0 mana regeneration formula based on intellect and haste // Base mana regen = intellect * coefficient * haste modifier float intellect = player->GetStat(STAT_INTELLECT); // Base regeneration scales with max mana pool size @@ -1389,7 +1389,7 @@ float ResourceCalculator::CalculateEnergyRegen(Player* player) if (!player) return 0.0f; - // WoW 11.2 energy regeneration: base 10/second + haste scaling + // WoW 12.0 energy regeneration: base 10/second + haste scaling constexpr float BASE_ENERGY_REGEN = 10.0f; float baseRegen = BASE_ENERGY_REGEN; @@ -1489,7 +1489,7 @@ float ResourceCalculator::CalculateRageDecay(Player* player) if (!player) return 0.0f; - // WoW 11.2 rage decay mechanics + // WoW 12.0 rage decay mechanics // Rage decays at ~1 rage per second out of combat after a delay // No decay while in combat @@ -1945,7 +1945,7 @@ uint32 ResourceCalculator::GetComboPointsFromSpell(uint32 spellId) } } - // Note: In WoW 11.2, combo point generation is typically handled + // Note: In WoW 12.0, combo point generation is typically handled // via SPELL_EFFECT_ENERGIZE rather than aura effects } diff --git a/src/modules/Playerbot/AI/ClassAI/ResourceSystemWoW112.md b/src/modules/Playerbot/AI/ClassAI/ResourceSystemWoW120.md similarity index 100% rename from src/modules/Playerbot/AI/ClassAI/ResourceSystemWoW112.md rename to src/modules/Playerbot/AI/ClassAI/ResourceSystemWoW120.md diff --git a/src/modules/Playerbot/AI/ClassAI/ResourceTypes_WoW112.h b/src/modules/Playerbot/AI/ClassAI/ResourceTypes_WoW120.h similarity index 99% rename from src/modules/Playerbot/AI/ClassAI/ResourceTypes_WoW112.h rename to src/modules/Playerbot/AI/ClassAI/ResourceTypes_WoW120.h index ad11f23d9..19895a9a5 100644 --- a/src/modules/Playerbot/AI/ClassAI/ResourceTypes_WoW112.h +++ b/src/modules/Playerbot/AI/ClassAI/ResourceTypes_WoW120.h @@ -18,9 +18,9 @@ namespace Playerbot { /** - * WoW 11.2 (The War Within) Complete Resource Type System + * WoW 12.0 (The War Within) Complete Resource Type System * - * This file defines all resource types used by the 13 classes in WoW 11.2. + * This file defines all resource types used by the 13 classes in WoW 12.0. * Each resource type is designed to work with the CombatSpecializationBase template. */ diff --git a/src/modules/Playerbot/AI/ClassAI/Rogues/AssassinationRogue.h b/src/modules/Playerbot/AI/ClassAI/Rogues/AssassinationRogue.h index a7e1f9d95..01957cbf1 100644 --- a/src/modules/Playerbot/AI/ClassAI/Rogues/AssassinationRogue.h +++ b/src/modules/Playerbot/AI/ClassAI/Rogues/AssassinationRogue.h @@ -30,9 +30,9 @@ #include "../../Decision/BehaviorTree.h" #include "../BotAI.h" -// Central Spell Registry - See WoW112Spells::Rogue namespace -#include "../SpellValidation_WoW112.h" -#include "../SpellValidation_WoW112_Part2.h" +// Central Spell Registry - See WoW120Spells::Rogue namespace +#include "../SpellValidation_WoW120.h" +#include "../SpellValidation_WoW120_Part2.h" namespace Playerbot { @@ -57,16 +57,16 @@ class AssassinationRogueRefactored : public MeleeDpsSpecialization * - * World of Warcraft 11.2 (The War Within) Spell ID Validation + * World of Warcraft 12.0 (The War Within) Spell ID Validation * - * This file contains all validated spell IDs for WoW 11.2 including + * This file contains all validated spell IDs for WoW 12.0 including * Hero Talent abilities for all 39 specializations. */ @@ -11,11 +11,11 @@ namespace Playerbot { -namespace WoW112Spells +namespace WoW120Spells { // ============================================================================ -// DEATH KNIGHT SPELLS - Updated for 11.2 +// DEATH KNIGHT SPELLS - Updated for 12.0 // ============================================================================ namespace DeathKnight @@ -186,7 +186,7 @@ namespace DeathKnight } // ============================================================================ -// DEMON HUNTER SPELLS - Updated for 11.2 +// DEMON HUNTER SPELLS - Updated for 12.0 // ============================================================================ namespace DemonHunter @@ -368,7 +368,7 @@ namespace DemonHunter } // ============================================================================ -// DRUID SPELLS - Updated for 11.2 +// DRUID SPELLS - Updated for 12.0 // ============================================================================ namespace Druid @@ -653,7 +653,7 @@ namespace Druid } // ============================================================================ -// EVOKER SPELLS - Updated for 11.2 +// EVOKER SPELLS - Updated for 12.0 // ============================================================================ namespace Evoker @@ -839,7 +839,7 @@ namespace Evoker } // ============================================================================ -// HUNTER SPELLS - Updated for 11.2 +// HUNTER SPELLS - Updated for 12.0 // ============================================================================ namespace Hunter @@ -1058,7 +1058,7 @@ namespace Hunter } // ============================================================================ -// MAGE SPELLS - Updated for 11.2 +// MAGE SPELLS - Updated for 12.0 // ============================================================================ namespace Mage @@ -1267,7 +1267,7 @@ namespace Mage } // ============================================================================ -// MONK SPELLS - Updated for 11.2 +// MONK SPELLS - Updated for 12.0 // ============================================================================ namespace Monk @@ -1521,5 +1521,5 @@ namespace Monk // Continued in next part due to length... -} // namespace WoW112Spells +} // namespace WoW120Spells } // namespace Playerbot \ No newline at end of file diff --git a/src/modules/Playerbot/AI/ClassAI/SpellValidation_WoW112_Part2.h b/src/modules/Playerbot/AI/ClassAI/SpellValidation_WoW120_Part2.h similarity index 99% rename from src/modules/Playerbot/AI/ClassAI/SpellValidation_WoW112_Part2.h rename to src/modules/Playerbot/AI/ClassAI/SpellValidation_WoW120_Part2.h index 01ce14a46..cf0c2a93d 100644 --- a/src/modules/Playerbot/AI/ClassAI/SpellValidation_WoW112_Part2.h +++ b/src/modules/Playerbot/AI/ClassAI/SpellValidation_WoW120_Part2.h @@ -3,7 +3,7 @@ * * World of Warcraft 11.2 (The War Within) Spell ID Validation - Part 2 * - * This file contains validated spell IDs for WoW 11.2 including + * This file contains validated spell IDs for WoW 12.0 including * Hero Talent abilities for Paladin through Warrior specializations. */ @@ -11,11 +11,11 @@ namespace Playerbot { -namespace WoW112Spells +namespace WoW120Spells { // ============================================================================ -// PALADIN SPELLS - Updated for 11.2 +// PALADIN SPELLS - Updated for 12.0 // ============================================================================ namespace Paladin @@ -237,7 +237,7 @@ namespace Paladin } // ============================================================================ -// PRIEST SPELLS - Updated for 11.2 +// PRIEST SPELLS - Updated for 12.0 // ============================================================================ namespace Priest @@ -453,7 +453,7 @@ namespace Priest } // ============================================================================ -// ROGUE SPELLS - Updated for 11.2 +// ROGUE SPELLS - Updated for 12.0 // ============================================================================ namespace Rogue @@ -677,7 +677,7 @@ namespace Rogue } // ============================================================================ -// SHAMAN SPELLS - Updated for 11.2 +// SHAMAN SPELLS - Updated for 12.0 // ============================================================================ namespace Shaman @@ -892,7 +892,7 @@ namespace Shaman } // ============================================================================ -// WARLOCK SPELLS - Updated for 11.2 +// WARLOCK SPELLS - Updated for 12.0 // ============================================================================ namespace Warlock @@ -1130,7 +1130,7 @@ namespace Warlock } // ============================================================================ -// WARRIOR SPELLS - Updated for 11.2.7 (The War Within) +// WARRIOR SPELLS - Updated for 12.0.7 (The War Within) // ============================================================================ namespace Warrior @@ -1353,5 +1353,5 @@ namespace Warrior } } -} // namespace WoW112Spells +} // namespace WoW120Spells } // namespace Playerbot \ No newline at end of file diff --git a/src/modules/Playerbot/AI/ClassAI/Warlocks/AfflictionWarlock.h b/src/modules/Playerbot/AI/ClassAI/Warlocks/AfflictionWarlock.h index 91b5f92ae..d0805c107 100644 --- a/src/modules/Playerbot/AI/ClassAI/Warlocks/AfflictionWarlock.h +++ b/src/modules/Playerbot/AI/ClassAI/Warlocks/AfflictionWarlock.h @@ -25,7 +25,7 @@ #include "../../Decision/ActionPriorityQueue.h" #include "../../Decision/BehaviorTree.h" #include "../BotAI.h" -#include "../SpellValidation_WoW112_Part2.h" +#include "../SpellValidation_WoW120_Part2.h" // NOTE: BaselineRotationManager.h no longer needed - baseline rotation check // is now handled centrally at the dispatch level in ClassAI::OnCombatUpdate() @@ -45,70 +45,70 @@ using bot::ai::SpellCategory; // Note: bot::ai::Action() conflicts with Playerbot::Action, use bot::ai::Action() explicitly // ============================================================================ -// AFFLICTION WARLOCK SPELL IDs (WoW 11.2 - The War Within) -// Central Registry: WoW112Spells::Warlock::Affliction in SpellValidation_WoW112_Part2.h +// AFFLICTION WARLOCK SPELL IDs (WoW 12.0 - The War Within) +// Central Registry: WoW120Spells::Warlock::Affliction in SpellValidation_WoW120_Part2.h // ============================================================================ enum AfflictionWarlockSpells { - // DoT Spells - Using central registry: WoW112Spells::Warlock::Affliction - AGONY = WoW112Spells::Warlock::Affliction::AGONY, - CORRUPTION = WoW112Spells::Warlock::CORRUPTION, - UNSTABLE_AFFLICTION = WoW112Spells::Warlock::Affliction::UNSTABLE_AFFLICTION, - SIPHON_LIFE = WoW112Spells::Warlock::Affliction::SIPHON_LIFE, - HAUNT = WoW112Spells::Warlock::Affliction::HAUNT, + // DoT Spells - Using central registry: WoW120Spells::Warlock::Affliction + AGONY = WoW120Spells::Warlock::Affliction::AGONY, + CORRUPTION = WoW120Spells::Warlock::CORRUPTION, + UNSTABLE_AFFLICTION = WoW120Spells::Warlock::Affliction::UNSTABLE_AFFLICTION, + SIPHON_LIFE = WoW120Spells::Warlock::Affliction::SIPHON_LIFE, + HAUNT = WoW120Spells::Warlock::Affliction::HAUNT, - // Direct Damage - Using central registry: WoW112Spells::Warlock - SHADOW_BOLT_AFF = WoW112Spells::Warlock::SHADOW_BOLT, - DRAIN_SOUL = WoW112Spells::Warlock::Affliction::DRAIN_SOUL, - MALEFIC_RAPTURE = WoW112Spells::Warlock::Affliction::MALEFIC_RAPTURE, + // Direct Damage - Using central registry: WoW120Spells::Warlock + SHADOW_BOLT_AFF = WoW120Spells::Warlock::SHADOW_BOLT, + DRAIN_SOUL = WoW120Spells::Warlock::Affliction::DRAIN_SOUL, + MALEFIC_RAPTURE = WoW120Spells::Warlock::Affliction::MALEFIC_RAPTURE, - // Major Cooldowns - Using central registry: WoW112Spells::Warlock::Affliction - PHANTOM_SINGULARITY = WoW112Spells::Warlock::Affliction::PHANTOM_SINGULARITY, - VILE_TAINT = WoW112Spells::Warlock::Affliction::VILE_TAINT, - SOUL_ROT = WoW112Spells::Warlock::Affliction::SOUL_ROT, - SUMMON_DARKGLARE = WoW112Spells::Warlock::Affliction::SUMMON_DARKGLARE, - DARK_SOUL_MISERY = WoW112Spells::Warlock::Affliction::DARK_SOUL_MISERY, + // Major Cooldowns - Using central registry: WoW120Spells::Warlock::Affliction + PHANTOM_SINGULARITY = WoW120Spells::Warlock::Affliction::PHANTOM_SINGULARITY, + VILE_TAINT = WoW120Spells::Warlock::Affliction::VILE_TAINT, + SOUL_ROT = WoW120Spells::Warlock::Affliction::SOUL_ROT, + SUMMON_DARKGLARE = WoW120Spells::Warlock::Affliction::SUMMON_DARKGLARE, + DARK_SOUL_MISERY = WoW120Spells::Warlock::Affliction::DARK_SOUL_MISERY, - // AoE - Using central registry: WoW112Spells::Warlock::Affliction - SEED_OF_CORRUPTION = WoW112Spells::Warlock::Affliction::SEED_OF_CORRUPTION, - SOULBURN = WoW112Spells::Warlock::Affliction::SOULBURN, + // AoE - Using central registry: WoW120Spells::Warlock::Affliction + SEED_OF_CORRUPTION = WoW120Spells::Warlock::Affliction::SEED_OF_CORRUPTION, + SOULBURN = WoW120Spells::Warlock::Affliction::SOULBURN, - // Pet Management - Using central registry: WoW112Spells::Warlock - SUMMON_IMP_AFF = WoW112Spells::Warlock::SUMMON_IMP, - SUMMON_VOIDWALKER_AFF = WoW112Spells::Warlock::SUMMON_VOIDWALKER, - SUMMON_FELHUNTER_AFF = WoW112Spells::Warlock::SUMMON_FELHUNTER, - SUMMON_SUCCUBUS_AFF = WoW112Spells::Warlock::SUMMON_SUCCUBUS, - COMMAND_DEMON_AFF = WoW112Spells::Warlock::COMMAND_DEMON, + // Pet Management - Using central registry: WoW120Spells::Warlock + SUMMON_IMP_AFF = WoW120Spells::Warlock::SUMMON_IMP, + SUMMON_VOIDWALKER_AFF = WoW120Spells::Warlock::SUMMON_VOIDWALKER, + SUMMON_FELHUNTER_AFF = WoW120Spells::Warlock::SUMMON_FELHUNTER, + SUMMON_SUCCUBUS_AFF = WoW120Spells::Warlock::SUMMON_SUCCUBUS, + COMMAND_DEMON_AFF = WoW120Spells::Warlock::COMMAND_DEMON, - // Utility - Using central registry: WoW112Spells::Warlock - CURSE_OF_WEAKNESS = WoW112Spells::Warlock::CURSE_OF_WEAKNESS, - CURSE_OF_TONGUES = WoW112Spells::Warlock::CURSE_OF_TONGUES, - CURSE_OF_EXHAUSTION = WoW112Spells::Warlock::CURSE_OF_EXHAUSTION, - UNENDING_RESOLVE = WoW112Spells::Warlock::UNENDING_RESOLVE, - DARK_PACT = WoW112Spells::Warlock::Affliction::DARK_PACT, - MORTAL_COIL = WoW112Spells::Warlock::MORTAL_COIL, - HOWL_OF_TERROR = WoW112Spells::Warlock::HOWL_OF_TERROR, - FEAR = WoW112Spells::Warlock::FEAR, - BANISH = WoW112Spells::Warlock::BANISH, - SOULSTONE = WoW112Spells::Warlock::SOULSTONE, + // Utility - Using central registry: WoW120Spells::Warlock + CURSE_OF_WEAKNESS = WoW120Spells::Warlock::CURSE_OF_WEAKNESS, + CURSE_OF_TONGUES = WoW120Spells::Warlock::CURSE_OF_TONGUES, + CURSE_OF_EXHAUSTION = WoW120Spells::Warlock::CURSE_OF_EXHAUSTION, + UNENDING_RESOLVE = WoW120Spells::Warlock::UNENDING_RESOLVE, + DARK_PACT = WoW120Spells::Warlock::Affliction::DARK_PACT, + MORTAL_COIL = WoW120Spells::Warlock::MORTAL_COIL, + HOWL_OF_TERROR = WoW120Spells::Warlock::HOWL_OF_TERROR, + FEAR = WoW120Spells::Warlock::FEAR, + BANISH = WoW120Spells::Warlock::BANISH, + SOULSTONE = WoW120Spells::Warlock::SOULSTONE, - // Defensives - Using central registry: WoW112Spells::Warlock - HEALTH_FUNNEL = WoW112Spells::Warlock::HEALTH_FUNNEL, - DEMONIC_CIRCLE_TELEPORT = WoW112Spells::Warlock::DEMONIC_CIRCLE_TELEPORT, - DEMONIC_GATEWAY = WoW112Spells::Warlock::DEMONIC_GATEWAY, - BURNING_RUSH = WoW112Spells::Warlock::BURNING_RUSH, + // Defensives - Using central registry: WoW120Spells::Warlock + HEALTH_FUNNEL = WoW120Spells::Warlock::HEALTH_FUNNEL, + DEMONIC_CIRCLE_TELEPORT = WoW120Spells::Warlock::DEMONIC_CIRCLE_TELEPORT, + DEMONIC_GATEWAY = WoW120Spells::Warlock::DEMONIC_GATEWAY, + BURNING_RUSH = WoW120Spells::Warlock::BURNING_RUSH, - // Procs and Buffs - Using central registry: WoW112Spells::Warlock::Affliction - NIGHTFALL = WoW112Spells::Warlock::Affliction::NIGHTFALL, - INEVITABLE_DEMISE = WoW112Spells::Warlock::Affliction::INEVITABLE_DEMISE, - TORMENTED_CRESCENDO = WoW112Spells::Warlock::Affliction::TORMENTED_CRESCENDO, + // Procs and Buffs - Using central registry: WoW120Spells::Warlock::Affliction + NIGHTFALL = WoW120Spells::Warlock::Affliction::NIGHTFALL, + INEVITABLE_DEMISE = WoW120Spells::Warlock::Affliction::INEVITABLE_DEMISE, + TORMENTED_CRESCENDO = WoW120Spells::Warlock::Affliction::TORMENTED_CRESCENDO, - // Talents - Using central registry: WoW112Spells::Warlock::Affliction - GRIMOIRE_OF_SACRIFICE = WoW112Spells::Warlock::Affliction::GRIMOIRE_OF_SACRIFICE, - SOUL_CONDUIT = WoW112Spells::Warlock::Affliction::SOUL_CONDUIT, - CREEPING_DEATH = WoW112Spells::Warlock::Affliction::CREEPING_DEATH, - WRITHE_IN_AGONY = WoW112Spells::Warlock::Affliction::WRITHE_IN_AGONY + // Talents - Using central registry: WoW120Spells::Warlock::Affliction + GRIMOIRE_OF_SACRIFICE = WoW120Spells::Warlock::Affliction::GRIMOIRE_OF_SACRIFICE, + SOUL_CONDUIT = WoW120Spells::Warlock::Affliction::SOUL_CONDUIT, + CREEPING_DEATH = WoW120Spells::Warlock::Affliction::CREEPING_DEATH, + WRITHE_IN_AGONY = WoW120Spells::Warlock::Affliction::WRITHE_IN_AGONY }; // Dual resource type for Warlock (Mana + Soul Shards) diff --git a/src/modules/Playerbot/AI/ClassAI/Warlocks/DemonologyWarlock.h b/src/modules/Playerbot/AI/ClassAI/Warlocks/DemonologyWarlock.h index 4016b9c18..5bd41ff51 100644 --- a/src/modules/Playerbot/AI/ClassAI/Warlocks/DemonologyWarlock.h +++ b/src/modules/Playerbot/AI/ClassAI/Warlocks/DemonologyWarlock.h @@ -24,7 +24,7 @@ #include "../../Decision/ActionPriorityQueue.h" #include "../../Decision/BehaviorTree.h" #include "../BotAI.h" -#include "../SpellValidation_WoW112_Part2.h" +#include "../SpellValidation_WoW120_Part2.h" namespace Playerbot { @@ -42,67 +42,67 @@ using bot::ai::SpellCategory; // Note: bot::ai::Action() conflicts with Playerbot::Action, use bot::ai::Action() explicitly // ============================================================================ -// DEMONOLOGY WARLOCK SPELL IDs (WoW 11.2 - The War Within) -// Central Registry: WoW112Spells::Warlock::Demonology in SpellValidation_WoW112_Part2.h +// DEMONOLOGY WARLOCK SPELL IDs (WoW 12.0 - The War Within) +// Central Registry: WoW120Spells::Warlock::Demonology in SpellValidation_WoW120_Part2.h // ============================================================================ enum DemonologyWarlockSpells { - // Core Builders - Using central registry: WoW112Spells::Warlock::Demonology - HAND_OF_GULDAN = WoW112Spells::Warlock::Demonology::HAND_OF_GULDAN, - DEMONBOLT = WoW112Spells::Warlock::Demonology::DEMONBOLT, - SHADOW_BOLT_DEMO = WoW112Spells::Warlock::SHADOW_BOLT, + // Core Builders - Using central registry: WoW120Spells::Warlock::Demonology + HAND_OF_GULDAN = WoW120Spells::Warlock::Demonology::HAND_OF_GULDAN, + DEMONBOLT = WoW120Spells::Warlock::Demonology::DEMONBOLT, + SHADOW_BOLT_DEMO = WoW120Spells::Warlock::SHADOW_BOLT, - // Demon Summoning - Using central registry: WoW112Spells::Warlock::Demonology - CALL_DREADSTALKERS = WoW112Spells::Warlock::Demonology::CALL_DREADSTALKERS, - SUMMON_VILEFIEND = WoW112Spells::Warlock::Demonology::SUMMON_VILEFIEND, - GRIMOIRE_FELGUARD = WoW112Spells::Warlock::Demonology::GRIMOIRE_FELGUARD, - NETHER_PORTAL = WoW112Spells::Warlock::Demonology::NETHER_PORTAL, - SUMMON_DEMONIC_TYRANT = WoW112Spells::Warlock::Demonology::SUMMON_DEMONIC_TYRANT, + // Demon Summoning - Using central registry: WoW120Spells::Warlock::Demonology + CALL_DREADSTALKERS = WoW120Spells::Warlock::Demonology::CALL_DREADSTALKERS, + SUMMON_VILEFIEND = WoW120Spells::Warlock::Demonology::SUMMON_VILEFIEND, + GRIMOIRE_FELGUARD = WoW120Spells::Warlock::Demonology::GRIMOIRE_FELGUARD, + NETHER_PORTAL = WoW120Spells::Warlock::Demonology::NETHER_PORTAL, + SUMMON_DEMONIC_TYRANT = WoW120Spells::Warlock::Demonology::SUMMON_DEMONIC_TYRANT, - // Permanent Pets - Using central registry: WoW112Spells::Warlock - SUMMON_FELGUARD = WoW112Spells::Warlock::SUMMON_FELGUARD, - SUMMON_VOIDWALKER_DEMO = WoW112Spells::Warlock::SUMMON_VOIDWALKER, - SUMMON_IMP_DEMO = WoW112Spells::Warlock::SUMMON_IMP, - COMMAND_DEMON_DEMO = WoW112Spells::Warlock::COMMAND_DEMON, + // Permanent Pets - Using central registry: WoW120Spells::Warlock + SUMMON_FELGUARD = WoW120Spells::Warlock::SUMMON_FELGUARD, + SUMMON_VOIDWALKER_DEMO = WoW120Spells::Warlock::SUMMON_VOIDWALKER, + SUMMON_IMP_DEMO = WoW120Spells::Warlock::SUMMON_IMP, + COMMAND_DEMON_DEMO = WoW120Spells::Warlock::COMMAND_DEMON, - // Direct Damage - Using central registry: WoW112Spells::Warlock::Demonology - IMPLOSION = WoW112Spells::Warlock::Demonology::IMPLOSION, - DEMONFIRE = WoW112Spells::Warlock::Demonology::DEMONFIRE, - DOOM = WoW112Spells::Warlock::Demonology::DOOM, + // Direct Damage - Using central registry: WoW120Spells::Warlock::Demonology + IMPLOSION = WoW120Spells::Warlock::Demonology::IMPLOSION, + DEMONFIRE = WoW120Spells::Warlock::Demonology::DEMONFIRE, + DOOM = WoW120Spells::Warlock::Demonology::DOOM, - // Buffs and Procs - Using central registry: WoW112Spells::Warlock::Demonology - DEMONIC_CORE = WoW112Spells::Warlock::Demonology::DEMONIC_CORE, - DEMONIC_CALLING = WoW112Spells::Warlock::Demonology::DEMONIC_CALLING, - DEMONIC_STRENGTH = WoW112Spells::Warlock::Demonology::DEMONIC_STRENGTH, - POWER_SIPHON = WoW112Spells::Warlock::Demonology::POWER_SIPHON, + // Buffs and Procs - Using central registry: WoW120Spells::Warlock::Demonology + DEMONIC_CORE = WoW120Spells::Warlock::Demonology::DEMONIC_CORE, + DEMONIC_CALLING = WoW120Spells::Warlock::Demonology::DEMONIC_CALLING, + DEMONIC_STRENGTH = WoW120Spells::Warlock::Demonology::DEMONIC_STRENGTH, + POWER_SIPHON = WoW120Spells::Warlock::Demonology::POWER_SIPHON, - // Major Cooldowns - Using central registry: WoW112Spells::Warlock::Demonology - SUMMON_DEMONIC_TYRANT_CD = WoW112Spells::Warlock::Demonology::SUMMON_DEMONIC_TYRANT, - NETHER_PORTAL_CD = WoW112Spells::Warlock::Demonology::NETHER_PORTAL, - GUILLOTINE = WoW112Spells::Warlock::Demonology::GUILLOTINE, + // Major Cooldowns - Using central registry: WoW120Spells::Warlock::Demonology + SUMMON_DEMONIC_TYRANT_CD = WoW120Spells::Warlock::Demonology::SUMMON_DEMONIC_TYRANT, + NETHER_PORTAL_CD = WoW120Spells::Warlock::Demonology::NETHER_PORTAL, + GUILLOTINE = WoW120Spells::Warlock::Demonology::GUILLOTINE, - // Utility - Using central registry: WoW112Spells::Warlock::Demonology - SOUL_STRIKE = WoW112Spells::Warlock::Demonology::SOUL_STRIKE, - FEL_DOMINATION = WoW112Spells::Warlock::Demonology::FEL_DOMINATION, - HEALTH_FUNNEL_DEMO = WoW112Spells::Warlock::HEALTH_FUNNEL, - BANISH_DEMO = WoW112Spells::Warlock::BANISH, - FEAR_DEMO = WoW112Spells::Warlock::FEAR, - MORTAL_COIL_DEMO = WoW112Spells::Warlock::MORTAL_COIL, - SHADOWFURY = WoW112Spells::Warlock::SHADOWFURY, + // Utility - Using central registry: WoW120Spells::Warlock::Demonology + SOUL_STRIKE = WoW120Spells::Warlock::Demonology::SOUL_STRIKE, + FEL_DOMINATION = WoW120Spells::Warlock::Demonology::FEL_DOMINATION, + HEALTH_FUNNEL_DEMO = WoW120Spells::Warlock::HEALTH_FUNNEL, + BANISH_DEMO = WoW120Spells::Warlock::BANISH, + FEAR_DEMO = WoW120Spells::Warlock::FEAR, + MORTAL_COIL_DEMO = WoW120Spells::Warlock::MORTAL_COIL, + SHADOWFURY = WoW120Spells::Warlock::SHADOWFURY, - // Defensives - Using central registry: WoW112Spells::Warlock - UNENDING_RESOLVE_DEMO = WoW112Spells::Warlock::UNENDING_RESOLVE, - DARK_PACT_DEMO = WoW112Spells::Warlock::Affliction::DARK_PACT, - DEMONIC_CIRCLE_TELEPORT_DEMO = WoW112Spells::Warlock::DEMONIC_CIRCLE_TELEPORT, - DEMONIC_GATEWAY_DEMO = WoW112Spells::Warlock::DEMONIC_GATEWAY, - BURNING_RUSH_DEMO = WoW112Spells::Warlock::BURNING_RUSH, + // Defensives - Using central registry: WoW120Spells::Warlock + UNENDING_RESOLVE_DEMO = WoW120Spells::Warlock::UNENDING_RESOLVE, + DARK_PACT_DEMO = WoW120Spells::Warlock::Affliction::DARK_PACT, + DEMONIC_CIRCLE_TELEPORT_DEMO = WoW120Spells::Warlock::DEMONIC_CIRCLE_TELEPORT, + DEMONIC_GATEWAY_DEMO = WoW120Spells::Warlock::DEMONIC_GATEWAY, + BURNING_RUSH_DEMO = WoW120Spells::Warlock::BURNING_RUSH, - // Talents - Using central registry: WoW112Spells::Warlock::Demonology - FROM_THE_SHADOWS = WoW112Spells::Warlock::Demonology::FROM_THE_SHADOWS, - SOUL_CONDUIT_DEMO = WoW112Spells::Warlock::Demonology::SOUL_CONDUIT, - INNER_DEMONS = WoW112Spells::Warlock::Demonology::INNER_DEMONS, - CARNIVOROUS_STALKERS = WoW112Spells::Warlock::Demonology::CARNIVOROUS_STALKERS + // Talents - Using central registry: WoW120Spells::Warlock::Demonology + FROM_THE_SHADOWS = WoW120Spells::Warlock::Demonology::FROM_THE_SHADOWS, + SOUL_CONDUIT_DEMO = WoW120Spells::Warlock::Demonology::SOUL_CONDUIT, + INNER_DEMONS = WoW120Spells::Warlock::Demonology::INNER_DEMONS, + CARNIVOROUS_STALKERS = WoW120Spells::Warlock::Demonology::CARNIVOROUS_STALKERS }; // Dual resource type for Demonology Warlock diff --git a/src/modules/Playerbot/AI/ClassAI/Warlocks/DestructionWarlock.h b/src/modules/Playerbot/AI/ClassAI/Warlocks/DestructionWarlock.h index fdc185ea7..634822173 100644 --- a/src/modules/Playerbot/AI/ClassAI/Warlocks/DestructionWarlock.h +++ b/src/modules/Playerbot/AI/ClassAI/Warlocks/DestructionWarlock.h @@ -25,7 +25,7 @@ #include "../../Decision/ActionPriorityQueue.h" #include "../../Decision/BehaviorTree.h" #include "../BotAI.h" -#include "../SpellValidation_WoW112_Part2.h" +#include "../SpellValidation_WoW120_Part2.h" namespace Playerbot { @@ -43,66 +43,66 @@ using bot::ai::SpellCategory; // Note: bot::ai::Action() conflicts with Playerbot::Action, use bot::ai::Action() explicitly // ============================================================================ -// DESTRUCTION WARLOCK SPELL IDs (WoW 11.2 - The War Within) -// Central Registry: WoW112Spells::Warlock::Destruction in SpellValidation_WoW112_Part2.h +// DESTRUCTION WARLOCK SPELL IDs (WoW 12.0 - The War Within) +// Central Registry: WoW120Spells::Warlock::Destruction in SpellValidation_WoW120_Part2.h // ============================================================================ enum DestructionWarlockSpells { - // Core Spells - Using central registry: WoW112Spells::Warlock::Destruction - CHAOS_BOLT = WoW112Spells::Warlock::Destruction::CHAOS_BOLT, - INCINERATE = WoW112Spells::Warlock::Destruction::INCINERATE, - CONFLAGRATE = WoW112Spells::Warlock::Destruction::CONFLAGRATE, - IMMOLATE = WoW112Spells::Warlock::Destruction::IMMOLATE, + // Core Spells - Using central registry: WoW120Spells::Warlock::Destruction + CHAOS_BOLT = WoW120Spells::Warlock::Destruction::CHAOS_BOLT, + INCINERATE = WoW120Spells::Warlock::Destruction::INCINERATE, + CONFLAGRATE = WoW120Spells::Warlock::Destruction::CONFLAGRATE, + IMMOLATE = WoW120Spells::Warlock::Destruction::IMMOLATE, - // AoE Spells - Using central registry: WoW112Spells::Warlock::Destruction - RAIN_OF_FIRE = WoW112Spells::Warlock::Destruction::RAIN_OF_FIRE, - CHANNEL_DEMONFIRE = WoW112Spells::Warlock::Destruction::CHANNEL_DEMONFIRE, - CATACLYSM = WoW112Spells::Warlock::Destruction::CATACLYSM, - HAVOC = WoW112Spells::Warlock::Destruction::HAVOC, + // AoE Spells - Using central registry: WoW120Spells::Warlock::Destruction + RAIN_OF_FIRE = WoW120Spells::Warlock::Destruction::RAIN_OF_FIRE, + CHANNEL_DEMONFIRE = WoW120Spells::Warlock::Destruction::CHANNEL_DEMONFIRE, + CATACLYSM = WoW120Spells::Warlock::Destruction::CATACLYSM, + HAVOC = WoW120Spells::Warlock::Destruction::HAVOC, - // Major Cooldowns - Using central registry: WoW112Spells::Warlock::Destruction - SUMMON_INFERNAL = WoW112Spells::Warlock::Destruction::SUMMON_INFERNAL, - DARK_SOUL_INSTABILITY = WoW112Spells::Warlock::Destruction::DARK_SOUL_INSTABILITY, - SOUL_FIRE = WoW112Spells::Warlock::Destruction::SOUL_FIRE, + // Major Cooldowns - Using central registry: WoW120Spells::Warlock::Destruction + SUMMON_INFERNAL = WoW120Spells::Warlock::Destruction::SUMMON_INFERNAL, + DARK_SOUL_INSTABILITY = WoW120Spells::Warlock::Destruction::DARK_SOUL_INSTABILITY, + SOUL_FIRE = WoW120Spells::Warlock::Destruction::SOUL_FIRE, - // Pet Management - Using central registry: WoW112Spells::Warlock - SUMMON_IMP_DESTRO = WoW112Spells::Warlock::SUMMON_IMP, - SUMMON_VOIDWALKER_DESTRO = WoW112Spells::Warlock::SUMMON_VOIDWALKER, - SUMMON_SUCCUBUS_DESTRO = WoW112Spells::Warlock::SUMMON_SUCCUBUS, - SUMMON_FELHUNTER_DESTRO = WoW112Spells::Warlock::SUMMON_FELHUNTER, - COMMAND_DEMON_DESTRO = WoW112Spells::Warlock::COMMAND_DEMON, + // Pet Management - Using central registry: WoW120Spells::Warlock + SUMMON_IMP_DESTRO = WoW120Spells::Warlock::SUMMON_IMP, + SUMMON_VOIDWALKER_DESTRO = WoW120Spells::Warlock::SUMMON_VOIDWALKER, + SUMMON_SUCCUBUS_DESTRO = WoW120Spells::Warlock::SUMMON_SUCCUBUS, + SUMMON_FELHUNTER_DESTRO = WoW120Spells::Warlock::SUMMON_FELHUNTER, + COMMAND_DEMON_DESTRO = WoW120Spells::Warlock::COMMAND_DEMON, - // Utility - Using central registry: WoW112Spells::Warlock - CURSE_OF_TONGUES_DESTRO = WoW112Spells::Warlock::CURSE_OF_TONGUES, - CURSE_OF_WEAKNESS_DESTRO = WoW112Spells::Warlock::CURSE_OF_WEAKNESS, - CURSE_OF_EXHAUSTION_DESTRO = WoW112Spells::Warlock::CURSE_OF_EXHAUSTION, - SHADOWBURN = WoW112Spells::Warlock::Destruction::SHADOWBURN, - BACKDRAFT = WoW112Spells::Warlock::Destruction::BACKDRAFT, + // Utility - Using central registry: WoW120Spells::Warlock + CURSE_OF_TONGUES_DESTRO = WoW120Spells::Warlock::CURSE_OF_TONGUES, + CURSE_OF_WEAKNESS_DESTRO = WoW120Spells::Warlock::CURSE_OF_WEAKNESS, + CURSE_OF_EXHAUSTION_DESTRO = WoW120Spells::Warlock::CURSE_OF_EXHAUSTION, + SHADOWBURN = WoW120Spells::Warlock::Destruction::SHADOWBURN, + BACKDRAFT = WoW120Spells::Warlock::Destruction::BACKDRAFT, - // Defensives - Using central registry: WoW112Spells::Warlock - UNENDING_RESOLVE_DESTRO = WoW112Spells::Warlock::UNENDING_RESOLVE, - DARK_PACT_DESTRO = WoW112Spells::Warlock::Affliction::DARK_PACT, - MORTAL_COIL_DESTRO = WoW112Spells::Warlock::MORTAL_COIL, - HOWL_OF_TERROR_DESTRO = WoW112Spells::Warlock::HOWL_OF_TERROR, - FEAR_DESTRO = WoW112Spells::Warlock::FEAR, - BANISH_DESTRO = WoW112Spells::Warlock::BANISH, - DEMONIC_CIRCLE_TELEPORT_DESTRO = WoW112Spells::Warlock::DEMONIC_CIRCLE_TELEPORT, - DEMONIC_GATEWAY_DESTRO = WoW112Spells::Warlock::DEMONIC_GATEWAY, - BURNING_RUSH_DESTRO = WoW112Spells::Warlock::BURNING_RUSH, + // Defensives - Using central registry: WoW120Spells::Warlock + UNENDING_RESOLVE_DESTRO = WoW120Spells::Warlock::UNENDING_RESOLVE, + DARK_PACT_DESTRO = WoW120Spells::Warlock::Affliction::DARK_PACT, + MORTAL_COIL_DESTRO = WoW120Spells::Warlock::MORTAL_COIL, + HOWL_OF_TERROR_DESTRO = WoW120Spells::Warlock::HOWL_OF_TERROR, + FEAR_DESTRO = WoW120Spells::Warlock::FEAR, + BANISH_DESTRO = WoW120Spells::Warlock::BANISH, + DEMONIC_CIRCLE_TELEPORT_DESTRO = WoW120Spells::Warlock::DEMONIC_CIRCLE_TELEPORT, + DEMONIC_GATEWAY_DESTRO = WoW120Spells::Warlock::DEMONIC_GATEWAY, + BURNING_RUSH_DESTRO = WoW120Spells::Warlock::BURNING_RUSH, - // Procs and Buffs - Using central registry: WoW112Spells::Warlock::Destruction - BACKDRAFT_BUFF = WoW112Spells::Warlock::Destruction::BACKDRAFT_BUFF, - REVERSE_ENTROPY = WoW112Spells::Warlock::Destruction::REVERSE_ENTROPY, - ERADICATION = WoW112Spells::Warlock::Destruction::ERADICATION, - FLASHOVER = WoW112Spells::Warlock::Destruction::FLASHOVER, + // Procs and Buffs - Using central registry: WoW120Spells::Warlock::Destruction + BACKDRAFT_BUFF = WoW120Spells::Warlock::Destruction::BACKDRAFT_BUFF, + REVERSE_ENTROPY = WoW120Spells::Warlock::Destruction::REVERSE_ENTROPY, + ERADICATION = WoW120Spells::Warlock::Destruction::ERADICATION, + FLASHOVER = WoW120Spells::Warlock::Destruction::FLASHOVER, - // Talents - Using central registry: WoW112Spells::Warlock::Destruction - ROARING_BLAZE = WoW112Spells::Warlock::Destruction::ROARING_BLAZE, - INTERNAL_COMBUSTION = WoW112Spells::Warlock::Destruction::INTERNAL_COMBUSTION, - FIRE_AND_BRIMSTONE = WoW112Spells::Warlock::Destruction::FIRE_AND_BRIMSTONE, - INFERNO = WoW112Spells::Warlock::Destruction::INFERNO, - GRIMOIRE_OF_SUPREMACY = WoW112Spells::Warlock::Destruction::GRIMOIRE_OF_SUPREMACY + // Talents - Using central registry: WoW120Spells::Warlock::Destruction + ROARING_BLAZE = WoW120Spells::Warlock::Destruction::ROARING_BLAZE, + INTERNAL_COMBUSTION = WoW120Spells::Warlock::Destruction::INTERNAL_COMBUSTION, + FIRE_AND_BRIMSTONE = WoW120Spells::Warlock::Destruction::FIRE_AND_BRIMSTONE, + INFERNO = WoW120Spells::Warlock::Destruction::INFERNO, + GRIMOIRE_OF_SUPREMACY = WoW120Spells::Warlock::Destruction::GRIMOIRE_OF_SUPREMACY }; // Dual resource type for Destruction Warlock diff --git a/src/modules/Playerbot/AI/ClassAI/Warlocks/WarlockAI.cpp b/src/modules/Playerbot/AI/ClassAI/Warlocks/WarlockAI.cpp index a5ab0f78c..5d8dc7161 100644 --- a/src/modules/Playerbot/AI/ClassAI/Warlocks/WarlockAI.cpp +++ b/src/modules/Playerbot/AI/ClassAI/Warlocks/WarlockAI.cpp @@ -11,7 +11,7 @@ #include "AfflictionWarlock.h" #include "DemonologyWarlock.h" #include "DestructionWarlock.h" -#include "../SpellValidation_WoW112_Part2.h" +#include "../SpellValidation_WoW120_Part2.h" #include "GameTime.h" #include "../../Combat/CombatBehaviorIntegration.h" #include "Player.h" @@ -46,16 +46,16 @@ namespace Playerbot WarlockAI::~WarlockAI() = default; // ============================================================================ -// Warlock Spell IDs - Using Central SpellValidation Registry (WoW 11.2) +// Warlock Spell IDs - Using Central SpellValidation Registry (WoW 12.0) // ============================================================================ -// All spell IDs sourced from SpellValidation_WoW112_Part2.h to maintain single source of truth +// All spell IDs sourced from SpellValidation_WoW120_Part2.h to maintain single source of truth // Namespace aliases for cleaner code -namespace WarlockSpells = WoW112Spells::Warlock; -namespace WarlockAffliction = WoW112Spells::Warlock::Affliction; -namespace WarlockDemonology = WoW112Spells::Warlock::Demonology; -namespace WarlockDestruction = WoW112Spells::Warlock::Destruction; -namespace WarlockCommon = WoW112Spells::Warlock::Common; +namespace WarlockSpells = WoW120Spells::Warlock; +namespace WarlockAffliction = WoW120Spells::Warlock::Affliction; +namespace WarlockDemonology = WoW120Spells::Warlock::Demonology; +namespace WarlockDestruction = WoW120Spells::Warlock::Destruction; +namespace WarlockCommon = WoW120Spells::Warlock::Common; // Legacy spell ID aliases for backward compatibility with existing code // These map old WARLOCK_ prefixed names to the central registry @@ -383,7 +383,7 @@ bool WarlockAI::HandleDefensives() return true; } -// Low health - use moderate defensives (WoW 11.2) +// Low health - use moderate defensives (WoW 12.0) if (healthPct < 40.0f) { // Dark Pact for shield (Affliction) @@ -479,7 +479,7 @@ bool WarlockAI::HandlePetManagement() return true; } } - // Note: Consume Shadows and Demonic Empowerment removed in WoW 11.2 + // Note: Consume Shadows and Demonic Empowerment removed in WoW 12.0 // Command pet to attack if idle Unit* target = bot->GetVictim(); @@ -605,7 +605,7 @@ bool WarlockAI::SummonPet() // ======================================================================== // CRITICAL FIX: Basic pet summons do NOT cost soul shards in modern WoW! // ======================================================================== - // In WoW 11.2 (The War Within), Summon Imp/Voidwalker/Succubus/Felhunter + // In WoW 12.0 (The War Within), Summon Imp/Voidwalker/Succubus/Felhunter // are FREE to cast - they only have a cast time (6 seconds). // Soul Shards are ONLY used for combat abilities (Chaos Bolt, etc.). // The previous check for "soulShards >= 10" was blocking ALL pet summons! @@ -737,7 +737,7 @@ bool WarlockAI::HandleAoERotation(Unit* target) } } - // Note: Mannoroth's Fury removed in WoW 11.2 + // Note: Mannoroth's Fury removed in WoW 12.0 return false; } @@ -1091,7 +1091,7 @@ bool WarlockAI::ApplyCurse(Unit* target) uint32 curseSpell = 0; // Choose appropriate curse based on target and situation - // Note: Curse of Elements removed in WoW 11.2 + // Note: Curse of Elements removed in WoW 12.0 if (target->GetPowerType() == POWER_MANA) { // Curse of Tongues for casters @@ -1499,7 +1499,7 @@ void WarlockAI::OnNonCombatUpdate(uint32 diff) TC_LOG_DEBUG("playerbot.warlock", "Warlock {} healing pet with Health Funnel (out of combat)", bot->GetName()); return; } - // Note: Consume Shadows removed in WoW 11.2 + // Note: Consume Shadows removed in WoW 12.0 } } @@ -1630,7 +1630,7 @@ void WarlockAI::UpdateWarlockBuffs() if (bot->HasUnitState(UNIT_STATE_CASTING)) return; - // Note: Demon Armor, Fel Armor, Soul Link, and Dark Intent removed in WoW 11.2 + // Note: Demon Armor, Fel Armor, Soul Link, and Dark Intent removed in WoW 12.0 // Warlocks no longer have passive armor buffs - they rely on defensive cooldowns instead // Soul Link is now a passive talent, not an active ability } @@ -1864,7 +1864,7 @@ void WarlockAI::ManageWarlockCooldowns() uint32 spec = static_cast(bot->GetPrimarySpecialization()); - // Summon Demonic Tyrant for Demonology (266) - main cooldown in WoW 11.2 + // Summon Demonic Tyrant for Demonology (266) - main cooldown in WoW 12.0 // Note: Demonic Empowerment and Metamorphosis removed in 11.2 if (spec == 266) { diff --git a/src/modules/Playerbot/AI/ClassAI/Warriors/ArmsWarrior.h b/src/modules/Playerbot/AI/ClassAI/Warriors/ArmsWarrior.h index a5e21e5e3..ab1bb441a 100644 --- a/src/modules/Playerbot/AI/ClassAI/Warriors/ArmsWarrior.h +++ b/src/modules/Playerbot/AI/ClassAI/Warriors/ArmsWarrior.h @@ -19,7 +19,7 @@ #include "WarriorAI.h" #include "../CombatSpecializationTemplates.h" #include "../ResourceTypes.h" -#include "../SpellValidation_WoW112_Part2.h" // Central spell registry +#include "../SpellValidation_WoW120_Part2.h" // Central spell registry // Phase 5 Integration #include "../../Decision/ActionPriorityQueue.h" #include "../../Decision/BehaviorTree.h" @@ -43,59 +43,59 @@ using bot::ai::SpellCategory; // Note: bot::ai::Action() conflicts with Playerbot::Action, use bot::ai::Action() explicitly // ============================================================================ -// ARMS WARRIOR SPELL ALIASES - Using Central Registry (WoW 11.2.7) +// ARMS WARRIOR SPELL ALIASES - Using Central Registry (WoW 12.0.7) // ============================================================================ -// All spell IDs from WoW112Spells::Warrior and WoW112Spells::Warrior::Arms +// All spell IDs from WoW120Spells::Warrior and WoW120Spells::Warrior::Arms namespace ArmsWarriorSpells { - // Core Warrior spells (from WoW112Spells::Warrior) - using namespace WoW112Spells::Warrior; + // Core Warrior spells (from WoW120Spells::Warrior) + using namespace WoW120Spells::Warrior; - // Arms-specific spells (from WoW112Spells::Warrior::Arms) + // Arms-specific spells (from WoW120Spells::Warrior::Arms) // Aliased with SPELL_ prefix for consistency - constexpr uint32 SPELL_BATTLE_SHOUT = WoW112Spells::Warrior::BATTLE_SHOUT; - constexpr uint32 SPELL_COMMANDING_SHOUT = WoW112Spells::Warrior::COMMANDING_SHOUT; - constexpr uint32 SPELL_CHARGE = WoW112Spells::Warrior::CHARGE; + constexpr uint32 SPELL_BATTLE_SHOUT = WoW120Spells::Warrior::BATTLE_SHOUT; + constexpr uint32 SPELL_COMMANDING_SHOUT = WoW120Spells::Warrior::COMMANDING_SHOUT; + constexpr uint32 SPELL_CHARGE = WoW120Spells::Warrior::CHARGE; // Arms Rotation - constexpr uint32 SPELL_MORTAL_STRIKE = WoW112Spells::Warrior::Arms::MORTAL_STRIKE; - constexpr uint32 SPELL_COLOSSUS_SMASH = WoW112Spells::Warrior::Arms::COLOSSUS_SMASH; - constexpr uint32 SPELL_OVERPOWER = WoW112Spells::Warrior::Arms::OVERPOWER; - constexpr uint32 SPELL_EXECUTE = WoW112Spells::Warrior::Arms::EXECUTE; - constexpr uint32 SPELL_WHIRLWIND = WoW112Spells::Warrior::Arms::WHIRLWIND; - constexpr uint32 SPELL_REND = WoW112Spells::Warrior::Arms::REND; - constexpr uint32 SPELL_CLEAVE = WoW112Spells::Warrior::Arms::CLEAVE; - constexpr uint32 SPELL_SLAM = WoW112Spells::Warrior::Arms::SLAM; + constexpr uint32 SPELL_MORTAL_STRIKE = WoW120Spells::Warrior::Arms::MORTAL_STRIKE; + constexpr uint32 SPELL_COLOSSUS_SMASH = WoW120Spells::Warrior::Arms::COLOSSUS_SMASH; + constexpr uint32 SPELL_OVERPOWER = WoW120Spells::Warrior::Arms::OVERPOWER; + constexpr uint32 SPELL_EXECUTE = WoW120Spells::Warrior::Arms::EXECUTE; + constexpr uint32 SPELL_WHIRLWIND = WoW120Spells::Warrior::Arms::WHIRLWIND; + constexpr uint32 SPELL_REND = WoW120Spells::Warrior::Arms::REND; + constexpr uint32 SPELL_CLEAVE = WoW120Spells::Warrior::Arms::CLEAVE; + constexpr uint32 SPELL_SLAM = WoW120Spells::Warrior::Arms::SLAM; // Arms Cooldowns - constexpr uint32 SPELL_WARBREAKER = WoW112Spells::Warrior::Arms::WARBREAKER; - constexpr uint32 SPELL_SWEEPING_STRIKES = WoW112Spells::Warrior::Arms::SWEEPING_STRIKES; - constexpr uint32 SPELL_BLADESTORM = WoW112Spells::Warrior::Arms::BLADESTORM; - constexpr uint32 SPELL_AVATAR = WoW112Spells::Warrior::Arms::AVATAR; - constexpr uint32 SPELL_DIE_BY_THE_SWORD = WoW112Spells::Warrior::Arms::DIE_BY_THE_SWORD; - constexpr uint32 SPELL_DEFENSIVE_STANCE = WoW112Spells::Warrior::Arms::DEFENSIVE_STANCE; - constexpr uint32 SPELL_SKULLSPLITTER = WoW112Spells::Warrior::Arms::SKULLSPLITTER; - constexpr uint32 SPELL_RAVAGER = WoW112Spells::Warrior::Arms::RAVAGER; - constexpr uint32 SPELL_THUNDEROUS_ROAR = WoW112Spells::Warrior::Arms::THUNDEROUS_ROAR; - constexpr uint32 SPELL_CHAMPIONS_SPEAR = WoW112Spells::Warrior::Arms::CHAMPIONS_SPEAR; + constexpr uint32 SPELL_WARBREAKER = WoW120Spells::Warrior::Arms::WARBREAKER; + constexpr uint32 SPELL_SWEEPING_STRIKES = WoW120Spells::Warrior::Arms::SWEEPING_STRIKES; + constexpr uint32 SPELL_BLADESTORM = WoW120Spells::Warrior::Arms::BLADESTORM; + constexpr uint32 SPELL_AVATAR = WoW120Spells::Warrior::Arms::AVATAR; + constexpr uint32 SPELL_DIE_BY_THE_SWORD = WoW120Spells::Warrior::Arms::DIE_BY_THE_SWORD; + constexpr uint32 SPELL_DEFENSIVE_STANCE = WoW120Spells::Warrior::Arms::DEFENSIVE_STANCE; + constexpr uint32 SPELL_SKULLSPLITTER = WoW120Spells::Warrior::Arms::SKULLSPLITTER; + constexpr uint32 SPELL_RAVAGER = WoW120Spells::Warrior::Arms::RAVAGER; + constexpr uint32 SPELL_THUNDEROUS_ROAR = WoW120Spells::Warrior::Arms::THUNDEROUS_ROAR; + constexpr uint32 SPELL_CHAMPIONS_SPEAR = WoW120Spells::Warrior::Arms::CHAMPIONS_SPEAR; // Deep Wounds (DoT) - constexpr uint32 SPELL_DEEP_WOUNDS = WoW112Spells::Warrior::Arms::DEEP_WOUNDS; - constexpr uint32 SPELL_DEEP_WOUNDS_DEBUFF = WoW112Spells::Warrior::Arms::DEEP_WOUNDS_DEBUFF; + constexpr uint32 SPELL_DEEP_WOUNDS = WoW120Spells::Warrior::Arms::DEEP_WOUNDS; + constexpr uint32 SPELL_DEEP_WOUNDS_DEBUFF = WoW120Spells::Warrior::Arms::DEEP_WOUNDS_DEBUFF; // Procs (from central registry) - constexpr uint32 SPELL_OVERPOWER_PROC = WoW112Spells::Warrior::OVERPOWER_PROC; - constexpr uint32 SPELL_SUDDEN_DEATH_PROC = WoW112Spells::Warrior::SUDDEN_DEATH_PROC; + constexpr uint32 SPELL_OVERPOWER_PROC = WoW120Spells::Warrior::OVERPOWER_PROC; + constexpr uint32 SPELL_SUDDEN_DEATH_PROC = WoW120Spells::Warrior::SUDDEN_DEATH_PROC; // Hero Talents - Slayer - constexpr uint32 SPELL_SLAYERS_STRIKE = WoW112Spells::Warrior::Arms::SLAYERS_STRIKE; - constexpr uint32 SPELL_OVERWHELMING_BLADES = WoW112Spells::Warrior::Arms::OVERWHELMING_BLADES; - constexpr uint32 SPELL_SLAYERS_DOMINANCE = WoW112Spells::Warrior::Arms::SLAYERS_DOMINANCE; + constexpr uint32 SPELL_SLAYERS_STRIKE = WoW120Spells::Warrior::Arms::SLAYERS_STRIKE; + constexpr uint32 SPELL_OVERWHELMING_BLADES = WoW120Spells::Warrior::Arms::OVERWHELMING_BLADES; + constexpr uint32 SPELL_SLAYERS_DOMINANCE = WoW120Spells::Warrior::Arms::SLAYERS_DOMINANCE; // Hero Talents - Colossus - constexpr uint32 SPELL_DEMOLISH = WoW112Spells::Warrior::Arms::DEMOLISH; - constexpr uint32 SPELL_COLOSSAL_MIGHT = WoW112Spells::Warrior::Arms::COLOSSAL_MIGHT; - constexpr uint32 SPELL_MARTIAL_PROWESS = WoW112Spells::Warrior::Arms::MARTIAL_PROWESS; + constexpr uint32 SPELL_DEMOLISH = WoW120Spells::Warrior::Arms::DEMOLISH; + constexpr uint32 SPELL_COLOSSAL_MIGHT = WoW120Spells::Warrior::Arms::COLOSSAL_MIGHT; + constexpr uint32 SPELL_MARTIAL_PROWESS = WoW120Spells::Warrior::Arms::MARTIAL_PROWESS; } /** @@ -105,8 +105,8 @@ namespace ArmsWarriorSpells * - Inherits from MeleeDpsSpecialization for role defaults * - Automatically gets UpdateCooldowns, CanUseAbility, OnCombatStart/End * - Uses specialized rage management as primary resource - * - Uses central spell registry (SpellValidation_WoW112_Part2.h) - * - WoW 11.2.7 (The War Within) spell IDs + * - Uses central spell registry (SpellValidation_WoW120_Part2.h) + * - WoW 12.0.7 (The War Within) spell IDs */ class ArmsWarriorRefactored : public MeleeDpsSpecialization { diff --git a/src/modules/Playerbot/AI/ClassAI/Warriors/FuryWarrior.h b/src/modules/Playerbot/AI/ClassAI/Warriors/FuryWarrior.h index 79db627e4..d604acb2e 100644 --- a/src/modules/Playerbot/AI/ClassAI/Warriors/FuryWarrior.h +++ b/src/modules/Playerbot/AI/ClassAI/Warriors/FuryWarrior.h @@ -19,7 +19,7 @@ #include "WarriorAI.h" #include "../CombatSpecializationTemplates.h" #include "../ResourceTypes.h" -#include "../SpellValidation_WoW112_Part2.h" // Central spell registry +#include "../SpellValidation_WoW120_Part2.h" // Central spell registry // Phase 5 Integration #include "../../Decision/ActionPriorityQueue.h" #include "../../Decision/BehaviorTree.h" @@ -45,40 +45,40 @@ using bot::ai::SpellCategory; // Note: bot::ai::Action() conflicts with Playerbot::Action, use bot::ai::Action() explicitly // ============================================================================ -// FURY WARRIOR SPELL ALIASES - Using Central Registry (WoW 11.2.7) +// FURY WARRIOR SPELL ALIASES - Using Central Registry (WoW 12.0.7) // ============================================================================ namespace FuryWarriorSpells { - // Core Warrior spells (from WoW112Spells::Warrior) - constexpr uint32 SPELL_BATTLE_SHOUT = WoW112Spells::Warrior::BATTLE_SHOUT; - constexpr uint32 SPELL_COMMANDING_SHOUT = WoW112Spells::Warrior::COMMANDING_SHOUT; - constexpr uint32 SPELL_CHARGE = WoW112Spells::Warrior::CHARGE; - constexpr uint32 SPELL_BERSERKER_RAGE = WoW112Spells::Warrior::BERSERKER_RAGE; + // Core Warrior spells (from WoW120Spells::Warrior) + constexpr uint32 SPELL_BATTLE_SHOUT = WoW120Spells::Warrior::BATTLE_SHOUT; + constexpr uint32 SPELL_COMMANDING_SHOUT = WoW120Spells::Warrior::COMMANDING_SHOUT; + constexpr uint32 SPELL_CHARGE = WoW120Spells::Warrior::CHARGE; + constexpr uint32 SPELL_BERSERKER_RAGE = WoW120Spells::Warrior::BERSERKER_RAGE; // Fury Core Rotation - constexpr uint32 SPELL_BLOODTHIRST = WoW112Spells::Warrior::Fury::BLOODTHIRST; - constexpr uint32 SPELL_RAMPAGE = WoW112Spells::Warrior::Fury::RAMPAGE; - constexpr uint32 SPELL_RAGING_BLOW = WoW112Spells::Warrior::Fury::RAGING_BLOW; - constexpr uint32 SPELL_EXECUTE = WoW112Spells::Warrior::Fury::EXECUTE; - constexpr uint32 SPELL_WHIRLWIND = WoW112Spells::Warrior::Fury::WHIRLWIND; - constexpr uint32 SPELL_ONSLAUGHT = WoW112Spells::Warrior::Fury::ONSLAUGHT; + constexpr uint32 SPELL_BLOODTHIRST = WoW120Spells::Warrior::Fury::BLOODTHIRST; + constexpr uint32 SPELL_RAMPAGE = WoW120Spells::Warrior::Fury::RAMPAGE; + constexpr uint32 SPELL_RAGING_BLOW = WoW120Spells::Warrior::Fury::RAGING_BLOW; + constexpr uint32 SPELL_EXECUTE = WoW120Spells::Warrior::Fury::EXECUTE; + constexpr uint32 SPELL_WHIRLWIND = WoW120Spells::Warrior::Fury::WHIRLWIND; + constexpr uint32 SPELL_ONSLAUGHT = WoW120Spells::Warrior::Fury::ONSLAUGHT; // Fury Cooldowns - constexpr uint32 SPELL_RECKLESSNESS = WoW112Spells::Warrior::Fury::RECKLESSNESS; - constexpr uint32 SPELL_ENRAGED_REGENERATION = WoW112Spells::Warrior::Fury::ENRAGED_REGENERATION; - constexpr uint32 SPELL_BLADESTORM = WoW112Spells::Warrior::Fury::BLADESTORM; - constexpr uint32 SPELL_RAVAGER = WoW112Spells::Warrior::Fury::RAVAGER; - constexpr uint32 SPELL_ODYN_FURY = WoW112Spells::Warrior::Fury::ODYN_FURY; - constexpr uint32 SPELL_THUNDEROUS_ROAR = WoW112Spells::Warrior::Fury::THUNDEROUS_ROAR; - constexpr uint32 SPELL_CHAMPIONS_SPEAR = WoW112Spells::Warrior::Fury::CHAMPIONS_SPEAR; + constexpr uint32 SPELL_RECKLESSNESS = WoW120Spells::Warrior::Fury::RECKLESSNESS; + constexpr uint32 SPELL_ENRAGED_REGENERATION = WoW120Spells::Warrior::Fury::ENRAGED_REGENERATION; + constexpr uint32 SPELL_BLADESTORM = WoW120Spells::Warrior::Fury::BLADESTORM; + constexpr uint32 SPELL_RAVAGER = WoW120Spells::Warrior::Fury::RAVAGER; + constexpr uint32 SPELL_ODYN_FURY = WoW120Spells::Warrior::Fury::ODYN_FURY; + constexpr uint32 SPELL_THUNDEROUS_ROAR = WoW120Spells::Warrior::Fury::THUNDEROUS_ROAR; + constexpr uint32 SPELL_CHAMPIONS_SPEAR = WoW120Spells::Warrior::Fury::CHAMPIONS_SPEAR; // Enrage and Buffs - constexpr uint32 SPELL_ENRAGE = WoW112Spells::Warrior::Fury::ENRAGE; - constexpr uint32 SPELL_WHIRLWIND_BUFF = WoW112Spells::Warrior::Fury::WHIRLWIND_BUFF; + constexpr uint32 SPELL_ENRAGE = WoW120Spells::Warrior::Fury::ENRAGE; + constexpr uint32 SPELL_WHIRLWIND_BUFF = WoW120Spells::Warrior::Fury::WHIRLWIND_BUFF; // Hero Talents - constexpr uint32 SPELL_SLAYERS_STRIKE = WoW112Spells::Warrior::Fury::SLAYERS_STRIKE; - constexpr uint32 SPELL_THUNDER_BLAST = WoW112Spells::Warrior::Fury::THUNDER_BLAST; + constexpr uint32 SPELL_SLAYERS_STRIKE = WoW120Spells::Warrior::Fury::SLAYERS_STRIKE; + constexpr uint32 SPELL_THUNDER_BLAST = WoW120Spells::Warrior::Fury::THUNDER_BLAST; } /** diff --git a/src/modules/Playerbot/AI/ClassAI/Warriors/ProtectionWarrior.h b/src/modules/Playerbot/AI/ClassAI/Warriors/ProtectionWarrior.h index b2ed29704..258049a39 100644 --- a/src/modules/Playerbot/AI/ClassAI/Warriors/ProtectionWarrior.h +++ b/src/modules/Playerbot/AI/ClassAI/Warriors/ProtectionWarrior.h @@ -19,7 +19,7 @@ #include "WarriorAI.h" #include "../CombatSpecializationTemplates.h" #include "../ResourceTypes.h" -#include "../SpellValidation_WoW112_Part2.h" // Central spell registry +#include "../SpellValidation_WoW120_Part2.h" // Central spell registry #include "Item.h" #include "ItemDefines.h" #include "../../Services/ThreatAssistant.h" // Phase 5C: Unified threat service @@ -48,39 +48,39 @@ using bot::ai::SpellCategory; // Note: bot::ai::Action() conflicts with Playerbot::Action, use bot::ai::Action() explicitly // ============================================================================ -// PROTECTION WARRIOR SPELL ALIASES - Using Central Registry (WoW 11.2.7) +// PROTECTION WARRIOR SPELL ALIASES - Using Central Registry (WoW 12.0.7) // ============================================================================ namespace ProtectionWarriorSpells { - // Core Warrior spells (from WoW112Spells::Warrior) - constexpr uint32 SPELL_BATTLE_SHOUT = WoW112Spells::Warrior::BATTLE_SHOUT; - constexpr uint32 SPELL_COMMANDING_SHOUT = WoW112Spells::Warrior::COMMANDING_SHOUT; - constexpr uint32 SPELL_CHARGE = WoW112Spells::Warrior::CHARGE; - constexpr uint32 SPELL_TAUNT = WoW112Spells::Warrior::TAUNT; - constexpr uint32 SPELL_RALLYING_CRY = WoW112Spells::Warrior::RALLYING_CRY; - constexpr uint32 SPELL_SPELL_REFLECTION = WoW112Spells::Warrior::SPELL_REFLECTION; + // Core Warrior spells (from WoW120Spells::Warrior) + constexpr uint32 SPELL_BATTLE_SHOUT = WoW120Spells::Warrior::BATTLE_SHOUT; + constexpr uint32 SPELL_COMMANDING_SHOUT = WoW120Spells::Warrior::COMMANDING_SHOUT; + constexpr uint32 SPELL_CHARGE = WoW120Spells::Warrior::CHARGE; + constexpr uint32 SPELL_TAUNT = WoW120Spells::Warrior::TAUNT; + constexpr uint32 SPELL_RALLYING_CRY = WoW120Spells::Warrior::RALLYING_CRY; + constexpr uint32 SPELL_SPELL_REFLECTION = WoW120Spells::Warrior::SPELL_REFLECTION; // Protection Core Rotation - constexpr uint32 SPELL_SHIELD_SLAM = WoW112Spells::Warrior::Protection::SHIELD_SLAM; - constexpr uint32 SPELL_THUNDER_CLAP = WoW112Spells::Warrior::Protection::THUNDER_CLAP; - constexpr uint32 SPELL_REVENGE = WoW112Spells::Warrior::Protection::REVENGE; - constexpr uint32 SPELL_DEVASTATE = WoW112Spells::Warrior::Protection::DEVASTATE; - constexpr uint32 SPELL_SHIELD_BLOCK = WoW112Spells::Warrior::Protection::SHIELD_BLOCK; - constexpr uint32 SPELL_IGNORE_PAIN = WoW112Spells::Warrior::Protection::IGNORE_PAIN; - constexpr uint32 SPELL_DEMORALIZING_SHOUT = WoW112Spells::Warrior::Protection::DEMORALIZING_SHOUT; - constexpr uint32 SPELL_CHALLENGING_SHOUT = WoW112Spells::Warrior::Protection::CHALLENGING_SHOUT; + constexpr uint32 SPELL_SHIELD_SLAM = WoW120Spells::Warrior::Protection::SHIELD_SLAM; + constexpr uint32 SPELL_THUNDER_CLAP = WoW120Spells::Warrior::Protection::THUNDER_CLAP; + constexpr uint32 SPELL_REVENGE = WoW120Spells::Warrior::Protection::REVENGE; + constexpr uint32 SPELL_DEVASTATE = WoW120Spells::Warrior::Protection::DEVASTATE; + constexpr uint32 SPELL_SHIELD_BLOCK = WoW120Spells::Warrior::Protection::SHIELD_BLOCK; + constexpr uint32 SPELL_IGNORE_PAIN = WoW120Spells::Warrior::Protection::IGNORE_PAIN; + constexpr uint32 SPELL_DEMORALIZING_SHOUT = WoW120Spells::Warrior::Protection::DEMORALIZING_SHOUT; + constexpr uint32 SPELL_CHALLENGING_SHOUT = WoW120Spells::Warrior::Protection::CHALLENGING_SHOUT; // Protection Cooldowns - constexpr uint32 SPELL_LAST_STAND = WoW112Spells::Warrior::Protection::LAST_STAND; - constexpr uint32 SPELL_SHIELD_WALL = WoW112Spells::Warrior::Protection::SHIELD_WALL; - constexpr uint32 SPELL_AVATAR = WoW112Spells::Warrior::Protection::AVATAR; - constexpr uint32 SPELL_RAVAGER = WoW112Spells::Warrior::Protection::RAVAGER; - constexpr uint32 SPELL_SHIELD_CHARGE = WoW112Spells::Warrior::Protection::SHIELD_CHARGE; - constexpr uint32 SPELL_THUNDEROUS_ROAR = WoW112Spells::Warrior::Protection::THUNDEROUS_ROAR; - constexpr uint32 SPELL_CHAMPIONS_SPEAR = WoW112Spells::Warrior::Protection::CHAMPIONS_SPEAR; + constexpr uint32 SPELL_LAST_STAND = WoW120Spells::Warrior::Protection::LAST_STAND; + constexpr uint32 SPELL_SHIELD_WALL = WoW120Spells::Warrior::Protection::SHIELD_WALL; + constexpr uint32 SPELL_AVATAR = WoW120Spells::Warrior::Protection::AVATAR; + constexpr uint32 SPELL_RAVAGER = WoW120Spells::Warrior::Protection::RAVAGER; + constexpr uint32 SPELL_SHIELD_CHARGE = WoW120Spells::Warrior::Protection::SHIELD_CHARGE; + constexpr uint32 SPELL_THUNDEROUS_ROAR = WoW120Spells::Warrior::Protection::THUNDEROUS_ROAR; + constexpr uint32 SPELL_CHAMPIONS_SPEAR = WoW120Spells::Warrior::Protection::CHAMPIONS_SPEAR; // Procs - constexpr uint32 SPELL_REVENGE_PROC = WoW112Spells::Warrior::REVENGE_PROC; + constexpr uint32 SPELL_REVENGE_PROC = WoW120Spells::Warrior::REVENGE_PROC; } // Make Protection Warrior spell constants available in the class below @@ -532,7 +532,7 @@ protected: _threatPriority.pop(); - // Note: Stances removed in WoW 11.2.7 (Legion 7.0+) + // Note: Stances removed in WoW 12.0.7 (Legion 7.0+) // Protection Warriors automatically have passive tank benefits // Initial Shield Block diff --git a/src/modules/Playerbot/AI/ClassAI/Warriors/WarriorAI.h b/src/modules/Playerbot/AI/ClassAI/Warriors/WarriorAI.h index 09bbb81ee..72f20c208 100644 --- a/src/modules/Playerbot/AI/ClassAI/Warriors/WarriorAI.h +++ b/src/modules/Playerbot/AI/ClassAI/Warriors/WarriorAI.h @@ -10,7 +10,7 @@ #pragma once #include "../ClassAI.h" -#include "../SpellValidation_WoW112_Part2.h" +#include "../SpellValidation_WoW120_Part2.h" #include "Position.h" #include "../../Combat/BotThreatManager.h" #include "../../Combat/TargetSelector.h" @@ -230,62 +230,62 @@ private: static constexpr float MULTI_TARGET_THRESHOLD = 3.0f; // 3+ enemies static constexpr uint32 FORMATION_CHECK_INTERVAL = 2000; // 2 seconds - // Spell IDs - Using central registry (WoW 11.2) + // Spell IDs - Using central registry (WoW 12.0) enum WarriorSpells { // Stances - BATTLE_STANCE = WoW112Spells::Warrior::Common::BATTLE_STANCE, - DEFENSIVE_STANCE = WoW112Spells::Warrior::Common::DEFENSIVE_STANCE, - BERSERKER_STANCE = WoW112Spells::Warrior::Common::BERSERKER_STANCE, + BATTLE_STANCE = WoW120Spells::Warrior::Common::BATTLE_STANCE, + DEFENSIVE_STANCE = WoW120Spells::Warrior::Common::DEFENSIVE_STANCE, + BERSERKER_STANCE = WoW120Spells::Warrior::Common::BERSERKER_STANCE, // Basic attacks - HEROIC_STRIKE = WoW112Spells::Warrior::Common::HEROIC_STRIKE, - CLEAVE = WoW112Spells::Warrior::Common::CLEAVE, - WHIRLWIND = WoW112Spells::Warrior::Common::WHIRLWIND, + HEROIC_STRIKE = WoW120Spells::Warrior::Common::HEROIC_STRIKE, + CLEAVE = WoW120Spells::Warrior::Common::CLEAVE, + WHIRLWIND = WoW120Spells::Warrior::Common::WHIRLWIND, // Arms abilities - MORTAL_STRIKE = WoW112Spells::Warrior::Common::MORTAL_STRIKE, - COLOSSUS_SMASH = WoW112Spells::Warrior::Common::COLOSSUS_SMASH, - OVERPOWER = WoW112Spells::Warrior::Common::OVERPOWER, - REND = WoW112Spells::Warrior::Common::REND, + MORTAL_STRIKE = WoW120Spells::Warrior::Common::MORTAL_STRIKE, + COLOSSUS_SMASH = WoW120Spells::Warrior::Common::COLOSSUS_SMASH, + OVERPOWER = WoW120Spells::Warrior::Common::OVERPOWER, + REND = WoW120Spells::Warrior::Common::REND, // Fury abilities - BLOODTHIRST = WoW112Spells::Warrior::Common::BLOODTHIRST, - RAMPAGE = WoW112Spells::Warrior::Common::RAMPAGE, - RAGING_BLOW = WoW112Spells::Warrior::Common::RAGING_BLOW, - EXECUTE = WoW112Spells::Warrior::Common::EXECUTE, + BLOODTHIRST = WoW120Spells::Warrior::Common::BLOODTHIRST, + RAMPAGE = WoW120Spells::Warrior::Common::RAMPAGE, + RAGING_BLOW = WoW120Spells::Warrior::Common::RAGING_BLOW, + EXECUTE = WoW120Spells::Warrior::Common::EXECUTE, // Protection abilities - SHIELD_SLAM = WoW112Spells::Warrior::Common::SHIELD_SLAM, - THUNDER_CLAP = WoW112Spells::Warrior::Common::THUNDER_CLAP, - REVENGE = WoW112Spells::Warrior::Common::REVENGE, - DEVASTATE = WoW112Spells::Warrior::Common::DEVASTATE, - SHIELD_BLOCK = WoW112Spells::Warrior::Common::SHIELD_BLOCK, + SHIELD_SLAM = WoW120Spells::Warrior::Common::SHIELD_SLAM, + THUNDER_CLAP = WoW120Spells::Warrior::Common::THUNDER_CLAP, + REVENGE = WoW120Spells::Warrior::Common::REVENGE, + DEVASTATE = WoW120Spells::Warrior::Common::DEVASTATE, + SHIELD_BLOCK = WoW120Spells::Warrior::Common::SHIELD_BLOCK, // Defensive cooldowns - SHIELD_WALL = WoW112Spells::Warrior::Common::SHIELD_WALL, - LAST_STAND = WoW112Spells::Warrior::Common::LAST_STAND, - SPELL_REFLECTION = WoW112Spells::Warrior::Common::SPELL_REFLECTION, + SHIELD_WALL = WoW120Spells::Warrior::Common::SHIELD_WALL, + LAST_STAND = WoW120Spells::Warrior::Common::LAST_STAND, + SPELL_REFLECTION = WoW120Spells::Warrior::Common::SPELL_REFLECTION, // Offensive cooldowns - RECKLESSNESS = WoW112Spells::Warrior::Common::RECKLESSNESS, - BLADESTORM = WoW112Spells::Warrior::Common::BLADESTORM, - AVATAR = WoW112Spells::Warrior::Common::AVATAR, + RECKLESSNESS = WoW120Spells::Warrior::Common::RECKLESSNESS, + BLADESTORM = WoW120Spells::Warrior::Common::BLADESTORM, + AVATAR = WoW120Spells::Warrior::Common::AVATAR, // Movement abilities - CHARGE = WoW112Spells::Warrior::Common::CHARGE, - INTERCEPT = WoW112Spells::Warrior::Common::INTERVENE, // INTERCEPT merged with INTERVENE in 11.2 - HEROIC_LEAP = WoW112Spells::Warrior::Common::HEROIC_LEAP, + CHARGE = WoW120Spells::Warrior::Common::CHARGE, + INTERCEPT = WoW120Spells::Warrior::Common::INTERVENE, // INTERCEPT merged with INTERVENE in 11.2 + HEROIC_LEAP = WoW120Spells::Warrior::Common::HEROIC_LEAP, // Utility - PUMMEL = WoW112Spells::Warrior::Common::PUMMEL, + PUMMEL = WoW120Spells::Warrior::Common::PUMMEL, DISARM = 676, // Removed in modern WoW, keeping legacy ID - TAUNT = WoW112Spells::Warrior::Common::TAUNT, + TAUNT = WoW120Spells::Warrior::Common::TAUNT, SUNDER_ARMOR = 7386, // Removed in modern WoW, keeping legacy ID // Buffs - BATTLE_SHOUT = WoW112Spells::Warrior::Common::BATTLE_SHOUT, - COMMANDING_SHOUT = WoW112Spells::Warrior::Common::COMMANDING_SHOUT, + BATTLE_SHOUT = WoW120Spells::Warrior::Common::BATTLE_SHOUT, + COMMANDING_SHOUT = WoW120Spells::Warrior::Common::COMMANDING_SHOUT, // Weapon buffs (if applicable) WEAPON_MASTER = 16538 // Passive talent, no spell ID needed diff --git a/src/modules/Playerbot/AI/Combat/InterruptDatabase.cpp b/src/modules/Playerbot/AI/Combat/InterruptDatabase.cpp index 35a0b1ebb..320aa3bbc 100644 --- a/src/modules/Playerbot/AI/Combat/InterruptDatabase.cpp +++ b/src/modules/Playerbot/AI/Combat/InterruptDatabase.cpp @@ -1,7 +1,7 @@ /* * Copyright (C) 2024 TrinityCore * - * WoW 11.2 Interrupt Database Implementation + * WoW 12.0 Interrupt Database Implementation */ #include "InterruptDatabase.h" diff --git a/src/modules/Playerbot/AI/Combat/InterruptDatabase.h b/src/modules/Playerbot/AI/Combat/InterruptDatabase.h index a4e5d5ad8..f0d9d874a 100644 --- a/src/modules/Playerbot/AI/Combat/InterruptDatabase.h +++ b/src/modules/Playerbot/AI/Combat/InterruptDatabase.h @@ -1,7 +1,7 @@ /* * Copyright (C) 2024 TrinityCore * - * WoW 11.2 (The War Within) Interrupt Priority Database + * WoW 12.0 (The War Within) Interrupt Priority Database * Comprehensive spell interrupt priorities and configurations */ @@ -15,7 +15,7 @@ namespace Playerbot { -// WoW 11.2 Spell Categories for interrupt prioritization +// WoW 12.0 Spell Categories for interrupt prioritization enum class SpellCategory : uint8 { // Healing @@ -81,7 +81,7 @@ struct SpellInterruptConfig class TC_GAME_API InterruptDatabase { public: - // Initialize the database with WoW 11.2 spell data + // Initialize the database with WoW 12.0 spell data static void Initialize(); // Query methods @@ -109,7 +109,7 @@ private: static bool _initialized; }; -// WoW 11.2 Class Interrupt Abilities +// WoW 12.0 Class Interrupt Abilities struct ClassInterruptAbility { uint32 spellId; @@ -137,7 +137,7 @@ struct ClassInterruptAbility resourceCost(resCost), offGCD(gcd), charges(chr) {} }; -// WoW 11.2 Interrupt ability database +// WoW 12.0 Interrupt ability database namespace InterruptAbilities { // Death Knight @@ -227,7 +227,7 @@ namespace InterruptAbilities uint32 GetSchoolLockoutDuration(uint32 spellId); } -// WoW 11.2 Critical Spells Database (must interrupt) +// WoW 12.0 Critical Spells Database (must interrupt) namespace CriticalSpells { // Dungeon spells @@ -305,7 +305,7 @@ namespace CriticalSpells } } -// WoW 11.2 Mythic+ scaling configurations +// WoW 12.0 Mythic+ scaling configurations struct MythicPlusConfig { uint8 level; diff --git a/src/modules/Playerbot/AI/Combat/InterruptManager.h b/src/modules/Playerbot/AI/Combat/InterruptManager.h index a4f12d058..72d43e065 100644 --- a/src/modules/Playerbot/AI/Combat/InterruptManager.h +++ b/src/modules/Playerbot/AI/Combat/InterruptManager.h @@ -30,7 +30,7 @@ class SpellInfo; namespace Playerbot { -// Interrupt priority levels for WoW 11.2 encounters +// Interrupt priority levels for WoW 12.0 encounters enum class InterruptPriority : uint8 { CRITICAL = 0, // Must interrupt immediately (healing, fear, etc.) @@ -76,7 +76,7 @@ enum class InterruptMethod : uint8 FEAR = 7 // Fear to interrupt }; -// Interrupt target information for WoW 11.2 +// Interrupt target information for WoW 12.0 struct InterruptTarget { ObjectGuid guid; @@ -98,7 +98,7 @@ struct InterruptTarget ::std::string spellName; ::std::string targetName; - // WoW 11.2 specific fields + // WoW 12.0 specific fields bool isMythicPlus; uint8 mythicLevel; bool hasInterruptImmunity; @@ -120,7 +120,7 @@ struct InterruptTarget assignmentStatus(InterruptAssignment::UNASSIGNED) {} }; -// Interrupt capability information for WoW 11.2 abilities +// Interrupt capability information for WoW 12.0 abilities struct InterruptCapability { uint32 spellId; @@ -140,7 +140,7 @@ struct InterruptCapability InterruptPriority minPriority; ::std::vector effectiveAgainst; - // WoW 11.2 specific fields + // WoW 12.0 specific fields uint32 lockoutDuration; // Duration of spell school lockout uint32 schoolMask; // Which schools this locks out bool isHeroTalent; // Hero talent ability @@ -319,7 +319,7 @@ public: bool CanInterruptInTime(const InterruptTarget& target, InterruptMethod method); uint32 GetOptimalInterruptTiming(const InterruptTarget& target); - // Group coordination for WoW 11.2 + // Group coordination for WoW 12.0 void CoordinateInterruptsWithGroup(const ::std::vector& groupMembers); bool ShouldLetOthersInterrupt(const InterruptTarget& target); void RegisterInterruptAttempt(const InterruptTarget& target); @@ -345,7 +345,7 @@ public: bool HandleInterruptFailure(const InterruptTarget& target, const InterruptResult& result); void RequestEmergencyAssist(const InterruptTarget& target); - // Advanced interrupt strategies for WoW 11.2 + // Advanced interrupt strategies for WoW 12.0 void HandleMultipleInterruptTargets(); void OptimizeInterruptRotation(); void ManageInterruptCooldowns(); @@ -437,7 +437,7 @@ private: ::std::vector _trackedTargets; ::std::vector _interruptCapabilities; - // WoW 11.2 specific tracking + // WoW 12.0 specific tracking ::std::unordered_map _schoolLockouts; // School mask -> expiry time ::std::unordered_map _targetImmunities; // Target -> immunity expiry GroupInterruptData _groupData; @@ -480,7 +480,7 @@ private: // Solution: Use std::recursive_mutex to allow same thread to acquire lock multiple times mutable Playerbot::OrderedRecursiveMutex _mutex; - // Constants for WoW 11.2 + // Constants for WoW 12.0 static constexpr uint32 DEFAULT_REACTION_TIME = 250; // 250ms reaction time static constexpr float DEFAULT_MAX_RANGE = 30.0f; // 30 yards max interrupt range static constexpr uint32 DEFAULT_SCAN_INTERVAL = 100; // 100ms scan interval diff --git a/src/modules/Playerbot/AI/Combat/MechanicAwareness.cpp b/src/modules/Playerbot/AI/Combat/MechanicAwareness.cpp index fc3756266..c6161eae8 100644 --- a/src/modules/Playerbot/AI/Combat/MechanicAwareness.cpp +++ b/src/modules/Playerbot/AI/Combat/MechanicAwareness.cpp @@ -1454,7 +1454,7 @@ float MechanicDatabase::GetSpellAngle(uint32 spellId) const void MechanicDatabase::LoadMechanicData() { - // Load WoW 11.2 mechanic data + // Load WoW 12.0 mechanic data // This would be populated from database or configuration // Example entries for common mechanics @@ -1468,13 +1468,13 @@ void MechanicDatabase::LoadMechanicData() void MechanicDatabase::LoadDungeonMechanics() { // Load dungeon-specific mechanics - // Would be populated with actual WoW 11.2 dungeon mechanics + // Would be populated with actual WoW 12.0 dungeon mechanics } void MechanicDatabase::LoadRaidMechanics() { // Load raid-specific mechanics - // Would be populated with actual WoW 11.2 raid mechanics + // Would be populated with actual WoW 12.0 raid mechanics } } // namespace Playerbot \ No newline at end of file diff --git a/src/modules/Playerbot/AI/Combat/MechanicAwareness.h b/src/modules/Playerbot/AI/Combat/MechanicAwareness.h index 59fc712a7..8ba9acadf 100644 --- a/src/modules/Playerbot/AI/Combat/MechanicAwareness.h +++ b/src/modules/Playerbot/AI/Combat/MechanicAwareness.h @@ -421,7 +421,7 @@ public: float GetSpellRadius(uint32 spellId) const; float GetSpellAngle(uint32 spellId) const; - // Load WoW 11.2 mechanic data + // Load WoW 12.0 mechanic data void LoadMechanicData(); void LoadDungeonMechanics(); void LoadRaidMechanics(); diff --git a/src/modules/Playerbot/AI/Combat/ThreatAbilities.h b/src/modules/Playerbot/AI/Combat/ThreatAbilities.h index 870d06260..cc5420637 100644 --- a/src/modules/Playerbot/AI/Combat/ThreatAbilities.h +++ b/src/modules/Playerbot/AI/Combat/ThreatAbilities.h @@ -55,7 +55,7 @@ struct ThreatAbilityData isPassive(passive), minLevel(level), name(n) {} }; -// WoW 11.2 Threat Abilities Database +// WoW 12.0 Threat Abilities Database class TC_GAME_API ThreatAbilitiesDB { public: @@ -82,7 +82,7 @@ private: ::std::unordered_map> _classAbilities; }; -// WoW 11.2 Spell IDs for threat abilities +// WoW 12.0 Spell IDs for threat abilities namespace ThreatSpells { // === WARRIOR === diff --git a/src/modules/Playerbot/AI/Combat/UnifiedInterruptSystem.cpp b/src/modules/Playerbot/AI/Combat/UnifiedInterruptSystem.cpp index 7d688d7a0..4e51499c1 100644 --- a/src/modules/Playerbot/AI/Combat/UnifiedInterruptSystem.cpp +++ b/src/modules/Playerbot/AI/Combat/UnifiedInterruptSystem.cpp @@ -70,13 +70,13 @@ bool UnifiedInterruptSystem::Initialize() if (_initialized) return true; - // Initialize InterruptDatabase (WoW 11.2 spell data) + // Initialize InterruptDatabase (WoW 12.0 spell data) InterruptDatabase::Initialize(); _initTime = ::std::chrono::system_clock::now(); _initialized = true; - TC_LOG_INFO("playerbot.interrupt", "UnifiedInterruptSystem initialized with WoW 11.2 spell database"); + TC_LOG_INFO("playerbot.interrupt", "UnifiedInterruptSystem initialized with WoW 12.0 spell database"); return true; } @@ -295,7 +295,7 @@ void UnifiedInterruptSystem::OnEnemyCastComplete(ObjectGuid casterGuid, uint32 s InterruptPriority UnifiedInterruptSystem::GetSpellPriority(uint32 spellId, uint8 mythicLevel) { - // Query InterruptDatabase for WoW 11.2 spell priority with M+ scaling + // Query InterruptDatabase for WoW 12.0 spell priority with M+ scaling return InterruptDatabase::GetSpellPriority(spellId, mythicLevel); } diff --git a/src/modules/Playerbot/AI/Combat/UnifiedInterruptSystem.h b/src/modules/Playerbot/AI/Combat/UnifiedInterruptSystem.h index 04abb3dd7..968aa325d 100644 --- a/src/modules/Playerbot/AI/Combat/UnifiedInterruptSystem.h +++ b/src/modules/Playerbot/AI/Combat/UnifiedInterruptSystem.h @@ -237,7 +237,7 @@ struct BotInterruptStats * * Features: * - Thread-safe coordination for 5000+ bots (from InterruptCoordinator) - * - Comprehensive spell database with WoW 11.2 data (from InterruptDatabase) + * - Comprehensive spell database with WoW 12.0 data (from InterruptDatabase) * - Sophisticated plan-based decision-making (from InterruptManager) * - Rotation fairness system (from InterruptRotationManager) * - Fallback logic with 6 alternative methods (from InterruptRotationManager) diff --git a/src/modules/Playerbot/AI/CombatBehaviors/CooldownStackingOptimizer.cpp b/src/modules/Playerbot/AI/CombatBehaviors/CooldownStackingOptimizer.cpp index b8f3fc2f8..e76f43105 100644 --- a/src/modules/Playerbot/AI/CombatBehaviors/CooldownStackingOptimizer.cpp +++ b/src/modules/Playerbot/AI/CombatBehaviors/CooldownStackingOptimizer.cpp @@ -1213,7 +1213,7 @@ void CooldownStackingOptimizer::InitializeDeathKnightCooldowns() void CooldownStackingOptimizer::InitializeMonkCooldowns() { - // WoW 11.2 Monk cooldowns - full spec support + // WoW 12.0 Monk cooldowns - full spec support // ========== BREWMASTER (Tank) ========== // Invoke Niuzao, the Black Ox - Major defensive/DPS cooldown @@ -1364,7 +1364,7 @@ void CooldownStackingOptimizer::InitializeMonkCooldowns() void CooldownStackingOptimizer::InitializeDemonHunterCooldowns() { - // WoW 11.2 Demon Hunter cooldowns - full spec support + // WoW 12.0 Demon Hunter cooldowns - full spec support // ========== HAVOC (DPS) ========== // Metamorphosis - Major DPS cooldown diff --git a/src/modules/Playerbot/Character/BotCharacterDistribution.h b/src/modules/Playerbot/Character/BotCharacterDistribution.h index 332e8ef0b..06c7b8a19 100644 --- a/src/modules/Playerbot/Character/BotCharacterDistribution.h +++ b/src/modules/Playerbot/Character/BotCharacterDistribution.h @@ -62,7 +62,7 @@ struct ClassPopularity * Bot Character Distribution System * * Features: - * - Database-driven realistic race/class distribution based on WoW 11.2 statistics + * - Database-driven realistic race/class distribution based on WoW 12.0 statistics * - Gender distribution with race-specific preferences * - Class popularity tracking (PvE, PvP, M+, Raid) * - Cumulative distribution for O(log n) random selection diff --git a/src/modules/Playerbot/Character/BotLevelDistribution.h b/src/modules/Playerbot/Character/BotLevelDistribution.h index c1af01e3f..edd794e94 100644 --- a/src/modules/Playerbot/Character/BotLevelDistribution.h +++ b/src/modules/Playerbot/Character/BotLevelDistribution.h @@ -121,7 +121,7 @@ struct LevelBracket bool SupportsDualSpec() const { - return minLevel >= 10; // WoW 11.2: Dual-spec unlocks at level 10 + return minLevel >= 10; // WoW 12.0: Dual-spec unlocks at level 10 } bool IsEndgame() const diff --git a/src/modules/Playerbot/Companion/MountManager.cpp b/src/modules/Playerbot/Companion/MountManager.cpp index a189af77e..efb05fc83 100644 --- a/src/modules/Playerbot/Companion/MountManager.cpp +++ b/src/modules/Playerbot/Companion/MountManager.cpp @@ -656,7 +656,7 @@ bool MountManager::UpdateRidingForLevel() bool learnedAnything = false; // ======================================================================== - // RIDING SKILL PROGRESSION (WoW 11.2 Thresholds) + // RIDING SKILL PROGRESSION (WoW 12.0 Thresholds) // ======================================================================== // Level 10: Apprentice Riding (60% ground) - skill 75 // Level 20: Journeyman Riding (100% ground) - still skill 75, faster mounts diff --git a/src/modules/Playerbot/Companion/MountManager.h b/src/modules/Playerbot/Companion/MountManager.h index b96dddd3e..9d45c8379 100644 --- a/src/modules/Playerbot/Companion/MountManager.h +++ b/src/modules/Playerbot/Companion/MountManager.h @@ -25,7 +25,7 @@ namespace Playerbot { /** - * @brief Mount types based on WoW 11.2 mount system + * @brief Mount types based on WoW 12.0 mount system */ enum class MountType : uint8 { diff --git a/src/modules/Playerbot/Companion/RidingManager.cpp b/src/modules/Playerbot/Companion/RidingManager.cpp index 04a7cc0d8..b2fa5a70a 100644 --- a/src/modules/Playerbot/Companion/RidingManager.cpp +++ b/src/modules/Playerbot/Companion/RidingManager.cpp @@ -197,7 +197,7 @@ RidingSkillLevel RidingManager::GetNextSkillLevel() const uint32 level = _bot->GetLevel(); RidingSkillLevel current = GetCurrentSkillLevel(); - // Determine next skill based on level thresholds (WoW 11.2) + // Determine next skill based on level thresholds (WoW 12.0) if (level >= 80 && current < RidingSkillLevel::MASTER) return RidingSkillLevel::MASTER; if (level >= 40 && current < RidingSkillLevel::ARTISAN) diff --git a/src/modules/Playerbot/Companion/RidingManager.h b/src/modules/Playerbot/Companion/RidingManager.h index 172e75114..cf6017d35 100644 --- a/src/modules/Playerbot/Companion/RidingManager.h +++ b/src/modules/Playerbot/Companion/RidingManager.h @@ -386,7 +386,7 @@ private: static constexpr float INTERACTION_RANGE = 5.0f; // Must be within 5 yards of NPC static constexpr float ARRIVAL_THRESHOLD = 10.0f; // Consider arrived within 10 yards - // Riding skill spell IDs (WoW 11.2) + // Riding skill spell IDs (WoW 12.0) static constexpr uint32 SPELL_APPRENTICE_RIDING = 33388; static constexpr uint32 SPELL_JOURNEYMAN_RIDING = 33391; static constexpr uint32 SPELL_EXPERT_RIDING = 34090; @@ -395,7 +395,7 @@ private: static constexpr uint32 SPELL_COLD_WEATHER_FLYING = 54197; static constexpr uint32 SPELL_FLIGHT_MASTERS_LICENSE = 90267; - // Gold costs in copper (WoW 11.2 - significantly reduced from earlier expansions) + // Gold costs in copper (WoW 12.0 - significantly reduced from earlier expansions) static constexpr uint64 COST_APPRENTICE = 40000; // 4 gold static constexpr uint64 COST_JOURNEYMAN = 500000; // 50 gold static constexpr uint64 COST_EXPERT = 2500000; // 250 gold diff --git a/src/modules/Playerbot/Core/DI/Interfaces/IBotCharacterDistribution.h b/src/modules/Playerbot/Core/DI/Interfaces/IBotCharacterDistribution.h index 73785d710..611990f46 100644 --- a/src/modules/Playerbot/Core/DI/Interfaces/IBotCharacterDistribution.h +++ b/src/modules/Playerbot/Core/DI/Interfaces/IBotCharacterDistribution.h @@ -30,7 +30,7 @@ struct RaceClassCombination; /** * @brief Interface for Bot Character Distribution * - * Manages realistic race/class distribution based on WoW 11.2 statistics with: + * Manages realistic race/class distribution based on WoW 12.0 statistics with: * - Database-driven race/class distribution * - Gender distribution with race-specific preferences * - Class popularity tracking diff --git a/src/modules/Playerbot/Core/DI/Interfaces/IBotTalentManager.h b/src/modules/Playerbot/Core/DI/Interfaces/IBotTalentManager.h index 9e2770852..d7da12ca6 100644 --- a/src/modules/Playerbot/Core/DI/Interfaces/IBotTalentManager.h +++ b/src/modules/Playerbot/Core/DI/Interfaces/IBotTalentManager.h @@ -186,7 +186,7 @@ public: /** * Check if level supports dual-spec - * WoW 11.2: Dual-spec unlocks at level 10 + * WoW 12.0: Dual-spec unlocks at level 10 */ virtual bool SupportsDualSpec(uint32 level) const = 0; @@ -216,7 +216,7 @@ public: /** * Check if level supports hero talents - * WoW 11.2: Hero talents unlock at level 71 + * WoW 12.0: Hero talents unlock at level 71 */ virtual bool SupportsHeroTalents(uint32 level) const = 0; diff --git a/src/modules/Playerbot/Core/DI/Interfaces/IRidingManager.h b/src/modules/Playerbot/Core/DI/Interfaces/IRidingManager.h index 92bd6a053..630126a2d 100644 --- a/src/modules/Playerbot/Core/DI/Interfaces/IRidingManager.h +++ b/src/modules/Playerbot/Core/DI/Interfaces/IRidingManager.h @@ -21,7 +21,7 @@ namespace Playerbot { /** - * @brief Riding skill levels matching WoW 11.2 + * @brief Riding skill levels matching WoW 12.0 * * These represent the actual skill values, not spell IDs. */ diff --git a/src/modules/Playerbot/Dragonriding/DragonridingDefines.h b/src/modules/Playerbot/Dragonriding/DragonridingDefines.h index 3963116d3..d1d7142dc 100644 --- a/src/modules/Playerbot/Dragonriding/DragonridingDefines.h +++ b/src/modules/Playerbot/Dragonriding/DragonridingDefines.h @@ -18,7 +18,7 @@ namespace Dragonriding { // ============================================================================ -// RETAIL SPELL IDS (from wowhead.com - WoW 11.2.7) +// RETAIL SPELL IDS (from wowhead.com - WoW 12.0.7) // ============================================================================ // Using REAL retail spell IDs ensures: // - Client already has icons, names, tooltips, animations @@ -101,7 +101,7 @@ constexpr uint32 FLIGHT_CAPABILITY_NORMAL = 0; // Normal flying (no drago // ============================================================================ // RETAIL-ACCURATE BASE VALUES -// These match WoW 11.2.7 dragonriding mechanics +// These match WoW 12.0.7 dragonriding mechanics // ============================================================================ // Vigor/Charges (now called "Skyriding Charges" in 11.2.7) diff --git a/src/modules/Playerbot/Dragonriding/PlayerbotDragonridingScript.cpp b/src/modules/Playerbot/Dragonriding/PlayerbotDragonridingScript.cpp index 47898f135..c1398ac03 100644 --- a/src/modules/Playerbot/Dragonriding/PlayerbotDragonridingScript.cpp +++ b/src/modules/Playerbot/Dragonriding/PlayerbotDragonridingScript.cpp @@ -12,7 +12,7 @@ * * ENTERPRISE-GRADE RETAIL SPELL INTEGRATION * - * This module uses REAL retail spell IDs (from wowhead.com WoW 11.2.7): + * This module uses REAL retail spell IDs (from wowhead.com WoW 12.0.7): * 369536 = Soar (Dracthyr racial - initiates dragonriding) * 372608 = Surge Forward (primary forward burst) * 372610 = Skyward Ascent (upward burst) diff --git a/src/modules/Playerbot/Economy/PlayerbotAuctionConfig.h b/src/modules/Playerbot/Economy/PlayerbotAuctionConfig.h index e399ee97a..31aa2d449 100644 --- a/src/modules/Playerbot/Economy/PlayerbotAuctionConfig.h +++ b/src/modules/Playerbot/Economy/PlayerbotAuctionConfig.h @@ -36,7 +36,7 @@ * # Default: 5 * Playerbot.Auction.DefaultStrategy = 5 * - * # Enable commodity trading (WoW 11.2 region-wide market) + * # Enable commodity trading (WoW 12.0 region-wide market) * # Default: 1 (enabled) * Playerbot.Auction.CommodityEnabled = 1 * diff --git a/src/modules/Playerbot/Equipment/BotGearFactory.cpp b/src/modules/Playerbot/Equipment/BotGearFactory.cpp index 285adb14a..1c8d9ffc8 100644 --- a/src/modules/Playerbot/Equipment/BotGearFactory.cpp +++ b/src/modules/Playerbot/Equipment/BotGearFactory.cpp @@ -275,7 +275,7 @@ bool BotGearFactory::ApplyGearSet(Player* player, GearSet const& gearSet) continue; } - // Create and equip item with WoW 11.2 ItemContext system + // Create and equip item with WoW 12.0 ItemContext system // Use ITEM_CONTEXT_NONE for standard bot gear (not from dungeons/raids) Item* newItem = player->EquipNewItem(equipDest, itemEntry, ItemContext::NONE, true); diff --git a/src/modules/Playerbot/Equipment/EquipmentManager.h b/src/modules/Playerbot/Equipment/EquipmentManager.h index 1946c86b2..73fcbdb95 100644 --- a/src/modules/Playerbot/Equipment/EquipmentManager.h +++ b/src/modules/Playerbot/Equipment/EquipmentManager.h @@ -37,7 +37,7 @@ namespace Playerbot { /** - * @brief Stat types for item comparison based on WoW 11.2 itemMods + * @brief Stat types for item comparison based on WoW 12.0 itemMods */ enum class StatType : uint8 { diff --git a/src/modules/Playerbot/Interaction/TrainerInteractionManager.cpp b/src/modules/Playerbot/Interaction/TrainerInteractionManager.cpp index 7c1117b59..432b78779 100644 --- a/src/modules/Playerbot/Interaction/TrainerInteractionManager.cpp +++ b/src/modules/Playerbot/Interaction/TrainerInteractionManager.cpp @@ -639,7 +639,7 @@ void TrainerInteractionManager::InitializeEssentialSpellsCache() m_essentialSpellsCache.clear(); // Add class-specific essential spells - // These are placeholder spell IDs - should be replaced with actual WoW 11.2 spell IDs + // These are placeholder spell IDs - should be replaced with actual WoW 12.0 spell IDs uint8 classId = m_bot->GetClass(); switch (classId) diff --git a/src/modules/Playerbot/Interaction/VendorInteractionManager.cpp b/src/modules/Playerbot/Interaction/VendorInteractionManager.cpp index affb0836c..6fda06bab 100644 --- a/src/modules/Playerbot/Interaction/VendorInteractionManager.cpp +++ b/src/modules/Playerbot/Interaction/VendorInteractionManager.cpp @@ -596,7 +596,7 @@ bool VendorInteractionManager::FitsWithinBudget(uint64 goldCost, PurchasePriorit return reagents; uint32 classId = m_bot->GetClass(); - // Class-specific reagents (WoW 11.2 item IDs) + // Class-specific reagents (WoW 12.0 item IDs) // Note: These are examples - actual item IDs should be verified in game DB switch (classId) { diff --git a/src/modules/Playerbot/Lifecycle/BotCharacterCreator.cpp b/src/modules/Playerbot/Lifecycle/BotCharacterCreator.cpp index 55483ee9d..f744403ea 100644 --- a/src/modules/Playerbot/Lifecycle/BotCharacterCreator.cpp +++ b/src/modules/Playerbot/Lifecycle/BotCharacterCreator.cpp @@ -56,7 +56,7 @@ BotCharacterCreator::CreateResult BotCharacterCreator::CreateBotCharacter( bool BotCharacterCreator::IsValidRaceClassCombination(uint8 race, uint8 classId) { - // Check using WoW 11.2 data + // Check using WoW 12.0 data for (auto const& combo : CharacterCreation::VALID_COMBINATIONS) { if (combo.race == static_cast(race) && @@ -161,7 +161,7 @@ BotCharacterCreator::CreateResult BotCharacterCreator::ValidateCreationRequest( // 1. Validate race/class combination if (!IsValidRaceClassCombination(race, classId)) { - outErrorMsg = "Invalid race/class combination for WoW 11.2"; + outErrorMsg = "Invalid race/class combination for WoW 12.0"; return CreateResult::INVALID_RACE_CLASS_COMBO; } diff --git a/src/modules/Playerbot/Lifecycle/BotCharacterCreator.h b/src/modules/Playerbot/Lifecycle/BotCharacterCreator.h index bcde6bc99..e17ef123a 100644 --- a/src/modules/Playerbot/Lifecycle/BotCharacterCreator.h +++ b/src/modules/Playerbot/Lifecycle/BotCharacterCreator.h @@ -69,7 +69,7 @@ public: /** * @brief Validate race/class combination - * @return true if combination is valid in WoW 11.2 + * @return true if combination is valid in WoW 12.0 */ static bool IsValidRaceClassCombination(uint8 race, uint8 classId); diff --git a/src/modules/Playerbot/Lifecycle/Instance/BotPostLoginConfigurator.cpp b/src/modules/Playerbot/Lifecycle/Instance/BotPostLoginConfigurator.cpp index 9ce60f09e..5124e690e 100644 --- a/src/modules/Playerbot/Lifecycle/Instance/BotPostLoginConfigurator.cpp +++ b/src/modules/Playerbot/Lifecycle/Instance/BotPostLoginConfigurator.cpp @@ -983,7 +983,7 @@ GearSetTemplate const* BotPostLoginConfigurator::SelectGearSet(BotTemplate const } // ============================================================================ -// SPELL LEARNING VERIFICATION - Modern WoW 11.2 Approach +// SPELL LEARNING VERIFICATION - Modern WoW 12.0 Approach // ============================================================================ // In modern WoW (since Patch 5.0.4 / MoP 2012), ALL combat spells are learned // automatically on level up. Class trainers no longer exist for combat abilities. diff --git a/src/modules/Playerbot/Lifecycle/Instance/BotTemplateRepository.cpp b/src/modules/Playerbot/Lifecycle/Instance/BotTemplateRepository.cpp index 44c40f23b..df6d0a8f6 100644 --- a/src/modules/Playerbot/Lifecycle/Instance/BotTemplateRepository.cpp +++ b/src/modules/Playerbot/Lifecycle/Instance/BotTemplateRepository.cpp @@ -1622,7 +1622,7 @@ std::vector BotTemplateRepository::GetValidRaces(uint8 playerClass, Facti { std::vector races; - // WoW 11.2 (The War Within) class/race combinations + // WoW 12.0 (The War Within) class/race combinations // This is a comprehensive list including all allied races // // NOTE (2026-01-12): Earthen races (85=Alliance, 84=Horde) are DISABLED diff --git a/src/modules/Playerbot/Network/ParseAuraPacket_Typed.cpp b/src/modules/Playerbot/Network/ParseAuraPacket_Typed.cpp index f007f3c81..f1a348a27 100644 --- a/src/modules/Playerbot/Network/ParseAuraPacket_Typed.cpp +++ b/src/modules/Playerbot/Network/ParseAuraPacket_Typed.cpp @@ -23,7 +23,7 @@ void ParseTypedAuraUpdate(WorldSession* session, WorldPackets::Spells::AuraUpdat for (auto const& auraInfo : packet.Auras) { - // WoW 11.2: AuraInfo structure changed + // WoW 12.0: AuraInfo structure changed // - AuraDataChanged → AuraData.has_value() (Optional) // - SpellID → AuraData->SpellID (nested in AuraDataInfo) diff --git a/src/modules/Playerbot/Network/ParseCombatPacket_Typed.cpp b/src/modules/Playerbot/Network/ParseCombatPacket_Typed.cpp index 904637722..2d6a711b4 100644 --- a/src/modules/Playerbot/Network/ParseCombatPacket_Typed.cpp +++ b/src/modules/Playerbot/Network/ParseCombatPacket_Typed.cpp @@ -21,7 +21,7 @@ namespace Playerbot // ================================================================================================ // TYPED PACKET HANDLERS - COMBAT CATEGORY -// These handlers receive TYPED packet objects before serialization (WoW 11.2 Solution) +// These handlers receive TYPED packet objects before serialization (WoW 12.0 Solution) // ================================================================================================ /** @@ -37,7 +37,7 @@ void ParseTypedSpellStart(WorldSession* session, WorldPackets::Spells::SpellStar if (!bot) return; - // WoW 11.2: TargetGUID removed, extract from Target.Unit or HitTargets[0] + // WoW 12.0: TargetGUID removed, extract from Target.Unit or HitTargets[0] ObjectGuid targetGuid = packet.Cast.Target.Unit; if (targetGuid.IsEmpty() && !packet.Cast.HitTargets.empty()) targetGuid = packet.Cast.HitTargets[0]; @@ -68,7 +68,7 @@ void ParseTypedSpellGo(WorldSession* session, WorldPackets::Spells::SpellGo cons if (!bot) return; - // WoW 11.2: TargetGUID removed, extract from Target.Unit or HitTargets[0] + // WoW 12.0: TargetGUID removed, extract from Target.Unit or HitTargets[0] ObjectGuid targetGuid = packet.Cast.Target.Unit; if (targetGuid.IsEmpty() && !packet.Cast.HitTargets.empty()) targetGuid = packet.Cast.HitTargets[0]; @@ -195,7 +195,7 @@ void ParseTypedSpellInterrupt(WorldSession* session, WorldPackets::CombatLog::Sp packet.Caster, packet.Victim, packet.InterruptedSpellID, - packet.SpellID // WoW 11.2: Field is SpellID, not InterruptingSpellID + packet.SpellID // WoW 12.0: Field is SpellID, not InterruptingSpellID ); CombatEventBus::instance()->PublishEvent(event); @@ -223,7 +223,7 @@ void ParseTypedSpellDispel(WorldSession* session, WorldPackets::CombatLog::Spell CombatEvent event; event.type = CombatEventType::SPELL_DISPELLED; event.priority = CombatEventPriority::HIGH; - event.casterGuid = packet.CasterGUID; // WoW 11.2: Field is CasterGUID, not DispellerGUID + event.casterGuid = packet.CasterGUID; // WoW 12.0: Field is CasterGUID, not DispellerGUID event.targetGuid = packet.TargetGUID; event.victimGuid = packet.TargetGUID; event.spellId = packet.DispelledBySpellID; @@ -266,7 +266,7 @@ void ParseTypedAttackStart(WorldSession* session, WorldPackets::Combat::AttackSt /** * Attack Stop - Typed Handler - * WoW 11.2: Server packet is SAttackStop, not AttackStop (which is client packet) + * WoW 12.0: Server packet is SAttackStop, not AttackStop (which is client packet) */ void ParseTypedAttackStop(WorldSession* session, WorldPackets::Combat::SAttackStop const& packet) { @@ -277,11 +277,11 @@ void ParseTypedAttackStop(WorldSession* session, WorldPackets::Combat::SAttackSt if (!bot) return; - // WoW 11.2: SAttackStop only has Attacker and Victim, no NowDead field + // WoW 12.0: SAttackStop only has Attacker and Victim, no NowDead field CombatEvent event = CombatEvent::AttackStop( packet.Attacker, packet.Victim, - false // NowDead field doesn't exist in WoW 11.2 + false // NowDead field doesn't exist in WoW 12.0 ); CombatEventBus::instance()->PublishEvent(event); @@ -337,7 +337,7 @@ void RegisterCombatPacketHandlers() PlayerbotPacketSniffer::RegisterTypedHandler(&ParseTypedSpellInterrupt); PlayerbotPacketSniffer::RegisterTypedHandler(&ParseTypedSpellDispel); PlayerbotPacketSniffer::RegisterTypedHandler(&ParseTypedAttackStart); - PlayerbotPacketSniffer::RegisterTypedHandler(&ParseTypedAttackStop); // WoW 11.2: SAttackStop is server packet + PlayerbotPacketSniffer::RegisterTypedHandler(&ParseTypedAttackStop); // WoW 12.0: SAttackStop is server packet PlayerbotPacketSniffer::RegisterTypedHandler(&ParseTypedAIReaction); TC_LOG_INFO("playerbot", "PlayerbotPacketSniffer: Registered {} Combat packet typed handlers", 10); diff --git a/src/modules/Playerbot/Network/ParseCooldownPacket_Typed.cpp b/src/modules/Playerbot/Network/ParseCooldownPacket_Typed.cpp index 911379c43..c4a9ec1df 100644 --- a/src/modules/Playerbot/Network/ParseCooldownPacket_Typed.cpp +++ b/src/modules/Playerbot/Network/ParseCooldownPacket_Typed.cpp @@ -27,7 +27,7 @@ void ParseTypedSpellCooldown(WorldSession* session, WorldPackets::Spells::SpellC CooldownEvent event; event.type = CooldownEventType::SPELL_COOLDOWN_START; event.casterGuid = packet.Caster; - event.spellId = cooldownEntry.SrecID; // WoW 11.2: Field is SrecID, not SpellID + event.spellId = cooldownEntry.SrecID; // WoW 12.0: Field is SrecID, not SpellID event.itemId = 0; event.category = 0; event.cooldownMs = cooldownEntry.ForcedCooldown; @@ -76,7 +76,7 @@ void ParseTypedClearCooldown(WorldSession* session, WorldPackets::Spells::ClearC CooldownEvent event; event.type = CooldownEventType::SPELL_COOLDOWN_CLEAR; - event.casterGuid = bot->GetGUID(); // WoW 11.2: ClearCooldown has no CasterGUID field, use bot GUID + event.casterGuid = bot->GetGUID(); // WoW 12.0: ClearCooldown has no CasterGUID field, use bot GUID event.spellId = static_cast(packet.SpellID); event.itemId = 0; event.category = 0; @@ -99,7 +99,7 @@ void ParseTypedClearCooldowns(WorldSession* session, WorldPackets::Spells::Clear if (!bot) return; - for (int32 spellId : packet.SpellID) // WoW 11.2: Field is SpellID (singular), not SpellIDs (plural) + for (int32 spellId : packet.SpellID) // WoW 12.0: Field is SpellID (singular), not SpellIDs (plural) { CooldownEvent event; event.type = CooldownEventType::SPELL_COOLDOWN_CLEAR; diff --git a/src/modules/Playerbot/Network/ParseGroupPacket_Typed.cpp b/src/modules/Playerbot/Network/ParseGroupPacket_Typed.cpp index d4a113aaf..43b261f58 100644 --- a/src/modules/Playerbot/Network/ParseGroupPacket_Typed.cpp +++ b/src/modules/Playerbot/Network/ParseGroupPacket_Typed.cpp @@ -19,7 +19,7 @@ namespace Playerbot // ================================================================================================ // TYPED PACKET HANDLERS -// These handlers receive TYPED packet objects before serialization (WoW 11.2 Solution) +// These handlers receive TYPED packet objects before serialization (WoW 12.0 Solution) // ================================================================================================ /** @@ -40,7 +40,7 @@ void ParseTypedReadyCheckStarted(WorldSession* session, WorldPackets::Party::Rea event.priority = EventPriority::HIGH; event.groupGuid = packet.PartyGUID; event.sourceGuid = packet.InitiatorGUID; - event.data1 = static_cast(Milliseconds(packet.Duration).count()); // Duration in milliseconds (WoW 11.2 API) + event.data1 = static_cast(Milliseconds(packet.Duration).count()); // Duration in milliseconds (WoW 12.0 API) event.data2 = static_cast(packet.PartyIndex); event.timestamp = ::std::chrono::steady_clock::now(); @@ -92,8 +92,8 @@ void ParseTypedReadyCheckCompleted(WorldSession* session, WorldPackets::Party::R event.type = GroupEventType::READY_CHECK_COMPLETED; event.priority = EventPriority::MEDIUM; event.groupGuid = packet.PartyGUID; - event.data1 = 0; // WoW 11.2: ReadyCount no longer in packet - event.data2 = 0; // WoW 11.2: NotReadyCount no longer in packet + event.data1 = 0; // WoW 12.0: ReadyCount no longer in packet + event.data2 = 0; // WoW 12.0: NotReadyCount no longer in packet event.timestamp = ::std::chrono::steady_clock::now(); GroupEventBus::instance()->PublishEvent(event); @@ -141,7 +141,7 @@ void ParseTypedRaidTargetUpdateAll(WorldSession* session, WorldPackets::Party::S if (!bot) return; - // Publish individual events for each target icon (WoW 11.2: vector of pairs) + // Publish individual events for each target icon (WoW 12.0: vector of pairs) for (auto const& [symbolIndex, targetGuid] : packet.TargetIcons) { if (!targetGuid.IsEmpty()) // Check if target is valid diff --git a/src/modules/Playerbot/Network/ParseGroupPacket_v2.cpp b/src/modules/Playerbot/Network/ParseGroupPacket_v2.cpp index b641c18a7..787d3c9f0 100644 --- a/src/modules/Playerbot/Network/ParseGroupPacket_v2.cpp +++ b/src/modules/Playerbot/Network/ParseGroupPacket_v2.cpp @@ -21,7 +21,7 @@ namespace Playerbot * TEMPORARY IMPLEMENTATION: Opcode-Only Detection * * This version detects WHICH packets are sent but doesn't parse packet contents. - * This is because WoW 11.2 ServerPacket classes only have Write() methods, not Read() methods. + * This is because WoW 12.0 ServerPacket classes only have Write() methods, not Read() methods. * * Full packet parsing requires hooking BEFORE packet serialization to access typed packet objects. * See PLAYERBOT_PACKET_SNIFFER_STATUS.md for details. diff --git a/src/modules/Playerbot/Network/ParseLootPacket_Typed.cpp b/src/modules/Playerbot/Network/ParseLootPacket_Typed.cpp index 724381a46..86d6c91a4 100644 --- a/src/modules/Playerbot/Network/ParseLootPacket_Typed.cpp +++ b/src/modules/Playerbot/Network/ParseLootPacket_Typed.cpp @@ -140,7 +140,7 @@ void ParseTypedStartLootRoll(WorldSession* session, WorldPackets::Loot::StartLoo event.priority = LootEventPriority::HIGH; event.looterGuid = bot->GetGUID(); event.itemGuid = packet.LootObj; - event.itemEntry = packet.Item.Loot.ItemID; // WoW 11.2: LootItemData has ItemInstance Loot + event.itemEntry = packet.Item.Loot.ItemID; // WoW 12.0: LootItemData has ItemInstance Loot event.itemCount = packet.Item.Quantity; event.lootType = LootType::CORPSE; event.timestamp = ::std::chrono::steady_clock::now(); @@ -191,7 +191,7 @@ void ParseTypedLootRollWon(WorldSession* session, WorldPackets::Loot::LootRollWo event.priority = LootEventPriority::HIGH; event.looterGuid = packet.Winner; // The player who won event.itemGuid = packet.LootObj; - event.itemEntry = packet.Item.Loot.ItemID; // WoW 11.2: LootItemData has ItemInstance Loot + event.itemEntry = packet.Item.Loot.ItemID; // WoW 12.0: LootItemData has ItemInstance Loot event.itemCount = packet.Item.Quantity; event.lootType = LootType::CORPSE; event.timestamp = ::std::chrono::steady_clock::now(); @@ -217,7 +217,7 @@ void ParseTypedLootAllPassed(WorldSession* session, WorldPackets::Loot::LootAllP event.priority = LootEventPriority::MEDIUM; event.looterGuid = bot->GetGUID(); event.itemGuid = packet.LootObj; - event.itemEntry = packet.Item.Loot.ItemID; // WoW 11.2: LootItemData has ItemInstance Loot + event.itemEntry = packet.Item.Loot.ItemID; // WoW 12.0: LootItemData has ItemInstance Loot event.itemCount = packet.Item.Quantity; event.lootType = LootType::CORPSE; event.timestamp = ::std::chrono::steady_clock::now(); diff --git a/src/modules/Playerbot/Network/ParseQuestPacket_Typed.cpp b/src/modules/Playerbot/Network/ParseQuestPacket_Typed.cpp index 5dcd45913..1e7a80100 100644 --- a/src/modules/Playerbot/Network/ParseQuestPacket_Typed.cpp +++ b/src/modules/Playerbot/Network/ParseQuestPacket_Typed.cpp @@ -12,7 +12,7 @@ #include "Player.h" #include "../Quest/QuestEventBus.h" #include "QuestPackets.h" -#include "QueryPackets.h" // WoW 11.2: QuestPOIQueryResponse is in Query namespace +#include "QueryPackets.h" // WoW 12.0: QuestPOIQueryResponse is in Query namespace #include "Log.h" namespace Playerbot @@ -139,7 +139,7 @@ void ParseTypedQuestGiverOfferRewardMessage(WorldSession* session, WorldPackets: event.type = QuestEventType::QUEST_OFFER_REWARD; event.priority = QuestEventPriority::MEDIUM; event.playerGuid = bot->GetGUID(); - event.questId = packet.QuestData.QuestID; // WoW 11.2: QuestID is in nested QuestData + event.questId = packet.QuestData.QuestID; // WoW 12.0: QuestID is in nested QuestData event.objectiveId = 0; event.objectiveCount = 0; event.state = QuestState::NONE; @@ -285,7 +285,7 @@ void ParseTypedQuestUpdateComplete(WorldSession* session, WorldPackets::Quest::Q bot->GetName(), packet.QuestID); } -// QuestUpdateFailed packet doesn't exist in WoW 11.2 - removed +// QuestUpdateFailed packet doesn't exist in WoW 12.0 - removed void ParseTypedQuestUpdateFailedTimer(WorldSession* session, WorldPackets::Quest::QuestUpdateFailedTimer const& packet) { @@ -339,7 +339,7 @@ void ParseTypedQuestConfirmAccept(WorldSession* session, WorldPackets::Quest::Qu bot->GetName(), packet.QuestID); } -void ParseTypedQuestPOIQueryResponse(WorldSession* session, WorldPackets::Query::QuestPOIQueryResponse const& packet) // WoW 11.2: In Query namespace +void ParseTypedQuestPOIQueryResponse(WorldSession* session, WorldPackets::Query::QuestPOIQueryResponse const& packet) // WoW 12.0: In Query namespace { if (!session) return; @@ -362,7 +362,7 @@ void ParseTypedQuestPOIQueryResponse(WorldSession* session, WorldPackets::Query: QuestEventBus::instance()->PublishEvent(event); TC_LOG_DEBUG("playerbot.packets", "Bot {} received QUEST_POI_QUERY_RESPONSE (typed): {} POIs", - bot->GetName(), packet.QuestPOIDataStats.size()); // WoW 11.2: Field is QuestPOIDataStats, not QuestPOIData + bot->GetName(), packet.QuestPOIDataStats.size()); // WoW 12.0: Field is QuestPOIDataStats, not QuestPOIData } // ================================================================================================ @@ -381,10 +381,10 @@ void RegisterQuestPacketHandlers() PlayerbotPacketSniffer::RegisterTypedHandler(&ParseTypedQuestUpdateAddCreditSimple); PlayerbotPacketSniffer::RegisterTypedHandler(&ParseTypedQuestUpdateAddCredit); PlayerbotPacketSniffer::RegisterTypedHandler(&ParseTypedQuestUpdateComplete); - // QuestUpdateFailed doesn't exist in WoW 11.2 - removed + // QuestUpdateFailed doesn't exist in WoW 12.0 - removed PlayerbotPacketSniffer::RegisterTypedHandler(&ParseTypedQuestUpdateFailedTimer); PlayerbotPacketSniffer::RegisterTypedHandler(&ParseTypedQuestConfirmAccept); - PlayerbotPacketSniffer::RegisterTypedHandler(&ParseTypedQuestPOIQueryResponse); // WoW 11.2: Moved to Query namespace + PlayerbotPacketSniffer::RegisterTypedHandler(&ParseTypedQuestPOIQueryResponse); // WoW 12.0: Moved to Query namespace TC_LOG_INFO("playerbot", "PlayerbotPacketSniffer: Registered {} Quest packet typed handlers", 13); } diff --git a/src/modules/Playerbot/Network/ParseResourcePacket_Typed.cpp b/src/modules/Playerbot/Network/ParseResourcePacket_Typed.cpp index c23158e1e..6a8cf8e7c 100644 --- a/src/modules/Playerbot/Network/ParseResourcePacket_Typed.cpp +++ b/src/modules/Playerbot/Network/ParseResourcePacket_Typed.cpp @@ -96,7 +96,7 @@ void ParseTypedPowerUpdate(WorldSession* session, WorldPackets::Combat::PowerUpd ::Powers tcPowerType = static_cast<::Powers>(powerInfo.Power); int32 maxPower = unit->GetMaxPower(tcPowerType); - // Map to Playerbot::Powers enum (WoW 11.2: limited subset) + // Map to Playerbot::Powers enum (WoW 12.0: limited subset) Powers botPowerType = Powers::POWER_MANA; // Default switch (powerInfo.Power) { diff --git a/src/modules/Playerbot/Network/ParseSocialPacket_Typed.cpp b/src/modules/Playerbot/Network/ParseSocialPacket_Typed.cpp index b3f1f16c1..c00acd71b 100644 --- a/src/modules/Playerbot/Network/ParseSocialPacket_Typed.cpp +++ b/src/modules/Playerbot/Network/ParseSocialPacket_Typed.cpp @@ -36,7 +36,7 @@ void ParseTypedChat(WorldSession* session, WorldPackets::Chat::Chat const& packe bot->GetGUID(), packet.SenderName, packet.ChatText, - static_cast(packet.SlashCmd), // WoW 11.2: SlashCmd is uint8, cast to ChatMsg enum + static_cast(packet.SlashCmd), // WoW 12.0: SlashCmd is uint8, cast to ChatMsg enum static_cast(packet._Language), packet._Channel, packet.AchievementID @@ -166,7 +166,7 @@ void ParseTypedTradeStatus(WorldSession* session, WorldPackets::Trade::TradeStat return; SocialEvent event = SocialEvent::TradeStatusChanged( - packet.Partner, // WoW 11.2: Field is Partner, not PartnerGuid + packet.Partner, // WoW 12.0: Field is Partner, not PartnerGuid bot->GetGUID(), static_cast(packet.Status) ); diff --git a/src/modules/Playerbot/Network/PlayerbotPacketSniffer.cpp b/src/modules/Playerbot/Network/PlayerbotPacketSniffer.cpp index 647ac97d4..688f6e9ed 100644 --- a/src/modules/Playerbot/Network/PlayerbotPacketSniffer.cpp +++ b/src/modules/Playerbot/Network/PlayerbotPacketSniffer.cpp @@ -31,7 +31,7 @@ void PlayerbotPacketSniffer::Initialize() // Initialize opcode mapping InitializeOpcodeMapping(); - // Register typed packet handlers (WoW 11.2) + // Register typed packet handlers (WoW 12.0) RegisterGroupPacketHandlers(); RegisterCombatPacketHandlers(); RegisterCooldownPacketHandlers(); @@ -162,7 +162,7 @@ PacketCategory PlayerbotPacketSniffer::CategorizePacket(OpcodeServer opcode) void PlayerbotPacketSniffer::InitializeOpcodeMapping() { - // DEPRECATED: Opcode-based packet routing is no longer used in WoW 11.2 + // DEPRECATED: Opcode-based packet routing is no longer used in WoW 12.0 // All packet handling now occurs via typed packet handlers registered in // Register*PacketHandlers() functions (see Parse*Packet_Typed.cpp files) // diff --git a/src/modules/Playerbot/Network/PlayerbotPacketSniffer.h b/src/modules/Playerbot/Network/PlayerbotPacketSniffer.h index 559d11049..fc9c525c9 100644 --- a/src/modules/Playerbot/Network/PlayerbotPacketSniffer.h +++ b/src/modules/Playerbot/Network/PlayerbotPacketSniffer.h @@ -117,7 +117,7 @@ public: static void OnPacketSend(WorldSession* session, WorldPacket const& packet); /** - * Typed packet interception hook (WoW 11.2 Solution) + * Typed packet interception hook (WoW 12.0 Solution) * Called from WorldSession::SendPacket() template overload * Receives typed packet BEFORE serialization, enabling full data access * @@ -197,7 +197,7 @@ private: // Initialize opcode mapping static void InitializeOpcodeMapping(); - // Typed packet handlers (WoW 11.2) + // Typed packet handlers (WoW 12.0) using TypedPacketHandler = ::std::function; static inline ::std::unordered_map<::std::type_index, TypedPacketHandler> _typedPacketHandlers; diff --git a/src/modules/Playerbot/Professions/ProfessionDatabase.cpp b/src/modules/Playerbot/Professions/ProfessionDatabase.cpp index d30baeeb8..af2a766f6 100644 --- a/src/modules/Playerbot/Professions/ProfessionDatabase.cpp +++ b/src/modules/Playerbot/Professions/ProfessionDatabase.cpp @@ -580,7 +580,7 @@ void ProfessionDatabase::InitializeRaceBonuses() { _raceBonuses.clear(); - // WoW 11.2 Racial Profession Bonuses + // WoW 12.0 Racial Profession Bonuses // TAUREN (+15 Herbalism) _raceBonuses[RACE_TAUREN][ProfessionType::HERBALISM] = 15; diff --git a/src/modules/Playerbot/Professions/ProfessionManager.h b/src/modules/Playerbot/Professions/ProfessionManager.h index b5cf72080..0da44f692 100644 --- a/src/modules/Playerbot/Professions/ProfessionManager.h +++ b/src/modules/Playerbot/Professions/ProfessionManager.h @@ -46,7 +46,7 @@ namespace Playerbot { /** - * @brief Profession types matching WoW 11.2 skill IDs + * @brief Profession types matching WoW 12.0 skill IDs */ enum class ProfessionType : uint16 { diff --git a/src/modules/Playerbot/Quest/QuestHubDatabase.cpp b/src/modules/Playerbot/Quest/QuestHubDatabase.cpp index 087a04d75..b9aad0fcf 100644 --- a/src/modules/Playerbot/Quest/QuestHubDatabase.cpp +++ b/src/modules/Playerbot/Quest/QuestHubDatabase.cpp @@ -729,7 +729,7 @@ namespace Playerbot } // Execute query for this batch - // WoW 11.2: Level info is in DB2 via ContentTuningID, not in quest_template columns + // WoW 12.0: Level info is in DB2 via ContentTuningID, not in quest_template columns ::std::string query = "SELECT DISTINCT qr.id, qr.quest, qt.ContentTuningID, qt.AllowableRaces " "FROM creature_queststarter qr " "INNER JOIN quest_template qt ON qr.quest = qt.ID " @@ -808,11 +808,11 @@ namespace Playerbot // Assign quest data to hub hub.questIds.assign(uniqueQuests.begin(), uniqueQuests.end()); - // WoW 11.2: Level ranges are determined dynamically via ContentTuningID in DB2 + // WoW 12.0: Level ranges are determined dynamically via ContentTuningID in DB2 // For initial hub classification, use zone-based approximations // This will be refined at runtime when bots query for appropriate hubs hub.minLevel = 1; - hub.maxLevel = 70; // Max level in WoW 11.2 + hub.maxLevel = 70; // Max level in WoW 12.0 // Refine hub name with zone info if available if (hub.zoneId > 0) diff --git a/src/modules/Playerbot/Social/GuildIntegration.cpp b/src/modules/Playerbot/Social/GuildIntegration.cpp index 3ecc0193c..c2fed4b6f 100644 --- a/src/modules/Playerbot/Social/GuildIntegration.cpp +++ b/src/modules/Playerbot/Social/GuildIntegration.cpp @@ -1658,7 +1658,7 @@ void GuildIntegration::AnalyzeConsumableNeeds(std::vector& neededItems) if (!_bot) return; - // Common consumable IDs for different purposes (WoW 11.2) + // Common consumable IDs for different purposes (WoW 12.0) static const std::vector healthPotions = { 191379, 191380, 191381 }; // Healing Potions static const std::vector manaPotions = { 191382, 191383, 191384 }; // Mana Potions static const std::vector flasks = { 191327, 191328, 191329, 191330 }; // Dragonflight Flasks diff --git a/src/modules/Playerbot/Social/LootDistribution.cpp b/src/modules/Playerbot/Social/LootDistribution.cpp index 108c4c1ae..00c201e5e 100644 --- a/src/modules/Playerbot/Social/LootDistribution.cpp +++ b/src/modules/Playerbot/Social/LootDistribution.cpp @@ -1276,7 +1276,7 @@ bool LootDistribution::IsItemForMainSpec(const LootItem& item) { uint8 playerClass = _bot->GetClass(); - // Armor type restrictions by class (WoW 11.2) + // Armor type restrictions by class (WoW 12.0) switch (playerClass) { case CLASS_WARRIOR: @@ -1527,7 +1527,7 @@ bool LootDistribution::IsItemUsefulForOffSpec(const LootItem& item) uint8 invType = item.itemTemplate->GetInventoryType(); // Define potential off-specs for each class and check if item is useful - // WoW 11.2 class/spec matrix + // WoW 12.0 class/spec matrix std::vector possibleOffSpecs; switch (playerClass) diff --git a/src/modules/Playerbot/Talents/BotTalentManager.h b/src/modules/Playerbot/Talents/BotTalentManager.h index 57e0fb76a..11cfa0adc 100644 --- a/src/modules/Playerbot/Talents/BotTalentManager.h +++ b/src/modules/Playerbot/Talents/BotTalentManager.h @@ -87,7 +87,7 @@ struct SpecChoice * Features: * - Specialization selection (intelligent role distribution) * - Talent loadout application (database-driven) - * - Dual-spec support (WoW 11.2 feature, unlocks at level 10) + * - Dual-spec support (WoW 12.0 feature, unlocks at level 10) * - Hero talent support (levels 71-80) * - TrinityCore API integration (InitTalentForLevel, LearnTalent, etc.) * - Immutable loadout cache (lock-free reads) @@ -263,12 +263,12 @@ public: bool SetupBotTalents(Player* bot, uint8 specId, uint32 level) override; // ==================================================================== - // DUAL-SPEC SUPPORT (WoW 11.2 Feature) + // DUAL-SPEC SUPPORT (WoW 12.0 Feature) // ==================================================================== /** * Check if level supports dual-spec - * WoW 11.2: Dual-spec unlocks at level 10 + * WoW 12.0: Dual-spec unlocks at level 10 */ bool SupportsDualSpec(uint32 level) const override { @@ -297,12 +297,12 @@ public: bool SetupDualSpec(Player* bot, uint8 spec1, uint8 spec2, uint32 level) override; // ==================================================================== - // HERO TALENTS (WoW 11.2 Feature, Levels 71-80) + // HERO TALENTS (WoW 12.0 Feature, Levels 71-80) // ==================================================================== /** * Check if level supports hero talents - * WoW 11.2: Hero talents unlock at level 71 + * WoW 12.0: Hero talents unlock at level 71 */ bool SupportsHeroTalents(uint32 level) const override { diff --git a/src/modules/Playerbot/scripts/PlayerbotEventScripts.cpp b/src/modules/Playerbot/scripts/PlayerbotEventScripts.cpp index 39789ab13..d5cf0dd7a 100644 --- a/src/modules/Playerbot/scripts/PlayerbotEventScripts.cpp +++ b/src/modules/Playerbot/scripts/PlayerbotEventScripts.cpp @@ -1018,7 +1018,7 @@ public: }; // ============================================================================ -// VEHICLE SCRIPT - Mount & Vehicle Control (CRITICAL for WoW 11.2) +// VEHICLE SCRIPT - Mount & Vehicle Control (CRITICAL for WoW 12.0) // ============================================================================ class PlayerbotVehicleScript : public VehicleScript