Merge pull request #640 from KillahPotatoes/v0.96.5-Wyqer

Wyqer pt4
This commit is contained in:
Christian 2019-07-25 22:44:19 +02:00 committed by GitHub
commit c75b807941
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
62 changed files with 35956 additions and 2509 deletions

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,127 +1,132 @@
// Global Mobilization East Germany Arsenal Preset
/*
Global Mobilization East Germany Arsenal Preset
// DLCs needed:
// Global Mobilization
Mods needed:
- Global Mobilization
Mods optional:
- None
*/
GRLIB_arsenal_weapons = [
// AK-74
"gm_mpiak74n_brn",
"gm_mpiaks74nk_brn",
"gm_mpiaks74n_brn",
// AK-74
"gm_mpiak74n_brn",
"gm_mpiaks74nk_brn",
"gm_mpiaks74n_brn",
// RPK-74
"gm_lmgrpk74n_brn",
"gm_lmgrpk74n_prp",
// RPK-74
"gm_lmgrpk74n_brn",
"gm_lmgrpk74n_prp",
// RPK
"gm_lmgrpk_brn",
"gm_lmgrpk_prp",
// RPK
"gm_lmgrpk_brn",
"gm_lmgrpk_prp",
// LP1 26.5mm
"gm_lp1_blk",
// LP1 26.5mm
"gm_lp1_blk",
// PKM
"gm_hmgpkm_prp",
// PKM
"gm_hmgpkm_prp",
// RPG-7
"gm_rpg7_prp_pgo7v"
// RPG-7
"gm_rpg7_prp_pgo7v"
];
GRLIB_arsenal_magazines = [
// LP1 26.5mm
"gm_1Rnd_265mm_flare_single_grn_gc",
"gm_1Rnd_265mm_flare_single_red_gc",
"gm_1Rnd_265mm_flare_multi_red_gc",
// LP1 26.5mm
"gm_1Rnd_265mm_flare_single_grn_gc",
"gm_1Rnd_265mm_flare_single_red_gc",
"gm_1Rnd_265mm_flare_multi_red_gc",
"gm_1Rnd_265mm_smoke_single_yel_gc",
"gm_1Rnd_265mm_smoke_single_blu_gc",
"gm_1Rnd_265mm_smoke_single_blk_gc",
"gm_1Rnd_265mm_smoke_single_yel_gc",
"gm_1Rnd_265mm_smoke_single_blu_gc",
"gm_1Rnd_265mm_smoke_single_blk_gc",
// RPG-7
"gm_1Rnd_40mm_heat_pg7v_rpg7",
// RPG-7
"gm_1Rnd_40mm_heat_pg7v_rpg7",
// AK-74 + RPK-74
"gm_30Rnd_545x39mm_B_7N6_ak74_org",
"gm_30Rnd_545x39mm_B_7N6_ak74_prp",
"gm_30Rnd_545x39mm_B_T_7T3_ak74_prp",
"gm_30Rnd_545x39mm_B_T_7T3_ak74_org",
// AK-74 + RPK-74
"gm_30Rnd_545x39mm_B_7N6_ak74_org",
"gm_30Rnd_545x39mm_B_7N6_ak74_prp",
"gm_30Rnd_545x39mm_B_T_7T3_ak74_prp",
"gm_30Rnd_545x39mm_B_T_7T3_ak74_org",
"gm_45Rnd_545x39mm_B_7N6_ak74_prp",
"gm_45Rnd_545x39mm_B_7N6_ak74_org",
"gm_45Rnd_545x39mm_B_T_7T3_ak74_prp",
"gm_45Rnd_545x39mm_B_T_7T3_ak74_org",
"gm_45Rnd_545x39mm_B_7N6_ak74_prp",
"gm_45Rnd_545x39mm_B_7N6_ak74_org",
"gm_45Rnd_545x39mm_B_T_7T3_ak74_prp",
"gm_45Rnd_545x39mm_B_T_7T3_ak74_org",
// RPK
"gm_30Rnd_762x39mm_B_M43_ak47_blk",
"gm_30Rnd_762x39mm_B_T_M43_ak47_blk",
// RPK
"gm_30Rnd_762x39mm_B_M43_ak47_blk",
"gm_30Rnd_762x39mm_B_T_M43_ak47_blk",
"gm_75Rnd_762x39mm_B_M43_ak47_blk",
"gm_75Rnd_762x39mm_B_T_M43_ak47_blk",
"gm_75Rnd_762x39mm_B_M43_ak47_blk",
"gm_75Rnd_762x39mm_B_T_M43_ak47_blk",
// PKM
"gm_100Rnd_762x54mm_B_T_T46_pk_grn",
"gm_100Rnd_762x54mm_API_B32_pk_grn",
// PKM
"gm_100Rnd_762x54mm_B_T_T46_pk_grn",
"gm_100Rnd_762x54mm_API_B32_pk_grn",
// Grenades
"gm_handgrenade_frag_rgd5",
"gm_smokeshell_blk_gc",
"gm_smokeshell_blu_gc",
"gm_smokeshell_grn_gc",
"gm_smokeshell_org_gc",
"gm_smokeshell_red_gc",
"gm_smokeshell_wht_gc",
// Grenades
"gm_handgrenade_frag_rgd5",
"gm_smokeshell_blk_gc",
"gm_smokeshell_blu_gc",
"gm_smokeshell_grn_gc",
"gm_smokeshell_org_gc",
"gm_smokeshell_red_gc",
"gm_smokeshell_wht_gc",
// Explosives
"gm_explosive_plnp_charge",
"gm_mine_at_tm46"
// Explosives
"gm_explosive_plnp_charge",
"gm_mine_at_tm46"
];
GRLIB_arsenal_items = [
// Uniforms
"gm_gc_army_uniform_dress_80_gry",
"gm_gc_army_uniform_soldier_80_blk",
"gm_gc_army_uniform_soldier_80_str",
// Uniforms
"gm_gc_army_uniform_dress_80_gry",
"gm_gc_army_uniform_soldier_80_blk",
"gm_gc_army_uniform_soldier_80_str",
// Vests
"gm_gc_army_vest_80_leader_str",
"gm_gc_army_vest_80_lmg_str",
"gm_gc_army_vest_80_belt_str",
"gm_gc_army_vest_80_rifleman_str",
"gm_gc_army_vest_80_at_str",
// Vests
"gm_gc_army_vest_80_leader_str",
"gm_gc_army_vest_80_lmg_str",
"gm_gc_army_vest_80_belt_str",
"gm_gc_army_vest_80_rifleman_str",
"gm_gc_army_vest_80_at_str",
// Headgear
"gm_gc_army_headgear_m56_cover_str",
"gm_gc_army_headgear_cap_80_gry",
"gm_gc_army_headgear_crewhat_80_blk",
"gm_gc_army_headgear_m56_net",
"gm_gc_army_headgear_hat_80_grn",
// Headgear
"gm_gc_army_headgear_m56_cover_str",
"gm_gc_army_headgear_cap_80_gry",
"gm_gc_army_headgear_crewhat_80_blk",
"gm_gc_army_headgear_m56_net",
"gm_gc_army_headgear_hat_80_grn",
// Facewear
"gm_gc_army_facewear_schm41m",
// Facewear
"gm_gc_army_facewear_schm41m",
// Attachments
"gm_pgo7v_blk",
// Attachments
"gm_pgo7v_blk",
// Items
"gm_gc_compass_f73",
"gm_repairkit_01",
"gm_gc_army_gauzeBandage",
"gm_gc_army_medkit",
"gm_watch_kosei_80",
"gm_df7x40_grn", // Binocular
"ItemMap",
"ItemWatch",
"ItemRadio"
// Items
"gm_gc_compass_f73",
"gm_repairkit_01",
"gm_gc_army_gauzeBandage",
"gm_gc_army_medkit",
"gm_watch_kosei_80",
"gm_df7x40_grn", // Binocular
"ItemMap",
"ItemWatch",
"ItemRadio"
];
GRLIB_arsenal_backpacks = [
"gm_gc_army_backpack_80_at_str",
"gm_gc_army_backpack_80_lmg_str",
"gm_gc_army_backpack_80_mgk_str",
"gm_gc_army_backpack_80_engineer_str",
"gm_gc_army_backpack_80_demolition_str",
"gm_gc_army_backpack_80_assaultpack_mgk_str",
"gm_gc_army_backpack_80_assaultpack_lmg_str"
"gm_gc_army_backpack_80_at_str",
"gm_gc_army_backpack_80_lmg_str",
"gm_gc_army_backpack_80_mgk_str",
"gm_gc_army_backpack_80_engineer_str",
"gm_gc_army_backpack_80_demolition_str",
"gm_gc_army_backpack_80_assaultpack_mgk_str",
"gm_gc_army_backpack_80_assaultpack_lmg_str"
];

View File

@ -1,170 +1,177 @@
// Global Mobilization West Germany Arsenal Preset
/*
Global Mobilization West Germany Arsenal Preset
// DLCs needed:
// Global Mobilization
Author: Dahlgren - https://github.com/Dahlgren
Mods needed:
- Global Mobilization
Mods optional:
- None
*/
GRLIB_arsenal_weapons = [
// G3A3 + G3A4
"gm_g3a3_oli",
"gm_g3a4_oli",
// G3A3 + G3A4
"gm_g3a3_oli",
"gm_g3a4_oli",
// MG3 7.62x51 mm
"gm_mg3_blk",
// MG3 7.62x51 mm
"gm_mg3_blk",
// MP2A1 9x19 mm
"gm_mp2a1_blk",
// MP2A1 9x19 mm
"gm_mp2a1_blk",
// P1 9x19 mm
"gm_p1_blk",
// P1 9x19 mm
"gm_p1_blk",
// P2A1 26.5 mm
"gm_p2a1_blk",
// P2A1 26.5 mm
"gm_p2a1_blk",
// PzF44-2
"gm_pzf44_2_oli",
// PzF44-2
"gm_pzf44_2_oli",
// PzF84
"gm_pzf84_oli"
// PzF84
"gm_pzf84_oli"
];
GRLIB_arsenal_magazines = [
// G3A3 + G3A4
"gm_20rnd_762x51mm_b_t_dm21_g3_blk",
"gm_20rnd_762x51mm_b_t_dm21a1_g3_blk",
"gm_20rnd_762x51mm_b_t_dm21a2_g3_blk",
"gm_20rnd_762x51mm_b_dm111_g3_blk",
"gm_20rnd_762x51mm_b_dm41_g3_blk",
"gm_20rnd_762x51mm_ap_dm151_g3_blk",
"gm_20rnd_762x51mm_b_t_dm21_g3_des",
"gm_20rnd_762x51mm_b_t_dm21a1_g3_des",
"gm_20rnd_762x51mm_b_t_dm21a2_g3_des",
"gm_20rnd_762x51mm_b_dm111_g3_des",
"gm_20rnd_762x51mm_b_dm41_g3_des",
"gm_20rnd_762x51mm_ap_dm151_g3_des",
// G3A3 + G3A4
"gm_20rnd_762x51mm_b_t_dm21_g3_blk",
"gm_20rnd_762x51mm_b_t_dm21a1_g3_blk",
"gm_20rnd_762x51mm_b_t_dm21a2_g3_blk",
"gm_20rnd_762x51mm_b_dm111_g3_blk",
"gm_20rnd_762x51mm_b_dm41_g3_blk",
"gm_20rnd_762x51mm_ap_dm151_g3_blk",
"gm_20rnd_762x51mm_b_t_dm21_g3_des",
"gm_20rnd_762x51mm_b_t_dm21a1_g3_des",
"gm_20rnd_762x51mm_b_t_dm21a2_g3_des",
"gm_20rnd_762x51mm_b_dm111_g3_des",
"gm_20rnd_762x51mm_b_dm41_g3_des",
"gm_20rnd_762x51mm_ap_dm151_g3_des",
"gm_1rnd_67mm_heat_dm22a1_g3",
"gm_1rnd_67mm_heat_dm22a1_g3",
// MG3 7.62x51 mm
"gm_120rnd_762x51mm_b_t_dm21_mg3_grn",
"gm_120rnd_762x51mm_b_t_dm21a1_mg3_grn",
"gm_120rnd_762x51mm_b_t_dm21a2_mg3_grn",
// MG3 7.62x51 mm
"gm_120rnd_762x51mm_b_t_dm21_mg3_grn",
"gm_120rnd_762x51mm_b_t_dm21a1_mg3_grn",
"gm_120rnd_762x51mm_b_t_dm21a2_mg3_grn",
// MP2A1 9x19 mm
"gm_32rnd_9x19mm_b_dm51_mp2_blk",
// MP2A1 9x19 mm
"gm_32rnd_9x19mm_b_dm51_mp2_blk",
// P1 9x19 mm
"gm_8rnd_9x19mm_b_dm11_p1_blk",
// P1 9x19 mm
"gm_8rnd_9x19mm_b_dm11_p1_blk",
// P2A1 26.5 mm
"gm_1Rnd_265mm_flare_single_wht_gc",
"gm_1Rnd_265mm_flare_single_grn_gc",
"gm_1Rnd_265mm_flare_single_red_gc",
"gm_1Rnd_265mm_flare_multi_red_gc",
"gm_1Rnd_265mm_smoke_single_yel_gc",
"gm_1Rnd_265mm_smoke_single_blu_gc",
"gm_1Rnd_265mm_smoke_single_blk_gc",
"gm_1Rnd_265mm_flare_para_yel_DM16",
"gm_1Rnd_265mm_flare_single_wht_DM15",
"gm_1Rnd_265mm_flare_single_red_DM13",
"gm_1Rnd_265mm_flare_single_grn_DM11",
"gm_1Rnd_265mm_flare_single_yel_DM10",
"gm_1Rnd_265mm_flare_multi_wht_DM25",
"gm_1Rnd_265mm_flare_multi_red_DM23",
"gm_1Rnd_265mm_flare_multi_grn_DM21",
"gm_1Rnd_265mm_flare_multi_yel_DM20",
"gm_1Rnd_265mm_smoke_single_yel_DM19",
"gm_1Rnd_265mm_smoke_single_org_DM22",
"gm_1Rnd_265mm_smoke_single_vlt_DM24",
"gm_1Rnd_265mm_flare_multi_nbc_DM47",
// P2A1 26.5 mm
"gm_1Rnd_265mm_flare_single_wht_gc",
"gm_1Rnd_265mm_flare_single_grn_gc",
"gm_1Rnd_265mm_flare_single_red_gc",
"gm_1Rnd_265mm_flare_multi_red_gc",
"gm_1Rnd_265mm_smoke_single_yel_gc",
"gm_1Rnd_265mm_smoke_single_blu_gc",
"gm_1Rnd_265mm_smoke_single_blk_gc",
"gm_1Rnd_265mm_flare_para_yel_DM16",
"gm_1Rnd_265mm_flare_single_wht_DM15",
"gm_1Rnd_265mm_flare_single_red_DM13",
"gm_1Rnd_265mm_flare_single_grn_DM11",
"gm_1Rnd_265mm_flare_single_yel_DM10",
"gm_1Rnd_265mm_flare_multi_wht_DM25",
"gm_1Rnd_265mm_flare_multi_red_DM23",
"gm_1Rnd_265mm_flare_multi_grn_DM21",
"gm_1Rnd_265mm_flare_multi_yel_DM20",
"gm_1Rnd_265mm_smoke_single_yel_DM19",
"gm_1Rnd_265mm_smoke_single_org_DM22",
"gm_1Rnd_265mm_smoke_single_vlt_DM24",
"gm_1Rnd_265mm_flare_multi_nbc_DM47",
// PzF44-2
"gm_1rnd_44x537mm_heat_dm32_pzf44_2",
// PzF44-2
"gm_1rnd_44x537mm_heat_dm32_pzf44_2",
// PzF84
"gm_1rnd_84x245mm_heat_t_dm12_carlgustaf",
"gm_1rnd_84x245mm_heat_t_dm12a1_carlgustaf",
"gm_1rnd_84x245mm_heat_t_dm22_carlgustaf",
"gm_1rnd_84x245mm_heat_t_dm32_carlgustaf",
"gm_1rnd_84x245mm_illum_dm16_carlgustaf",
// PzF84
"gm_1rnd_84x245mm_heat_t_dm12_carlgustaf",
"gm_1rnd_84x245mm_heat_t_dm12a1_carlgustaf",
"gm_1rnd_84x245mm_heat_t_dm22_carlgustaf",
"gm_1rnd_84x245mm_heat_t_dm32_carlgustaf",
"gm_1rnd_84x245mm_illum_dm16_carlgustaf",
// Grenades
"gm_handgrenade_frag_dm51",
"gm_handgrenade_frag_dm51a1",
"gm_handgrenade_conc_dm51",
"gm_handgrenade_conc_dm51a1",
"gm_smokeshell_grn_dm21",
"gm_smokeshell_red_dm23",
"gm_smokeshell_yel_dm26",
"gm_smokeshell_org_dm32",
"gm_smokeshell_wht_dm25",
// Grenades
"gm_handgrenade_frag_dm51",
"gm_handgrenade_frag_dm51a1",
"gm_handgrenade_conc_dm51",
"gm_handgrenade_conc_dm51a1",
"gm_smokeshell_grn_dm21",
"gm_smokeshell_red_dm23",
"gm_smokeshell_yel_dm26",
"gm_smokeshell_org_dm32",
"gm_smokeshell_wht_dm25",
// Explosives
"gm_explosive_petn_charge",
"gm_mine_at_dm21"
// Explosives
"gm_explosive_petn_charge",
"gm_mine_at_dm21"
];
GRLIB_arsenal_items = [
// Uniforms
"gm_ge_army_uniform_crew_80_oli",
"gm_ge_army_uniform_soldier_80_oli",
"gm_ge_army_uniform_soldier_80_ols",
"gm_ge_army_uniform_soldier_parka_80_oli",
"gm_ge_army_uniform_soldier_parka_80_ols",
"gm_ge_bgs_uniform_soldier_80_smp",
// Uniforms
"gm_ge_army_uniform_crew_80_oli",
"gm_ge_army_uniform_soldier_80_oli",
"gm_ge_army_uniform_soldier_80_ols",
"gm_ge_army_uniform_soldier_parka_80_oli",
"gm_ge_army_uniform_soldier_parka_80_ols",
"gm_ge_bgs_uniform_soldier_80_smp",
// Vests
"gm_ge_army_vest_80_bag",
"gm_ge_army_vest_80_belt",
"gm_ge_army_vest_80_crew",
"gm_ge_army_vest_80_demolition",
"gm_ge_army_vest_80_leader",
"gm_ge_army_vest_80_machinegunner",
"gm_ge_army_vest_80_medic",
"gm_ge_army_vest_80_officer",
"gm_ge_army_vest_80_rifleman",
"gm_ge_bgs_vest_80_rifleman",
// Vests
"gm_ge_army_vest_80_bag",
"gm_ge_army_vest_80_belt",
"gm_ge_army_vest_80_crew",
"gm_ge_army_vest_80_demolition",
"gm_ge_army_vest_80_leader",
"gm_ge_army_vest_80_machinegunner",
"gm_ge_army_vest_80_medic",
"gm_ge_army_vest_80_officer",
"gm_ge_army_vest_80_rifleman",
"gm_ge_bgs_vest_80_rifleman",
// Headgear
"gm_ge_bgs_headgear_m35_53_blk",
"gm_ge_bgs_headgear_m35_53_net_blk",
"gm_ge_headgear_beret_bdx",
"gm_ge_headgear_beret_red",
"gm_ge_headgear_beret_grn",
"gm_ge_headgear_beret_mrb",
"gm_ge_headgear_beret_un",
"gm_ge_headgear_crewhat_80_blk",
"gm_ge_headgear_hat_80_gry",
"gm_ge_headgear_hat_80_m62_oli",
"gm_ge_headgear_hat_80_oli",
"gm_ge_headgear_headset_crew_oli",
"gm_ge_headgear_m62",
"gm_ge_headgear_m62_cover_blu",
"gm_ge_headgear_m62_net",
// Headgear
"gm_ge_bgs_headgear_m35_53_blk",
"gm_ge_bgs_headgear_m35_53_net_blk",
"gm_ge_headgear_beret_bdx",
"gm_ge_headgear_beret_red",
"gm_ge_headgear_beret_grn",
"gm_ge_headgear_beret_mrb",
"gm_ge_headgear_beret_un",
"gm_ge_headgear_crewhat_80_blk",
"gm_ge_headgear_hat_80_gry",
"gm_ge_headgear_hat_80_m62_oli",
"gm_ge_headgear_hat_80_oli",
"gm_ge_headgear_headset_crew_oli",
"gm_ge_headgear_m62",
"gm_ge_headgear_m62_cover_blu",
"gm_ge_headgear_m62_net",
// Facewear
"gm_ge_facewear_m65",
// Facewear
"gm_ge_facewear_m65",
// Attachments
"gm_feroz24_blk",
"gm_feroz2x17_pzf44_2_blk",
"gm_feroz2x17_pzf84_blk",
// Attachments
"gm_feroz24_blk",
"gm_feroz2x17_pzf44_2_blk",
"gm_feroz2x17_pzf84_blk",
// Items
"gm_ge_army_burnBandage",
"gm_ge_army_conat2",
"gm_ge_army_gauzeBandage",
"gm_ge_army_gauzeCompress",
"gm_ge_army_medkit_80",
"gm_repairkit_01",
"gm_ferod16_oli", // Binocular
"gm_watch_kosei_80",
"ItemMap",
"ItemWatch",
"ItemRadio"
// Items
"gm_ge_army_burnBandage",
"gm_ge_army_conat2",
"gm_ge_army_gauzeBandage",
"gm_ge_army_gauzeCompress",
"gm_ge_army_medkit_80",
"gm_repairkit_01",
"gm_ferod16_oli", // Binocular
"gm_watch_kosei_80",
"ItemMap",
"ItemWatch",
"ItemRadio"
];
GRLIB_arsenal_backpacks = [
"gm_ge_army_backpack_80_oli",
"gm_ge_backpack_satchel_80_blk",
"gm_ge_backpack_satchel_80_san"
"gm_ge_army_backpack_80_oli",
"gm_ge_backpack_satchel_80_blk",
"gm_ge_backpack_satchel_80_san"
];

