Skip to content

Class Skill System Reference

rayswaynl edited this page Jul 3, 2026 · 1 revision

Class-Skill System Reference

Source-verified 2026-07-03 against origin/claude/build84-cmdcon36@a26871e85 (current head title: Build 89 / cmdcon44). Paths are relative to Missions/[55-2hc]warfarev2_073v48co.chernarus/ unless stated otherwise. Wiki-only lane 311; no mission source, generated mission, package or live server state was changed.

The class-skill system is the client-side player role layer. It maps the local playerType into WFBE_SK_V_Type, uses that type to pick default gear, adds player actions, publishes a short class tag for team markers and drives a few secondary role gates such as repair-point EASA, Medic redeploy spawns, Spotter ghillie visibility and SpecOps supply marker affordances.

Do not confuse this with AntiStack skill balance, AI unit skill, or side/team skill metrics. This page is about the local player class module rooted at Client/Module/Skill/.

Runtime Wiring

Stage Current behavior Evidence
Function compile Client init compiles respawn helpers early, including GetRespawnAvailable, OnRespawnHandler and PreRespawnHandler. Client/Init/Init_Client.sqf:139-147
Skill init After the player group exists and leader ownership is corrected, client init runs Client\Module\Skill\Skill_Init.sqf. Client/Init/Init_Client.sqf:1094-1102
Apply function Skill_Init.sqf sets WFBE_SK_V_Root = 'Client\Module\Skill\Skill_' and compiles WFBE_SK_FNC_Apply from Skill_Apply.sqf. Client/Module/Skill/Skill_Init.sqf:6-10
Type detection WFBE_SK_V_Type starts as "", then membership in the class arrays assigns Engineer, Soldier, SpecOps, Spotter or Medic. Client/Module/Skill/Skill_Init.sqf:52-58
Initial gear Initial spawn maps WFBE_SK_V_Type to side-specific role gear variables, with a GUER-safe fallback to the faction default if the role gear is empty or nil. Client/Init/Init_Client.sqf:1105-1128
Initial actions After gear setup, the current player object receives class actions through (player) Call WFBE_SK_FNC_Apply. Client/Init/Init_Client.sqf:1134-1137
Respawn actions The pre-respawn handler calls (_unit) Call WFBE_SK_FNC_Apply for the replacement unit, then restores WF menu, player AI actions and WASP killed/weapon handlers. Client/Functions/Client_PreRespawnHandler.sqf:3-13
Respawn gear The respawn handler uses the same WFBE_SK_V_Type switch and the same fallback pattern for role default gear. Client/Functions/Client_OnRespawnHandler.sqf:194-229
Skin persistence If the Skin Selector is enabled and a skin was applied, respawn stores the saved class on the new unit and re-runs SkinSelector_Apply.sqf after a short delay. Client/Functions/Client_OnRespawnHandler.sqf:231-250

Class Detection

