Files
healer-man/docs/ROM_WARDEN_MAGE_TOUGH_OAK.md
2026-10-02 10:38:12 -04:00

6.4 KiB

Warden/Mage Tough Oak: pet defense source and runtime plan

Status

The pet-defense rider remains unwired. The existing local cooldown rider is implemented for RuneWaker's Warden abilities. This review adds no combat, catalog, or scene code.

Current CoA source

The current CoA Warden/Mage skill list identifies Tough Oak as skill ID 494207, a Warden/Mage level-20 passive, maximum rank 55. Its current text says: “Increases your pet's Physical Defense by 60% and reduces Cooldown from Punch and Sepal Stab by 1 second.” The page lists Warden/Mage pet Punch as 494209 and pet Sepal Stab as 498199, both level 20 with four-second cooldowns.

I searched the official patch-note results for Tough Oak's defense value and did not find a patch note that supplies a different amount or a mitigation formula. The current skill page is therefore the source for the current +60% claim. Patch history does not establish what stat value this percentage multiplies or how that value reduces damage.

RuneWaker row and source-precedence decision

The local generated row is the same named 494207 Warden-primary/Mage-secondary level-20 passive. Its RuneWaker tooltip describes a pet DEF increase using component 504600; that component is permanent (effectTime: -1) and has ability modifier type 135, value 5.

The project records type 135 as physical-defense-percent in romAbilitySemantics.ts and translates it to the generic armor stat in romAbilityCatalog.ts. That is the local RuneWaker decoding choice; it does not establish that CoA's current +60% pet Physical Defense is 60% armor, that RuneWaker's +5% equals the CoA value, or that the two versions share a damage-mitigation formula. For the current class-pair behavior, prefer current CoA's +60% statement, but keep the numerical defense rider inactive until pet defense has a real stat and mitigation rule. Do not replace it with +5% armor.

The local tooltip names Punch 493382 and Sepal Stab 493385. Those local generated rows are Warden primary rows. The current CoA page instead exposes pet-skill IDs 494209 and 498199. The existing Tough Oak cooldown code in romWardenOverrides.ts reduces cooldown by one second when local IDs 493382/493385 are cast by a Warden with the passive marker. It does not establish that CoA's different pet-skill IDs execute in the simulator; verify their actor and cooldown ownership before expanding that rider.

Current pet combat model

  • CombatSummon carries summon identity, owner, health, position, attack damage, abilities/resources, and optional Hunter-specific state. It has no armor, physical-defense value, or general defensive-stat profile.
  • CombatActorState has health and absorbs but no defense statistics. combatActorFromSummon copies those common values and does not derive a pet defense profile.
  • damageAfterEquipmentMitigation accepts character ItemStats and applies the simulator's WotLK armor/resistance model. That is not a sourced CoA pet Physical Defense formula and is not currently applied to summons.
  • Warden pets are generic CombatSummon instances. In the code paths inspected, pet health loss from an enemy hit is represented by Warden Damage Transfer: the owner hit is mitigated using the owner's defenses, the transfer share is computed, then pet absorbs are consumed and remaining damage is subtracted from pet health. The transfer path does not run a second pet defense calculation. Ordinary enemy hit transactions address player/party recipients; there is no general mob-to-Warden-pet incoming-hit transaction in this model.
  • The Hunter pet defense helper and source note are prep only; they do not yet give the simulator a generic live pet defense or incoming-hit model. Even after Hunter integration, WoW owner-armor inheritance is a separate rule and must not be reused as CoA Warden defense.

Concrete follow-up plan

  1. In the Hunter pet defense integration, establish a reusable per-summon defense profile and a shared incoming-pet-damage boundary. Keep Hunter armor/resistance inheritance explicitly WoW-specific.
  2. Before applying Tough Oak, find or deliberately define a CoA pet baseline Physical Defense value and a CoA Physical Defense-to-damage-reduction formula. Current sources specify a percentage increase only; they do not give either value. Do not substitute owner armor, ItemStats.armor, the local +5% component, or a WoW armor formula.
  3. Add a distinct CoA pet physicalDefense stat/profile and apply the learned Warden/Mage Tough Oak 1.6 multiplier to eligible active Warden pets. Verify which summon types the word “pet” includes; the current page does not limit it to Oak Walker, Spirit of the Oak, or Nature Crystal.
  4. Route known pet-directed incoming damage through that profile in an explicit pet-recipient resolver. At minimum review player and generated-companion Warden Damage Transfer paths. Confirm whether a transferred share receives the pet's Physical Defense, and where it sits relative to owner mitigation and pet absorbs; the current skill text does not specify this ordering. Add a direct mob-to-pet hit path only if the combat design introduces one.
  5. Keep cooldown mapping separate. Preserve local 493382/493385 until current CoA's 494209/498199 are represented as executable pet actors/skills; then test the one-second reduction against the correct pet-owned cooldowns instead of extending a name-only match.
  6. Add focused tests for passive scope (Warden/Mage only), active-pet filtering, +60% defense application, physical versus magical incoming damage, transfer/absorb ordering, and unchanged cooldowns for other class pairs. Update this note with any remaining mapping/formula assumptions before marking the backlog item complete.

Open source gaps

  • The current CoA page does not define the underlying pet Physical Defense stat, its baseline/scaling, or the formula mapping it to mitigated damage.
  • It does not state whether the multiplier affects all Warden pets or only a named pet family/summon.
  • It does not explain how pet Physical Defense interacts with Damage Transfer or pet absorbs.
  • The current CoA pet skill IDs differ from the local RuneWaker cooldown child IDs. Name equality alone is not enough to bridge them.