View File

@ -1,184 +1,191 @@
// Swedish Forces Pack Arsenal Preset
/*
Swedish Forces Pack Arsenal Preset
// Mods needed:
// SFP
Author: Dahlgren - https://github.com/Dahlgren
Mods needed:
- Swedish Forces Pack
Mods optional:
- None
*/
GRLIB_arsenal_weapons = [
// Ak 4
"sfp_ak4b",
"sfp_ak4c",
"sfp_ak4d",
// Ak 4
"sfp_ak4b",
"sfp_ak4c",
"sfp_ak4d",
// Ak 5
"sfp_ak5",
"sfp_ak5_m203",
"sfp_ak5b",
"sfp_ak5c",
"sfp_ak5c_alt",
"sfp_ak5c_alt_plastic",
"sfp_ak5c_plastic",
"sfp_ak5c_m203",
"sfp_ak5c_m203_plastic",
"sfp_ak5dmk2",
"sfp_ak5dmk2_plastic",
// Ak 5
"sfp_ak5",
"sfp_ak5_m203",
"sfp_ak5b",
"sfp_ak5c",
"sfp_ak5c_alt",
"sfp_ak5c_alt_plastic",
"sfp_ak5c_plastic",
"sfp_ak5c_m203",
"sfp_ak5c_m203_plastic",
"sfp_ak5dmk2",
"sfp_ak5dmk2_plastic",
// G36
"sfp_g36c",
// G36
"sfp_g36c",
// Machine Guns
"sfp_ksp58B2",
"sfp_ksp58c",
"sfp_ksp90b",
"sfp_ksp90c",
// Machine Guns
"sfp_ksp58B2",
"sfp_ksp58c",
"sfp_ksp90b",
"sfp_ksp90c",
// Sniper rifles
"sfp_ag90",
"sfp_ag90_base",
"sfp_psg90",
"sfp_psg90_base",
// Sniper rifles
"sfp_ag90",
"sfp_ag90_base",
"sfp_psg90",
"sfp_psg90_base",
// AT
"sfp_grg86",
"sfp_pskott86",
"sfp_rb57",
// AT
"sfp_grg86",
"sfp_pskott86",
"sfp_rb57",
// AA
"sfp_rbs69",
// AA
"sfp_rbs69",
// Shotgun
"sfp_remington870",
// Shotgun
"sfp_remington870",
// Pistols
"sfp_p88",
"sfp_p226"
// Pistols
"sfp_p88",
"sfp_p226"
];
GRLIB_arsenal_magazines = [
"1Rnd_HE_Grenade_shell",
"ClaymoreDirectionalMine_Remote_Mag",
"SatchelCharge_Remote_Mag",
"sfp_9Rnd_762x51_psg90",
"sfp_9Rnd_762x51_psg90_prick",
"sfp_10Rnd_127x99_ag90",
"sfp_15Rnd_9x19_Mag",
"sfp_17Rnd_9x19_Mag",
"sfp_20Rnd_762x51_ak4",
"sfp_30Rnd_556x45_Stanag",
"sfp_30Rnd_556x45_Stanag_plastic",
"sfp_30Rnd_556x45_Stanag_tracer",
"sfp_30Rnd_556x45_Stanag_tracer_plastic",
"sfp_50Rnd_762x51_ksp58",
"sfp_100Rnd_762x51_ksp58",
"sfp_200Rnd_556x45_ksp90",
"sfp_grg_he_mag",
"sfp_grg_heat_62_mag",
"sfp_grg_heat_66_mag",
"sfp_grg_heat_mag",
"sfp_grg_illum_mag",
"sfp_grg_smoke_mag",
"sfp_handgrenade_shgr56",
"sfp_handgrenade_shgr2000",
"sfp_handgrenade_shgr07",
"sfp_pskott86_mag",
"sfp_rb57_mag",
"sfp_sprdeg46_mag",
"sfp_strvm5_mag",
"sfp_rbs69_mag",
"sfp_30Rnd_650x25mag",
"sfp_36Rnd_9mm_kpistm45",
"sfp_12Gauge_8rd_Pellets",
"sfp_12Gauge_8rd_Slug",
"SmokeShell"
"1Rnd_HE_Grenade_shell",
"ClaymoreDirectionalMine_Remote_Mag",
"SatchelCharge_Remote_Mag",
"sfp_9Rnd_762x51_psg90",
"sfp_9Rnd_762x51_psg90_prick",
"sfp_10Rnd_127x99_ag90",
"sfp_15Rnd_9x19_Mag",
"sfp_17Rnd_9x19_Mag",
"sfp_20Rnd_762x51_ak4",
"sfp_30Rnd_556x45_Stanag",
"sfp_30Rnd_556x45_Stanag_plastic",
"sfp_30Rnd_556x45_Stanag_tracer",
"sfp_30Rnd_556x45_Stanag_tracer_plastic",
"sfp_50Rnd_762x51_ksp58",
"sfp_100Rnd_762x51_ksp58",
"sfp_200Rnd_556x45_ksp90",
"sfp_grg_he_mag",
"sfp_grg_heat_62_mag",
"sfp_grg_heat_66_mag",
"sfp_grg_heat_mag",
"sfp_grg_illum_mag",
"sfp_grg_smoke_mag",
"sfp_handgrenade_shgr56",
"sfp_handgrenade_shgr2000",
"sfp_handgrenade_shgr07",
"sfp_pskott86_mag",
"sfp_rb57_mag",
"sfp_sprdeg46_mag",
"sfp_strvm5_mag",
"sfp_rbs69_mag",
"sfp_30Rnd_650x25mag",
"sfp_36Rnd_9mm_kpistm45",
"sfp_12Gauge_8rd_Pellets",
"sfp_12Gauge_8rd_Slug",
"SmokeShell"
];
GRLIB_arsenal_items = [
"B_UavTerminal",
"Binocular",
"ItemCompass",
"ItemGPS",
"ItemMap",
"ItemRadio",
"ItemWatch",
"Laserdesignator",
"FirstAidKit",
"Medikit",
"MineDetector",
"NVGoggles",
"NVGoggles_INDEP",
"NVGoggles_OPFOR",
"Rangefinder",
"ToolKit",
"B_UavTerminal",
"Binocular",
"ItemCompass",
"ItemGPS",
"ItemMap",
"ItemRadio",
"ItemWatch",
"Laserdesignator",
"FirstAidKit",
"Medikit",
"MineDetector",
"NVGoggles",
"NVGoggles_INDEP",
"NVGoggles_OPFOR",
"Rangefinder",
"ToolKit",
// Uniforms - Woodland
"sfp_m90w_uniform",
"sfp_m90w_uniform_dirty",
"sfp_m90w_uniform_tshirt",
"sfp_ghillie_uniform",
// Uniforms - Woodland
"sfp_m90w_uniform",
"sfp_m90w_uniform_dirty",
"sfp_m90w_uniform_tshirt",
"sfp_ghillie_uniform",
// Uniforms - Desert
"sfp_m90d_uniform",
"sfp_m90d_uniform_dirty",
"sfp_m90d_uniform_tshirt",
"sfp_ghillie_desert_uniform",
// Uniforms - Desert
"sfp_m90d_uniform",
"sfp_m90d_uniform_dirty",
"sfp_m90d_uniform_tshirt",
"sfp_ghillie_desert_uniform",
// Attachments
"sfp_dbal2",
"sfp_tlr2",
"sfp_optic_3x_aimpoint",
"sfp_optic_aimpoint",
"sfp_optic_aimpoint_t1",
"sfp_optic_aimpoint_twist",
"sfp_optic_kikarsikte90b_10x",
"sfp_optic_susat_4x",
// Attachments
"sfp_dbal2",
"sfp_tlr2",
"sfp_optic_3x_aimpoint",
"sfp_optic_aimpoint",
"sfp_optic_aimpoint_t1",
"sfp_optic_aimpoint_twist",
"sfp_optic_kikarsikte90b_10x",
"sfp_optic_susat_4x",
// Vests
"sfp_stridsvast08",
"sfp_kroppsskydd12",
"sfp_kroppsskydd12_crew",
"sfp_kroppsskydd12_tl",
"sfp_kroppsskydd12_at",
"sfp_kroppsskydd12_medic",
"sfp_kroppsskydd12_holster",
// Vests
"sfp_stridsvast08",
"sfp_kroppsskydd12",
"sfp_kroppsskydd12_crew",
"sfp_kroppsskydd12_tl",
"sfp_kroppsskydd12_at",
"sfp_kroppsskydd12_medic",
"sfp_kroppsskydd12_holster",
// Headgear
"H_HelmetCrew_I",
"sfp_m87_flying_suit",
"sfp_flighthelmet116",
"sfp_headset",
"sfp_peltor",
// Headgear
"H_HelmetCrew_I",
"sfp_m87_flying_suit",
"sfp_flighthelmet116",
"sfp_headset",
"sfp_peltor",
// Headgear - Woodland
"sfp_m90w_cap",
"sfp_m90w_cap_peltor",
"sfp_m90w_helmet",
"sfp_m90w_helmet_headset",
"sfp_m90w_helmet_headset_nvg",
"sfp_m90w_helmet_peltor",
"sfp_m90w_helmet_nvg",
"sfp_m90w_helmet_peltor_nvg",
// Headgear - Woodland
"sfp_m90w_cap",
"sfp_m90w_cap_peltor",
"sfp_m90w_helmet",
"sfp_m90w_helmet_headset",
"sfp_m90w_helmet_headset_nvg",
"sfp_m90w_helmet_peltor",
"sfp_m90w_helmet_nvg",
"sfp_m90w_helmet_peltor_nvg",
// Headgear - Desert
"sfp_m90d_cap",
"sfp_m90d_cap_peltor",
"sfp_m90d_helmet",
"sfp_m90d_helmet_headset",
"sfp_m90d_helmet_headset_nvg",
"sfp_m90d_helmet_peltor",
"sfp_m90d_helmet_nvg",
"sfp_m90d_helmet_peltor_nvg",
// Headgear - Desert
"sfp_m90d_cap",
"sfp_m90d_cap_peltor",
"sfp_m90d_helmet",
"sfp_m90d_helmet_headset",
"sfp_m90d_helmet_headset_nvg",
"sfp_m90d_helmet_peltor",
"sfp_m90d_helmet_nvg",
"sfp_m90d_helmet_peltor_nvg",
// Glasses
"G_Aviator"
// Glasses
"G_Aviator"
];
GRLIB_arsenal_backpacks = [
"sfp_backpack_grg_loader",
"sfp_backpack_lk35",
"sfp_backpack_sjvv9",
"sfp_backpack_stridssack08",
"sfp_backpack_stridssack2000",
"sfp_backpack_grg_loader",
"sfp_backpack_lk35",
"sfp_backpack_sjvv9",
"sfp_backpack_stridssack08",
"sfp_backpack_stridssack2000",
// TFAR Radios
"sfp_ra180",
"sfp_stridssack2000_ra_ksk12"
// TFAR Radios
"sfp_ra180",
"sfp_stridssack2000_ra_ksk12"
];

File diff suppressed because it is too large Load Diff

View File

