Skip to content

Victory Conditions Reference

rayswaynl edited this page Jul 3, 2026 · 1 revision

Victory Conditions Reference

This page maps how Build84 rounds end: HQ/factory loss, all-towns supremacy, territorial victory, endgame pressure, and client handoff. Source anchors cite origin/claude/build84-cmdcon36@873c7f7af25070bbf690d27cc4c006d45a00155f.

Use this as the quick operator and agent reference. For deep history, correctness risks and branch archaeology, continue to Victory and endgame atlas. For the dedicated 80%/30min mode, use Territorial victory reference.

Scope note: file paths below are relative to Missions/[55-2hc]warfarev2_073v48co.chernarus/ on the target branch. Maintained Vanilla/Takistan line numbers can drift and should be checked before source-patch wording.

Fast Routing

Question Current answer Source
What script ends the round? Server/FSM/server_victory_threeway.sqf owns the victory loop, winner award, final telemetry, AntiStack tail and mission shutdown. server_victory_threeway.sqf:9-288
Does WFBE_C_VICTORY_THREEWAY still gate standard wins? No. The script still reads it, but current Chernarus deliberately keeps standard supremacy/HQ-loss detection running regardless of the flag. server_victory_threeway.sqf:3,11-15; Common/Init/Init_CommonConstants.sqf:1706-1707
What are the standard win paths? All towns held by a side, or one side's HQ dead with zero factories left. The award block computes _winSide explicitly before broadcasting endgame. server_victory_threeway.sqf:122-179
What is territorial victory? A separate default-on 80% town-share clock for 30 uninterrupted minutes. It routes through the same award path once complete. Common/Init/Init_CommonConstants.sqf:949-951; server_victory_threeway.sqf:51-57,145-170
Is endgame force a victory mode? No. It is default-off economic pressure for unresolved rounds. When enabled, it tapers AICOM town cash income after 90 minutes. Common/Init/Init_CommonConstants.sqf:663-666; server_victory_threeway.sqf:16-34; Server/FSM/updateresources.sqf:48-54
What do players receive? The server sends HandleSpecial ["endgame", winnerSideID]; clients set local game-over flags and run Client_EndGame.sqf with the winner side. server_victory_threeway.sqf:179; Client/Functions/Client_FNC_Special.sqf:61-67; Client/Client_EndGame.sqf:3-11
How long does the outro stay open? WFBE_C_ENDGAME_HOLD defaults to 45 seconds before the server calls failMission "END1". Common/Init/Init_CommonConstants.sqf:1301; server_victory_threeway.sqf:250-254,284-288

Current Constants

Constant Default Meaning Source
WFBE_C_VICTORY_THREEWAY 0 Legacy victory-condition parameter. Current Chernarus no longer lets non-zero values disable standard detection, but no new mode is implemented by this flag. Common/Init/Init_CommonConstants.sqf:1706; server_victory_threeway.sqf:11-15
WFBE_C_VICTORY_THREEWAY_LOCATION_SWAP 300 Legacy respawn/start-location rotation timing. This is separate from the territorial clock. Common/Init/Init_CommonConstants.sqf:1707; Client/Functions/Client_GetRespawnAvailable.sqf:91-98
WFBE_C_VICTORY_TERRITORIAL 1 Master enable for the territorial clock. Common/Init/Init_CommonConstants.sqf:949; Rsc/Parameters.hpp:357
WFBE_C_VICTORY_TERRITORIAL_FRAC 0.8 Town-share ratio required before the territorial clock runs. Common/Init/Init_CommonConstants.sqf:950; Rsc/Parameters.hpp:363
WFBE_C_VICTORY_TERRITORIAL_MINS 30 Uninterrupted minutes at or above the ratio before territorial victory is awarded. Common/Init/Init_CommonConstants.sqf:951; Rsc/Parameters.hpp:369
WFBE_C_ENDGAME_FORCE_ENABLE 0 Default-off switch for the soft-forcing income taper. Common/Init/Init_CommonConstants.sqf:663; server_victory_threeway.sqf:22
WFBE_C_ENDGAME_FORCE_TIMER 90 Unresolved-round minutes before the soft-forcing taper starts when enabled. Common/Init/Init_CommonConstants.sqf:664; server_victory_threeway.sqf:24
WFBE_C_ENDGAME_FORCE_TAPER_STEP 0.04 Per-minute reduction applied after the timer. Common/Init/Init_CommonConstants.sqf:665; server_victory_threeway.sqf:26
WFBE_C_ENDGAME_FORCE_TAPER_FLOOR 0.10 Minimum income multiplier floor for soft-forcing. Common/Init/Init_CommonConstants.sqf:666; server_victory_threeway.sqf:27
WFBE_C_ENDGAME_HOLD 45 Seconds the server holds the round open after a winner is set so the outro can play. Common/Init/Init_CommonConstants.sqf:1301; server_victory_threeway.sqf:250,284

Outcome Paths

