Shared chest tabs, rune stacks and rune master, Q pickup, Kettenblitz tooltip and range

- 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>
This commit is contained in:
khallaandClaude Opus 5.5 committed 2026-10-17 03:40:42 +02:00
1 parent 3d9d864c25
commit 6ca96d54b4
29 files changed
+2006 -171

No files matched your search

+41 -1
View File
@@ -163,7 +163,7 @@
0x00539ce0 cCreature::StartArtCooldown # AddEffect(0x22, ...)
0x004feef0 cCreature::ArtCastEffect # per-art effect of using an art (switch on art id)
0x005fbaa0 cObjectManager::CreateAt # (type, position, ...): object placed in the world
0x005fb590 cObjectManager::CreateFX
0x005fb590 cObjectManager::Create # (type, 0, 0, 0) -> id; loadHero creates items with it
0x005fb040 cObjectManager::Allocate
0x004514d0 ObjectFactory::Create # (class, ...)
0x005fcd10 cObjectManager::Place # (id, position); refuses dead objects (+0x14 & 0x10)
@@ -205,3 +205,43 @@
0x00580fe0 cCreatureArts::ChooseSkill # (skill id)
0x00579560 cCreatureArts::Recalculate # (0, 1) after point changes
0x0072af90 cUI_Button::Render
0x006ac8b0 cUI_Chest::Render # vf14: DrawItems on window +0x158 (inventory 0x11)
0x006acc70 cUI_Chest::HandleEvent # vf10: grid clicks via +0x158; Shift+click -> MoveItem(0x11, hero)
0x005dec80 cInventoryManager::MoveItem # (from, to, id, ?): into free space of `to`
0x0060d5e0 cEngine::~cEngine
0x006ac7f0 cUI_Chest::cUI_Chest
0x00728ed0 cUI_TabSheet::cUI_TabSheet # (name, rect, parent, 5), ret 0x18
0x007290d0 cUI_TabSheet::AddTab # (text id, page), ret 8
0x007290b0 cUI_TabSheet::SetMode
0x007291d0 cUI_TabSheet::SetActive
0x007291f0 cUI_TabSheet::GetActive
0x00729210 cUI_TabSheet::Layout # headers in a row above the sheet
0x00729000 cUI_TabSheet::HandleEvent
0x00729080 cUI_TabSheet::Render
0x007278f0 cUI_TabControl::cUI_TabControl
0x007286e0 cUI_TabControl::AddTab
0x00728af0 cUI_TabControl::SetActive # hides the old page, shows the new (vf24)
0x00728090 cUI_TabControl::Render
0x006728c0 TextManager_Instance
0x00672f70 TextManager::GetText # (id) -> {begin, end, cap} wide string
0x008485e2 operator_new
0x00727120 cUI_Window2::AddControl
0x0043f5f0 ItemIsConsumable # (type): class 9 (potion) or 0x1c (rune)
0x006d54e0 cUI_MasterLotto::HandleEvent # rune master: 4 rune slots
0x00655710 cMouseCursor::SetItem # (descriptor, 0,0,0, 1f,1f,-32,-32), ret 0x20
0x006e6560 cUI_Tooltip::~cUI_Tooltip
0x006d3d50 cUI_MasterLotto::UpdateChoice # after slot changes: arrows, chosen rune (+0x7b4)
0x006d3fd0 cUI_MasterLotto::doLottoSelect # (hero type, 0 prev / 1 next / 2 keep), ret 8
0x006d42a0 cUI_MasterLotto::Buy
0x006d4390 cUI_MasterLotto::Refresh # (char), ret 4
0x006d3ce0 cUI_MasterLotto::TryPay # (pay): gold >= price[runes]; pays if pay
0x006d3c90 cUI_MasterLotto::RuneCount
0x006d4180 cUI_MasterLotto::RandomRune # (hero type or 0), ret 4
0x006d4720 cUI_MasterLotto::Render
0x0057fc40 cCreatureArts::AddGold # (amount; negative pays)
0x006d5d90 cUI_Button::SetColours # (colour set) -> +0x54..+0x60, ret 4
0x0044a420 cItemBase::GetName # wide text of the type's name id (or +0x3c)
0x004ec3a0 cCreature::UpdateCollect # mode 0xc; substate 0 searches rings of cells (cmp edi,-20 at 0x4ec8c6)
0x004ec170 cCreature::CanCollectItem # (item object), ret 4; pickup filter, no distance check
0x00592ef0 WideString_Append # thiscall (first, last, 0), ret 0xc; {begin,end,cap}
0x00589270 cCreatureArts::ArtTooltip # (art, text*, flag), ret 0xc