# TrinityCore PlayerBot - Combat Implementation Plan ## Enterprise-Grade Combat Behavior System **Date**: 2025-10-07 **Status**: 🚀 **READY TO IMPLEMENT** **Target**: Complete, production-ready combat AI for 5000+ concurrent bots --- ## Executive Summary Based on comprehensive analysis by 3 specialized agents (wow-mechanics-expert, cpp-architecture-optimizer, wow-bot-behavior-designer), we have identified what EXISTS in the combat system and what's MISSING. This plan implements the missing components to achieve enterprise-grade combat behavior. ### What We Found **✅ EXISTING (Already Working)**: - 119 ClassAI implementations with complete rotations - Polling-based combat updates (100ms, <0.1ms decision time) - Target selection system with role awareness - Threat management with multi-target tracking - Basic interrupt framework - Combat movement strategy with positioning - Resource management per class - Cooldown tracking system **❌ MISSING (Need Implementation)**: - Defensive cooldown automation (no centralized manager) - Dispel/Purge priority system (no coordination) - AoE decision making (no intelligent switching) - Advanced positioning (no mechanic prediction) - Group coordination utilities (no synchronized actions) ### Key Architectural Decision **COMBAT STAYS POLLING-BASED** - We do NOT add Manager Event Handlers to combat. **Why?**: - Combat needs <1ms reaction time; events add 100-300ms latency - ClassAI inherits from BotAI (core AI), not BehaviorManager - Combat state changes constantly (would fire hundreds of events/second) - Current polling architecture works perfectly **What We're Building**: Utility managers that ClassAI can call directly during OnCombatUpdate(). --- ## Implementation Phases ### PHASE 1: Core Combat Utilities (Week 1 - Priority P0) **Goal**: Implement missing coordination utilities that all ClassAI implementations can use. #### 1.1 DefensiveBehaviorManager **File**: `src/modules/Playerbot/AI/CombatBehaviors/DefensiveBehaviorManager.h/cpp` **Status**: Header created (400 lines), needs .cpp implementation **Lines**: ~800 lines implementation **Features**: - Health threshold tracking (role-specific) - Incoming DPS calculation (3-second rolling window) - Defensive priority evaluation (5 levels) - Cooldown tier system (Immunity → Regeneration) - External defensive coordination (Pain Suppression, etc.) - Consumables management (potions, healthstones) **Performance**: <0.02ms per update **Integration**: Called from ClassAI::OnCombatUpdate() ```cpp void WarriorAI::OnCombatUpdate(uint32 diff) { if (_defensiveManager->NeedsDefensive()) { if (uint32 spell = _defensiveManager->SelectDefensive()) { CastSpell(spell); return; } } // ... continue rotation } ``` #### 1.2 InterruptRotationManager **File**: `src/modules/Playerbot/AI/CombatBehaviors/InterruptRotationManager.h/cpp` **Status**: Header created (350 lines), needs .cpp implementation **Lines**: ~700 lines implementation **Features**: - Global interrupt spell database (priority 1-5) - Rotation queue for fairness - Delayed scheduling (wait for CD) - Fallback strategies (Stun → Silence → LOS → Defensive) - Group coordination (one interrupt per cast) **Performance**: <0.01ms per cast evaluation **Integration**: Event-driven from spell cast detection ```cpp void OnEnemySpellCast(Unit* caster, uint32 spellId) { ObjectGuid interrupter = _interruptManager->SelectInterrupter(caster, spellId); if (interrupter == GetBotGuid()) { ExecuteInterrupt(caster); } } ``` #### 1.3 DispelCoordinator **File**: `src/modules/Playerbot/AI/CombatBehaviors/DispelCoordinator.h/cpp` **Status**: Design complete, needs full implementation **Lines**: ~600 lines total **Features**: - Debuff priority matrix (Death → Trivial) - Dynamic priority adjustment (role, health, spread mechanics) - Dispeller assignment (best available by mana, range, CD) - Purge system (immunity > enrage > major buffs) **Performance**: <0.012ms per check --- ### PHASE 2: Advanced Combat Logic (Week 2 - Priority P0) #### 2.1 AoEDecisionManager **File**: `src/modules/Playerbot/AI/CombatBehaviors/AoEDecisionManager.h/cpp` **Status**: New component, full implementation needed **Lines**: ~500 lines total **Features**: - Enemy clustering detection (spatial partitioning) - AoE breakpoint calculation (2/3/5/8+ targets) - Resource efficiency scoring (AoE vs single-target DPS) - Cleave positioning optimization - DoT spread prioritization **Performance**: <0.015ms per evaluation **Integration**: ```cpp bool WarriorAI::ShouldUseWhirlwind() { return _aoeManager->GetOptimalStrategy() == AoEStrategy::FULL_AOE && _aoeManager->GetTargetCount() >= 3; } ``` #### 2.2 CooldownStackingOptimizer **File**: `src/modules/Playerbot/AI/CombatBehaviors/CooldownStackingOptimizer.h/cpp` **Status**: Design complete, needs implementation **Lines**: ~700 lines total **Features**: - Boss phase detection (Normal/Burn/Defensive/Add/Transition/Execute) - Cooldown stacking windows (calculate multiplicative buffs) - Phase-based reservation (save for burn phases) - Bloodlust alignment - Diminishing returns calculation **Performance**: <0.018ms per evaluation --- ### PHASE 3: Combat Intelligence (Week 3 - Priority P1) #### 3.1 CombatStateAnalyzer **File**: `src/modules/Playerbot/AI/CombatBehaviors/CombatStateAnalyzer.h/cpp` **Status**: Design complete, needs implementation **Lines**: ~800 lines total **Features**: - Combat situation detection (10 types: Normal, AoE Heavy, Burst Needed, etc.) - Combat metrics tracking (group DPS, incoming DPS, health, resources) - Historical analysis (last 10 updates) - Emergency detection (tank dead, healer dead, wipe imminent) **Performance**: <0.030ms per analysis #### 3.2 AdaptiveBehaviorManager **File**: `src/modules/Playerbot/AI/CombatBehaviors/AdaptiveBehaviorManager.h/cpp` **Status**: Design complete, needs implementation **Lines**: ~600 lines total **Features**: - Behavior profile system (conditions + actions) - Automatic strategy switching - Group composition adaptation (no tank/healer handling) - Dynamic role assignment **Performance**: <0.015ms per update --- ### PHASE 4: Integration & Testing (Week 4) #### 4.1 Integration Layer **File**: `src/modules/Playerbot/AI/CombatBehaviors/CombatBehaviorIntegration.h/cpp` **Lines**: ~400 lines total **Purpose**: Provide easy integration point for ClassAI implementations. ```cpp class EnhancedCombatAI : public ClassAI { protected: std::unique_ptr _combatBehaviors; public: void OnCombatUpdate(uint32 diff) override { // Update all behaviors _combatBehaviors->Update(diff); // Check for high-priority actions if (_combatBehaviors->HandleEmergencies()) return; // Standard rotation UpdateRotation(GetTargetUnit()); } }; ``` #### 4.2 CMakeLists.txt Updates **File**: `src/modules/Playerbot/CMakeLists.txt` Add new combat behavior files: ```cmake # Combat Behaviors (Phase 4: Complete Combat System) ${CMAKE_CURRENT_SOURCE_DIR}/AI/CombatBehaviors/DefensiveBehaviorManager.cpp ${CMAKE_CURRENT_SOURCE_DIR}/AI/CombatBehaviors/DefensiveBehaviorManager.h ${CMAKE_CURRENT_SOURCE_DIR}/AI/CombatBehaviors/InterruptRotationManager.cpp ${CMAKE_CURRENT_SOURCE_DIR}/AI/CombatBehaviors/InterruptRotationManager.h ${CMAKE_CURRENT_SOURCE_DIR}/AI/CombatBehaviors/DispelCoordinator.cpp ${CMAKE_CURRENT_SOURCE_DIR}/AI/CombatBehaviors/DispelCoordinator.h ${CMAKE_CURRENT_SOURCE_DIR}/AI/CombatBehaviors/AoEDecisionManager.cpp ${CMAKE_CURRENT_SOURCE_DIR}/AI/CombatBehaviors/AoEDecisionManager.h ${CMAKE_CURRENT_SOURCE_DIR}/AI/CombatBehaviors/CooldownStackingOptimizer.cpp ${CMAKE_CURRENT_SOURCE_DIR}/AI/CombatBehaviors/CooldownStackingOptimizer.h ${CMAKE_CURRENT_SOURCE_DIR}/AI/CombatBehaviors/CombatStateAnalyzer.cpp ${CMAKE_CURRENT_SOURCE_DIR}/AI/CombatBehaviors/CombatStateAnalyzer.h ${CMAKE_CURRENT_SOURCE_DIR}/AI/CombatBehaviors/AdaptiveBehaviorManager.cpp ${CMAKE_CURRENT_SOURCE_DIR}/AI/CombatBehaviors/AdaptiveBehaviorManager.h ${CMAKE_CURRENT_SOURCE_DIR}/AI/CombatBehaviors/CombatBehaviorIntegration.cpp ${CMAKE_CURRENT_SOURCE_DIR}/AI/CombatBehaviors/CombatBehaviorIntegration.h ``` #### 4.3 Testing Plan 1. **Unit Tests** (per component): - Defensive priority calculation - Interrupt assignment fairness - Dispel coordination - AoE breakpoint detection - Cooldown stacking math 2. **Integration Tests**: - 5-man dungeon simulation - Boss encounter with mechanics - Group coordination scenarios - Edge cases (no tank, no healer) 3. **Performance Tests**: - 100 bots in combat simultaneously - CPU profiling per component - Memory leak detection - Scalability to 5000 bots --- ## File Structure ``` src/modules/Playerbot/AI/CombatBehaviors/ ├── DefensiveBehaviorManager.h (400 lines - EXISTS) ├── DefensiveBehaviorManager.cpp (800 lines - TODO) ├── InterruptRotationManager.h (350 lines - EXISTS) ├── InterruptRotationManager.cpp (700 lines - TODO) ├── DispelCoordinator.h (350 lines - TODO) ├── DispelCoordinator.cpp (600 lines - TODO) ├── AoEDecisionManager.h (300 lines - TODO) ├── AoEDecisionManager.cpp (500 lines - TODO) ├── CooldownStackingOptimizer.h (350 lines - TODO) ├── CooldownStackingOptimizer.cpp (700 lines - TODO) ├── CombatStateAnalyzer.h (400 lines - TODO) ├── CombatStateAnalyzer.cpp (800 lines - TODO) ├── AdaptiveBehaviorManager.h (300 lines - TODO) ├── AdaptiveBehaviorManager.cpp (600 lines - TODO) ├── CombatBehaviorIntegration.h (200 lines - TODO) ├── CombatBehaviorIntegration.cpp (400 lines - TODO) └── COMBAT_BEHAVIOR_DESIGN.md (1750 lines - EXISTS) ``` **Total New Code**: ~8,600 lines **Existing Design Docs**: 3 comprehensive markdown files --- ## Performance Budget **Per-Bot Combat Update** (100ms frequency): ``` Component Time % of Budget ────────────────────────────────────────────────────── DefensiveBehaviorManager 20Ξs 20% InterruptRotationManager 8Ξs 8% DispelCoordinator 12Ξs 12% AoEDecisionManager 15Ξs 15% CooldownStackingOptimizer 18Ξs 18% CombatStateAnalyzer 30Ξs 30% AdaptiveBehaviorManager 15Ξs 15% ────────────────────────────────────────────────────── TOTAL 118Ξs 118% ``` **Performance Optimization Needed**: 18% over budget (18Ξs) **Optimization Strategies**: 1. Cache-friendly access patterns 2. Lazy evaluation for expensive checks 3. Batch processing for similar operations 4. Early exit conditions 5. Update frequency tiering (some checks every 200ms instead of 100ms) **After Optimization**: Target 85Ξs total (<0.1ms) --- ## Memory Budget **Per-Bot Memory Addition**: ``` Component Memory ──────────────────────────────────────── DefensiveState ~500 bytes DamageHistory (30 entries) ~1 KB InterrupterTracking ~800 bytes DispelCoordination ~1 KB AoEDecision ~600 bytes CooldownOptimizer ~1.5 KB CombatMetrics (10 history) ~2 KB AdaptiveBehavior ~800 bytes ──────────────────────────────────────── TOTAL ~8.2 KB ``` **Acceptable**: Well within 10MB per-bot budget --- ## Claude.md Compliance Checklist **✅ File Modification Hierarchy**: - [ ] Module-only implementation (preferred) - [ ] All files in `src/modules/Playerbot/` - [ ] No core file modifications - [ ] Zero TrinityCore refactoring **✅ No Shortcuts**: - [ ] Complete implementations (no TODOs) - [ ] Full error handling - [ ] Comprehensive edge case coverage - [ ] Production-ready code quality **✅ Performance Requirements**: - [ ] <0.1% CPU per bot target - [ ] <10MB memory per bot - [ ] Thread-safe operations - [ ] Tested at scale (5000 bots) **✅ Quality Requirements**: - [ ] TrinityCore API usage validated - [ ] Coding standards compliance - [ ] Comprehensive documentation - [ ] Unit tests for all components --- ## Implementation Sequence ### Week 1 (P0 - Critical Combat Utilities) **Day 1-2**: DefensiveBehaviorManager.cpp (800 lines) **Day 3-4**: InterruptRotationManager.cpp (700 lines) **Day 5**: DispelCoordinator.h/cpp (950 lines) ### Week 2 (P0 - Advanced Combat Logic) **Day 1-2**: AoEDecisionManager.h/cpp (800 lines) **Day 3-4**: CooldownStackingOptimizer.h/cpp (1050 lines) **Day 5**: Testing and bugfixes ### Week 3 (P1 - Combat Intelligence) **Day 1-2**: CombatStateAnalyzer.h/cpp (1200 lines) **Day 3-4**: AdaptiveBehaviorManager.h/cpp (900 lines) **Day 5**: Integration layer (600 lines) ### Week 4 (Integration & Testing) **Day 1**: CMakeLists.txt updates, compilation **Day 2**: Unit tests **Day 3**: Integration tests **Day 4**: Performance profiling and optimization **Day 5**: Documentation and commit --- ## Success Metrics **Technical**: - ✅ Clean compilation with zero errors - ✅ All unit tests passing - ✅ <0.1ms per-bot decision time - ✅ Linear scaling to 5000 bots - ✅ Zero memory leaks **Quality**: - ✅ 80% of human player combat effectiveness - ✅ <200ms reaction time to threats - ✅ 90% interrupt success rate - ✅ 70% reduction in unnecessary deaths - ✅ Coordinated group actions **Integration**: - ✅ Zero ClassAI implementations broken - ✅ Backward compatible with existing code - ✅ Optional usage (bots work without new features) - ✅ Clean separation of concerns --- ## Next Steps **IMMEDIATE** (Now): 1. Create CombatBehaviors directory 2. Implement DefensiveBehaviorManager.cpp 3. Implement InterruptRotationManager.cpp 4. Test compilation 5. Commit Phase 1 **This plan is READY TO EXECUTE**. All analysis complete, designs finalized, headers created. Time to implement! --- ## Related Documentation - `WOW_112_BOT_COMBAT_REQUIREMENTS.md` - WoW 11.2 combat requirements (579 lines) - `COMBAT_ARCHITECTURE_ANALYSIS.md` - Architecture analysis (407 lines) - `COMBAT_BEHAVIOR_DESIGN.md` - Complete behavior designs (1760 lines) - `DefensiveBehaviorManager.h` - Defensive system header (398 lines) - `InterruptRotationManager.h` - Interrupt system header (422 lines) **Total Documentation**: 3,566 lines of comprehensive design and analysis --- **Status**: 📋 **PLAN COMPLETE - READY TO IMPLEMENT** **Next Action**: Create DefensiveBehaviorManager.cpp **Estimated Completion**: 4 weeks for full combat behavior system