Files
khallaandClaude Opus 5.5 1fd89524d3 Skills, auto-attack, aura and chain lightning rework, Esc, cache fix
- Skill bar: no art selection; slot 0 is the right-click art, keys 0-6 cast
  slots directly; cooldown labels in exact seconds; slot 0 set apart.
- Arts regenerate on their own (casting no longer refills the group).
- Auto-attack after targeting or casting at a hostile creature, at the speed
  of a held button.
- Auras can be recast while active (renew, no second visual).
- Blicke wie Klingen hits every enemy in range, physical, with life leech.
- Blitzschlag steers the game's own chain: 3 + level/5 hits, 1 + level/10
  chains, re-hits a lone enemy.
- Weapon sets: click selects, drag only from the selected set; the leftmost
  set is clickable (signed hit tests).
- Esc closes open windows before opening the game menu.
- HUD: standalone buttons and texts are centred.
- Record cache sized for widened views (town lag while walking).
- Shared game code: orders, fx events, text drawing, cooldowns, effects.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-16 00:11:38 +02:00

33 lines
1.7 KiB
Markdown

# Art regeneration (`src/mods/artregen.cpp`, `game::GetArtCooldown`)
Goal (user, 2026-10-15): casting an art no longer affects the cooldowns of
other arts; the cooldown labels show exact seconds.
## How the game regenerates arts (measured 2026-10-15)
Cooldown entries: see `src/game/engine/arts.h` (cCreatureArts +0x102,
0x16 bytes each: group, art, level, bonus levels, total, speed factor,
remaining). Found with a hardware write watch on one entry's remaining time:
- countdown, every creature update (`0x562998`):
`remaining -= speed factor * rate * seconds`, rate = cCreatureArts +0xee
(magic group, Energieblitze) or +0xf2; clamped to 0..total;
- casting an art: the cast code computes the art's regeneration
(`cCreatureArts::RegenFor` `0x582710`) and adds it with
`cCreatureArts::AddGroupRegen` (`0x562330`, (amount, group, filter)) to
**every** entry of the group (combat arts / magic), capped at each total:
one cast puts the whole group into regeneration. Flags +0x148 & 8 / & 4 cut
the amount to 80 % for the magic / combat group; Flammenwerfer, Meteor,
Kanone and Energieblitze always count as magic. A combo (creature +0x2b4,
arts +0x59) or group 3 takes another branch (combo slots at +0x10e);
- the speed factor (+0xe) is reset by the stats recalculation (`0x579b7d`,
`0x570fad`), the level byte +7 raised by item bonuses (`0x581e40`, which
adds the change of the total to the remaining time).
## The mod
For player heroes, an AddGroupRegen call right after RegenFor (same thread)
adds the amount to the cast art's entry only. Other calls (negative amounts,
filters, combos, other callers) go to the game. Labels: seconds =
remaining / (speed factor * rate).