Compare commits

8 Commits

Author SHA1 Message Date
MrFastwind
4ff3e5107f fix: prevent group_diag from prematurely marking patrol groups for deletion
Tags patrol groups (KPLIB_patrol_group) so group_diag skips them, and
cleans up the tag + enables deleteGroupWhenEmpty only once the patrol
lifecycle is complete. Prevents the '_grp was nil' log spam by fixing
the root cause rather than just silencin the symptom.
2026-07-03 16:37:05 +02:00
f12355f581 Merge pull request 'spam in logs of "Error Undefined variable in expression: _grp"' (#1) from fix/patrol-spawn into master
All checks were successful
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
MrFastwind
91e3099f0e fix(kp-framework): Fixes spam in logs of "Error Undefined variable in
expression: _grp" in \scripts\server\patrols\manage_one_patrol.sqf...,
line 62
2026-07-02 04:08:00 +02:00
5f1d7688c9 Difficulty crank
All checks were successful
Build Mission PBO / pack (push) Successful in 13s
Build Mission PBO / deploy (push) Successful in 6s
2026-06-30 18:10:35 +03:00
5a3643c71a Raising OPFOR unitcap, neutering civs, removing guerillas
All checks were successful
Build Mission PBO / pack (push) Successful in 14s
Build Mission PBO / deploy (push) Successful in 10s
2026-06-28 21:00:07 +03:00
a1e9cef54d Decrease civ amount (+tabs)
All checks were successful
Build Mission PBO / pack (push) Successful in 14s
Build Mission PBO / deploy (push) Successful in 6s
2026-06-28 12:41:21 +03:00
6251e1dea7 Merge branch 'master' of https://git.r3d.codes/REDCODE/CTI34-KPLIB-Ruha
All checks were successful
Build Mission PBO / pack (push) Successful in 13s
Build Mission PBO / deploy (push) Successful in 6s
2026-06-28 03:05:13 +03:00
b4dadd0af6 blufor sqf comment spaces 2026-06-28 03:05:09 +03:00
8 changed files with 145 additions and 171 deletions

View File

@@ -211,27 +211,27 @@ KP_liberation_production_interval = 10; // Time
GRLIB_sector_size = 1700; // Range to activate a sector.
GRLIB_capture_size = 275; // Range to capture a sector.
GRLIB_defended_buildingpos_part = 0.4; // Multiplier for defenders in buildings.
GRLIB_battlegroup_size = 8; // Size of enemy battlegroups.
GRLIB_defended_buildingpos_part = 1; // Multiplier for defenders in buildings.
GRLIB_battlegroup_size = 16; // Size of enemy battlegroups.
GRLIB_vulnerability_timer = 1800; // Time in seconds how long a captured sector is vulnerable to enemy troops.
GRLIB_radiotower_size = 3500; // Radio Tower scanning range.
GRLIB_surrender_chance = 80; // Chance that enemy infantry will surrender after heavy losses are encountered.
GRLIB_civilians_amount = 0; // Civilian count multiplier.
GRLIB_cleanup_delay = 300; // Time in seconds until bodies of dead soldiers are cleaned up.
GRLIB_civilians_amount = 0.6; // Civilian count multiplier.
GRLIB_cleanup_delay = 300; // Time in seconds until bodies of dead soldiers are cleaned up.
GRLIB_blufor_cap = 100; // Cap for BLUFOR.
GRLIB_sector_cap = 180; // Cap for sector defenders.
GRLIB_battlegroup_cap = 150; // Cap for enemy battlegroups.
GRLIB_patrol_cap = 150; // Cap for enemy patrols.
GRLIB_sector_cap = 360; // Cap for sector defenders.
GRLIB_battlegroup_cap = 300; // Cap for enemy battlegroups.
GRLIB_patrol_cap = 300; // Cap for enemy patrols.
KP_liberation_cr_kill_penalty = 5; // Civil Reputation penalty for killing a civilian.
KP_liberation_cr_kill_penalty = 1; // Civil Reputation penalty for killing a civilian.
KP_liberation_cr_building_penalty = 0; // Civil Reputation penalty for destroying/damaging a building.
KP_liberation_cr_vehicle_penalty = 2; // Civil Reputation penalty for stealing a civilian vehicle.
KP_liberation_cr_resistance_penalty = 3; // Civil Reputation penalty for killing a friendly resistance soldier.
KP_liberation_cr_resistance_penalty = 0; // Civil Reputation penalty for killing a friendly resistance soldier.
KP_liberation_cr_sector_gain = 5; // Civil Reputation gain for liberate a sector.
KP_liberation_cr_wounded_chance = 35; // Chance (0-100) that there are wounded civilians right after capturing a sector.
KP_liberation_cr_wounded_gain = 2; // Civil Reputation gain for providing medical assistance for wounded civilians.
KP_liberation_cr_wounded_gain = 1; // Civil Reputation gain for providing medical assistance for wounded civilians.
KP_liberation_civinfo_min = 5400; // Civil Informant minimum spawn time. (seconds)
KP_liberation_civinfo_max = 10800; // Civil Informant maximum spawn time. (seconds)
@@ -241,14 +241,14 @@ KP_liberation_civinfo_duration = 1200; // Civil
KP_liberation_civinfo_task_chance = 40; // Chance (0-100) that the delivered informant will spawn a time critical task.
KP_liberation_civinfo_task_duration = 900; // Duration until the task will despawn if no player is near. (seconds)
KP_liberation_convoy_ambush_chance = 2; // Chance that a logistic convoy will be ambushed, when civil reputation is low.
KP_liberation_convoy_ambush_chance = 0; // Chance that a logistic convoy will be ambushed, when civil reputation is low.
KP_liberation_convoy_ambush_duration = 1200; // Duration of the convoy ambush event. (seconds)
KP_liberation_resistance_tier2 = 30; // At which strength (0-100) the guerilla forces will be at tier 2?
KP_liberation_resistance_tier3 = 70; // At which strength (0-100) the guerilla forces will be at tier 3?
KP_liberation_resistance_at_chance = 20; // Chance that a guerilla unit has a RPG. (tier 2 and 3)
KP_liberation_resistance_sector_chance = 35; // Chance that a guerilla squad will join an ongoing sector attack.
KP_liberation_resistance_ambush_chance = 25; // Chance that some guerilla units will spawn in blufor sectors for an ambush, if reputation is low.
KP_liberation_resistance_at_chance = 0; // Chance that a guerilla unit has a RPG. (tier 2 and 3)
KP_liberation_resistance_sector_chance = 0; // Chance that a guerilla squad will join an ongoing sector attack.
KP_liberation_resistance_ambush_chance = 0; // Chance that some guerilla units will spawn in blufor sectors for an ambush, if reputation is low.
// Array of worldName values.
// When playing on this map, it'll create a clearance (remove terrain objects) in a 15m radius around the battlegroup/reinforcements spawnpoint.

View File

@@ -1,34 +1,19 @@
/*
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.
Arsenal_typename = "B_supplyCrate_F"; // This is the virtual arsenal as portable supply crates.
Respawn_truck_typename = "tbd_mtlb_ambulance"; // This is the mobile respawn (and medical) truck.
huron_typename = "b_afougf_Mi8MTV3_Evac"; // This is Spartan 01, a multipurpose mobile respawn as a helicopter.
crewman_classname = "UA_Azov_mechanikdriver"; // This defines the crew for vehicles.
pilot_classname = "UA_VVS_helicopterpilot"; // This defines the pilot for helicopters.
KP_liberation_little_bird_classname = "b_afougf_UAZ_open_Base"; // These are the little birds which spawn on the Freedom or at Chimera base.
Respawn_truck_typename = "tbd_mtlb_ambulance"; // This is the mobile respawn (and medical) truck.
huron_typename = "b_afougf_Mi8MTV3_Evac"; // This is Spartan 01, a multipurpose mobile respawn as a helicopter.
crewman_classname = "UA_Azov_mechanikdriver"; // This defines the crew for vehicles.
pilot_classname = "UA_VVS_helicopterpilot"; // This defines the pilot for helicopters.
KP_liberation_little_bird_classname = "b_afougf_UAZ_open_Base"; // These are the little birds which spawn on the Freedom or at Chimera base.
KP_liberation_boat_classname = "B_Boat_Transport_01_F"; // These are the boats which spawn at the stern of the Freedom.
KP_liberation_truck_classname = "B_Truck_01_transport_F"; // These are the trucks which are used in the logistic convoy system.
KP_liberation_small_storage_building = "ContainmentArea_02_sand_F"; // A small storage area for resources.
@@ -49,32 +34,33 @@ 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
["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
["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
];
light_vehicles = [
@@ -237,27 +223,27 @@ buildings = [
["Land_Cargo_Patrol_V1_F",0,0,0],
["Land_Cargo_Tower_V1_F",0,0,0],
["Land_AFOU_okop_bunker_01_grass_green_F",0,0,0],
["Land_AFOU_okop_med_bunker_01_grass_green_F",0,0,0],
["Land_AFOU_okop_grass_green_01_F",0,0,0],
["Land_AFOU_okop_cut90_grass_green_F",0,0,0],
["Land_AFOU_okop_cut90_nakritya_grass_green_F",0,0,0],
["Land_AFOU_okop_vhid_01_grass_green_F",0,0,0],
["Land_AFOU_okop_odynochna_pozytsiya_grass_green_F",0,0,0],
["Land_AFOU_okop_odynochna_pozytsiya_BMP2_Wreck_grass_green_F",0,0,0],
["Land_AFOU_okop_odynochna_pozytsiya_T72_Wreck_grass_green_F",0,0,0],
["Land_AFOU_okop_osn_grass_green_F",0,0,0],
["Land_AFOU_okop_dot_01_grass_green_F",0,0,0],
["Land_AFOU_okop_T_01_grass_green_F",0,0,0],
["Land_AFOU_okop_T_02_grass_green_F",0,0,0],
["Land_AFOU_okop_T_03_grass_green_F",0,0,0],
["Land_AFOU_okop_T_04_grass_green_F",0,0,0],
["Land_AFOU_okop_T_05_grass_green_F",0,0,0],
["Land_AFOU_okop_bunker_tunel_vhid_grass_green_01_F",0,0,0],
["Land_AFOU_okop_tehnika_grass_green_F",0,0,0],
["Land_AFOU_okop_tehnika_sitka_wood_grass_green_F",0,0,0],
["Land_AFOU_okop_bunker_tunel_01_grass_green_F",0,0,0],
["Land_AFOU_okop_bunker_perekhrestya_tunel_01_grass_green_F",0,0,0],
["Land_AFOU_okop_bunker_t_tunel_01_grass_green_F",0,0,0],
["Land_AFOU_okop_med_bunker_01_grass_green_F",0,0,0],
["Land_AFOU_okop_grass_green_01_F",0,0,0],
["Land_AFOU_okop_cut90_grass_green_F",0,0,0],
["Land_AFOU_okop_cut90_nakritya_grass_green_F",0,0,0],
["Land_AFOU_okop_vhid_01_grass_green_F",0,0,0],
["Land_AFOU_okop_odynochna_pozytsiya_grass_green_F",0,0,0],
["Land_AFOU_okop_odynochna_pozytsiya_BMP2_Wreck_grass_green_F",0,0,0],
["Land_AFOU_okop_odynochna_pozytsiya_T72_Wreck_grass_green_F",0,0,0],
["Land_AFOU_okop_osn_grass_green_F",0,0,0],
["Land_AFOU_okop_dot_01_grass_green_F",0,0,0],
["Land_AFOU_okop_T_01_grass_green_F",0,0,0],
["Land_AFOU_okop_T_02_grass_green_F",0,0,0],
["Land_AFOU_okop_T_03_grass_green_F",0,0,0],
["Land_AFOU_okop_T_04_grass_green_F",0,0,0],
["Land_AFOU_okop_T_05_grass_green_F",0,0,0],
["Land_AFOU_okop_bunker_tunel_vhid_grass_green_01_F",0,0,0],
["Land_AFOU_okop_tehnika_grass_green_F",0,0,0],
["Land_AFOU_okop_tehnika_sitka_wood_grass_green_F",0,0,0],
["Land_AFOU_okop_bunker_tunel_01_grass_green_F",0,0,0],
["Land_AFOU_okop_bunker_perekhrestya_tunel_01_grass_green_F",0,0,0],
["Land_AFOU_okop_bunker_t_tunel_01_grass_green_F",0,0,0],
["Flag_NATO_F",0,0,0],
["Flag_US_F",0,0,0],
["BWA3_Flag_Ger_F",0,0,0],
@@ -368,9 +354,9 @@ support_vehicles = [
["B_Truck_01_Repair_F",325,0,75], // HEMTT Repair
["B_Truck_01_fuel_F",125,0,275], // HEMTT Fuel
["B_Truck_01_ammo_F",125,200,75], // HEMTT Ammo
["FA_UAF_Zamak_Repair",325,0,75], // M977A4 Repair
["FA_UAF_Zamak_Fuel",125,0,275], // M978A4 Fuel
["UA_KRAZ_6322_ammo",125,200,75], // M977A4 Ammo
["FA_UAF_Zamak_Repair",325,0,75], // M977A4 Repair
["FA_UAF_Zamak_Fuel",125,0,275], // M978A4 Fuel
["UA_KRAZ_6322_ammo",125,200,75], // M977A4 Ammo
["B_Slingload_01_Repair_F",275,0,0], // Huron Repair
["B_Slingload_01_Fuel_F",75,0,200], // Huron Fuel
["B_Slingload_01_Ammo_F",75,200,0] // Huron Ammo
@@ -461,8 +447,3 @@ blufor_squad_para = [
"B_soldier_PG_F",
"B_soldier_PG_F"
];

View File

@@ -1,50 +1,42 @@
/*
Needed Mods:
- None
Optional Mods:
- None
*/
// Civilian classnames.
civilians = [
"c_civil_cloth_01",
"c_civil_cloth_02",
"c_civil_cloth_03",
"c_civil_cloth_04",
"c_civil_cloth_05",
"c_civil_cloth_06",
"c_civil_cloth_07",
"c_civil_cloth_08",
"c_civil_cloth_09",
"c_civil_cloth_10",
"c_civil_cloth_11",
"c_civil_cloth_12",
"c_civil_cloth_16",
"c_civil_poloshirt_01",
"c_civil_poloshirt_02",
"c_civil_poloshirt_03",
"c_civil_poloshirt_04",
"c_uacivil_medic_red_base",
"c_civil_polopants_01",
"c_civil_polopants_02",
"c_civil_polopants_03",
"c_civil_polopants_04",
"c_civil_formalsuit_vyshiv_01",
"c_civil_formalsuit_vyshiv_02"
"c_civil_cloth_02",
"c_civil_cloth_03",
"c_civil_cloth_04",
"c_civil_cloth_05",
"c_civil_cloth_06",
"c_civil_cloth_07",
"c_civil_cloth_08",
"c_civil_cloth_09",
"c_civil_cloth_10",
"c_civil_cloth_11",
"c_civil_cloth_12",
"c_civil_cloth_16",
"c_civil_poloshirt_01",
"c_civil_poloshirt_02",
"c_civil_poloshirt_03",
"c_civil_poloshirt_04",
"c_uacivil_medic_red_base",
"c_civil_polopants_01",
"c_civil_polopants_02",
"c_civil_polopants_03",
"c_civil_polopants_04",
"c_civil_formalsuit_vyshiv_01",
"c_civil_formalsuit_vyshiv_02"
];
// Civilian vehicle classnames.
civilian_vehicles = [
"C_Truck_02_fuel_F",
"C_Hatchback_01_F",
"c_uacivil_tracktor_01",
"c_civil_ambulance_01",
"c_uacivil_van01_01",
"UA_CIV_mitsubishil200",
"UA_CIV_mitsubishil200cover",
"UA_CIV_gazellenext",
"UA_CIV_gazellenextbox",
"c_volunteer_offroad_medevac_redcross",
"c_uadsns_offroad_emergency01"
"C_Hatchback_01_F",
"c_uacivil_tracktor_01",
"c_civil_ambulance_01",
"c_uacivil_van01_01",
"UA_CIV_mitsubishil200",
"UA_CIV_mitsubishil200cover",
"UA_CIV_gazellenext",
"UA_CIV_gazellenextbox",
"c_volunteer_offroad_medevac_redcross",
"c_uadsns_offroad_emergency01"
];

View File

@@ -1,27 +1,19 @@
/*
Needed Mods:
- RHS AFRF
Optional Mods:
- None
*/
// 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_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_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_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_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
@@ -31,10 +23,10 @@ opfor_mrap_armed = "rhs_tigr_sts_msv"; // GAZ-2
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_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_ammo_container = "rhs_kamaz5350_ammo_msv"; // 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.
@@ -42,6 +34,7 @@ Therefore, adding the same value twice or three times means they are more likely
/* 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",
@@ -70,7 +63,7 @@ militia_vehicles = [
"RUS_MSV_nsvs",
"RUS_MSV_2b14",
"RUS_MP_kord",
"rhs_SPG9M_MSV" // GAZ-233014 (Armed)
"rhs_SPG9M_MSV" // 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.
@@ -225,6 +218,7 @@ opfor_battlegroup_vehicles_low_intensity = [
/* 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",
@@ -237,8 +231,8 @@ opfor_troup_transports = [
"RUS_MSV_mtlb",
"RUS_MSV_mtlbvmk",
//"tbd_mtlb_6ma2_tkn4g",
"RUS_VKS_mi8mt", // Mi-8MT (Cargo)
"RUS_VKS_mi24p" // Mi-24P (AT)
"RUS_VKS_mi8mt", // Mi-8MT (Cargo)
"RUS_VKS_mi24p" // Mi-24P (AT)
];
// Enemy rotary-wings that will need to spawn in flight.
@@ -252,8 +246,8 @@ opfor_choppers = [
// Enemy fixed-wings that will need to spawn in the air.
opfor_air = [
"RHS_Su25SM_vvs", // Su-25
"RUS_VKS_su25sm", // Su-25 (KH29)
"RHS_Su25SM_vvs", // Su-25
"RUS_VKS_su25sm", // Su-25 (KH29)
"RUS_VKS_mig29s",
"RUS_VKS_mig29smt",
"RUS_VKS_tu95ms6"

View File

@@ -8,22 +8,10 @@
/* Classnames of the guerilla faction which is friendly or hostile, depending on the civil reputation
Standard loadout of the units will be replaced with a scripted one, which depends on the guerilla strength, after spawn */
KP_liberation_guerilla_units = [
"I_G_Soldier_AR_F",
"I_G_engineer_F",
"I_G_officer_F",
"I_G_medic_F",
"I_G_Soldier_F",
"I_G_Soldier_LAT_F",
"I_G_Soldier_M_F",
"I_G_Soldier_SL_F"
];
KP_liberation_guerilla_units = [];
// Armed vehicles
KP_liberation_guerilla_vehicles = [
"I_G_Offroad_01_armed_F",
"I_G_Offroad_01_AT_F"
];
KP_liberation_guerilla_vehicles = [];
/* Guerilla Equipment
There are 3 tiers for every category. If the strength of the guerillas will increase, they'll have higher tier equipment. */

View File

@@ -12,6 +12,7 @@ while {true} do {
};
if !(isNil "_owner") then {
if (_x getVariable ["KPLIB_patrol_group", false]) then {continue;};
if !(isGroupDeletedWhenEmpty _x) then {
if (local _x) then {
_x deleteGroupWhenEmpty true;

View File

@@ -1,5 +1,5 @@
params [ "_minimum_readiness", "_is_infantry" ];
private [ "_headless_client" ];
private [ "_headless_client", "_grp", "_spawn_marker", "_sector_spawn_pos", "_started_time", "_patrol_continue" ];
waitUntil { !isNil "blufor_sectors" };
waitUntil { !isNil "combat_readiness" };
@@ -45,6 +45,10 @@ while { GRLIB_endgame == 0 } do {
_grp = group ((crew _vehicle_object) select 0);
};
if (!isNull _grp) then {
_grp setVariable ["KPLIB_patrol_group", true, true];
};
[_grp] spawn patrol_ai;
_started_time = time;
@@ -58,6 +62,11 @@ while { GRLIB_endgame == 0 } do {
};
while { _patrol_continue } do {
if (isNil "_grp") then {
_patrol_continue = false;
["_grp was nil, but patrol was expected", "MANAGE_ONE_PATROL"] call KPLIB_fnc_log;
break;
};
sleep 60;
if ( count (units _grp) == 0 ) then {
_patrol_continue = false;
@@ -76,6 +85,15 @@ while { GRLIB_endgame == 0 } do {
};
};
if (!isNull _grp) then {
_grp setVariable ["KPLIB_patrol_group", nil, true];
if (local _grp) then {
_grp deleteGroupWhenEmpty true;
} else {
[_grp, true] remoteExecCall ["deleteGroupWhenEmpty", groupOwner _grp];
};
};
if ( !([] call KPLIB_fnc_isBigtownActive) ) then {
sleep (600.0 / GRLIB_difficulty_modifier);
};

View File

@@ -155,7 +155,7 @@ switch (GRLIB_civilian_activity) do {
case 1: {GRLIB_civilian_activity = 0.5;};
case 2: {GRLIB_civilian_activity = 1;};
case 3: {GRLIB_civilian_activity = 2;};
default {GRLIB_csat_aggressivity = 1;};
default {GRLIB_civilian_activity = 0.5;};
};
switch (GRLIB_resources_multiplier) do {