feat(playerbot): WoW 12.0 migration - Update version references and file names
BREAKING CHANGE: Renamed WoW112* files to WoW120* variants Migration changes: - Rename WoW112CharacterCreation.h to WoW120CharacterCreation.h - Rename ResourceTypes_WoW112.h to ResourceTypes_WoW120.h - Rename SpellValidation_WoW112.h to SpellValidation_WoW120.h - Rename SpellValidation_WoW112_Part2.h to SpellValidation_WoW120_Part2.h - Rename CombatSpecializationTemplate_WoW112.h to WoW120 variant - Rename ResourceSystemWoW112.md to WoW120 variant - Update WoW112Spells namespace to WoW120Spells in all files - Update all include paths from WoW112 to WoW120 - Update comments referencing "11.2" to "12.0" - Add Spirit stat to BaseStats (MAX_STATS = 5 in WoW 12.0) - Update Difficulty enum types from uint8 to int16 Part of WoW 12.0 API migration (TrinityCore commit b0a596908d5c1b5b09f90e97b17a7fc785e5366f) Co-Authored-By: Claude Opus 4.5 <[email protected]> Signed-off-by: luis <[email protected]>
This commit is contained in:
committed by
luis
co-authored by
Claude Opus 4.5
parent
ac473ee5dc
commit
a2b3d67321
@@ -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<Action>> actions;
|
||||
ChrSpecialization specEnum = static_cast<ChrSpecialization>(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<Action>> ActionFactory::CreateCombatActions(uint8 classId)
|
||||
{
|
||||
using namespace WoW112Spells;
|
||||
using namespace WoW120Spells;
|
||||
|
||||
::std::vector<::std::shared_ptr<Action>> actions;
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -753,7 +753,7 @@ void HunterBaselineRotation::ApplyBuffs(Player* bot)
|
||||
void BaselineRotationManager::InitializeRogueBaseline()
|
||||
{
|
||||
::std::vector<BaselineAbility> 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<BaselineAbility> 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<BaselineAbility> 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;
|
||||
|
||||
|
||||
+2
-2
@@ -10,14 +10,14 @@
|
||||
#pragma once
|
||||
|
||||
#include "CombatSpecializationBase.h"
|
||||
#include "ResourceTypes_WoW112.h"
|
||||
#include "ResourceTypes_WoW120.h"
|
||||
#include <type_traits>
|
||||
|
||||
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.
|
||||
@@ -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<BotAI*>(bot->GetPlayerAI());
|
||||
// if (!ai) return;
|
||||
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
#pragma once
|
||||
|
||||
#include "../ClassAI.h"
|
||||
#include "../SpellValidation_WoW112.h"
|
||||
#include "../SpellValidation_WoW120.h"
|
||||
#include <memory>
|
||||
#include <chrono>
|
||||
#include <unordered_map>
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
#pragma once
|
||||
|
||||
#include "../ClassAI.h"
|
||||
#include "../SpellValidation_WoW112.h"
|
||||
#include "../SpellValidation_WoW120.h"
|
||||
#include <memory>
|
||||
#include <chrono>
|
||||
|
||||
@@ -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
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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 <unordered_map>
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
{
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
@@ -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
|
||||
};
|
||||
|
||||
/**
|
||||
|
||||
@@ -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
|
||||
{
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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))
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
#pragma once
|
||||
|
||||
#include "../ClassAI.h"
|
||||
#include "../SpellValidation_WoW112_Part2.h"
|
||||
#include "../SpellValidation_WoW120_Part2.h"
|
||||
#include "Position.h"
|
||||
#include <memory>
|
||||
#include <chrono>
|
||||
@@ -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
|
||||
};
|
||||
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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)
|
||||
// ========================================================================
|
||||
|
||||
// ========================================================================
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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 <memory>
|
||||
@@ -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
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
|
||||
+2
-2
@@ -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.
|
||||
*/
|
||||
|
||||
@@ -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<ComboPointsAs
|
||||
{
|
||||
public:
|
||||
// Assassination Rogue Spell IDs
|
||||
// Using central registry: WoW112Spells::Rogue and WoW112Spells::Rogue::Assassination
|
||||
static constexpr uint32 GARROTE = WoW112Spells::Rogue::Assassination::GARROTE;
|
||||
static constexpr uint32 RUPTURE = WoW112Spells::Rogue::Assassination::RUPTURE;
|
||||
static constexpr uint32 ENVENOM = WoW112Spells::Rogue::Assassination::ENVENOM;
|
||||
static constexpr uint32 VENDETTA = WoW112Spells::Rogue::Assassination::VENDETTA;
|
||||
static constexpr uint32 MUTILATE = WoW112Spells::Rogue::Assassination::MUTILATE;
|
||||
static constexpr uint32 FAN_OF_KNIVES = WoW112Spells::Rogue::FAN_OF_KNIVES;
|
||||
static constexpr uint32 CRIMSON_TEMPEST = WoW112Spells::Rogue::Assassination::CRIMSON_TEMPEST;
|
||||
static constexpr uint32 EXSANGUINATE = WoW112Spells::Rogue::Assassination::EXSANGUINATE;
|
||||
static constexpr uint32 KINGSBANE = WoW112Spells::Rogue::Assassination::KINGSBANE;
|
||||
// Using central registry: WoW120Spells::Rogue and WoW120Spells::Rogue::Assassination
|
||||
static constexpr uint32 GARROTE = WoW120Spells::Rogue::Assassination::GARROTE;
|
||||
static constexpr uint32 RUPTURE = WoW120Spells::Rogue::Assassination::RUPTURE;
|
||||
static constexpr uint32 ENVENOM = WoW120Spells::Rogue::Assassination::ENVENOM;
|
||||
static constexpr uint32 VENDETTA = WoW120Spells::Rogue::Assassination::VENDETTA;
|
||||
static constexpr uint32 MUTILATE = WoW120Spells::Rogue::Assassination::MUTILATE;
|
||||
static constexpr uint32 FAN_OF_KNIVES = WoW120Spells::Rogue::FAN_OF_KNIVES;
|
||||
static constexpr uint32 CRIMSON_TEMPEST = WoW120Spells::Rogue::Assassination::CRIMSON_TEMPEST;
|
||||
static constexpr uint32 EXSANGUINATE = WoW120Spells::Rogue::Assassination::EXSANGUINATE;
|
||||
static constexpr uint32 KINGSBANE = WoW120Spells::Rogue::Assassination::KINGSBANE;
|
||||
|
||||
|
||||
public:
|
||||
|
||||
@@ -25,9 +25,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
|
||||
{
|
||||
@@ -49,36 +49,36 @@ using bot::ai::SpellCategory;
|
||||
// NOTE: ComboPointsOutlaw is defined in RogueResourceTypes.h (spec-specific resource type)
|
||||
|
||||
// ============================================================================
|
||||
// OUTLAW ROGUE SPELL IDs (WoW 11.2 - The War Within) - UNIQUE ONLY
|
||||
// See central registry: WoW112Spells::Rogue and WoW112Spells::Rogue::Outlaw
|
||||
// OUTLAW ROGUE SPELL IDs (WoW 12.0 - The War Within) - UNIQUE ONLY
|
||||
// See central registry: WoW120Spells::Rogue and WoW120Spells::Rogue::Outlaw
|
||||
// ============================================================================
|
||||
|
||||
enum OutlawSpells
|
||||
{
|
||||
// WoW 11.2 Outlaw-specific spells
|
||||
// Using central registry: WoW112Spells::Rogue and WoW112Spells::Rogue::Outlaw
|
||||
PISTOL_SHOT = WoW112Spells::Rogue::Outlaw::PISTOL_SHOT,
|
||||
BETWEEN_THE_EYES = WoW112Spells::Rogue::Outlaw::BETWEEN_THE_EYES,
|
||||
DISPATCH_OUTLAW = WoW112Spells::Rogue::Outlaw::DISPATCH,
|
||||
// WoW 12.0 Outlaw-specific spells
|
||||
// Using central registry: WoW120Spells::Rogue and WoW120Spells::Rogue::Outlaw
|
||||
PISTOL_SHOT = WoW120Spells::Rogue::Outlaw::PISTOL_SHOT,
|
||||
BETWEEN_THE_EYES = WoW120Spells::Rogue::Outlaw::BETWEEN_THE_EYES,
|
||||
DISPATCH_OUTLAW = WoW120Spells::Rogue::Outlaw::DISPATCH,
|
||||
|
||||
// Roll the Bones System (Outlaw unique)
|
||||
ROLL_THE_BONES = WoW112Spells::Rogue::Outlaw::ROLL_THE_BONES,
|
||||
BUFF_RUTHLESS_PRECISION = WoW112Spells::Rogue::Outlaw::RUTHLESS_PRECISION,
|
||||
BUFF_GRAND_MELEE = WoW112Spells::Rogue::Outlaw::GRAND_MELEE,
|
||||
BUFF_BROADSIDE = WoW112Spells::Rogue::Outlaw::BROADSIDE,
|
||||
BUFF_TRUE_BEARING = WoW112Spells::Rogue::Outlaw::TRUE_BEARING,
|
||||
BUFF_SKULL_AND_CROSSBONES = WoW112Spells::Rogue::Outlaw::SKULL_AND_CROSSBONES,
|
||||
BUFF_BURIED_TREASURE = WoW112Spells::Rogue::Outlaw::BURIED_TREASURE,
|
||||
ROLL_THE_BONES = WoW120Spells::Rogue::Outlaw::ROLL_THE_BONES,
|
||||
BUFF_RUTHLESS_PRECISION = WoW120Spells::Rogue::Outlaw::RUTHLESS_PRECISION,
|
||||
BUFF_GRAND_MELEE = WoW120Spells::Rogue::Outlaw::GRAND_MELEE,
|
||||
BUFF_BROADSIDE = WoW120Spells::Rogue::Outlaw::BROADSIDE,
|
||||
BUFF_TRUE_BEARING = WoW120Spells::Rogue::Outlaw::TRUE_BEARING,
|
||||
BUFF_SKULL_AND_CROSSBONES = WoW120Spells::Rogue::Outlaw::SKULL_AND_CROSSBONES,
|
||||
BUFF_BURIED_TREASURE = WoW120Spells::Rogue::Outlaw::BURIED_TREASURE,
|
||||
|
||||
// Talents (Outlaw specific)
|
||||
BLADE_RUSH = WoW112Spells::Rogue::Outlaw::BLADE_RUSH,
|
||||
OPPORTUNITY_PROC = WoW112Spells::Rogue::Outlaw::OPPORTUNITY_PROC,
|
||||
GHOSTLY_STRIKE = WoW112Spells::Rogue::Outlaw::GHOSTLY_STRIKE,
|
||||
DREADBLADES = WoW112Spells::Rogue::Outlaw::DREADBLADES,
|
||||
BLADE_RUSH = WoW120Spells::Rogue::Outlaw::BLADE_RUSH,
|
||||
OPPORTUNITY_PROC = WoW120Spells::Rogue::Outlaw::OPPORTUNITY_PROC,
|
||||
GHOSTLY_STRIKE = WoW120Spells::Rogue::Outlaw::GHOSTLY_STRIKE,
|
||||
DREADBLADES = WoW120Spells::Rogue::Outlaw::DREADBLADES,
|
||||
|
||||
// Outlaw-specific utility
|
||||
FEINT_OUTLAW = WoW112Spells::Rogue::FEINT,
|
||||
MARKED_FOR_DEATH = WoW112Spells::Rogue::MARKED_FOR_DEATH
|
||||
FEINT_OUTLAW = WoW120Spells::Rogue::FEINT,
|
||||
MARKED_FOR_DEATH = WoW120Spells::Rogue::MARKED_FOR_DEATH
|
||||
};
|
||||
|
||||
// ============================================================================
|
||||
|
||||
@@ -158,7 +158,7 @@ public:
|
||||
private:
|
||||
bool IsFinisher(uint32 spellId) const
|
||||
{
|
||||
// WoW 11.2 finishers - EXPOSE_ARMOR removed from game
|
||||
// WoW 12.0 finishers - EXPOSE_ARMOR removed from game
|
||||
return spellId == RogueAI::SLICE_AND_DICE || spellId == RogueAI::RUPTURE ||
|
||||
spellId == RogueAI::EVISCERATE || spellId == RogueAI::KIDNEY_SHOT ||
|
||||
spellId == RogueAI::ENVENOM || spellId == RogueAI::CRIMSON_TEMPEST ||
|
||||
@@ -661,7 +661,7 @@ void RogueAI::ExecuteRogueBasicRotation(Unit* target)
|
||||
}
|
||||
}
|
||||
|
||||
// NOTE: EXPOSE_ARMOR removed from WoW 11.2
|
||||
// NOTE: EXPOSE_ARMOR removed from WoW 12.0
|
||||
// Armor reduction is now provided by other debuffs (Colossus Smash, etc.)
|
||||
|
||||
// Kidney Shot for control
|
||||
@@ -1146,7 +1146,7 @@ bool RogueAI::BuildComboPoints(Unit* target)
|
||||
break;
|
||||
|
||||
case 2: // Subtlety
|
||||
// NOTE: HEMORRHAGE removed from WoW 11.2
|
||||
// NOTE: HEMORRHAGE removed from WoW 12.0
|
||||
// Subtlety now uses Shadowstrike (from stealth/Shadow Dance) and Backstab
|
||||
if (CanUseAbility(SHADOWSTRIKE))
|
||||
{
|
||||
@@ -1270,7 +1270,7 @@ void RogueAI::ApplyPoisons()
|
||||
break;
|
||||
|
||||
case 2: // Subtlety
|
||||
// NOTE: MIND_NUMBING_POISON renamed to NUMBING_POISON in WoW 11.2
|
||||
// NOTE: MIND_NUMBING_POISON renamed to NUMBING_POISON in WoW 12.0
|
||||
poisonSpell = NUMBING_POISON;
|
||||
break;
|
||||
}
|
||||
@@ -1357,7 +1357,7 @@ bool RogueAI::HasEnoughResource(uint32 spellId)
|
||||
|
||||
bool RogueAI::IsFinisher(uint32 spellId) const
|
||||
{
|
||||
// WoW 11.2 finishers - EXPOSE_ARMOR and DEADLY_THROW removed from game
|
||||
// WoW 12.0 finishers - EXPOSE_ARMOR and DEADLY_THROW removed from game
|
||||
return spellId == SLICE_AND_DICE || spellId == RUPTURE ||
|
||||
spellId == EVISCERATE || spellId == KIDNEY_SHOT ||
|
||||
spellId == ENVENOM || spellId == CRIMSON_TEMPEST ||
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
#define ROGUE_AI_H
|
||||
|
||||
#include "../ClassAI.h"
|
||||
#include "../SpellValidation_WoW112_Part2.h"
|
||||
#include "../SpellValidation_WoW120_Part2.h"
|
||||
#include "Position.h"
|
||||
#include "Unit.h"
|
||||
#include "../Combat/BotThreatManager.h"
|
||||
@@ -171,89 +171,89 @@ private:
|
||||
uint32 _lastPoison;
|
||||
|
||||
public:
|
||||
// Rogue Spell IDs - Using central registry (WoW 11.2)
|
||||
// See WoW112Spells::Rogue namespace in SpellValidation_WoW112_Part2.h
|
||||
// Rogue Spell IDs - Using central registry (WoW 12.0)
|
||||
// See WoW120Spells::Rogue namespace in SpellValidation_WoW120_Part2.h
|
||||
enum RogueSpells
|
||||
{
|
||||
// ====================================================================
|
||||
// Combo Point Builders - All specs use central registry
|
||||
// ====================================================================
|
||||
SINISTER_STRIKE = WoW112Spells::Rogue::Common::SINISTER_STRIKE,
|
||||
BACKSTAB = WoW112Spells::Rogue::Common::BACKSTAB,
|
||||
MUTILATE = WoW112Spells::Rogue::Common::MUTILATE,
|
||||
SHIV = WoW112Spells::Rogue::Common::SHIV,
|
||||
AMBUSH = WoW112Spells::Rogue::Common::AMBUSH,
|
||||
GARROTE = WoW112Spells::Rogue::Common::GARROTE,
|
||||
CHEAP_SHOT = WoW112Spells::Rogue::Common::CHEAP_SHOT,
|
||||
SHADOWSTRIKE = WoW112Spells::Rogue::Common::SHADOWSTRIKE,
|
||||
SINISTER_STRIKE = WoW120Spells::Rogue::Common::SINISTER_STRIKE,
|
||||
BACKSTAB = WoW120Spells::Rogue::Common::BACKSTAB,
|
||||
MUTILATE = WoW120Spells::Rogue::Common::MUTILATE,
|
||||
SHIV = WoW120Spells::Rogue::Common::SHIV,
|
||||
AMBUSH = WoW120Spells::Rogue::Common::AMBUSH,
|
||||
GARROTE = WoW120Spells::Rogue::Common::GARROTE,
|
||||
CHEAP_SHOT = WoW120Spells::Rogue::Common::CHEAP_SHOT,
|
||||
SHADOWSTRIKE = WoW120Spells::Rogue::Common::SHADOWSTRIKE,
|
||||
|
||||
// ====================================================================
|
||||
// Combo Point Finishers - Using central registry
|
||||
// ====================================================================
|
||||
SLICE_AND_DICE = WoW112Spells::Rogue::Common::SLICE_AND_DICE,
|
||||
RUPTURE = WoW112Spells::Rogue::Common::RUPTURE,
|
||||
EVISCERATE = WoW112Spells::Rogue::Common::EVISCERATE,
|
||||
KIDNEY_SHOT = WoW112Spells::Rogue::Common::KIDNEY_SHOT,
|
||||
ENVENOM = WoW112Spells::Rogue::Common::ENVENOM,
|
||||
CRIMSON_TEMPEST = WoW112Spells::Rogue::Common::CRIMSON_TEMPEST,
|
||||
BETWEEN_THE_EYES = WoW112Spells::Rogue::Common::BETWEEN_THE_EYES,
|
||||
SLICE_AND_DICE = WoW120Spells::Rogue::Common::SLICE_AND_DICE,
|
||||
RUPTURE = WoW120Spells::Rogue::Common::RUPTURE,
|
||||
EVISCERATE = WoW120Spells::Rogue::Common::EVISCERATE,
|
||||
KIDNEY_SHOT = WoW120Spells::Rogue::Common::KIDNEY_SHOT,
|
||||
ENVENOM = WoW120Spells::Rogue::Common::ENVENOM,
|
||||
CRIMSON_TEMPEST = WoW120Spells::Rogue::Common::CRIMSON_TEMPEST,
|
||||
BETWEEN_THE_EYES = WoW120Spells::Rogue::Common::BETWEEN_THE_EYES,
|
||||
|
||||
// ====================================================================
|
||||
// Cooldowns - Using central registry
|
||||
// ====================================================================
|
||||
BLADE_FLURRY = WoW112Spells::Rogue::Common::BLADE_FLURRY,
|
||||
ADRENALINE_RUSH = WoW112Spells::Rogue::Common::ADRENALINE_RUSH,
|
||||
KILLING_SPREE = WoW112Spells::Rogue::Common::KILLING_SPREE,
|
||||
VENDETTA = WoW112Spells::Rogue::Common::VENDETTA,
|
||||
SHADOW_BLADES = WoW112Spells::Rogue::Common::SHADOW_BLADES,
|
||||
COLD_BLOOD = WoW112Spells::Rogue::Common::COLD_BLOOD,
|
||||
SHADOW_DANCE = WoW112Spells::Rogue::Common::SHADOW_DANCE,
|
||||
SHADOWSTEP = WoW112Spells::Rogue::Common::SHADOWSTEP,
|
||||
SYMBOLS_OF_DEATH = WoW112Spells::Rogue::Common::SYMBOLS_OF_DEATH,
|
||||
MARKED_FOR_DEATH = WoW112Spells::Rogue::Common::MARKED_FOR_DEATH,
|
||||
BLADE_FLURRY = WoW120Spells::Rogue::Common::BLADE_FLURRY,
|
||||
ADRENALINE_RUSH = WoW120Spells::Rogue::Common::ADRENALINE_RUSH,
|
||||
KILLING_SPREE = WoW120Spells::Rogue::Common::KILLING_SPREE,
|
||||
VENDETTA = WoW120Spells::Rogue::Common::VENDETTA,
|
||||
SHADOW_BLADES = WoW120Spells::Rogue::Common::SHADOW_BLADES,
|
||||
COLD_BLOOD = WoW120Spells::Rogue::Common::COLD_BLOOD,
|
||||
SHADOW_DANCE = WoW120Spells::Rogue::Common::SHADOW_DANCE,
|
||||
SHADOWSTEP = WoW120Spells::Rogue::Common::SHADOWSTEP,
|
||||
SYMBOLS_OF_DEATH = WoW120Spells::Rogue::Common::SYMBOLS_OF_DEATH,
|
||||
MARKED_FOR_DEATH = WoW120Spells::Rogue::Common::MARKED_FOR_DEATH,
|
||||
|
||||
// ====================================================================
|
||||
// Utility - Using central registry
|
||||
// ====================================================================
|
||||
KICK = WoW112Spells::Rogue::Common::KICK,
|
||||
BLIND = WoW112Spells::Rogue::Common::BLIND,
|
||||
SAP = WoW112Spells::Rogue::Common::SAP,
|
||||
VANISH = WoW112Spells::Rogue::Common::VANISH,
|
||||
STEALTH = WoW112Spells::Rogue::Common::STEALTH,
|
||||
SPRINT = WoW112Spells::Rogue::Common::SPRINT,
|
||||
CLOAK_OF_SHADOWS = WoW112Spells::Rogue::Common::CLOAK_OF_SHADOWS,
|
||||
EVASION = WoW112Spells::Rogue::Common::EVASION,
|
||||
FEINT = WoW112Spells::Rogue::Common::FEINT,
|
||||
TRICKS_OF_THE_TRADE = WoW112Spells::Rogue::Common::TRICKS_OF_THE_TRADE,
|
||||
KICK = WoW120Spells::Rogue::Common::KICK,
|
||||
BLIND = WoW120Spells::Rogue::Common::BLIND,
|
||||
SAP = WoW120Spells::Rogue::Common::SAP,
|
||||
VANISH = WoW120Spells::Rogue::Common::VANISH,
|
||||
STEALTH = WoW120Spells::Rogue::Common::STEALTH,
|
||||
SPRINT = WoW120Spells::Rogue::Common::SPRINT,
|
||||
CLOAK_OF_SHADOWS = WoW120Spells::Rogue::Common::CLOAK_OF_SHADOWS,
|
||||
EVASION = WoW120Spells::Rogue::Common::EVASION,
|
||||
FEINT = WoW120Spells::Rogue::Common::FEINT,
|
||||
TRICKS_OF_THE_TRADE = WoW120Spells::Rogue::Common::TRICKS_OF_THE_TRADE,
|
||||
|
||||
// ====================================================================
|
||||
// Poisons - Using central registry
|
||||
// ====================================================================
|
||||
DEADLY_POISON = WoW112Spells::Rogue::Common::DEADLY_POISON,
|
||||
INSTANT_POISON = WoW112Spells::Rogue::Common::INSTANT_POISON,
|
||||
WOUND_POISON = WoW112Spells::Rogue::Common::WOUND_POISON,
|
||||
NUMBING_POISON = WoW112Spells::Rogue::NUMBING_POISON,
|
||||
CRIPPLING_POISON = WoW112Spells::Rogue::Common::CRIPPLING_POISON,
|
||||
DEADLY_POISON = WoW120Spells::Rogue::Common::DEADLY_POISON,
|
||||
INSTANT_POISON = WoW120Spells::Rogue::Common::INSTANT_POISON,
|
||||
WOUND_POISON = WoW120Spells::Rogue::Common::WOUND_POISON,
|
||||
NUMBING_POISON = WoW120Spells::Rogue::NUMBING_POISON,
|
||||
CRIPPLING_POISON = WoW120Spells::Rogue::Common::CRIPPLING_POISON,
|
||||
|
||||
// ====================================================================
|
||||
// AoE - Using central registry
|
||||
// ====================================================================
|
||||
FAN_OF_KNIVES = WoW112Spells::Rogue::Common::FAN_OF_KNIVES,
|
||||
FAN_OF_KNIVES = WoW120Spells::Rogue::Common::FAN_OF_KNIVES,
|
||||
|
||||
// ====================================================================
|
||||
// Assassination Spec - Using central registry
|
||||
// ====================================================================
|
||||
DEATHMARK = WoW112Spells::Rogue::Assassination::DEATHMARK,
|
||||
POISONED_KNIFE = WoW112Spells::Rogue::Assassination::POISONED_KNIFE,
|
||||
DEATHMARK = WoW120Spells::Rogue::Assassination::DEATHMARK,
|
||||
POISONED_KNIFE = WoW120Spells::Rogue::Assassination::POISONED_KNIFE,
|
||||
|
||||
// ====================================================================
|
||||
// Talents - Using central registry where available
|
||||
// ====================================================================
|
||||
VIGOR = 14983, // Passive talent for energy pool (still used in 11.2)
|
||||
DEEPER_STRATAGEM = WoW112Spells::Rogue::Subtlety::DEEPER_STRATAGEM
|
||||
DEEPER_STRATAGEM = WoW120Spells::Rogue::Subtlety::DEEPER_STRATAGEM
|
||||
|
||||
// ====================================================================
|
||||
// REMOVED SPELLS (Not in WoW 11.2):
|
||||
// REMOVED SPELLS (Not in WoW 12.0):
|
||||
// - HEMORRHAGE (16511) - Removed from game
|
||||
// - EXPOSE_ARMOR (8647) - Removed from game
|
||||
// - DEADLY_THROW (26679) - Removed from game
|
||||
|
||||
@@ -27,7 +27,7 @@ namespace Playerbot
|
||||
* Implements ComplexResource concept requirements for template-based specialization system.
|
||||
*
|
||||
* @note Shared across Assassination, Outlaw, and Subtlety specializations
|
||||
* @since WoW 11.2 (The War Within)
|
||||
* @since WoW 12.0 (The War Within)
|
||||
*/
|
||||
struct EnergyComboResource
|
||||
{
|
||||
|
||||
@@ -25,9 +25,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
|
||||
{
|
||||
@@ -50,44 +50,44 @@ using bot::ai::SpellCategory;
|
||||
// NOTE: ComboPointsSubtlety is defined in RogueResourceTypes.h (spec-specific resource type)
|
||||
|
||||
// ============================================================================
|
||||
// SUBTLETY ROGUE SPELL IDs (WoW 11.2 - The War Within)
|
||||
// See central registry: WoW112Spells::Rogue and WoW112Spells::Rogue::Subtlety
|
||||
// SUBTLETY ROGUE SPELL IDs (WoW 12.0 - The War Within)
|
||||
// See central registry: WoW120Spells::Rogue and WoW120Spells::Rogue::Subtlety
|
||||
// ============================================================================
|
||||
|
||||
enum SubtletySpells
|
||||
{
|
||||
// NOTE: Shared spells (BACKSTAB, RUPTURE, STEALTH, VANISH, KICK, etc.) are in RogueSpecialization.h
|
||||
// Only Subtlety-UNIQUE spells defined here to avoid duplicate definitions
|
||||
// Using central registry: WoW112Spells::Rogue and WoW112Spells::Rogue::Subtlety
|
||||
// Using central registry: WoW120Spells::Rogue and WoW120Spells::Rogue::Subtlety
|
||||
|
||||
// Combo Point Builders (Unique to Subtlety)
|
||||
SHADOWSTRIKE_SUB = WoW112Spells::Rogue::Subtlety::SHADOWSTRIKE,
|
||||
SHURIKEN_STORM = WoW112Spells::Rogue::Subtlety::SHURIKEN_STORM,
|
||||
SHADOWSTRIKE_SUB = WoW120Spells::Rogue::Subtlety::SHADOWSTRIKE,
|
||||
SHURIKEN_STORM = WoW120Spells::Rogue::Subtlety::SHURIKEN_STORM,
|
||||
|
||||
// Combo Point Spenders (Unique to Subtlety)
|
||||
EVISCERATE_SUB = WoW112Spells::Rogue::Subtlety::EVISCERATE,
|
||||
BLACK_POWDER = WoW112Spells::Rogue::Subtlety::BLACK_POWDER,
|
||||
SECRET_TECHNIQUE = WoW112Spells::Rogue::Subtlety::SECRET_TECHNIQUE,
|
||||
EVISCERATE_SUB = WoW120Spells::Rogue::Subtlety::EVISCERATE,
|
||||
BLACK_POWDER = WoW120Spells::Rogue::Subtlety::BLACK_POWDER,
|
||||
SECRET_TECHNIQUE = WoW120Spells::Rogue::Subtlety::SECRET_TECHNIQUE,
|
||||
|
||||
// Major Cooldowns
|
||||
SHADOW_BLADES = WoW112Spells::Rogue::Subtlety::SHADOW_BLADES,
|
||||
SHURIKEN_TORNADO = WoW112Spells::Rogue::Subtlety::SHURIKEN_TORNADO,
|
||||
SHADOW_BLADES = WoW120Spells::Rogue::Subtlety::SHADOW_BLADES,
|
||||
SHURIKEN_TORNADO = WoW120Spells::Rogue::Subtlety::SHURIKEN_TORNADO,
|
||||
|
||||
// Shadow Techniques
|
||||
SHADOW_TECHNIQUES_PROC = WoW112Spells::Rogue::Subtlety::SHADOW_TECHNIQUES,
|
||||
SHADOW_TECHNIQUES_PROC = WoW120Spells::Rogue::Subtlety::SHADOW_TECHNIQUES,
|
||||
|
||||
// Finisher Buffs
|
||||
SLICE_AND_DICE_SUB = WoW112Spells::Rogue::Outlaw::SLICE_AND_DICE,
|
||||
SLICE_AND_DICE_SUB = WoW120Spells::Rogue::Outlaw::SLICE_AND_DICE,
|
||||
|
||||
// Procs and Buffs
|
||||
DANSE_MACABRE = WoW112Spells::Rogue::Subtlety::DANSE_MACABRE,
|
||||
DEEPER_DAGGERS = WoW112Spells::Rogue::Subtlety::DEEPER_DAGGERS,
|
||||
DANSE_MACABRE = WoW120Spells::Rogue::Subtlety::DANSE_MACABRE,
|
||||
DEEPER_DAGGERS = WoW120Spells::Rogue::Subtlety::DEEPER_DAGGERS,
|
||||
|
||||
// Talents
|
||||
DARK_SHADOW = WoW112Spells::Rogue::Subtlety::DARK_SHADOW,
|
||||
DEEPER_STRATAGEM_SUB = WoW112Spells::Rogue::Subtlety::DEEPER_STRATAGEM,
|
||||
MARKED_FOR_DEATH_SUB = WoW112Spells::Rogue::MARKED_FOR_DEATH,
|
||||
SHURIKEN_TORNADO_TALENT = WoW112Spells::Rogue::Subtlety::SHURIKEN_TORNADO
|
||||
DARK_SHADOW = WoW120Spells::Rogue::Subtlety::DARK_SHADOW,
|
||||
DEEPER_STRATAGEM_SUB = WoW120Spells::Rogue::Subtlety::DEEPER_STRATAGEM,
|
||||
MARKED_FOR_DEATH_SUB = WoW120Spells::Rogue::MARKED_FOR_DEATH,
|
||||
SHURIKEN_TORNADO_TALENT = WoW120Spells::Rogue::Subtlety::SHURIKEN_TORNADO
|
||||
};
|
||||
|
||||
// ============================================================================
|
||||
|
||||
@@ -31,9 +31,9 @@
|
||||
#include "../../Decision/BehaviorTree.h"
|
||||
#include "../BotAI.h"
|
||||
|
||||
// Central Spell Registry - See WoW112Spells::Shaman namespace
|
||||
#include "../SpellValidation_WoW112.h"
|
||||
#include "../SpellValidation_WoW112_Part2.h"
|
||||
// Central Spell Registry - See WoW120Spells::Shaman namespace
|
||||
#include "../SpellValidation_WoW120.h"
|
||||
#include "../SpellValidation_WoW120_Part2.h"
|
||||
|
||||
namespace Playerbot
|
||||
{
|
||||
@@ -50,27 +50,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) - Elemental Shaman Spell IDs
|
||||
// Using central registry: WoW112Spells::Shaman and WoW112Spells::Shaman::Elemental
|
||||
constexpr uint32 ELEM_LIGHTNING_BOLT = WoW112Spells::Shaman::LIGHTNING_BOLT;
|
||||
constexpr uint32 ELEM_LAVA_BURST = WoW112Spells::Shaman::LAVA_BURST;
|
||||
constexpr uint32 ELEM_FLAME_SHOCK = WoW112Spells::Shaman::FLAME_SHOCK;
|
||||
constexpr uint32 ELEM_EARTH_SHOCK = WoW112Spells::Shaman::EARTH_SHOCK;
|
||||
constexpr uint32 ELEM_FROST_SHOCK = WoW112Spells::Shaman::FROST_SHOCK;
|
||||
constexpr uint32 ELEM_CHAIN_LIGHTNING = WoW112Spells::Shaman::CHAIN_LIGHTNING;
|
||||
constexpr uint32 ELEM_EARTHQUAKE = WoW112Spells::Shaman::Elemental::EARTHQUAKE;
|
||||
constexpr uint32 ELEM_FIRE_ELEMENTAL = WoW112Spells::Shaman::Elemental::FIRE_ELEMENTAL;
|
||||
constexpr uint32 ELEM_STORMKEEPER = WoW112Spells::Shaman::Elemental::STORMKEEPER;
|
||||
constexpr uint32 ELEM_ASCENDANCE = WoW112Spells::Shaman::Elemental::ASCENDANCE;
|
||||
constexpr uint32 ELEM_LIQUID_MAGMA_TOTEM = WoW112Spells::Shaman::Elemental::LIQUID_MAGMA_TOTEM;
|
||||
constexpr uint32 ELEM_ICEFURY = WoW112Spells::Shaman::Elemental::ICEFURY;
|
||||
constexpr uint32 ELEM_ELEMENTAL_BLAST = WoW112Spells::Shaman::Elemental::ELEMENTAL_BLAST;
|
||||
constexpr uint32 ELEM_ECHOING_SHOCK = WoW112Spells::Shaman::Elemental::ECHOING_SHOCK;
|
||||
constexpr uint32 ELEM_PRIMORDIAL_WAVE = WoW112Spells::Shaman::Elemental::PRIMORDIAL_WAVE;
|
||||
constexpr uint32 ELEM_ASTRAL_SHIFT = WoW112Spells::Shaman::ASTRAL_SHIFT;
|
||||
constexpr uint32 ELEM_EARTH_SHIELD = WoW112Spells::Shaman::Restoration::EARTH_SHIELD;
|
||||
constexpr uint32 ELEM_WIND_SHEAR = WoW112Spells::Shaman::WIND_SHEAR;
|
||||
constexpr uint32 ELEM_CAPACITOR_TOTEM = WoW112Spells::Shaman::CAPACITOR_TOTEM;
|
||||
// WoW 12.0 (The War Within) - Elemental Shaman Spell IDs
|
||||
// Using central registry: WoW120Spells::Shaman and WoW120Spells::Shaman::Elemental
|
||||
constexpr uint32 ELEM_LIGHTNING_BOLT = WoW120Spells::Shaman::LIGHTNING_BOLT;
|
||||
constexpr uint32 ELEM_LAVA_BURST = WoW120Spells::Shaman::LAVA_BURST;
|
||||
constexpr uint32 ELEM_FLAME_SHOCK = WoW120Spells::Shaman::FLAME_SHOCK;
|
||||
constexpr uint32 ELEM_EARTH_SHOCK = WoW120Spells::Shaman::EARTH_SHOCK;
|
||||
constexpr uint32 ELEM_FROST_SHOCK = WoW120Spells::Shaman::FROST_SHOCK;
|
||||
constexpr uint32 ELEM_CHAIN_LIGHTNING = WoW120Spells::Shaman::CHAIN_LIGHTNING;
|
||||
constexpr uint32 ELEM_EARTHQUAKE = WoW120Spells::Shaman::Elemental::EARTHQUAKE;
|
||||
constexpr uint32 ELEM_FIRE_ELEMENTAL = WoW120Spells::Shaman::Elemental::FIRE_ELEMENTAL;
|
||||
constexpr uint32 ELEM_STORMKEEPER = WoW120Spells::Shaman::Elemental::STORMKEEPER;
|
||||
constexpr uint32 ELEM_ASCENDANCE = WoW120Spells::Shaman::Elemental::ASCENDANCE;
|
||||
constexpr uint32 ELEM_LIQUID_MAGMA_TOTEM = WoW120Spells::Shaman::Elemental::LIQUID_MAGMA_TOTEM;
|
||||
constexpr uint32 ELEM_ICEFURY = WoW120Spells::Shaman::Elemental::ICEFURY;
|
||||
constexpr uint32 ELEM_ELEMENTAL_BLAST = WoW120Spells::Shaman::Elemental::ELEMENTAL_BLAST;
|
||||
constexpr uint32 ELEM_ECHOING_SHOCK = WoW120Spells::Shaman::Elemental::ECHOING_SHOCK;
|
||||
constexpr uint32 ELEM_PRIMORDIAL_WAVE = WoW120Spells::Shaman::Elemental::PRIMORDIAL_WAVE;
|
||||
constexpr uint32 ELEM_ASTRAL_SHIFT = WoW120Spells::Shaman::ASTRAL_SHIFT;
|
||||
constexpr uint32 ELEM_EARTH_SHIELD = WoW120Spells::Shaman::Restoration::EARTH_SHIELD;
|
||||
constexpr uint32 ELEM_WIND_SHEAR = WoW120Spells::Shaman::WIND_SHEAR;
|
||||
constexpr uint32 ELEM_CAPACITOR_TOTEM = WoW120Spells::Shaman::CAPACITOR_TOTEM;
|
||||
|
||||
// ManaResource is already defined in CombatSpecializationTemplates.h
|
||||
// No need to redefine it here
|
||||
|
||||
@@ -31,9 +31,9 @@
|
||||
#include "../../Decision/BehaviorTree.h"
|
||||
#include "../BotAI.h"
|
||||
|
||||
// Central Spell Registry - See WoW112Spells::Shaman namespace
|
||||
#include "../SpellValidation_WoW112.h"
|
||||
#include "../SpellValidation_WoW112_Part2.h"
|
||||
// Central Spell Registry - See WoW120Spells::Shaman namespace
|
||||
#include "../SpellValidation_WoW120.h"
|
||||
#include "../SpellValidation_WoW120_Part2.h"
|
||||
|
||||
namespace Playerbot
|
||||
{
|
||||
@@ -50,27 +50,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) - Enhancement Shaman Spell IDs
|
||||
// Using central registry: WoW112Spells::Shaman and WoW112Spells::Shaman::Enhancement
|
||||
constexpr uint32 ENH_STORMSTRIKE = WoW112Spells::Shaman::Enhancement::STORMSTRIKE;
|
||||
constexpr uint32 ENH_LAVA_LASH = WoW112Spells::Shaman::Enhancement::LAVA_LASH;
|
||||
constexpr uint32 ENH_LIGHTNING_BOLT = WoW112Spells::Shaman::LIGHTNING_BOLT;
|
||||
constexpr uint32 ENH_FLAME_SHOCK = WoW112Spells::Shaman::FLAME_SHOCK;
|
||||
constexpr uint32 ENH_FROST_SHOCK = WoW112Spells::Shaman::FROST_SHOCK;
|
||||
constexpr uint32 ENH_CRASH_LIGHTNING = WoW112Spells::Shaman::Enhancement::CRASH_LIGHTNING;
|
||||
constexpr uint32 ENH_SUNDERING = WoW112Spells::Shaman::Enhancement::SUNDERING;
|
||||
constexpr uint32 ENH_FERAL_SPIRIT = WoW112Spells::Shaman::Enhancement::FERAL_SPIRIT;
|
||||
constexpr uint32 ENH_ASCENDANCE = WoW112Spells::Shaman::Enhancement::ASCENDANCE_ENH;
|
||||
constexpr uint32 ENH_WINDFURY_TOTEM = WoW112Spells::Shaman::Enhancement::WINDFURY_TOTEM;
|
||||
constexpr uint32 ENH_WINDSTRIKE = WoW112Spells::Shaman::Enhancement::WINDSTRIKE;
|
||||
constexpr uint32 ENH_ICE_STRIKE = WoW112Spells::Shaman::Enhancement::ICE_STRIKE;
|
||||
constexpr uint32 ENH_FIRE_NOVA = WoW112Spells::Shaman::Enhancement::FIRE_NOVA;
|
||||
constexpr uint32 ENH_ELEMENTAL_BLAST = WoW112Spells::Shaman::Enhancement::ELEMENTAL_BLAST_ENH;
|
||||
constexpr uint32 ENH_LAVA_BURST = WoW112Spells::Shaman::LAVA_BURST;
|
||||
constexpr uint32 ENH_ASTRAL_SHIFT = WoW112Spells::Shaman::ASTRAL_SHIFT;
|
||||
constexpr uint32 ENH_EARTH_SHIELD = WoW112Spells::Shaman::Restoration::EARTH_SHIELD;
|
||||
constexpr uint32 ENH_WIND_SHEAR = WoW112Spells::Shaman::WIND_SHEAR;
|
||||
constexpr uint32 ENH_CAPACITOR_TOTEM = WoW112Spells::Shaman::CAPACITOR_TOTEM;
|
||||
// WoW 12.0 (The War Within) - Enhancement Shaman Spell IDs
|
||||
// Using central registry: WoW120Spells::Shaman and WoW120Spells::Shaman::Enhancement
|
||||
constexpr uint32 ENH_STORMSTRIKE = WoW120Spells::Shaman::Enhancement::STORMSTRIKE;
|
||||
constexpr uint32 ENH_LAVA_LASH = WoW120Spells::Shaman::Enhancement::LAVA_LASH;
|
||||
constexpr uint32 ENH_LIGHTNING_BOLT = WoW120Spells::Shaman::LIGHTNING_BOLT;
|
||||
constexpr uint32 ENH_FLAME_SHOCK = WoW120Spells::Shaman::FLAME_SHOCK;
|
||||
constexpr uint32 ENH_FROST_SHOCK = WoW120Spells::Shaman::FROST_SHOCK;
|
||||
constexpr uint32 ENH_CRASH_LIGHTNING = WoW120Spells::Shaman::Enhancement::CRASH_LIGHTNING;
|
||||
constexpr uint32 ENH_SUNDERING = WoW120Spells::Shaman::Enhancement::SUNDERING;
|
||||
constexpr uint32 ENH_FERAL_SPIRIT = WoW120Spells::Shaman::Enhancement::FERAL_SPIRIT;
|
||||
constexpr uint32 ENH_ASCENDANCE = WoW120Spells::Shaman::Enhancement::ASCENDANCE_ENH;
|
||||
constexpr uint32 ENH_WINDFURY_TOTEM = WoW120Spells::Shaman::Enhancement::WINDFURY_TOTEM;
|
||||
constexpr uint32 ENH_WINDSTRIKE = WoW120Spells::Shaman::Enhancement::WINDSTRIKE;
|
||||
constexpr uint32 ENH_ICE_STRIKE = WoW120Spells::Shaman::Enhancement::ICE_STRIKE;
|
||||
constexpr uint32 ENH_FIRE_NOVA = WoW120Spells::Shaman::Enhancement::FIRE_NOVA;
|
||||
constexpr uint32 ENH_ELEMENTAL_BLAST = WoW120Spells::Shaman::Enhancement::ELEMENTAL_BLAST_ENH;
|
||||
constexpr uint32 ENH_LAVA_BURST = WoW120Spells::Shaman::LAVA_BURST;
|
||||
constexpr uint32 ENH_ASTRAL_SHIFT = WoW120Spells::Shaman::ASTRAL_SHIFT;
|
||||
constexpr uint32 ENH_EARTH_SHIELD = WoW120Spells::Shaman::Restoration::EARTH_SHIELD;
|
||||
constexpr uint32 ENH_WIND_SHEAR = WoW120Spells::Shaman::WIND_SHEAR;
|
||||
constexpr uint32 ENH_CAPACITOR_TOTEM = WoW120Spells::Shaman::CAPACITOR_TOTEM;
|
||||
|
||||
// ManaResource is already defined in CombatSpecializationTemplates.h
|
||||
// No need to redefine it here
|
||||
|
||||
@@ -31,9 +31,9 @@
|
||||
#include "../../Decision/BehaviorTree.h"
|
||||
#include "../BotAI.h"
|
||||
|
||||
// Central Spell Registry - See WoW112Spells::Shaman namespace
|
||||
#include "../SpellValidation_WoW112.h"
|
||||
#include "../SpellValidation_WoW112_Part2.h"
|
||||
// Central Spell Registry - See WoW120Spells::Shaman namespace
|
||||
#include "../SpellValidation_WoW120.h"
|
||||
#include "../SpellValidation_WoW120_Part2.h"
|
||||
|
||||
namespace Playerbot
|
||||
{
|
||||
@@ -50,27 +50,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) - Restoration Shaman Spell IDs
|
||||
// Using central registry: WoW112Spells::Shaman and WoW112Spells::Shaman::Restoration
|
||||
constexpr uint32 REST_HEALING_WAVE = WoW112Spells::Shaman::Restoration::HEALING_WAVE;
|
||||
constexpr uint32 REST_HEALING_SURGE = WoW112Spells::Shaman::Restoration::HEALING_SURGE;
|
||||
constexpr uint32 REST_CHAIN_HEAL = WoW112Spells::Shaman::Restoration::CHAIN_HEAL;
|
||||
constexpr uint32 REST_RIPTIDE = WoW112Spells::Shaman::Restoration::RIPTIDE;
|
||||
constexpr uint32 REST_HEALING_RAIN = WoW112Spells::Shaman::Restoration::HEALING_RAIN;
|
||||
constexpr uint32 REST_WELLSPRING = WoW112Spells::Shaman::Restoration::WELLSPRING;
|
||||
constexpr uint32 REST_HEALING_TIDE_TOTEM = WoW112Spells::Shaman::Restoration::HEALING_TIDE_TOTEM;
|
||||
constexpr uint32 REST_CLOUDBURST_TOTEM = WoW112Spells::Shaman::Restoration::CLOUDBURST_TOTEM;
|
||||
constexpr uint32 REST_SPIRIT_LINK_TOTEM = WoW112Spells::Shaman::Restoration::SPIRIT_LINK_TOTEM;
|
||||
constexpr uint32 REST_EARTHEN_WALL_TOTEM = WoW112Spells::Shaman::Restoration::EARTHEN_WALL_TOTEM;
|
||||
constexpr uint32 REST_ANCESTRAL_PROTECTION_TOTEM = WoW112Spells::Shaman::Restoration::ANCESTRAL_PROTECTION_TOTEM;
|
||||
constexpr uint32 REST_ASCENDANCE = WoW112Spells::Shaman::Restoration::ASCENDANCE_RESTO;
|
||||
constexpr uint32 REST_UNLEASH_LIFE = WoW112Spells::Shaman::Restoration::UNLEASH_LIFE;
|
||||
constexpr uint32 REST_EARTH_SHIELD = WoW112Spells::Shaman::Restoration::EARTH_SHIELD;
|
||||
constexpr uint32 REST_WATER_SHIELD = WoW112Spells::Shaman::Restoration::WATER_SHIELD;
|
||||
constexpr uint32 REST_PURIFY_SPIRIT = WoW112Spells::Shaman::Restoration::PURIFY_SPIRIT;
|
||||
constexpr uint32 REST_SPIRITWALKERS_GRACE = WoW112Spells::Shaman::Restoration::SPIRITWALKERS_GRACE;
|
||||
constexpr uint32 REST_ASTRAL_SHIFT = WoW112Spells::Shaman::ASTRAL_SHIFT;
|
||||
constexpr uint32 REST_WIND_SHEAR = WoW112Spells::Shaman::WIND_SHEAR;
|
||||
// WoW 12.0 (The War Within) - Restoration Shaman Spell IDs
|
||||
// Using central registry: WoW120Spells::Shaman and WoW120Spells::Shaman::Restoration
|
||||
constexpr uint32 REST_HEALING_WAVE = WoW120Spells::Shaman::Restoration::HEALING_WAVE;
|
||||
constexpr uint32 REST_HEALING_SURGE = WoW120Spells::Shaman::Restoration::HEALING_SURGE;
|
||||
constexpr uint32 REST_CHAIN_HEAL = WoW120Spells::Shaman::Restoration::CHAIN_HEAL;
|
||||
constexpr uint32 REST_RIPTIDE = WoW120Spells::Shaman::Restoration::RIPTIDE;
|
||||
constexpr uint32 REST_HEALING_RAIN = WoW120Spells::Shaman::Restoration::HEALING_RAIN;
|
||||
constexpr uint32 REST_WELLSPRING = WoW120Spells::Shaman::Restoration::WELLSPRING;
|
||||
constexpr uint32 REST_HEALING_TIDE_TOTEM = WoW120Spells::Shaman::Restoration::HEALING_TIDE_TOTEM;
|
||||
constexpr uint32 REST_CLOUDBURST_TOTEM = WoW120Spells::Shaman::Restoration::CLOUDBURST_TOTEM;
|
||||
constexpr uint32 REST_SPIRIT_LINK_TOTEM = WoW120Spells::Shaman::Restoration::SPIRIT_LINK_TOTEM;
|
||||
constexpr uint32 REST_EARTHEN_WALL_TOTEM = WoW120Spells::Shaman::Restoration::EARTHEN_WALL_TOTEM;
|
||||
constexpr uint32 REST_ANCESTRAL_PROTECTION_TOTEM = WoW120Spells::Shaman::Restoration::ANCESTRAL_PROTECTION_TOTEM;
|
||||
constexpr uint32 REST_ASCENDANCE = WoW120Spells::Shaman::Restoration::ASCENDANCE_RESTO;
|
||||
constexpr uint32 REST_UNLEASH_LIFE = WoW120Spells::Shaman::Restoration::UNLEASH_LIFE;
|
||||
constexpr uint32 REST_EARTH_SHIELD = WoW120Spells::Shaman::Restoration::EARTH_SHIELD;
|
||||
constexpr uint32 REST_WATER_SHIELD = WoW120Spells::Shaman::Restoration::WATER_SHIELD;
|
||||
constexpr uint32 REST_PURIFY_SPIRIT = WoW120Spells::Shaman::Restoration::PURIFY_SPIRIT;
|
||||
constexpr uint32 REST_SPIRITWALKERS_GRACE = WoW120Spells::Shaman::Restoration::SPIRITWALKERS_GRACE;
|
||||
constexpr uint32 REST_ASTRAL_SHIFT = WoW120Spells::Shaman::ASTRAL_SHIFT;
|
||||
constexpr uint32 REST_WIND_SHEAR = WoW120Spells::Shaman::WIND_SHEAR;
|
||||
|
||||
// ManaResource is already defined in CombatSpecializationTemplates.h
|
||||
// No need to redefine it here
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
#include "RestorationShaman.h"
|
||||
#include "../BaselineRotationManager.h"
|
||||
#include "../../Combat/CombatBehaviorIntegration.h"
|
||||
#include "../SpellValidation_WoW112_Part2.h" // Central spell registry
|
||||
#include "../SpellValidation_WoW120_Part2.h" // Central spell registry
|
||||
#include "Player.h"
|
||||
#include "Unit.h"
|
||||
#include "Creature.h"
|
||||
@@ -39,20 +39,20 @@ namespace Playerbot
|
||||
{
|
||||
|
||||
// ============================================================================
|
||||
// WoW 11.2 SPELL ID ALIASES - Using Central Registry
|
||||
// WoW 12.0 SPELL ID ALIASES - Using Central Registry
|
||||
// ============================================================================
|
||||
// Import from SpellValidation_WoW112_Part2.h to avoid hardcoded values
|
||||
// Import from SpellValidation_WoW120_Part2.h to avoid hardcoded values
|
||||
|
||||
namespace ShamanSpells = WoW112Spells::Shaman;
|
||||
namespace ShamanElemental = WoW112Spells::Shaman::Elemental;
|
||||
namespace ShamanEnhancement = WoW112Spells::Shaman::Enhancement;
|
||||
namespace ShamanRestoration = WoW112Spells::Shaman::Restoration;
|
||||
namespace ShamanCommon = WoW112Spells::Shaman::Common;
|
||||
namespace ShamanSpells = WoW120Spells::Shaman;
|
||||
namespace ShamanElemental = WoW120Spells::Shaman::Elemental;
|
||||
namespace ShamanEnhancement = WoW120Spells::Shaman::Enhancement;
|
||||
namespace ShamanRestoration = WoW120Spells::Shaman::Restoration;
|
||||
namespace ShamanCommon = WoW120Spells::Shaman::Common;
|
||||
|
||||
// Totem spell definitions - WoW 11.2 (many totems removed/consolidated)
|
||||
// Totem spell definitions - WoW 12.0 (many totems removed/consolidated)
|
||||
enum TotemSpells : uint32
|
||||
{
|
||||
// Active totems in WoW 11.2
|
||||
// Active totems in WoW 12.0
|
||||
SPELL_EARTHBIND_TOTEM = ShamanCommon::EARTHBIND_TOTEM, // 2484
|
||||
SPELL_TREMOR_TOTEM = ShamanCommon::TREMOR_TOTEM, // 8143
|
||||
SPELL_HEALING_STREAM_TOTEM = ShamanCommon::HEALING_STREAM_TOTEM, // 5394
|
||||
@@ -71,7 +71,7 @@ enum TotemSpells : uint32
|
||||
SPELL_CLOUDBURST_TOTEM = ShamanRestoration::CLOUDBURST_TOTEM, // 157153
|
||||
SPELL_MANA_TIDE_TOTEM = ShamanRestoration::MANA_TIDE_TOTEM, // 16191
|
||||
|
||||
// Legacy totems removed in WoW 11.2 (kept as 0 for compatibility checks)
|
||||
// Legacy totems removed in WoW 12.0 (kept as 0 for compatibility checks)
|
||||
SPELL_SEARING_TOTEM = 0, // Removed
|
||||
SPELL_FIRE_NOVA_TOTEM = 0, // Removed
|
||||
SPELL_MAGMA_TOTEM = 0, // Removed
|
||||
@@ -94,7 +94,7 @@ enum TotemSpells : uint32
|
||||
SPELL_SENTRY_TOTEM = 0 // Removed
|
||||
};
|
||||
|
||||
// Shock spell definitions - WoW 11.2
|
||||
// Shock spell definitions - WoW 12.0
|
||||
enum ShockSpells : uint32
|
||||
{
|
||||
SPELL_EARTH_SHOCK = ShamanCommon::EARTH_SHOCK, // 8042
|
||||
@@ -103,7 +103,7 @@ enum ShockSpells : uint32
|
||||
SPELL_WIND_SHEAR = ShamanCommon::WIND_SHEAR // 57994 - Interrupt
|
||||
};
|
||||
|
||||
// Shield spell definitions - WoW 11.2
|
||||
// Shield spell definitions - WoW 12.0
|
||||
enum ShieldSpells : uint32
|
||||
{
|
||||
SPELL_WATER_SHIELD = ShamanRestoration::WATER_SHIELD, // 52127
|
||||
@@ -112,19 +112,19 @@ enum ShieldSpells : uint32
|
||||
SPELL_LIGHTNING_SHIELD = 0 // Removed/reworked
|
||||
};
|
||||
|
||||
// Weapon imbue spell definitions - WoW 11.2
|
||||
// Weapon imbue spell definitions - WoW 12.0
|
||||
enum WeaponImbues : uint32
|
||||
{
|
||||
SPELL_FLAMETONGUE_WEAPON = ShamanCommon::FLAMETONGUE_WEAPON, // 318038 (updated ID)
|
||||
SPELL_WINDFURY_WEAPON = ShamanCommon::WINDFURY_WEAPON, // 33757
|
||||
|
||||
// Legacy weapon imbues removed in WoW 11.2
|
||||
// Legacy weapon imbues removed in WoW 12.0
|
||||
SPELL_ROCKBITER_WEAPON = 0, // Removed
|
||||
SPELL_FROSTBRAND_WEAPON = 0, // Removed
|
||||
SPELL_EARTHLIVING_WEAPON = 0 // Removed
|
||||
};
|
||||
|
||||
// Utility spell definitions - WoW 11.2
|
||||
// Utility spell definitions - WoW 12.0
|
||||
enum UtilitySpells : uint32
|
||||
{
|
||||
SPELL_PURGE = ShamanCommon::PURGE, // 370
|
||||
@@ -146,7 +146,7 @@ enum UtilitySpells : uint32
|
||||
SPELL_SHAMANISTIC_RAGE = 0 // Removed (was Enhancement defensive)
|
||||
};
|
||||
|
||||
// Healing spell definitions - WoW 11.2
|
||||
// Healing spell definitions - WoW 12.0
|
||||
enum HealingSpells : uint32
|
||||
{
|
||||
SPELL_HEALING_WAVE = ShamanCommon::HEALING_WAVE, // 77472 (updated ID)
|
||||
@@ -167,7 +167,7 @@ enum HealingSpells : uint32
|
||||
SPELL_SPIRIT_LINK = 0 // Now Spirit Link Totem only
|
||||
};
|
||||
|
||||
// Damage spell definitions - WoW 11.2
|
||||
// Damage spell definitions - WoW 12.0
|
||||
enum DamageSpells : uint32
|
||||
{
|
||||
SPELL_LIGHTNING_BOLT = ShamanCommon::LIGHTNING_BOLT, // 188196 (updated ID)
|
||||
@@ -179,7 +179,7 @@ enum DamageSpells : uint32
|
||||
SPELL_THUNDERSTORM = 0 // 51490 - Removed/reworked in 11.2
|
||||
};
|
||||
|
||||
// Enhancement-specific spells - WoW 11.2
|
||||
// Enhancement-specific spells - WoW 12.0
|
||||
enum EnhancementSpells : uint32
|
||||
{
|
||||
SPELL_STORMSTRIKE = ShamanCommon::STORMSTRIKE, // 17364
|
||||
@@ -194,7 +194,7 @@ enum EnhancementSpells : uint32
|
||||
SPELL_MAELSTROM_WEAPON = ShamanEnhancement::MAELSTROM_WEAPON // 187880
|
||||
};
|
||||
|
||||
// Elemental-specific spells - WoW 11.2
|
||||
// Elemental-specific spells - WoW 12.0
|
||||
enum ElementalSpells : uint32
|
||||
{
|
||||
SPELL_ASCENDANCE = ShamanCommon::ASCENDANCE, // 114050
|
||||
@@ -209,7 +209,7 @@ enum ElementalSpells : uint32
|
||||
SPELL_ELEMENTAL_MASTERY = 0 // Removed/reworked in 11.2
|
||||
};
|
||||
|
||||
// Talent IDs for specialization detection - WoW 11.2
|
||||
// Talent IDs for specialization detection - WoW 12.0
|
||||
// Note: Talent detection in 11.2 uses different systems; these are kept for compatibility
|
||||
enum ShamanTalents : uint32
|
||||
{
|
||||
|
||||
+11
-11
@@ -1,9 +1,9 @@
|
||||
/*
|
||||
* Copyright (C) 2024 TrinityCore <https://www.trinitycore.org/>
|
||||
*
|
||||
* 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
|
||||
+9
-9
@@ -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
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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<uint32>(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)
|
||||
{
|
||||
|
||||
@@ -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<RageResource> 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<RageResource>
|
||||
{
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/*
|
||||
* Copyright (C) 2024 TrinityCore <https://www.trinitycore.org/>
|
||||
*
|
||||
* WoW 11.2 Interrupt Database Implementation
|
||||
* WoW 12.0 Interrupt Database Implementation
|
||||
*/
|
||||
|
||||
#include "InterruptDatabase.h"
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/*
|
||||
* Copyright (C) 2024 TrinityCore <https://www.trinitycore.org/>
|
||||
*
|
||||
* 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;
|
||||
|
||||
@@ -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<InterruptType> 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<Player*>& 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<InterruptTarget> _trackedTargets;
|
||||
::std::vector<InterruptCapability> _interruptCapabilities;
|
||||
|
||||
// WoW 11.2 specific tracking
|
||||
// WoW 12.0 specific tracking
|
||||
::std::unordered_map<uint32, uint32> _schoolLockouts; // School mask -> expiry time
|
||||
::std::unordered_map<ObjectGuid, uint32> _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<Playerbot::LockOrder::BOT_AI_STATE> _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
|
||||
|
||||
@@ -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
|
||||
@@ -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();
|
||||
|
||||
@@ -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<Classes, ::std::vector<uint32>> _classAbilities;
|
||||
};
|
||||
|
||||
// WoW 11.2 Spell IDs for threat abilities
|
||||
// WoW 12.0 Spell IDs for threat abilities
|
||||
namespace ThreatSpells
|
||||
{
|
||||
// === WARRIOR ===
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
{
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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.
|
||||
*/
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
*
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
@@ -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
|
||||
{
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
{
|
||||
|
||||
@@ -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<Races>(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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -1622,7 +1622,7 @@ std::vector<uint8> BotTemplateRepository::GetValidRaces(uint8 playerClass, Facti
|
||||
{
|
||||
std::vector<uint8> 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
|
||||
|
||||
@@ -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<AuraDataInfo>)
|
||||
// - SpellID → AuraData->SpellID (nested in AuraDataInfo)
|
||||
|
||||
|
||||
@@ -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<WorldPackets::CombatLog::SpellInterruptLog>(&ParseTypedSpellInterrupt);
|
||||
PlayerbotPacketSniffer::RegisterTypedHandler<WorldPackets::CombatLog::SpellDispellLog>(&ParseTypedSpellDispel);
|
||||
PlayerbotPacketSniffer::RegisterTypedHandler<WorldPackets::Combat::AttackStart>(&ParseTypedAttackStart);
|
||||
PlayerbotPacketSniffer::RegisterTypedHandler<WorldPackets::Combat::SAttackStop>(&ParseTypedAttackStop); // WoW 11.2: SAttackStop is server packet
|
||||
PlayerbotPacketSniffer::RegisterTypedHandler<WorldPackets::Combat::SAttackStop>(&ParseTypedAttackStop); // WoW 12.0: SAttackStop is server packet
|
||||
PlayerbotPacketSniffer::RegisterTypedHandler<WorldPackets::Combat::AIReaction>(&ParseTypedAIReaction);
|
||||
|
||||
TC_LOG_INFO("playerbot", "PlayerbotPacketSniffer: Registered {} Combat packet typed handlers", 10);
|
||||
|
||||
@@ -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<uint32>(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;
|
||||
|
||||
@@ -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<uint32>(Milliseconds(packet.Duration).count()); // Duration in milliseconds (WoW 11.2 API)
|
||||
event.data1 = static_cast<uint32>(Milliseconds(packet.Duration).count()); // Duration in milliseconds (WoW 12.0 API)
|
||||
event.data2 = static_cast<uint32>(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
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user