Skip to content

GUER Commissar Panel

rayswaynl edited this page Jul 15, 2026 · 1 revision

GUER Commissar Panel

Source pass: 2026-07-08 against live rayswaynl/a2waspwarfare origin/master after recent PR/merge review. This page is about the GUER WF-menu Town Actions panel, not Commander Town Ledger (CTL).

What It Is

The GUER Commissar Panel is the resistance-only WF-menu surface opened from the GUER Economy slot. It lets GUER players spend their own funds and town funds on town interventions:

  • direct reinforcement: convoy or instant;
  • QRF contract: insert, gunship, or combo;
  • counter-attack contract on town loss;
  • town-fund donation.

The panel is a human-facing control surface for the GUER Director. The client asks for quotes and actions; the server validates side/funds/cooldowns/caps; the GUER Director consumes accepted pending orders and remains the materialization authority.

Not CTL

Do not confuse this with Commander Town Ledger:

  • GUER Commissar Panel: GUER side, WFBE_GDirCommissarMenu, backed by RequestGDirPanel.sqf and Server_GuerDirector.sqf.
  • Commander Town Ledger (CTL): WEST/EAST virtual town-defense ledger, open in PR #886 and consolidation PR #904, explicitly not a GUER change.
  • WASP-next is out of scope; the live mission is a2waspwarfare.

Current Source Anchors

Entrypoint and dialog:

  • Client/GUI/GUI_Menu.sqf:254-256: GUER Economy slot opens WFBE_GDirCommissarMenu.
  • Client/GUI/GUI_Menu.sqf:363-368: hub path opens the GUER Director panel.
  • Rsc/Dialogs.hpp:4726: defines WFBE_GDirCommissarMenu.
  • Rsc/Dialogs.hpp:4799: title text GUER COMMISSAR PANEL.
  • Rsc/Dialogs.hpp:4826: explicit rowHeight hotfix; missing rowHeight produced engine popup.

Client:

  • Client/GUI/GUI_Menu_GuerCommissar.sqf:85: heatmap refresh from WFBE_COMM_GDIR_SNAP.
  • Client/GUI/GUI_Menu_GuerCommissar.sqf:300: server quote request.
  • Client/GUI/GUI_Menu_GuerCommissar.sqf:407-409: [QRF ARMED] status.
  • Client/GUI/GUI_Menu_GuerCommissar.sqf:418-448: visible action sends.
  • Client/GUI/GUI_Menu_GuerCommissar.sqf:458: uses dialog; do not reintroduce A3-only isDialog.

Networking/constants:

  • Common/Init/Init_PublicVariables.sqf:34: RequestGDirPanel.
  • Common/Init/Init_PublicVariables.sqf:60: GDirPanelResult.
  • Common/Init/Init_PublicVariables.sqf:102-103: WFBE_GDIR_ORDER_MSG broadcast path.
  • Common/Init/Init_CommonConstants.sqf:1981-1992: main panel dials; current source sets AICOMV2_GDIR_PANEL = 1.
  • Common/Init/Init_CommonConstants.sqf:2002-2007: cache/relief/mortar pricing dials from #827.
  • Common/Init/Init_CommonConstants.sqf:2449: WFBE_C_GDIR_VIS = 1.

Server:

  • Server/PVFunctions/RequestGDirPanel.sqf:207: contract cap.
  • Server/PVFunctions/RequestGDirPanel.sqf:220: group-budget gate.
  • Server/PVFunctions/RequestGDirPanel.sqf:257-273: buy/QRF/counter pricing.
  • Server/PVFunctions/RequestGDirPanel.sqf:284, :390, :414: server-side mortar/cache/relief verbs beyond the current screenshot surface.
  • Server/PVFunctions/RequestGDirPanel.sqf:292, :301, :328, :335, :392, :400, :404, :410: current SendToClient shape passes _player, not UID.
  • Server/PVFunctions/RequestGDirPanel.sqf:450-456: accepted-order label map.
  • Server/AI/Server_GuerDirector.sqf:17: GDIR_DUPLICATE_BLOCKED singleton guard.
  • Server/AI/Server_GuerDirector.sqf:338, :345, :353: GDIR_ORDER telemetry for player-funded orders/contracts.
  • Server/AI/Server_GuerDirector.sqf:479-480, :523-524: QRF/counter broadcasts.
  • Server/AI/Server_GuerDirector.sqf:575: GDIR_VOLUME.
  • Server/AI/Server_GuerDirector.sqf:634-635: JIP snapshot with transit index 5.

Recent PR / Merge Chain

  • #803: original A1 Commissar Panel.
  • #808: onLoad escape fix plus Director/Panel enable.
  • #814: GUER Economy-slot entry.
  • #817: UX v2, cost display, minimap, styling, back nav.
  • #819: revive inert Director/Panel path.
  • #827: hardening and shop amendment; cache/relief/mortar server verbs.
  • #833: GUER Town Actions button un-grey fix.
  • #840: live town list, bigger minimap, side-colored towns.
  • #853: isDialog spam fix and Director singleton guard.
  • #858/#862: GUER map markers, town health flags, inbound reinforcement markers.
  • #866: Commissar visibility four-pack.
  • #870: separate GUER Drone Operations menu in same WF-menu neighborhood.
  • #873: GUER Tech View V2 cross-link to the Commissar Panel.
  • #878/#888: closed, not merged as PRs; rowHeight and SendToClient fixes were applied direct to master as efd0a6ad3 and b8c99fa86.
  • #886/#904: open CTL work; W/E sibling, not this feature.

Improvement Branches

Blue - current/harden:

  • Preserve the current trust boundary: client requests only, server validates and debits, Director materializes.
  • Treat source/master as authoritative when older design docs or vault notes still describe the feature as planned.
  • Avoid A3-only UI helpers such as ctrlSetTooltip; use status text, result rows, or hints.

Green - UI:

  • Keep the existing layout shape: town list/map left, action board right.
  • Add clearer town chips for owner, strength band, inbound, QRF armed, counter armed, and cooldown.
  • Show quote age and exact town-fund/wallet debit split.
  • Put disabled reasons in the status row.
  • Add a compact order/cooldown event log.

Red - tests/telemetry:

  • Static lint is not engine proof.
  • Runtime smoke should cover GUER-only open path, wrong-side denial, quote rate-limit, donate, insufficient funds, cooldown, contract cap, group-budget cap, _player reply path, QRF fire, counter fire, and late-JIP snapshot.
  • Watch RPT for GDIR_PANEL, GDIR_ORDER, GDIR_VOLUME, GDIR_DUPLICATE_BLOCKED, and WFBE_GDIR_ORDER_MSG.
  • #827 noted mortar double-debit risk; verify or fix before exposing/polishing mortar UI.

Gray - agent setup:

  • Read Agent Guide, GUER Director living-resistance pitch, this page, and the live repo handoff note before claiming.
  • Check open #886/#904 before touching shared constants or town AI files.
  • Keep GUER Commissar, GUER Director ledger, CTL, and WASP-next separate in every handoff.

See Also

Sidebar

Clone this wiki locally