6 Commits

Author SHA1 Message Date
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
7 changed files with 131 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_sector_size = 1700; // Range to activate a sector.
GRLIB_capture_size = 275; // Range to capture a sector. GRLIB_capture_size = 275; // Range to capture a sector.
GRLIB_defended_buildingpos_part = 0.4; // Multiplier for defenders in buildings. GRLIB_defended_buildingpos_part = 1; // Multiplier for defenders in buildings.
GRLIB_battlegroup_size = 8; // Size of enemy battlegroups. 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_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_radiotower_size = 3500; // Radio Tower scanning range.
GRLIB_surrender_chance = 80; // Chance that enemy infantry will surrender after heavy losses are encountered. GRLIB_surrender_chance = 80; // Chance that enemy infantry will surrender after heavy losses are encountered.
GRLIB_civilians_amount = 0; // Civilian count multiplier. GRLIB_civilians_amount = 0.6; // Civilian count multiplier.
GRLIB_cleanup_delay = 300; // Time in seconds until bodies of dead soldiers are cleaned up. GRLIB_cleanup_delay = 300; // Time in seconds until bodies of dead soldiers are cleaned up.
GRLIB_blufor_cap = 100; // Cap for BLUFOR. GRLIB_blufor_cap = 100; // Cap for BLUFOR.
GRLIB_sector_cap = 180; // Cap for sector defenders. GRLIB_sector_cap = 360; // Cap for sector defenders.
GRLIB_battlegroup_cap = 150; // Cap for enemy battlegroups. GRLIB_battlegroup_cap = 300; // Cap for enemy battlegroups.
GRLIB_patrol_cap = 150; // Cap for enemy patrols. 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_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_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_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_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_min = 5400; // Civil Informant minimum spawn time. (seconds)
KP_liberation_civinfo_max = 10800; // Civil Informant maximum 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_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_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_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_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_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_at_chance = 0; // 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_sector_chance = 0; // 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_ambush_chance = 0; // Chance that some guerilla units will spawn in blufor sectors for an ambush, if reputation is low.
// Array of worldName values. // 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. // 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,25 +1,10 @@
/*
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 --- --- Support classnames ---
Each of these should be unique. Each of these should be unique.
The same classnames for different purposes may cause various unpredictable issues with player actions. The same classnames for different purposes may cause various unpredictable issues with player actions.
Or not, just don't try! Or not, just don't try!
*/ */
FOB_typename = "Land_Cargo_HQ_V1_F"; // This is the main FOB HQ building. 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_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. FOB_truck_typename = "B_Truck_01_box_F"; // This is the FOB as a vehicle.
@@ -49,6 +34,7 @@ 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. 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! IMPORTANT: The last element inside each array must have no comma at the end!
*/ */
infantry_units = [ infantry_units = [
["UA_Azov_forwardobserver",15,0,0], // Rifleman (Light) ["UA_Azov_forwardobserver",15,0,0], // Rifleman (Light)
["UA_Azov_rifleman",20,0,0], // Rifleman ["UA_Azov_rifleman",20,0,0], // Rifleman
@@ -461,8 +447,3 @@ blufor_squad_para = [
"B_soldier_PG_F", "B_soldier_PG_F",
"B_soldier_PG_F" "B_soldier_PG_F"
]; ];

View File

@@ -1,11 +1,3 @@
/*
Needed Mods:
- None
Optional Mods:
- None
*/
// Civilian classnames. // Civilian classnames.
civilians = [ civilians = [
"c_civil_cloth_01", "c_civil_cloth_01",

View File

@@ -1,11 +1,3 @@
/*
Needed Mods:
- RHS AFRF
Optional Mods:
- None
*/
// Enemy infantry classes // Enemy infantry classes
opfor_officer = "RUS_spn_deputyplatooncommander"; // Officer opfor_officer = "RUS_spn_deputyplatooncommander"; // Officer
opfor_squad_leader = "RUS_spn_platooncommander"; // Squad Leader opfor_squad_leader = "RUS_spn_platooncommander"; // Squad Leader
@@ -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. /* 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. */ 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 = [ militia_squad = [
"RUS_MSV_sr_efreitor", "RUS_MSV_sr_efreitor",
"RUS_MSV_sr_grenadier", "RUS_MSV_sr_grenadier",
@@ -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. /* 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. */ If something in this array can't hold all 8 soldiers then buggy behaviours may occur. */
opfor_troup_transports = [ opfor_troup_transports = [
"RUS_MSV_bmp1", "RUS_MSV_bmp1",
"RUS_MSV_bmp1k", "RUS_MSV_bmp1k",

View File

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

View File

@@ -1,5 +1,5 @@
params [ "_minimum_readiness", "_is_infantry" ]; 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 "blufor_sectors" };
waitUntil { !isNil "combat_readiness" }; waitUntil { !isNil "combat_readiness" };
@@ -58,6 +58,11 @@ while { GRLIB_endgame == 0 } do {
}; };
while { _patrol_continue } 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; sleep 60;
if ( count (units _grp) == 0 ) then { if ( count (units _grp) == 0 ) then {
_patrol_continue = false; _patrol_continue = false;

View File

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