From 67336be62a5b2c3de28dafc979cad2c163d9fe50 Mon Sep 17 00:00:00 2001 From: InHooman Date: Sat, 12 Jul 2025 13:43:17 +0300 Subject: [PATCH] Faction switcher part 1 WIP --- .../presets/opfor/gm_west.sqf | 40 ++++++------- .../client/misc/fnc_factionSwitcher.sqf | 57 +++++++++++++++++++ 2 files changed, 77 insertions(+), 20 deletions(-) create mode 100644 kp_liberation.brf_sumava/scripts/client/misc/fnc_factionSwitcher.sqf diff --git a/kp_liberation.brf_sumava/presets/opfor/gm_west.sqf b/kp_liberation.brf_sumava/presets/opfor/gm_west.sqf index fbb4a91..d3deaf1 100644 --- a/kp_liberation.brf_sumava/presets/opfor/gm_west.sqf +++ b/kp_liberation.brf_sumava/presets/opfor/gm_west.sqf @@ -7,26 +7,26 @@ */ // Enemy infantry - 80s -opfor_officer = "gm_ge_army_officer_p1_80_oli"; // Officer -opfor_squad_leader = "gm_ge_army_squadleader_g3a3_p2a1_80_ols"; // Squad Leader -opfor_team_leader = "gm_ge_army_squadleader_g3a3_p2a1_80_ols"; // Team Leader -opfor_sentry = "gm_ge_army_rifleman_g3a3_80_ols"; // Rifleman (Lite) -opfor_rifleman = "gm_ge_army_rifleman_g3a3_80_ols"; // Rifleman -opfor_grenadier = "gm_ge_army_grenadier_g3a3_80_ols"; // Grenadier -opfor_grenadier_heavy = "gm_ge_army_grenadier_hk69a1_80_ols"; // Heavy Grenadier -opfor_machinegunner = "gm_ge_army_machinegunner_mg3_80_ols"; // Autorifleman -opfor_heavygunner = "gm_ge_army_machinegunner_assistant_g3a3_mg3_80_ols"; // Heavy Gunner -opfor_marksman = "gm_ge_army_marksman_g3a3_80_ols"; // Marksman -opfor_sharpshooter = "gm_ge_army_marksman_g3a3_80_ols"; // Sharpshooter -opfor_sniper = "gm_ge_army_marksman_g3a3_80_ols"; // Sniper -opfor_rpg = "gm_ge_army_antitank_g3a3_pzf44_80_ols"; // Rifleman (LAT) -opfor_rpg_assistant = "gm_ge_army_antitank_assistant_g3a3_pzf44_80_ols"; // Rifleman (LAT Assistant) -opfor_at = "gm_ge_army_antitank_g3a3_pzf84_80_ols"; // Rifleman (HAT) -opfor_at_assistant = "gm_ge_army_antitank_assistant_g3a3_pzf84_80_ols"; // Rifleman (HAT Assistant) -opfor_aa = "gm_ge_army_antiair_g3a3_fim43_80_ols"; // AA Specialist -opfor_medic = "gm_ge_army_medic_g3a3_80_ols"; // Combat Life Saver -opfor_engineer = "gm_ge_army_engineer_g3a4_80_ols"; // Engineer -opfor_paratrooper = "gm_ge_army_paratrooper_g3a4_80_ols"; // Paratrooper +opfor_officer = "gm_ge_army_officer_p1_80_oli"; // Officer +opfor_squad_leader = "gm_ge_army_squadleader_g3a3_p2a1_80_ols"; // Squad Leader +opfor_team_leader = "gm_ge_army_squadleader_g3a3_p2a1_80_ols"; // Team Leader +opfor_sentry = "gm_ge_army_rifleman_g3a3_80_ols"; // Rifleman (Lite) +opfor_rifleman = "gm_ge_army_rifleman_g3a3_80_ols"; // Rifleman +opfor_grenadier = "gm_ge_army_grenadier_g3a3_80_ols"; // Grenadier +opfor_grenadier_heavy = "gm_ge_army_grenadier_hk69a1_80_ols"; // Heavy Grenadier +opfor_machinegunner = "gm_ge_army_machinegunner_mg3_80_ols"; // Autorifleman +opfor_heavygunner = "gm_ge_army_machinegunner_assistant_g3a3_mg3_80_ols"; // Heavy Gunner +opfor_marksman = "gm_ge_army_marksman_g3a3_80_ols"; // Marksman +opfor_sharpshooter = "gm_ge_army_marksman_g3a3_80_ols"; // Sharpshooter +opfor_sniper = "gm_ge_army_marksman_g3a3_80_ols"; // Sniper +opfor_rpg = "gm_ge_army_antitank_g3a3_pzf44_80_ols"; // Rifleman (LAT) +opfor_rpg_assistant = "gm_ge_army_antitank_assistant_g3a3_pzf44_80_ols"; // Rifleman (LAT Assistant) +opfor_at = "gm_ge_army_antitank_g3a3_pzf84_80_ols"; // Rifleman (HAT) +opfor_at_assistant = "gm_ge_army_antitank_assistant_g3a3_pzf84_80_ols"; // Rifleman (HAT Assistant) +opfor_aa = "gm_ge_army_antiair_g3a3_fim43_80_ols"; // AA Specialist +opfor_medic = "gm_ge_army_medic_g3a3_80_ols"; // Combat Life Saver +opfor_engineer = "gm_ge_army_engineer_g3a4_80_ols"; // Engineer +opfor_paratrooper = "gm_ge_army_paratrooper_g3a4_80_ols"; // Paratrooper // Enemy infantry - 90s opfor_officer_late = "gm_ge_army_officer_p1_90_flk"; // Officer diff --git a/kp_liberation.brf_sumava/scripts/client/misc/fnc_factionSwitcher.sqf b/kp_liberation.brf_sumava/scripts/client/misc/fnc_factionSwitcher.sqf new file mode 100644 index 0000000..04607d9 --- /dev/null +++ b/kp_liberation.brf_sumava/scripts/client/misc/fnc_factionSwitcher.sqf @@ -0,0 +1,57 @@ +// Script to switch defender factions. +// Switches randomly between the factions from presets/opfor/gm_west.sqf +// Needs to be called every time a unit is spawned. + +private _factionRoll = floor (random 100); + +switch (true) do { + // Germany Late (15%) + case (_factionRoll < 15): { + KPLIB_o_squadStd = KPLIB_o_squadStd_DE_90; + KPLIB_o_squadInf = KPLIB_o_squadInf_DE_90; + KPLIB_o_squadTank = KPLIB_o_squadTank_DE_90; + KPLIB_o_squadAir = KPLIB_o_squadAir_DE_90; + }; + // Germany Early (30%) + case (_factionRoll < 45): { + KPLIB_o_squadStd = KPLIB_o_squadStd_DE_80; + KPLIB_o_squadInf = KPLIB_o_squadInf_DE_80; + KPLIB_o_squadTank = KPLIB_o_squadTank_DE_80; + KPLIB_o_squadAir = KPLIB_o_squadAir_DE_80; + }; + // Germany Boderguards (5%) + case (_factionRoll < 50): { + KPLIB_o_squadStd = KPLIB_o_squadStd_DEBG; + KPLIB_o_squadInf = KPLIB_o_squadInf_DEBG; + KPLIB_o_squadTank = KPLIB_o_squadTank_DEBG; + KPLIB_o_squadAir = KPLIB_o_squadAir_DEBG; + }; + // Denmark (10%) + case (_factionRoll < 60): { + KPLIB_o_squadStd = KPLIB_o_squadStd_DK; + KPLIB_o_squadInf = KPLIB_o_squadInf_DK; + KPLIB_o_squadTank = KPLIB_o_squadTank_DK; + KPLIB_o_squadAir = KPLIB_o_squadAir_DK; + }; + // US Army Late (20%) + case (_factionRoll < 80): { + KPLIB_o_squadStd = KPLIB_o_squadStd_USA_L; + KPLIB_o_squadInf = KPLIB_o_squadInf_USA_L; + KPLIB_o_squadTank = KPLIB_o_squadTank_USA_L; + KPLIB_o_squadAir = KPLIB_o_squadAir_USA_L; + }; + // US Army Early (15%) + case (_factionRoll < 90): { + KPLIB_o_squadStd = KPLIB_o_squadStd_USA_E; + KPLIB_o_squadInf = KPLIB_o_squadInf_USA_E; + KPLIB_o_squadTank = KPLIB_o_squadTank_USA_E; + KPLIB_o_squadAir = KPLIB_o_squadAir_USA_E; + }; + // USMC (10%) + case (_factionRoll < 100): { + KPLIB_o_squadStd = KPLIB_o_squadStd_USMC; + KPLIB_o_squadInf = KPLIB_o_squadInf_USMC; + KPLIB_o_squadTank = KPLIB_o_squadTank_USMC; + KPLIB_o_squadAir = KPLIB_o_squadAir_USMC; + }; +}; \ No newline at end of file