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
@@ -8,6 +8,95 @@ recreates it after a load for Heldenmut (0x3f7) and Klingenblick (0x3f8). Spell
|
||||
auras (Steinhaut, Lichtschild, ...) use other effects and are not covered
|
||||
yet; check them if their visuals go missing too.
|
||||
|
||||
## Data-driven arts instead of hardcoded art ids
|
||||
|
||||
Asked 2026-10-15: naming single arts as constants (`kArtHeldenmut`,
|
||||
`kArtFlammenwerfer`, ... in `src/game/engine/arts.h`) does not scale. Mods
|
||||
should decide by an art's properties, read from the game's own data:
|
||||
|
||||
- the definition tables `g_spellDefs` (`0x950a38`, 71 x 0x94) and
|
||||
`g_combatMoveDefs` (`0x94ddb0`, 95 x 0x78): id, icon name, launch type,
|
||||
usable mounted, ... (`tools/arttable.mjs` dumps them; most fields unnamed);
|
||||
- map the remaining fields (regeneration group, lasting effect / aura,
|
||||
duration, ...) and expose them as an `ArtInfo` lookup in `src/game/`;
|
||||
- where the game itself hardcodes ids (e.g. the arts that always count as
|
||||
magic in `cCreatureArts::AddGroupRegen`, the "already active" switch in
|
||||
`IsValidArtTarget`), keep one table of those ids with the reason, instead of
|
||||
named constants spread over the mods;
|
||||
- optionally an own data file (JSON next to the DLL) for mod-side settings per
|
||||
art, if we need values the game does not have.
|
||||
|
||||
## Art ranges: scaling and indicators
|
||||
|
||||
Asked 2026-10-15 (after making periodic aura hits strike everything in
|
||||
range, docs/aura-hits.md):
|
||||
|
||||
- art ranges should scale with the art's level, and possibly with new
|
||||
attributes;
|
||||
- possibly show a range indicator (e.g. a ring around the hero for auras, or
|
||||
at the cursor for aimed arts).
|
||||
|
||||
Known so far: the periodic-hit aura (effect kind 0x12) uses
|
||||
`(cCreatureArts +0x56 + 20) * 10` world units, measured from the owner with
|
||||
`cCreature::DistanceTo` (`0x536f20`); what +0x56 is (level? a stat?) is not
|
||||
mapped yet. Other arts' ranges are not mapped. Fits the data-driven arts
|
||||
item above (range as a property of an art, one place to compute it).
|
||||
|
||||
## Rename life leech to "omnivamp"
|
||||
|
||||
Asked 2026-10-15: life leech (property 0x349, "Lebensentzug") becomes
|
||||
"omnivamp". To do: the in-game texts (item property, tooltips, character
|
||||
window). The leech code is the game's (`0x5707a4`.., property 0x349, in the
|
||||
damage code `0x56aff0`); it credits the hit's attacker (order +0x1c). Omnivamp usually means healing from all damage,
|
||||
not only weapon hits: aura hits (docs/aura-hits.md) now name their attacker
|
||||
so the game applies it;
|
||||
other damage sources (spells, combat arts' extra hits, damage over time) may
|
||||
follow.
|
||||
|
||||
## Map and map zoom in widened views
|
||||
|
||||
Reported 2026-10-15: the map (and zooming it) does not support the widened
|
||||
render sizes yet (docs/widescreen.md, docs/hud.md: windows are laid out for
|
||||
1024 and centred). To check: the map window's draw area and the zoom's
|
||||
hardcoded 1024/768 (or 512/384 centre) values.
|
||||
|
||||
## Quest dialog glitches in widened views
|
||||
|
||||
Reported 2026-10-15: accepting a quest, the dialog window "kept glitching"
|
||||
and button clicks were not detected correctly. Probably the HUD layer
|
||||
(src/mods/hud.cpp: windows shifted while they render / handle events): the
|
||||
dialog may not be covered, or shifted twice. Details asked from the user.
|
||||
|
||||
## WASD walks around walls (caves)
|
||||
|
||||
Reported 2026-10-15: in caves WASD movement behaves "as if the player tries
|
||||
to find another way to the target location if a wall comes up". WASD sends a
|
||||
walk order to a point 300 world units ahead (docs/wasd.md); when that point is
|
||||
behind a wall the pathfinder plans a detour. Idea: find the game's straight
|
||||
line / walkability check and shorten the target when the line is blocked (or
|
||||
stop / slide along the wall). Related to the pathfinder item above.
|
||||
|
||||
## Esc closes an open dialog first
|
||||
|
||||
Asked 2026-10-15: with any dialog open (quest, trader, inventory, ...), Esc
|
||||
should close that dialog instead of opening the game menu (ESC menu,
|
||||
`cUI_EscMenu`). Esc is handled in the engine / UI manager hotkeys
|
||||
(docs/wasd.md: engine `0x618130`, UI manager `0x757120`).
|
||||
|
||||
## In-DLL smoke tests (later)
|
||||
|
||||
A test mode inside the mod DLL, started by an ini setting or command-line flag,
|
||||
so builds can be checked without play-testing and without driving the real
|
||||
mouse/keyboard like `tools/autotest-load.ps1`:
|
||||
|
||||
1. load a fixed test save;
|
||||
2. play scripted input through the existing hooks (keys, casting arts, weapon
|
||||
set switches, save + reload);
|
||||
3. take back-buffer screenshots at checkpoints and log checks to
|
||||
`sacred_re.log` (aura effect present after reload, slot 6-7 inventories
|
||||
survive a save, ...);
|
||||
4. exit the game.
|
||||
|
||||
## Better pathfinder (mouse clicks and monsters)
|
||||
|
||||
Replace the game's pathfinding with a more reliable and efficient one, for
|
||||
|
||||
Reference in new issue
Block a user