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>
This commit is contained in:
1 parent
f721d2a486
commit
1fd89524d3
41 files changed
+2347
-214
No files matched your search
@@ -0,0 +1,32 @@
|
||||
# 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).
|
||||
Reference in new issue
Block a user