147 lines
8.4 KiB
Markdown
147 lines
8.4 KiB
Markdown
# AdventureBot class combat and player instance groups
|
|
|
|
Implementation target: Cataclysm 4.3.4. DungeonBot CreatureAI remains independent.
|
|
|
|
## Shared class behavior
|
|
|
|
AdventureRotationPolicy supplies deterministic PvE priorities for the supported
|
|
specializations. AdventureTalentPolicy supplies one canonical 41-point template
|
|
per specialization (separate bear/cat templates). At lower levels native talent
|
|
point, tier and prerequisite checks select the attainable prefix. The same
|
|
class/spec/level uses the same rules; personality does not randomly select spells.
|
|
Native player casts enforce ranks, cooldowns, resources, equipment, line of sight,
|
|
range, procs, combo points and holy power. Successful casts use COMBAT_CAST logs.
|
|
|
|
Each generated profile stores identity.solo_specialization alongside the existing
|
|
group specialization and role. Older v2 profiles derive the same stable choice
|
|
from their persisted seed. Solo choices are Arms/Fury, Retribution,
|
|
Marksmanship/Survival, Assassination/Combat, Shadow, Frost/Unholy,
|
|
Elemental/Enhancement, Arcane/Fire, all three Warlock specs, Balance/Cat.
|
|
Group membership selects the profile group specialization. Leaving/kicking selects
|
|
solo again at a safe out-of-combat opportunity. Reconciliation retries with a
|
|
backoff. Named profiles share talent templates without replacing their inventory,
|
|
professions or fixed level. Temporary poison/weapon imbues use native enchant/proc
|
|
handling; no synthetic damage or generated combat resources.
|
|
|
|
Generated loadouts reuse stored compatible equipment through native swaps. Full
|
|
inventory cleanup protects strongest candidates for both loadouts. Level 85 uses
|
|
native epic items of item level >=359 (no legendaries); class, stats, armor, native
|
|
use and existing restriction checks still apply. Tank avoidance/mastery/stamina
|
|
and healer spirit receive extra weight; resilience receives a PvE penalty.
|
|
|
|
## Group roles
|
|
|
|
Healers prioritize living allies and summoned DungeonBots by missing health and
|
|
attack pressure, with a large emergency-health priority. They use direct healing,
|
|
HoTs/shields, suitable group healing, dispels and native mana abilities. They
|
|
approach an injured ally when range/LOS prevents healing. Capable classes resurrect
|
|
players outside group combat. Food/bandages yield to group combat; personal
|
|
recovery rules otherwise remain unchanged.
|
|
|
|
Tanks pick up attackers threatening non-tanks, use native taunts and AoE threat
|
|
abilities, and do not taunt from recognized player or DungeonBot tanks. Damage
|
|
bots prefer tank targets. Group protection supersedes solo first-damager focus;
|
|
solo focus and the no-group-flight rule are unchanged. A leading tank can pull
|
|
nearby hostiles while the player advances, or a valid player-selected target,
|
|
after checking nearby companions, own health and healer mana. Missing roles do
|
|
not block play and are not filled by changing somebody's profile. Secondary
|
|
tanks stay near the leading tank in actual instance groups.
|
|
|
|
Ranged classes attack from range; approaching melee assistants prefer the target's
|
|
rear when another member tanks. Native spell validation and conservative AoE
|
|
checks prevent casting into nearby unengaged hostile creatures. Hunter pets are
|
|
loaded or created through native tame/pet functions; Warlock summons and Unholy
|
|
ghouls use native spells. Pet AI assists against the owner's current combat target.
|
|
|
|
## Actual and performative visits
|
|
|
|
Only player-containing groups enter actual encounter mode. Bot-only visits retain
|
|
their existing abstract entrance stay, block deadline, exit and injury behavior.
|
|
Following a player into an instance routes to a native entrance via TravelGraph
|
|
and local MMAP, then submits the normal area-trigger handler: native access,
|
|
difficulty and instance binding still apply.
|
|
|
|
AdventureEncounterMgr pauses personal intent execution inside actual instances.
|
|
An old abstract visit record is finished without abstract exit/injury before real
|
|
play proceeds. The current civil-hour plan resumes outside, without replaying
|
|
missed slots. A dismissed bot leaves to the native exit destination when safe.
|
|
|
|
Dead bots accept native resurrection requests. Otherwise they wait while players
|
|
or DungeonBot companions survive. After a full wipe they release, path to the
|
|
outside entrance and re-enter with a 50% resurrection without sickness or additional spirit-healer durability
|
|
penalties. Failed/rejected/stuck entrance paths allow an exterior entrance teleport.
|
|
Bots gather inside before returning to the recorded death point; a living player
|
|
in the instance takes precedence. A ghost login may reconstruct context from its
|
|
native corpse. Surviving players outside cause companions to leave safely too.
|
|
|
|
## Encounter extensions and limits
|
|
|
|
Register a map-specific C++ callback with AdventureEncounterMgr::Register(map,
|
|
callback) during script registration. Return true when it owns that update;
|
|
false runs the generic ground-avoidance behavior. An empty callback unregisters
|
|
an override. Callbacks can inspect encounter states, spells, auras and threat,
|
|
and delegate normal class casting to the common combat loop by returning false.
|
|
Do not mutate the callback registry from concurrent map updates.
|
|
|
|
The generic fallback detects hostile damaging DynamicObjects in the current
|
|
phase and height band, then selects a complete, unsuspicious MMAP path to a safe
|
|
endpoint. It retains an existing safe escape path and interrupts casting only
|
|
when starting a necessary escape. It does not claim to understand every scripted
|
|
NPC hazard, frontal attack, soak, stack mechanic, vehicle or special-action button.
|
|
Those belong in later map/boss-specific callbacks. No specific boss scripts are
|
|
introduced in this change. This is functional shared combat, not a promise of
|
|
simulator-optimal DPS or verified completion of every raid.
|
|
|
|
## Cataclysm sources
|
|
|
|
Retrieved 2026-10-28. Only the Cataclysm paths/isCata data were used; no TBC,
|
|
Wrath, MoP or Retail builds were substituted. Talent positions and names were
|
|
matched against local 4.3.4 Talent/TalentTab/Spell DBC data, including rejecting
|
|
a duplicate obsolete Arcane talent whose spell no longer exists. Numeric DBC
|
|
metadata needed for reproducible rank/tier/prerequisite tests lives in
|
|
`tests/clientless/fixtures/cata_pve_talents.json`.
|
|
|
|
- https://wowtbc.gg/cata/class-guides/arms-warrior/
|
|
- https://wowtbc.gg/cata/class-guides/fury-warrior/
|
|
- https://wowtbc.gg/cata/class-guides/protection-warrior/
|
|
- https://wowtbc.gg/cata/class-guides/holy-paladin/
|
|
- https://wowtbc.gg/cata/class-guides/protection-paladin/
|
|
- https://wowtbc.gg/cata/class-guides/retribution-paladin/
|
|
- https://wowtbc.gg/cata/class-guides/marksmanship-hunter/
|
|
- https://wowtbc.gg/cata/class-guides/survival-hunter/
|
|
- https://wowtbc.gg/cata/class-guides/assassination-rogue/
|
|
- https://wowtbc.gg/cata/class-guides/combat-rogue/
|
|
- https://wowtbc.gg/cata/class-guides/discipline-priest/
|
|
- https://wowtbc.gg/cata/class-guides/holy-priest/
|
|
- https://wowtbc.gg/cata/class-guides/shadow-priest/
|
|
- https://wowtbc.gg/cata/class-guides/blood-tank-death-knight/
|
|
- https://wowtbc.gg/cata/class-guides/frost-death-knight/
|
|
- https://wowtbc.gg/cata/class-guides/unholy-death-knight/
|
|
- https://wowtbc.gg/cata/class-guides/elemental-shaman/
|
|
- https://wowtbc.gg/cata/class-guides/enhancement-shaman/
|
|
- https://wowtbc.gg/cata/class-guides/restoration-shaman/
|
|
- https://wowtbc.gg/cata/class-guides/arcane-mage/
|
|
- https://wowtbc.gg/cata/class-guides/fire-mage/
|
|
- https://wowtbc.gg/cata/class-guides/affliction-warlock/
|
|
- https://wowtbc.gg/cata/class-guides/demonology-warlock/
|
|
- https://wowtbc.gg/cata/class-guides/destruction-warlock/
|
|
- https://wowtbc.gg/cata/class-guides/balance-druid/
|
|
- https://wowtbc.gg/cata/class-guides/feral-dps-druid/
|
|
- https://wowtbc.gg/cata/class-guides/restoration-druid/
|
|
- https://wowtbc.gg/cata/class-guides/feral-tank-druid/
|
|
|
|
Additional healing/tanking context:
|
|
|
|
- https://www.icy-veins.com/cataclysm-classic/holy-priest-pve-rotation-cooldowns-abilities
|
|
- https://www.wowhead.com/cata/guide/classes/warrior/protection/tank-rotation-cooldowns-abilities-pve
|
|
|
|
## Native integration correction
|
|
|
|
Canonical Survival talents exposed a native Lock and Load (56342) crash:
|
|
SpellMgr clears one effect slot, while SpellValue previously evaluated every
|
|
slot unconditionally. Empty SpellEffectInfo also left its Scaling fields
|
|
uninitialized. Empty scaling now initializes to zero and SpellValue evaluates
|
|
only active effects. The native reproduction and regression test are separate
|
|
from gameplay acceptance. Fury equipment additionally respects the canonical
|
|
31-point Titan's Grip unlock before choosing two-handed weapons.
|