- Every yellow potion (potion kind 5, all stages) is a Teleportationstrank:
drinking it posts the teleporter's event to the busy dialog with the
hero's known portals; the potion is used up only when the hero teleports
from that window (closing it keeps the potion)
- Names replaced in every game text (ReplaceInTexts), so item names and the
bottom bar's quick-select tooltip read Teleportationstrank; GameText reads
the game's own text
- HeroIndex / HeroInventory moved to skillslots for shared use
- docs/teleport-potion.md; walking animation after loading noted in todo
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
- 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>
- potioncounts.cpp: each potion slot shows how many potions of its kind the
hero carries (stacks added up)
- potionstack.cpp: potions of one type stack up to 20 per cell; every
potion entering the hero's grid pours into stacks with room, the sort
button stacks first, drinking takes one off a stack, counts drawn on the
cells and saved in the JSON inventories
- game/engine/items.h: potion kinds and grid helpers; ObjectManager and
DestroyObject in objects.h
- auto-attack: the projectile-weapon target radius is a design value
- docs/potion-stacks.md: measured paths and the design
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
- 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>
cUI_Taskbar2's slot arrays move behind the (enlarged) object with room
for 7 each; all instructions addressing them, the relative accesses
between the two arrays, the slot loops and the count clamp are patched
from tables in game/addresses.h (belt loops untouched). Slots 6 / 7
unlock at levels 45 / 65; AssignArtToSlot accepts slots up to 6. Slot
keys call the taskbar's selection directly (honouring COMBINE_SLOTS).
Shared code: re::PatchAll / PatchInstructionByte for patch tables,
game/engine/objects.h for object, RTTI and kernel calls, slot-hook
templates in skillslots.cpp.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Weapon sets and combat-art slots 6-7 live in a shadow inventory per
inventory; the slot methods run the original code on it for slots >= 5,
so item references, icon resources and selection events stay the
game's own. Save games (cInventoryManager::Serialize) and hero files
(saveHero / loadHero) store inventories as JSON ("SRIJ" + length);
vanilla blocks are still read, which migrates old saves. Multiplayer
transfers keep the binary format. nlohmann/json fetched via git.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>