Jump to content

About This File

set line 221 according to how NPCs behave on your server.
etc.:
// Ideal melee position (2-4 yards)
bool inMeleeRange = distanceToTarget >= 5f && distanceToTarget <= 6f;


Advanced Feral Tank – FightClass Documentation

Overview

The Advanced Feral Tank FightClass is designed for Feral Druids in Bear Form to tank effectively in WoW 3.3.5 using WRobot. It automates:

  • Buff management (self and party)

  • Threat generation and taunting

  • Single-target and AoE tanking rotations

  • Emergency defensive cooldowns

  • Rage management

The class runs in a dedicated background thread, executing the rotation every 150 ms when in-game, alive, and not mounted.

 

Main Components

1. Main Class

Implements ICustomClass:

  • Initialize() – Creates the rotation handler, starts the rotation thread, logs initialization.

  • RunRotation() – Loop that calls PulseRotation() if conditions are met.

  • Dispose() – Stops the rotation thread and cleans up.

  • Range – Fixed at 5 yards (melee range).

  • ShowConfiguration() – Currently empty.

 

2. FeralDruidTankRotation

Handles all combat and out-of-combat logic.

Key Spell Constants

  • Forms: Bear Form, Dire Bear Form

  • Threat/Damage: Mangle (Bear), Lacerate, Swipe (Bear), Faerie Fire (Feral)

  • Debuffs: Demoralizing Roar

  • Taunt: Growl

  • Defensive CDs: Survival Instincts, Frenzied Regeneration, Barkskin

  • Utility: Enrage

  • Buffs: Mark of the Wild, Gift of the Wild, Thorns

 

Rotation Logic

Out of Combat

  • BuffPartyMembers():

    • Applies Gift of the Wild or Mark of the Wild to unbuffed party members.

    • Applies Thorns to tanking players.

    • Buff checks occur every 5 seconds.

In Combat

  1. EnsureBearForm() – Shifts into Dire Bear Form or Bear Form if not already active.

  2. HandleEmergency() – Uses defensive cooldowns based on health thresholds:

    • ≤ 30% HP → Survival Instincts

    • ≤ 50% HP → Frenzied Regeneration

    • ≤ 60% HP → Barkskin

    • Low rage & high HP → Enrage

  3. HandleThreatManagement() – Every 1 s:

    • Scans for hostile mobs attacking party members.

    • Uses Growl to taunt.

    • Applies Faerie Fire (Feral) if missing.

  4. ExecuteMainRotation():

    • Counts nearby enemies (≤ 8 yards).

    • AoE Rotation (≥ 3 enemies):

      • Demoralizing Roar if missing

      • Mangle (Bear)

      • Swipe (Bear)

      • Lacerate

    • Single Target Rotation (< 3 enemies):

      • Faerie Fire (Feral) if missing

      • Demoralizing Roar if missing

      • Mangle (Bear)

      • Maintain 5 stacks of Lacerate (refresh if < 5 stacks or < 3 s remaining)

      • Swipe (Bear) as filler

      • Auto-attack if idle

 

Utility Functions

  • HasBuff() / HasBuffOnUnit() – Checks buffs on player or unit.

  • HasDebuffOnTarget() – Checks debuffs on target.

  • GetDebuffStacks() / GetDebuffTimeLeft() – Tracks Lacerate stacks and duration.

  • GetPartyMembers() – Retrieves player and party members.

  • IsPlayerTank() – Detects if a party member is a tank (class/form check).

  • GetUnitId() – Resolves WoW unit IDs for Lua API calls.

 

Timers

Custom Timer class prevents excessive checks:

  • threatCheckTimer – 1 s interval

  • buffCheckTimer – 5 s interval

  • emergencyTimer – 0.5 s interval

 