Path Trigger Winner semantics
All-towns supremacy The evaluated side holds all towns: _towns == _total. _winSide = _x; the evaluated side is the winner.
HQ/factory loss The evaluated side's HQ is not alive and its factory count is zero. _winSide becomes the opposite side; the evaluated side is the loser.
Territorial dominance WFBE_TERRITORIAL_WIN_<sid> was set by the territorial clock block. _winSide = _x; the evaluated side is the dominating holder.

The current award condition is guarded by !WFBE_GameOver and combines all three triggers in one block (server_victory_threeway.sqf:152-159). The side loop also exits once WFBE_GameOver is set (server_victory_threeway.sqf:129-132), which prevents a second same-tick award.

GUER/resistance is excluded from the victory candidate side loop. Resistance can deny territory and affect town control, but it is not crowned by the standard WEST/EAST victory pass or by the territorial clock.

Award Sequence

When a trigger fires, the server:

  1. Computes _winSide for the exact trigger path (server_victory_threeway.sqf:160-178).
  2. Broadcasts the endgame special with the winner side id (server_victory_threeway.sqf:179).
  3. Writes map state, WF_Winner, gameOver and WFBE_GameOver (server_victory_threeway.sqf:181-188).
  4. Emits optional final telemetry: AICOMSTAT|v2|FINAL|... per side and WASPSTAT|v1|...|ROUNDEND|winner|duration|world (server_victory_threeway.sqf:190-234).
  5. Calls the live win logger with _winSide (server_victory_threeway.sqf:237; Server/Functions/Server_LogGameEnd.sqf:7-43).
  6. Exits the main loop, then either skips final DB persistence when AntiStack is disabled or stores player score deltas and flushes the player list (server_victory_threeway.sqf:249-288).
  7. Sleeps for WFBE_C_ENDGAME_HOLD and calls failMission "END1" (server_victory_threeway.sqf:250-254,284-288).

Player-Facing Endgame

The client special handler sets local gameOver and WFBE_GameOver, converts the received side id to a side value, and executes Client\Client_EndGame.sqf (Client/Functions/Client_FNC_Special.sqf:61-67).

Current Client_EndGame.sqf treats the payload as the winner. The old side inversion is removed, so the stats screen, flyover and optional victory FX should all be fed the winning side (Client/Client_EndGame.sqf:3-11,65-75). GUI_EndOfGameStats.sqf labels WEST, EAST and RESISTANCE explicitly, with the GUER label fix at lines 5-10.

Telemetry And Smoke Cues

Moment Expected cue
Endgame force engages `AICOMSTAT
Territorial clock starts `AICOMSTAT
Territorial milestone `AICOMSTAT
Territorial grip breaks `AICOMSTAT
Territorial win awarded `AICOMSTAT
Final AICOM snapshot `AICOMSTAT
Round-end telemetry `WASPSTAT
Persistent win logger LogGameEnd.sqf: Team [...] has won the match! from Server_LogGameEnd.sqf:12.

Agent Guardrails

Do Avoid
Say standard detection currently runs even if the legacy threeway flag is non-zero on Chernarus. Do not revive the old _victory == 0 gate or describe it as a live mode selector.
Describe territorial victory through WFBE_C_VICTORY_TERRITORIAL*, not WFBE_C_VICTORY_THREEWAY. Do not call the 90-minute endgame soft-force timer the territorial-victory timeout.
Route detailed territorial behavior to Territorial victory reference. Do not duplicate or fork the full milestone/clock lifecycle here.
Keep winner-payload language aligned across server broadcast, client endgame, GUI stats, WASPSTAT and LogGameEnd. Do not mix old loser-payload client semantics with current Build84 target wording.
Label default-off or PR-only behavior clearly. Do not imply dark flags are active on live servers without runtime proof.
For source PRs, patch Chernarus source first and propagate maintained Vanilla with LoadoutManager. Do not hand-edit generated mirrors or touch Modded_Missions for this reference lane.

Source Map

Surface Anchors
Victory loop and award block Server/FSM/server_victory_threeway.sqf:1-288
Standard detection guard and legacy threeway trap note server_victory_threeway.sqf:3,11-15,122-159
Territorial clock and win marker server_victory_threeway.sqf:51-120,145-170
Endgame soft-forcing publisher server_victory_threeway.sqf:16-40
Endgame soft-forcing consumer Server/FSM/updateresources.sqf:48-54,115,139
Constants Common/Init/Init_CommonConstants.sqf:656-666,949-951,1301,1706-1707
Lobby parameters Rsc/Parameters.hpp:351-369
Legacy respawn/start-location use Client/Functions/Client_GetRespawnAvailable.sqf:91-98
Client special receiver Client/Functions/Client_FNC_Special.sqf:61-67
Client outro and winner payload Client/Client_EndGame.sqf:3-11,65-75
End-of-game stats label Client/GUI/GUI_EndOfGameStats.sqf:5-12
Persistent win logger Server/Functions/Server_LogGameEnd.sqf:7-43

Continue Reading

Deep atlas: Victory and endgame atlas | Territorial mode: Territorial victory reference | UI result screen: End-of-game stats screen | Telemetry vocabulary: AICOMSTAT v2 event census | Current source snapshot: Current source status

Sidebar

Clone this wiki locally