-
Notifications
You must be signed in to change notification settings - Fork 0
Site Clearance Commander Function Reference
Source-verified 2026-06-21 against master 0139a346. Paths relative to Missions/[55-2hc]warfarev2_073v48co.chernarus/ unless noted. Arma 2 OA 1.64.
Site Clearance is a commander-only build-menu action that fells terrain trees inside the friendly base area so structures and defenses can be placed where the engine's nearby-vegetation would otherwise block them. It is unusual among CoIn build-menu entries: no object is ever built. The menu anchor classname Land_Pneu is registered alongside the side's defenses, but when the player places it the client routes a dedicated RequestSiteClearance public-variable function (PVF) — not the normal RequestDefense path — and the server function deletes nearby trees by damaging them, charging supply only for trees that actually fall.
The action is wrapped in an eight-gate anti-grief chain (feature toggle, alive, commander-identity, Barracks>=1, base-area containment, per-side rate-limit, at-least-one-tree, supply affordability) so it is a deliberate team action rather than a griefable one (Server/Functions/Server_SiteClearance.sqf:13).
| Step | File:line | What happens |
|---|---|---|
| Menu registration | Common/Config/Core_Structures/Structures_CDF.sqf:166-168 |
Land_Pneu appended to WFBE_%1DEFENSENAMES only when WFBE_C_UNITS_BULLDOZER > 0
|
| Build-menu arrays | Client/Init/Init_Coin.sqf:46 |
_allDefenses = missionNamespace getVariable Format["WFBE_%1DEFENSENAMES",sideJoinedText] — the defense list (already containing Land_Pneu from Structures_CDF.sqf:167) is read into _allDefenses for the build menu |
| Repair-truck exclusion | Client/Init/Init_Coin.sqf:48 |
In RCoin/REPAIR context, Land_Pneu is removed (_allDefenses - ["Land_Pneu"]) — commander-only, not a repair-truck action |
| Placement dispatch | Client/Module/CoIn/coin_interface.sqf:725-726 |
On placing Land_Pneu, client sends ["RequestSiteClearance", [sideJoined,_pos,player]] via WFBE_CO_FNC_SendToServer (all other defenses use RequestDefense) |
| PV registration | Common/Init/Init_PublicVariables.sqf:25 |
_l = _l + ["RequestSiteClearance"] registers the PVF channel |
| Server PVF | Server/PVFunctions/RequestSiteClearance.sqf:29 |
Unpacks [_side,_pos,_reqPlayer], calls WFBE_SE_FNC_SiteClearance
|
| Server function | Server/Functions/Server_SiteClearance.sqf:1-167 |
Runs the gate chain and the fell loop |
| Compile binding | Server/Init/Init_Server.sqf:111 |
WFBE_SE_FNC_SiteClearance = Compile preprocessFileLineNumbers "Server\Functions\Server_SiteClearance.sqf" |
| Property | Detail |
|---|---|
| Path | Server/PVFunctions/RequestSiteClearance.sqf |
| Params |
_this select 0 = side; select 1 = placement position [x,y,z]; select 2 = the placing player object (RequestSiteClearance.sqf:17-20) |
| Body |
[_side, _pos, _reqPlayer] Call WFBE_SE_FNC_SiteClearance (RequestSiteClearance.sqf:29) |
| Why a dedicated PVF | The client passes the real player object in the payload so Gate 3 compares the actual placer against the commander. A server-side leader() lookup would always return the commander and make the identity gate inert (RequestSiteClearance.sqf:5-8) |
| Trust model | Client-supplied identity is acceptable: the gate requires the player BE the commander group leader, and coin_interface fires only on the requesting machine, so spoofing gains nothing an attacker could not get by simply being elected commander (RequestSiteClearance.sqf:10-15) |
Single server-only function. Params (array): _this select 0 = side, select 1 = placement position, select 2 = requesting player (Server_SiteClearance.sqf:16-19, 26-28). Returns nothing; its effect is felled trees + a side-supply charge + side-wide feedback message. The local-var block is declared up front in a capitalized private [...] declaration (Server_SiteClearance.sqf:22-24).
| Gate | Line | Condition (rejects when…) | Reject feedback |
|---|---|---|---|
| 1. Feature enabled | Server_SiteClearance.sqf:31 |
WFBE_C_UNITS_BULLDOZER == 0 |
WARNING log only (no player message) |
| 2. Player alive | Server_SiteClearance.sqf:36 |
isNull _reqPlayer or !(alive _reqPlayer)
|
silent exitWith {}
|
| 3. Commander-only | Server_SiteClearance.sqf:44-48 |
_reqPlayer != leader (_side Call WFBE_CO_FNC_GetCommanderTeam) or null team |
SiteClearanceCommanderOnly to player |
| 4. Barracks >= 1 | Server_SiteClearance.sqf:50-59 |
wfbe_upgrades select WFBE_UP_BARRACKS < 1 (count-guarded) |
SiteClearanceNeedsBarracks1 to player |
| 5. Inside friendly base | Server_SiteClearance.sqf:61-80 |
_pos distance every base center >= WFBE_C_BASE_AREA_RANGE
|
SiteClearanceOutsideBase to player |
| 6. Per-side rate limit | Server_SiteClearance.sqf:82-87 |
(time - wfbe_siteclear_last) < 15 |
DEBUG log only |
| 7. At least one tree | Server_SiteClearance.sqf:134-138 |
count _trees == 0 |
SiteClearanceNoTrees to player |
| 8. Supply affordable | Server_SiteClearance.sqf:140-147 |
GetSideSupply < (treeCount * 10) |
SiteClearanceNoSupply (with cost) to player |
Gate-3 detail: _commanderTeam = _side Call WFBE_CO_FNC_GetCommanderTeam reads the commander group stored as wfbe_commander on the side logic; the per-player check is _reqPlayer != leader _commanderTeam (Server_SiteClearance.sqf:44-45).
Gate-4 detail: _logik = _side Call WFBE_CO_FNC_GetSideLogic, _upgrades = _logik getVariable ["wfbe_upgrades", []], then _barrackLvl = _upgrades select WFBE_UP_BARRACKS guarded by count _upgrades > WFBE_UP_BARRACKS (Server_SiteClearance.sqf:52-55). The pattern mirrors Server_CounterBattery.sqf's WFBE_UP_CBRADAR check (Server_SiteClearance.sqf:51).
Gate-5 detail: base centers are built from wfbe_startpos (the HQ start position object) plus each wfbe_basearea logic, all read off the side logic; a point is "in base" if it is within _baseRange of any center (Server_SiteClearance.sqf:64-75).
Gate-6 detail: wfbe_siteclear_last is a server-local variable on the side logic, defaulting to -99 so the first clearance always passes (Server_SiteClearance.sqf:84).
| Property | Detail |
|---|---|
| Defined | Server_SiteClearance.sqf:91-115 |
| Signature | [haystackLower (String), [needle1, needle2, ...]] call _matchAny -> Bool |
| Why it exists | Arma 2 OA's string find is A3-only and throws on A2; this is a hand-rolled replacement (Server_SiteClearance.sqf:89-90) |
| Algorithm |
toArray the haystack and each needle, then slide an index 0..(_hl - _nl) comparing the needle's character codes; sets _found on first hit and short-circuits the remaining checks (Server_SiteClearance.sqf:93-114) |
| Guard | needle skipped unless _nl > 0 && _nl <= _hl (Server_SiteClearance.sqf:101) |
| Aspect | Line | Detail |
|---|---|---|
| Source set | Server_SiteClearance.sqf:120 |
nearestObjects [_pos, [], 25] — every object within 25 m, no type filter |
| Undamaged filter | Server_SiteClearance.sqf:124 |
getDammage _tree < 1 (skip already-felled) |
| Name match | Server_SiteClearance.sqf:125-128 |
toLower (str _tree) must contain ": t_" (Chernarus tree prefix) or ": str_" (legacy) via _matchAny
|
| Bush note | Server_SiteClearance.sqf:119 |
bushes (b_ prefix) are excluded in v1 by design |
| Count | Server_SiteClearance.sqf:132 |
_N = count _trees feeds the supply cost |
The charge ordering is deliberately fell-first, count-confirmed-fells, then charge, so a tree the engine refuses to drop costs nothing (Server_SiteClearance.sqf:8-11, 152).
| Step | Line | Detail |
|---|---|---|
| Rate stamp | Server_SiteClearance.sqf:150 |
_logik setVariable ["wfbe_siteclear_last", time] set BEFORE the loop so re-entrant calls during felling are blocked |
| Cost | Server_SiteClearance.sqf:141 |
_cost = _N * 10 (10 supply per tree) |
| Fell | Server_SiteClearance.sqf:153 |
{_x setDamage 1} forEach _trees |
| Confirm | Server_SiteClearance.sqf:156-157 |
_felled counts trees with getDammage >= 1 after the fell |
| Charge | Server_SiteClearance.sqf:160-161 |
only if _felled > 0: [_side, -(_felled * 10), <log>, false] Call ChangeSideSupply
|
| Side-wide feedback | Server_SiteClearance.sqf:167 |
[_side, "LocalizeMessage", ["SiteClearanceDone", _felled, _felled * 10]] Call WFBE_CO_FNC_SendToClients — team-visible by design |
GetSideSupply (Gate 8) and ChangeSideSupply (charge) are the global-name compiles bound at Common/Init/Init_Common.sqf:42 and :19; WFBE_CO_FNC_GetCommanderTeam is bound at Common/Init/Init_Common.sqf:124.
Client/PVFunctions/LocalizeMessage.sqf resolves six keys; SiteClearanceNoSupply formats one arg (cost) and SiteClearanceDone formats two (felled count, supply spent) (LocalizeMessage.sqf:61-66). English text from stringtable.xml:9509-9524:
| Key | LocalizeMessage.sqf | English text |
|---|---|---|
SiteClearanceCommanderOnly |
:62 |
"Site Clearance can only be used by the commander." |
SiteClearanceNeedsBarracks1 |
:62 |
"Site Clearance requires Barracks level 1 before use." |
SiteClearanceNoTrees |
:63 |
"Site Clearance: no trees found within 25 m of that position." |
SiteClearanceNoSupply |
:64 |
"Site Clearance: insufficient supply (need %1)." |
SiteClearanceDone |
:65 |
"Site clearance: %1 trees felled, -%2 supply." |
SiteClearanceOutsideBase |
:66 |
"Site Clearance position must be inside your base area." |
| Constant | Default | Defined | Role |
|---|---|---|---|
WFBE_C_UNITS_BULLDOZER |
1 |
Common/Init/Init_CommonConstants.sqf:999 |
Master feature gate ("Engineer base-area tree clearing"); also controls whether Land_Pneu is registered as a defense |
WFBE_C_BASE_AREA_RANGE |
250 |
Common/Init/Init_CommonConstants.sqf:631 |
Base-area radius (meters) used by Gate 5 |
WFBE_UP_BARRACKS |
0 |
Common/Init/Init_CommonConstants.sqf:37 |
Index into wfbe_upgrades for the Barracks level read by Gate 4 |
| 25 m tree-scan radius | hard-coded | Server_SiteClearance.sqf:120 |
nearestObjects radius |
| 10 supply/tree | hard-coded | Server_SiteClearance.sqf:141, 161 |
Per-tree cost |
| 15 s rate limit | hard-coded | Server_SiteClearance.sqf:85 |
Per-side cooldown |
Whether setDamage 1 actually fells A2 terrain trees and whether fallen trunks sync to JIP clients is flagged as DEFERRED to the integration smoke test in the function header; the charge-after-confirm ordering is the design safeguard that makes the uncertainty harmless on supply (Server_SiteClearance.sqf:8-11).
- Construction and CoIn Systems Atlas — the object-building build-menu paths Site Clearance deliberately bypasses
-
Server Composition Spawner Function Reference — structure/defense placement (
Server_ConstructPosition/CreateDefenseTemplate) for contrast with this no-build action -
Defense Structures Catalog — the
WFBE_%1DEFENSENAMESdefenses thatLand_Pneurides alongside in the build menu - Commanders Handbook — the commander-only build powers this gate chain protects
-
Networking and Public Variables — the PVF /
SendToServerchannel model behindRequestSiteClearance
Home | Agent Guide | Current live state | Release 1.2.2 (B91) | Quickstart | Progress | Lifecycle wait-chain | Join/disconnect | Parameters/build | Assets/config | SQF atlas | PV index | Modules | Support/specials | Commander/HQ | Commander vote/reassign | Construction/CoIn | Construction cleanup | WDDM compositions | Factory/purchase | Upgrades/research | Towns/camps/capture | Victory/endgame | Markers/cleanup | Server runtime | AI runtime/HC | AI commander audit | HC delegation | Town AI safety | Commander reassignment | Resistance supply | Player UI workflow | UI atlas | Respawn/death | Gear template filter | Vehicle cargo loop | Service guards | UI IDD repair | UI design inspiration | WASP overlay | Feature status | Source propagation | release readiness | Tooling readiness | Integration trust | AntiStack DB | Owner decisions | Shelved registry | Abandoned feature revival | Hardening roadmap | PVF dispatch | Server authority | ICBM authority | Attack-wave authority | Telemetry families | AICOM V2 cutover | Consumer port map | Testing workflow | Server ops | Web tools | Ecosystem repos | Arma 2 OA refs | A2 traps | OA compatibility audit | Coverage ledger | Navigation inventory | Pruning ledger | Knowledge roadmap | Agent context | Collab protocol | Worklog | Audit archive 2026-07 | Briefing reference | Utes invasion concept
- Shelved AICOM concepts - revivable someday ideas (owner-shelved 2026-07-03)
Docs rule: source-backed claims only; Arma 2 OA scripting docs only; gameplay edits start in Missions/[55-2hc]warfarev2_073v48co.chernarus.
- Getting started
- Status and coordination
- Agent context
- Agent collaboration protocol
- Agent worklog
- Agent worklog archive
- Progress dashboard
- PR cleanup and integration lab
- Shelved PR #169: gear price double-count
- Shelved PR #194: Chernarus no-trees
- Coordination board
- Codebase coverage ledger
- Bottleneck removal queue
- Current source status
- Wiki mirror reconciliation
- Navigation inventory
- Registers
- Agent orchestration
- Architecture
- Architecture overview
- Mission entrypoints and lifecycle
- Lifecycle wait chain
- Player join/disconnect and AntiStack lifecycle
- Mission parameters/localization/build inputs
- Stringtable localization key-family catalog
- Source inventory
- Content structure and maps
- Assets/config/localization/parameters
- Mission start parameters index
- Code and networking
- Gameplay systems
- Core systems index
- Gameplay systems atlas
- Commander/HQ lifecycle atlas
- Economy, towns and supply
- Economy system reference
- Balance asymmetries
- Anti-stack skill-balance mechanic
- Empty-side supply income stagnation
- Towns, camps and capture atlas
- Victory and endgame atlas
- Victory conditions reference
- Territorial victory reference
- Marker cleanup and restoration
- Marker loop engine and registries
- Map marker families content catalog
- Marker subsystem function reference
- Client marker FSM updater map
- Support specials and tactical modules
- SCUD TEL tactical munitions
- Naval HVT objectives (carriers/SCUD)
- SCUD saturation strike mechanic
- Takistan airfield FPV drone design
- Construction and CoIn systems
- Structure damage reduction & friendly-fire
- Construction logic list cleanup
- Flak tower & WDDM anchor compositions
- Resistance supply scaffold
- GUER Insurgents faction overview
- GUER Insurgents branch audit
- GUER insurgent player economy
- GUER air-defense loop (Ka-137/Mi-24)
- Upgrades and research atlas
- Supply mission architecture
- Supply mission authority cleanup
- Current supply helicopters PR1
- Respawn and death-loop lifecycle
- Vehicle theft economy pitch
- GUER tunnel network pitch
- Content, reference and catalogs
- Faction unit/vehicle roster catalog
- Auxiliary/SF/civilian unit catalog
- Gear store loadout route catalog
- Upgrade research (cross-faction)
- Gear store price and upgrade catalog
- Gear store catalog (complete, per faction)
- Defense structures catalog
- Artillery reference per faction
- AI squad team templates catalog
- Town AI lifecycle reference
- Town AI group composition catalog
- Class-skill system reference
- Player skill abilities reference
- Default gear template content catalog
- Chernarus map content reference
- Takistan map content reference
- Takistan features
- Takistan parity reference
- Takistan oilfields objective reference
- IRS IR-smoke countermeasure
- Arty module special munitions
- Zeta cargo sling-load reference
- Spawn primitive function reference
- Kill and score pipeline
- Waypoint helper function reference
- Position and proximity function reference
- Side/team state function reference
- Player AI watchdog and recovery
- AICOM stuck-recovery v2
- LoadoutManager data-model contributor guide
- Discord status bot setup and reference
- GLOBALGAMESTATS extension reference
- New player quickstart (player guide)
- Optional client mods (player guide)
- Earning funds and score (player guide)
- Vehicle service and logistics (player guide)
- Commander's handbook (player guide)
- Tactical support menu
- Paradrop player experience
- Supply missions (player guide)
- In-game briefing & Diary field manual
- Playable maps catalog
- Faction root variables reference
- Faction base structures catalog
- Counter-battery radar system
- Bank, Reserve and Artillery Radar structures
- Map ruleset model and object config
- Countermeasures module reference
- Vehicle countermeasure (flares/spoofing)
- UAV terminal and spotter system
- Artillery firing function reference
- Service Point pricing model
- Medic redeployment truck (forward spawn)
- Side-patrol runtime and convoy mechanics
- Day/night cycle and weather system
- Config lookup helper reference
- CIPHER sort utilities reference
- Modded maps status and content
- BattlEye filter setup and OA taxonomy
- Player squad/group join protocol
- AutoFlip vehicle recovery
- Engine stealth fuel toggle
- Valhalla vehicle climbing-assist
- Missile and ordnance Fired-EH reference
- Vehicle equip and rearm reference
- Array and collection utilities
- Server composition spawner reference
- Upgrade queue server loop
- Map boundaries and off-map enforcement
- Namespace/profile/diagnostic utilities
- Group bool getVariable A2-OA trap
- Vehicle weapon balance init
- View distance auto-throttle
- Camp & respawn-camp getters
- Performance audit writer
- Site clearance (bulldozer)
- Factory queue cancel & refund
- AI commander tunable constants
- Experimental feature-flag constants
- Flag system quick reference
- Mission tunable constants catalog
- Gear parsing & cargo capacity
- Structure dressing function
- Paradrop delivery functions
- ICBM nuke client VFX & radiation
- Server HandleSpecial router
- LocalizeMessage chat router
- Gear buy-menu render & price functions
- Server broadcast & telemetry loops
- Per-unit client init pipeline
- Vehicle marking & texture pipeline
- Defense category & budget
- Legacy AI order primitives
- Commander-team driver
- AICOM command verbs
- AICOM behavior fix taxonomy
- AI commander wildcard deck reference
- AICOM aircraft and airfield system
- Static-defense manning
- End-of-game stats screen
- AI commander execution loop
- Deployable bipod / weapon resting
- Town-economy getters
- Server-init deadspawn & airfield probe
- GUER VBIED detonate action
- Resource income-tick engine
- AI commander treasury accessors
- PVF send-helper contracts
- AICOM logging & AICOMSTAT telemetry
- AICOMSTAT v2 event census
- WASPSCALE v2 telemetry
- WASPSCALE v2-ext coverage audit
- Telemetry families reference
- Group lifecycle & entity reaping
- Batch AI spawner orchestrator
- Client funds/income HUD readout
- Server group GC & cap warning
- Town runtime tuning constants
- Client input/hotkey handler
- WASP base-repair system
- WASP DropRPG launcher/ordnance
- CoIn construction-interface client engine
- Town-capture garrison & airfield rebuild
- Map-control & minimap templates
- Client FPS & state telemetry
- Client service-proximity getters
- Airfield-exclusive roster & unit hints
- Unit-camera spectator system
- Town-garrison patrol/defense worker
- RequestTeamUpdate squad-discipline
- Arma2Warfare GPT assistant
- LoadoutManager build configs & defines
- GLOBALGAMESTATS extension logging
- Discord bot instrumented logging
- Eden/Everon & Taviana map content
- Cruise missile strike asset
- AI / HC
- AI headless and performance
- AI mods and pathfinding reference
- Headless client scaling and topology
- AI runtime/HC loop map
- Headless client init and stat loop
- HC delegation target selection
- Player AI caps and role balance
- Old WarfareBE FPS comparison
- AI commander autonomy audit
- Upstream BE 2073 AICOM delta
- Parent 2.073 divergence audit
- AI commander capture & fun plan
- AI commander B69 improvement roadmap
- AI commander B69 implementation sketches
- AICOM V2 cutover status
- Headless delegation and failover
- Commander reassignment call shape
- GUER Director living-resistance pitch
- Quality and operations
- Foundation perf findings & Tier-3 dead-ends
- Dead/stale code register
- Commander vote/reassignment
- Attack-wave authority
- Server runtime and operations
- Server ops runbook
- JIP enrollment & client data delivery (b74.2 lessons)
- Server gameplay runtime atlas
- PerformanceAuditAnalyzer
- Performance opportunity sweep
- Documentation plan
- Knowledge platform roadmap
- Wiki quality audit
- Wiki pruning and relevance ledger
- Audit findings queue (2026-06-03)
- Deep review findings
- Client UI / server-loop perf findings
- Performance gain simulation
- Self-host testing field notes
- Cleanup and work lanes
- Hardening and authority
- UI / player workflows
- Client UI, HUD and menus
- UI HUD and dialogs
- Player UI workflow map
- Client UI systems atlas
- UI IDD collision repair
- UI control class library reference
- UI theme palette and style macros
- UI design inspiration 2026-07
- Available-actions client gate FSM
- Gear/loadout/EASA atlas
- Gear template profile filter
- Vehicle cargo equip loop bounds
- Factory and purchase systems atlas
- Service menu affordability guards
- WASP overlay
- Class-skill system reference
- Skin selector and class swap
- Earplugs audio toggle
- Mission audio catalog
- HQ radio knowledge-base catalog
- QoL trio player hints
- Player vehicle/travel actions
- Tooling / release / integrations
- Tools and build workflow
- Warfare web tools
- Ecosystem & companion repos
- Zargabad tooling parity
- July 2026 release readiness
- Operator monitor and CPU affinity tools
- Tooling release readiness audit
- Source fix propagation queue
- Agent release readiness ledger
- Release source intake map
- Testing/debugging/release workflow
- Current RPT release gate
- RPT telemetry consumer port map
- External integrations
- Integration trust boundary audit
- AntiStack database extension audit
- Community & Dev
- Community & Dev
- Miksuu upstream wiki import / archive index
- Upstream changelog feature leads
- Developer history and upstream lessons
- Upstream Miksuu commit intel
- Upstream mining ledger
- Archive script mining v2
- Upstream BE 2073 AICOM delta
- Parent 2.073 divergence audit
- PR8 and Drone upstream lesson match
- Development lessons learned
- External research reports
- Audit archive 2026-07
- Briefing reference
- Utes invasion concept
- Miksuu archive: Home
- Miksuu archive: Welcome
- Miksuu archive: Big announcements
- Miksuu archive: Changelog
- Miksuu archive: Development process
- Miksuu archive: Discord bot
- Miksuu archive: Gameplay videos
- Miksuu archive: LoadoutManager
- Miksuu archive: Chernarus script architecture
- Base-game visual catalogs
- Compatibility and references
- HC upstream history and lessons
- Player stats branch audit
- BuyMenu EASA QoL branch audit
- Perf quick wins branch audit
- Commander positions branch audit
- Zargabad branch audit
- Quad AI Commander concept
- Arma 2 OA external reference guide
- Base-game config & image reference
- Arma 2 OA compatibility audit
- Arma 2 OA agent traps reference
- Arma 2 OA command versions
- Wiki source consistency
- External Arma 2 OA reference index