Skill type Player class pool Extra behavior at init Evidence
Engineer USMC_SoldierS_Engineer, CDF_Soldier_Engineer, Ins_Soldier_Sapper, TK_Soldier_Engineer_EP1, Ins_Soldier_CO, US_Soldier_Engineer_EP1, US_Soldier_Officer_EP1, BAF_Soldier_SL_DDPM, MVD_Soldier_TL, USMC_Soldier_TL, TK_Soldier_Officer_EP1 GUER player-side adds GUE_Soldier_Sab and TK_GUE_Soldier_EP1. Client/Module/Skill/Skill_Init.sqf:13; Client/Module/Skill/Skill_Init.sqf:19-29; Client/Module/Skill/Skill_Init.sqf:52-54
Soldier CDF_Soldier, RUS_Soldier1, US_Delta_Force_EP1, TK_Special_Forces_EP1, FR_Miles, FR_R, Ins_Soldier_1 Locally multiplies WFBE_C_PLAYERS_AI_MAX by 1.5, rounded up. Client/Module/Skill/Skill_Init.sqf:14; Client/Module/Skill/Skill_Init.sqf:55; Client/Module/Skill/Skill_Init.sqf:60-62
SpecOps FR_TL, RUS_Soldier_TL, US_Soldier_TL_EP1, US_Delta_Force_TL_EP1, TK_Special_Forces_TL_EP1, CDF_Soldier_TL, Ins_Soldier_2, GER_Soldier_Scout_EP1, RUS_Commander No extra init-time mutation beyond type assignment and the shared broadcast/hints. Client/Module/Skill/Skill_Init.sqf:15; Client/Module/Skill/Skill_Init.sqf:56
Spotter US_Soldier_Sniper_EP1, TK_Soldier_Sniper_EP1, Ins_Soldier_Sniper, CDF_Soldier_Sniper, USMC_SoldierS_Sniper, RU_Soldier_Sniper GUER player-side adds GUE_Soldier_Sniper and TK_GUE_Soldier_Sniper_EP1; this is the sniper role string used by the Skin Selector ghillie gate. Client/Module/Skill/Skill_Init.sqf:16; Client/Module/Skill/Skill_Init.sqf:28; Client/Module/Skill/Skill_Init.sqf:57; WASP/actions/SkinSelector/SkinSelector_Open.sqf:22-34
Medic FR_Corpsman, US_Soldier_Medic_EP1, TK_Soldier_Medic_EP1, RUS_Soldier_Medic, GER_Soldier_Medic_EP1, BAF_Soldier_Medic_DDPM, RU_Soldier_Medic, US_Delta_Force_Medic_EP1, USMC_Soldier_Medic GUER player-side adds GUE_Soldier_Medic and TK_GUE_Bonesetter_EP1. Client/Module/Skill/Skill_Init.sqf:17; Client/Module/Skill/Skill_Init.sqf:29; Client/Module/Skill/Skill_Init.sqf:58
Officer No current Skill_Init.sqf assignment creates WFBE_SK_V_Type = "Officer". Skill_Apply.sqf still has a latent Officer branch, so treat it as stale/latent unless a future initializer maps to it. Client/Module/Skill/Skill_Init.sqf:52-58; Client/Module/Skill/Skill_Apply.sqf:43-47

Skill_Init.sqf also initializes the shared binocular list and class cooldowns. The initial last-use values are -1200; reloads are Repair 25 seconds, LR/Fast Repair 300, Lockpick 5, Salvage 10, Spot 8 and repair-point EASA 60 (Client/Module/Skill/Skill_Init.sqf:32-49).

Applied Actions

Skill_Apply.sqf switches only on the already-computed local WFBE_SK_V_Type.

Skill type Actions applied Current gates and notes Evidence
Engineer Repair vehicle, Salvage wrecks, Repair Camp. Repair and salvage use cooldown predicates; salvage is hidden while a friendly salvage truck is in range. Repair Camp appears only when WFBE_CL_FNC_CanRepairCampNearby says the player is near a destroyed camp. Client/Module/Skill/Skill_Apply.sqf:12-40
Soldier Fast Repair / LR, Repair Camp. Soldier also receives the local 1.5x AI cap mutation during Skill_Init. The live mutation uses WFBE_C_PLAYERS_AI_MAX, even though WFBE_C_PLAYERS_SKILL_SOLDIER_UNITS_MAX = 6 still exists as a constant. Client/Module/Skill/Skill_Apply.sqf:144-158; Client/Module/Skill/Skill_Init.sqf:60-62; Common/Init/Init_CommonConstants.sqf:1414; Common/Init/Init_CommonConstants.sqf:1430
SpecOps LOAD SUPPLIES, UNLOAD SUPPLIES, Fast Repair / LR. Load requires the player on foot, near the closest friendly location, and a supply truck or Air-3 supply helicopter target that is not already loaded/loading. Unload is helicopter-only for loaded supply helicopters. Client/Module/Skill/Skill_Apply.sqf:49-82; Client/Module/supplyMission/supplyMissionStart.sqf:16-46; Client/Module/supplyMission/supplyMissionUnload.sqf:1-36
Spotter Spot marker, Lockpick, Fast Repair / LR, Repair Camp. The lockpick action is currently wired from the Spotter branch even though the lockpick script initializes a better chance for SpecOps; see the maintenance notes below. Client/Module/Skill/Skill_Apply.sqf:85-122; Client/Module/Skill/Skill_SpecOps.sqf:10-16
Medic Fast Repair / LR, Repair Camp. Medic-specific respawn behavior is not an action; the respawn menu adds Medic redeploy trucks as spawn candidates only for local Medic clients. Client/Module/Skill/Skill_Apply.sqf:126-140; Client/Functions/Client_GetRespawnAvailable.sqf:48-60
Officer Repair Camp only. No current player type maps to this branch, but the branch still exists and should be considered if a future Officer class mapping is restored. Client/Module/Skill/Skill_Apply.sqf:43-47; Client/Module/Skill/Skill_Init.sqf:52-58

Action Scripts

Action Script Runtime behavior Evidence
Engineer repair Client/Module/Skill/Skill_Engineer.sqf Finds the closest Car, Motorcycle, Tank, Ship, Air or StaticWeapon within 5 m, exits if undamaged, sets the Repair last-use time, plays three medic animation cycles, aborts on death, vehicle entry, dead target or distance over 5 m, then reduces damage by 0.25. Client/Module/Skill/Skill_Engineer.sqf:7-29
Fast repair / LR Client/Module/Skill/Skill_LR.sqf Uses the same nearby target classes as Engineer repair, sets the LR last-use time, plays five animation cycles and reduces damage by 0.08 if not aborted. Client/Module/Skill/Skill_LR.sqf:7-29
Salvage Client/Module/Skill/Skill_Salvage.sqf Sets the Salvage last-use time, blocks manual salvage while a friendly salvage truck is in range, scans dead vehicles/wrecks inside the salvage range, excludes side HQs, pays 250 when registry metadata is absent, otherwise pays QUERYUNITPRICE * WFBE_C_UNITS_SALVAGER_SCAVENGE_RATIO / 100, applies the Ka-137 reward coefficient and deletes salvaged wrecks. Client/Module/Skill/Skill_Salvage.sqf:3-53; Common/Init/Init_CommonConstants.sqf:1560-1561
Spot marker Client/Module/Skill/Skill_Sniper.sqf Requires Laserdesignator, Binocular or Binocular_Vector, creates a local red mil_destroy marker at screen center named SPOTTED: <time>, sets the Spot last-use time and deletes the marker after 180 seconds. Client/Module/Skill/Skill_Init.sqf:32-33; Client/Module/Skill/Skill_Sniper.sqf:7-29
Lockpick Client/Module/Skill/Skill_SpecOps.sqf Scans locked nearby Car, Motorcycle, Tank, Ship or Air vehicles within 5 m, initializes WFBE_SK_V_LockpickChance to -20 only for SpecOps and 0 otherwise, plays four animation cycles, rolls against a vehicle-type threshold and sends RequestVehicleLock with [vehicle, false, player] on success. Client/Module/Skill/Skill_SpecOps.sqf:7-58
Repair Camp Client/Action/Action_RepairCampEngineer.sqf Finds nearby camp logics inside WFBE_C_CAMPS_REPAIR_RANGE, removes undefined/live camps, charges WFBE_C_CAMPS_REPAIR_PRICE when configured, channels for WFBE_C_CAMPS_REPAIR_DELAY, refunds if another repair finishes first, then sends RequestSpecial ["repair-camp", _camp, WFBE_Client_SideID]. Defaults are 15 seconds, 500 funds and 15 m. Client/Action/Action_RepairCampEngineer.sqf:10-71; Common/Init/Init_CommonConstants.sqf:1226-1228
Supply load Client/Module/supplyMission/supplyMissionStart.sqf Validates a supply truck or Air-3 supply helicopter cursor target, rejects already-loaded/loading vehicles, computes the load from town supply value and upgrade level, marks SupplyAmount, SupplyByHeli, SupplyLoading and cooldown state, and notifies the server. Client/Module/Skill/Skill_Apply.sqf:49-70; Client/Module/supplyMission/supplyMissionStart.sqf:16-46; Client/Module/supplyMission/supplyMissionStart.sqf:54-92; Common/Init/Init_CommonConstants.sqf:1286-1293
Supply unload Client/Module/supplyMission/supplyMissionUnload.sqf Finds a loaded supply helicopter from the player vehicle, cursor target or nearby loaded helis, requires command-center proximity, runs the unload timer and then asks the server to complete the delivery. Client/Module/Skill/Skill_Apply.sqf:62-70; Client/Module/supplyMission/supplyMissionUnload.sqf:1-69; Common/Init/Init_CommonConstants.sqf:1286