@ -7,6 +7,7 @@
KP_liberation_medical_vehicles = [
"B_T_Truck_01_medical_F",
"B_Truck_01_medical_F",
"C_Van_02_medevac_F",
"CUP_B_BMP2_AMB_CDF",
"CUP_B_HMMWV_Ambulance_USA",
"CUP_B_HMMWV_Ambulance_USMC",
@ -18,6 +19,8 @@ KP_liberation_medical_vehicles = [
"gm_gc_army_ural375d_medic",
"gm_ge_army_u1300l_medic_win_rc",
"gm_ge_army_u1300l_medic",
"I_E_Truck_02_Medical_F",
"I_E_Van_02_medevac_F",
"O_T_Truck_03_medical_ghex_F",
"O_Truck_03_medical_F",
"RHS_UH60M_MEV_d",
@ -88,7 +91,8 @@ If you want to change a preset, it's recommended to set all four presets to 0 an
23 = CUP Army of the Czech Republic (Desert)
24 = CUP Army of the Czech Republic (Woodland)
25 = SFP (Woodland)
26 = SFP (Desert) */
26 = SFP (Desert)
27 = LDF (Contact DLC) */
KP_liberation_preset_blufor = 0;
/* OPFOR preset:
@ -220,66 +224,96 @@ KP_liberation_resistance_at_chance = 20; // Chanc
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.
// 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.
KP_liberation_battlegroup_clearance = [
"song_bin_tanh"
];
/* - 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. */
blacklisted_from_arsenal = [
"I_HMG_01_weapon_F",
"B_HMG_01_weapon_F",
"O_HMG_01_weapon_F",
"I_HMG_01_A_weapon_F",
"B_HMG_01_A_weapon_F",
"O_HMG_01_A_weapon_F",
"I_HMG_01_high_weapon_F",
"B_HMG_01_high_weapon_F",
"O_HMG_01_high_weapon_F",
"I_GMG_01_weapon_F",
"B_GMG_01_weapon_F",
"O_GMG_01_weapon_F",
"I_GMG_01_A_weapon_F",
"B_GMG_01_A_weapon_F",
"O_GMG_01_A_weapon_F",
"I_GMG_01_high_weapon_F",
"B_GMG_01_high_weapon_F",
"O_GMG_01_high_weapon_F",
"I_Mortar_01_support_F",
"B_Mortar_01_support_F",
"O_Mortar_01_support_F",
"I_Mortar_01_weapon_F",
"B_Mortar_01_weapon_F",
"O_Mortar_01_weapon_F",
"I_HMG_01_support_F",
"B_HMG_01_support_F",
"O_HMG_01_support_F",
"I_HMG_01_support_high_F",
"B_HMG_01_support_high_F",
"O_HMG_01_support_high_F",
"I_AA_01_weapon_F",
"B_AA_01_weapon_F",
"O_AA_01_weapon_F",
"I_AT_01_weapon_F",
"B_AT_01_weapon_F",
"O_AT_01_weapon_F",
"I_UAV_01_backpack_F",
"B_UAV_01_backpack_F",
"O_UAV_01_backpack_F",
"I_UAV_06_backpack_F",
"B_UAV_06_backpack_F",
"O_UAV_06_backpack_F",
"I_UAV_06_medical_backpack_F",
"B_UAV_06_medical_backpack_F",
"O_UAV_06_medical_backpack_F",
"C_UAV_06_backpack_F",
"C_UAV_06_medical_backpack_F",
"C_IDAP_UAV_01_backpack_F",
"C_IDAP_UAV_06_backpack_F",
"C_IDAP_UAV_06_medical_backpack_F",
"C_IDAP_UAV_06_antimine_backpack_F",
"B_GMG_01_A_weapon_F",
"B_GMG_01_high_weapon_F",
"B_GMG_01_weapon_F",
"B_HMG_01_A_weapon_F",
"B_HMG_01_high_weapon_F",
"B_HMG_01_support_F",
"B_HMG_01_support_high_F",
"B_HMG_01_weapon_F",
"B_Mortar_01_support_F",
"B_Mortar_01_weapon_F",
"B_Respawn_Sleeping_bag_blue_F",
"B_Respawn_Sleeping_bag_brown_F",
"B_Respawn_TentDome_F",
"B_Respawn_Sleeping_bag_F",
"B_Respawn_TentA_F",
"B_Respawn_TentDome_F",
"B_UAV_01_backpack_F",
"B_UAV_06_backpack_F",
"B_UAV_06_medical_backpack_F",
"B_UGV_02_Demining_backpack_F",
"B_UGV_02_Science_backpack_F",
"C_IDAP_UAV_01_backpack_F",
"C_IDAP_UAV_06_antimine_backpack_F",
"C_IDAP_UAV_06_backpack_F",
"C_IDAP_UAV_06_medical_backpack_F",
"C_IDAP_UGV_02_Demining_backpack_F",
"C_UAV_06_backpack_F",
"C_UAV_06_medical_backpack_F",
"I_AA_01_weapon_F",
"I_AT_01_weapon_F",
"I_E_AA_01_weapon_F",
"I_E_AT_01_weapon_F",
"I_E_GMG_01_A_Weapon_F",
"I_E_GMG_01_high_Weapon_F",
"I_E_GMG_01_Weapon_F",
"I_E_HMG_01_A_Weapon_F",
"I_E_HMG_01_high_Weapon_F",
"I_E_HMG_01_support_F",
"I_E_HMG_01_support_high_F",
"I_E_HMG_01_Weapon_F",
"I_E_Mortar_01_support_F",
"I_E_Mortar_01_Weapon_F",
"I_E_UAV_01_backpack_F",
"I_E_UAV_06_backpack_F",
"I_E_UAV_06_medical_backpack_F",
"I_E_UGV_02_Demining_backpack_F",
"I_E_UGV_02_Science_backpack_F",
"I_GMG_01_A_weapon_F",
"I_GMG_01_high_weapon_F",
"I_GMG_01_weapon_F",
"I_HMG_01_A_weapon_F",
"I_HMG_01_high_weapon_F",
"I_HMG_01_support_F",
"I_HMG_01_support_high_F",
"I_HMG_01_weapon_F",
"I_Mortar_01_support_F",
"I_Mortar_01_weapon_F",
"I_UAV_01_backpack_F",
"I_UAV_06_backpack_F",
"I_UAV_06_medical_backpack_F",
"I_UGV_02_Demining_backpack_F",
"I_UGV_02_Science_backpack_F",
"O_AA_01_weapon_F",
"O_AT_01_weapon_F",
"O_GMG_01_A_weapon_F",
"O_GMG_01_high_weapon_F",
"O_GMG_01_weapon_F",
"O_HMG_01_A_weapon_F",
"O_HMG_01_high_weapon_F",
"O_HMG_01_support_F",
"O_HMG_01_support_high_F",
"O_HMG_01_weapon_F",
"O_Mortar_01_support_F",
"O_Mortar_01_weapon_F",
"O_UAV_01_backpack_F",
"O_UAV_06_backpack_F",
"O_UAV_06_medical_backpack_F",
"O_UGV_02_Demining_backpack_F",
"O_UGV_02_Science_backpack_F",
"optic_Nightstalker",
"optic_tws_mg",
"optic_tws",
@ -314,7 +348,19 @@ blacklisted_from_arsenal = [
"UK3CB_BAF_L16_Tripod",
"UK3CB_BAF_L16",
"UK3CB_BAF_M6",
"UK3CB_BAF_Tripod"
"UK3CB_BAF_Tripod",
"uns_M1_81mm_mortar_US_Bag",
"uns_M1919_low_US_Bag",
"uns_M2_60mm_mortar_US_Bag",
"uns_m2_high_US_Bag",
"uns_M2_low_US_Bag",
"uns_M30_107mm_mortar_US_Bag",
"uns_M60_high_US_Bag",
"uns_M60_low_US_Bag",
"uns_MK18_low_US_Bag",
"uns_STABO_US_Bag",
"uns_Tripod_Bag",
"Uns_US_searchlight_Bag"
];
// Items which should be added as allowed Items, when they get blacklisted, even if they are not in the blacklisted_from_arsenal array
@ -432,18 +478,27 @@ Format = ["classname", distance behind vehicle to unload crate, attachTo positio
box_transport_config = [
["B_Heli_Transport_03_F", -8, [0,2.2,-1], [0,0.5,-1], [0,-1.2,-1]],
["B_Heli_Transport_03_unarmed_F", -8, [0,2.2,-1], [0,0.5,-1], [0,-1.2,-1]],
["B_T_Truck_01_cargo_F", -6.5, [0,-0.4,0.4], [0,-2.1,0.4], [0,-3.8,0.4]],
["B_T_Truck_01_covered_F", -6.5, [0,-0.4,0.4], [0,-2.1,0.4], [0,-3.8,0.4]],
["B_T_Truck_01_flatbed_F", -6.5, [0,-0.4,0.4], [0,-2.1,0.4], [0,-3.8,0.4]],
["B_T_Truck_01_transport_F", -6.5, [0,-0.4,0.4], [0,-2.1,0.4], [0,-3.8,0.4]],
["B_T_VTOL_01_infantry_F", -7.5,[0,4.7,-4.88],[0,3,-4.88],[0,1.3,-4.88],[0,-0.4,-4.88],[0,-2.1,-4.88]],
["B_T_VTOL_01_vehicle_F", -7.5,[0,4.7,-4.88],[0,3,-4.88],[0,1.3,-4.88],[0,-0.4,-4.88],[0,-2.1,-4.88]],
["B_Truck_01_cargo_F", -6.5, [0,-0.4,0.4], [0,-2.1,0.4], [0,-3.8,0.4]],
["B_Truck_01_covered_F", -6.5, [0,-0.4,0.4], [0,-2.1,0.4], [0,-3.8,0.4]],
["B_Truck_01_flatbed_F", -6.5, [0,-0.4,0.4], [0,-2.1,0.4], [0,-3.8,0.4]],
["B_Truck_01_transport_F", -6.5, [0,-0.4,0.4], [0,-2.1,0.4], [0,-3.8,0.4]],
["BW_AW101_Trans_Heer_F", -6.5, [0,4.2,-1.45], [0,2.5,-1.45], [0,0.8,-1.45], [0,-0.9,-1.45]],
["BW_LKW7T_Trans_F", -6.5, [0,-0.8,0.4], [0,-2.4,0.4], [0,-4.0,0.4]],
["C_IDAP_Van_02_transport_F", -5, [0,-1.75,0]],
["C_IDAP_Van_02_vehicle_F", -5, [0,0.5,0], [0,-1.75,0]],
["C_Offroad_01_F", -6.5, [0,-1.7,0.4]],
["C_Truck_02_covered_F", -6.5, [0,0.3,0.05], [0,-1.3,0.05], [0,-2.9,0.05]],
["C_Truck_02_transport_F", -6.5, [0,0.3,0.05], [0,-1.3,0.05], [0,-2.9,0.05]],
["C_Van_01_transport_F", -6.5, [0,-1.1,0.25], [0,-2.6,0.25]],
["C_Van_02_service_F", -5, [0,0.5,0], [0,-1.75,0]],
["C_Van_02_transport_F", -5, [0,-1.75,0]],
["C_Van_02_vehicle_F", -5, [0,0.5,0], [0,-1.75,0]],
["CUP_B_CH47F_GB", -8, [0,-3.535,-1.9], [0,-1.819,-1.9], [0,0.98,-1.9], [0,3.037,-1.9]],
["CUP_B_CH47F_USA", -8, [0,-3.535,-1.9], [0,-1.819,-1.9], [0,0.98,-1.9], [0,3.037,-1.9]],
["CUP_B_CH53E_USMC", -8, [0,7.566,-3], [0,5.749,-3], [0,3.847,-3], [0,2,-3], [0,0.338,-3]],
@ -492,8 +547,17 @@ box_transport_config = [
["gm_ge_army_u1300l_container", -5, [-0.0495605,-0.609863,-0.6], [0.147461,-2.06787,-0.6]],
["greuh_eh101_gr", -6.5, [0,4.2,-1.45], [0,2.5,-1.45], [0,0.8,-1.45], [0,-0.9,-1.45]],
["I_C_Van_01_transport_F", -6.5, [0,-1.1,0.25], [0,-2.6,0.25]],
["I_C_Van_02_transport_F", -5, [0,-1.75,0]],
["I_C_Van_02_vehicle_F", -5, [0,0.5,0], [0,-1.75,0]],
["I_E_Truck_02_F", -6.5, [0,0.3,0.05], [0,-1.3,0.05], [0,-2.9,0.05]],
["I_E_Truck_02_transport_F", -6.5, [0,0.3,0.05], [0,-1.3,0.05], [0,-2.9,0.05]],
["I_E_Van_02_transport_F", -5, [0,-1.75,0]],
["I_E_Van_02_transport_MP_F", -5, [0,-1.75,0]],
["I_E_Van_02_vehicle_F", -5, [0,0.5,0], [0,-1.75,0]],
["I_G_Offroad_01_F", -6.5, [0,-1.7,0.4]],
["I_G_Van_01_transport_F", -6.5, [0,-1.1,0.25], [0,-2.6,0.25]],
["I_G_Van_02_transport_F", -5, [0,-1.75,0]],
["I_G_Van_02_vehicle_F", -5, [0,0.5,0], [0,-1.75,0]],
["I_Heli_Transport_02_F", -6.5, [0,4.2,-1.45], [0,2.5,-1.45], [0,0.8,-1.45], [0,-0.9,-1.45]],
["LOP_ISTS_OPF_Truck", -6.5, [0,-1.1,0.25], [0,-2.6,0.25]],
["LOP_SLA_Ural_open", -6.5, [0,-0.2,0.55], [0,-1.4,0.55], [0,-2.55,0.55]],
@ -564,7 +628,7 @@ box_transport_config = [
["UK3CB_BAF_Merlin_HC4_CSAR_Arctic", -7.5, [0.25,3.7,-1.5], [0.25,1.6,-1.5], [0.25,-0.4,-1.5]],
["uns_M35A2_Open", -5, [0,-0.6,0.1], [0,-2.3,0.1]],
["uns_M35A2", -5, [0,-0.6,0.1], [0,-2.3,0.1]],
["uns_m37b1", -5, [0,-0.2,0.45]],
["uns_m37b1", -5, [0,-1.2,0.15]],
["uns_nvatruck_mg", -5, [0,-1.05,0.8], [0,-2.75,0.8]],
["uns_nvatruck_open", -5, [0,-1.05,0.8], [0,-2.75,0.8]],
["uns_nvatruck", -5, [0,-1.05,0.8], [0,-2.75,0.8]]
@ -592,6 +656,7 @@ ai_resupply_sources = [
"gm_gc_army_ural4320_reammo",
"gm_ge_army_kat1_451_reammo_win",
"gm_ge_army_kat1_451_reammo",
"I_E_Truck_02_Ammo_F",
"Land_Pod_Heli_Transport_04_ammo_F",
"O_Heli_Transport_04_ammo_F",
"O_T_Truck_03_ammo_ghex_F",
@ -627,6 +692,7 @@ vehicle_repair_sources = [
"gm_gc_army_ural4320_repair",
"gm_ge_army_u1300l_repair_win",
"gm_ge_army_u1300l_repair",
"I_E_Truck_02_Box_F",
"Land_Pod_Heli_Transport_04_repair_F",
"O_Heli_Transport_04_repair_F",
"O_T_Truck_03_repair_ghex_F",
@ -665,6 +731,7 @@ vehicle_rearm_sources = [
"gm_gc_army_ural4320_reammo",
"gm_ge_army_kat1_451_reammo_win",
"gm_ge_army_kat1_451_reammo",
"I_E_Truck_02_Ammo_F",
"Land_Pod_Heli_Transport_04_ammo_F",
"O_Heli_Transport_04_ammo_F",
"O_T_Truck_03_ammo_ghex_F",
@ -703,6 +770,7 @@ vehicle_refuel_sources = [
"gm_gc_army_ural375d_refuel",
"gm_ge_army_kat1_451_refuel_win",
"gm_ge_army_kat1_451_refuel",
"I_E_Truck_02_fuel_F",
"Land_Pod_Heli_Transport_04_fuel_F",
"O_Heli_Transport_04_fuel_F",
"O_T_Truck_03_fuel_ghex_F",

View File

@ -24,7 +24,7 @@ huron_typename = "B_Heli_Transport_03_unarmed_F"; // This
crewman_classname = "B_T_crew_F"; // This defines the crew for vehicles.
pilot_classname = "B_T_Helipilot_F"; // This defines the pilot for helicopters.
KP_liberation_little_bird_classname = "B_Heli_Light_01_F"; // 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_boat_classname = "B_T_Boat_Transport_01_F"; // These are the boats which spawn at the stern of the Freedom.
KP_liberation_truck_classname = "B_T_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.
KP_liberation_large_storage_building = "ContainmentArea_01_sand_F"; // A large storage area for resources.

View File

@ -0,0 +1,350 @@
/*
Needed Mods:
- Contact DLC
Optional Mods:
- None
*/
/*
--- 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_V4_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_T_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 = "I_E_Truck_02_Medical_F"; // This is the mobile respawn (and medical) truck.
huron_typename = "B_Heli_Transport_03_unarmed_F"; // This is Spartan 01, a multipurpose mobile respawn as a helicopter.
crewman_classname = "I_E_Crew_F"; // This defines the crew for vehicles.
pilot_classname = "I_E_Helipilot_F"; // This defines the pilot for helicopters.
KP_liberation_little_bird_classname = "B_Heli_Light_01_F"; // These are the little birds which spawn on the Freedom or at Chimera base.
KP_liberation_boat_classname = "B_T_Boat_Transport_01_F"; // These are the boats which spawn at the stern of the Freedom.
KP_liberation_truck_classname = "I_E_Truck_02_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.
KP_liberation_large_storage_building = "ContainmentArea_01_sand_F"; // A large storage area for resources.
KP_liberation_recycle_building = "Land_RepairDepot_01_green_F"; // The building defined to unlock FOB recycling functionality.
KP_liberation_air_vehicle_building = "I_E_Radar_System_01_F"; // The building defined to unlock FOB air vehicle functionality.
KP_liberation_heli_slot_building = "Land_HelipadSquare_F"; // The helipad used to increase the GLOBAL rotary-wing cap.
KP_liberation_plane_slot_building = "Land_TentHangar_V1_F"; // The hangar used to increase the GLOBAL fixed-wing cap.
KP_liberation_supply_crate = "CargoNet_01_box_F"; // This defines the supply crates, as in resources.
KP_liberation_ammo_crate = "B_CargoNet_01_ammo_F"; // This defines the ammunition crates.
KP_liberation_fuel_crate = "CargoNet_01_barrels_F"; // This defines the fuel crates.
/*
--- Friendly classnames ---
Each array below represents one of the 7 pages within the build menu.
Format: ["vehicle_classname",supplies,ammunition,fuel],
Example: ["B_APC_Tracked_01_AA_F",300,150,150],
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 = [
["I_E_Soldier_lite_F",15,0,0], // Rifleman (Light)
["I_E_Soldier_F",20,0,0], // Rifleman
["I_E_Soldier_LAT2_F",30,0,0], // Rifleman (AT)
["I_E_Soldier_GL_F",25,0,0], // Grenadier
["I_E_Soldier_AR_F",25,0,0], // Autorifleman
["I_E_soldier_M_F",30,0,0], // Marksman
["I_E_Soldier_AT_F",50,10,0], // AT Specialist
["I_E_Soldier_AA_F",50,10,0], // AA Specialist
["I_E_Medic_F",30,0,0], // Combat Life Saver
["I_E_Engineer_F",30,0,0], // Engineer
["I_E_Soldier_Exp_F",30,0,0], // Explosives Specialist
["B_T_Recon_F",20,0,0], // Recon Scout
["B_T_Recon_LAT_F",30,0,0], // Recon Scout (AT)
["B_T_Recon_M_F",30,0,0], // Recon Marksman
["B_T_Recon_Medic_F",30,0,0], // Recon Paramedic
["B_T_Recon_exp_F",30,0,0], // Recon Demolition Expert
["B_T_Sniper_F",70,5,0], // Sniper
["B_ghillie_lsh_F",70,5,0], // Sniper (Green)
["B_T_Spotter_F",20,0,0], // Spotter
["I_E_Crew_F",10,0,0], // Crewman
["B_T_Soldier_PG_F",20,0,0], // Para Trooper
["I_E_Helicrew_F",10,0,0], // Helicopter Crew
["I_E_Helipilot_F",10,0,0], // Helicopter Pilot
["B_T_Pilot_F",10,0,0] // Pilot
];
light_vehicles = [
["I_E_Quadbike_01_F",50,0,25], // Quad Bike
["I_E_Offroad_01_F",60,0,35], // Offroad
["I_E_Offroad_01_covered_F",60,0,35], // Offroad (Covered)
["I_E_Offroad_01_comms_F",60,0,35], // Offroad (Comms)
["I_E_Van_02_vehicle_F",70,0,45], // Transporter
["I_E_Van_02_transport_MP_F",70,0,45], // Transporter (MP)
["I_E_Van_02_transport_F",70,0,45], // Transporter (Transporter)
["B_T_LSV_01_unarmed_F",75,0,50], // Prowler
["B_T_LSV_01_armed_F",75,40,50], // Prowler (HMG)
["B_T_LSV_01_AT_F",75,60,50], // Prowler (AT)
["I_E_Truck_02_transport_F",125,0,75], // Zamak Transport
["I_E_Truck_02_F",125,0,75], // Zamak Transport (Covered)
["B_UGV_01_F",150,0,50], // UGV Stomper
["B_UGV_01_rcws_F",150,40,50], // UGV Stomper (RCWS)
["B_T_Boat_Transport_01_F",100,0,25], // Assault Boat
["B_T_Boat_Armed_01_minigun_F",200,80,75] // Speedboat Minigun
];
heavy_vehicles = [
["B_T_APC_Wheeled_01_cannon_F",200,75,125], // AMV-7 Marshall
["I_E_APC_tracked_03_cannon_F",300,150,150], // FV-720 Odyniec
["B_T_APC_Tracked_01_AA_F",300,250,175], // IFV-6a Cheetah
["B_T_MBT_01_cannon_F",400,300,200], // M2A1 Slammer
["B_T_MBT_01_TUSK_F",500,350,225], // M2A4 Slammer UP
["B_T_AFV_Wheeled_01_cannon_F",500,500,250], // Rhino MGS
["B_T_AFV_Wheeled_01_up_cannon_F",550,550,250], // Rhino MGS UP
["I_E_Truck_02_MRL_F",600,1250,300] // Zamak MRL
];
air_vehicles = [
["I_E_UAV_01_F",75,0,25], // AR-2 Darter
["I_E_UAV_06_F",80,0,30], // AL-6 Pelican
["B_Heli_Light_01_F",200,0,100], // MH-9 Hummingbird
["I_E_Heli_light_03_unarmed_F",225,0,125], // WY-55 Czapla
["I_E_Heli_light_03_dynamicLoadout_F",225,200,125], // WY-55 Czapla (Armed)
["B_Heli_Transport_03_F",300,80,175], // CH-67 Huron (Armed)
["B_Heli_Attack_01_dynamicLoadout_F",500,400,200], // AH-99 Blackfoot
["B_UAV_02_dynamicLoadout_F",400,300,200], // MQ-4A Greyhawk
["B_T_UAV_03_dynamicLoadout_F",450,500,250], // MQ-12 Falcon
["B_UAV_05_F",500,500,200], // UCAV Sentinel
["B_Plane_CAS_01_dynamicLoadout_F",1000,800,400], // A-164 Wipeout (CAS)
["B_Plane_Fighter_01_F",1500,1750,450], // F/A-181 Black Wasp II
["B_Plane_Fighter_01_Stealth_F",1500,1750,450], // F/A-181 Black Wasp II (Stealth)
["B_T_VTOL_01_armed_F",750,1500,500], // V-44 X Blackfish (Armed)
["B_T_VTOL_01_infantry_F",750,0,500], // V-44 X Blackfish (Infantry)
["B_T_VTOL_01_vehicle_F",750,0,500] // V-44 X Blackfish (Vehicle)
];
static_vehicles = [
["B_W_Static_Designator_01_F",25,0,0], // Remote Designator
["I_E_HMG_01_F",25,40,0], // Mk30A HMG .50
["I_E_HMG_01_high_F",25,40,0], // Mk30 HMG .50 (Raised)
["I_E_HMG_01_A_F",35,40,0], // Mk30 HMG .50 (Autonomous)
["I_E_GMG_01_F",35,60,0], // Mk32A GMG 20mm
["I_E_GMG_01_high_F",35,60,0], // Mk32 GMG 20mm (Raised)
["I_E_GMG_01_A_F",45,60,0], // Mk32 GMG 20mm (Autonomous)
["I_E_Static_AT_F",50,100,0], // Static Titan Launcher (AT)
["I_E_Static_AA_F",50,100,0], // Static Titan Launcher (AA)
["I_E_Mortar_01_F",80,150,0], // Mk6 Mortar
["I_E_SAM_System_03_F",250,500,0] // MIM-145 Defender
];
buildings = [
["Land_Cargo_House_V4_F",0,0,0],
["Land_Cargo_Patrol_V4_F",0,0,0],
["Land_Cargo_Tower_V4_F",0,0,0],
["Flag_NATO_F",0,0,0],
["Flag_US_F",0,0,0],
["Flag_EAF_F",0,0,0],
["Flag_Enoch_F",0,0,0],
["Flag_UK_F",0,0,0],
["Flag_White_F",0,0,0],
["Land_Medevac_house_V1_F",0,0,0],
["Land_Medevac_HQ_V1_F",0,0,0],
["Flag_RedCrystal_F",0,0,0],
["CamoNet_ghex_F",0,0,0],
["CamoNet_ghex_open_F",0,0,0],
["CamoNet_ghex_big_F",0,0,0],
["Land_PortableLight_single_F",0,0,0],
["Land_PortableLight_double_F",0,0,0],
["Land_LampSolar_F",0,0,0],
["Land_LampHalogen_F",0,0,0],
["Land_LampStreet_small_F",0,0,0],
["Land_LampAirport_F",0,0,0],
["Land_HelipadCircle_F",0,0,0], // Strictly aesthetic - as in it does not increase helicopter cap!
["Land_HelipadRescue_F",0,0,0], // Strictly aesthetic - as in it does not increase helicopter cap!
["PortableHelipadLight_01_blue_F",0,0,0],
["PortableHelipadLight_01_green_F",0,0,0],
["PortableHelipadLight_01_red_F",0,0,0],
["Land_CampingChair_V1_F",0,0,0],
["Land_CampingChair_V2_F",0,0,0],
["Land_CampingTable_F",0,0,0],
["MapBoard_altis_F",0,0,0],
["MapBoard_stratis_F",0,0,0],
["MapBoard_seismic_F",0,0,0],
["Land_Pallet_MilBoxes_F",0,0,0],
["Land_PaperBox_open_empty_F",0,0,0],
["Land_PaperBox_open_full_F",0,0,0],
["Land_PaperBox_closed_F",0,0,0],
["Land_DieselGroundPowerUnit_01_F",0,0,0],
["Land_ToolTrolley_02_F",0,0,0],
["Land_WeldingTrolley_01_F",0,0,0],
["Land_Workbench_01_F",0,0,0],
["Land_GasTank_01_blue_F",0,0,0],
["Land_GasTank_01_khaki_F",0,0,0],
["Land_GasTank_01_yellow_F",0,0,0],
["Land_GasTank_02_F",0,0,0],
["Land_BarrelWater_F",0,0,0],
["Land_BarrelWater_grey_F",0,0,0],
["Land_WaterBarrel_F",0,0,0],
["Land_WaterTank_F",0,0,0],
["Land_BagFence_01_round_green_F",0,0,0],
["Land_BagFence_01_short_green_F",0,0,0],
["Land_BagFence_01_long_green_F",0,0,0],
["Land_BagFence_01_corner_green_F",0,0,0],
["Land_BagFence_01_end_green_F",0,0,0],
["Land_BagBunker_01_small_green_F",0,0,0],
["Land_BagBunker_01_large_green_F",0,0,0],
["Land_HBarrier_01_tower_green_F",0,0,0],
["Land_HBarrier_01_line_1_green_F",0,0,0],
["Land_HBarrier_01_line_3_green_F",0,0,0],
["Land_HBarrier_01_line_5_green_F",0,0,0],
["Land_HBarrier_01_big_4_green_F",0,0,0],
["Land_HBarrier_01_wall_4_green_F",0,0,0],
["Land_HBarrier_01_wall_6_green_F",0,0,0],
["Land_HBarrier_01_wall_corner_green_F",0,0,0],
["Land_HBarrier_01_wall_corridor_green_F",0,0,0],
["Land_HBarrier_01_big_tower_green_F",0,0,0],
["Land_CncBarrierMedium_F",0,0,0],
["Land_CncBarrierMedium4_F",0,0,0],
["Land_Concrete_SmallWall_4m_F",0,0,0],
["Land_Concrete_SmallWall_8m_F",0,0,0],
["Land_CncShelter_F",0,0,0],
["Land_CncWall1_F",0,0,0],
["Land_CncWall4_F",0,0,0],
["Land_Sign_WarningMilitaryArea_F",0,0,0],
["Land_Sign_WarningMilAreaSmall_F",0,0,0],
["Land_Sign_WarningMilitaryVehicles_F",0,0,0],
["Land_Razorwire_F",0,0,0],
["Land_ClutterCutter_large_F",0,0,0]
];
support_vehicles = [
[Respawn_truck_typename,200,0,100],
[FOB_box_typename,300,500,0],
[FOB_truck_typename,300,500,75],
[KP_liberation_small_storage_building,0,0,0],
[KP_liberation_large_storage_building,0,0,0],
[KP_liberation_recycle_building,200,100,0],
[KP_liberation_air_vehicle_building,1000,0,0],
[KP_liberation_heli_slot_building,250,0,0],
[KP_liberation_plane_slot_building,500,0,0],
[Arsenal_typename,25,0,0],
["ACE_medicalSupplyCrate_advanced",10,0,0],
["Box_East_Support_F",10,0,0],
["Box_CSAT_Equip_F",10,0,0],
["Box_East_Grenades_F",10,0,0],
["Box_East_WpsSpecial_F",10,0,0],
["Box_East_Ammo_F",10,0,0],
["Box_East_Wps_F",10,0,0],
["Box_CSAT_Uniforms_F",10,0,0],
["Box_East_AmmoOrd_F",10,0,0],
["ACE_Wheel",10,0,0],
["ACE_Track",10,0,0],
["Land_CanisterFuel_F",0,0,2],
["I_E_Van_02_medevac_F",150,0,80], // Transporter (Ambulance)
["I_E_Truck_02_Box_F",325,0,75], // Zamak Repair
["I_E_Truck_02_fuel_F",125,0,275], // Zamak Fuel
["I_E_Truck_02_Ammo_F",125,200,75], // Zamak 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
];
/*
--- Squads ---
Pre-made squads for the commander build menu.
These shouldn't exceed 10 members.
*/
// Light infantry squad.
blufor_squad_inf_light = [
"I_E_Soldier_TL_F",
"I_E_Soldier_F",
"I_E_Soldier_F",
"I_E_Soldier_LAT2_F",
"I_E_Soldier_GL_F",
"I_E_Soldier_AR_F",
"I_E_Soldier_AR_F",
"I_E_soldier_M_F",
"I_E_Medic_F",
"I_E_Engineer_F"
];
// Heavy infantry squad.
blufor_squad_inf = [
"I_E_Soldier_TL_F",
"I_E_Soldier_LAT2_F",
"I_E_Soldier_LAT2_F",
"I_E_Soldier_GL_F",
"I_E_Soldier_AR_F",
"I_E_Soldier_AR_F",
"I_E_Soldier_AR_F",
"I_E_soldier_M_F",
"I_E_Medic_F",
"I_E_Engineer_F"
];
// AT specialists squad.
blufor_squad_at = [
"I_E_Soldier_TL_F",
"I_E_Soldier_F",
"I_E_Soldier_F",
"I_E_Soldier_AT_F",
"I_E_Soldier_AT_F",
"I_E_Soldier_AT_F",
"I_E_Medic_F",
"I_E_Soldier_F"
];
// AA specialists squad.
blufor_squad_aa = [
"I_E_Soldier_TL_F",
"I_E_Soldier_F",
"I_E_Soldier_F",
"I_E_Soldier_AA_F",
"I_E_Soldier_AA_F",
"I_E_Soldier_AA_F",
"I_E_Medic_F",
"I_E_Soldier_F"
];
// Force recon squad.
blufor_squad_recon = [
"B_T_Recon_TL_F",
"B_T_Recon_F",
"B_T_Recon_F",
"B_T_Recon_LAT_F",
"B_T_Recon_M_F",
"B_T_Recon_M_F",
"B_T_Sniper_F",
"B_T_Spotter_F",
"B_T_Recon_Medic_F",
"B_T_Recon_Exp_F"
];
// Paratroopers squad (The units of this squad will automatically get parachutes on build)
blufor_squad_para = [
"B_T_Soldier_PG_F",
"B_T_Soldier_PG_F",
"B_T_Soldier_PG_F",
"B_T_Soldier_PG_F",
"B_T_Soldier_PG_F",
"B_T_Soldier_PG_F",
"B_T_Soldier_PG_F",
"B_T_Soldier_PG_F",
"B_T_Soldier_PG_F",
"B_T_Soldier_PG_F"
];
/*
--- Elite vehicles ---
Classnames below have to be unlocked by capturing military bases.
Which base locks a vehicle is randomized on the first start of the campaign.
*/
elite_vehicles = [
"B_T_MBT_01_TUSK_F", // M2A4 Slammer UP
"B_T_AFV_Wheeled_01_cannon_F", // Rhino MGS
"B_T_AFV_Wheeled_01_up_cannon_F", // Rhino MGS UP
"I_E_Truck_02_MRL_F", // Zamak MRL
"B_Heli_Attack_01_dynamicLoadout_F", // AH-99 Blackfoot
"B_UAV_02_dynamicLoadout_F", // MQ-4A Greyhawk
"B_T_UAV_03_dynamicLoadout_F", // MQ-12 Falcon
"B_UAV_05_F", // UCAV Sentinel
"B_Plane_CAS_01_dynamicLoadout_F", // A-164 Wipeout (CAS)
"B_Plane_Fighter_01_F", // F/A-181 Black Wasp II
"B_Plane_Fighter_01_Stealth_F", // F/A-181 Black Wasp II (Stealth)
"B_T_VTOL_01_armed_F" // V-44 X Blackfish (Armed)
];

View File

@ -13,7 +13,7 @@
Or not, just don't try!
*/
FOB_typename = "LAND_sb_bunker_main"; // This is the main FOB HQ building.
FOB_box_typename = "Land_scntr"; // 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 = "uns_M35A2_fuel"; // This is the FOB as a vehicle.
Arsenal_typename = "uns_resupply_crate_US"; // This is the virtual arsenal as portable supply crates.
Respawn_truck_typename = "uns_M577_amb"; // This is the mobile respawn (and medical) truck.
@ -235,6 +235,7 @@ buildings = [
["LAND_uns_showers",0,0,0],
["LAND_uns_tent2",0,0,0],
["LAND_uns_tent3",0,0,0],
["LAND_uns_tentbarracks",0,0,0],
["LAND_uns_weapon_pit",0,0,0],
["LAND_uns_westbunker1",0,0,0],
["LAND_uns_westbunker2",0,0,0],

View File

@ -25,6 +25,7 @@ switch (KP_liberation_preset_blufor) do {
case 24: {[] call compileFinal preprocessFileLineNumbers "presets\blufor\CUP_ACR_Woodland.sqf";};
case 25: {[] call compileFinal preprocessFileLineNumbers "presets\blufor\sfp_wdl.sqf";};
case 26: {[] call compileFinal preprocessFileLineNumbers "presets\blufor\sfp_des.sqf";};
case 27: {[] call compileFinal preprocessFileLineNumbers "presets\blufor\enoch.sqf";};
default {[] call compileFinal preprocessFileLineNumbers "presets\blufor\custom.sqf";};
};

View File

@ -56,7 +56,7 @@ militia_squad = [
"CUP_O_RU_Engineer" // Engineer
];
// Militia vehicles. Lightweight vehicle classnames the game will pick from randomly as sector defenders.
// Militia vehicles. Lightweight vehicle classnames the game will pick from randomly as sector defenders. Can also be empty for only infantry milita.
militia_vehicles = [
"CUP_O_UAZ_MG_RU" // UAZ (DShKM)
];

View File

@ -56,7 +56,7 @@ militia_squad = [
"CUP_O_RU_Engineer_EMR" // Engineer
];
// Militia vehicles. Lightweight vehicle classnames the game will pick from randomly as sector defenders.
// Militia vehicles. Lightweight vehicle classnames the game will pick from randomly as sector defenders. Can also be empty for only infantry milita.
militia_vehicles = [
"CUP_O_UAZ_MG_RU" // UAZ (DShKM)
];

View File

@ -53,7 +53,7 @@ militia_squad = [
"CUP_O_INS_Woodlander1" // Woodman
];
// Militia vehicles. Lightweight vehicle classnames the game will pick from randomly as sector defenders.
// Militia vehicles. Lightweight vehicle classnames the game will pick from randomly as sector defenders. Can also be empty for only infantry milita.
militia_vehicles = [
"CUP_O_Datsun_PK_Random" // Datsun 620 Pickup (PK) Woodland
];

View File

@ -56,7 +56,7 @@ militia_squad = [
"CUP_O_sla_Engineer_militia" // Militia Engineer
];
// Militia vehicles. Lightweight vehicle classnames the game will pick from randomly as sector defenders.
// Militia vehicles. Lightweight vehicle classnames the game will pick from randomly as sector defenders. Can also be empty for only infantry milita.
militia_vehicles = [
"CUP_O_UAZ_MG_SLA" // UAZ (DShKM)
];

View File

@ -56,7 +56,7 @@ militia_squad = [
"CUP_O_TK_INS_Mechanic" // Militia Mechanic
];
// Militia vehicles. Lightweight vehicle classnames the game will pick from randomly as sector defenders.
// Militia vehicles. Lightweight vehicle classnames the game will pick from randomly as sector defenders. Can also be empty for only infantry milita.
militia_vehicles = [
"CUP_O_LR_MG_TKM", // Land Rover 110 (M2)
"CUP_O_LR_MG_TKM", // Land Rover 110 (M2)

View File

@ -56,7 +56,7 @@ militia_squad = [
"LOP_SLA_Infantry_Engineer"
];
// Militia vehicles. Lightweight vehicle classnames the game will pick from randomly as sector defenders.
// Militia vehicles. Lightweight vehicle classnames the game will pick from randomly as sector defenders. Can also be empty for only infantry milita.
militia_vehicles = [
"LOP_SLA_UAZ_SPG",
"LOP_SLA_UAZ_DshKM",

View File

@ -54,7 +54,7 @@ militia_squad = [
"I_engineer_F" // Engineer
];
// Militia vehicles. Lightweight vehicle classnames the game will pick from randomly as sector defenders.
// Militia vehicles. Lightweight vehicle classnames the game will pick from randomly as sector defenders. Can also be empty for only infantry milita.
militia_vehicles = [
"B_LSV_01_armed_F", // Polaris DAGOR (XM312)
"B_LSV_01_armed_F", // Polaris DAGOR (XM312)

View File

@ -54,7 +54,7 @@ militia_squad = [
"O_engineer_U_F" // Engineer
];
// Militia vehicles. Lightweight vehicle classnames the game will pick from randomly as sector defenders.
// Militia vehicles. Lightweight vehicle classnames the game will pick from randomly as sector defenders. Can also be empty for only infantry milita.
militia_vehicles = [
"O_T_LSV_02_armed_F" // Qilin (armed)
];

View File

@ -54,7 +54,7 @@ militia_squad = [
"O_engineer_U_F" // Engineer
];
// Militia vehicles. Lightweight vehicle classnames the game will pick from randomly as sector defenders.
// Militia vehicles. Lightweight vehicle classnames the game will pick from randomly as sector defenders. Can also be empty for only infantry milita.
militia_vehicles = [
"O_LSV_02_armed_F" // Qilin (armed)
];

View File

@ -54,7 +54,7 @@ militia_squad = [
"gm_gc_army_engineer_mpiaks74n_80_str" // Engineer
];
// Militia vehicles. Lightweight vehicle classnames the game will pick from randomly as sector defenders.
// Militia vehicles. Lightweight vehicle classnames the game will pick from randomly as sector defenders. Can also be empty for only infantry milita.
militia_vehicles = [
"gm_gc_army_brdm2um" // SPW40-P2UM
];

View File

@ -54,7 +54,7 @@ militia_squad = [
"gm_gc_army_engineer_mpiaks74n_80_win" // Engineer
];
// Militia vehicles. Lightweight vehicle classnames the game will pick from randomly as sector defenders.
// Militia vehicles. Lightweight vehicle classnames the game will pick from randomly as sector defenders. Can also be empty for only infantry milita.
militia_vehicles = [
"gm_gc_army_brdm2um_win" // SPW40-P2UM
];

View File

@ -54,7 +54,7 @@ militia_squad = [
"gm_ge_army_engineer_g3a4_80_ols" // Engineer
];
// Militia vehicles. Lightweight vehicle classnames the game will pick from randomly as sector defenders.
// Militia vehicles. Lightweight vehicle classnames the game will pick from randomly as sector defenders. Can also be empty for only infantry milita.
militia_vehicles = [
"gm_ge_army_u1300l_cargo" // Truck 2t Transport
];

View File

@ -54,7 +54,7 @@ militia_squad = [
"gm_ge_army_engineer_g3a4_parka_80_win" // Engineer
];
// Militia vehicles. Lightweight vehicle classnames the game will pick from randomly as sector defenders.
// Militia vehicles. Lightweight vehicle classnames the game will pick from randomly as sector defenders. Can also be empty for only infantry milita.
militia_vehicles = [
"gm_ge_army_u1300l_cargo" // Truck 2t Transport
];

View File

@ -56,7 +56,7 @@ militia_squad = [
"LOP_AM_OPF_Infantry_Engineer" // Engineer (Bomber)
];
// Militia vehicles. Lightweight vehicle classnames the game will pick from randomly as sector defenders.
// Militia vehicles. Lightweight vehicle classnames the game will pick from randomly as sector defenders. Can also be empty for only infantry milita.
militia_vehicles = [
"LOP_AM_OPF_UAZ_DshKM" // UAZ-3151 (DShKM)
];

View File

@ -54,7 +54,7 @@ militia_squad = [
"B_engineer_F" // Engineer
];
// Militia vehicles. Lightweight vehicle classnames the game will pick from randomly as sector defenders.
// Militia vehicles. Lightweight vehicle classnames the game will pick from randomly as sector defenders. Can also be empty for only infantry milita.
militia_vehicles = [
"B_LSV_01_armed_F", // Polaris DAGOR (XM312)
"B_LSV_01_armed_F", // Polaris DAGOR (XM312)

View File

@ -58,7 +58,7 @@ militia_vehicles = [
"rhs_tigr_sts_msv" // GAZ-233014 (Armed)
];
// All enemy vehicles that can spawn as sector defenders and patrols at high enemy combat readiness (aggression levels).
// 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", // GAZ-233014 (Armed)
"rhs_tigr_sts_msv", // GAZ-233014 (Armed)

View File

@ -56,7 +56,7 @@ militia_squad = [
"LOP_TKA_Infantry_Engineer" // Engineer
];
// Militia vehicles. Lightweight vehicle classnames the game will pick from randomly as sector defenders.
// Militia vehicles. Lightweight vehicle classnames the game will pick from randomly as sector defenders. Can also be empty for only infantry milita.
militia_vehicles = [
"LOP_TKA_UAZ_DshKM" // UAZ-3151 (DShKM)
];

View File

@ -33,8 +33,8 @@ opfor_transport_truck = "uns_nvatruck"; // Ural
opfor_ammobox_transport = "uns_nvatruck_open"; // Ural Truck (Open) -> Has to be able to transport resource crates!
opfor_fuel_truck = "uns_nvatruck_refuel"; // Ural Truck (refuel)
opfor_ammo_truck = "uns_nvatruck_reammo"; // Ural Truck (ammo)
opfor_fuel_container = "Land_Pod_Heli_Transport_04_fuel_F"; // Taru Fuel Pod
opfor_ammo_container = "Land_Pod_Heli_Transport_04_ammo_F"; // Taru Ammo Pod
opfor_fuel_container = "ABox_N_4"; // Ammo Box (Light/4x)
opfor_ammo_container = "ABox_N_4"; // Ammo Box (Light/4x)
opfor_flag = "uns_FlagCarrierNVA"; // Flag
/* Adding a value to these arrays below will add them to a one out of however many in the array, random pick chance.
@ -55,10 +55,8 @@ militia_squad = [
"uns_men_VC_local_SAP" // Sapper (M3A1)
];
// Militia vehicles. Lightweight vehicle classnames the game will pick from randomly as sector defenders.
militia_vehicles = [
"uns_nvatruck_mg" // Ural Truck (MG)
];
// Militia vehicles. Lightweight vehicle classnames the game will pick from randomly as sector defenders. Can also be empty for only infantry milita.
militia_vehicles = [];
// All enemy vehicles that can spawn as sector defenders and patrols at high enemy combat readiness (aggression levels).
opfor_vehicles = [

View File

@ -0,0 +1,219 @@
/*
Needed Mods:
- The Unsung Vietnam War Mod
Optional Mods:
- None
*/
/* 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 = [
"uns_men_ARVNci_HMG",
"uns_men_ARVNci_S2",
"uns_men_ARVNci_SL",
"uns_men_CIDG_COM",
"uns_men_CIDG_ENG",
"uns_men_CIDG_MED",
"uns_men_CIDG_MRK2",
"uns_men_CIDG_S1"
];
// Armed vehicles
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. */
/* Weapons - You've to add the weapons as array like
["Weaponclassname","Magazineclassname","magazine amount","optic","tripod"]
You can leave optic and tripod empty with "" */
KP_liberation_guerilla_weapons_1 = [
["uns_ak47","uns_ak47mag",4,"",""],
["uns_PPS52","uns_k50mag",4,"",""],
["uns_owen","uns_owenmag",4,"",""],
["uns_mas36","uns_mas36mag",4,"",""],
["uns_RPD","uns_rpdmag",1,"",""],
["uns_m1carbine","uns_m1carbinemag",4,"",""]
];
KP_liberation_guerilla_weapons_2 = [
["uns_m2carbine","uns_m2carbinemag",4,"",""],
["uns_akm","uns_ak47mag",4,"",""],
["uns_DP28_base","uns_47Rnd_DP28",4,"",""],
["uns_type50","uns_k50mag",4,"",""],
["uns_m16","uns_20Rnd_556x45_Stanag",4,"",""],
["uns_mas36","uns_mas36mag",4,"",""]
];
KP_liberation_guerilla_weapons_3 = [
["uns_akm_drum","uns_75Rnd_akdr",4,"",""],
["uns_sa58p","uns_sa58mag",4,"",""],
["uns_PK","uns_100Rnd_762x54_PK",1,"",""],
["uns_m1garand","uns_m1garandmag",4,"",""],
["uns_M63a_AR_base","uns_30Rnd_556x45_Stanag",4,"",""],
["uns_Sterling","uns_mk4mag",4,"",""],
["uns_m2carbine_gl","uns_m2carbinemag",4,"",""],
["uns_m3a1","uns_m3a1mag",4,"",""],
["uns_SVD_CAMO_base","uns_svdmag",4,"",""]
];
// Uniforms
KP_liberation_guerilla_uniforms_1 = [
"U_C_Man_casual_4_F",
"U_C_Man_casual_5_F",
"U_C_Man_casual_6_F",
"U_I_C_Soldier_Bandit_5_F",
"UNS_CIV_B",
"UNS_CIV_U",
"UNS_VC_B",
"UNS_VC_K",
"UNS_VC_S",
"UNS_VC_U"
];
KP_liberation_guerilla_uniforms_2 = [
"U_BG_Guerilla2_1",
"U_BG_Guerilla2_3",
"U_BG_Guerilla3_1",
"U_C_HunterBody_grn",
"U_C_Mechanic_01_F",
"U_I_C_Soldier_Bandit_1_F",
"U_I_C_Soldier_Bandit_3_F",
"U_I_C_Soldier_Bandit_4_F",
"U_I_C_Soldier_Bandit_5_F",
"U_I_C_Soldier_Para_5_F"
];
KP_liberation_guerilla_uniforms_3 = [
"U_BG_Guerilla1_1",
"U_BG_Guerilla1_2_F",
"U_BG_leader",
"U_I_C_Soldier_Camo_F",
"U_I_C_Soldier_Para_1_F",
"U_I_C_Soldier_Para_2_F",
"U_I_C_Soldier_Para_3_F",
"U_I_C_Soldier_Para_4_F",
"UNS_DCCR_BBS",
"UNS_DCCR_GTS"
];
// Vests
KP_liberation_guerilla_vests_1 = [
"UNS_VC_B1",
"UNS_VC_S2",
"V_BandollierB_blk",
"V_BandollierB_cbr",
"V_BandollierB_ghex_F",
"V_BandollierB_khk",
"V_BandollierB_oli",
"V_BandollierB_rgr",
"V_LegStrapBag_black_F",
"V_LegStrapBag_coyote_F",
"V_LegStrapBag_olive_F",
"V_Pocketed_black_F",
"V_Pocketed_coyote_F",
"V_Pocketed_olive_F"
];
KP_liberation_guerilla_vests_2 = [
"UNS_ANZAC_VEST_C",
"UNS_ANZAC_VEST",
"UNS_M1956_M14",
"UNS_NVA_A1",
"UNS_NVA_MG",
"uns_vc_chestrig",
"UNS_VC_SP",
"V_Chestrig_blk",
"V_Chestrig_khk",
"V_Chestrig_oli",
"V_Chestrig_rgr",
"V_HarnessO_brn",
"V_HarnessO_ghex_F",
"V_HarnessO_gry",
"V_HarnessOGL_brn",
"V_HarnessOGL_ghex_F",
"V_HarnessOGL_gry"
];
KP_liberation_guerilla_vests_3 = [
"UNS_M1956_M1",
"UNS_M1956_M2",
"UNS_M1956_M3",
"UNS_M1956_S3",
"UNS_NVA_SP",
"V_I_G_resistanceLeader_F",
"V_TacChestrig_cbr_F",
"V_TacChestrig_grn_F",
"V_TacChestrig_oli_F",
"V_TacVest_blk",
"V_TacVest_brn",
"V_TacVest_camo",
"V_TacVest_khk",
"V_TacVest_oli"
];
// Headgear
KP_liberation_guerilla_headgear_1 = [
"",
"",
"",
"",
"H_StrawHat_dark",
"UNS_Boonie3_VC",
"UNS_Conehat_VC"
];
KP_liberation_guerilla_headgear_2 = [
"H_Bandanna_khk",
"UNS_Boonie_VC",
"UNS_Headband_BK",
"UNS_Headband_ED",
"UNS_Headband_OD",
"UNS_Headband_OD2",
"UNS_Headband_VC",
"uns_sas_bandana_erdl",
"uns_sas_booniehat_vc_tan",
"uns_sas_booniehat_vc",
"uns_sas_headband_green",
"uns_vc_headband_blue"
];
KP_liberation_guerilla_headgear_3 = [
"UNS_Boonie_6",
"UNS_Boonie_ERDL",
"UNS_Boonie_ERDL3",
"UNS_Boonie_OD",
"UNS_Boonie_OD2",
"UNS_Boonie_ODF",
"UNS_Boonie_ODP",
"UNS_Field_Cap",
"UNS_M1_1",
"UNS_M1_AFT",
"UNS_PAVN_HG",
"UNS_PAVN_HN",
"uns_sas_booniehat_erdl2",
"uns_sas_booniehat_green2"
];
// Facegear. Applies for tier 2 and 3.
KP_liberation_guerilla_facegear = [
"",
"",
"",
"G_Bandanna_blk",
"G_Bandanna_khk",
"G_Bandanna_oli",
"G_Bandanna_shades",
"G_Bandanna_tan",
"UNS_Peace",
"UNS_Scarf_1stCav",
"UNS_Scarf_ARVN",
"UNS_Scarf_BK_W",
"UNS_Scarf_BK",
"UNS_Scarf_Blue",
"UNS_Scarf_GR",
"UNS_Scarf_OD",
"UNS_Scarf_PL",
"UNS_Scarf_Red"
];

View File

@ -16,6 +16,7 @@ private _idact_sectorstorage = -1;
private _idact_supplyfacility = -1;
private _idact_ammofacility = -1;
private _idact_fuelfacility = -1;
private _idact_clearance = -1;
private _distfob = (GRLIB_fob_range * 0.8);
private _distarsenal = 5;
private _distbuildfob = 10;
@ -34,254 +35,269 @@ waitUntil {one_eco_done};
while {true} do {
private _nearfob = [] call F_getNearestFob;
private _fobdistance = 9999;
private _nearest_sector = [GRLIB_fob_range] call F_getNearestSector;
private _prod_sector = [];
{
if ((_x select 1) == _nearest_sector) exitWith {_prod_sector = _x};
} forEach KP_liberation_production;
private _nearfob = [] call F_getNearestFob;
private _fobdistance = 9999;
private _nearest_sector = [GRLIB_fob_range] call F_getNearestSector;
private _prod_sector = [];
{
if ((_x select 1) == _nearest_sector) exitWith {_prod_sector = _x};
} forEach KP_liberation_production;
if (count _nearfob == 3) then {
_fobdistance = player distance _nearfob;
};
if (count _nearfob == 3) then {
_fobdistance = player distance _nearfob;
};
if (KP_liberation_mobilearsenal) then {
if (KP_liberation_mobilearsenal) then {
KP_liberation_neararsenal = ((getpos player) nearobjects [Arsenal_typename, _distarsenal]) select {getObjectType _x >= 8};
} else {
KP_liberation_neararsenal = [];
};
_nearfobbox = ((getpos player) nearEntities [[FOB_box_typename, FOB_truck_typename], _distbuildfob]);
_nearfobbox = ((getpos player) nearEntities [[FOB_box_typename, FOB_truck_typename], _distbuildfob]);
if (KP_liberation_mobilerespawn) then {
if (KP_liberation_mobilerespawn) then {
KP_liberation_nearspawn = ((getpos player) nearEntities [[Respawn_truck_typename, huron_typename], _distspawn]);
} else {
KP_liberation_nearspawn = [];
};
if (GRLIB_removefobboxes) then {
GRLIB_removefobboxes = false;
if (count _nearfobbox > 0) then {
deletevehicle (_nearfobbox select 0);
};
};
if (GRLIB_removefobboxes) then {
GRLIB_removefobboxes = false;
if (count _nearfobbox > 0) then {
deletevehicle (_nearfobbox select 0);
};
};
if ( (player distance startbase) < 200 && alive player && vehicle player == player ) then {
if (_idact_tutorial == -1) then {
_idact_tutorial = player addAction ["<t color='#80FF80'>" + localize "STR_TUTO_ACTION" + "</t>","howtoplay = 1","",-740,false,true,"",""];
};
} else {
if (_idact_tutorial != -1) then {
player removeAction _idact_tutorial;
_idact_tutorial = -1;
};
};
if ( (player distance startbase) < 200 && alive player && vehicle player == player ) then {
if (_idact_tutorial == -1) then {
_idact_tutorial = player addAction ["<t color='#80FF80'>" + localize "STR_TUTO_ACTION" + "</t>","howtoplay = 1","",-740,false,true,"",""];
};
} else {
if (_idact_tutorial != -1) then {
player removeAction _idact_tutorial;
_idact_tutorial = -1;
};
};
if ((_fobdistance < _distredeploy || (player distance startbase) < 200) && alive player && vehicle player == player && GRLIB_halo_param > 0) then {
if (_idact_halo == -1) then {
_idact_halo = player addAction ["<t color='#80FF80'>" + localize "STR_HALO_ACTION" + "</t> <img size='2' image='res\ui_redeploy.paa'/>","scripts\client\spawn\do_halo.sqf","",-749,false,true,"","build_confirmed == 0"];
};
} else {
if (_idact_halo != -1) then {
player removeAction _idact_halo;
_idact_halo = -1;
};
};
if ((_fobdistance < _distredeploy || (player distance startbase) < 200) && alive player && vehicle player == player && GRLIB_halo_param > 0) then {
if (_idact_halo == -1) then {
_idact_halo = player addAction ["<t color='#80FF80'>" + localize "STR_HALO_ACTION" + "</t> <img size='2' image='res\ui_redeploy.paa'/>","scripts\client\spawn\do_halo.sqf","",-749,false,true,"","build_confirmed == 0"];
};
} else {
if (_idact_halo != -1) then {
player removeAction _idact_halo;
_idact_halo = -1;
};
};
if ((_fobdistance < _distredeploy || count KP_liberation_nearspawn != 0 || (player distance startbase) < 200) && alive player && vehicle player == player) then {
if (_idact_redeploy == -1) then {
_idact_redeploy = player addAction ["<t color='#80FF80'>" + localize "STR_DEPLOY_ACTION" + "</t> <img size='2' image='res\ui_redeploy.paa'/>","scripts\client\actions\redeploy.sqf","",-750,false,true,"","build_confirmed == 0"];
};
} else {
if (_idact_redeploy != -1) then {
player removeAction _idact_redeploy;
_idact_redeploy = -1;
};
};
if ((_fobdistance < _distredeploy || count KP_liberation_nearspawn != 0 || (player distance startbase) < 200) && alive player && vehicle player == player) then {
if (_idact_redeploy == -1) then {
_idact_redeploy = player addAction ["<t color='#80FF80'>" + localize "STR_DEPLOY_ACTION" + "</t> <img size='2' image='res\ui_redeploy.paa'/>","scripts\client\actions\redeploy.sqf","",-750,false,true,"","build_confirmed == 0"];
};
} else {
if (_idact_redeploy != -1) then {
player removeAction _idact_redeploy;
_idact_redeploy = -1;
};
};
if ((leader group player == player) && (count units group player > 1) && alive player && vehicle player == player) then {
if (_idact_squad == -1) then {
_idact_squad = player addAction ["<t color='#80FF80'>" + localize "STR_SQUAD_MANAGEMENT_ACTION" + "</t> <img size='2' image='\a3\Ui_F_Curator\Data\Displays\RscDisplayCurator\modeGroups_ca.paa'/>","scripts\client\ui\squad_management.sqf","",-760,false,true,"","build_confirmed == 0"];
};
} else {
if (_idact_squad != -1) then {
player removeAction _idact_squad;
_idact_squad = -1;
};
};
if ((leader group player == player) && (count units group player > 1) && alive player && vehicle player == player) then {
if (_idact_squad == -1) then {
_idact_squad = player addAction ["<t color='#80FF80'>" + localize "STR_SQUAD_MANAGEMENT_ACTION" + "</t> <img size='2' image='\a3\Ui_F_Curator\Data\Displays\RscDisplayCurator\modeGroups_ca.paa'/>","scripts\client\ui\squad_management.sqf","",-760,false,true,"","build_confirmed == 0"];
};
} else {
if (_idact_squad != -1) then {
player removeAction _idact_squad;
_idact_squad = -1;
};
};
if ((_fobdistance < _distredeploy || count KP_liberation_neararsenal != 0 || count KP_liberation_nearspawn != 0 || (player distance startbase) < 200) && alive player && vehicle player == player) then {
if (_idact_arsenal == -1) then {
_idact_arsenal = player addAction ["<t color='#FFFF00'>" + localize "STR_ARSENAL_ACTION" + "</t> <img size='2' image='res\ui_arsenal.paa'/>","scripts\client\actions\open_arsenal.sqf","",-980,true,true,"","build_confirmed == 0"];
};
} else {
if (_idact_arsenal != -1) then {
player removeAction _idact_arsenal;
_idact_arsenal = -1;
};
};
if ((_fobdistance < _distredeploy || count KP_liberation_neararsenal != 0 || count KP_liberation_nearspawn != 0 || (player distance startbase) < 200) && alive player && vehicle player == player) then {
if (_idact_arsenal == -1) then {
_idact_arsenal = player addAction ["<t color='#FFFF00'>" + localize "STR_ARSENAL_ACTION" + "</t> <img size='2' image='res\ui_arsenal.paa'/>","scripts\client\actions\open_arsenal.sqf","",-980,true,true,"","build_confirmed == 0"];
};
} else {
if (_idact_arsenal != -1) then {
player removeAction _idact_arsenal;
_idact_arsenal = -1;
};
};
if (_fobdistance < _distfob && alive player && vehicle player == player && (([ player, 3] call F_fetchPermission) || (player == ([] call F_getCommander) || [] call F_isAdmin))) then {
if (_idact_build == -1) then {
_idact_build = player addAction ["<t color='#FFFF00'>" + localize "STR_BUILD_ACTION" + "</t> <img size='2' image='res\ui_build.paa'/>","scripts\client\build\open_build_menu.sqf","",-985,false,true,"","build_confirmed == 0"];
};
} else {
if (_idact_build != -1) then {
player removeAction _idact_build;
_idact_build = -1;
};
};
if (_fobdistance < _distfob && alive player && vehicle player == player && (([ player, 3] call F_fetchPermission) || (player == ([] call F_getCommander) || [] call F_isAdmin))) then {
if (_idact_build == -1) then {
_idact_build = player addAction ["<t color='#FFFF00'>" + localize "STR_BUILD_ACTION" + "</t> <img size='2' image='res\ui_build.paa'/>","scripts\client\build\open_build_menu.sqf","",-985,false,true,"","build_confirmed == 0"];
};
} else {
if (_idact_build != -1) then {
player removeAction _idact_build;
_idact_build = -1;
};
};
if ((count _nearfobbox != 0) && (alive player) && (vehicle player == player) && !(surfaceIsWater getpos player) && ((player distance startbase) > 1000) && (([player, 3] call F_fetchPermission) || (player == ([] call F_getCommander) || [] call F_isAdmin)) && !FOB_build_in_progress) then {
if (_idact_buildfob == -1) then {
_idact_buildfob = player addAction ["<t color='#FFFF00'>" + localize "STR_FOB_ACTION" + "</t> <img size='2' image='res\ui_deployfob.paa'/>","scripts\client\build\do_build_fob.sqf","",-990,false,true,"","build_confirmed == 0"];
};
} else {
if (_idact_buildfob != -1) then {
player removeAction _idact_buildfob;
_idact_buildfob = -1;
};
};
if ((count _nearfobbox != 0) && (alive player) && (vehicle player == player) && !(surfaceIsWater getpos player) && ((player distance startbase) > 1000) && (([player, 3] call F_fetchPermission) || (player == ([] call F_getCommander) || [] call F_isAdmin)) && !FOB_build_in_progress) then {
if (_idact_buildfob == -1) then {
_idact_buildfob = player addAction ["<t color='#FFFF00'>" + localize "STR_FOB_ACTION" + "</t> <img size='2' image='res\ui_deployfob.paa'/>","scripts\client\build\do_build_fob.sqf","",-990,false,true,"","build_confirmed == 0"];
};
} else {
if (_idact_buildfob != -1) then {
player removeAction _idact_buildfob;
_idact_buildfob = -1;
};
};
if (_fobdistance < _distredeploy && alive player && vehicle player == player && (player == ([] call F_getCommander) || [] call F_isAdmin)) then {
if (_idact_repackage == -1) then {
_idact_repackage = player addAction ["<t color='#FFFF00'>" + localize "STR_FOB_REPACKAGE" + "</t> <img size='2' image='res\ui_deployfob.paa'/>","scripts\client\actions\do_repackage_fob.sqf","",-991,false,true,"","build_confirmed == 0"];
};
} else {
if (_idact_repackage != -1) then {
player removeAction _idact_repackage;
_idact_repackage = -1;
};
};
if (_fobdistance < _distredeploy && alive player && vehicle player == player && (player == ([] call F_getCommander) || [] call F_isAdmin)) then {
if (_idact_repackage == -1) then {
_idact_repackage = player addAction ["<t color='#FFFF00'>" + localize "STR_FOB_REPACKAGE" + "</t> <img size='2' image='res\ui_deployfob.paa'/>","scripts\client\actions\do_repackage_fob.sqf","",-991,false,true,"","build_confirmed == 0"];
};
} else {
if (_idact_repackage != -1) then {
player removeAction _idact_repackage;
_idact_repackage = -1;
};
};
if ((count GRLIB_all_fobs > 0) && (GRLIB_endgame == 0) && (_fobdistance < _distredeploy || (player distance startbase) < 200) && alive player && vehicle player == player && (([player, 5] call F_fetchPermission) || (player == ([] call F_getCommander) || [] call F_isAdmin))) then {
if (_idact_secondary == -1) then {
_idact_secondary = player addAction ["<t color='#FFFF00'>" + localize "STR_SECONDARY_OBJECTIVES" + "</t>","scripts\client\ui\secondary_ui.sqf","",-992,false,true,"","build_confirmed == 0"];
};
} else {
if (_idact_secondary != -1) then {
player removeAction _idact_secondary;
_idact_secondary = -1;
};
};
if ((count GRLIB_all_fobs > 0) && (GRLIB_endgame == 0) && (_fobdistance < _distredeploy || (player distance startbase) < 200) && alive player && vehicle player == player && (([player, 5] call F_fetchPermission) || (player == ([] call F_getCommander) || [] call F_isAdmin))) then {
if (_idact_secondary == -1) then {
_idact_secondary = player addAction ["<t color='#FFFF00'>" + localize "STR_SECONDARY_OBJECTIVES" + "</t>","scripts\client\ui\secondary_ui.sqf","",-992,false,true,"","build_confirmed == 0"];
};
} else {
if (_idact_secondary != -1) then {
player removeAction _idact_secondary;
_idact_secondary = -1;
};
};
if ((count _prod_sector) == 12) then {
if (alive player && vehicle player == player && ([player, 3] call F_fetchPermission) && ((count (_prod_sector select 3)) == 0)) then {
if (_idact_sectorstorage == -1) then {
_idact_sectorstorage = player addAction ["<t color='#FFFF00'>" + localize "STR_SECSTORAGEBUILD_ACTION" + "</t>","scripts\client\build\do_sector_build.sqf",[KP_liberation_small_storage_building, _prod_sector],-993,false,true,"","build_confirmed == 0"];
};
} else {
if (_idact_sectorstorage != -1) then {
player removeAction _idact_sectorstorage;
_idact_sectorstorage = -1;
};
};
if (alive player && vehicle player == player && ([player, 3] call F_fetchPermission) && ((count (_prod_sector select 3)) == 3) && !(_prod_sector select 4)) then {
if (_idact_supplyfacility == -1) then {
_idact_supplyfacility = player addAction ["<t color='#FFFF00'>" + localize "STR_SECSUPPLYBUILD_ACTION" + "</t>","scripts\client\build\do_sector_build.sqf",["supply", _prod_sector],-994,false,true,"","build_confirmed == 0"];
};
} else {
if (_idact_supplyfacility != -1) then {
player removeAction _idact_supplyfacility;
_idact_supplyfacility = -1;
};
};
if (alive player && vehicle player == player && ([player, 3] call F_fetchPermission) && ((count (_prod_sector select 3)) == 3) && !(_prod_sector select 5)) then {
if (_idact_ammofacility == -1) then {
_idact_ammofacility = player addAction ["<t color='#FFFF00'>" + localize "STR_SECAMMOBUILD_ACTION" + "</t>","scripts\client\build\do_sector_build.sqf",["ammo", _prod_sector],-995,false,true,"","build_confirmed == 0"];
};
} else {
if (_idact_ammofacility != -1) then {
player removeAction _idact_ammofacility;
_idact_ammofacility = -1;
};
};
if (alive player && vehicle player == player && ([player, 3] call F_fetchPermission) && ((count (_prod_sector select 3)) == 3) && !(_prod_sector select 6)) then {
if (_idact_fuelfacility == -1) then {
_idact_fuelfacility = player addAction ["<t color='#FFFF00'>" + localize "STR_SECFUELBUILD_ACTION" + "</t>","scripts\client\build\do_sector_build.sqf",["fuel", _prod_sector],-996,false,true,"","build_confirmed == 0"];
};
} else {
if (_idact_fuelfacility != -1) then {
player removeAction _idact_fuelfacility;
_idact_fuelfacility = -1;
};
};
} else {
if (_idact_sectorstorage != -1) then {
player removeAction _idact_sectorstorage;
_idact_sectorstorage = -1;
};
if (_idact_supplyfacility != -1) then {
player removeAction _idact_supplyfacility;
_idact_supplyfacility = -1;
};
if (_idact_ammofacility != -1) then {
player removeAction _idact_ammofacility;
_idact_ammofacility = -1;
};
if (_idact_fuelfacility != -1) then {
player removeAction _idact_fuelfacility;
_idact_fuelfacility = -1;
};
};
if ((count _prod_sector) == 12) then {
if (alive player && vehicle player == player && ([player, 3] call F_fetchPermission) && ((count (_prod_sector select 3)) == 0)) then {
if (_idact_sectorstorage == -1) then {
_idact_sectorstorage = player addAction ["<t color='#FFFF00'>" + localize "STR_SECSTORAGEBUILD_ACTION" + "</t>","scripts\client\build\do_sector_build.sqf",[KP_liberation_small_storage_building, _prod_sector],-993,false,true,"","build_confirmed == 0"];
};
} else {
if (_idact_sectorstorage != -1) then {
player removeAction _idact_sectorstorage;
_idact_sectorstorage = -1;
};
};
if (alive player && vehicle player == player && ([player, 3] call F_fetchPermission) && ((count (_prod_sector select 3)) == 3) && !(_prod_sector select 4)) then {
if (_idact_supplyfacility == -1) then {
_idact_supplyfacility = player addAction ["<t color='#FFFF00'>" + localize "STR_SECSUPPLYBUILD_ACTION" + "</t>","scripts\client\build\do_sector_build.sqf",["supply", _prod_sector],-994,false,true,"","build_confirmed == 0"];
};
} else {
if (_idact_supplyfacility != -1) then {
player removeAction _idact_supplyfacility;
_idact_supplyfacility = -1;
};
};
if (alive player && vehicle player == player && ([player, 3] call F_fetchPermission) && ((count (_prod_sector select 3)) == 3) && !(_prod_sector select 5)) then {
if (_idact_ammofacility == -1) then {
_idact_ammofacility = player addAction ["<t color='#FFFF00'>" + localize "STR_SECAMMOBUILD_ACTION" + "</t>","scripts\client\build\do_sector_build.sqf",["ammo", _prod_sector],-995,false,true,"","build_confirmed == 0"];
};
} else {
if (_idact_ammofacility != -1) then {
player removeAction _idact_ammofacility;
_idact_ammofacility = -1;
};
};
if (alive player && vehicle player == player && ([player, 3] call F_fetchPermission) && ((count (_prod_sector select 3)) == 3) && !(_prod_sector select 6)) then {
if (_idact_fuelfacility == -1) then {
_idact_fuelfacility = player addAction ["<t color='#FFFF00'>" + localize "STR_SECFUELBUILD_ACTION" + "</t>","scripts\client\build\do_sector_build.sqf",["fuel", _prod_sector],-996,false,true,"","build_confirmed == 0"];
};
} else {
if (_idact_fuelfacility != -1) then {
player removeAction _idact_fuelfacility;
_idact_fuelfacility = -1;
};
};
} else {
if (_idact_sectorstorage != -1) then {
player removeAction _idact_sectorstorage;
_idact_sectorstorage = -1;
};
if (_idact_supplyfacility != -1) then {
player removeAction _idact_supplyfacility;
_idact_supplyfacility = -1;
};
if (_idact_ammofacility != -1) then {
player removeAction _idact_ammofacility;
_idact_ammofacility = -1;
};
if (_idact_fuelfacility != -1) then {
player removeAction _idact_fuelfacility;
_idact_fuelfacility = -1;
};
};
if (_fobdistance < _distfob && alive player && vehicle player == player) then {
if (_idact_resources == -1) then {
_idact_resources = player addAction ["<t color='#FFFF00'>" + localize "STR_RESOURCE_GLOBAL_ACTION" + "</t>",{KP_liberation_resources_global = !KP_liberation_resources_global},"",-997,false,true,"","build_confirmed == 0"];
};
} else {
if (_idact_resources != -1) then {
player removeAction _idact_resources;
_idact_resources = -1;
};
};
if (_fobdistance < _distfob && alive player && vehicle player == player) then {
if (_idact_resources == -1) then {
_idact_resources = player addAction ["<t color='#FFFF00'>" + localize "STR_RESOURCE_GLOBAL_ACTION" + "</t>",{KP_liberation_resources_global = !KP_liberation_resources_global},"",-997,false,true,"","build_confirmed == 0"];
};
} else {
if (_idact_resources != -1) then {
player removeAction _idact_resources;
_idact_resources = -1;
};
};
if (((_fobdistance < _distfob) || ((count _prod_sector) == 12)) && (player == ([] call F_getCommander) || [] call F_isAdmin) && alive player && vehicle player == player && ((count KP_liberation_production) > 0)) then {
if (_idact_production == -1) then {
_idact_production = player addAction ["<t color='#FF8000'>" + localize "STR_PRODUCTION_ACTION" + "</t>","scripts\client\commander\open_production.sqf","",-998,false,true,"","build_confirmed == 0"];
};
} else {
if (_idact_production != -1) then {
player removeAction _idact_production;
_idact_production = -1;
};
};
if (((_fobdistance < _distfob) || ((count _prod_sector) == 12)) && (player == ([] call F_getCommander) || [] call F_isAdmin) && alive player && vehicle player == player && ((count KP_liberation_production) > 0)) then {
if (_idact_production == -1) then {
_idact_production = player addAction ["<t color='#FF8000'>" + localize "STR_PRODUCTION_ACTION" + "</t>","scripts\client\commander\open_production.sqf","",-998,false,true,"","build_confirmed == 0"];
};
} else {
if (_idact_production != -1) then {
player removeAction _idact_production;
_idact_production = -1;
};
};
if (KP_liberation_ailogistics) then {
if ((_fobdistance < _distfob) && (player == ([] call F_getCommander) || [] call F_isAdmin) && alive player && vehicle player == player && (((count GRLIB_all_fobs) + (count KP_liberation_production)) > 1)) then {
if (_idact_logistic == -1) then {
_idact_logistic = player addAction ["<t color='#FF8000'>" + localize "STR_LOGISTIC_ACTION" + "</t>","scripts\client\commander\open_logistic.sqf","",-999,false,true,"","build_confirmed == 0"];
};
} else {
if (_idact_logistic != -1) then {
player removeAction _idact_logistic;
_idact_logistic = -1;
};
};
};
if (KP_liberation_ailogistics) then {
if ((_fobdistance < _distfob) && (player == ([] call F_getCommander) || [] call F_isAdmin) && alive player && vehicle player == player && (((count GRLIB_all_fobs) + (count KP_liberation_production)) > 1)) then {
if (_idact_logistic == -1) then {
_idact_logistic = player addAction ["<t color='#FF8000'>" + localize "STR_LOGISTIC_ACTION" + "</t>","scripts\client\commander\open_logistic.sqf","",-999,false,true,"","build_confirmed == 0"];
};
} else {
if (_idact_logistic != -1) then {
player removeAction _idact_logistic;
_idact_logistic = -1;
};
};
};
if ((player == ([] call F_getCommander) || [] call F_isAdmin) && alive player && vehicle player == player && GRLIB_permissions_param) then {
if (_idact_commander == -1) then {
_idact_commander = player addAction ["<t color='#FF8000'>" + localize "STR_COMMANDER_ACTION" + "</t> <img size='2' image='\a3\Ui_F_Curator\Data\Displays\RscDisplayCurator\modeGroups_ca.paa'/>","scripts\client\commander\open_permissions.sqf","",-1001,false,true,"","build_confirmed == 0"];
};
} else {
if (_idact_commander != -1) then {
player removeAction _idact_commander;
_idact_commander = -1;
};
};
if ((player == ([] call F_getCommander) || [] call F_isAdmin) && alive player && vehicle player == player && GRLIB_permissions_param) then {
if (_idact_commander == -1) then {
_idact_commander = player addAction ["<t color='#FF8000'>" + localize "STR_COMMANDER_ACTION" + "</t> <img size='2' image='\a3\Ui_F_Curator\Data\Displays\RscDisplayCurator\modeGroups_ca.paa'/>","scripts\client\commander\open_permissions.sqf","",-1001,false,true,"","build_confirmed == 0"];
};
} else {
if (_idact_commander != -1) then {
player removeAction _idact_commander;
_idact_commander = -1;
};
};
if (!isNil("commandant")) then {
if ((player == commandant) && (isNull(getAssignedCuratorLogic commandant))) then {
if ( _idact_zeus == -1 ) then {
_idact_zeus = player addAction ["<t color='#FF0000'>" + localize "STR_REASSIGN_ZEUS" + "</t>",{[] remoteExec ["zeus_remote_call",2];},"",-1002,false,true,"","build_confirmed == 0"];
};
} else {
player removeAction _idact_zeus;
_idact_zeus = -1;
};
};
if (!isNil("commandant")) then {
if ((player == commandant) && (isNull(getAssignedCuratorLogic commandant))) then {
if ( _idact_zeus == -1 ) then {
_idact_zeus = player addAction ["<t color='#FF0000'>" + localize "STR_REASSIGN_ZEUS" + "</t>",{[] remoteExec ["zeus_remote_call",2];},"",-1002,false,true,"","build_confirmed == 0"];
};
} else {
player removeAction _idact_zeus;
_idact_zeus = -1;
};
};
uiSleep 1;
if (_fobdistance < _distfob && alive player && vehicle player == player && (player == ([] call F_getCommander) || [] call F_isAdmin)) then {
if (_idact_clearance == -1) then {
_idact_clearance = player addAction [
"<t color='#FFFF00'>" + localize "STR_CLEARANCE_ACTION" + "</t>",
{[_this select 3 select 0, _this select 3 select 1, true] remoteExecCall ["F_createClearance", 2];},
[_nearFob, GRLIB_fob_range * 0.9], -1003, false, true, "", "build_confirmed == 0"
];
};
} else {
if (_idact_clearance != -1) then {
player removeAction _idact_clearance;
_idact_clearance = -1;
};
};
uiSleep 1;
};

View File

@ -15,10 +15,12 @@ if ( dorepackage > 0 ) then {
_fob = [] call F_getNearestFob;
if ( count _fob > 0 ) then {
GRLIB_all_fobs = GRLIB_all_fobs - [ _fob ];
publicVariable "GRLIB_all_fobs";
};
if (count _fob > 0) then {
GRLIB_all_fobs = GRLIB_all_fobs - [_fob];
KP_liberation_clearances deleteAt (KP_liberation_clearances findIf {(_x select 0) isEqualTo _fob});
publicVariable "GRLIB_all_fobs";
publicVariable "KP_liberation_clearances";
};
{deleteVehicle _x} foreach (((getpos player) nearobjects [ FOB_typename, 250 ]) select {getObjectType _x >= 8});

View File

@ -1,16 +1,17 @@
[] call compileFinal preprocessFileLineNumbers "scripts\client\misc\init_markers.sqf";
switch (KP_liberation_arsenal) do {
case 1: {[] call compileFinal preprocessFileLineNumbers "arsenal_presets\custom.sqf";};
case 2: {[] call compileFinal preprocessFileLineNumbers "arsenal_presets\killahpotatoes.sqf";};
case 3: {[] call compileFinal preprocessFileLineNumbers "arsenal_presets\rhsusaf.sqf";};
case 4: {[] call compileFinal preprocessFileLineNumbers "arsenal_presets\rhsusaf_ace.sqf";};
case 5: {[] call compileFinal preprocessFileLineNumbers "arsenal_presets\rhsusaf_ace_acre.sqf";};
case 6: {[] call compileFinal preprocessFileLineNumbers "arsenal_presets\3cbBAF.sqf";};
case 7: {[] call compileFinal preprocessFileLineNumbers "arsenal_presets\gm_west.sqf";};
case 8: {[] call compileFinal preprocessFileLineNumbers "arsenal_presets\gm_east.sqf";};
case 9: {[] call compileFinal preprocessFileLineNumbers "arsenal_presets\csat.sqf";};
case 1: {[] call compileFinal preprocessFileLineNumbers "arsenal_presets\custom.sqf";};
case 2: {[] call compileFinal preprocessFileLineNumbers "arsenal_presets\killahpotatoes.sqf";};
case 3: {[] call compileFinal preprocessFileLineNumbers "arsenal_presets\rhsusaf.sqf";};
case 4: {[] call compileFinal preprocessFileLineNumbers "arsenal_presets\rhsusaf_ace.sqf";};
case 5: {[] call compileFinal preprocessFileLineNumbers "arsenal_presets\rhsusaf_ace_acre.sqf";};
case 6: {[] call compileFinal preprocessFileLineNumbers "arsenal_presets\3cbBAF.sqf";};
case 7: {[] call compileFinal preprocessFileLineNumbers "arsenal_presets\gm_west.sqf";};
case 8: {[] call compileFinal preprocessFileLineNumbers "arsenal_presets\gm_east.sqf";};
case 9: {[] call compileFinal preprocessFileLineNumbers "arsenal_presets\csat.sqf";};
case 10: {[] call compileFinal preprocessFileLineNumbers "arsenal_presets\unsung.sqf";};
case 11: {[] call compileFinal preprocessFileLineNumbers "arsenal_presets\sfp.sqf";};
default {GRLIB_arsenal_weapons = [];GRLIB_arsenal_magazines = [];GRLIB_arsenal_items = [];GRLIB_arsenal_backpacks = [];};
default {GRLIB_arsenal_weapons = [];GRLIB_arsenal_magazines = [];GRLIB_arsenal_items = [];GRLIB_arsenal_backpacks = [];};
};
if (typeOf player == "VirtualSpectator_F") exitWith {

View File

@ -1,15 +1,81 @@
{ diag_log format [ "[ ""%1"", [%2, %3, %4], %5 ],",
typeof _x,
[ (getpos _x select 0) - (getpos player select 0), 2 ] call BIS_fnc_cutDecimals,
[ (getpos _x select 1) - (getpos player select 1), 2 ] call BIS_fnc_cutDecimals,
[ (getposatl _x select 2), 2 ] call BIS_fnc_cutDecimals,
[ getdir _x , 2 ] call BIS_fnc_cutDecimals ]
} foreach ( (nearestObjects [player, [ "Man" ], 50]) - ((nearestObjects [player, [ "Animal" ], 50]) + [player]));
/*
--- USAGE ---
{ diag_log format [ "[ ""%1"", [%2, %3, %4], %5 ],",
typeof _x,
[ (getpos _x select 0) - (getpos player select 0), 2 ] call BIS_fnc_cutDecimals,
[ (getpos _x select 1) - (getpos player select 1), 2 ] call BIS_fnc_cutDecimals,
[ (getposatl _x select 2), 2 ] call BIS_fnc_cutDecimals,
[ getdir _x , 2 ] call BIS_fnc_cutDecimals ]
} foreach ( (nearestObjects [player, [ "All" ], 50]) - ((nearestObjects [player, [ "Man","Animal" ], 50]) + [player]));
Place this file in the Eden mission folder where you want to build your FOB templates.
After building your FOB in Eden, place down a center object in the middle of your FOB.
I recommend a small cluttercutter object (Land_ClutterCutter_small_F) for this.
In the init field of the center object add:
_ = [this] execVM "export_template.sqf";
Then preview the mission in eden to execute the script.
The fetched information can be found in your client rpt (between the START and END line) for copy/paste.
Ref for finding your RPT file: https://community.bistudio.com/wiki/Crash_Files#Arma_3
--- RECOMMENDATIONS ---
!IMPORTANT! Don't (!) exceed an area with a radius of 35m for the FOB. !IMPORTANT!
You could create a trigger with that radius and use it as "build area helper".
After exporting the template, you should replace possible placed vehicles or crates etc. with the Liberation variables.
Have a look at the other templates to get an idea of it.
*/
params [
["_center", player, [objNull]]
];
diag_log text "";
diag_log text "";
diag_log text "[KP LIBERATION] [FOB EXPORT] ---------- START ----------";
// Fetch all objects
diag_log text "";
diag_log text "_objects_to_build = [";
{
diag_log text format [
" [""%1"", [%2, %3, %4], %5],",
typeof _x,
((getpos _x select 0) - (getpos _center select 0)) toFixed 2,
((getpos _x select 1) - (getpos _center select 1)) toFixed 2,
(getposatl _x select 2) toFixed 2,
(getdir _x) toFixed 2
];
} forEach ((nearestObjects [_center, ["All"], 40]) - ((nearestObjects [_center, ["Man","Animal"], 40]) + [_center]));
diag_log text "];";
diag_log text "";
diag_log text "_objectives_to_build = [";
diag_log text " // Move all things which should be destroyed to accomplish the mission from the above to this array";
diag_log text "];";
// Fetch all infantry/guards
diag_log text "";
diag_log text "_defenders_to_build = [";
{
diag_log text format [
" [""%1"", [%2, %3, %4], %5],",
typeof _x,
((getpos _x select 0) - (getpos _center select 0)) toFixed 2,
((getpos _x select 1) - (getpos _center select 1)) toFixed 2,
(getposatl _x select 2) toFixed 2,
(getdir _x) toFixed 2
];
} forEach ((nearestObjects [_center, ["Man"], 40]) - ((nearestObjects [_center, [ "Animal" ], 40]) + [_center]));
diag_log text "];";
diag_log text "";
diag_log text "_base_corners = [";
diag_log text " [40, 40, 0],";
diag_log text " [40, -40, 0],";
diag_log text " [-40, -40, 0],";
diag_log text " [-40, 40, 0],";
diag_log text "];";
diag_log text "";
diag_log text "[KP LIBERATION] [FOB EXPORT] ---------- END ----------";
diag_log text "";
diag_log text "";
true

View File

@ -31,6 +31,10 @@ if ( _spawn_marker != "" ) then {
[_spawn_marker] remoteExec ["remote_call_battlegroup"];
if (worldName in KP_liberation_battlegroup_clearance) then {
[markerpos _spawn_marker, 15] call F_createClearance;
};
{
_nextgrp = createGroup [GRLIB_side_enemy, true];
_vehicle = [markerpos _spawn_marker, _x] call F_libSpawnVehicle;

View File

@ -0,0 +1,84 @@
KP_liberation_cr_ign_buildings = [
"Land_Bunker_02_double_F",
"Land_Bunker_02_left_F",
"Land_Bunker_02_light_double_F",
"Land_Bunker_02_light_left_F",
"Land_Bunker_02_light_right_F",
"Land_Bunker_02_right_F",
"Land_Calvary_03_F",
"Land_CastleRuins_01_wall_10m_F",
"Land_CastleRuins_01_wall_d_L_F",
"Land_CastleRuins_01_wall_d_R_F",
"Land_ChickenCoop_01_F",
"Land_cmp_Shed_dam_F",
"Land_Communication_F",
"Land_ConcreteWell_02_F",
"Land_Cross_01_small_F",
"Land_DeerStand_01_F",
"Land_DPP_01_waterCooler_F",
"Land_DryToilet_01_F",
"Land_FeedRack_01_F",
"Land_FeedStorage_01_F",
"Land_FuelStation_03_pump_F",
"Land_Grave_08_F",
"Land_Grave_09_F",
"Land_Grave_10_F",
"Land_Grave_11_F",
"Land_GraveFence_01_F",
"Land_GraveFence_02_F",
"Land_GraveFence_03_F",
"Land_GraveFence_04_F",
"Land_Greenhouse_01_damaged_F",
"Land_GuardTower_02_F",
"Land_HighVoltageEnd_F",
"Land_HighVoltageTower_large_F",
"Land_Hutch_01_F",
"Land_IndPipe3_big_ground1_F",
"Land_IndPipe3_big_ground2_F",
"Land_IndPipe3_bigL_L_F",
"Land_IndPipe3_bigL_R_F",
"Land_LampDecor_F",
"Land_LampHalogen_F",
"Land_LampHarbour_F",
"Land_LampIndustrial_01_F",
"Land_LampIndustrial_01_off_F",
"Land_LampIndustrial_02_F",
"Land_LampIndustrial_02_off_F",
"Land_LampShabby_F",
"Land_LampStreet_02_amplion_F",
"Land_LampStreet_02_amplion_off_F",
"Land_LampStreet_02_double_F",
"Land_LampStreet_02_double_off_F",
"Land_LampStreet_02_F",
"Land_LampStreet_02_off_F",
"Land_LampStreet_02_triple_off_F",
"Land_Power_Pole_Wood1_Amp",
"Land_Power_Pole_Wood1_Lamp_Amp",
"Land_Power_Pole_Wood1_Lamp",
"Land_Power_Pole_Wood1",
"Land_Power_Pole_Wood3",
"Land_PowerLine_01_wire_50m_F",
"Land_PowerLine_01_wire_50m_main_F",
"Land_PowerLine_02_pole_junction_A_F",
"Land_powerline_02_pole_junction_nest_a_f",
"Land_PowerLine_02_pole_small_A_F",
"Land_PowerLine_02_pole_small_end_A_F",
"Land_PowerLine_02_pole_small_F",
"Land_powerline_02_pole_small_hook_end_f",
"Land_PowerLine_02_pole_small_hook_F",
"Land_powerline_02_pole_small_hook_junction_f",
"Land_PowerLine_03_pole_end_F",
"Land_PowerLine_03_pole_F",
"Land_PowerLine_03_pole_junction_F",
"Land_PowerWireBig_direct_F",
"Land_PowerWireBig_end_F",
"Land_Radar_01_airshaft_F",
"Land_Rail_ConcreteRamp_F",
"Land_Rail_Crossing_Barrier_F",
"Land_Sawmill_01_illuminati_tower_F",
"Land_Shed_06_F",
"Land_Shed_10_F",
"Land_StoneWell_01_F",
"Land_TelephoneLine_01_wire_50m_main_F",
"Land_TTowerSmall_2_F"
];

View File

@ -0,0 +1,103 @@
KP_liberation_cr_ign_buildings = [
"Land_AfDum_mesto2",
"Land_AfDum_mesto2L",
"Land_AfDum_mesto3",
"Land_bouda_plech",
"Land_Brana02nodoor",
"Land_Dulni_bs",
"Land_Dum_zboreny",
"Land_Dum_zboreny_total",
"Land_Helfenburk_budova2",
"Land_Helfenburk_cimburi",
"Land_Helfenburk_zed",
"Land_Hlaska",
"Land_Hut03",
"Land_KBud",
"Land_Kontejner",
"Land_Kontejner_papir",
"Land_Kontejner_plasty",
"Land_Kontejner_sklo",
"Land_Kostel_trosky",
"Land_ladder",
"Land_ladder_half",
"Land_Lampa_ind",
"Land_Lampa_ind_b",
"Land_Lampa_ind_zebr",
"Land_Lampa_sidl",
"Land_Lampa_sidl_2",
"Land_Lampa_sidl_3",
"Land_Lampa_vysoka",
"Land_Leseni2x",
"Land_Leseni4x",
"Land_Majak_podesta",
"Land_Molo_beton",
"Land_Molo_drevo_bs",
"Land_Molo_drevo_end",
"Land_Molo_krychle",
"Land_Molo_krychle2",
"Land_Nabrezi",
"Land_Nabrezi_najezd",
"Land_Nasypka",
"Land_Plot_green_branka",
"Land_Plot_green_vrata",
"Land_Plot_istan1_rovny_gate",
"Land_Plot_rust_branka",
"Land_Plot_rust_vrata",
"Land_Plot_zboreny",
"Land_Plot_zed_drevo1_branka",
"Land_Podesta_1_cornl",
"Land_Podesta_1_cornp",
"Land_Podesta_1_cube",
"Land_Podesta_1_cube_long",
"Land_Podesta_1_mid",
"Land_Podesta_1_mid_cornl",
"Land_Podesta_1_mid_cornp",
"Land_Podesta_1_stairs",
"Land_Podesta_1_stairs2",
"Land_Podesta_1_stairs3",
"Land_Podesta_1_stairs4",
"Land_Podesta_10",
"Land_Podesta_5",
"Land_Podesta_s10",
"Land_Podesta_s5",
"Land_Posed",
"Land_Psi_bouda",
"Land_Pumpa",
"Land_seno_balik",
"Land_sloup_vn",
"Land_sloup_vn_drat",
"Land_sloup_vn_dratZ",
"land_statek_brana_open",
"Land_Stoplight01",
"Land_Stoplight02",
"Land_Trafostanica_mala",
"Land_Trafostanica_velka",
"Land_Trafostanica_velka_draty",
"Land_Vez",
"Land_Vysilac_FM",
"Land_Vysilac_FM2",
"Land_water_tank",
"Land_Zastavka_jih",
"Land_Zastavka_sever",
"Land_Zavora",
"Land_Zavora_2_a1",
"Land_Fuel_tank_big",
"Land_Ind_Shed_01_end",
"Land_Ind_Shed_01_main",
"land_nav_pier_c_t15",
"Land_popelnice",
"land_nav_pier_F_23",
"land_nav_pier_m_end",
"Land_nav_pier_m_2",
"Land_A_statue01",
"Land_Misc_GContainer_Big",
"Land_fuel_tank_small",
"Land_Misc_Cargo1B",
"Land_Misc_Cargo1D",
"Land_Misc_Cargo1C",
"land_nav_pier_F_17",
"Land_Ind_TankSmall2",
"Land_LifeguardTower_01_F",
"Land_Pier_F",
"Land_Zed_dira_civil"
];

View File

@ -0,0 +1,11 @@
KP_liberation_cr_ign_buildings = [
"Land_Communication_F",
"LAND_fort2",
"Land_fortified_nest_big_ep1",
"Land_LampShabby_F",
"Land_misc_well_c_ep1",
"Land_statek_brana_open",
"Land_vez",
"Land_Vysilac_FM",
"Land_Water_Tank"
];

View File

@ -1,35 +1,38 @@
if (KP_liberation_civrep_debug > 0) then {diag_log format ["[KP LIBERATION] [CIVREP] init_buildings.sqf initialising on: %1", debug_source];};
switch (worldName) do {
case "Chernarus": {call compile preprocessFileLineNumbers "scripts\server\civrep\ignored\chernarus.sqf"};
case "Chernarus": {call compile preprocessFileLineNumbers "scripts\server\civrep\ignored\chernarus.sqf"};
case "Enoch": {call compile preprocessFileLineNumbers "scripts\server\civrep\ignored\enoch.sqf"};
case "gm_weferlingen_summer": {call compile preprocessFileLineNumbers "scripts\server\civrep\ignored\gm_weferlingen_summer.sqf"};
case "gm_weferlingen_winter": {call compile preprocessFileLineNumbers "scripts\server\civrep\ignored\gm_weferlingen_winter.sqf"};
case "lythium": {call compile preprocessFileLineNumbers "scripts\server\civrep\ignored\lythium.sqf"};
case "Malden": {call compile preprocessFileLineNumbers "scripts\server\civrep\ignored\malden.sqf"};
case "pja310": {call compile preprocessFileLineNumbers "scripts\server\civrep\ignored\pja310.sqf"};
case "Sara": {call compile preprocessFileLineNumbers "scripts\server\civrep\ignored\sara.sqf"};
case "Takistan": {call compile preprocessFileLineNumbers "scripts\server\civrep\ignored\takistan.sqf"};
case "Tanoa": {call compile preprocessFileLineNumbers "scripts\server\civrep\ignored\tanoa.sqf"};
case "WL_Rosche": {call compile preprocessFileLineNumbers "scripts\server\civrep\ignored\wl_rosche.sqf"};
case "xcam_taunus": {call compile preprocessFileLineNumbers "scripts\server\civrep\ignored\xcam_taunus.sqf"};
default {call compile preprocessFileLineNumbers "scripts\server\civrep\ignored\altis.sqf"};
case "lythium": {call compile preprocessFileLineNumbers "scripts\server\civrep\ignored\lythium.sqf"};
case "Malden": {call compile preprocessFileLineNumbers "scripts\server\civrep\ignored\malden.sqf"};
case "panthera3": {call compile preprocessFileLineNumbers "scripts\server\civrep\ignored\panthera3.sqf"};
case "pja310": {call compile preprocessFileLineNumbers "scripts\server\civrep\ignored\pja310.sqf"};
case "Sara": {call compile preprocessFileLineNumbers "scripts\server\civrep\ignored\sara.sqf"};
case "song_bin_tanh": {call compile preprocessFileLineNumbers "scripts\server\civrep\ignored\song_bin_tanh.sqf"};
case "Takistan": {call compile preprocessFileLineNumbers "scripts\server\civrep\ignored\takistan.sqf"};
case "Tanoa": {call compile preprocessFileLineNumbers "scripts\server\civrep\ignored\tanoa.sqf"};
case "WL_Rosche": {call compile preprocessFileLineNumbers "scripts\server\civrep\ignored\wl_rosche.sqf"};
case "xcam_taunus": {call compile preprocessFileLineNumbers "scripts\server\civrep\ignored\xcam_taunus.sqf"};
default {call compile preprocessFileLineNumbers "scripts\server\civrep\ignored\altis.sqf"};
};
KP_liberation_cr_sectorbuildings = [];
{
KP_liberation_cr_sectorbuildings pushBack [_x, [_x] call F_cr_getBuildings];
KP_liberation_cr_sectorbuildings pushBack [_x, [_x] call F_cr_getBuildings];
} forEach sectors_capture;
{
KP_liberation_cr_sectorbuildings pushBack [_x, [_x] call F_cr_getBuildings];
KP_liberation_cr_sectorbuildings pushBack [_x, [_x] call F_cr_getBuildings];
} forEach sectors_bigtown;
sleep 1;
if (KP_liberation_civrep_debug > 0) then {
diag_log format ["[KP LIBERATION] [CIVREP] init_buildings.sqf finished on: %1 - Listing sectors with buildings amount...", debug_source];
{
diag_log format ["[KP LIBERATION] [CIVREP] %1: %2", markerText (_x select 0), (_x select 1)];
} forEach KP_liberation_cr_sectorbuildings;
diag_log format ["[KP LIBERATION] [CIVREP] init_buildings.sqf finished on: %1 - Listing sectors with buildings amount...", debug_source];
{
diag_log format ["[KP LIBERATION] [CIVREP] %1: %2", markerText (_x select 0), (_x select 1)];
} forEach KP_liberation_cr_sectorbuildings;
};

View File

@ -58,6 +58,8 @@ GRLIB_vehicle_to_military_base_links = [];
infantry_weight = 33;
// Civilian reputation value (-100 - +100)
KP_liberation_civ_rep = 0;
// Clearances
KP_liberation_clearances = [];
// Captured civilian vehicles
KP_liberation_cr_vehicles = [];
// Strength value of the resistance forces
@ -70,6 +72,8 @@ KP_liberation_production = [];
KP_liberation_production_markers = [];
// Global Intel resource
resources_intel = 0;
// State if the save is fully loaded
save_is_loaded = false;
// Trigger to start a saving process
doSaveTrigger = false;
@ -158,11 +162,12 @@ if (!isNil "greuh_liberation_savegame") then {
GRLIB_permissions = greuh_liberation_savegame select 10;
GRLIB_vehicle_to_military_base_links = greuh_liberation_savegame select 11;
KP_liberation_civ_rep = greuh_liberation_savegame select 12;
KP_liberation_guerilla_strength = greuh_liberation_savegame select 13;
KP_liberation_logistics = greuh_liberation_savegame select 14;
KP_liberation_production = greuh_liberation_savegame select 15;
KP_liberation_production_markers = greuh_liberation_savegame select 16;
resources_intel = greuh_liberation_savegame select 17;
KP_liberation_clearances = greuh_liberation_savegame select 13;
KP_liberation_guerilla_strength = greuh_liberation_savegame select 14;
KP_liberation_logistics = greuh_liberation_savegame select 15;
KP_liberation_production = greuh_liberation_savegame select 16;
KP_liberation_production_markers = greuh_liberation_savegame select 17;
resources_intel = greuh_liberation_savegame select 18;
stats_ammo_produced = _stats select 0;
stats_ammo_spent = _stats select 1;
@ -279,6 +284,11 @@ if (!isNil "greuh_liberation_savegame") then {
setDate [2045, 6, 6, _dateTime, 0]; // Compatibility for older save data
};
// Create clearances
{
[_x select 0, _x select 1] call F_createClearance;
} forEach KP_liberation_clearances;
// Collection array for all objects which are loaded
private _spawnedObjects = [];
@ -461,6 +471,7 @@ publicVariable "stats_civilian_vehicles_seized";
publicVariable "stats_ieds_detonated";
publicVariable "blufor_sectors";
publicVariable "GRLIB_all_fobs";
publicVariable "KP_liberation_clearances";
// Check for deleted military sectors or deleted classnames in the locked vehicles array
GRLIB_vehicle_to_military_base_links = GRLIB_vehicle_to_military_base_links select {((_x select 0) in elite_vehicles) && ((_x select 1) in sectors_military)};
@ -670,6 +681,7 @@ while {true} do {
GRLIB_permissions,
GRLIB_vehicle_to_military_base_links,
KP_liberation_civ_rep,
KP_liberation_clearances,
KP_liberation_guerilla_strength,
KP_liberation_logistics,
KP_liberation_production,

View File

@ -68,6 +68,19 @@ execVM "scripts\server\resources\unit_cap.sqf";
execVM "scripts\server\sector\lose_sectors.sqf";
execVM "scripts\server\sector\manage_sectors.sqf";
// Select FOB templates
switch (KP_liberation_preset_opfor) do {
default {
KPLIB_fob_templates = [
"scripts\fob_templates\default\template1.sqf",
"scripts\fob_templates\default\template2.sqf",
"scripts\fob_templates\default\template3.sqf",
"scripts\fob_templates\default\template4.sqf",
"scripts\fob_templates\default\template5.sqf"
];
};
};
// Civil Reputation
execVM "scripts\server\civrep\init_module.sqf";
@ -81,12 +94,12 @@ execVM "scripts\server\asymmetric\init_module.sqf";
execVM "scripts\server\offloading\group_diag.sqf";
{
if ( (_x != player) && (_x distance (getmarkerpos GRLIB_respawn_marker) < 200 ) ) then {
deleteVehicle _x;
};
if ((_x != player) && (_x distance (getmarkerpos GRLIB_respawn_marker) < 200 )) then {
deleteVehicle _x;
};
} foreach allUnits;
// Server Restart Script from K4s0
if (KP_liberation_restart > 0) then {
execVM "scripts\server\game\server_restart.sqf";
execVM "scripts\server\game\server_restart.sqf";
};

View File

@ -11,10 +11,12 @@ sleep 5;
waitUntil { sleep 0.3; !isNil "blufor_sectors" };
waitUntil { sleep 0.3; count blufor_sectors > 3 };
{
[_x, false] spawn manage_one_patrol;
sleep 1;
} foreach _combat_triggers;
if (worldName != "song_bin_tanh") then {
{
[_x, false] spawn manage_one_patrol;
sleep 1;
} foreach _combat_triggers;
};
{
[_x, true] spawn manage_one_patrol;

View File

@ -8,6 +8,7 @@ publicVariable "GRLIB_all_fobs";
if ( _create_fob_building ) then {
_fob_pos = [ (_new_fob select 0) + 15, (_new_fob select 1) + 2, 0 ];
[_fob_pos, 20, true] call F_createClearance;
_fob_building = FOB_typename createVehicle _fob_pos;
_fob_building setpos _fob_pos;
_fob_building setVectorUp [0,0,1];

View File

@ -1,15 +1,23 @@
if ( !isServer ) exitWith {};
if ( isNil "GRLIB_secondary_starting" ) then { GRLIB_secondary_starting = false; };
if ( GRLIB_secondary_starting ) exitWith { diag_log "[KP LIBERATION] [ERROR] Multiple calls to start secondary mission : shouldn't be possible, isn't allowed"; };
if ( isNil "used_positions" ) then { used_positions = []; };
if (!isServer) exitWith {false};
params [
["_mission_index", -1, [0]]
];
if (_mission_index < 0) exitWith {false};
if (isNil "GRLIB_secondary_starting") then { GRLIB_secondary_starting = false;};
if (GRLIB_secondary_starting) exitWith {diag_log "[KP LIBERATION] [ERROR] Multiple calls to start secondary mission : shouldn't be possible, isn't allowed";};
if (isNil "used_positions") then {used_positions = [];};
GRLIB_secondary_starting = true; publicVariable "GRLIB_secondary_starting";
params [ "_mission_index" ];
resources_intel = resources_intel - ( GRLIB_secondary_missions_costs select _mission_index );
if ( _mission_index == 0 ) then { [] call fob_hunting; };
if ( _mission_index == 1 ) then { [] call convoy_hijack; };
if ( _mission_index == 2 ) then { [] call search_and_rescue; };
if (_mission_index == 0) then {[] spawn fob_hunting;};
if (_mission_index == 1) then {[] spawn convoy_hijack;};
if (_mission_index == 2) then {[] spawn search_and_rescue;};
GRLIB_secondary_starting = false; publicVariable "GRLIB_secondary_starting";
true

View File

@ -1,123 +1,131 @@
_defenders_amount = 15 * ( sqrt ( GRLIB_unitcap ) );
if ( _defenders_amount > 15 ) then { _defenders_amount = 15 };
_fob_templates = [
"scripts\fob_templates\template5.sqf",
"scripts\fob_templates\template4.sqf",
"scripts\fob_templates\template3.sqf",
"scripts\fob_templates\template2.sqf",
"scripts\fob_templates\template1.sqf"
];
_defenders_amount = (15 * (sqrt (GRLIB_unitcap))) min 15;
_spawn_marker = [2000,999999,false] call F_findOpforSpawnPoint;
if ( _spawn_marker == "" ) exitWith { diag_log "[KP LIBERATION] [ERROR] Could not find position for fob hunting mission"; };
if (_spawn_marker == "") exitWith {diag_log "[KP LIBERATION] [ERROR] Could not find position for fob hunting mission";};
used_positions = used_positions + [ _spawn_marker ];
used_positions pushBack _spawn_marker;
_base_position = markerpos _spawn_marker;
_base_objects = [];
_base_objectives = [];
_base_defenders = [];
_template = ([] call (compile preprocessFileLineNumbers (selectRandom _fob_templates)));
_objects_to_build = _template select 0;
_objectives_to_build = _template select 1;
_defenders_to_build = _template select 2;
_base_corners = _template select 3;
([] call (compile preprocessFileLineNumbers (selectRandom KPLIB_fob_templates))) params [
"_objects_to_build",
"_objectives_to_build",
"_defenders_to_build",
"_base_corners"
];
[_base_position, 50] call F_createClearance;
private _nextobject = objNull;
{
_nextclass = _x select 0;
_nextpos = _x select 1;
_nextpos = [((_base_position select 0) + (_nextpos select 0)),((_base_position select 1) + (_nextpos select 1)),0];
_nextdir = _x select 2;
_x params [
"_nextclass",
"_nextpos",
"_nextdir"
];
_nextobject = _nextclass createVehicle _nextpos;
_nextobject setVectorUp [0,0,1];
_nextobject setdir _nextdir;
_nextobject setpos _nextpos;
_nextobject setVectorUp [0,0,1];
_nextobject setdir _nextdir;
_nextobject setpos _nextpos;
_base_objects = _base_objects + [_nextobject];
_nextpos = [((_base_position select 0) + (_nextpos select 0)), ((_base_position select 1) + (_nextpos select 1)), 0];
} foreach _objects_to_build;
_nextobject = _nextclass createVehicle _nextpos;
_nextobject setVectorUp [0, 0, 1];
_nextobject setdir _nextdir;
_nextobject setpos _nextpos;
_nextobject setVectorUp [0, 0, 1];
_nextobject setdir _nextdir;
_nextobject setpos _nextpos;
_base_objects pushBack _nextobject;
} forEach _objects_to_build;
sleep 1;
{
_nextclass = _x select 0;
_nextpos = _x select 1;
_nextpos = [((_base_position select 0) + (_nextpos select 0)),((_base_position select 1) + (_nextpos select 1)),0.5];
_nextdir = _x select 2;
_x params [
"_nextclass",
"_nextpos",
"_nextdir"
];
_nextobject = _nextclass createVehicle [(_nextpos select 0) + (random 500),(_nextpos select 1) + (random 500),0.5];
_nextobject setVectorUp [0,0,1];
_nextobject setpos _nextpos;
_nextobject setdir _nextdir;
_nextobject setVectorUp [0,0,1];
_nextobject setpos _nextpos;
_nextobject setdir _nextdir;
_nextobject lock 2;
_nextpos = [((_base_position select 0) + (_nextpos select 0)), ((_base_position select 1) + (_nextpos select 1)), 0.5];
_base_objectives = _base_objectives + [_nextobject];
} foreach _objectives_to_build;
_nextobject = _nextclass createVehicle [(_nextpos select 0) + (random 500), (_nextpos select 1) + (random 500), 0.5];
_nextobject setVectorUp [0, 0, 1];
_nextobject setpos _nextpos;
_nextobject setdir _nextdir;
_nextobject setVectorUp [0, 0, 1];
_nextobject setpos _nextpos;
_nextobject setdir _nextdir;
_nextobject lock 2;
_base_objectives pushBack _nextobject;
} forEach _objectives_to_build;
sleep 1;
{ _x setDamage 0; } foreach (_base_objectives + _base_objects);
{_x setDamage 0;} foreach (_base_objectives + _base_objects);
_grpdefenders = createGroup [GRLIB_side_enemy, true];
_idxselected = [];
while { count _idxselected < _defenders_amount } do {
_idx = floor (random (count _defenders_to_build));
if ( !(_idx in _idxselected) ) then {
_idxselected pushback _idx;
};
while {count _idxselected < _defenders_amount} do {
_idx = floor (random (count _defenders_to_build));
if (!(_idx in _idxselected)) then {
_idxselected pushBack _idx;
};
};
{
_nextentry = _defenders_to_build select _x;
_nextclass = _nextentry select 0;
_nextpos = _nextentry select 1;
_nextpos = [((_base_position select 0) + (_nextpos select 0)),((_base_position select 1) + (_nextpos select 1)),(_nextpos select 2)];
_nextdir = _nextentry select 2;
_nextclass createUnit [_nextpos, _grpdefenders,"nextdefender = this; this addMPEventHandler [""MPKilled"", {_this spawn kill_manager}]", 0.5, "private"];
nextdefender setpos _nextpos;
nextdefender setdir _nextdir;
[nextdefender] spawn building_defence_ai;
} foreach _idxselected;
(_defenders_to_build select _x) params [
"_nextclass",
"_nextpos",
"_nextdir"
];
_sentry = ceil ((3 + (floor (random 4))) * ( sqrt ( GRLIB_unitcap ) ) );
_nextpos = [((_base_position select 0) + (_nextpos select 0)), ((_base_position select 1) + (_nextpos select 1)), (_nextpos select 2)];
_nextclass createUnit [_nextpos, _grpdefenders, "nextdefender = this; this addMPEventHandler [""MPKilled"", {_this spawn kill_manager}]", 0.5, "private"];
nextdefender setdir _nextdir;
nextdefender setpos _nextpos;
[nextdefender] spawn building_defence_ai;
} forEach _idxselected;
private _sentryMax = ceil ((3 + (floor (random 4))) * (sqrt (GRLIB_unitcap)));
_grpsentry = createGroup [GRLIB_side_enemy, true];
_base_sentry_pos = [(_base_position select 0) + ((_base_corners select 0) select 0), (_base_position select 1) + ((_base_corners select 0) select 1),0];
for [ {_idx=0},{_idx < _sentry},{_idx=_idx+1} ] do {
opfor_sentry createUnit [_base_sentry_pos, _grpsentry,"this addMPEventHandler [""MPKilled"", {_this spawn kill_manager}]", 0.5, "private"];
for [{_idx=0}, {_idx < _sentryMax}, {_idx=_idx+1}] do {
opfor_sentry createUnit [_base_sentry_pos, _grpsentry,"this addMPEventHandler [""MPKilled"", {_this spawn kill_manager}]", 0.5, "private"];
};
while {(count (waypoints _grpsentry)) != 0} do {deleteWaypoint ((waypoints _grpsentry) select 0);};
private _waypoint = [];
{
_waypoint = _grpsentry addWaypoint [[((_base_position select 0) + (_x select 0)), ((_base_position select 1) + (_x select 1)),0], 0];
_waypoint setWaypointType "MOVE";
_waypoint setWaypointSpeed "LIMITED";
_waypoint setWaypointBehaviour "SAFE";
_waypoint setWaypointCompletionRadius 5;
} foreach _base_corners;
_waypoint = _grpsentry addWaypoint [[((_base_position select 0) + (_x select 0)), ((_base_position select 1) + (_x select 1)),0], 0];
_waypoint setWaypointType "MOVE";
_waypoint setWaypointSpeed "LIMITED";
_waypoint setWaypointBehaviour "SAFE";
_waypoint setWaypointCompletionRadius 5;
} forEach _base_corners;
_waypoint = _grpsentry addWaypoint [[(_base_position select 0) + ((_base_corners select 0) select 0), (_base_position select 1) + ((_base_corners select 0) select 1),0], 0];
_waypoint = _grpsentry addWaypoint [[(_base_position select 0) + ((_base_corners select 0) select 0), (_base_position select 1) + ((_base_corners select 0) select 1), 0], 0];
_waypoint setWaypointType "CYCLE";
_objectives_alive = true;
secondary_objective_position = _base_position;
secondary_objective_position_marker = [(((secondary_objective_position select 0) + 800) - random 1600),(((secondary_objective_position select 1) + 800) - random 1600),0];
secondary_objective_position_marker = [(((secondary_objective_position select 0) + 800) - random 1600), (((secondary_objective_position select 1) + 800) - random 1600), 0];
publicVariable "secondary_objective_position_marker";
sleep 1;
GRLIB_secondary_in_progress = 0; publicVariable "GRLIB_secondary_in_progress";
[2] remoteExec ["remote_call_intel"];
waitUntil {
sleep 5;
( { alive _x } count _base_objectives ) <= 1
sleep 5;
(_base_objectives select {alive _x}) isEqualTo []
};
combat_readiness = round (combat_readiness * GRLIB_secondary_objective_impact);

View File

@ -16,4 +16,7 @@ _all_buildings_to_destroy = [];
{
_x setdamage 1;
sleep (random 3);
} foreach _all_buildings_to_destroy
} foreach _all_buildings_to_destroy;
KP_liberation_clearances deleteAt (KP_liberation_clearances findIf {(_x select 0) isEqualTo _fobposdestroy});
publicVariable "KP_liberation_clearances";

View File

@ -162,6 +162,8 @@ if ((!(_sector in blufor_sectors)) && (([getmarkerpos _sector, [_opforcount] cal
_building_ai_max = 0;
};
_vehtospawn = _vehtospawn select {_x isEqualType ""};
if (KP_liberation_sectorspawn_debug > 0) then {private _text = format ["[KP LIBERATION] [SECTORSPAWN] Sector %1 (%2) - manage_one_sector calculated -> _infsquad: %3 - _squad1: %4 - _squad2: %5 - _squad3: %6 - _squad4: %7 - _vehtospawn: %8 - _building_ai_max: %9", (markerText _sector), _sector, _infsquad, (count _squad1), (count _squad2), (count _squad3), (count _squad4), (count _vehtospawn), _building_ai_max];_text remoteExec ["diag_log",2];};
if (_building_ai_max > 0 && GRLIB_adaptive_opfor) then {

View File

@ -0,0 +1,24 @@
if (!isServer) exitWith {false};
params [
["_centerPos", [0, 0, 0], [[]], [3]],
["_radius", 0, [0]],
["_save", false, [false]]
];
if (save_is_loaded && {(KP_liberation_clearances findIf {(_x select 0) isEqualTo _centerPos}) != -1}) exitWith {false};
private _objects = nearestTerrainObjects [_centerPos, [], _radius, false, true];
{
_x hideObjectGlobal true;
_x enableSimulationGlobal false;
_x allowDamage false;
} forEach _objects;
if (_save) then {
KP_liberation_clearances pushBackUnique [_centerPos, _radius];
publicVariable "KP_liberation_clearances";
};
true

View File

@ -67,3 +67,4 @@ F_setLoadableViV = compileFinal preprocessFileLineNumbers "scripts\shared\functi
F_getNearestViVTransport = compileFinal preprocessFileLineNumbers "scripts\shared\functions\F_kp_getNearestViVTransport.sqf";
F_addObjectInit = compileFinal preprocessFileLineNumbers "scripts\shared\functions\F_kp_addObjectInit.sqf";
F_isRadio = compileFinal preprocessFileLineNumbers "scripts\shared\functions\F_kp_isRadio.sqf";
F_createClearance = compileFinal preprocessFileLineNumbers "scripts\shared\functions\F_kp_createClearance.sqf";

View File

@ -2288,18 +2288,6 @@
<Turkish>Bu FOB'yi yeniden paketlemek istediğinize emin misiniz?</Turkish>
<Portuguese>Você tem certeza que quer mobilizar esta FOB?</Portuguese>
</Key>
<Key ID="STR_FOB_REPACKAGE_HINT">
<Original>FOB repackaged.</Original>
<French>FOB repliée.</French>
<German>FOB eingepackt.</German>
<Spanish>FOB reempaquetada</Spanish>
<Russian>FOB свёрнута</Russian>
<Italian>FOB smontata.</Italian>
<Chinesesimp>前哨已收起。</Chinesesimp>
<Chinese>前線基地已收起。</Chinese>
<Turkish>FOB yeniden paketlendi.</Turkish>
<Portuguese>FOB mobilizada.</Portuguese>
</Key>
<Key ID="STR_HALO_PARAM">
<Original>HALO jump</Original>
<French>Saut HALO</French>
@ -6154,5 +6142,13 @@
<Turkish>(ESC'ye basıp çıkabilirsiniz.)</Turkish>
<Portuguese>(Aperte ESC para sair)</Portuguese>
</Key>
<Key ID="STR_CLEARANCE_ACTION">
<Original>-- Clear FOB area</Original>
<German>-- FOB Gebiet räumen</German>
</Key>
<Key ID="STR_FOB_REPACKAGE_HINT">
<Original>FOB repackaged.\nPossibly created clearance will be reverted upon server restart.</Original>
<German>FOB eingepackt.\nEventuelle Gebietsräumung wird zum Serverneustart rückgängig gemacht.</German>
</Key>
</Package>
</Project>

View File

@ -162,10 +162,13 @@ class Missions
## Changelog
### 0.96.5 (TBD due to Contacts Release)
* Added: [The Unsung Vietnam War Mod](https://steamcommunity.com/sharedfiles/filedetails/?id=943001311) blufor presets.
* Added: [The Unsung Vietnam War Mod](https://steamcommunity.com/sharedfiles/filedetails/?id=943001311) opfor presets.
* Added: [The Unsung Vietnam War Mod](https://steamcommunity.com/sharedfiles/filedetails/?id=943001311) resistance presets.
* Added: [The Unsung Vietnam War Mod](https://steamcommunity.com/sharedfiles/filedetails/?id=943001311) civilian presets.
* Added: Contact DLC LDF preset.
* Added: Contact DLC transport configs.
* Added: [The Unsung Vietnam War Mod](https://steamcommunity.com/sharedfiles/filedetails/?id=943001311) blufor preset.
* Added: [The Unsung Vietnam War Mod](https://steamcommunity.com/sharedfiles/filedetails/?id=943001311) opfor preset.
* Added: [The Unsung Vietnam War Mod](https://steamcommunity.com/sharedfiles/filedetails/?id=943001311) resistance preset. Thanks to [Bunnyhopps](https://github.com/Bunnyhopps147)
* Added: [The Unsung Vietnam War Mod](https://steamcommunity.com/sharedfiles/filedetails/?id=943001311) civilian preset.
* Added: [The Unsung Vietnam War Mod](https://steamcommunity.com/sharedfiles/filedetails/?id=943001311) arsenal preset. Thanks to [Bunnyhopps](https://github.com/Bunnyhopps147)
* Added: [The Unsung Vietnam War Mod](https://steamcommunity.com/sharedfiles/filedetails/?id=943001311) transport configs.
* Added: [Swedish Forces Pack](https://steamcommunity.com/sharedfiles/filedetails/?id=826911897) arsenal preset. Thanks to [Dahlgren](https://github.com/Dahlgren)
* Added: [Swedish Forces Pack](https://steamcommunity.com/sharedfiles/filedetails/?id=826911897) Desert blufor preset. Thanks to [Dahlgren](https://github.com/Dahlgren)
@ -175,13 +178,21 @@ class Missions
* Added: Several CUP resistance presets. Thanks to [Eogos](https://github.com/Eogos)
* Added: Several CUP civilian presets. Thanks to [Eogos](https://github.com/Eogos)
* Added: Several CUP transport configs. Thanks to [Eogos](https://github.com/Eogos)
* Added: Statistic values for destroyed civilian buildings and vehicles
* Added: Statistic values for destroyed civilian buildings and vehicles.
* Added: Statistic values for total and friendly resistance kills.
* Added: Statistic values for spent/produced resources.
* Added: Statistics will be posted additionally in the server log after winning the campaign.
* Added: Encore Anti Air static to sensible presets.
* Added: Additional victory conditions, selectable in the mission parameters.
* Added: BI garbage collection via description.ext file.
* Added: Transport configs for the civil transporters (which came with Laws of War).
* Added: Livonia basefile.
* Added: Livonia building ignore list.
* Added: [Panthera](https://steamcommunity.com/sharedfiles/filedetails/?id=708278910) basefile. Thanks to [Eogos](https://github.com/Eogos)
* Added: [Panthera](https://steamcommunity.com/sharedfiles/filedetails/?id=708278910) building ignore list. Thanks to [Eogos](https://github.com/Eogos)
* Added: Song Bin Tanh basefile.
* Added: Song Bin Tanh building ignore list.
* Added: "Create Clearance" Action at FOB for Commander or logged in Admin. Clears all terrain objects (no built objects) in FOB radius.
* Removed: Vanilla player score saving.
* Removed: Old garbage collection script, as there are now engine solutions available.
* Tweaked: Changed default recycle building from carservice building to tanks repair depot building.
@ -195,6 +206,7 @@ class Missions
* Tweaked: Player lead squads are now also saved near FOBs. (but still needs to be reassigned via zeus after load, of course)
* Tweaked: Weather is now only handled by the server.
* Tweaked: Gear check after leaving the arsenal or load a loadout improved to not strip you completely. Thanks to [Zharf](https://github.com/zharf)
* Tweaked: Build tool now also adds the correct map name to the mission name, like in the release files.
* Fixed: Intel value could get corrupted if leaving the secondary dialog directly after starting a mission.
* Fixed: "All is red" for first player after a server restart. (just a visual bug, doesn't affect gameplay)

View File

@ -29,6 +29,7 @@
"sourceFolder": "kp_liberation.Chernarus_Winter",
"missionName": "kp_liberation",
"map": "Chernarus_Winter",
"mapDisplay": "Chernarus Winter",
"configFile": "kp_liberation_config.sqf",
"variables": {
"KP_liberation_preset_blufor": 6,
@ -38,10 +39,25 @@
"KP_liberation_arsenal": 0
}
},
{
"sourceFolder": "kp_liberation.Enoch",
"missionName": "kp_liberation",
"map": "Enoch",
"mapDisplay": "Livonia",
"configFile": "kp_liberation_config.sqf",
"variables": {
"KP_liberation_preset_blufor": 27,
"KP_liberation_preset_opfor": 1,
"KP_liberation_preset_resistance": 0,
"KP_liberation_preset_civilians": 0,
"KP_liberation_arsenal": 0
}
},
{
"sourceFolder": "kp_liberation.gm_weferlingen_summer",
"missionName": "kp_liberation",
"map": "gm_weferlingen_summer",
"mapDisplay": "Weferlingen Summer",
"configFile": "kp_liberation_config.sqf",
"variables": {
"KP_liberation_preset_blufor": 9,
@ -55,6 +71,7 @@
"sourceFolder": "kp_liberation.gm_weferlingen_winter",
"missionName": "kp_liberation",
"map": "gm_weferlingen_winter",
"mapDisplay": "Weferlingen Winter",
"configFile": "kp_liberation_config.sqf",
"variables": {
"KP_liberation_preset_blufor": 10,
@ -68,6 +85,7 @@
"sourceFolder": "kp_liberation.lythium",
"missionName": "kp_liberation",
"map": "lythium",
"mapDisplay": "Lythium",
"configFile": "kp_liberation_config.sqf",
"variables": {
"KP_liberation_preset_blufor": 7,
@ -90,10 +108,25 @@
"KP_liberation_arsenal": 0
}
},
{
"sourceFolder": "kp_liberation.panthera3",
"missionName": "kp_liberation",
"map": "panthera3",
"mapDisplay": "Panthera",
"configFile": "kp_liberation_config.sqf",
"variables": {
"KP_liberation_preset_blufor": 17,
"KP_liberation_preset_opfor": 17,
"KP_liberation_preset_resistance": 8,
"KP_liberation_preset_civilians": 7,
"KP_liberation_arsenal": 0
}
},
{
"sourceFolder": "kp_liberation.pja310",
"missionName": "kp_liberation",
"map": "pja310",
"mapDisplay": "Al Rayak",
"configFile": "kp_liberation_config.sqf",
"variables": {
"KP_liberation_preset_blufor": 6,
@ -107,6 +140,7 @@
"sourceFolder": "kp_liberation.Sara",
"missionName": "kp_liberation",
"map": "Sara",
"mapDisplay": "Sahrani",
"configFile": "kp_liberation_config.sqf",
"variables": {
"KP_liberation_preset_blufor": 6,
@ -116,6 +150,19 @@
"KP_liberation_arsenal": 0
}
},
{
"sourceFolder": "kp_liberation.song_bin_tanh",
"missionName": "kp_liberation",
"map": "song_bin_tanh",
"configFile": "kp_liberation_config.sqf",
"variables": {
"KP_liberation_preset_blufor": 15,
"KP_liberation_preset_opfor": 12,
"KP_liberation_preset_resistance": 6,
"KP_liberation_preset_civilians": 5,
"KP_liberation_arsenal": 10
}
},
{
"sourceFolder": "kp_liberation.Takistan",
"missionName": "kp_liberation",
@ -146,6 +193,7 @@
"sourceFolder": "kp_liberation.xcam_taunus",
"missionName": "kp_liberation",
"map": "xcam_taunus",
"mapDisplay": "Taunus",
"configFile": "kp_liberation_config.sqf",
"variables": {
"KP_liberation_preset_blufor": 4,
@ -159,6 +207,7 @@
"sourceFolder": "kp_liberation.gm_weferlingen_summer",
"missionName": "kp_liberation_east",
"map": "gm_weferlingen_summer",
"mapDisplay": "Weferlingen Summer",
"configFile": "kp_liberation_config.sqf",
"variables": {
"KP_liberation_preset_blufor": 11,
@ -172,6 +221,7 @@
"sourceFolder": "kp_liberation.gm_weferlingen_winter",
"missionName": "kp_liberation_east",
"map": "gm_weferlingen_winter",
"mapDisplay": "Weferlingen Winter",
"configFile": "kp_liberation_config.sqf",
"variables": {
"KP_liberation_preset_blufor": 12,

View File

@ -1,6 +1,7 @@
import * as gulp from "gulp";
import * as gulpReplace from "gulp-replace";
import * as gulpPbo from "gulp-armapbo";
import * as gulpModify from "gulp-modify-file";
import * as gulpZip from "gulp-zip";
import * as vinylPaths from "vinyl-paths";
import * as del from "del";
@ -13,7 +14,7 @@ import { Preset, FolderStructureInfo } from "./src";
const presets: Preset[] = require('./_presets.json');
/**
/**
* Mission folders configuration
*/
const paths: FolderStructureInfo = {
@ -39,32 +40,49 @@ for (let preset of presets) {
gulp.task('mission_' + taskName, gulp.series(
/** Copy mission framework to output dir */
() => {
function frameworkCopy () {
return gulp.src(mission.getFrameworkPath().concat('/**/*'))
.pipe(gulp.dest(mission.getOutputDir()));
},
/** Copy mission.sqm to output dir */
() => {
function missionSqmCopy () {
return gulp.src(mission.getMissionSqmPath())
.pipe(gulp.dest(mission.getOutputDir()));
},
/** Replace variables values in configuration file */
() => {
function configReplace () {
let src = gulp.src(mission.getMissionConfigFilePath());
const variables = Object.getOwnPropertyNames(preset.variables);
for (let variable of variables) {
// https://regex101.com/r/YknC8r/1
const regex = new RegExp(`(${variable} += +)(?:\\d+|".+")`, 'ig');
const value = JSON.stringify(preset.variables[variable]);
// replace variable value
src = src.pipe(gulpReplace(regex, `$1${value}`));
}
return src.pipe(gulp.dest(mission.getOutputDir()));
},
/** Replace values in stringtable */
function stringTableReplace () {
// I know, replacing XML with regex... :|
// https://regex101.com/r/TSfish/2
const versionRegex = /<Key ID="STR_MISSION_VERSION">\s*<Original>(?<version>.+)<\/Original>/;
const nameRegex = /(<Key ID="STR_MISSION_TITLE">\s*<Original>)(?<name>.+)(<\/Original>)/;
return gulp.src(mission.getFrameworkPath().concat('/stringtable.xml'))
.pipe(gulpModify((content: string) => {
const version: string = content.match(versionRegex)['groups']['version'];
return content.replace(nameRegex, `$1CTI 34 KP Liberation ${preset.mapDisplay || preset.map} ${version}$3`);
}))
.pipe(gulp.dest(mission.getOutputDir(), { overwrite: true, }))
;
}
));

3497
_tools/package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -4,19 +4,20 @@
"node": ">=7"
},
"dependencies": {
"@types/del": "^3.0.0",
"@types/gulp": "^4.0.5",
"@types/del": "^3.0.1",
"@types/gulp": "^4.0.6",
"@types/gulp-replace": "0.0.31",
"@types/gulp-zip": "^4.0.0",
"@types/vinyl-paths": "0.0.31",
"del": "^3.0.0",
"gulp": "^4.0.0",
"gulp": "^4.0.2",
"gulp-armapbo": "^1.1.3",
"gulp-modify-file": "^1.0.1",
"gulp-replace": "^0.6.1",
"gulp-zip": "^4.1.0",
"gulp-zip": "^4.2.0",
"smart-zip": "0.0.9",
"ts-node": "^4.1.0",
"typescript": "^2.7.1",
"typescript": "^2.9.2",
"vinyl-paths": "^2.1.0"
},
"scripts": {

View File

@ -1,29 +1,34 @@
export interface Preset {
/**
/**
* Path to folder with mission.sqm relative to "missionsFolder".
* If mission.sqm is in root of "missionsFolder" should be empty string.
*
*
* @see FolderStructureInfo.missionsFolder
*/
readonly sourceFolder: string;
/**
* Path to file with mission configuration.
/**
* Path to file with mission configuration.
* Replacement of variables will be applied here.
*/
readonly configFile: string;
/**
/**
* Name of mission (part before mapname)
*/
readonly missionName: string;
/**
/**
* Map name
*/
readonly map: string;
/**
/**
* Display name for map
*/
readonly mapDisplay: string | undefined;
/**
* key=>val of values to replace in config file
* @see {VariablesReplacements}
*/
@ -36,21 +41,21 @@ export interface VariablesReplacements {
}
export interface FolderStructureInfo {
/**
/**
* Folder of folders with mission.sqm.
* Value of "sourceFolder" from Preset will be appended to this path.
*
*
* @see {Preset}
*/
readonly missionsFolder: string;
/**
/**
* Path to folder with mission framework files.
*/
readonly frameworkFolder: string;
/**
* Directory containing built missions
/**
* Directory containing built missions
*/
readonly workDir: string;
}
}