handoff: score report tail reconstruction
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Fable 5
parent
91bd28669e
commit
b31c6c4527
@@ -366,3 +366,36 @@ bursts = 0.015 x moverMass, falloff dist^1.25 in the shared core.
|
||||
Bench: madcat radius=50 amt=5 mass=75000 -> neighbor at 8.9u took 73
|
||||
bursts cross-pod, SPLASH/DMG reconciled. Deferred: burning dispatch
|
||||
(0x17 handler), score post (id-0x16, #134). #89 awaiting-verification.
|
||||
|
||||
## 2026-08-05 (later): #45/#134 -- the authentic score/death report tail (91bd286)
|
||||
User said "see it through" on the deferred id-0x16 block. Full reconstruction from raw disasm of
|
||||
the dark-gap tail (@0x4a02f4-0x4a0890):
|
||||
- THE BIG DECODES: BTPlayer handler table byte-scanned (file 0x112dxx): 6 entries, 0x16 Score ->
|
||||
@0x4c02e4 (the type-switch handler; our port's transcription was already faithful), 0x17
|
||||
VehicleDead -> @0x4c05c4, 0x1a ScoreUpdate; @0x4c0200 ("ScoreInflicted") IN NO ENTRY = dead
|
||||
1995 code. The death tail's id-0x17 message = Player::VehicleDeadMessage (NOT SetBurningState
|
||||
-- #89 banner corrected; mech-table 0x17 label/body mismatch logged in open-questions).
|
||||
1995 SCORING MODEL [T1]: kills + received-damage penalties + death costs. NO per-hit credit
|
||||
(type-0 lands in a Verify arm that folds an UNINIT stack float -- real 1995 bug; port banks 0).
|
||||
Kill award = (victimKillBonus + tally) x inflictedMod x (victimAvgDmg@0x354 x damageBias + 1)
|
||||
x tonnage ratio; teamkill = -ffPenalty; SELF-KILL NEGATED (fchs @0x4c03ab) = the #134 penalty.
|
||||
- CODE: BTMechPostCombatReports + BTMechPostVehicleDead (btplayer.cpp bridges); mech.cpp handler
|
||||
restructured (death latch at ENTRY, collision divert falls through to the tail per @0x4a0375
|
||||
jmp -- wall deaths now respawn+blast); BT VehicleDeadMessage 0x38 ext {killed-by player, kill
|
||||
zone}; ScoreMessage fields renamed (vitalHit/zoneIndex/subsysID) + wire static_asserts;
|
||||
VTVDamaged points_transfered corrected (Round(award), not Now() -- ST0-arg __ftol misread).
|
||||
RETIRED: BTPostDamageScore/BTPostKillScore + 3 call sites + the mech4 VehicleDead dispatch
|
||||
(the [T3 sender-undecoded] flag is resolved -- this IS the sender).
|
||||
- BENCHES (all PASS): scorekill.sh cross-node kill (killer kills=1 award=4.88; victim log
|
||||
killedBy=2:1 zone=3; death #1 single cycle); scoreself.sh #134 (type=2 award=-39.00 kills=0,
|
||||
total drops); deathblast2.sh regression (72 bursts ~9u). Collision-tail = inspection [T3].
|
||||
Bench gotchas hit: spinner target splits leg damage across legs (drop BT_SPIN_SELF);
|
||||
BT_ZONE_WALK=60 paces pulses too slow (use =8 + BT_WALK_ZONES=dz_ldleg for a ~2min kill).
|
||||
- TRACKER: #134 CLOSED (awaiting-verification) w/ bench receipts; #45 + #89 follow-up comments.
|
||||
- KB: combat-damage (new report-tail section), decomp-reference (BTPlayer table + role offsets +
|
||||
msg layouts + mech+0x354), open-questions (0x17 mislabel, @0x4c05c4 ext-field consumption,
|
||||
collision bench, uninit-award curiosity), multiplayer, KD_SCOREBOARD addendum. checkctx CLEAN.
|
||||
- FIELD-VISIBLE CHANGE FOR RELEASE NOTES: score column now behaves like 1995 (kills pay,
|
||||
taking damage costs, panic eject costs, per-hit credit gone). KILLS/DEATHS columns unchanged.
|
||||
- NOT DONE: burning-state (mech-0x17 mislabel blocks it); @0x4c05c4 killed-by consumption
|
||||
(sender carries the fields); DIV firmware intersection routine (unchanged).
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
import sys
|
||||
sys.path.insert(0, r'C:\git\bt411\scratchpad\night7')
|
||||
import gitea
|
||||
|
||||
for n in (45, 134, 89):
|
||||
d = gitea.call(f'/issues/{n}')
|
||||
print(n, d['state'], d['title'][:60])
|
||||
@@ -0,0 +1,31 @@
|
||||
import sys
|
||||
sys.path.insert(0, r'C:\git\bt411\scratchpad\night7')
|
||||
import gitea
|
||||
|
||||
# 134: the fix landed -- close with receipts + awaiting-verification
|
||||
gitea.call('/issues/134/labels', method='POST', payload={'labels': [8]})
|
||||
gitea.close(134,
|
||||
"""FIXED at 91bd286 -- the panic/self-kill penalty is live.
|
||||
|
||||
Root cause chain (from the night-12 scan): the eject charge kills you with inflictor=SELF, and the old kill-credit stand-in (BTPostKillScore) FILTERED killer==victim, so the score path never engaged for a self-kill.
|
||||
|
||||
The fix is the authentic reconstruction, not a patch: the dark-gap report tail of Mech::TakeDamageMessageHandler (@0x4a04da-0x4a0890, raw disasm) now dispatches the binary's kill report even when killer==victim, and the score handler @0x4c02e4 does what 1995 did: negates the whole kill award (raw disasm @0x4c03ab fchs) and skips killCount++.
|
||||
|
||||
Bench receipt (scoreself.sh, self-destruct with inflictor=SELF):
|
||||
```
|
||||
[score] *** KILL report *** -> shooterPlayer=<own> tally=39
|
||||
SCORE player=3:1 type=2 award=-39.00 total=0.00 kills=0
|
||||
SCORE player=3:1 type=1 award=0.00 total=-39.00 kills=0 <- penalty LANDED
|
||||
```
|
||||
kills stays 0, score drops by the (negated) kill award. With authored roles the magnitude scales by killBonus/damageInflictedModifier/tonnage ratio exactly as a real kill would.
|
||||
|
||||
Field verify tonight: panic-eject and watch the SCORE column drop with no kill credited.""")
|
||||
|
||||
# 45 (closed): append the plumbing-completion note
|
||||
gitea.comment(45,
|
||||
"""Follow-up at 91bd286: the deferred id-0x16 report plumbing this issue's fix worked AROUND is now reconstructed outright -- the victim's TakeDamage handler dispatches the binary's three score reports (@0x4a04da/@0x4a05d9/@0x4a06c0) and the BT-extended VehicleDead {killed-by player, kill zone}. The kill-credit reroute shape verified here (victim node -> replicant-player Dispatch -> killer's master) is unchanged and re-benched cross-node (scorekill.sh: kills=1, award=4.88, killedBy=2:1 zone=3). BTPostKillScore/BTPostDamageScore are retired; per-hit inflicted credit is gone (never existed in 1995 -- @0x4c0200 is bound in no handler-table entry).""")
|
||||
|
||||
# 89: correct the deferred-sibling note
|
||||
gitea.comment(89,
|
||||
"""Correction to the deferred-siblings note above (found while reconstructing the report tail at 91bd286): the id-0x17 0x38-byte message in the death tail is NOT a mech-table SetBurningState dispatch -- it is Player::VehicleDeadMessage (the BTPlayer handler table binds 0x17 -> @0x4c05c4), i.e. the respawn trigger, in a BT extension carrying the killed-by player + kill zone. Now reconstructed + benched. The burning-state question moves to open-questions (the mech-table 0x17 name row mismatches its handler body @0x49f674 -- likely a shifted label). Death blast re-verified un-regressed after the tail reorder (deathblast2: 72 bursts at ~9u).""")
|
||||
print('receipts posted')
|
||||
Reference in New Issue
Block a user