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:
1 parent
3d9d864c25
commit
6ca96d54b4
29 files changed
+2006
-171
No files matched your search
+19
-2
@@ -489,6 +489,16 @@ int VisibleDialogTooltipsImpl(void** out, int max) {
|
||||
return count;
|
||||
}
|
||||
|
||||
// A tooltip is destroyed: its entry goes, so its memory is never taken for a
|
||||
// tooltip again (Esc closed a "visible dialog" that was a freed one: crash).
|
||||
void ForgetTooltip(void* tooltip) {
|
||||
for (TooltipState& t : g_tooltips) {
|
||||
if (t.tooltip == tooltip) {
|
||||
t = {};
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
int KnownTooltipOffset(void* tooltip) {
|
||||
for (const TooltipState& t : g_tooltips) {
|
||||
if (t.tooltip == tooltip) {
|
||||
@@ -598,8 +608,7 @@ HUD_EVENT(0x006d1080, UiMaster_HandleEvent, Anchor::Center)
|
||||
HUD_RENDER(0x006d0f00, UiMaster_Render, Anchor::Center)
|
||||
HUD_EVENT(0x006d2450, UiMasterCombo_HandleEvent, Anchor::Center)
|
||||
HUD_RENDER(0x006d2b70, UiMasterCombo_Render, Anchor::Center)
|
||||
HUD_EVENT(0x006d54e0, UiMasterLotto_HandleEvent, Anchor::Center)
|
||||
HUD_RENDER(0x006d4720, UiMasterLotto_Render, Anchor::Center)
|
||||
// cUI_MasterLotto (rune master): event and render in mods/runetrade.cpp.
|
||||
HUD_EVENT(0x006d5e20, UiMasterPortal_HandleEvent, Anchor::Center)
|
||||
HUD_RENDER(0x006d5e00, UiMasterPortal_Render, Anchor::Center)
|
||||
HUD_EVENT(0x006dab10, UiMerchandise_HandleEvent, Anchor::Center)
|
||||
@@ -663,6 +672,14 @@ int __fastcall UiTooltip_Render(void* self, void* edx, void* device) {
|
||||
return UiTooltip_Render_original(self, edx, device);
|
||||
}
|
||||
|
||||
// cUI_Tooltip::~cUI_Tooltip (0x6e6560, plain ret; from the deleting destructor vf00).
|
||||
void __fastcall UiTooltip_Destruct(void* self, void* edx);
|
||||
RE_HOOK(0x006e6560, UiTooltip_Destruct);
|
||||
void __fastcall UiTooltip_Destruct(void* self, void* edx) {
|
||||
mods::hud::ForgetTooltip(self);
|
||||
UiTooltip_Destruct_original(self, edx);
|
||||
}
|
||||
|
||||
} // namespace game
|
||||
|
||||
namespace mods::hud {
|
||||
|
||||
Reference in new issue
Block a user