Skip to content

Fix TakeBlessing bug and add multibox feature to MoveAndInteractWithGadget#1021

Open
sloppynacho wants to merge 16 commits into
apoguita:mainfrom
sloppynacho:main
Open

Fix TakeBlessing bug and add multibox feature to MoveAndInteractWithGadget#1021
sloppynacho wants to merge 16 commits into
apoguita:mainfrom
sloppynacho:main

Conversation

@sloppynacho

Copy link
Copy Markdown
Contributor

No description provided.

…dow collapsed

An indentation regression left the "Follow Publish" section (thresholds,
unstuck knobs, dirty_runtime_cfg check) outside the `if ImGui.Begin(...)`
block. When the Follow Formations window was collapsed, Begin returned
False, skipping `dirty_runtime_cfg = False`, but the dedented
`if dirty_runtime_cfg:` still ran — raising UnboundLocalError every frame.

Re-indent the block back inside Begin and restore the "Show Flagging
Window" checkbox as a sibling of the dirty check (it was accidentally
nested under it, only rendering on frames where a setting changed)
Concurrent multibox writes to the shared WidgetManager.ini tore the file
(truncate-in-place save); reading it back logged a multi-line configparser
error that tripped GW's TextParser assert and crashed the client. Started
with b665952/192a53be (apoguita, 2026-05-18), which broadcast widget
enable/disable to every box on BottingTree lifecycle events.

save() now writes a temp file + os.replace() (atomic on NTFS).
Fixed the rotten drop item scanner in C++.  Right now with the rotten scanner the widget will only dropping one item; if you apply the fix to the scanner it will drop the appropriate amount.
Introduce a per-gadget INTERACT_AGENT whiteboard lock and multibox flow to serialize gadget interactions across in-group same-map accounts.

WhiteboardLocks: add INTERACT_LOCK_* constants and helper functions (post/get/clear/is_blocked) with a long default lease to cover move+interact+loot+hold. enums: add SharedCommandType.InteractGadgetWithLock. ApoBottingLib.helpers: add _broadcast_gadget_interact_with_lock to select same-map group recipients and send InteractGadgetWithLock with an adaptive timeout. wrappers: switch multibox gadget interaction to use the new broadcast helper.

Widgets/System/Messaging: import lock helpers, add InteractGadgetWithLock handler implementing the lock-then-interact lifecycle (contention loop, follow-path, interact, loot, hold, and cleanup), include the new command in suspended commands and message dispatching. Overall this prevents double-interacts by serializing turns and provides timeouts and safe cleanup on failures.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant