Author SHA1 Message Date
MrFastwind 54c24088f0 adds lint check on build
Build Mission PBO / lint (push) Failing after 6s
Build Mission PBO / pack (push) Has been skipped
Build Mission PBO / deploy (push) Has been skipped
2026-07-24 19:00:54 +02:00
MrFastwind 2d3fc26827 missing comma with unrelated code 2026-07-24 19:00:26 +02:00
Samuele Lorefice 174342c3ac updated blufor for new mods
Build Mission PBO / pack (push) Successful in 8s
Build Mission PBO / deploy (push) Successful in 5s
2026-07-24 17:06:36 +02:00
InHooman 9df6dd91bd AFRF changes from Lena
Build Mission PBO / pack (push) Successful in 10s
Build Mission PBO / deploy (push) Successful in 8s
2026-07-24 01:09:20 +03:00
InHooman 041805be7f "You missed a comma" award
Build Mission PBO / pack (push) Successful in 10s
Build Mission PBO / deploy (push) Successful in 5s
2026-07-16 21:54:53 +03:00
InHooman 39afaa18ea Rebalanced shop prices (heavy/air)
Build Mission PBO / pack (push) Successful in 9s
Build Mission PBO / deploy (push) Successful in 8s
2026-07-16 12:51:07 +03:00
Fastwind f12355f581 Merge pull request 'spam in logs of "Error Undefined variable in expression: _grp"' (#1) from fix/patrol-spawn into master
Build Mission PBO / pack (push) Successful in 1m0s
Build Mission PBO / deploy (push) Successful in 6s
Reviewed-on: #1
2026-07-02 14:43:25 +00:00
5 changed files with 340 additions and 336 deletions
+40
View File
@@ -8,9 +8,49 @@ on:
env:
PBO_NAME: "KPLib-Ruha.ruha.pbo"
SQFVM_VERSION: "v2026.04.03-ed9f5f5"
SQFVM_URL: "https://github.com/SQFvm/runtime/releases/download/v2026.04.03-ed9f5f5/sqfvm_linux_x64_gcc.zip"
jobs:
lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Download SQFVM
run: |
curl -sL "$SQFVM_URL" -o /tmp/sqfvm.zip
unzip -o /tmp/sqfvm.zip -d /tmp/sqfvm
chmod +x /tmp/sqfvm/sqfvm_linux_x64_gcc/sqfvm
- name: Run SQFVM lint
run: |
SRC="$(realpath src)"
ARGS=()
while IFS= read -r -d '' f; do
ARGS+=(-i "$f")
done < <(find "$SRC" -name "*.sqf" -print0)
/tmp/sqfvm/sqfvm_linux_x64_gcc/sqfvm \
-a --parse-only --no-execute-print \
--input-config "$SRC/description.ext" \
"${ARGS[@]}" 2>&1 | tee lint_output.log
# Filter known false positive: SQFVM config parser chokes on & in author string
if grep -v "description.ext" lint_output.log | grep -q "^\[ERR\]"; then
echo "::error::SQFVM found syntax errors"
exit 1
fi
# - name: Upload lint log
# if: always()
# uses: actions/upload-artifact@v3
# with:
# name: sqfvm-lint.log
# path: lint_output.log
# if-no-files-found: warn
pack:
needs: [lint]
runs-on: ubuntu-latest
steps:
+5 -2
View File
@@ -51,7 +51,9 @@ KP_liberation_medical_vehicles = [
"uns_ch47a_medevac",
"uns_H13_medevac_CAV",
"uns_M577_amb",
"uns_uh1D_med"
"uns_uh1D_med",
"tbd_mtlb_ambulance",
"b_afougf_Mi8MTV3_Evac"
];
// Building classnames which also function as ACE medical facilities.
@@ -794,7 +796,8 @@ vehicle_repair_sources = [
"UNS_Hanger_repair",
"uns_M113_ENG",
"uns_M35A2_repair",
"uns_motorpool1_repair"
"uns_motorpool1_repair",
"tbd_mtlb_engineer"
];
vehicle_rearm_sources = [
+135 -125
View File
@@ -1,10 +1,25 @@
/*
Needed Mods:
- None
Optional Mods:
- BWMod
- RHSUSAF
- F-15C
- F/A-18
- CUP Weapons
- CUP Vehicles
- USAF Main Pack
- USAF Fighters Pack
- USAF Utility Pack
*/
/*
--- Support classnames ---
Each of these should be unique.
The same classnames for different purposes may cause various unpredictable issues with player actions.
Or not, just don't try!
*/
FOB_typename = "Land_Cargo_HQ_V1_F"; // This is the main FOB HQ building.
FOB_box_typename = "B_Slingload_01_Cargo_F"; // This is the FOB as a container.
FOB_truck_typename = "B_Truck_01_box_F"; // This is the FOB as a vehicle.
@@ -34,74 +49,73 @@ KP_liberation_fuel_crate = "CargoNet_01_barrels_F"; // This
The above example is the NATO IFV-6a Cheetah, it costs 300 supplies, 150 ammunition and 150 fuel to build.
IMPORTANT: The last element inside each array must have no comma at the end!
*/
infantry_units = [
["UA_Azov_forwardobserver",15,0,0], // Rifleman (Light)
["UA_Azov_rifleman",20,0,0], // Rifleman
["UA_Azov_sapper",30,0,0], // Rifleman (AT)
["UA_Azov_grenadier",25,0,0], // Grenadier
["UA_Azov_machinegunner",25,0,0], // Autorifleman
["B_HeavyGunner_F",35,0,0], // Heavygunner
["UA_Azov_gunner",30,0,0], // Marksman
["UA_Azov_rangefinder",40,0,0], // Sharpshooter
["UA_Azov_operatoratgm",50,10,0], // AT Specialist
["UA_Azov_operatormanpad",50,10,0], // AA Specialist
["UA_Azov_riflemancombatlifesaver",30,0,0], // Combat Life Saver
["UA_Azov_driver",30,0,0], // Engineer
["UA_SSO_recon",20,0,0], // Recon Scout
["UA_SSO_reconsapper",30,0,0], // Recon Scout (AT)
["UA_SSO_reconradiotelephonist",30,0,0], // Recon Marksman
["UA_SSO_reconsniper",40,0,0], // Recon Sharpshooter
["UA_SSO_seniorrecon",30,0,0], // Recon Paramedic
["UA_SSO_reconoperatoruav",30,0,0], // Recon Demolition Expert
["UA_Azov_sniper",70,5,0], // Sniper
["UA_Azov_rangefinder",20,0,0], // Spotter
["UA_Azov_driver",10,0,0], // Crewman
["UA_DShV_lieutenant",20,0,0], // Para Trooper
["UA_VVS_helicopterpilot",10,0,0], // Helicopter Crew
["UA_VVS_helicopterpilot",10,0,0], // Helicopter Pilot
["UA_VVS_pilot",10,0,0] // Pilot
["b_afougf_rifleman_ak74",15,0,0], // Rifleman (Light)
["b_afougf_rifleman_gp25",20,0,0], // Rifleman
["b_afougf_pt_rpg7",30,0,0], // Rifleman (AT)
["b_afougf_pt_maaws",25,0,0], // Grenadier
["b_afougf_mg_m240",25,0,0], // Autorifleman
["b_afougf_mg_mg42",35,0,0], // Heavygunner
["b_afougf_mg_pkm",30,0,0], // Marksman
["b_afougf_ptassist_fgm148",40,0,0], // Sharpshooter
["b_afougf_pt_fgm148",50,10,0], // AT Specialist
["b_afougf_aa_igla_specialist",50,10,0], // AA Specialist
["b_afougf_medic",30,0,0], // Combat Life Saver
["b_afougf_tank_gunner_F",30,0,0], // Engineer
["b_afougf_rifleman_ak74",20,0,0], // Recon Scout
["b_afougf_rifleman_gp25",30,0,0], // Recon Scout (AT)
["b_afougf_pt_rpg7",30,0,0], // Recon Marksman
["b_afougf_marksman_m82",40,0,0], // Recon Sharpshooter
["b_afougf_marksman_m14",30,0,0], // Recon Paramedic
["b_afougf_pt_nlaw",30,0,0], // Recon Demolition Expert
["b_afougf_marksman_svdm",70,5,0], // Sniper
["b_afougf_grenadier_m32_mgl",20,0,0], // Spotter
["b_afougf_tankist_F",10,0,0], // Crewman
["b_afougf_teamleader_gp25",20,0,0], // Para Trooper
["b_afougf_pilot_F",10,0,0], // Helicopter Crew
["b_afougf_pilot_F",10,0,0], // Helicopter Pilot
["b_afougf_pilot_F",10,0,0] // Pilot
];
light_vehicles = [
["b_afougf_quadbike_01",50,0,25],
["b_afougf_offroad_armored_01",75,0,50],
["b_afougf_offroad_armored_at",75,40,50],
["b_afougf_offroad_armored_01_dshkm",75,60,50],
["b_afougf_uaf_dozor",100,0,50],
["b_afougf_uaf_dozor_nsvt",100,40,50],
["b_afougf_kozak5_unarmed_F",100,60,50],
["b_afougf_kozak5_turret_armored_full_F",100,0,50],
["b_afougf_kozak5_turret_armored_F",100,40,50],
["b_afougf_kozak5_turret_F",100,60,50],
["b_afougf_m1151_base",100,0,50],
["b_afougf_m1151_m2_v1",100,40,50],
["b_afougf_m1151_mk19_base",100,60,50],
["b_afougf_m1152_base",100,0,50],
["b_afougf_m1152_base_dshkm",100,0,50],
["b_afougf_m1152_base_lcmr",120,0,60],
["b_afougf_m1151_med",120,40,60],
["b_afougf_m998_sicps_base",120,60,60],
["uaf_m1151_m2_v2",140,0,60],
["b_afougf_m998_2dr",140,40,60],
["b_afougf_m998_2dr_dshkm",140,60,60],
["b_afougf_m998_2dr_fulltop",100,0,50],
["b_afougf_m998_4dr",100,100,50],
["b_afougf_m998_w_s_4dr_fulltop",120,0,60],
["b_afougf_quadbike_01",50,0,25],
["b_afougf_offroad_armored_01",75,0,50],
["b_afougf_offroad_armored_at",75,40,50],
["b_afougf_offroad_armored_01_dshkm",75,60,50],
["b_afougf_uaf_dozor",100,0,50],
["b_afougf_uaf_dozor_nsvt",100,40,50],
["b_afougf_kozak5_unarmed_F",100,60,50],
["b_afougf_kozak5_turret_armored_full_F",100,0,50],
["b_afougf_kozak5_turret_armored_F",100,40,50],
["b_afougf_kozak5_turret_F",100,60,50],
["b_afougf_m1151_base",100,0,50],
["b_afougf_m1151_m2_v1",100,40,50],
["b_afougf_m1151_mk19_base",100,60,50],
["b_afougf_m1152_base",100,0,50],
["b_afougf_m1152_base_dshkm",100,0,50],
["b_afougf_m1152_base_lcmr",120,0,60],
["b_afougf_m1151_med",120,40,60],
["b_afougf_m998_sicps_base",120,60,60],
["uaf_m1151_m2_v2",140,0,60],
["b_afougf_m998_2dr",140,40,60],
["b_afougf_m998_2dr_dshkm",140,60,60],
["b_afougf_m998_2dr_fulltop",100,0,50],
["b_afougf_m998_4dr",100,100,50],
["b_afougf_m998_w_s_4dr_fulltop",120,0,60],
["BBM_Varta",120,0,60],
["BBM_Varta_Turret",120,20,60],
["b_afougf_uaf_novator",125,0,75],
["b_afougf_uaf_novator_atgm",125,0,75],
["b_afougf_offroad_01",100,0,50],
["b_afougf_offroad_at",125,0,75],
["b_afougf_UAZ_Base",125,40,75],
["b_afougf_UAZ_open_Base",150,50,50],
["b_afougf_UAZ_AGS30_Base",150,0,50],
["b_afougf_UAZ_DShKM_Base",150,40,50],
["b_afougf_UAZ_SPG9_Base",100,0,25],
["Kraz_Spartan",200,80,75],
["Kraz_Spartan_dshk",250,200,100],
["vurtual_maxxpro",150,0,50],
["BBM_Varta_Turret",120,20,60],
["b_afougf_uaf_novator",125,0,75],
["b_afougf_uaf_novator_atgm",125,0,75],
["b_afougf_offroad_01",100,0,50],
["b_afougf_offroad_at",125,0,75],
["b_afougf_UAZ_Base",125,40,75],
["b_afougf_UAZ_open_Base",150,50,50],
["b_afougf_UAZ_AGS30_Base",150,0,50],
["b_afougf_UAZ_DShKM_Base",150,40,50],
["b_afougf_UAZ_SPG9_Base",100,0,25],
["Kraz_Spartan",200,80,75],
["Kraz_Spartan_dshk",250,200,100],
["vurtual_maxxpro",150,0,50],
["vurtual_maxxpro_MK19",150,0,50],
["rhsusf_m1240a1_usmc_wd",150,0,50],
["rhsusf_m1240a1_m2_usmc_wd",150,0,50],
@@ -117,33 +131,33 @@ light_vehicles = [
];
heavy_vehicles = [
["tbd_mtlb_s60",200,40,100],
["tbd_mtlb_vmk",200,60,100],
["tbd_mtlb_shturm",200,0,100],
["tbd_mtlb_s8",200,0,125],
["tbd_mtlb_pkt",200,75,125],
["tbd_mtlb_mt12",200,75,125],
["tbd_mtlb_engineer",300,100,150],
["tbd_mtlb_bmo",300,150,150],
["tbd_mtlb_bm21",300,200,150],
["tbd_mtlb_ambulance",300,225,150],
["tbd_mtlb_6ma1_tkn4g",300,250,175],
["tbd_mtlb",300,250,175],
["rhsusf_M1117_O",300,250,175],
["rhsusf_m113_usarmy_medical",300,250,175],
["UAF_M113_MK19",300,250,175],
["UAF_M113_M2",300,250,175],
["b_afougf_m113_unarmed",400,300,200],
["TSB_BRDM2_ZU23_g",400,300,200],
["UF_M2A2_BUSKI",400,300,200],
["UF_M2A2",400,350,225],
["UAF_bmp_3m",500,350,225],
["UAF_bmp_3",500,400,250],
["b_afougf_prp3_Base",500,400,250],
["b_afougf_brm1k_Base",500,500,250],
["b_afougf_bmp2d",550,550,250],
["b_afougf_bmp2",600,1250,300],
["b_afougf_bmp1p",600,1250,300],
["tbd_mtlb_s60",200,40,100],
["tbd_mtlb_vmk",200,60,100],
["tbd_mtlb_shturm",200,0,100],
["tbd_mtlb_s8",200,0,125],
["tbd_mtlb_pkt",200,75,125],
["tbd_mtlb_mt12",200,75,125],
["tbd_mtlb_engineer",300,100,150],
["tbd_mtlb_bmo",300,150,150],
["tbd_mtlb_bm21",300,200,150],
["tbd_mtlb_ambulance",300,225,150],
["tbd_mtlb_6ma1_tkn4g",300,250,175],
["tbd_mtlb",300,250,175],
["rhsusf_M1117_O",300,250,175],
["rhsusf_m113_usarmy_medical",300,250,175],
["UAF_M113_MK19",300,250,175],
["UAF_M113_M2",300,250,175],
["b_afougf_m113_unarmed",400,300,200],
["TSB_BRDM2_ZU23_g",400,300,200],
["UF_M2A2_BUSKI",400,300,200],
["UF_M2A2",400,350,225],
["UAF_bmp_3m",500,350,225],
["UAF_bmp_3",500,400,250],
["b_afougf_prp3_Base",500,400,250],
["b_afougf_brm1k_Base",500,500,250],
["b_afougf_bmp2d",550,550,250],
["b_afougf_bmp2",600,1250,300],
["b_afougf_bmp1p",600,1250,300],
["b_afougf_bmp1",800,1750,400],
["b_afougf_bmd2",800,1750,400],
["b_afougf_bmd1",800,1750,400],
@@ -153,7 +167,7 @@ heavy_vehicles = [
["b_afougf_BRDM2",800,1750,400],
["FA_UAF_BTR4",800,1750,400],
["FA_UAF_BTR3",800,1750,400],
["FA_UAF_BMP1U",800,1750,400],
["FA_UAF_BMP1U",800,1750,400],
["FA_UAF_2S17",800,1750,400],
["FA_UAF_Zamak_MLRS",800,1750,400],
["UAF_2s1",800,1750,400],
@@ -181,32 +195,32 @@ heavy_vehicles = [
];
air_vehicles = [
["UA_VVS_bayraktartb2",75,0,25],
["RHS_UH60M2",80,0,30],
["RHS_UH60M",200,0,100],
["b_afougf_Mi8MTV3_UPK23",200,100,100],
["b_afougf_Mi8MTV3_Evac",200,0,100],
["b_afougf_Mi8MTV3_Cargo",200,200,100],
["b_afougf_Mi24V_UPK23",225,0,125],
["b_afougf_Mi24V_AT",225,200,125],
["b_afougf_a29",225,0,125],
["b_afougf_l39m1",225,200,125],
["b_afougf_Su25SM",500,400,200],
["FA_UAF_F16A",500,500,200],
["b_afougf_mig29sm",750,750,250],
["UA_VVS_bayraktartb2",75,0,25],
["RHS_UH60M2",80,0,30],
["RHS_UH60M",200,0,100],
["b_afougf_Mi8MTV3_UPK23",200,100,100],
["b_afougf_Mi8MTV3_Evac",200,0,100],
["b_afougf_Mi8MTV3_Cargo",200,200,100],
["b_afougf_Mi24V_UPK23",225,0,125],
["b_afougf_Mi24V_AT",225,200,125],
["b_afougf_a29",225,0,125],
["b_afougf_l39m1",225,200,125],
["b_afougf_Su25SM",500,400,200],
["FA_UAF_F16A",500,500,200],
["b_afougf_mig29sm",750,750,250],
["Su27_ua",750,750,250]
];
static_vehicles = [
["b_afougf_AGS30_TriPod",25,40,0],
["b_afougf_DSHKM",25,40,0],
["b_afougf_DSHkM_Mini_TriPod",35,40,0],
["b_afougf_Stinger_AA_pod",35,60,0],
["b_afougf_M2_TriPod_high",35,60,0],
["b_afougf_M2_TriPod_low",45,60,0],
["b_afougf_MK19_TriPod",50,100,0],
["b_afougf_nsv_tripod",50,100,0],
["b_afougf_SPG9M",80,150,0],
["b_afougf_AGS30_TriPod",25,40,0],
["b_afougf_DSHKM",25,40,0],
["b_afougf_DSHkM_Mini_TriPod",35,40,0],
["b_afougf_Stinger_AA_pod",35,60,0],
["b_afougf_M2_TriPod_high",35,60,0],
["b_afougf_M2_TriPod_low",45,60,0],
["b_afougf_MK19_TriPod",50,100,0],
["b_afougf_nsv_tripod",50,100,0],
["b_afougf_SPG9M",80,150,0],
["b_afougf_ZU23",100,200,0],
["b_afougf_m119",100,200,0],
["b_afougf_D30",100,200,0],
@@ -214,7 +228,7 @@ static_vehicles = [
["b_afougf_2b14_82mm",100,200,0],
["tbd_d20",300,300,300],
["tbd_2b9_vasilek",300,300,300],
["tbd_mt12",300,300,300],
["tbd_mt12",300,300,300],
["b_afougf_SAM_System_04_green_F",1000,1000,1000]
];
@@ -370,16 +384,7 @@ support_vehicles = [
// Light infantry squad.
blufor_squad_inf_light = [
"UA_TRO_efreitor",
"UA_TRO_lieutenant",
"UA_TRO_mainsergeant",
"UA_TRO_radiotelephonist",
"UA_TRO_rifleman",
"UA_TRO_riflemangrenadierassistant",
"UA_TRO_grenadier",
"UA_TRO_juniorsergeant",
"UA_TRO_machinegunner",
"UA_TRO_seniorlieutenant"
];
// Heavy infantry squad.
@@ -447,3 +452,8 @@ blufor_squad_para = [
"B_soldier_PG_F",
"B_soldier_PG_F"
];
+1 -1
View File
@@ -115,7 +115,7 @@ opfor_troup_transports = [
"gm_ge_army_fuchsa0_engineer_win", // Fuchs (Engineer)
"gm_ge_army_fuchsa0_reconnaissance_win", // Fuchs (Recon, MILAN)
"gm_ge_army_m113a1g_apc_win", // M113A3 (MG3)
"gm_ge_army_m113a1g_apc_milan_win" // M113A3 (MILAN)
"gm_ge_army_m113a1g_apc_milan_win", // M113A3 (MILAN)
"gm_ge_army_ch53g" // CH-53G
];
+159 -208
View File
@@ -1,253 +1,204 @@
// Enemy infantry classes
opfor_officer = "RUS_spn_deputyplatooncommander"; // Officer
opfor_squad_leader = "RUS_spn_platooncommander"; // Squad Leader
opfor_team_leader = "RUS_spn_squadcommander"; // Team Leader
opfor_sentry = "RUS_spn_recon"; // Rifleman (Lite)
opfor_rifleman = "rhs_msv_emr_rifleman"; // Rifleman
opfor_rpg = "RUS_spn_recongrenadier"; // Rifleman (LAT)
opfor_grenadier = "RUS_spn_seniorrecon"; // Grenadier
opfor_machinegunner = "RUS_spn_reconmachinegunner";
opfor_heavygunner = "RUS_spn_reconmachinegunner";
opfor_marksman = "RUS_spn_reconsniper"; // Marksman
opfor_sharpshooter = "RUS_spn_reconradiotelephonist";
opfor_sniper = "RUS_spn_reconoperatoruav"; // Sniper
opfor_at = "RUS_spn_recon"; // AT Specialist
opfor_aa = "RUS_MSV_operatormanpad"; // AA Specialist
opfor_medic = "RUS_spn_reconsanitar"; // Combat Life Saver
opfor_engineer = "RUS_spn_reconsapper";
opfor_paratrooper = "rhs_msv_emr_RShG2"; // Paratrooper
opfor_officer = "O_ORussianVDV_Efreitor_01"; // Officer
opfor_squad_leader = "O_ORussianVDV_Machine_Gunner_Asst_01"; // Squad Leader
opfor_team_leader = "O_ORussianVDV_Rifleman_01"; // Team Leader
opfor_sentry = "O_ORussianVDV_Rifleman_Ligth_01"; // Rifleman (Lite)
opfor_rifleman = "O_ORussianVDV_Rifleman_01"; // Rifleman
opfor_rpg = "O_ORussianVDV_Rifleman_RPG_26_01"; // Rifleman (LAT)
opfor_grenadier = "O_ORussianVDV_Rifleman_GP_25_01"; // Grenadier
opfor_machinegunner = "O_ORussianVDV_Automatic_Rifleman_01"; // Autorifleman
opfor_heavygunner = "O_ORussianVDV_Autorifleman_PKP_01"; // Heavy Gunner
opfor_marksman = "O_ORussianVDV_Radioman_01"; // Marksman
opfor_sharpshooter = "O_ORussianVDV_Marksman_01"; // Sharpshooter
opfor_sniper = "O_ORussianVDV_Marksman_01"; // Sniper
opfor_at = "O_ORussianVDV_AT_Specialist_01"; // AT Specialist
opfor_aa = "O_ORussianVDV_AA_Specilaist_01"; // AA Specialist
opfor_medic = "O_ORussianVDV_Medic_01"; // Combat Life Saver
opfor_engineer = "O_ORussianVDV_Engineer_01"; // Engineer
opfor_paratrooper = "O_ORussianVDV_Scout_01"; // Paratrooper
// Enemy vehicles used by secondary objectives.
opfor_mrap = "rhs_tigr_msv"; // GAZ-233011
opfor_mrap_armed = "rhs_tigr_sts_msv"; // GAZ-233014 (Armed)
opfor_transport_helo = "RHS_Mi8mt_Cargo_vvsc"; // Mi-8MT (Cargo)
opfor_transport_truck = "RHS_Ural_MSV_01"; // Ural-4320 Transport (Covered)
opfor_ammobox_transport = "RHS_Ural_Open_MSV_01"; // Ural-4320 Transport (Open) -> Has to be able to transport resource crates!
opfor_fuel_truck = "RUS_MSV_atmz54320"; // Ural-4320 Fuel
opfor_ammo_truck = "rhs_gaz66_ammo_msv"; // GAZ-66 Ammo
opfor_fuel_container = "Land_Pod_Heli_Transport_04_fuel_F"; // Taru Fuel Pod
opfor_ammo_container = "rhs_kamaz5350_ammo_msv"; // Taru Ammo Pod
opfor_flag = "rhs_Flag_Russia_F"; // Flag
opfor_mrap = "V_TAG_ASN_233115"; // GAZ-233011
opfor_mrap_armed = "V_TAG_ASN_233115_STS"; // GAZ-233014 (Armed)
opfor_transport_helo = "RHS_Mi8mt_Cargo_vdv"; // Mi-8MT (Cargo)
opfor_transport_truck = "RHS_Ural_VDV_01"; // Ural-4320 Transport (Covered)
opfor_ammobox_transport = "RHS_Ural_Open_Flat_VDV_01"; // Ural-4320 Transport (Open) -> Has to be able to transport resource crates!
opfor_fuel_truck = "RHS_Ural_Fuel_VDV_01"; // Ural-4320 Fuel
opfor_ammo_truck = "V_TAG_ural432031"; // GAZ-66 Ammo
opfor_fuel_container = "B_Slingload_01_Fuel_F"; // Taru Fuel Pod
opfor_ammo_container = "B_Slingload_01_Ammo_F"; // Taru Ammo Pod
opfor_flag = "rhs_Flag_Russia_F"; // Flag
/* Adding a value to these arrays below will add them to a one out of however many in the array, random pick chance.
Therefore, adding the same value twice or three times means they are more likely to be chosen more often. */
/* Militia infantry. Lightweight soldier classnames the game will pick from randomly as sector defenders.
Think of them like garrison or military police forces, which are more meant to control the local population instead of fighting enemy armies. */
militia_squad = [
"RUS_MSV_sr_efreitor",
"RUS_MSV_sr_grenadier",
"RUS_MSV_sr_gunner",
"RUS_MSV_sr_juniorsergeant",
"RUS_MSV_sr_machinegunner",
"RUS_MSV_sr_private",
"RUS_MSV_sr_rifleman",
"RUS_MSV_sr_riflemangrenadierassistant",
"RUS_MSV_sr_riflemanmachinegunnerassistant"
"O_ORussianVDV_Efreitor_01", // Rifleman
"O_ORussianVDV_Rifleman_GP_25_01", // Rifleman
"O_ORussianVDV_Rifleman_01", // Rifleman
"O_ORussianVDV_Rifleman_RPG_26_01", // Rifleman (AT)
"O_ORussianVDV_Automatic_Rifleman_01", // Autorifleman
"O_ORussianVDV_Marksman_01", // Marksman
"O_ORussianVDV_Medic_01", // Medic
"O_ORussianVDV_Engineer_01" // Engineer
];
// Militia vehicles. Lightweight vehicle classnames the game will pick from randomly as sector defenders.
militia_vehicles = [
"rhs_tigr_sts_msv",
"TSB_BRDM2_r",
"rhs_uaz_open_MSV_01",
"RUS_MSV_uaz469",
"rhs_tigr_sts_3camo_msv",
"RUS_MSV_mtlb",
"RUS_MSV_9p135",
"RUS_MSV_9p135m",
"RUS_MSV_9p151",
"RUS_MSV_9p163m1",
"RUS_MSV_ags17",
"RUS_MSV_nsvs",
"RUS_MSV_2b14",
"RUS_MP_kord",
"rhs_SPG9M_MSV" // GAZ-233014 (Armed)
"V_TAG_ASN_233115" // GAZ-233014 (Armed)
];
// Militia vehicles. Lightweight vehicle classnames the game will pick from randomly as sector defenders. Can also be empty for only infantry milita.
opfor_vehicles = [
"rhs_tigr_sts_msv",
"TSB_BRDM2_r",
"rhs_uaz_open_MSV_01",
"RUS_MSV_uaz469",
"rhs_tigr_sts_3camo_msv",
"RUS_MSV_mtlb",
"RUS_MSV_9p135",
"RUS_MSV_9p135m",
"RUS_MSV_9p151",
"RUS_MSV_9p163m1",
"RUS_MSV_ags17",
"RUS_MSV_nsvs",
"RUS_MSV_2b14",
"RUS_MP_kord",
"rhs_SPG9M_MSV"
opfor_vehicles = [
"V_TAG_ASN_233115_STS", // GAZ-233014 (Armed)
"V_TAG_ASN_233115_STS_kmf", // GAZ-233014 (Armed)
"V_TAG_ASN_233115_STS", // GAZ-233014 (Armed)
"V_TAG_bmd2", // BMP-2D
"V_TAG_bmp2k", // BMP-2K
"V_TAG_brm1k", // BRM-1K
"rhs_zsu234_aa", // ZSU-23-4V
"rhs_zsu234_aa", // ZSU-23-4V
"MY_TAG_t80bv", // T80
"MY_TAG_t80bv", // T80
"Z_TAG_t90a", // T90A
"MY_TAG_podnos",
"rhs_Metis_9k115_2_msv",
"rhs_Kornet_9M133_2_msv",
"rhs_Igla_AA_pod_msv",
"RHS_AGS30_TriPod_MSV",
"rhs_KORD_MSV",
"rhs_KORD_high_MSV",
"RHS_NSV_TriPod_MSV",
"rhs_SPG9M_MSV",
"MY_TAG_d30a",
"RHS_ZU23_MSV"
];
// All enemy vehicles that can spawn as sector defenders and patrols but at a lower enemy combat readiness (aggression levels).
opfor_vehicles_low_intensity = [
"RUS_MSV_bmm",
"RUS_MSV_btr80",
"RUS_MSV_btr82a",
"RUS_MSV_mtlb",
"RUS_MSV_mtlbm6mb",
"RUS_MSV_mtlbvmk",
"RUS_MSV_prp3",
"RUS_MSV_brm1k",
"RUS_MSV_9p149",
"RUS_MSV_9p148",
//"tbd_mtlb_deva",
//"tbd_mtlb_tundzha",
//"tbd_mtlb_type63",
//"tbd_mtlb_mt12",
//"tbd_mtlb_bm21",
//"tbd_mtlb_2b9",
//"tbd_mtlb_6ma2_tkn4g",
"RUS_MSV_9p135",
"RUS_MSV_9p135m",
"RUS_MSV_9p151",
"RUS_MSV_9p163m1",
"RUS_MSV_ags17",
"RUS_MSV_nsvs",
"RUS_MSV_2b14",
"RUS_MP_kord",
"rhs_SPG9M_MSV"
"V_TAG_ASN_233115_STS", // GAZ-233014 (Armed)
"V_TAG_ASN_233115_STS_kmf",
"V_TAGa_btr80",
"V_TAGa_btr80a", // GAZ-233014 (Armed)
"V_TAG_btr80", // BTR-80
"V_TAG_btr80a",
"V_TAG_bmd2",
"V_TAGa_bmd2",
"V_TAGa_bmd2k",
"V_TAG_bmd2k",
"rhsgref_BRDM2_msv",
"rhsgref_BRDM2_ATGM_msv"
];
// All enemy vehicles that can spawn as battlegroups, either assaulting or as reinforcements, at high enemy combat readiness (aggression levels).
opfor_battlegroup_vehicles = [
"RUS_MSV_strela10",
"RUS_MSV_zsu234",
"RUS_MSV_bmm",
"RUS_MSV_btr80",
"RUS_MSV_btr82a",
"RUS_MSV_mtlb",
"RUS_MSV_mtlbm6mb",
"RUS_MSV_mtlbvmk",
"RUS_MSV_prp3",
"RUS_MSV_ap2",
"RUS_MSV_asn233115",
"RUS_MSV_atmz54320",
"RUS_MSV_kamaz4310",
"RUS_MSV_mtoat",
"RUS_MSV_uaz469",
"RUS_MSV_ural43202",
"RUS_MSV_9p135",
"RUS_MSV_9p135m",
"RUS_MSV_9p151",
"RUS_MSV_9p163m1",
"RUS_MSV_ags17",
"RUS_MSV_nsvs",
"RUS_MSV_bmp1",
"RUS_MSV_bmp1k",
"RUS_MSV_bmp2",
"RUS_MSV_bmp2k",
"RUS_MSV_bmp3",
"RUS_MSV_bmp3m",
"RUS_MSV_2b14",
"RUS_MSV_2b17",
"RUS_MSV_brm1k",
"RUS_MSV_2s1",
"RUS_MSV_2s3m1",
"RUS_MSV_9p149",
"RUS_MSV_9p148",
"RUS_MSV_t72b",
"RUS_MSV_t72b3",
"RUS_MSV_t72b3m",
"RUS_MSV_t72bm",
"RUS_MSV_t80bv",
"RUS_MSV_t80bvk",
"RUS_MSV_t80u",
"RUS_MSV_t80u45m",
"RUS_MSV_t80ue1",
"RUS_MSV_t80uk",
"RUS_MSV_t90a",
"RUS_MSV_t90m",
"RUS_MSV_zu232",
"RUS_MSV_2a18m",
"RUS_VDV_bmd2",
"RUS_VDV_bmd2k",
"RUS_VDV_bmd4m",
"RUS_MP_kord",
"mkk_tigr_arbalet_dm_msv_f",
"rhs_tigr_sts_3camo_msv",
"rhs_uaz_open_MSV_01",
"rhs_gaz66_zu23_msv",
"RHS_Ural_Zu23_MSV_01",
"RHS_Ural_MSV_01",
"RHS_Ural_Open_Flat_MSV_01",
"rhs_kamaz5350_ammo_msv",
"RHS_Ural_Repair_MSV_01",
"rhs_SPG9M_MSV",
"MMM_KamAZ4386",
"MMM_KamAZ4386_BM30D",
"rhs_bmd4ma_vdv",
"TSB_BRDM2_r",
"TSB_BRDM2_ZU23_r",
"TSB_BRDM2A_r",
"rhs_pchela1t_vvs",
//"tbd_mtlb_deva",
//"tbd_mtlb_tundzha",
//"tbd_mtlb_type63",
//"tbd_mtlb_mt12",
//"tbd_mtlb_bm21",
//"tbd_mtlb_2b9",
//"tbd_mtlb_6ma2_tkn4g",
"rhs_sprut_vdv"
"rhs_tigr_sts_msv", // GAZ-233014 (Armed)
"rhs_tigr_sts_msv", // GAZ-233014 (Armed) (twice)
"rhs_tigr_sts_msv", // GAZ-233014 (Armed) (thrice)
"RHS_Ural_Open_MSV_01", // Ural-4320 Transport
"RHS_Ural_MSV_01", // Ural-4320 Transport (Covered)
"rhs_bmp2d_msv", // BMP-2D
"rhs_bmp2k_msv", // BMP-2K
"rhs_brm1k_msv", // BRM-1K
"rhs_zsu234_aa", // ZSU-23-4V
"rhs_zsu234_aa", // ZSU-23-4V (twice)
"V_TAGa_btr80",
"V_TAG_btr80",
"V_TAGa_btr80a",
"V_TAG_btr80a",
"V_TAG_bm21",
"Z_TAG_acacia",
"V_TAG_Gaz_2330",
"V_TAG_Gaz_2330_kmf",
"V_TAG_ASN_233115_STS",
"V_TAG_ASN_233115_STS_kmf",
"V_TAG_ASN_233115",
"V_TAG_ASN_233115_kmf",
"V_TAG_bmd2",
"V_TAGa_bmd2",
"V_TAGa_bmd2k",
"V_TAG_bmd2k",
"V_TAG_bmd4m",
"V_TAG_bmp2",
"V_TAG_bmp2k",
"V_TAG_brm1k",
"V_TAG_prp3",
"Z_TAG_bmp3",
"Z_TAG_bmp3m",
"MY_TAGa_gvozdika",
"V_TAG_t72b3",
"Z_TAG_t72b3m",
"Z_TAG_t90a",
"Z_TAG_t90m",
"MY_TAG_t80bv",
"MY_TAG_t80bvk",
"MY_TAG_t80u",
"MY_TAG_tric_t80",
"MY_TAG_t80um",
"MY_TAG_tric_t80um",
"MY_TAG_t80ue",
"MY_TAG_tric_t80ue",
"MY_TAG_t80uk",
"MY_TAG_tric_t80uk", // T90A
"V_TAG_Mi_24P", // Mi-24P (AT)
"V_TAG_Mi_35", // Mi-24V (AT)
"RHS_Mi8mt_Cargo_vdv", // Mi-8MT (Cargo)
"V_TAG_Mi_28UB",
"V_TAG_Ka_52" // Ka-52
];
// All enemy vehicles that can spawn as battlegroups, either assaulting or as reinforcements, at lower enemy combat readiness (aggression levels).
opfor_battlegroup_vehicles_low_intensity = [
"RUS_MSV_btr80",
"RUS_MSV_btr82a",
"RUS_MSV_bmm",
"RUS_MSV_btr80",
"RUS_MSV_btr82a",
"RUS_MSV_mtlb",
"RUS_MSV_mtlbm6mb",
"RUS_MSV_mtlbvmk"
//"tbd_mtlb_deva",
//"tbd_mtlb_tundzha",
//"tbd_mtlb_type63",
//"tbd_mtlb_mt12",
//"tbd_mtlb_bm21",
//"tbd_mtlb_2b9",
//"tbd_mtlb_6ma2_tkn4g"
"V_TAG_ASN_233115",
"V_TAG_ASN_233115_kmf", // GAZ-233011
"V_TAG_ASN_233115_STS_kmf", // GAZ-233014 (Armed)
"V_TAG_ASN_233115_STS", // GAZ-233014 (Armed)
"RHS_Ural_Open_MSV_01", // Ural-4320 Transport
"V_TAGa_btr80",
"V_TAG_btr80", // BTR-80
"V_TAG_btr80a",
"V_TAGa_btr80a", // BTR-80A
"rhs_zsu234_aa", // ZSU-23-4V
"V_TAG_Mi_24P", // Mi-24P (AT)
"V_TAG_Mi_35",
"V_TAG_bmd2",
"V_TAGa_bmd2",
"V_TAGa_bmd2k",
"V_TAG_bmd2k", // Mi-24V (AT)
"RHS_Mi8mt_Cargo_vdv",
"rhsgref_BRDM2_msv",
"rhsgref_BRDM2_ATGM_msv" // Mi-8MT (Cargo)
];
/* All vehicles that spawn within battlegroups (see the above 2 arrays) and also hold 8 soldiers as passengers.
If something in this array can't hold all 8 soldiers then buggy behaviours may occur. */
opfor_troup_transports = [
"RUS_MSV_bmp1",
"RUS_MSV_bmp1k",
"RUS_MSV_bmp2",
"RUS_MSV_bmp2k",
"RUS_MSV_bmp3",
"RUS_MSV_bmm",
"RUS_MSV_btr80",
"RUS_MSV_btr82a",
"RUS_MSV_mtlb",
"RUS_MSV_mtlbvmk",
//"tbd_mtlb_6ma2_tkn4g",
"RUS_VKS_mi8mt", // Mi-8MT (Cargo)
"RUS_VKS_mi24p" // Mi-24P (AT)
"RHS_Ural_Open_MSV_01", // Ural-4320 Transport
"RHS_Ural_MSV_01", // Ural-4320 Transport (Covered)
"V_TAGa_btr80", // BTR-80
"V_TAG_btr80a", // BTR-80A
"V_TAG_bmp2", // BMP-2D
"RHS_Mi8mt_Cargo_vdv", // Mi-8MT (Cargo)
"V_TAG_Mi_24P", // Mi-24P (AT)
"V_TAG_Mi_35" // Mi-24V (AT)
];
// Enemy rotary-wings that will need to spawn in flight.
opfor_choppers = [
"RUS_VKS_ka52",
"RUS_VKS_mi24p",
"RUS_VKS_mi28n",
"RUS_VKS_mi8mt",
"RUS_VKS_mi8mtv2"
"RHS_Mi8mt_Cargo_vdv", // Mi-8MT (Cargo)
"V_TAG_Mi_24P",
"V_TAG_Mi_35", // Mi-24P (AT)
"V_TAG_Mi_28UB", // Mi-24V (AT)
"V_TAG_Ka_52", // Ka-52
"V_TAG_Mi_17AMT"
];
// Enemy fixed-wings that will need to spawn in the air.
opfor_air = [
"RHS_Su25SM_vvs", // Su-25
"RUS_VKS_su25sm", // Su-25 (KH29)
"V_TAG_su25", // Su-25
"RUS_VKS_su25sm", // Su-25 (KH29)
"RUS_VKS_mig29s",
"RUS_VKS_mig29smt",
"RUS_VKS_tu95ms6"