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:
khallaandClaude Opus 5.5 committed 2026-10-16 00:11:38 +02:00
1 parent f721d2a486
commit 1fd89524d3
41 files changed
+2347 -214

No files matched your search

+47 -1
View File
@@ -115,6 +115,51 @@ the 1024 frame (66-78 px each side). In the widened view the centred bar has
room for that (16:9: 1365 wide, 170 px each side). Decision 2026-10-14: keep
the original spacing; 4:3 is not a target (cut off there).
### Art slots without selection (2026-10-15)
Decision: art slots are no longer selected. Slot 0 (leftmost) is always the
right mouse button's art; left click stays the normal attack. Keys 0-6 cast
slots 0-6 directly (`src/mods/skillkeys.cpp`): key 0 presses the right
button, keys 1-6 select their slot for as long as the key is held and press
the right button. Without a held skill key the selection returns to slot 0
(engine tick). `cUI_Taskbar2::SelectSkillSlot` turns every other request
(clicks on the bar, wheel, COMBINE_SLOTS, slot count check) into slot 0;
slots on the bar are only filled by drag & drop. Weapon sets are still
selected (F1-F7, clicks).
How a slot is drawn (`RenderArtSlots` `0x6e31e0`): each slot is a
`UI_STATIC` control drawn by its vf14; the function swaps the control's atlas
entry and rect, draws, and restores them. An art has 3 icons (indices into
`g_uiAtlasEntries` `0x9eaee0`, 0x54 each): ready + selected slot uses the
third, otherwise the first; while recharging, the slot is drawn twice, split
vertically by the ready fraction (first icon above, second below). Icons
0x276-0x278 replace them when the art cannot be used mounted and
`0x54fa90` holds (fill from creature +0x4e8 / +0x4ec). Over the icon a frame
is drawn: `g_uiTaskbarArtFrameSelected` `0x9f4be4` / `g_uiTaskbarArtFrame`
`0x9f7f14`, `0x9f5d9c` as a drop target, `0x9f696c` with creature flag
0x2000. `UpdateSlotHighlight` (`0x6df9a0`) sets the slot backgrounds
(`0x9ed084` selected / `0x9ed030`). Patched (`kTaskbarSkillSelectionLook`):
frame and background test "slot 0" instead of "selected slot", and every
ready art uses its third icon. Slots 1-6 are moved right by half a slot
(0x21) after the layout, and the decorative strip right of the centre starts
that much further right (`add ecx, 23Ah` at `0x6e01cc`).
Weapon set clicks (2026-10-15): with an empty cursor, the taskbar's mouse
handling jumps to `0x6e10d8` (`je` at `0x6e0ca7`; taskbar in esi, inventory
in ebp, set at [esp+0B8h], hand at [esp+0BCh]), which takes the set's weapon
onto the cursor (`TakeWeaponSetItem`) and re-selects the selected set. That
jump now goes through `WeaponSetClickThunk`: a click on a set that is not
selected only selects it (exit `0x6e124d`, al = 1); dragging starts from the
selected set only.
Negative x (2026-10-15): with 7 slots the leftmost weapon set (set 1, F1)
lies at x = -68..-2 of the layout. The taskbar's own hit test accepts it,
but every place that asks the slot controls (`vf1c`, signed compares) passes
the position as `and reg, 0FFFFh`, so -43 became 65493 and the set could
not be clicked. `kTaskbarSignedHitTests` sign-extends them (slot lookups
`0x6dfcfe`/`0x6dfd5e`, the click loops `0x6e1a0c`/`0x6e1a5c`, drop and
drag `0x6e1e8e`.. `0x6e20f2`).
The two 5 x 0xbc blocks at +0x258 / +0x604 are the belt (3D item views), not
slots. Still to map: rendering of the slot contents (icons, cooldowns,
`Render` `0x6e3ac0`), drag & drop onto slots (`HandleEvent` mouse branch,
@@ -142,4 +187,5 @@ only (or disabled in multiplayer).
(agreed 2026-10-14).
5. Taskbar: 7 controls each (arrays inside the object are fixed at 5: own
table for the extra controls), layout, rendering, hit tests, drag & drop.
6. Keys: 1-7 select and cast art slots, F1-F7 select weapon sets.
6. Keys: 0-6 cast art slots (since 2026-10-15; before: 1-7 select and
cast), F1-F7 select weapon sets.