Secondary Consumers

Consumer Role dependency Evidence
Class marker tags Skill_Init.sqf broadcasts player setVariable ["wfbe_player_class", WFBE_SK_V_Type, true]; the team marker loop appends [ENG], [SOL], [SPEC], [SNI], [MED] or [OFF] to leader labels. Client/Module/Skill/Skill_Init.sqf:64-66; Client/FSM/updateteamsmarkers.sqf:307-320
Class hint Skill_Init.sqf starts WASP\actions\ClassInfo.sqf in auto mode; the hint is guarded so repeated inits do not spam the same class. Client/Module/Skill/Skill_Init.sqf:68-69; WASP/actions/ClassInfo.sqf:13-30
Default gear Initial spawn and respawn both use WFBE_SK_V_Type to choose role gear variables such as DefaultGearEngineer, DefaultGearLock, DefaultGearSpot and DefaultGearMedic, with fallback to the faction default when needed. Client/Init/Init_Client.sqf:1105-1128; Client/Functions/Client_OnRespawnHandler.sqf:194-229
Medic redeploy truck The respawn candidate builder adds redeploy trucks only when WFBE_C_UNITS_REDEPLOYTRUCK > 0 and the local client is WFBE_SK_V_Type == "Medic". Client/Functions/Client_GetRespawnAvailable.sqf:48-60
SpecOps town markers The town marker loop keeps running off-map for SpecOps so the ready cue/countdown can fire. SpecOps sees [+SUPPLY] or a MM:SS countdown; other roles see the simpler SV marker text. Client/FSM/updatetownmarkers.sqf:18-24; Client/FSM/updatetownmarkers.sqf:44-78
Repair-point EASA Client_CanUseRepairPointEASA.sqf exits false unless the local class is Engineer, the player is driving an EASA vehicle and a repair-truck-built service point is nearby. The EASA menu also enforces the 60-second cooldown and updates WFBE_SK_V_LastUse_RepairPointEASA after purchase. Client/Functions/Client_CanUseRepairPointEASA.sqf:6-17; Client/Functions/Client_GetRepairTruckServicePoints.sqf:6-16; Client/GUI/GUI_Menu_EASA.sqf:101-125
Skin Selector Skill_Init.sqf opens the selector once on join when enabled. Ghillie rows are visible only when WFBE_SK_V_Type == "Spotter"; respawn re-applies a saved skin through the respawn handler. Client/Module/Skill/Skill_Init.sqf:71-76; WASP/actions/SkinSelector/SkinSelector_Enabled.sqf:19-23; WASP/actions/SkinSelector/SkinSelector_Open.sqf:22-60; Client/Functions/Client_OnRespawnHandler.sqf:231-250

