Skip to content

WASP Overlay

rayswaynl edited this page Jun 22, 2026 · 19 revisions

WASP Overlay

Claude deep-dive page (source-cited). Documents the project-specific WASP/ subtree that is layered on top of stock Benny Warfare BE (WFBE). Stock WFBE systems are covered in Architecture overview and the per-system pages; this page covers only the WASP additions.

All paths are relative to the source mission root Missions/[55-2hc]warfarev2_073v48co.chernarus/.

What "WASP" is

WASP is the community/server identity this fork is built for. The mission credits itself as "Warfare WASP-AWESOME EDITION" in Client/GUI/GUI_Menu_Help.sqf:149, and mission.sqm:25 has briefingName="Warfare V48 Chernarus [GUER]"; the old briefingDescription="by Benny and Awesome&WASP" attribution is no longer present in master (line 26 now reads the AI-eval build description). The WASP/ folder holds custom features added on top of stock WFBE, contributed over time by several authors (English additions by "Marty", Russian-language contributions with Cyrillic comments, and DeraKOren for the RPG-dropping system). It is unrelated to "WASP" as any engine term.

Subtree map

File Purpose Wired in / status
WASP/Init_Client.sqf Original WASP client entry point. Dead — entire body commented (WASP/Init_Client.sqf:5-21). Superseded by direct wiring in Client/Init/Init_Client.sqf.
WASP/common/procInitComm.sqf MP-safe wrapper around setVehicleInit/processInitCommands/clearVehicleInit to run init code on a vehicle network-wide. Compiled as WASP_procInitComm only in the commented block at initJIPCompatible.sqf:243-245, specifically :243 → function is undefined at runtime.
WASP/actions/AddActions.sqf Re-adds player scroll actions on spawn/respawn and creates the class diary/earplug client conveniences. Live (Client/Init/Init_Client.sqf:650). Legacy gear/wheel/on-armor actions are commented, while HQ recovery, the class diary, the on-foot earplug action and the mounted-vehicle earplug mirror are active (WASP/actions/AddActions.sqf:15,21-30,37-39,50-65).
WASP/actions/Action_RepairMHQDepot.sqf Commander-only: spend cash to paradrop-respawn a destroyed HQ near the player; resets all town SV to 10. Live (via AddActions.sqf).
WASP/actions/EarplugToggle.sqf Local player audio toggle for earplugs; the WASP action path fades both sound and radio and refreshes the on-foot/vehicle action titles. Live (via AddActions.sqf; see Earplugs audio toggle).
WASP/actions/SkinSelector/* Optional infantry skin selector and player-body class swap. Source-present, default off: WFBE_C_SKIN_SELECTOR defaults to 0, the WF-menu shortcut is hidden, and the apply chain recreates the player body before restoring actions/handlers (Common/Init/Init_CommonConstants.sqf:601; Rsc/Dialogs.hpp:1258; WASP/actions/SkinSelector/SkinSelector_Apply.sqf:207-257; see Skin selector/class swap).
WASP/actions/OnKilled.sqf On player death, re-runs AddActions.sqf to reattach actions after respawn. Live (Client/Functions/Client_PreRespawnHandler.sqf:11).
WASP/actions/GearYouUnit.sqf Open the gear dialog on a nearby AI subordinate. Orphan — only caller is a commented line AddActions.sqf:4.
WASP/actions/car_wheel_new.sqf Wheel repair for immobilized cars; calls WASP_procInitComm. Broken orphan — only caller is commented (AddActions.sqf:6); would also crash on the undefined WASP_procInitComm.
WASP/baserep/init.sqf Bootstraps base-repair: #includes data.sqf + viem.sqf. Live (Init_Client.sqf:588).
WASP/baserep/data.sqf Table mapping base building classnames → display name, interaction distance, repair-rate %. Data include.
WASP/baserep/viem.sqf Commander-only loop: HUD building-health overlay; attaches/removes a "Repair" action near damaged structures. Spotters also see enemy building health at range. Main baserep loop.
WASP/baserep/repair.sqf Performs the repair: medic animation, drains side supply, increments building HP per tick. Called by viem.sqf.
WASP/global_marking_monitor.sqf Intercepts map double-click to auto-prefix the player's name onto marker text. Live (Client/Init/Init_Client.sqf:309 on current origin/master@0139a346). Stable/B69/B74/client-fps have the display-54 sleep 0.1 throttle; docs/source, current Miksuu and perf still need propagation or an intentional refactor. See WASP marker wait cleanup.
WASP/rpg_dropping/DropRPG.sqf By DeraKOren (2012). (a) single-use AT-launcher weapon-swap, (b) pipe-bomb TK prevention near friendly bases, (c) mine time-tracking. Live (Init_Client.sqf:15 + recompiled on respawn at Client_PreRespawnHandler.sqf:12).
WASP/unsort/StartVeh.sqf Defines EAST_StartVeh / WEST_StartVeh classname pools for one random extra starting vehicle per side. Live (compiled Init_Server.sqf:306, used :425-459).

"baserep" is base repair, not base reputation. "unsort" is literally an unsorted dumping folder — StartVeh.sqf is live but the author never moved it into the proper Common/Config/ hierarchy.

Do not confuse WASP base repair with the stock Server_HandleBuildingRepair.sqf path. WASP base repair is live client-side wiring from Init_Client.sqf:588 through WASP/baserep/viem.sqf and repair.sqf; Server_HandleBuildingRepair.sqf is compiled but no active source caller was found during the construction audit.

How WASP is wired into the stock lifecycle

The original single entry point (WASP/Init_Client.sqf, formerly called from the commented block at initJIPCompatible.sqf:241-245) was disabled by Marty as "old wasp script using resources unnecessarily." WASP features are now wired individually:

Call site Wires
Init_Client.sqf:15 WASP/rpg_dropping/DropRPG.sqf
Client/Init/Init_Client.sqf:309 WASP/global_marking_monitor.sqf
Client/Init/Init_Client.sqf:649 WASP/baserep/init.sqf
Client/Init/Init_Client.sqf:650 WASP/actions/AddActions.sqf
Client_PreRespawnHandler.sqf:11-12 WASP/actions/OnKilled.sqf + recompile DropRPG.sqf
Init_Server.sqf:306,425-459 WASP/unsort/StartVeh.sqf
updateclient.sqf:124-145 / updateteamsmarkers.sqf:88 WASP_AFK player variable (AFK detection + "(AFK)" marker suffix)

Locality / JIP Notes

WASP feature Locality status Development note
HQ recovery action Mostly client-side. Action_RepairMHQDepot.sqf checks funds/HQ state, deducts player cash, moves the HQ and mutates town supply locally before sending the repair request. Treat as an authority-light legacy action. If hardened, move commander/funds/HQ/town-SV validation to the server side through Commander/HQ lifecycle and Server authority map.
Global marking monitor Intentionally client-local map double-click helper. Safe for UI behavior; do not expect it on HC/server.
Earplugs action Local player audio/action state split between the WASP scroll/vehicle path and the WF menu EAR button. Use Earplugs audio toggle before changing titles, action ids or volume values; current source uses separate WFBE_WASP_EarplugActive and WFBE_Earplugs state keys.
Start vehicles Server-owned spawn state from WASP/unsort/StartVeh.sqf, compiled/used in Init_Server.sqf. Not a JIP UI feature; changes affect initial server-side vehicle spawning and generated mission skip-list mirroring.
Respawn action re-add WASP/actions/OnKilled.sqf re-runs AddActions.sqf; current wiring comes through Client_PreRespawnHandler.sqf. Keep this dependency when changing respawn handlers, or the active HQ recovery action can disappear after respawn.
Base repair action state WASP/baserep/viem.sqf:47-53 stores selected repair target/index in shared globals obj and objnum; WASP/baserep/repair.sqf:16,20,24,27 consumes those globals during the timed repair. Two overlapping repair flows can stomp target state. Convert to action arguments or player-local variables before making base repair more prominent.
Base repair supply gate WASP/baserep/repair.sqf:6-8 snapshots side supply once, then spends -15 every tick at :24 without rechecking; the exit check at :23 still uses the old snapshot. Repair can continue past available side supply. Re-read/clamp supply before each spend or move the repair ledger server-side.

Deep-review findings DR-40 reviewed the WASP Perf + JIP/HC cells. The live WASP wiring is JIP/HC-clean because it runs per player from Init_Client.sqf, and headless clients skip these player-local features. The DR-40 perf nit in WASP/global_marking_monitor.sqf:62-72 is branch-sensitive after the 2026-06-22 refresh: current stable origin/master@0139a346, B69, B74 and origin/feat/client-fps@709258e7 carry sleep 0.1 in both maintained roots, while docs/source HEAD@46840f048bd4, current Miksuu b8389e748243 and perf 0076040f still need the throttle if they remain code targets. Smoke marker dialog open/Enter/Escape/timeout before expanding marker behavior. See WASP marker wait cleanup.

Wave N Fragility Checks

The Wave N WASP scout rechecked several old-action edges that are easy to misread as live features:

  • WASP/actions/AddActions.sqf:15 assigns the HQ recovery action ID through 208 = player addAction ..., an unusual global numeric variable style. Treat it as legacy action-ID storage; do not copy that pattern into new actions.
  • WASP/actions/AddActions.sqf:15 does not hide the HQ cash-recovery action after it has been used; the one-time cashrepaired flag is only checked inside Action_RepairMHQDepot.sqf:8-9,23-24. The menu entry can remain visible and then fail with the "HQ cannot be repaired using cash twice!" hint.
  • WASP/actions/Action_RepairMHQDepot.sqf:6-29 performs the cash gate, cash deduction, local HQ position move and local town-SV reset before/around RequestMHQRepair. The server still owns the final HQ repair in Server_MHQRepair.sqf, but the preflight economics and visible side effects are client-led.
  • WASP/common/procInitComm.sqf:2-6 is not just dormant; if revived as-is, it calls _obj setVehicleInit "_initCMD" with a literal string instead of the command variable. Any revival must fix that call shape and deliberately accept the Arma 2 OA setVehicleInit/processInitCommands JIP semantics.
  • The commented initJIPCompatible.sqf:241-245 WASP bootstrap is the only compile site for WASP_procInitComm, so car_wheel_new.sqf remains a dead chain until both the bootstrap and call shape are repaired.

Dead / missing WASP references (cleanup candidates)

These are referenced only from commented-out lines, or point at files that no longer exist. See Feature status register for the full disabled-feature inventory.

  • WASP/Init_Client.sqf body — fully commented (Killed EH, OnArmor timer, KeyDown handler, trigger creation).
  • WASP/actions/OnArmor/ and WASP/actions/SitsOnArmor/ directories — deleted; still referenced by commented AddActions.sqf:10-12 and Init_Client.sqf:7,21.
  • WASP/KeyDown.sqfmissing; referenced by commented Init_Client.sqf:12-13.
  • WASP_procInitComm — compile line commented (initJIPCompatible.sqf:243, inside block :241-245), so car_wheel_new.sqf (its only consumer) is a dead chain.
  • test/wasp_selftest.sqfnot present in the source mission. Current source has no root init.sqf, no test/ directory, no *selftest* file, and no WASP-SELFTEST log tag. Treat any old self-test description as a documentation error, not a dormant feature.
  • WASP/actions/GearYouUnit.sqf is still present, but the action that opens it is commented at WASP/actions/AddActions.sqf:4; DR-35 also found this dead action was one of the apparent localization misses.
  • The commented OnArmor actions reference missing localization keys and missing scripts, but DR-35 verified these are dead-code misses rather than live broken strings.

Parameters And Localization Notes

The mission parameter system is live and index-aligned: Common/Init/Init_Parameters.sqf:5-10 iterates missionConfigFile >> "Params" and reads paramsArray select _i in multiplayer. Keep class Params ordering stable when inserting or removing parameters, or every later parameter value can silently shift.

Localization was reviewed clean in DR-35 after case-folding and dead-code filtering. Do not spend time chasing the WASP OnArmor/Gear string keys as live UI bugs unless the dead actions are deliberately revived.

Continue Reading

Previous: Content/maps | Next: SQF code atlas

Main map: Home | Fast path: Quickstart | Agent file: agent-context.json

Sidebar

Clone this wiki locally