Shared chest tabs, rune stacks and rune master, Q pickup, Kettenblitz tooltip and range

- Shared chest: tabs "Truhe"/"Gemeinsam" as a column left of the grid
  (game tab sheet), grids placed every tick, persistent across heroes
- Inventory tab texts capitalized (RegisterText / CapitalizeText)
- Combat-art runes stack like potions (itemstack, renamed from potionstack)
- Rune master: any rune for any number of runes, price by rune count
  (4 runes = 1,000, x10 per missing rune), bought rune goes into the
  backpack, Buy disabled without runes, gold or room, last rune remembered
  per hero (saved), the chosen rune's name below its icon, dropping a
  stack gives up one rune
- Keys: the old key handling no longer takes over after the save screen
  (text field focus only counts while its dialog is shown)
- Esc crash: tooltips forgotten when the game destroys them
- Pick up (Q) sends the pickup order directly; search reach doubled
- Kettenblitz: tooltip shows hits per chain, chains, cast and jump range;
  cast range 900 (longer ray segments), jumps half of that

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
khallaandClaude Opus 5.5 committed 2026-10-17 03:40:42 +02:00
1 parent 3d9d864c25
commit 6ca96d54b4
29 files changed
+2006 -171

No files matched your search

+24
View File
@@ -67,3 +67,27 @@ ray reaches it, otherwise the visible ray just stops. So the cast range is
(also the first hop of extra chains), instead of the game's jump search radius
(squared 100000, about 316). It is the one place to make the range dynamic
later. Jumps do not check the ground in between.
## Tooltip (2026-10-17)
Request: the tooltip should match the mod. The game's text (cCreatureArts::ArtTooltip
0x589270, measured for art 0x21 at level 5) ends each level section with
"Anzahl: X", the game's own hit count. The mod replaces that line with
"Treffer je Kette" (3 + L/5), "Ketten" (1 + L/10) and "Sprungweite" (the cast
range), with L = the hero's level (base + bonus) in the "Aktuelle Stufe" section
and L + 1 in "Nächste erlernte Stufe". The string is rewritten with the game's
append (0x592ef0), so the game's allocator owns the buffer.
## Range +50 % (2026-10-17)
Request: Kettenblitz range about 50 % larger. The ray's 20 segments are
bounded by the caster's segment id array (+0x263, 20 dwords), so the segments
get longer instead: 30 -> 45, cast and jump range 600 -> 900. Patched in the
art code: `fsub [30.0]` 0x526db6 and `fcomp [30.0]` 0x526e0b (redirected to
our 45.0; 0x88ef18 is shared by 72 instructions), `mov eax,30` 0x526e23 (the
segment length given to each segment object) and `push 30.0f` 0x526f3d (the
step of the ray point).
Follow-up (2026-10-17): jumps at 900 felt too far. The cast keeps 900; jumps
use `JumpRange()` = half the cast range (450). The tooltip shows both
("Reichweite", "Sprungweite").