Key Features

  • Automatic form shifting into Bear/Dire Bear.

  • Party support with buffs and Thorns for tanks.

  • Smart threat control with taunts and debuffs.

  • Adaptive rotation for single-target and AoE.

  • Emergency survival logic with cooldown prioritization.

  • Rage management via Enrage when safe.

 

Intended Use

  • Class: Druid (Feral Tank)

  • Game Version: WoW 3.3.5 (Wrath of the Lich King)

  • Bot Framework: WRobot

  • Role: Main tank in dungeons/raids or off-tank in groups.


What's New in Version 1.0.39   See changelog

Released

How it works:

  1. On enemy kill → ClearDeadTarget() immediately stops all movement

  2. Out of combat → HandleOptimizedMovementLogic() stops movement

  3. Without a target → Movement stops and does not restart

  4. State check → Before each movement, the validity of the situation is checked

This should fix the issue with constant backpedaling. The character will now only move when:

  • In combat

  • Has a live target

  • There are enemies attacking it

  • Needs to adjust position

Main changes:

  1. New method ResetCameraPosition()

    • Stops all rotational movements

    • Uses SetView(4) to reset to rear view

    • Calls CameraOrSelectOrMoveStop() for a full reset

    • Works only out of combat (due to InCombatLockdown())

  2. Improved ResetCombatState()

    • Automatically calls ResetCameraPosition() at the end of combat

    • Reset is always performed when combat ends

  3. Adjustment in PulseRotation()

    • Explicitly stops movement out of combat

    • Ensures the camera resets correctly

  4. Improved TurnTowardsTarget()

    • Shorter turning time (faster reaction)

    • Smaller maximum turning time (300ms instead of 500ms)

  5. Adjustment in StopCurrentMovement()

    • After stopping rotation, calls CameraOrSelectOrMoveStop()

    • Small pause for camera stabilization

How it works:

  1. During combat → Normal turning for tanking

  2. End of combat → ResetCombatState()ResetCameraPosition()

  3. After each turn → Small camera reset for stabilization

  4. Out of combat → Camera auto-centers

This should fix the issue with a misaligned camera after combat. The camera will now automatically:

  • Reset after each combat

  • Stabilize after turning

  • Center when not in combat

 

Added Bash interrupt system to rotation:

New features:

  1. New method HandleInterruptWithBash()

    • Scans all enemies within 5 yards

    • Detects casting enemies

    • Prioritizes by cast type (heals, CC, damage)

    • Automatically switches target if an interrupt is needed

  2. Method CalculateInterruptPriority() Determines interrupt priority based on:

    • Highest priority (150+): Heal casts (Heal, Restoration, Rejuvenation, Regrowth)

    • High priority (120+): CC casts (Fear, Polymorph, Cyclone, Hex)

    • Medium priority (100+): Damage casts (Pyroblast, Chain Lightning, Chaos Bolt)

    • Bonuses:

      • +50 if the cast is aimed at you

      • +80 if the cast is aimed at a party member with low HP

      • +30 for elite/boss mobs

  3. Method GetEnemyCastInfo()

    • Retrieves cast name via Lua

    • Checks both normal casts and channeled spells

    • Safe error handling

  4. Integration into rotation

    • Bash has priority right after threat management

    • In single-target rotation, Bash is first priority if the target is casting

    • In AoE situations, a separate interrupt system is used

How it works:

  1. Automatic detection: System constantly scans for casting enemies

  2. Intelligent prioritization: Interrupts the most dangerous casts first

  3. Multi-target support: Can switch target to interrupt and then return

  4. Range check: Bash is only used if the enemy is within 5 yards

Usage:

  • In single target: Automatically interrupts your current target

  • In multi-target: Finds and interrupts the most important cast in range

  • Threat + Interrupt: Prioritizes enemies casting on party members

Bash will now automatically be used on:

  • Healers when casting

  • Casters using CC

  • Large damage casts

  • Any cast threatening party members


User Feedback

You may only provide a review once you have downloaded the file.

There are no reviews to display.

×
×
  • Create New...