Logistic convoy ambush and guerilla basics
This commit is contained in:
parent
1e766d27e6
commit
746615afc2
|
@ -96,6 +96,9 @@ KP_liberation_civinfo_chance = 75; // Civil Informant spawn c
|
|||
KP_liberation_civinfo_intel = 5; // Civil Informant intel amount
|
||||
KP_liberation_civinfo_duration = 1200; // Civil Informant staytime until despawning (seconds)
|
||||
|
||||
KP_liberation_convoy_ambush_chance = 4; // Chance that a logistic convoy will be ambushed, when civil reputation is low
|
||||
KP_liberation_convoy_ambush_duration = 1800; // Duration of the convoy ambush event (seconds)
|
||||
|
||||
/* - Default arsenal blacklist method.
|
||||
Useless if you're using anything other than "kp_liberation_arsenal = 0;" above. A whitelisted arsenal is always more performance friendly then a blacklisted arsenal.
|
||||
REMEMBER: All static turret and UAV bags should be defined here, to stop players from exploiting free resources via the virtual arsenal. */
|
||||
|
|
|
@ -17,6 +17,7 @@ crewman_classname = "UK3CB_BAF_Crewman_MTP"; // This defines the crew for
|
|||
pilot_classname = "UK3CB_BAF_HeliPilot_Army_MTP"; // This defines the pilot for helicopters. Default is "B_Helipilot_F".
|
||||
KP_liberation_little_bird_classname = "UK3CB_BAF_Wildcat_AH1_TRN_8A_MTP"; // These are the little birds which spawn on the Freedom or at Chimera base. Default is "B_Heli_Light_01_F".
|
||||
KP_liberation_boat_classname = "B_Boat_Transport_01_F"; // These are the boats which spawn at the stern of the Freedom. Default is "B_Boat_Transport_01_F".
|
||||
KP_liberation_truck_classname = "rhsusf_M977A4_BKIT_usarmy_wd"; // These are the trucks which are used in the logistic convoy system. Default is "B_Truck_01_transport_F".
|
||||
KP_liberation_small_storage_building = "ContainmentArea_02_sand_F"; // A small storage area for resources. Default is "ContainmentArea_02_sand_F".
|
||||
KP_liberation_large_storage_building = "ContainmentArea_01_sand_F"; // A large storage area for resources. Default is "ContainmentArea_01_sand_F".
|
||||
KP_liberation_recycle_building = "Land_CarService_F"; // The building defined to unlock FOB recycling functionality. Default is "Land_CarService_F".
|
||||
|
@ -474,6 +475,24 @@ opfor_air = [
|
|||
"RHS_Su25SM_KH29_vvsc" //Su-25 (KH29)
|
||||
];
|
||||
|
||||
/* - Guerilla forces
|
||||
classnames of the guerilla faction which is friendly or hostile, depending on the civil reputation
|
||||
Standard loadout (except the uniform) 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_vehicles = [
|
||||
"I_G_Offroad_01_armed_F"
|
||||
];
|
||||
|
||||
/* - Other various mission classnames.
|
||||
Civilian classnames. */
|
||||
civilians = [
|
||||
|
|
|
@ -17,6 +17,7 @@ crewman_classname = "B_T_crew_F"; // This defines the crew for vehicles
|
|||
pilot_classname = "B_T_Helipilot_F"; // This defines the pilot for helicopters. Default is "B_Helipilot_F".
|
||||
KP_liberation_little_bird_classname = "B_Heli_Light_01_F"; // These are the little birds which spawn on the Freedom or at Chimera base. Default is "B_Heli_Light_01_F".
|
||||
KP_liberation_boat_classname = "B_Boat_Transport_01_F"; // These are the boats which spawn at the stern of the Freedom. Default is "B_Boat_Transport_01_F".
|
||||
KP_liberation_truck_classname = "B_T_Truck_01_transport_F"; // These are the trucks which are used in the logistic convoy system. Default is "B_Truck_01_transport_F".
|
||||
KP_liberation_small_storage_building = "ContainmentArea_02_sand_F"; // A small storage area for resources. Default is "ContainmentArea_02_sand_F".
|
||||
KP_liberation_large_storage_building = "ContainmentArea_01_sand_F"; // A large storage area for resources. Default is "ContainmentArea_01_sand_F".
|
||||
KP_liberation_recycle_building = "Land_CarService_F"; // The building defined to unlock FOB recycling functionality. Default is "Land_CarService_F".
|
||||
|
@ -400,24 +401,24 @@ opfor_flag = "Flag_CSAT_F"; //CSAT Flag
|
|||
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. */
|
||||
militia_squad = [
|
||||
"O_G_Soldier_TL_F", //Team Leader
|
||||
"O_G_Soldier_SL_F", //Squad Leader
|
||||
"O_G_Soldier_lite_F", //Rifleman (Lite)
|
||||
"O_G_Soldier_F", //Rifleman
|
||||
"O_G_Soldier_F", //Rifleman
|
||||
"O_G_Soldier_LAT_F", //Rifleman (AT)
|
||||
"O_G_Soldier_GL_F", //Grenadier
|
||||
"O_G_Soldier_AR_F", //Autorifleman
|
||||
"O_G_Soldier_AR_F", //Autorifleman
|
||||
"O_G_Soldier_M_F", //Marksman
|
||||
"O_G_medic_F", //Medic
|
||||
"O_G_engineer_F", //Engineer
|
||||
"O_G_Soldier_exp_F" //Explosives Specialist
|
||||
"O_soldierU_TL_F", //Team Leader
|
||||
"O_SoldierU_SL_F", //Squad Leader
|
||||
"O_soldierU_F", //Rifleman (Lite)
|
||||
"O_soldierU_F", //Rifleman
|
||||
"O_soldierU_F", //Rifleman
|
||||
"O_soldierU_LAT_F", //Rifleman (AT)
|
||||
"O_SoldierU_GL_F", //Grenadier
|
||||
"O_soldierU_AR_F", //Autorifleman
|
||||
"O_soldierU_AR_F", //Autorifleman
|
||||
"O_soldierU_M_F", //Marksman
|
||||
"O_soldierU_medic_F", //Medic
|
||||
"O_engineer_U_F", //Engineer
|
||||
"O_soldierU_exp_F" //Explosives Specialist
|
||||
];
|
||||
|
||||
// Militia vehicles. Lightweight vehicle classnames the game will pick from randomly as sector defenders.
|
||||
militia_vehicles = [
|
||||
"O_G_Offroad_01_armed_F" //Offroad (HMG)
|
||||
"O_T_LSV_02_armed_F" //Qilin (armed)
|
||||
];
|
||||
|
||||
// All enemy vehicles that can spawn as sector defenders and patrols at high enemy combat readiness (aggression levels)
|
||||
|
@ -499,6 +500,21 @@ opfor_air = [
|
|||
"O_Plane_Fighter_02_F" //To-201 Shikra
|
||||
];
|
||||
|
||||
/* - Guerilla forces
|
||||
classnames of the guerilla faction which is friendly or hostile, depending on the civil reputation
|
||||
Standard loadout (except the uniform) of the units will be replaced with a scripted one, which depends on the guerilla strength, after spawn */
|
||||
KP_liberation_guerilla_units = [
|
||||
"I_C_Soldier_Bandit_1_F",
|
||||
"I_C_Soldier_Bandit_2_F",
|
||||
"I_C_Soldier_Bandit_3_F",
|
||||
"I_C_Soldier_Bandit_4_F",
|
||||
"I_C_Soldier_Bandit_5_F"
|
||||
];
|
||||
|
||||
KP_liberation_guerilla_vehicles = [
|
||||
"I_G_Offroad_01_armed_F"
|
||||
];
|
||||
|
||||
/* - Other various mission classnames.
|
||||
Civilian classnames. */
|
||||
civilians = [
|
||||
|
|
|
@ -17,6 +17,7 @@ crewman_classname = "B_crew_F"; // This defines the crew for vehicles.
|
|||
pilot_classname = "B_Helipilot_F"; // This defines the pilot for helicopters. Default is "B_Helipilot_F".
|
||||
KP_liberation_little_bird_classname = "B_Heli_Light_01_F"; // These are the little birds which spawn on the Freedom or at Chimera base. Default is "B_Heli_Light_01_F".
|
||||
KP_liberation_boat_classname = "B_Boat_Transport_01_F"; // These are the boats which spawn at the stern of the Freedom. Default is "B_Boat_Transport_01_F".
|
||||
KP_liberation_truck_classname = "B_Truck_01_transport_F"; // These are the trucks which are used in the logistic convoy system. Default is "B_Truck_01_transport_F".
|
||||
KP_liberation_small_storage_building = "ContainmentArea_02_sand_F"; // A small storage area for resources. Default is "ContainmentArea_02_sand_F".
|
||||
KP_liberation_large_storage_building = "ContainmentArea_01_sand_F"; // A large storage area for resources. Default is "ContainmentArea_01_sand_F".
|
||||
KP_liberation_recycle_building = "Land_CarService_F"; // The building defined to unlock FOB recycling functionality. Default is "Land_CarService_F".
|
||||
|
@ -406,24 +407,24 @@ opfor_flag = "Flag_CSAT_F"; //CSAT Flag
|
|||
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. */
|
||||
militia_squad = [
|
||||
"O_G_Soldier_TL_F", //Team Leader
|
||||
"O_G_Soldier_SL_F", //Squad Leader
|
||||
"O_G_Soldier_lite_F", //Rifleman (Lite)
|
||||
"O_G_Soldier_F", //Rifleman
|
||||
"O_G_Soldier_F", //Rifleman
|
||||
"O_G_Soldier_LAT_F", //Rifleman (AT)
|
||||
"O_G_Soldier_GL_F", //Grenadier
|
||||
"O_G_Soldier_AR_F", //Autorifleman
|
||||
"O_G_Soldier_AR_F", //Autorifleman
|
||||
"O_G_Soldier_M_F", //Marksman
|
||||
"O_G_medic_F", //Medic
|
||||
"O_G_engineer_F", //Engineer
|
||||
"O_G_Soldier_exp_F" //Explosives Specialist
|
||||
"O_soldierU_TL_F", //Team Leader
|
||||
"O_SoldierU_SL_F", //Squad Leader
|
||||
"O_soldierU_F", //Rifleman (Lite)
|
||||
"O_soldierU_F", //Rifleman
|
||||
"O_soldierU_F", //Rifleman
|
||||
"O_soldierU_LAT_F", //Rifleman (AT)
|
||||
"O_SoldierU_GL_F", //Grenadier
|
||||
"O_soldierU_AR_F", //Autorifleman
|
||||
"O_soldierU_AR_F", //Autorifleman
|
||||
"O_soldierU_M_F", //Marksman
|
||||
"O_soldierU_medic_F", //Medic
|
||||
"O_engineer_U_F", //Engineer
|
||||
"O_soldierU_exp_F" //Explosives Specialist
|
||||
];
|
||||
|
||||
// Militia vehicles. Lightweight vehicle classnames the game will pick from randomly as sector defenders.
|
||||
militia_vehicles = [
|
||||
"O_G_Offroad_01_armed_F" //Offroad (HMG)
|
||||
"O_LSV_02_armed_F" //Qilin (armed)
|
||||
];
|
||||
|
||||
// All enemy vehicles that can spawn as sector defenders and patrols at high enemy combat readiness (aggression levels).
|
||||
|
@ -499,6 +500,24 @@ opfor_air = [
|
|||
"O_Plane_Fighter_02_F" //To-201 Shikra
|
||||
];
|
||||
|
||||
/* - Guerilla forces
|
||||
classnames of the guerilla faction which is friendly or hostile, depending on the civil reputation
|
||||
Standard loadout (except the uniform) 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_vehicles = [
|
||||
"I_G_Offroad_01_armed_F"
|
||||
];
|
||||
|
||||
/* - Other various mission classnames.
|
||||
Civilian classnames. */
|
||||
civilians = [
|
||||
|
|
|
@ -17,6 +17,7 @@ crewman_classname = "rhsusf_army_ucp_combatcrewman"; // This defines the cre
|
|||
pilot_classname = "rhsusf_army_ucp_helipilot"; // This defines the pilot for helicopters. Default is "B_Helipilot_F".
|
||||
KP_liberation_little_bird_classname = "RHS_MELB_MH6M"; // These are the little birds which spawn on the Freedom or at Chimera base. Default is "B_Heli_Light_01_F".
|
||||
KP_liberation_boat_classname = "B_Boat_Transport_01_F"; // These are the boats which spawn at the stern of the Freedom. Default is "B_Boat_Transport_01_F".
|
||||
KP_liberation_truck_classname = "rhsusf_M977A4_BKIT_usarmy_wd"; // These are the trucks which are used in the logistic convoy system. Default is "B_Truck_01_transport_F".
|
||||
KP_liberation_small_storage_building = "ContainmentArea_02_sand_F"; // A small storage area for resources. Default is "ContainmentArea_02_sand_F".
|
||||
KP_liberation_large_storage_building = "ContainmentArea_01_sand_F"; // A large storage area for resources. Default is "ContainmentArea_01_sand_F".
|
||||
KP_liberation_recycle_building = "Land_CarService_F"; // The building defined to unlock FOB recycling functionality. Default is "Land_CarService_F".
|
||||
|
@ -465,6 +466,24 @@ opfor_air = [
|
|||
"RHS_Su25SM_KH29_vvsc" //Su-25 (KH29)
|
||||
];
|
||||
|
||||
/* - Guerilla forces
|
||||
classnames of the guerilla faction which is friendly or hostile, depending on the civil reputation
|
||||
Standard loadout (except the uniform) 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_vehicles = [
|
||||
"I_G_Offroad_01_armed_F"
|
||||
];
|
||||
|
||||
/* - Other various mission classnames.
|
||||
Civilian classnames. */
|
||||
civilians = [
|
||||
|
|
|
@ -17,6 +17,7 @@ crewman_classname = "BWA3_Crew_Fleck"; // This defines the crew for vehi
|
|||
pilot_classname = "rhsusf_army_ucp_helipilot"; // This defines the pilot for helicopters. Default is "B_Helipilot_F".
|
||||
KP_liberation_little_bird_classname = "RHS_MELB_MH6M"; // These are the little birds which spawn on the Freedom or at Chimera base. Default is "B_Heli_Light_01_F".
|
||||
KP_liberation_boat_classname = "B_Boat_Transport_01_F"; // These are the boats which spawn at the stern of the Freedom. Default is "B_Boat_Transport_01_F".
|
||||
KP_liberation_truck_classname = "rhsusf_M977A4_BKIT_usarmy_wd"; // These are the trucks which are used in the logistic convoy system. Default is "B_Truck_01_transport_F".
|
||||
KP_liberation_small_storage_building = "ContainmentArea_02_sand_F"; // A small storage area for resources. Default is "ContainmentArea_02_sand_F".
|
||||
KP_liberation_large_storage_building = "ContainmentArea_01_sand_F"; // A large storage area for resources. Default is "ContainmentArea_01_sand_F".
|
||||
KP_liberation_recycle_building = "Land_CarService_F"; // The building defined to unlock FOB recycling functionality. Default is "Land_CarService_F".
|
||||
|
@ -486,6 +487,24 @@ civilians = [
|
|||
"C_man_w_worker_F"
|
||||
];
|
||||
|
||||
/* - Guerilla forces
|
||||
classnames of the guerilla faction which is friendly or hostile, depending on the civil reputation
|
||||
Standard loadout (except the uniform) 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_vehicles = [
|
||||
"I_G_Offroad_01_armed_F"
|
||||
];
|
||||
|
||||
// Civilian vehicle classnames.
|
||||
civilian_vehicles = [
|
||||
"C_Quadbike_01_F",
|
||||
|
|
|
@ -17,6 +17,7 @@ crewman_classname = "rhsusf_army_ocp_combatcrewman"; // This defines the cre
|
|||
pilot_classname = "rhsusf_army_ocp_helipilot"; // This defines the pilot for helicopters. Default is "B_Helipilot_F".
|
||||
KP_liberation_little_bird_classname = "RHS_MELB_MH6M"; // These are the little birds which spawn on the Freedom or at Chimera base. Default is "B_Heli_Light_01_F".
|
||||
KP_liberation_boat_classname = "B_Boat_Transport_01_F"; // These are the boats which spawn at the stern of the Freedom. Default is "B_Boat_Transport_01_F".
|
||||
KP_liberation_truck_classname = "rhsusf_M977A4_BKIT_usarmy_d"; // These are the trucks which are used in the logistic convoy system. Default is "B_Truck_01_transport_F".
|
||||
KP_liberation_small_storage_building = "ContainmentArea_02_sand_F"; // A small storage area for resources. Default is "ContainmentArea_02_sand_F".
|
||||
KP_liberation_large_storage_building = "ContainmentArea_01_sand_F"; // A large storage area for resources. Default is "ContainmentArea_01_sand_F".
|
||||
KP_liberation_recycle_building = "Land_CarService_F"; // The building defined to unlock FOB recycling functionality. Default is "Land_CarService_F".
|
||||
|
@ -462,6 +463,21 @@ opfor_air = [
|
|||
"RHS_Su25SM_KH29_vvsc" //Su-25 (KH29)
|
||||
];
|
||||
|
||||
/* - Guerilla forces
|
||||
classnames of the guerilla faction which is friendly or hostile, depending on the civil reputation
|
||||
Standard loadout (except the uniform) of the units will be replaced with a scripted one, which depends on the guerilla strength, after spawn */
|
||||
KP_liberation_guerilla_units = [
|
||||
"I_C_Soldier_Bandit_1_F",
|
||||
"I_C_Soldier_Bandit_2_F",
|
||||
"I_C_Soldier_Bandit_3_F",
|
||||
"I_C_Soldier_Bandit_4_F",
|
||||
"I_C_Soldier_Bandit_5_F"
|
||||
];
|
||||
|
||||
KP_liberation_guerilla_vehicles = [
|
||||
"I_G_Offroad_01_armed_F"
|
||||
];
|
||||
|
||||
/* - Other various mission classnames.
|
||||
Civilian classnames. */
|
||||
civilians = [
|
||||
|
|
Binary file not shown.
|
@ -0,0 +1,24 @@
|
|||
if (isDedicated) exitWith {};
|
||||
|
||||
params ["_notif_id", ["_pos", getpos player]];
|
||||
|
||||
if (KP_liberation_asymmetric_debug > 0) then {private _text = format ["[KP LIBERATION] [ASYMMETRIC] asymm_notifications called on: %1 - Parameters: [%2, %3] ", debug_source, _notif_id, _pos];_text remoteExec ["diag_log",2];};
|
||||
|
||||
switch (_notif_id) do {
|
||||
case 0: {
|
||||
["lib_asymm_convoy_ambush", [markertext ([10000, _pos] call F_getNearestSector)]] call BIS_fnc_showNotification;
|
||||
private _ambush_marker = createMarkerLocal ["asymm_ambushmarker", _pos];
|
||||
_ambush_marker setMarkerDirLocal (random 360);
|
||||
_ambush_marker setMarkerColorLocal "ColorIndependent";
|
||||
_ambush_marker setMarkerTypeLocal "hd_ambush";
|
||||
};
|
||||
case 1: {
|
||||
["lib_asymm_convoy_ambush_success"] call BIS_fnc_showNotification;
|
||||
deleteMarkerLocal "asymm_ambushmarker";
|
||||
};
|
||||
case 2: {
|
||||
["lib_asymm_convoy_ambush_fail"] call BIS_fnc_showNotification;
|
||||
deleteMarkerLocal "asymm_ambushmarker";
|
||||
};
|
||||
default {private _text = format ["[KP LIBERATION] [ERROR] asymm_notifications.sqf -> no valid value for _notif_id: %1", _notif_id];_text remoteExec ["diag_log",2];};
|
||||
};
|
|
@ -7,7 +7,7 @@ if (KP_liberation_civinfo_debug > 0) then {private _text = format ["[KP LIBERATI
|
|||
switch (_notif_id) do {
|
||||
case 0: {
|
||||
["lib_civ_informant_start", [markertext ([10000, _pos] call F_getNearestSector)]] call BIS_fnc_showNotification;
|
||||
_informant_marker = createMarkerLocal ["informantmarker", _pos];
|
||||
private _informant_marker = createMarkerLocal ["informantmarker", _pos];
|
||||
_informant_marker setMarkerColorLocal "ColorCIV";
|
||||
_informant_marker setMarkerTypeLocal "hd_unknown";
|
||||
};
|
||||
|
|
|
@ -0,0 +1,144 @@
|
|||
params ["_convoy"];
|
||||
|
||||
if (KP_liberation_asymmetric_debug > 0) then {diag_log format ["[KP LIBERATION] [ASYMMETRIC] Logistic convoy %1: spawning ambush", (_convoy select 0)];};
|
||||
|
||||
private _pos = [0,0,0];
|
||||
|
||||
switch ((_convoy select 7)) do {
|
||||
case 2: {_pos = (_convoy select 3) getPos [(_convoy select 8) * 400, (_convoy select 3) getDir (_convoy select 2)]};
|
||||
case 4: {_pos = (_convoy select 2) getPos [(_convoy select 8) * 400, (_convoy select 2) getDir (_convoy select 3)]};
|
||||
default {diag_log format ["[KP LIBERATION] [ERROR] Logistic convoy %1 ambush: convoy is not travelling", (_convoy select 0)];};
|
||||
};
|
||||
|
||||
if (_pos isEqualTo [0,0,0]) exitWith {diag_log format ["[KP LIBERATION] [ERROR] Logistic convoy %1 ambush: no position", (_convoy select 0)];};
|
||||
|
||||
private _roadObj = [_pos, 400, []] call BIS_fnc_nearestRoad;
|
||||
if (isNull _roadObj) exitWith {
|
||||
if (KP_liberation_asymmetric_debug > 0) then {diag_log format ["[KP LIBERATION] [ASYMMETRIC] Logistic convoy %1 ambush: no road near current convoy position", (_convoy select 0)];};
|
||||
KP_liberation_convoy_ambush_check = 1;
|
||||
};
|
||||
|
||||
KP_liberation_convoy_ambush_check = 2;
|
||||
KP_liberation_convoy_ambush_inProgress = true;
|
||||
[0, getPos _roadObj] remoteExec ["asymm_notifications"];
|
||||
|
||||
private _vehicleArray = [];
|
||||
for "_i" from 1 to (_convoy select 1) do {
|
||||
private _veh = createVehicle [KP_liberation_truck_classname, getPos _roadObj, [], 50, "NONE"];
|
||||
_veh setDir (getDir _roadObj);
|
||||
{
|
||||
private _damage = random 0.6;
|
||||
if ((_x find "Wheel") != -1) then {
|
||||
_damage = _damage + 0.6;
|
||||
} else {
|
||||
_damage = _damage + 0.3;
|
||||
};
|
||||
if (_damage > 1) then {_damage = 1.0};
|
||||
_veh setHitPointDamage [_x, _damage];
|
||||
} forEach ((getAllHitPointsDamage _veh) select 0);
|
||||
_vehicleArray pushBack _veh;
|
||||
|
||||
private _driver = createVehicle [crewman_classname, getPos _veh, [], 12, "NONE"];
|
||||
_driver setDamage 1;
|
||||
};
|
||||
if (KP_liberation_asymmetric_debug > 0) then {diag_log format ["[KP LIBERATION] [ASYMMETRIC] Logistic convoy %1 ambush: truck spawning done", (_convoy select 0)];};
|
||||
|
||||
private _supplies = (_convoy select 6) select 0;
|
||||
private _ammo = (_convoy select 6) select 1;
|
||||
private _fuel = (_convoy select 6) select 2;
|
||||
private _crateArray = [];
|
||||
|
||||
while {_supplies > 0} do {
|
||||
private _crate = createVehicle [KP_liberation_supply_crate, getPos _roadObj, [], 50, "NONE"];
|
||||
[_crate, 500] remoteExec ["F_setMass",_crate];
|
||||
if ((floor (_supplies / 100)) > 0) then {
|
||||
_crate setVariable ["KP_liberation_crate_value", 100, true];
|
||||
_supplies = _supplies - 100;
|
||||
} else {
|
||||
_crate setVariable ["KP_liberation_crate_value", _supplies, true];
|
||||
_supplies = 0;
|
||||
};
|
||||
_crateArray pushBack [_crate];
|
||||
};
|
||||
|
||||
while {_ammo > 0} do {
|
||||
private _crate = createVehicle [KP_liberation_ammo_crate, getPos _roadObj, [], 50, "NONE"];
|
||||
[_crate, 500] remoteExec ["F_setMass",_crate];
|
||||
if ((floor (_ammo / 100)) > 0) then {
|
||||
_crate setVariable ["KP_liberation_crate_value", 100, true];
|
||||
_ammo = _ammo - 100;
|
||||
} else {
|
||||
_crate setVariable ["KP_liberation_crate_value", _ammo, true];
|
||||
_ammo = 0;
|
||||
};
|
||||
_crateArray pushBack [_crate];
|
||||
};
|
||||
|
||||
while {_fuel > 0} do {
|
||||
private _crate = createVehicle [KP_liberation_fuel_crate, getPos _roadObj, [], 50, "NONE"];
|
||||
[_crate, 500] remoteExec ["F_setMass",_crate];
|
||||
if ((floor (_fuel / 100)) > 0) then {
|
||||
_crate setVariable ["KP_liberation_crate_value", 100, true];
|
||||
_fuel = _fuel - 100;
|
||||
} else {
|
||||
_crate setVariable ["KP_liberation_crate_value", _fuel, true];
|
||||
_fuel = 0;
|
||||
};
|
||||
_crateArray pushBack [_crate];
|
||||
};
|
||||
if (KP_liberation_asymmetric_debug > 0) then {diag_log format ["[KP LIBERATION] [ASYMMETRIC] Logistic convoy %1 ambush: resource spawning done", (_convoy select 0)];};
|
||||
|
||||
private _grp = createGroup GRLIB_side_resistance;
|
||||
for "_i" from 1 to (4 + (random (round ((KP_liberation_civ_rep * -1) / 25))) + (random (round (KP_liberation_guerilla_strength / 25)))) do {
|
||||
// GUERILLA -> Need adjusting after loadouts are finished
|
||||
private _unit = _grp createUnit [selectRandom KP_liberation_guerilla_units, getPos _roadObj, [], 50, "NONE"];
|
||||
[_unit] call (selectRandom [loadout_crewman, loadout_rifleman, loadout_autorifleman, loadout_rifleman_light, loadout_marksman]);
|
||||
};
|
||||
|
||||
private _waypoint = _grp addWaypoint [getPos _roadObj, 150];
|
||||
_waypoint setWaypointType "SAD";
|
||||
_waypoint setWaypointCompletionRadius 10;
|
||||
_waypoint = _grp addWaypoint [getPos _roadObj, 150];
|
||||
_waypoint setWaypointType "SAD";
|
||||
_waypoint setWaypointCompletionRadius 10;
|
||||
_waypoint = _grp addWaypoint [getPos _roadObj, 150];
|
||||
_waypoint setWaypointType "SAD";
|
||||
_waypoint setWaypointCompletionRadius 10;
|
||||
_waypoint = _grp addWaypoint [getPos _roadObj, 150];
|
||||
_waypoint setWaypointType "CYCLE";
|
||||
_waypoint setWaypointCompletionRadius 10;
|
||||
if (KP_liberation_asymmetric_debug > 0) then {diag_log format ["[KP LIBERATION] [ASYMMETRIC] Logistic convoy %1 ambush: guerillas spawning done", (_convoy select 0)];};
|
||||
|
||||
private _waitingTime = KP_liberation_convoy_ambush_duration;
|
||||
|
||||
while {(({alive _x} count (units _grp)) > 0) && (_waitingTime > 0)} do {
|
||||
uiSleep 1;
|
||||
private _player_near = false;
|
||||
{
|
||||
if (((_x distance _roadObj) < 250) && (alive _x)) exitWith {_player_near = true};
|
||||
} foreach allPlayers;
|
||||
|
||||
if !(_player_near) then {
|
||||
_waitingTime = _waitingTime - 1;
|
||||
};
|
||||
};
|
||||
if (KP_liberation_asymmetric_debug > 0) then {diag_log format ["[KP LIBERATION] [ASYMMETRIC] Logistic convoy %1 ambush: ambush finished", (_convoy select 0)];};
|
||||
|
||||
KP_liberation_convoy_ambush_inProgress = false;
|
||||
|
||||
if ((_waitingTime <= 0) && (({alive _x} count (units _grp)) > 0)) then {
|
||||
[2] remoteExec ["asymm_notifications"];
|
||||
{deleteVehicle _x;} forEach (units _grp);
|
||||
{
|
||||
if ((typeOf (_x select 0)) == KP_liberation_ammo_crate) then {
|
||||
KP_liberation_guerilla_strength = KP_liberation_guerilla_strength + 4;
|
||||
} else {
|
||||
KP_liberation_guerilla_strength = KP_liberation_guerilla_strength + 2;
|
||||
};
|
||||
deleteVehicle (_x select 0);
|
||||
} forEach _crateArray;
|
||||
if (KP_liberation_asymmetric_debug > 0) then {diag_log format ["[KP LIBERATION] [ASYMMETRIC] Logistic convoy %1 ambush: guerillas escaped", (_convoy select 0)];};
|
||||
} else {
|
||||
[1] remoteExec ["asymm_notifications"];
|
||||
if (KP_liberation_asymmetric_debug > 0) then {diag_log format ["[KP LIBERATION] [ASYMMETRIC] Logistic convoy %1 ambush: guerillas defeated", (_convoy select 0)];};
|
||||
};
|
|
@ -2,11 +2,11 @@ params ["_sector", "_count"];
|
|||
|
||||
if (_count <= 0) exitWith {};
|
||||
|
||||
if (KP_liberation_asymmetric_debug > 0) then {private _text = format ["[KP LIBERATION] [ASYMMETRIC] manage_asymIED.sqf for %1 spawned on: %2", markerText _sector, debug_source];_text remoteExec ["diag_log",2];};
|
||||
if (KP_liberation_asymmetric_debug > 0) then {diag_log format ["[KP LIBERATION] [ASYMMETRIC] manage_asymIED.sqf for %1 spawned on: %2", markerText _sector, debug_source];};
|
||||
|
||||
waitUntil {sleep 1; _sector in KP_liberation_asymmetric_sectors};
|
||||
|
||||
if (KP_liberation_asymmetric_debug > 0) then {private _text = format ["[KP LIBERATION] [ASYMMETRIC] manage_asymIED.sqf -> spawning IED %1 at %2", _count, markerText _sector];_text remoteExec ["diag_log",2];};
|
||||
if (KP_liberation_asymmetric_debug > 0) then {diag_log format ["[KP LIBERATION] [ASYMMETRIC] manage_asymIED.sqf -> spawning IED %1 at %2", _count, markerText _sector];};
|
||||
|
||||
private _activation_radius_infantry = 6.66;
|
||||
private _activation_radius_vehicles = 10;
|
||||
|
@ -28,7 +28,7 @@ if (!(isnull _roadobj)) then {
|
|||
_ied_obj = createMine [_ied_type, [_roadpos, _spread, random (360)] call BIS_fnc_relPos, [], 0];
|
||||
_ied_obj setdir (random 360);
|
||||
|
||||
if (KP_liberation_asymmetric_debug > 0) then {private _text = format ["[KP LIBERATION] [ASYMMETRIC] manage_asymIED.sqf -> IED %1 spawned at %2", _count, markerText _sector];_text remoteExec ["diag_log",2];_ied_marker = createMarker [str _ied_obj, getPos _ied_obj];_ied_marker setMarkerColor "ColorRed";_ied_marker setMarkerType "hd_dot";_ied_marker setMarkerText "IED";};
|
||||
if (KP_liberation_asymmetric_debug > 0) then {diag_log format ["[KP LIBERATION] [ASYMMETRIC] manage_asymIED.sqf -> IED %1 spawned at %2", _count, markerText _sector];};
|
||||
|
||||
while {(_sector in KP_liberation_asymmetric_sectors) && (mineActive _ied_obj) && !_goes_boom} do {
|
||||
_nearinfantry = [(getpos _ied_obj) nearEntities ["Man", _activation_radius_infantry] , {side _x == GRLIB_side_friendly}] call BIS_fnc_conditionalSelect;
|
||||
|
@ -41,10 +41,10 @@ if (!(isnull _roadobj)) then {
|
|||
sleep 1;
|
||||
};
|
||||
} else {
|
||||
if (KP_liberation_asymmetric_debug > 0) then {private _text = format ["[KP LIBERATION] [ASYMMETRIC] manage_asymIED.sqf -> _roadobj is Null for IED %1 at %2", _count, markerText _sector];_text remoteExec ["diag_log",2];};
|
||||
if (KP_liberation_asymmetric_debug > 0) then {diag_log format ["[KP LIBERATION] [ASYMMETRIC] manage_asymIED.sqf -> _roadobj is Null for IED %1 at %2", _count, markerText _sector];};
|
||||
};
|
||||
|
||||
if ((KP_liberation_asymmetric_debug > 0) && !(isNull _roadobj)) then {private _text = format ["[KP LIBERATION] [ASYMMETRIC] manage_asymIED.sqf -> exited IED %1 loop at %2", _count, markerText _sector];_text remoteExec ["diag_log",2];deleteMarker _ied_marker;};
|
||||
if ((KP_liberation_asymmetric_debug > 0) && !(isNull _roadobj)) then {diag_log format ["[KP LIBERATION] [ASYMMETRIC] manage_asymIED.sqf -> exited IED %1 loop at %2", _count, markerText _sector];};
|
||||
|
||||
sleep 1800;
|
||||
|
||||
|
|
|
@ -2,5 +2,6 @@ params ["_informant"];
|
|||
|
||||
if (isServer && alive _informant) then {
|
||||
resources_intel = resources_intel + KP_liberation_civinfo_intel;
|
||||
[2, false] spawn F_cr_changeCR;
|
||||
[1] remoteExec ["civinfo_notifications"];
|
||||
};
|
||||
|
|
|
@ -13,21 +13,22 @@ if (KP_liberation_civ_rep > 100) then {KP_liberation_civ_rep = 100;};
|
|||
|
||||
if (KP_liberation_civ_rep <= -25) then {
|
||||
GRLIB_side_resistance setFriend [GRLIB_side_enemy, 1];
|
||||
GRLIB_side_enemy setFriend [GRLIB_side_enemy, 1];
|
||||
GRLIB_side_enemy setFriend [GRLIB_side_resistance, 1];
|
||||
GRLIB_side_resistance setFriend [GRLIB_side_friendly, 0];
|
||||
GRLIB_side_friendly setFriend [GRLIB_side_friendly, 0];
|
||||
GRLIB_side_friendly setFriend [GRLIB_side_resistance, 0];
|
||||
};
|
||||
if (KP_liberation_civ_rep > -25 && KP_liberation_civ_rep < 25) then {
|
||||
GRLIB_side_resistance setFriend [GRLIB_side_enemy, 1];
|
||||
GRLIB_side_enemy setFriend [GRLIB_side_enemy, 1];
|
||||
GRLIB_side_enemy setFriend [GRLIB_side_resistance, 1];
|
||||
GRLIB_side_resistance setFriend [GRLIB_side_friendly, 1];
|
||||
GRLIB_side_friendly setFriend [GRLIB_side_friendly, 1];
|
||||
GRLIB_side_friendly setFriend [GRLIB_side_resistance, 1];
|
||||
};
|
||||
if (KP_liberation_civ_rep >= 25) then {
|
||||
GRLIB_side_resistance setFriend [GRLIB_side_friendly, 1];
|
||||
GRLIB_side_friendly setFriend [GRLIB_side_friendly, 1];
|
||||
GRLIB_side_friendly setFriend [GRLIB_side_resistance, 1];
|
||||
GRLIB_side_resistance setFriend [GRLIB_side_enemy, 0];
|
||||
GRLIB_side_enemy setFriend [GRLIB_side_enemy, 0];
|
||||
GRLIB_side_enemy setFriend [GRLIB_side_resistance, 0];
|
||||
};
|
||||
|
||||
if (KP_liberation_civrep_debug > 0) then {private _text = format ["[KP LIBERATION] [CIVREP] changeCR finished on: %1 - New value: %2", debug_source, KP_liberation_civ_rep];_text remoteExec ["diag_log",2];};
|
||||
if (KP_liberation_civrep_debug > 0) then {private _text = format ["[KP LIBERATION] [CIVREP] %1 getFriend %2: %3 - %1 getFriend %4: %5", GRLIB_side_resistance, GRLIB_side_enemy, (GRLIB_side_resistance getFriend GRLIB_side_enemy), GRLIB_side_friendly, (GRLIB_side_resistance getFriend GRLIB_side_friendly)];_text remoteExec ["diag_log",2];};
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
params ["_sector"];
|
||||
|
||||
if (KP_liberation_civrep_debug > 0) then {private _text = format ["[KP LIBERATION] [CIVREP] getBuildings called on: %1 - Sector: %2", debug_source, _sector];_text remoteExec ["diag_log",2];};
|
||||
if (KP_liberation_civrep_debug > 0) then {private _text = format ["[KP LIBERATION] [CIVREP] getBuildings called on: %1 - Sector: %2", debug_source, markerText _sector];_text remoteExec ["diag_log",2];};
|
||||
|
||||
private _return = 0;
|
||||
|
||||
|
|
|
@ -10,4 +10,11 @@ KP_liberation_cr_sectorbuildings = [];
|
|||
KP_liberation_cr_sectorbuildings pushBack [_x, [_x] call F_cr_getBuildings];
|
||||
} forEach sectors_bigtown;
|
||||
|
||||
if (KP_liberation_civrep_debug > 0) then {private _text = format ["[KP LIBERATION] [CIVREP] init_buildings.sqf finished on: %1 - List of sector buildings: %2", debug_source, KP_liberation_cr_sectorbuildings];_text remoteExec ["diag_log",2];};
|
||||
sleep 1;
|
||||
|
||||
if (KP_liberation_civrep_debug > 0) then {
|
||||
diag_log format ["[KP LIBERATION] [CIVREP] init_buildings.sqf finished on: %1 - List of sector buildings:", debug_source];
|
||||
{
|
||||
diag_log format ["[KP LIBERATION] [CIVREP] %1: %2", markerText (_x select 0), (_x select 1)];
|
||||
} forEach KP_liberation_cr_sectorbuildings;
|
||||
};
|
||||
|
|
|
@ -58,6 +58,7 @@ resources_intel = 0;
|
|||
GRLIB_player_scores = [];
|
||||
KP_liberation_civ_rep = 0;
|
||||
KP_liberation_production_markers = [];
|
||||
KP_liberation_guerilla_strength = 25;
|
||||
|
||||
no_kill_handler_classnames = [FOB_typename, huron_typename];
|
||||
_classnames_to_save = [FOB_typename, huron_typename];
|
||||
|
@ -150,12 +151,35 @@ if ( !isNil "greuh_liberation_savegame" ) then {
|
|||
|
||||
if (count greuh_liberation_savegame > 15) then {
|
||||
KP_liberation_civ_rep = greuh_liberation_savegame select 15;
|
||||
if (KP_liberation_civ_rep <= -25) then {
|
||||
GRLIB_side_resistance setFriend [GRLIB_side_enemy, 1];
|
||||
GRLIB_side_enemy setFriend [GRLIB_side_resistance, 1];
|
||||
GRLIB_side_resistance setFriend [GRLIB_side_friendly, 0];
|
||||
GRLIB_side_friendly setFriend [GRLIB_side_resistance, 0];
|
||||
};
|
||||
if (KP_liberation_civ_rep > -25 && KP_liberation_civ_rep < 25) then {
|
||||
GRLIB_side_resistance setFriend [GRLIB_side_enemy, 1];
|
||||
GRLIB_side_enemy setFriend [GRLIB_side_resistance, 1];
|
||||
GRLIB_side_resistance setFriend [GRLIB_side_friendly, 1];
|
||||
GRLIB_side_friendly setFriend [GRLIB_side_resistance, 1];
|
||||
};
|
||||
if (KP_liberation_civ_rep >= 25) then {
|
||||
GRLIB_side_resistance setFriend [GRLIB_side_friendly, 1];
|
||||
GRLIB_side_friendly setFriend [GRLIB_side_resistance, 1];
|
||||
GRLIB_side_resistance setFriend [GRLIB_side_enemy, 0];
|
||||
GRLIB_side_enemy setFriend [GRLIB_side_resistance, 0];
|
||||
};
|
||||
if (KP_liberation_civrep_debug > 0) then {private _text = format ["[KP LIBERATION] [CIVREP] %1 getFriend %2: %3 - %1 getFriend %4: %5", GRLIB_side_resistance, GRLIB_side_enemy, (GRLIB_side_resistance getFriend GRLIB_side_enemy), GRLIB_side_friendly, (GRLIB_side_resistance getFriend GRLIB_side_friendly)];_text remoteExec ["diag_log",2];};
|
||||
};
|
||||
|
||||
if (count greuh_liberation_savegame > 16) then {
|
||||
KP_liberation_production_markers = greuh_liberation_savegame select 16;
|
||||
};
|
||||
|
||||
if (count greuh_liberation_savegame > 17) then {
|
||||
KP_liberation_guerilla_strength = greuh_liberation_savegame select 17;
|
||||
};
|
||||
|
||||
setDate [ 2045, 6, 6, time_of_day, 0];
|
||||
|
||||
if (KP_liberation_savegame_debug > 0) then {private _text = format ["[KP LIBERATION] [SAVE] Loaded savegame: %1", greuh_liberation_savegame];_text remoteExec ["diag_log",2];};
|
||||
|
@ -643,7 +667,7 @@ while { true } do {
|
|||
|
||||
greuh_liberation_savegame = [blufor_sectors, GRLIB_all_fobs, buildings_to_save, time_of_day, round combat_readiness, KP_liberation_storages,
|
||||
KP_liberation_production, KP_liberation_logistics, _stats, [round infantry_weight, round armor_weight, round air_weight], GRLIB_vehicle_to_military_base_links,
|
||||
GRLIB_permissions, ai_groups, resources_intel, GRLIB_player_scores, KP_liberation_civ_rep, KP_liberation_production_markers];
|
||||
GRLIB_permissions, ai_groups, resources_intel, GRLIB_player_scores, KP_liberation_civ_rep, KP_liberation_production_markers, KP_liberation_guerilla_strength];
|
||||
|
||||
profileNamespace setVariable [GRLIB_save_key, greuh_liberation_savegame];
|
||||
saveProfileNamespace;
|
||||
|
|
|
@ -38,6 +38,9 @@ manage_one_sector = compileFinal preprocessFileLineNumbers "scripts\server\secto
|
|||
wait_to_spawn_sector = compileFinal preprocessFileLineNumbers "scripts\server\sector\wait_to_spawn_sector.sqf";
|
||||
manage_asymIED = compileFinal preprocessFileLineNumbers "scripts\server\asymmetric\ied\manage_asymIED.sqf";
|
||||
|
||||
// Asymmetric
|
||||
logistic_convoy_ambush = compileFinal preprocessFileLineNumbers "scripts\server\asymmetric\convoy\logistic_convoy_ambush.sqf";
|
||||
|
||||
// Arty Monitor
|
||||
// Arty Supp deactivated for now
|
||||
/*arty_monitor = compileFinal preprocessFileLineNumbers "scripts\server\game\arty_monitor.sqf";
|
||||
|
|
|
@ -2,8 +2,6 @@ if (!isServer) exitWith {};
|
|||
|
||||
params ["_index", "_dest_a", "_ress_a", "_dest_b", "_ress_b", "_clientID"];
|
||||
|
||||
private ["_time"];
|
||||
|
||||
logiError = 0;
|
||||
|
||||
if ((_ress_a isEqualTo [0,0,0]) && (_ress_b isEqualTo [0,0,0])) then {
|
||||
|
@ -31,7 +29,7 @@ if (_dest_a isEqualTo _dest_b) then {
|
|||
|
||||
if (logiError == 1) exitWith {(localize "STR_LOGISTIC_SAVE_ERROR") remoteExec ["hint",_clientID]; _clientID publicVariableClient "logiError";};
|
||||
|
||||
_time = ceil (((ceil ((_ress_a select 0) / 100)) + (ceil ((_ress_a select 1) / 100)) + (ceil ((_ress_a select 2) / 100))) / 3);
|
||||
private _time = ceil (((ceil ((_ress_a select 0) / 100)) + (ceil ((_ress_a select 1) / 100)) + (ceil ((_ress_a select 2) / 100))) / 3);
|
||||
|
||||
if (_time > ((KP_liberation_logistics select _index) select 1)) then {
|
||||
_time = ((KP_liberation_logistics select _index) select 1);
|
||||
|
|
|
@ -3,6 +3,9 @@ waitUntil {!isNil "KP_liberation_logistics"};
|
|||
|
||||
if (KP_liberation_logistic_debug > 0) then {private _text = format ["[KP LIBERATION] [LOGISTIC] Logistic management started on: %1", debug_source];_text remoteExec ["diag_log",2];};
|
||||
|
||||
KP_liberation_convoy_ambush_inProgress = false;
|
||||
KP_liberation_convoy_ambush_check = 0;
|
||||
|
||||
while {GRLIB_endgame == 0} do {
|
||||
|
||||
if (((count allPlayers) > 0) && ((count KP_liberation_logistics) > 0)) then {
|
||||
|
@ -139,7 +142,6 @@ while {GRLIB_endgame == 0} do {
|
|||
if (KP_liberation_logistic_debug > 0) then {private _text = format ["[KP LIBERATION] [LOGISTIC] Logistic Group Update: %1", _x];_text remoteExec ["diag_log",2];};
|
||||
} else {
|
||||
_x set [9,1];
|
||||
if (KP_liberation_logistic_debug > 0) then {private _text = format ["[KP LIBERATION] [LOGISTIC] Logistic Group Update: %1", _x];_text remoteExec ["diag_log",2];};
|
||||
};
|
||||
|
||||
if (((_x select 9) == 1) && !((_x select _locRes) isEqualTo [0,0,0])) then {
|
||||
|
@ -326,7 +328,35 @@ while {GRLIB_endgame == 0} do {
|
|||
case 2;
|
||||
case 4: {
|
||||
if ((_x select 8) > 1) then {
|
||||
_x set [8,((_x select 8) - 1)];
|
||||
|
||||
if (((_x select 8) <= ((ceil (((_x select 2) distance2D (_x select 3)) / 400)) - 3)) && ((_x select 8) >= 3) && !((_x select 6) isEqualTo [0,0,0]) && !KP_liberation_convoy_ambush_inProgress && (KP_liberation_civ_rep <= -25)) then {
|
||||
if (KP_liberation_asymmetric_debug > 0) then {private _text = format ["[KP LIBERATION] [ASYMMETRIC] Logistic convoy %1: ambush possible - current ETA: %2", (_x select 0), (_x select 8)];_text remoteExec ["diag_log",2];};
|
||||
private _dice = round (random 100);
|
||||
if (_dice <= (KP_liberation_convoy_ambush_chance + (round ((KP_liberation_civ_rep * -1) / 25)))) then {
|
||||
private _convoy = +_x;
|
||||
sleep 0.1;
|
||||
[_convoy] spawn logistic_convoy_ambush;
|
||||
waitUntil {sleep 0.1; KP_liberation_convoy_ambush_check != 0};
|
||||
if (KP_liberation_convoy_ambush_check == 2) then {
|
||||
_x set [1,0];
|
||||
_x set [2,[0,0,0]];
|
||||
_x set [3,[0,0,0]];
|
||||
_x set [4,[0,0,0]];
|
||||
_x set [5,[0,0,0]];
|
||||
_x set [6,[0,0,0]];
|
||||
_x set [7,0];
|
||||
_x set [8,-1];
|
||||
} else {
|
||||
_x set [8,((_x select 8) - 1)];
|
||||
KP_liberation_convoy_ambush_check = 0;
|
||||
}
|
||||
} else {
|
||||
if (KP_liberation_asymmetric_debug > 0) then {private _text = format ["[KP LIBERATION] [ASYMMETRIC] Logistic convoy %1: no ambush - Chance: %2 - Dice: %3", (_x select 0), (KP_liberation_convoy_ambush_chance + (round ((KP_liberation_civ_rep * -1) / 25))), _dice];_text remoteExec ["diag_log",2];};
|
||||
_x set [8,((_x select 8) - 1)];
|
||||
};
|
||||
} else {
|
||||
_x set [8,((_x select 8) - 1)];
|
||||
};
|
||||
|
||||
if (KP_liberation_logistic_debug > 0) then {private _text = format ["[KP LIBERATION] [LOGISTIC] Logistic Group Update: %1", _x];_text remoteExec ["diag_log",2];};
|
||||
|
||||
|
|
|
@ -34,14 +34,6 @@ _idxposit = 0;
|
|||
_nextunit setpos (_buildingpositions select (_position_indexes select _idxposit));
|
||||
_nextunit setdir (random 360);
|
||||
[ _nextunit, _sector ] spawn building_defence_ai;
|
||||
if ( _infsquad == "militia" ) then {
|
||||
if ( (typeof _nextunit) in original_resistance ) then {
|
||||
[ _nextunit ] spawn (selectRandom militia_standard_squad);
|
||||
if ( random 100 < 40 ) then {
|
||||
_nextunit addPrimaryWeaponItem "acc_flashlight";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
_idxposit = _idxposit + 1;
|
||||
|
||||
|
|
|
@ -20,20 +20,6 @@ _grp = createGroup GRLIB_side_enemy;
|
|||
sleep 0.1;
|
||||
} foreach _squadies_to_spawn;
|
||||
|
||||
if ( _sector in sectors_capture ) then {
|
||||
_unitidx = 0;
|
||||
{
|
||||
if ( (typeof _x) in original_resistance ) then {
|
||||
[ _x ] spawn ( militia_standard_squad select _unitidx );
|
||||
if ( random 100 < 40 ) then {
|
||||
_x addPrimaryWeaponItem "acc_flashlight";
|
||||
};
|
||||
};
|
||||
_unitidx = _unitidx + 1;
|
||||
if ( _unitidx > 9 ) then { _unitidx = 0 };
|
||||
} foreach (units _grp);
|
||||
};
|
||||
|
||||
if (KP_liberation_debug) then {private _text = format ["[KP LIBERATION] [DEBUG] Spawning regular squad done at %1 - Owner: %2", time, debug_source];_text remoteExec ["diag_log",2];};
|
||||
|
||||
_grp;
|
||||
|
|
|
@ -36,6 +36,8 @@ civinfo_notifications = compileFinal preprocessFileLineNumbers "scripts\client\c
|
|||
civinfo_escort = compileFinal preprocessFileLineNumbers "scripts\client\civinformant\civinfo_escort.sqf";
|
||||
civinfo_delivered = compileFinal preprocessFileLineNumbers "scripts\server\civinformant\civinfo_delivered.sqf";
|
||||
|
||||
asymm_notifications = compileFinal preprocessFileLineNumbers "scripts\client\asymmetric\asymm_notifications.sqf";
|
||||
|
||||
[] spawn compileFinal preprocessFileLineNumbers "scripts\shared\scan_skill.sqf";
|
||||
[] spawn compileFinal preprocessFileLineNumbers "scripts\shared\diagnostics.sqf";
|
||||
if (!KP_liberation_ace) then {[] spawn compileFinal preprocessFileLineNumbers "scripts\shared\manage_weather.sqf";};
|
||||
|
|
|
@ -4284,7 +4284,7 @@
|
|||
<German>Automatischer Server Restart nach (Stunden)</German>
|
||||
</Key>
|
||||
<Key ID="STR_PARAMS_DEBUGOPTIONS">
|
||||
<Original>== DEBUG MESSAGE SETTINGS ==</Original>
|
||||
<Original>== DEBUG MESSAGES ==</Original>
|
||||
<German>== DEBUG NACHRICHTEN ==</German>
|
||||
</Key>
|
||||
<Key ID="STR_PARAMS_DEBUG_CIVINFO">
|
||||
|
@ -4323,5 +4323,21 @@
|
|||
<Original>Logistic</Original>
|
||||
<German>Logistik</German>
|
||||
</Key>
|
||||
<Key ID="STR_NOTIFICATION_ASYMMCONVOYAMBUSH_TITLE">
|
||||
<Original>Logistic Convoy Ambush</Original>
|
||||
<German>Logistikkonvoi Überfall</German>
|
||||
</Key>
|
||||
<Key ID="STR_NOTIFICATION_ASYMMCONVOYAMBUSH_TEXT">
|
||||
<Original>Guerilla forces attacking our convoy near %1.</Original>
|
||||
<German>Guerillakräfte greifen unseren Konvoi nahe %1 an.</German>
|
||||
</Key>
|
||||
<Key ID="STR_NOTIFICATION_ASYMMCONVOYAMBUSH_SUCCESS">
|
||||
<Original>The ambush was successfully repulsed.</Original>
|
||||
<German>Der Hinterhalt konnte erfolgreich zurückgeschlagen werden.</German>
|
||||
</Key>
|
||||
<Key ID="STR_NOTIFICATION_ASYMMCONVOYAMBUSH_FAIL">
|
||||
<Original>The guerilla forces excaped with the convoy resources.</Original>
|
||||
<German>Die Guerillakräfte konnten mit den Konvoiressourcen verschwinden.</German>
|
||||
</Key>
|
||||
</Package>
|
||||
</Project>
|
||||
|
|
|
@ -160,4 +160,20 @@ class CfgNotifications {
|
|||
class lib_civ_informant_death : lib_intel {
|
||||
description = $STR_NOTIFICATION_CIV_INFORMANT_DEATH;
|
||||
};
|
||||
class lib_asymm_convoy_ambush : lib_default_notification {
|
||||
title = $STR_NOTIFICATION_ASYMMCONVOYAMBUSH_TITLE;
|
||||
description = $STR_NOTIFICATION_ASYMMCONVOYAMBUSH_TEXT;
|
||||
iconPicture = "res\notif\ui_notif_camb.paa";
|
||||
color[] = {1, 0, 0, 1};
|
||||
sound = "taskCreated";
|
||||
};
|
||||
class lib_asymm_convoy_ambush_success : lib_asymm_convoy_ambush {
|
||||
description = $STR_NOTIFICATION_ASYMMCONVOYAMBUSH_SUCCESS;
|
||||
sound = "taskSucceeded";
|
||||
};
|
||||
class lib_asymm_convoy_ambush_fail : lib_asymm_convoy_ambush {
|
||||
description = $STR_NOTIFICATION_ASYMMCONVOYAMBUSH_FAIL;
|
||||
color[] = {1, 0, 0, 1};
|
||||
sound = "taskFailed";
|
||||
};
|
||||
};
|
||||
|
|
30
README.md
30
README.md
|
@ -162,23 +162,27 @@ class Missions
|
|||
|
||||
### 0.96 (in Development)
|
||||
* Added: BI Support System functionality. (Currently deactivated, as there are still issues in MP)
|
||||
* Added: Parameter for access to the Support System -> Disabled, Commander, Whitelist, Everyone. (Currently deactivated, as there are still issues in MP)
|
||||
* Added: BI Artillery support for artillery vehicles and mortars (if built manned or AI ordered to get in as crew). (Currently deactivated, as there are still issues in MP)
|
||||
* Added: Chinese Simplified localization. Thanks to [nercon](https://github.com/nercon)
|
||||
* Added: Parameter for access to the Support System -> Disabled, Commander, Whitelist, Everyone.
|
||||
* Added: BI Artillery support for artillery vehicles and mortars (if built manned or AI ordered to get in as crew).
|
||||
* Added: Players can request artillery support from players (generates task).
|
||||
* Added: Civil Reputation.
|
||||
* Added: Config variables for the civil reputation.
|
||||
* Added: Reputation penalty for killing civilians.
|
||||
* Added: Reputation penalty for seizing civil vehicles.
|
||||
* Added: Players can request artillery support from players (generates task). (Currently deactivated, as there are still issues in MP)
|
||||
* Added: Reputation penalty for destroyed/damaged civil buildings.
|
||||
* Added: Mission parameter to choose building penalty for damaged or only destroyed buildings.
|
||||
* Added: Reputation gain for liberated sectors.
|
||||
* Added: Config variables in `kp_liberation_config.sqf`.
|
||||
* Added: Reputation penalty for killing civilians.
|
||||
* Added: Reputation penalty for seizing civil vehicles.
|
||||
* Added: Reputation penalty for destroyed/damaged civil buildings.
|
||||
* Added: Mission parameter to choose building penalty for damaged or only destroyed buildings.
|
||||
* Added: Reputation gain for liberated sectors.
|
||||
* Added: Civil informant.
|
||||
* Added: If you've a good reputation, a civil informant can rarely spawn at blufor sectors.
|
||||
* Added: Intel increase, if you capture the informant and bring him back to a FOB.
|
||||
* Added: Asymmetric Threats.
|
||||
* Added: Possibility of IEDs in blufor sectors, if you have a bad civil reputation.
|
||||
* Added: Own logistic convoys can be ambushed by guerilla forces.
|
||||
* Added: Value for guerilla strength which will be affected by the events connected to guerilla forces.
|
||||
* Added: Chinese Simplified localization. Thanks to [nercon](https://github.com/nercon)
|
||||
* Added: Automatic server restart script for dedicated servers. Thanks to [k4s0](https://github.com/k4s0)
|
||||
* Added: Settings in the mission parameters for particular debug messages.
|
||||
* Added: Civil informant can rarely spawn in blufor sectors, when reputation is high enough.
|
||||
* Added: Factory map markers now indicate which production facilities are available there.
|
||||
* Added: Asymmetric Threats.
|
||||
* Added: Possibility of IEDs in blufor sectors, if you have a bad civil reputation.
|
||||
* Removed: Liberation skill handling of AI units, as BI do this good enough now concerning wounds, etc.
|
||||
* Removed: Vehicle explosion chance script for convoy ambush.
|
||||
* Tweaked: Terrain alignment will be persistent during repeat building of objects (like walls). Thanks to [veteran29](https://github.com/veteran29)
|
||||
|
|
Loading…
Reference in New Issue