diff --git a/context/combat-damage.md b/context/combat-damage.md index e69907e..9088148 100644 --- a/context/combat-damage.md +++ b/context/combat-damage.md @@ -71,7 +71,11 @@ no `virtual`; find it via the Mech message-handler registration, then disassembl container classes from the captured ctors; (3) disassemble + reconstruct `Mech::TakeDamageMessageHandler` (compute the impactPoint's local height+angle → index the grid → dispatch to `damageZones[zone]->TakeDamage`); (4) register the handler + verify unaimed hits distribute across zones. A genuine multi-pass reconstruction -(the container classes are tedious; the handler is the disassembly). `Mech__DamageZone::TakeDamage` → engine armor model (`damageLevel +(the container classes are tedious; the handler is the disassembly). **Content confirmed (2026-07): the +resource is type 29 = `DamageLookupTableStream`, 18 present in `BTL4.RES` (one per mech) — so STEP 6 is +FEASIBLE, not content-blocked.** The recon's empty-name stub (mech.cpp:1219) must be fixed to the real +name (the binary copies it from a sibling resource, `local_130+0xc` @part_012.c:10361 — reuse the mech's +DamageZoneStream/model name). RE phase COMPLETE; the build (containers + handler + load + wire) is next. `Mech__DamageZone::TakeDamage` → engine armor model (`damageLevel += damageAmount*damageScale[type]`) → 1.0 = zone destroyed → death. The Mech ctor populates the inherited `damageZones[]` from the DamageZoneStream (type 0x14) resource. `class Damage{ damageType (Collision/Ballistic/Explosive/Laser/Energy), damageAmount, damageForce, surfaceNormal, impactPoint,