Maintenance Notes

  • Treat Skill_Apply.sqf as the authority for player actions. Current comments and hint text still say SpecOps can lockpick, but the current apply branch gives lockpick to Spotter and gives SpecOps supply load/unload plus fast repair. Evidence: Client/Module/Skill/Skill_Init.sqf:15, Client/Module/Skill/Skill_Apply.sqf:49-122, WASP/actions/ClassInfo.sqf:47-56.
  • The lockpick script still contains a better starting chance for WFBE_SK_V_Type == "SpecOps", but the action path that calls it is currently Spotter. If lockpick is moved back to SpecOps, recheck both the apply branch and the class hint. Evidence: Client/Module/Skill/Skill_SpecOps.sqf:10-16, Client/Module/Skill/Skill_Apply.sqf:98-107.
  • WFBE_SK_V_Type is local client state. Remote clients should read the broadcast wfbe_player_class variable if they need another player's class. Evidence: Client/Module/Skill/Skill_Init.sqf:64-66, Client/FSM/updateteamsmarkers.sqf:307-320.
  • The Soldier cap mutation is local and assumes Skill_Init.sqf runs once per local class setup. Repeated Soldier inits can compound WFBE_C_PLAYERS_AI_MAX, so changes to init order should be cross-checked with Client skill-init idempotency. Evidence: Client/Module/Skill/Skill_Init.sqf:60-62, Client/Init/Init_Client.sqf:1102, Client/Init/Init_Client.sqf:1137.
  • GUER playable class additions are gated by WFBE_C_GUER_PLAYERSIDE; do not assume GUE_* or TK_GUE_* roles are present when the faction gate is off. Evidence: Client/Module/Skill/Skill_Init.sqf:19-30.
  • Skin Selector uses the legacy skill type string Spotter for the sniper/ghillie path. Renaming that type without updating Skin Selector would hide or expose the wrong skin rows. Evidence: WASP/actions/SkinSelector/SkinSelector_Open.sqf:22-34, WASP/actions/SkinSelector/SkinSelector_Data.sqf:4-8, WASP/actions/SkinSelector/SkinSelector_Data.sqf:68-73.
  • Repair-point EASA is role-gated at both the helper and menu purchase surfaces. If EASA service logic changes, recheck Engineer class, driver status, vehicle type, nearby repair-truck service point and cooldown together. Evidence: Client/Functions/Client_CanUseRepairPointEASA.sqf:9-17, Client/GUI/GUI_Menu_EASA.sqf:101-125.

Source Touchpoints

  • Client/Module/Skill/Skill_Init.sqf
  • Client/Module/Skill/Skill_Apply.sqf
  • Client/Module/Skill/Skill_Engineer.sqf
  • Client/Module/Skill/Skill_LR.sqf
  • Client/Module/Skill/Skill_Salvage.sqf
  • Client/Module/Skill/Skill_Sniper.sqf
  • Client/Module/Skill/Skill_SpecOps.sqf
  • Client/Init/Init_Client.sqf
  • Client/Functions/Client_PreRespawnHandler.sqf
  • Client/Functions/Client_OnRespawnHandler.sqf
  • Client/Functions/Client_GetRespawnAvailable.sqf
  • Client/Functions/Client_CanUseRepairPointEASA.sqf
  • Client/GUI/GUI_Menu_EASA.sqf
  • Client/FSM/updateteamsmarkers.sqf
  • Client/FSM/updatetownmarkers.sqf
  • Client/Action/Action_RepairCampEngineer.sqf
  • Client/Module/supplyMission/supplyMissionStart.sqf
  • Client/Module/supplyMission/supplyMissionUnload.sqf
  • WASP/actions/ClassInfo.sqf
  • WASP/actions/SkinSelector/SkinSelector_Enabled.sqf
  • WASP/actions/SkinSelector/SkinSelector_Open.sqf
  • WASP/actions/SkinSelector/SkinSelector_Data.sqf
  • Common/Init/Init_CommonConstants.sqf

Continue Reading

Sidebar

Clone this wiki locally