Un-overload Object fields and pre-parse damage dice (refactor step 3)
Object.Arm carried four meanings in C (o_arm/o_charges/o_goldval plus
ring bonuses); it is now four fields: ArmorClass, Charges, GoldValue,
and Bonus. Stats.Arm becomes Stats.ArmorClass. The Charges()/GoldVal()
accessor pair is gone.
Damage dice strings ("1x4/1x2") are parsed once into DiceSpec — at
table definition for the bestiary and weapon tables, at creation for
items — instead of re-parsed with atoi on every swing as fight.c
roll_em did. ParseDice preserves the C parse semantics exactly,
including the junk-tolerant "%%%x0" bestiary placeholder and the
"000x0" flytrap reset (regression-tested in dice_test.go); the
flytrap's growing grip becomes DiceSpec{{VfHit, 1}}.
Save format bumps to 5.4.4-go3 (field renames and retypes would
silently zero under gob's match-by-name decoding).
No behavior change; full suite green.
This commit is contained in:
12
TODO.md
12
TODO.md
@@ -29,14 +29,16 @@ Refactor ground rules:
|
||||
|
||||
# Next Step
|
||||
|
||||
Refactor step 3 (branch refactor/object-fields): un-overload Object
|
||||
fields — split Object.Arm into ArmorClass/Charges/GoldValue; parse
|
||||
damage dice ("1x4/1x2") once into a DiceSpec type at table definition
|
||||
instead of per swing; save-format update with round-trip test
|
||||
migration.
|
||||
Update the module base path to git.eeqj.de/sneak/rgoue (user request
|
||||
2026-07-06): go.mod, all imports in term/ and cmd/, and doc references.
|
||||
|
||||
# Completed Steps
|
||||
|
||||
- 2026-07-06 Refactor step 3 (refactor/object-fields): Object.Arm split
|
||||
into ArmorClass/Charges/GoldValue/Bonus (rings); Stats.Arm →
|
||||
ArmorClass; damage strings parsed once into DiceSpec at table
|
||||
definition (ParseDice keeps C roll_em parse semantics, incl. "%%%x0"
|
||||
and "000x0" edge cases, regression-tested); save format 5.4.4-go3.
|
||||
- 2026-07-06 Refactor step 2 (refactor/typed-kinds, b940cfc):
|
||||
ObjectKind separates item category from map glyph (Object.Type byte
|
||||
→ Kind ObjectKind with Glyph()); PotionKind/ScrollKind/RingKind/
|
||||
|
||||
Reference in New Issue
Block a user