diff --git a/mods/Anomaly Ballistics Overhaul/gamedata/configs/ammo/ammo_.ltx b/mods/Anomaly Ballistics Overhaul/gamedata/configs/ammo/ammo_.ltx
deleted file mode 100644
index f7a547f9..00000000
--- a/mods/Anomaly Ballistics Overhaul/gamedata/configs/ammo/ammo_.ltx
+++ /dev/null
@@ -1,5 +0,0 @@
-[ammo_base]
-; this is the handler function
-handler = ballistic_handlers.default
-; name and desc can also be provided if you want to override without modifying weapon_ammo
-; any other fields you can define you can put in here if you want to refer to them
\ No newline at end of file
diff --git a/mods/Anomaly Ballistics Overhaul/gamedata/configs/ammo/ammo_bas.ltx b/mods/Anomaly Ballistics Overhaul/gamedata/configs/ammo/ammo_bas.ltx
deleted file mode 100644
index ddc73bcb..00000000
--- a/mods/Anomaly Ballistics Overhaul/gamedata/configs/ammo/ammo_bas.ltx
+++ /dev/null
@@ -1,53 +0,0 @@
-[ammo_23x75_shrapnel]:ammo_base
-handler = arti_handlers.buckshot_damage
-name = ammo_new_23x75_shrapnel
-k_hit = 1
-k_ap = 0.12
-k_imp = 0.7
-impair = 1
-cost = 2100
-
-[ammo_23x75_barrikada]:ammo_base
-handler = arti_handlers.slug
-name = ammo_new_23x75_barrikada
-k_hit = 6.9
-k_hp = 3
-k_ap = 0.195
-k_imp = 0.99
-impair = 1.5
-cost = 3500
-
-[ammo_20x70_buck]:ammo_base
-handler = arti_handlers.buckshot_damage
-name = ammo_new_20x70_buck
-k_hit = 0.3
-k_ap = 0.02
-k_imp = 0.4
-impair = 1
-cost = 450
-
-[ammo_23_eco]:ammo_base ; poisoncloud slug
-handler = bas_handler.corrosive_cloud
-name = ammo_new_23_eco
-k_hit = 1
-k_ap = 0.01
-k_imp = 0.1
-impair = 1
-cost = 5500
-special = toxic
-
-[ammo_9x21_sp10]:ammo_base
-name = ammo_new_9x21_sp10
-k_hit = 1
-k_ap = 0.205
-k_imp = 0.42
-impair = 1
-cost = 3196
-
-[ammo_338_federal]:ammo_base
-name = ammo_new_338_federal
-k_hit = 1
-k_ap = 0.305
-k_imp = 0.88
-impair = 1
-cost = 4100
diff --git a/mods/Anomaly Ballistics Overhaul/gamedata/configs/ammo/ammo_grenades.ltx b/mods/Anomaly Ballistics Overhaul/gamedata/configs/ammo/ammo_grenades.ltx
deleted file mode 100644
index a6bbc8a8..00000000
--- a/mods/Anomaly Ballistics Overhaul/gamedata/configs/ammo/ammo_grenades.ltx
+++ /dev/null
@@ -1,39 +0,0 @@
-[ammo_m209]:ammo_base
-name = ammo_new_m209
-handler = bind_grenade.explode
-radius = 3.5
-cost = 2264
-bomb_type = wpn_real_m209
-
-[ammo_m209_bad]:ammo_m209
-name = ammo_new_m209_fire
-handler = bomb_handlers.ignite
-k_hit = 0.2
-radius = 8
-cost = 4069
-dg_ammo = ammo_m209
-dg_chance = 0.4
-special = firebomb
-
-[ammo_vog-25]:ammo_base
-name = ammo_new_vog25
-handler = bind_grenade.explode
-radius = 2.5
-cost = 2180
-bomb_type = wpn_real_vog25
-
-[ammo_vog-25_bad]:ammo_vog-25
-name = ammo_new_vog25_cluster
-handler = bomb_handlers.cluster_bomb
-k_hit = 0.7
-cost = 4345
-radius = 3
-bomb_type = m209_sub
-bomb_count = 7
-dg_ammo = ammo_vog-25
-dg_chance = 0.4
-special = cluster
-
-; [ammo_vog-25_verybad]:ammo_vog-25
-; name = ammo_new_vog25_berserk
-; handler = bomb_handlers.berserk
\ No newline at end of file
diff --git a/mods/Anomaly Ballistics Overhaul/gamedata/configs/ammo/ammo_other.ltx b/mods/Anomaly Ballistics Overhaul/gamedata/configs/ammo/ammo_other.ltx
deleted file mode 100644
index 79669012..00000000
--- a/mods/Anomaly Ballistics Overhaul/gamedata/configs/ammo/ammo_other.ltx
+++ /dev/null
@@ -1,31 +0,0 @@
-[ammo_4.6x30_fmj]:ammo_base ; fmj
-name = ammo_new_4.6x30_fmj
-k_hit = 1
-k_ap = 0.135
-k_imp = 0.3
-cost = 1600
-[ammo_4.6x30_fmj_bad]:ammo_base ; dm111
-name = ammo_new_4.6x30_ap
-k_hit = 0.95
-k_ap = 0.175
-cost = 2200
-
-[ammo_50_bmg]:ammo_base ; m2 balls
-name = ammo_new_50_bmg
-k_hit = 1.6
-k_ap = 0.335
-k_imp = 0.9
-cost = 4500
-[ammo_50_bmg_bad]:ammo_base ; m2 ap
-name = ammo_new_50_ap
-k_hit = 1.4
-k_ap = 0.399
-cost = 7500
-
-
-[ammo_12x76_bull]:ammo_base ; bull
-handler = arti_handlers.slug
-name = ammo_new_12x76_bull
-k_hit = 3
-k_ap = 0.25
-cost = 6000
\ No newline at end of file
diff --git a/mods/Anomaly Ballistics Overhaul/gamedata/configs/ammo/ammo_pistol.ltx b/mods/Anomaly Ballistics Overhaul/gamedata/configs/ammo/ammo_pistol.ltx
deleted file mode 100644
index bac4ccff..00000000
--- a/mods/Anomaly Ballistics Overhaul/gamedata/configs/ammo/ammo_pistol.ltx
+++ /dev/null
@@ -1,290 +0,0 @@
-; 9x18
-[ammo_9x18_fmj]:ammo_base ; surplus PST
-name = ammo_new_9x18_fmj
-k_hit = 1
-k_ap = 0.06
-k_imp = 0.3
-cost = 450
-
-[ammo_9x18_fmj_bad]:ammo_9x18_fmj; +P
-name = ammo_new_9x18_plus
-k_hit = 1.3
-k_ap = 0.0625
-k_imp = 0.4
-impair = 1.25
-cost = 900
-recoil = 1.2
-dg_ammo = ammo_9x18_fmj
-dg_chance = 0.3
-
-[ammo_9x18_pmm]:ammo_base ; HP hunting
-name = ammo_new_9x18_hp
-k_hit = 1
-k_ap = 0.049
-k_imp = 0.3
-k_hp = 1.5
-cost = 550
-special = hp
-
-[ammo_9x18_pmm_bad]:ammo_9x18_pmm; SP7 JHP
-name = ammo_new_9x18_sp7
-k_hit = 1.05
-k_ap = 0.069
-k_imp = 0.4
-k_hp = 1.65
-varma = 1.15
-impair = 1.25
-cost = 1216
-special = varma
-dg_ammo = ammo_9x18_pmm
-dg_chance = 0.3
-
-[ammo_9x18_ap]:ammo_base ; 7N15 AP
-name = ammo_new_9x18_ap
-k_hit = 0.95
-k_ap = 0.135
-k_imp = 0.3
-k_pen = 0.3
-cost = 840
-dg_ammo = ammo_9x18_fmj
-dg_chance = 0.5
-
-[ammo_9x18_ap_bad]:ammo_9x18_ap; 7N16 PMM, modern AP
-name = ammo_new_9x18_7n25
-k_hit = 0.8
-k_ap = 0.2
-k_pen = 0.4
-impair = 1.25
-cost = 1450
-recoil = 1.05
-dg_ammo = ammo_9x18_ap
-dg_chance = 0.6
-special = ambush
-
-; 9x19
-[ammo_9x19_fmj]:ammo_base ; standard FMJ
-name = ammo_new_9x19_fmj
-k_hit = 1
-k_ap = 0.095
-k_imp = 0.35
-cost = 600
-
-[ammo_9x19_fmj_bad]:ammo_9x19_fmj; +P+
-name = ammo_new_9x19_plus
-k_hit = 1.2
-k_ap = 0.11
-k_imp = 0.5
-impair = 1.25
-cost = 1125
-recoil = 1.3
-dg_ammo = ammo_9x19_fmj
-dg_chance = 0.3
-
-[ammo_9x19_pbp]:ammo_base ; JHP
-name = ammo_new_9x19_pbp
-k_hit = 1
-k_ap = 0.055
-k_imp = 0.35
-k_hp = 1.6
-cost = 750
-special = hp
-
-[ammo_9x19_pbp_bad]:ammo_9x19_pbp; JSP +P
-handler = arti_handlers.disruptor
-name = ammo_new_9x19_pbps
-k_hit = 1.2
-k_ap = 0.099
-k_imp = 0.5
-k_hp = 1.1
-flinch = 1
-impair = 1.1
-cost = 1759
-recoil = 1.3
-special = flinch
-dg_ammo = ammo_9x19_pbp
-dg_chance = 0.35
-
-[ammo_9x19_ap]:ammo_base ; 7N21 overpressure
-name = ammo_new_9x19_ap
-k_hit = 0.9
-k_pen = 0.4
-k_ap = 0.195
-k_imp = 0.4
-cost = 1350
-dg_ammo = ammo_9x19_fmj
-dg_chance = 0.6
-
-[ammo_9x19_ap_bad]:ammo_9x19_ap ; 7N31 overpressure AP
-name = ammo_new_9x19_7n31
-k_hit = 0.85
-k_ap = 0.225
-k_pen = 0.5
-k_imp = 0.4
-impair = 1.25
-cost = 2250
-recoil = 1.05
-dg_ammo = ammo_9x19_ap
-dg_chance = 0.7
-
-
-[ammo_11.43x23_fmj]:ammo_base ; FMJ
-handler = arti_handlers.head_disruptor
-name = ammo_new_11.43x23_fmj
-k_hit = 1.3
-k_ap = 0.09
-k_imp = 0.45
-cost = 800
-special = headstun
-
-[ammo_11.43x23_fmj_bad]:ammo_11.43x23_fmj; +P
-name = ammo_new_11.43x23_fmjs
-k_hit = 1.1
-k_ap = 0.175
-k_imp = 0.5
-impair = 1.15
-cost = 1300
-recoil = 1.15
-dg_ammo = ammo_11.43x23_fmj
-dg_chance = 0.6
-
-[ammo_11.43x23_hydro]:ammo_base ; HP
-handler = arti_handlers.varmageddon
-name = ammo_new_11.43x23_hp
-k_hit = 1.2
-k_ap = 0.069
-k_imp = 0.45
-k_hp = 1.75
-flinch_head = 1
-cost = 1000
-special = hp
-
-[ammo_11.43x23_hydro_bad]:ammo_11.43x23_hydro; RIP
-handler = arti_handlers.rip
-name = ammo_new_11.43x23_hydro
-k_hit = 0.75
-k_ap = 0.069
-k_imp = 0.45
-k_hp = 3
-impair = 1.3
-cost = 1669
-special = rip
-dg_ammo = ammo_11.43x23_hydro
-dg_chance = 0.7
-
-
-[ammo_357_hp_mag]:ammo_base ; standard HP
-handler = arti_handlers.head_disruptor
-name = ammo_new_357_hp
-k_hit = 1.35
-k_hp = 1.6
-k_imp = 0.6
-k_ap = 0.125
-cost = 1430
-special = hp
-
-[ammo_357_hp_mag_bad]:ammo_357_hp_mag; handload JFP
-handler = arti_handlers.headshot
-name = ammo_new_357_jfp
-k_hit = 1.4
-k_ap = 0.199
-k_imp = 0.6
-k_hp = 1.1
-cost = 2235
-recoil = 1.15
-special = head
-dg_ammo = ammo_357_hp_mag
-dg_chance = 0.4
-
-
-[ammo_7.62x25_p]:ammo_base ; p
-name = ammo_new_7.62x25_p
-k_hit = 1
-k_imp = 0.4
-k_ap = 0.14
-cost = 650
-
-[ammo_7.62x25_p_bad]:ammo_7.62x25_p; pst
-name = ammo_new_7.62x25_ps
-k_hit = 1
-k_ap = 0.165
-cost = 1120
-recoil = 1.05
-dg_ammo = ammo_7.62x25_p
-dg_chance = 0.4
-
-[ammo_7.62x25_ps]:ammo_base ; hp
-name = ammo_new_7.62x25_hp
-k_hit = 1
-k_ap = 0.075
-k_imp = 0.4
-k_hp = 1.5
-cost = 940
-special = hp
-
-[ammo_7.62x25_ps_bad]:ammo_7.62x25_ps; acid
-handler = arti_handlers.acid_damage
-i_handler = ballistic_handlers.particle
-i_particle = artefact\\effects\\af_acidic_idle_color
-name = ammo_new_7.62x25_cor
-k_hit = 1
-k_ap = 0.149
-k_hp = 1
-impair = 1.5
-cost = 2700
-special = acid
-dg_ammo = ammo_7.62x25_ps
-dg_chance = 0.7
-
-
-[ammo_5.7x28_ss190]:ammo_base ; cheapshit
-name = ammo_new_5.7x28_fmj
-k_hit = 0.85
-k_ap = 0.15
-k_imp = 0.3
-k_pen = 0.5
-cost = 740
-
-[ammo_5.7x28_ss190_bad]:ammo_5.7x28_ss190; ss190
-name = ammo_new_5.7x28_ss190
-k_hit = 0.75
-k_ap = 0.225
-k_pen = 0.7
-cost = 2200
-dg_ammo = ammo_5.7x28_ss190
-dg_chance = 0.6
-
-
-[ammo_5.7x28_ss195]:ammo_base ; ss195 hp
-name = ammo_new_5.7x28_ss195
-k_hit = 1
-k_ap = 0.1
-k_imp = 0.3
-k_hp = 1.4
-cost = 1275
-special = hp
-
-[ammo_5.7x28_ss195_bad]:ammo_5.7x28_ss195 ; chaos
-handler = arti_handlers.chaos_damage
-name = ammo_new_5.7x28_chaos
-k_hit = 0.8
-k_ap = 0.175
-k_hp = 1
-k_pen = 0.5
-cost = 3125
-special = chaos
-dg_ammo = ammo_5.7x28_ss190
-dg_chance = 0.7
-
-[ammo_9x18_fmj_verybad]:ammo_9x18_fmj_bad
-[ammo_9x18_pmm_verybad]:ammo_9x18_pmm_bad
-[ammo_9x18_ap_verybad]:ammo_9x18_ap_bad
-[ammo_9x19_fmj_verybad]:ammo_9x19_fmj_bad
-[ammo_9x19_pbp_verybad]:ammo_9x19_pbp_bad
-[ammo_9x19_ap_verybad]:ammo_9x19_ap_bad
-[ammo_5.7x28_ss190_verybad]:ammo_5.7x28_ss190_bad
-[ammo_5.7x28_ss195_verybad]:ammo_5.7x28_ss195_bad
-[ammo_7.62x25_p_verybad]:ammo_7.62x25_p_bad
-[ammo_7.62x25_ps_verybad]:ammo_7.62x25_ps_bad
-[ammo_11.43x23_fmj_verybad]:ammo_11.43x23_fmj_bad
-[ammo_11.43x23_hydro_verybad]:ammo_11.43x23_hydro_bad
-[ammo_357_hp_mag_verybad]:ammo_357_hp_mag_bad
\ No newline at end of file
diff --git a/mods/Anomaly Ballistics Overhaul/gamedata/configs/ammo/ammo_rifle.ltx b/mods/Anomaly Ballistics Overhaul/gamedata/configs/ammo/ammo_rifle.ltx
deleted file mode 100644
index 451010aa..00000000
--- a/mods/Anomaly Ballistics Overhaul/gamedata/configs/ammo/ammo_rifle.ltx
+++ /dev/null
@@ -1,227 +0,0 @@
-[ammo_5.45x39_fmj]:ammo_base ; 7N6
-name = ammo_new_5.45x39_fmj
-k_hit = 1
-hit_scale = 0.85
-k_ap = 0.175
-k_pen = 0.2
-k_imp = 0.6
-impair = 0.95
-cost = 1250
-
-[ammo_5.45x39_fmj_bad]:ammo_5.45x39_fmj ; 7N10
-handler = arti_handlers.tracer
-name = ammo_new_5.45x39_fmjs
-k_hit = 1
-k_ap = 0.15
-cost = 1950
-dg_ammo = ammo_5.45x39_fmj
-dg_chance = 0.6
-special = tracer
-
-
-[ammo_5.45x39_ep]:ammo_base ; hunting HP
-name = ammo_new_5.45x39_hp
-k_hit = 1.1
-hit_scale = 0.85
-k_ap = 0.12
-k_imp = 0.6
-k_hp = 1.4
-impair = 1
-cost = 1550
-special = hp
-
-[ammo_5.45x39_ep_bad]:ammo_5.45x39_ep ; soft point
-handler = arti_handlers.disruptor
-name = ammo_new_5.45x39_sp
-k_hit = 1.1
-k_ap = 0.15
-k_imp = 0.65
-k_hp = 1.1
-impair = 1.1
-special = flinch
-cost = 1750
-dg_ammo = ammo_5.45x39_ep
-dg_chance = 0.4
-
-[ammo_5.45x39_ap]:ammo_base ; 7N10 EP
-name = ammo_new_5.45x39_ap
-k_hit = 0.93
-hit_scale = 0.85
-k_ap = 0.245
-k_imp = 0.6
-k_pen = 0.5
-impair = 1.1
-recoil = 1.05
-cost = 2210
-dg_ammo = ammo_5.45x39_fmj
-dg_chance = 0.5
-
-[ammo_5.45x39_ap_bad]:ammo_5.45x39_ap ; 7N22 AP
-name = ammo_new_5.45x39_aps
-k_hit = 0.85
-k_ap = 0.295
-k_pen = 0.6
-impair = 1.5
-cost = 2650
-recoil = 1.2
-dg_ammo = ammo_5.45x39_ap
-dg_chance = 0.75
-
-
-[ammo_5.56x45_fmj]:ammo_base ; M193
-handler = arti_handlers.fragment
-name = ammo_new_5.56x45_fmj
-k_hit = 1
-hit_scale = 0.85
-k_ap = 0.155
-k_imp = 0.6
-cost = 1500
-frag = 1.5
-special = frag
-
-[ammo_5.56x45_fmj_bad]:ammo_5.56x45_fmj ; Tracer
-handler = arti_handlers.tracer
-name = ammo_new_5.56x45_fmjs
-k_hit = 1
-k_ap = 0.15
-cost = 2000
-dg_ammo = ammo_5.56x45_fmj
-dg_chance = 0.6
-special = tracer
-
-[ammo_5.56x45_ss190]:ammo_base ; civ hunting
-name = ammo_new_5.56x45_hp
-k_hit = 1
-hit_scale = 0.85
-k_ap = 0.105
-k_imp = 0.6
-k_hp = 1.5
-cost = 1600
-
-[ammo_5.56x45_ss190_bad]:ammo_5.56x45_ss190 ; varmageddon
-handler = arti_handlers.varmageddon
-name = ammo_new_5.56x45_varma
-k_hit = 1.05
-k_ap = 0.125
-k_hp = 1.4
-varma = 1.2
-impair = 1.1
-cost = 1900
-recoil = 1.05
-special = varma
-dg_ammo = ammo_5.56x45_ss190
-dg_chance = 0.6
-
-
-[ammo_5.56x45_ap]:ammo_base ; M855
-name = ammo_new_5.56x45_ss190
-k_hit = 0.75
-hit_scale = 0.85
-k_ap = 0.255
-k_imp = 0.6
-k_pen = 0.6
-cost = 1800
-recoil = 1.05
-
-[ammo_5.56x45_ap_bad]:ammo_5.56x45_ap ; M855A1
-name = ammo_new_5.56x45_ap
-k_hit = 1
-k_ap = 0.265
-k_pen = 0.2
-cost = 2500
-recoil = 1.05
-dg_ammo = ammo_5.56x45_ap
-dg_chance = 0.75
-
-
-[ammo_7.62x39_fmj]:ammo_base ; 57-N-231
-name = ammo_new_7.62x39_fmj
-k_hit = 1.15
-k_ap = 0.185
-k_imp = 0.7
-cost = 1530
-
-[ammo_7.62x39_fmj_bad]:ammo_7.62x39_fmj ; M67
-name = ammo_new_7.62x39_fmjs
-k_hit = 1.2
-k_ap = 0.215
-cost = 1730
-impair = 0.9
-dg_ammo = ammo_7.62x39_fmj
-dg_chance = 0.4
-
-[ammo_7.62x39_ap]:ammo_base ; AP
-name = ammo_new_7.62x39_ap
-k_hit = 1.1
-k_imp = 0.7
-impair = 1.15
-k_ap = 0.255
-recoil = 1.05
-cost = 2530
-dg_ammo = ammo_7.62x39_fmj
-dg_chance = 0.6
-
-[ammo_7.62x39_ap_bad]:ammo_7.62x39_ap ; API
-handler = arti_handlers.fire_damage
-name = ammo_new_7.62x39_api
-k_hit = 1.2
-k_ap = 0.275
-ignite = 0.6
-impair = 2
-cost = 3330
-recoil = 1.05
-special = fire
-dg_ammo = ammo_7.62x39_ap
-dg_chance = 0.6
-
-
-[ammo_9x39_pab9]:ammo_base ; SP5
-name = ammo_new_9x39_sp5
-k_hit = 1.3
-k_ap = 0.205
-k_imp = 0.7
-impair = 1
-cost = 2500
-
-[ammo_9x39_pab9_bad]:ammo_9x39_pab9 ; SPP
-handler = arti_handlers.ambush
-name = ammo_new_9x39_spp
-k_hit = 1.3
-k_ap = 0.245
-cost = 3300
-dg_ammo = ammo_9x39_pab9
-dg_chance = 0.5
-special = ambush
-
-[ammo_9x39_ap]:ammo_base ; PAB9, severe dura loss
-name = ammo_new_9x39_pab9
-k_hit = 1.3
-k_ap = 0.28
-k_imp = 0.7
-impair = 2.5
-cost = 1900
-recoil = 1.05
-special = impair
-
-[ammo_9x39_ap_bad]:ammo_9x39_ap ; SP6
-handler = arti_handlers.ambush
-k_hit = 1.2
-name = ammo_new_9x39_ap
-k_ap = 0.275
-impair = 1
-cost = 3500
-dg_ammo = ammo_9x39_ap
-dg_chance = 0.8
-special = ambush
-
-
-[ammo_5.45x39_fmj_verybad]:ammo_5.45x39_fmj_bad
-[ammo_5.45x39_ep_verybad]:ammo_5.45x39_ep_bad
-[ammo_5.45x39_ap_verybad]:ammo_5.45x39_ap_bad
-[ammo_5.56x45_fmj_verybad]:ammo_5.56x45_fmj_bad
-[ammo_5.56x45_ss190_verybad]:ammo_5.56x45_ss190_bad
-[ammo_5.56x45_ap_verybad]:ammo_5.56x45_ap_bad
-[ammo_9x39_pab9_verybad]:ammo_9x39_pab9_bad
-[ammo_9x39_ap_verybad]:ammo_9x39_ap_bad
-[ammo_7.62x39_fmj_verybad]:ammo_7.62x39_fmj_bad
-[ammo_7.62x39_ap_verybad]:ammo_7.62x39_ap_bad
\ No newline at end of file
diff --git a/mods/Anomaly Ballistics Overhaul/gamedata/configs/ammo/ammo_shotgun.ltx b/mods/Anomaly Ballistics Overhaul/gamedata/configs/ammo/ammo_shotgun.ltx
deleted file mode 100644
index 032e6a56..00000000
--- a/mods/Anomaly Ballistics Overhaul/gamedata/configs/ammo/ammo_shotgun.ltx
+++ /dev/null
@@ -1,69 +0,0 @@
-[ammo_12x70_buck]:ammo_base ; ordinary buckshot
-handler = arti_handlers.buckshot_damage
-name = ammo_new_12x70_buck
-k_hit = 0.35
-k_ap = 0.025
-k_imp = 0.5
-impair = 1
-cost = 800
-
-[ammo_12x70_buck_bad]:ammo_12x70_buck ; magnum buckshot
-name = ammo_new_12x70_magnum
-k_hit = 0.42
-k_ap = 0.05
-k_imp = 0.6
-impair = 1.3
-cost = 1300
-recoil = 1.5
-dg_ammo = ammo_12x70_buck
-dg_chance = 0.4
-
-
-[ammo_12x76_zhekan]:ammo_base ; slug
-handler = arti_handlers.slug
-name = ammo_new_12x70_zhekan
-k_hit = 2.5
-k_ap = 0.1
-k_imp = 0.8
-impair = 1
-cost = 1250
-recoil = 1.1
-special = slug
-
-[ammo_12x76_zhekan_bad]:ammo_12x76_zhekan ; dart
-name = ammo_new_12x70_dart
-k_hit = 2
-k_ap = 0.175
-k_imp = 0.8
-impair = 1.3
-cost = 1850
-recoil = 1.1
-dg_ammo = ammo_12x76_zhekan
-dg_chance = 0.5
-
-
-[ammo_12x76_dart]:ammo_base ; flechette
-handler = arti_handlers.buckshot_damage
-name = ammo_new_12x70_flechette
-k_hit = 0.28
-k_ap = 0.1
-k_imp = 0.5
-impair = 1
-cost = 1000
-
-[ammo_12x76_dart_bad] ; anomalous dragonsbreath
-handler = arti_handlers.dragonsbreath
-name = ammo_new_12x70_dragon
-k_hit = 0.25
-k_ap = 0.025
-impair = 2.5
-ignite = 1
-cost = 3300
-dg_ammo = ammo_12x76_dart
-dg_chance = 0.95
-special = fire_melt
-
-
-[ammo_12x70_buck_verybad]:ammo_12x70_buck_bad
-[ammo_12x76_zhekan_verybad]:ammo_12x76_zhekan_bad
-[ammo_12x76_dart_verybad]:ammo_12x76_dart_bad
\ No newline at end of file
diff --git a/mods/Anomaly Ballistics Overhaul/gamedata/configs/ammo/ammo_sniper.ltx b/mods/Anomaly Ballistics Overhaul/gamedata/configs/ammo/ammo_sniper.ltx
deleted file mode 100644
index 523d7bbe..00000000
--- a/mods/Anomaly Ballistics Overhaul/gamedata/configs/ammo/ammo_sniper.ltx
+++ /dev/null
@@ -1,233 +0,0 @@
-[ammo_7.62x54_7h1]:ammo_base; 57-N-323S
-name = ammo_new_7.62x54r
-k_hit = 1
-k_ap = 0.185
-k_imp = 0.85
-cost = 800
-
-[ammo_7.62x54_7h1_bad]:ammo_7.62x54_7h1 ; 7N1
-handler = arti_handlers.match
-name = ammo_new_7.62x54_7n1
-k_hit = 1.1
-k_ap = 0.185
-cost = 1400
-dg_ammo = ammo_7.62x54_7h1
-dg_chance = 0.5
-special = match
-
-
-[ammo_7.62x54_7h14]:ammo_base; hunting
-name = ammo_new_7.62x54_hp
-k_hit = 1
-k_ap = 0.155
-k_imp = 0.85
-k_hp = 1.5
-cost = 1000
-
-[ammo_7.62x54_7h14_bad]:ammo_7.62x54_7h14; competition
-handler = arti_handlers.headshot
-name = ammo_new_7.62x54_fp
-k_hit = 1.05
-k_ap = 0.199
-k_hp = 1.15
-cost = 2450
-dg_ammo = ammo_7.62x54_7h14
-dg_chance = 0.5
-special = head
-
-
-[ammo_7.62x54_ap]:ammo_base; 7N13
-name = ammo_new_7.62x54_ap
-k_hit = 0.95
-k_ap = 0.305
-k_imp = 0.85
-k_pen = 0.5
-recoil = 1.05
-cost = 2100
-dg_ammo = ammo_7.62x54_7h1
-dg_chance = 0.5
-
-[ammo_7.62x54_ap_bad]:ammo_7.62x54_ap; BZ API
-handler = arti_handlers.fire_damage
-name = ammo_new_7.62x54_api
-k_hit = 1.2
-k_ap = 0.335
-k_pen = 0.375
-impair = 1.5
-ignite = 0.9
-special = fire
-cost = 2800
-recoil = 1.05
-dg_ammo = ammo_7.62x54_ap
-dg_chance = 0.8
-
-
-[ammo_pkm_100]:ammo_base ;57-N-323S belt
-name = ammo_new_7.62x54_ppr
-k_hit = 1
-k_ap = 0.185
-k_imp = 0.85
-impair = 1
-cost = 4000
-
-[ammo_pkm_100_bad]:ammo_pkm_100 ; splitshot
-handler = arti_handlers.buckshot_damage
-name = ammo_new_7.62x54_split
-k_hit = 0.7
-k_ap = 0.155
-k_hp = 1.1
-impair = 1.5
-cost = 6500
-dg_ammo = ammo_pkm_100
-dg_chance = 0.6
-
-
-[ammo_7.62x51_fmj]:ammo_base; ball
-name = ammo_new_7.62x51_fmj
-k_hit = 1
-k_ap = 0.225
-k_imp = 0.85
-cost = 1800
-
-[ammo_7.62x51_fmj_bad]:ammo_7.62x51_fmj; mk316?
-handler = arti_handlers.match
-name = ammo_new_7.62x51_fmjs
-k_hit = 1.05
-k_ap = 0.2
-cost = 2600
-dg_ammo = ammo_7.62x51_fmj
-dg_chance = 0.4
-special = match
-
-
-[ammo_7.62x51_ap]:ammo_base ; ap
-name = ammo_new_7.62x51_ap
-k_hit = 0.9
-k_ap = 0.305
-k_imp = 0.85
-k_pen = 0.6
-cost = 2500
-dg_ammo = ammo_7.62x51_fmj
-dg_chance = 0.4
-
-[ammo_7.62x51_ap_bad]:ammo_7.62x51_ap ; slap
-name = ammo_new_7.62x51_slap
-k_hit = 0.75
-k_ap = 0.395
-k_pen = 0.8
-cost = 2750
-dg_ammo = ammo_7.62x51_ap
-dg_chance = 0.6
-special = pierce
-
-
-[ammo_7.92x33_fmj]:ammo_base ;fmj
-name = ammo_new_7.92x33_fmj
-k_hit = 1
-k_ap = 0.195
-k_imp = 0.85
-cost = 900
-
-[ammo_7.92x33_fmj_bad]:ammo_7.92x33_fmj ;match
-handler = arti_handlers.match
-name = ammo_new_7.92x33_match
-k_hit = 1.1
-k_ap = 0.195
-cost = 1500
-dg_ammo = ammo_7.92x33_fmj
-dg_chance = 0.4
-special = match
-
-[ammo_7.92x33_ap]:ammo_base ; ap
-name = ammo_new_7.92x33_ap
-k_hit = 0.9
-k_ap = 0.305
-k_imp = 0.85
-cost = 2100
-dg_ammo = ammo_7.92x33_fmj
-dg_chance = 0.5
-
-[ammo_7.92x33_ap_bad]:ammo_7.92x33_ap ; lightning
-handler = arti_handlers.shock_damage
-name = ammo_new_7.92x33_shock
-k_hit = 0.4
-k_ap = 0.399
-impair = 1.5
-cost = 3400
-dg_ammo = ammo_7.92x33_fmj
-dg_chance = 0.7
-special = shock
-
-
-[ammo_12.7x55_fmj]:ammo_base; normal
-name = ammo_new_12.7x55_fmj
-k_hit = 1.5
-k_ap = 0.225
-k_imp = 0.95
-impair = 1
-cost = 2200
-
-[ammo_12.7x55_fmj_bad]:ammo_12.7x55_fmj; pt2
-name = ammo_new_12.7x55_fmjs
-k_hit = 1.65
-k_ap = 0.255
-cost = 3750
-dg_ammo = ammo_12.7x55_fmj
-dg_chance = 0.4
-
-[ammo_12.7x55_ap]:ammo_base; ap
-name = ammo_new_12.7x55_ap
-k_hit = 1.5
-k_ap = 0.305
-k_imp = 0.95
-k_pen = 0.2
-impair = 1
-recoil = 1.05
-cost = 3500
-dg_ammo = ammo_12.7x55_fmj
-dg_chance = 0.4
-
-[ammo_12.7x55_ap_bad]:ammo_12.7x55_ap; explosive
-name = ammo_new_12.7x55_exp
-impact_h = arti_handlers.explode_handler
-k_hit = 0.5
-k_ap = 0.049
-impair = 1.3
-impair = 0.4
-cost = 4560
-special = explodes
-dg_ammo = ammo_12.7x55_ap
-dg_chance = 0.6
-
-
-[ammo_magnum_300]:ammo_base; fmj
-name = ammo_new_338_lapua
-k_hit = 1
-k_ap = 0.335
-k_imp = 0.95
-impair = 1
-cost = 3240
-
-[ammo_magnum_300_bad]:ammo_magnum_300; saboted DU
-handler = arti_handlers.soulripper
-name = ammo_new_338_ap
-k_hit = 1.3
-k_ap = 0.399
-impair = 2
-cost = 5540
-recoil = 2
-special = soulripper
-dg_ammo = ammo_magnum_300
-dg_chance = 0.8
-
-[ammo_7.92x33_fmj_verybad]:ammo_7.92x33_fmj_bad
-[ammo_7.92x33_ap_verybad]:ammo_7.92x33_ap_bad
-[ammo_7.62x51_fmj_verybad]:ammo_7.62x51_fmj_bad
-[ammo_7.62x51_ap_verybad]:ammo_7.62x51_ap_bad
-[ammo_pkm_100_verybad]:ammo_pkm_100_bad
-[ammo_7.62x54_7h1_verybad]:ammo_7.62x54_7h1_bad
-[ammo_7.62x54_ap_verybad]:ammo_7.62x54_ap_bad
-[ammo_7.62x54_7h14_verybad]:ammo_7.62x54_7h14_bad
-[ammo_12.7x55_fmj_verybad]:ammo_12.7x55_fmj_bad
-[ammo_12.7x55_ap_verybad]:ammo_12.7x55_ap_bad
-[ammo_magnum_300_verybad]:ammo_magnum_300_bad
diff --git a/mods/Anomaly Ballistics Overhaul/gamedata/configs/ammo/importer.ltx b/mods/Anomaly Ballistics Overhaul/gamedata/configs/ammo/importer.ltx
deleted file mode 100644
index b6b47772..00000000
--- a/mods/Anomaly Ballistics Overhaul/gamedata/configs/ammo/importer.ltx
+++ /dev/null
@@ -1,3 +0,0 @@
-; Provides custom values for k_hit and k_ap.
-
-#include "ammo_*.ltx"
\ No newline at end of file
diff --git a/mods/Anomaly Ballistics Overhaul/gamedata/configs/ammo/sounds.ltx b/mods/Anomaly Ballistics Overhaul/gamedata/configs/ammo/sounds.ltx
deleted file mode 100644
index a0bb12ce..00000000
--- a/mods/Anomaly Ballistics Overhaul/gamedata/configs/ammo/sounds.ltx
+++ /dev/null
@@ -1,35 +0,0 @@
-; Keeps track of sound data
-
-[acid]
-near = Acid_Near_0
-near_amt = 3
-
-[electric]
-near = Electricity_Small_Near_0
-near_amt = 3
-
-[electric_big]
-near = Electricity_Big_Near_0
-near_amt = 3
-far = Electricity_Big_Far_0
-far_amt = 3
-
-[headshot]
-near = Head_Explode_Near_0
-neat_amt = 3
-
-[incendiary]
-near = Incendiary_Near_0
-near_amt = 5
-far = Incendiary_Far_0
-far_amt = 5
-
-[soulripper]
-near = Railgun_Near_0
-near_amt = 3
-far = Railgun_Far_0
-far_amt = 3
-
-[elite]
-near = Hitmarker_Near_0
-near_amt = 1
\ No newline at end of file
diff --git a/mods/Anomaly Ballistics Overhaul/gamedata/configs/items/ammo/ammo_vanilla.ltx b/mods/Anomaly Ballistics Overhaul/gamedata/configs/items/ammo/ammo_vanilla.ltx
deleted file mode 100644
index e3ca5a8a..00000000
--- a/mods/Anomaly Ballistics Overhaul/gamedata/configs/items/ammo/ammo_vanilla.ltx
+++ /dev/null
@@ -1,124 +0,0 @@
-[ammo_vanilla]
-ammo_9x18_fmj = 5, recipe_ammo_0, casing_p,1,powder_1,1,bullet_pistol,1
-ammo_9x18_pmm = 5, recipe_ammo_0, casing_p,1,powder_1,2,bullet_pistol,1
-ammo_9x18_ap = 5, recipe_ammo_0, casing_p,1,powder_1,2,bullet_pistol_ap,1
-ammo_9x18_fmj_bad_1 = 5, recipe_ammo_0, casing_p,1,powder_1,2,bullet_pistol,1
-ammo_9x18_pmm_bad_1 = 5, recipe_ammo_ru1, casing_p,1,powder_1,3,bullet_pistol,2
-ammo_9x18_pmm_bad_2 = 5, recipe_ammo_ru1, casing_p,1,powder_1,1,powder_nightstar,1,bullet_pistol,2
-ammo_9x18_ap_bad_1 = 5, recipe_ammo_ru2, casing_p,1,powder_1,3,bullet_pistol_ap,2
-ammo_9x18_ap_bad_2 = 5, recipe_ammo_ru2, casing_p,1,powder_1,1,powder_nightstar,1,bullet_pistol_ap,2
-
-ammo_9x19_fmj = 5, recipe_ammo_0, casing_p,1,powder_1,1,bullet_pistol,1
-ammo_9x19_pbp = 5, recipe_ammo_0, casing_p,1,powder_1,2,bullet_pistol,1
-ammo_9x19_ap = 5, recipe_ammo_0, casing_p,1,powder_1,2,bullet_pistol_ap,1
-ammo_9x19_fmj_bad_1 = 5, recipe_ammo_pistol, casing_p,1,powder_1,2,bullet_pistol,1
-ammo_9x19_pbp_bad_1 = 5, recipe_ammo_pistol, casing_p,1,powder_1,3,bullet_pistol,1,powder_gravi,1
-ammo_9x19_pbp_bad_2 = 5, recipe_ammo_pistol, casing_p,1,powder_1,1,powder_nightstar,1,bullet_pistol,2
-ammo_9x19_ap_bad_1 = 5, recipe_ammo_ru2, casing_p,1,powder_1,3,bullet_pistol_ap,2
-ammo_9x19_ap_bad_2 = 5, recipe_ammo_ru2, casing_p,1,powder_1,1,powder_nightstar,1,bullet_pistol_ap,2
-
-ammo_11.43x23_fmj = 5, recipe_ammo_0, casing_p,1,powder_1,2,bullet_pistol,2
-ammo_11.43x23_hydro = 5, recipe_ammo_0, casing_p,1,powder_1,2,bullet_pistol,2
-ammo_11.43x23_fmj_bad_1 = 5, recipe_ammo_pistol, casing_p,1,powder_1,3,bullet_pistol_ap,2
-ammo_11.43x23_fmj_bad_2 = 5, recipe_ammo_pistol, casing_p,1,powder_1,1,powder_nightstar,1,bullet_pistol_ap,2
-ammo_11.43x23_hydro_bad_1 = 5, recipe_ammo_arty1, casing_p,1,powder_1,3,bullet_pistol,2,powder_blood,2
-ammo_11.43x23_hydro_bad_2 = 5, recipe_ammo_arty1, ammo_11.43x23_hydro,1,powder_1,1,powder_blood,2
-
-ammo_5.7x28_ss190 = 5, recipe_ammo_1, casing_p,1,powder_1,1,bullet_pistol,1
-ammo_5.7x28_ss195 = 5, recipe_ammo_1, casing_p,1,powder_1,1,bullet_pistol,1
-ammo_5.7x28_ss190_bad_1 = 5, recipe_ammo_nato, casing_p,1,powder_1,2,bullet_pistol_ap,1
-ammo_5.7x28_ss195_bad_1 = 5, recipe_ammo_arty2, casing_p,1,powder_1,2,powder_battery,1,powder_gravi,1
-ammo_5.7x28_ss195_bad_2 = 5, recipe_ammo_arty2, ammo_5.7x28_ss195,1,powder_battery,1,powder_gravi,1
-
-ammo_7.62x25_p = 5, recipe_ammo_0, casing_p,1,powder_1,1,bullet_pistol,1
-ammo_7.62x25_ps = 5, recipe_ammo_0, casing_p,1,powder_1,1,bullet_pistol,1
-ammo_7.62x25_p_bad_1 = 5, recipe_ammo_ru1, casing_p,1,powder_1,2,bullet_pistol_ap,1
-ammo_7.62x25_ps_bad_1 = 5, recipe_ammo_arty1, casing_p,1,powder_1,2,bullet_pistol,1,powder_blood,2
-ammo_7.62x25_ps_bad_2 = 5, recipe_ammo_arty1, ammo_7.62x25_ps,1,powder_1,1,powder_blood,2
-
-ammo_357_hp_mag = 5, recipe_ammo_3, casing_p,1,powder_1,2,bullet_pistol,2
-ammo_357_hp_mag_bad_1 = 5, recipe_ammo_pistol, casing_p,1,powder_1,3,bullet_pistol,3
-ammo_357_hp_mag_bad_2 = 5, recipe_ammo_pistol, casing_p,1,powder_1,1,powder_nightstar,1,bullet_pistol,3
-
-ammo_12x70_buck = 5, recipe_ammo_0, casing_s,1,powder_1,1,bullet_shotgun,1
-ammo_12x76_zhekan = 5, recipe_ammo_0, casing_s,1,powder_1,1,bullet_shotgun,2
-ammo_12x76_dart = 5, recipe_ammo_2, casing_s,1,powder_1,1,bullet_shotgun_ap,1
-ammo_12x70_buck_bad_1 = 5, recipe_ammo_shotgun, casing_s,1,powder_1,2,bullet_shotgun,1
-ammo_12x76_zhekan_bad_1 = 5, recipe_ammo_ru2, casing_s,1,powder_1,2,bullet_shotgun_ap,2
-ammo_12x76_dart_bad_1 = 5, recipe_ammo_fire, casing_s,1,powder_1,3,powder_fireball,2,powder_nightstar,2
-ammo_12x76_dart_bad_2 = 5, recipe_ammo_fire, ammo_12x70_buck,1,powder_1,1,powder_fireball,2,powder_nightstar,2
-
-ammo_5.45x39_fmj = 5, recipe_ammo_1, casing_r5,1,powder_2,1,bullet_r5,1
-ammo_5.45x39_ep = 5, recipe_ammo_1, casing_r5,1,powder_2,1,bullet_r5,1
-ammo_5.45x39_ap = 5, recipe_ammo_1, casing_r5,1,powder_2,2,bullet_r5_ap,1
-ammo_5.45x39_fmj_bad_1 = 5, recipe_ammo_ru1, casing_r5,1,powder_2,2,bullet_r5,1
-ammo_5.45x39_ep_bad_1 = 5, recipe_ammo_ru1, casing_r5,1,powder_2,2,bullet_r5,1,powder_gravi,1
-ammo_5.45x39_ap_bad_1 = 5, recipe_ammo_ru2, casing_r5,1,powder_2,3,bullet_r5_ap,2
-ammo_5.45x39_ap_bad_2 = 5, recipe_ammo_ru2, casing_r5,1,powder_2,1,powder_fireball,1,bullet_r5_ap,2
-
-ammo_5.56x45_fmj = 5, recipe_ammo_1, casing_r5,1,powder_2,1,bullet_r5,1
-ammo_5.56x45_ss190 = 5, recipe_ammo_1, casing_r5,1,powder_2,1,bullet_r5,1
-ammo_5.56x45_ap = 5, recipe_ammo_1, casing_r5,1,powder_2,1,bullet_r5_ap,1
-ammo_5.56x45_fmj_bad_1 = 5, recipe_ammo_nato, casing_r5,1,powder_2,2,bullet_r5,1
-ammo_5.56x45_ss190_bad_1 = 5, recipe_ammo_shotgun, casing_r5,1,powder_2,2,bullet_r5,2
-ammo_5.56x45_ap_bad_1 = 5, recipe_ammo_nato, casing_r5,1,powder_2,3,bullet_r5_ap,2
-ammo_5.56x45_ap_bad_2 = 5, recipe_ammo_nato, casing_r5,1,powder_2,1,powder_nightstar,1,bullet_r5_ap,2
-
-ammo_7.62x39_fmj = 5, recipe_ammo_1, casing_r5,1,powder_2,2,bullet_r5,2
-ammo_7.62x39_ap = 5, recipe_ammo_1, casing_r5,1,powder_2,2,bullet_r5_ap,2
-ammo_7.62x39_fmj_bad_1 = 5, recipe_ammo_ru1, casing_r5,1,powder_2,3,bullet_r5,2
-ammo_7.62x39_ap_bad_1 = 5, recipe_ammo_fire, casing_r5,1,powder_2,3,bullet_r5_ap,2,powder_fire,1
-ammo_7.62x39_ap_bad_2 = 5, recipe_ammo_fire, ammo_7.62x39_ap,1,powder_2,1,powder_fire,1
-
-ammo_9x39_pab9 = 5, recipe_ammo_1, casing_r5,1,powder_2,2,bullet_r7,1
-ammo_9x39_ap = 5, recipe_ammo_1, casing_r5,1,powder_2,2,bullet_r7_ap,1
-ammo_9x39_pab9_bad_1 = 5, recipe_ammo_ru1, casing_r5,1,powder_2,3,bullet_r7,2
-ammo_9x39_pab9_bad_2 = 5, recipe_ammo_ru1, casing_r5,1,powder_2,1,powder_fireball,1,bullet_r7,2
-ammo_9x39_ap_bad_1 = 5, recipe_ammo_ru2, casing_r5,1,powder_2,3,bullet_r7_ap,2
-ammo_9x39_ap_bad_2 = 5, recipe_ammo_ru2, casing_r5,1,powder_2,1,powder_fireball,1,bullet_r7_ap,2
-
-ammo_7.62x51_fmj = 5, recipe_ammo_2, casing_r7,1,powder_3,1,bullet_r7,1
-ammo_7.62x51_ap = 5, recipe_ammo_2, casing_r7,1,powder_3,2,bullet_r7_ap,1
-ammo_7.62x51_fmj_bad_1 = 5, recipe_ammo_nato, casing_r7,1,powder_3,2,bullet_r7,1
-ammo_7.62x51_ap_bad_1 = 5, recipe_ammo_nato, casing_r7,1,powder_3,3,bullet_r7_ap,2
-ammo_7.62x51_ap_bad_2 = 5, recipe_ammo_nato, casing_r7,1,powder_3,1,powder_fireball,1,bullet_r7_ap,2
-
-ammo_7.62x54_7h1 = 5, recipe_ammo_2, casing_r7,1,powder_3,1,bullet_r7,1
-ammo_7.62x54_7h14 = 5, recipe_ammo_2, casing_r7,1,powder_3,1,bullet_r7,1
-ammo_7.62x54_ap = 5, recipe_ammo_2, casing_r7,1,powder_3,2,bullet_r7_ap,1
-ammo_pkm_100 = 5, recipe_ammo_2, casing_r7,5,powder_3,5,bullet_r7,5
-ammo_7.62x54_7h1_bad_1 = 5, recipe_ammo_ru1, casing_r7,1,powder_3,2,bullet_r7,1
-ammo_7.62x54_7h14_bad_1 = 5, recipe_ammo_shotgun, casing_r7,1,powder_3,3,bullet_r7,2
-ammo_7.62x54_7h14_bad_2 = 5, recipe_ammo_shotgun, casing_r7,1,powder_3,1,powder_fireball,1,bullet_r7,2
-ammo_7.62x54_ap_bad_1 = 5, recipe_ammo_fire, casing_r7,1,powder_3,3,bullet_r7_ap,1,powder_fireball,1
-ammo_7.62x54_ap_bad_2 = 5, recipe_ammo_fire, ammo_7.62x54_ap,1,powder_3,1,1,powder_fireball,1
-ammo_pkm_100_bad_1 = 5, recipe_ammo_arty1, casing_r7,5,powder_3,8,bullet_r7,5,powder_blood,2
-ammo_pkm_100_bad_2 = 5, recipe_ammo_arty1, ammo_pkm_100,1,powder_3,3,powder_blood,2
-
-ammo_7.92x33_fmj = 5, recipe_ammo_2, casing_r7,1,powder_3,1,bullet_r7,1
-ammo_7.92x33_ap = 5, recipe_ammo_2, casing_r7,1,powder_3,2,bullet_r7_ap,1
-ammo_7.92x33_fmj_bad_1 = 5, recipe_ammo_shotgun, casing_r7,1,powder_3,2,bullet_r7,2
-ammo_7.92x33_ap_bad_1 = 5, recipe_ammo_arty2, casing_r7,1,powder_3,3,bullet_r7_ap,1,powder_battery,2
-
-ammo_magnum_300 = 5, recipe_ammo_2, casing_r7,1,powder_3,3,bullet_r7_ap,3
-ammo_magnum_300_bad_1 = 5, recipe_ammo_arty2, casing_r7,1,powder_3,4,bullet_r7_ap,3,powder_gravi,2
-ammo_magnum_300_bad_2 = 5, recipe_ammo_arty2, ammo_magnum_300,1,powder_3,1,powder_gravi,2
-
-ammo_12.7x55_fmj = 5, recipe_ammo_2, casing_r7,1,powder_3,3,bullet_r7,3
-ammo_12.7x55_ap = 5, recipe_ammo_2, casing_r7,1,powder_3,3,bullet_r7_ap,3
-ammo_12.7x55_fmj_bad_1 = 5, recipe_ammo_ru2, casing_r7,1,powder_3,4,bullet_r7,2
-ammo_12.7x55_fmj_bad_2 = 5, recipe_ammo_ru2, casing_r7,1,powder_3,2,powder_fireball,1,bullet_r7,2
-ammo_12.7x55_ap_bad_1 = 5, recipe_ammo_arty1, casing_r7,1,powder_3,4,bullet_r7,2,powder_nightstar,2
-ammo_12.7x55_ap_bad_2 = 5, recipe_ammo_arty1, ammo_12.7x55_fmj,1,powder_3,1,powder_nightstar,2
-
-ammo_vog-25_bad_1 = 5, recipe_ammo_arty2, ammo_vog-25,1,powder_nightstar,1,powder_fireball,1
-ammo_m209_bad_1 = 5, recipe_ammo_fire, ammo_m209,1,powder_fireball,1,powder_battery,1
-
-powder_fire = 5, recipe_ammo_powder, powder_fireball,1
-powder_2 = 5, recipe_ammo_powder, powder_nightstar,1,powder_1,1
-powder_3 = 5, recipe_ammo_powder, powder_fireball,1,powder_2,1
-
-bullet_pistol_ap = 5, recipe_ammo_bullet, bullet_pistol,2,powder_gravi,1,powder_battery,1
-bullet_shotgun_ap = 5, recipe_ammo_bullet, bullet_shotgun,2,powder_blood,1,powder_gravi,1
-bullet_r5_ap = 5, recipe_ammo_bullet, bullet_r5,2,powder_gravi,1,powder_blood,1,powder_battery,1
-bullet_r7_ap = 5, recipe_ammo_bullet, bullet_r7,2,powder_gravi,1,powder_blood,1,powder_battery,1
\ No newline at end of file
diff --git a/mods/Anomaly Ballistics Overhaul/gamedata/configs/items/ammo/importer.ltx b/mods/Anomaly Ballistics Overhaul/gamedata/configs/items/ammo/importer.ltx
deleted file mode 100644
index 07eb927b..00000000
--- a/mods/Anomaly Ballistics Overhaul/gamedata/configs/items/ammo/importer.ltx
+++ /dev/null
@@ -1 +0,0 @@
-#include "ammo_*.ltx"
\ No newline at end of file
diff --git a/mods/Anomaly Ballistics Overhaul/gamedata/configs/items/items/items_ammo_parts.ltx b/mods/Anomaly Ballistics Overhaul/gamedata/configs/items/items/items_ammo_parts.ltx
deleted file mode 100644
index 13c844e7..00000000
--- a/mods/Anomaly Ballistics Overhaul/gamedata/configs/items/items/items_ammo_parts.ltx
+++ /dev/null
@@ -1,240 +0,0 @@
-[weapon_ammo_parts]:ammo_base
-is_component = true
-class = AMMO_S
-cform = skeleton
-visual = dynamics\weapons\wpn_ammo\ammo_9x19_fmj.ogf
-box_size = 15
-inv_grid_width = 1
-inv_grid_height = 1
-inv_grid_x = 0
-inv_grid_y = 46
-cost = 10
-k_disp = 0.66
-k_impulse = 0.6
-k_ap = 0.1
-tracer_color_ID = 1
-wm_size = 0.042
-k_air_resistance = 0.8
-icons_texture = ui\ammo_parts
-inv_weight = 0.01
-drop_chance = 1
-
-[casing_p]:weapon_ammo_parts
-inv_name = st_casing_pistol
-inv_name_short = st_casing_pistol
-description = st_casing_pistol_desc
-cost = 250
-type = casing
-inv_grid_x = 0
-inv_grid_y = 1
-
-
-[casing_s]:weapon_ammo_parts
-inv_name = st_casing_shotgun
-inv_name_short = st_casing_shotgun
-description = st_casing_shotgun_desc
-cost = 350
-type = casing
-inv_grid_x = 0
-inv_grid_y = 0
-
-box_size = 10
-
-[casing_r5]:weapon_ammo_parts
-inv_name = st_casing_r5
-inv_name_short = st_casing_r5
-description = st_casing_r5_desc
-cost = 500
-type = casing
-inv_grid_x = 0
-inv_grid_y = 2
-
-[casing_r7]:weapon_ammo_parts
-inv_name = st_casing_r7
-inv_name_short = st_casing_r7
-description = st_casing_r7_desc
-cost = 600
-type = casing
-inv_grid_x = 0
-inv_grid_y = 3
-
-box_size = 10
-
-[powder_1]:weapon_ammo_parts
-inv_name = st_powder_pistol
-inv_name_short = st_powder_pistol
-description = st_powder_pistol_desc
-cost = 450
-type = powder
-inv_grid_x = 4
-inv_grid_y = 0
-inv_grid_height = 2
-
-[powder_2]:weapon_ammo_parts
-inv_name = st_powder_rifle
-inv_name_short = st_powder_rifle
-description = st_powder_rifle_desc
-cost = 650
-type = powder
-inv_grid_x = 3
-inv_grid_y = 2
-inv_grid_height = 2
-
-[powder_3]:weapon_ammo_parts
-inv_name = st_powder_mag
-inv_name_short = st_powder_mag
-description = st_powder_mag_desc
-cost = 800
-type = powder
-inv_grid_x = 3
-inv_grid_y = 0
-inv_grid_height = 2
-box_size = 10
-
-[powder_fire]:weapon_ammo_parts
-inv_name = st_powder_fire
-inv_name_short = st_powder_fire
-description = st_powder_fire_desc
-cost = 2500
-type = powder
-inv_grid_x = 3
-inv_grid_y = 0
-inv_grid_height = 2
-1icon_layer_x = 5
-1icon_layer_y = 40
-1icon_layer_scale = 1
-1icon_layer = tch_upgr_ico
-box_size = 10
-
-[bullet_pistol]:weapon_ammo_parts
-inv_name = st_handgun_rounds
-inv_name_short = st_handgun_rounds
-description = st_handgun_rounds_desc
-cost = 200
-type = bullet
-inv_grid_x = 1
-inv_grid_y = 1
-
-[bullet_pistol_ap]:weapon_ammo_parts
-inv_name = st_handgun_ap_rounds
-inv_name_short = st_handgun_ap_rounds
-description = st_handgun_ap_rounds_desc
-cost = 550
-type = bullet
-inv_grid_x = 2
-inv_grid_y = 1
-
-[bullet_shotgun]:weapon_ammo_parts
-inv_name = st_shotgun_rounds
-inv_name_short = st_shotgun_rounds
-description = st_shotgun_rounds_desc
-cost = 250
-type = bullet
-inv_grid_x = 1
-inv_grid_y = 0
-box_size = 10
-
-[bullet_shotgun_ap]:weapon_ammo_parts
-inv_name = st_shotgun_ap_rounds
-inv_name_short = st_shotgun_ap_rounds
-description = st_shotgun_ap_rounds_desc
-cost = 650
-type = bullet
-inv_grid_x = 2
-inv_grid_y = 0
-box_size = 10
-
-[bullet_r5]:weapon_ammo_parts
-inv_name = st_rifle5_rounds
-inv_name_short = st_rifle5_rounds
-description = st_rifle5_rounds_desc
-cost = 400
-type = bullet
-inv_grid_x = 1
-inv_grid_y = 2
-[bullet_r5_ap]:weapon_ammo_parts
-inv_name = st_rifle5_ap_rounds
-inv_name_short = st_rifle5_ap_rounds
-description = st_rifle5_ap_rounds_desc
-cost = 1000
-type = bullet
-inv_grid_x = 2
-inv_grid_y = 2
-[bullet_r7]:weapon_ammo_parts
-inv_name = st_rifle7_rounds
-inv_name_short = st_rifle7_rounds
-description = st_rifle7_rounds_desc
-cost = 600
-type = bullet
-inv_grid_x = 1
-inv_grid_y = 3
-box_size = 10
-[bullet_r7_ap]:weapon_ammo_parts
-inv_name = st_rifle7_ap_rounds
-inv_name_short = st_rifle7_ap_rounds
-description = st_rifle7_ap_rounds_desc
-cost = 1500
-type = bullet
-box_size = 10
-inv_grid_x = 2
-inv_grid_y = 3
-
-[powder_gravi]:weapon_ammo_parts
-description = st_powder_gravi_desc
-icons_texture = ui\ammo_parts
-inv_name = st_powder_gravi
-inv_name_short = st_powder_gravi
-inv_grid_width = 1
-inv_grid_height = 2
-inv_grid_x = 3
-inv_grid_y = 14
-icons_texture = ui\ui_maid_ammo
-box_size = 5
-cost = 2000
-inv_weight = 0.1
-
-[powder_fireball]:powder_gravi
-description = st_powder_fireball_desc
-inv_name = st_powder_fireball
-inv_name_short = st_powder_fireball
-inv_grid_width = 1
-inv_grid_height = 2
-inv_grid_x = 0
-inv_grid_y = 14
-
-[powder_nightstar]:powder_gravi
-description = st_powder_nightstar_desc
-inv_name = st_powder_nightstar
-inv_name_short = st_powder_nightstar
-inv_grid_width = 1
-inv_grid_height = 2
-inv_grid_x = 4
-inv_grid_y = 14
-
-[powder_blood]:powder_gravi
-description = st_powder_blood_desc
-inv_name = st_powder_blood
-inv_name_short = st_powder_blood
-inv_grid_width = 1
-inv_grid_height = 2
-inv_grid_x = 1
-inv_grid_y = 14
-[powder_battery]:powder_gravi
-description = st_powder_battery_desc
-inv_name = st_powder_battery
-inv_name_short = st_powder_batter
-inv_grid_width = 1
-inv_grid_height = 2
-inv_grid_x = 2
-inv_grid_y = 14
-; unused
-[powder_medusa]:powder_gravi
-description = st_powder_medusa_desc
-inv_name = st_powder_medusa
-inv_name_short = st_powder_medusa
-inv_grid_width = 1
-inv_grid_height = 2
-inv_grid_x = 3
-inv_grid_y = 14
-cost = 2000
-inv_weight = 0.22
\ No newline at end of file
diff --git a/mods/Anomaly Ballistics Overhaul/gamedata/configs/items/items/items_explosives_new_mines2.ltx b/mods/Anomaly Ballistics Overhaul/gamedata/configs/items/items/items_explosives_new_mines2.ltx
deleted file mode 100644
index e628ccc7..00000000
--- a/mods/Anomaly Ballistics Overhaul/gamedata/configs/items/items/items_explosives_new_mines2.ltx
+++ /dev/null
@@ -1,41 +0,0 @@
-[bullet_blow]:explosive_barrel
-GroupControlSection = spawn_group
-discovery_dependency =
-$spawn = "sm\scripts\mina_blow"
-$prefetch = 16
-kind = i_tool
-class = II_EXPLO
-cform = skeleton
-visual = dynamics\weapons\wpn_pfm1\wpn_pfm1.ogf
-; visual = dynamics\devices\dev_conserv\dev_conserv.ogf
-inv_name = nil
-inv_name_short = nil
-inv_weight = 0.751
-inv_grid_width = 1
-inv_grid_height = 1
-inv_grid_x = 1
-inv_grid_y = 39
-can_take = false
-cost = 0
-blast = 3.14
-blast_r = 0.4
-blast_impulse = 60
-blast_impulse_factor = 1
-frags = 10
-frags_r = 36
-frag_hit = 0.01
-frag_hit_impulse = 2
-hit_type_blast = explosion
-hit_type_frag = fire_wound
-up_throw_factor = 0.1
-wm_size = 0.01
-explode_particles = explosions\explosion_01
-light_color = 1.9,1.4,0.5
-light_range = 25.0
-light_time = 0.85
-fragment_speed = 170
-explode_duration = 0
-time_to_explode = 0.f
-snd_explode = weapons\mine_boom
-immunities_sect = planted_mine_immunities
-wallmark_section = explosion_marks
diff --git a/mods/Anomaly Ballistics Overhaul/gamedata/configs/items/items/items_recipes_ammo.ltx b/mods/Anomaly Ballistics Overhaul/gamedata/configs/items/items/items_recipes_ammo.ltx
deleted file mode 100644
index 40076c76..00000000
--- a/mods/Anomaly Ballistics Overhaul/gamedata/configs/items/items/items_recipes_ammo.ltx
+++ /dev/null
@@ -1,76 +0,0 @@
-[recipe_ammo_ru1]:tch_letter
-icons_texture = ui\ui_maid_ammo
-inv_grid_width = 1
-inv_grid_height = 1
-inv_grid_x = 12
-inv_grid_y = 19
-cost = 5600
-visual = dynamics\equipments\trade\book1.ogf
-description = st_ammo_recipe_ru1_desc
-inv_name = st_ammo_recipe_ru1
-inv_name_short = st_ammo_recipe_ru1
-recipe = true
-
-[recipe_ammo_ru2]:recipe_ammo_ru1
-description = st_ammo_recipe_ru2_desc
-inv_name = st_ammo_recipe_ru2
-inv_name_short = st_ammo_recipe_ru2
-cost = 9600
-inv_grid_x = 14
-
-[recipe_ammo_pistol]:recipe_ammo_ru1
-description = st_ammo_recipe_pistol_desc
-inv_name = st_ammo_recipe_pistol
-inv_name_short = st_ammo_recipe_pistol
-inv_grid_x = 11
-cost = 5600
-
-[recipe_ammo_shotgun]:recipe_ammo_ru1
-description = st_ammo_recipe_shotgun_desc
-inv_name = st_ammo_recipe_shotgun
-inv_name_short = st_ammo_recipe_shotgun
-inv_grid_width = 1
-inv_grid_x = 10
-cost = 6600
-
-[recipe_ammo_nato]:recipe_ammo_ru1
-description = st_ammo_recipe_nato_desc
-inv_name = st_ammo_recipe_nato
-inv_name_short = st_ammo_recipe_nato
-inv_grid_width = 1
-inv_grid_x = 13
-cost = 9600
-
-[recipe_ammo_arty1]:recipe_ammo_ru1
-description = st_ammo_recipe_arty1_desc
-inv_name = st_ammo_recipe_arty1
-inv_name_short = st_ammo_recipe_arty1
-inv_grid_x = 16
-cost = 12600
-
-[recipe_ammo_arty2]:recipe_ammo_ru1
-description = st_ammo_recipe_arty2_desc
-inv_name = st_ammo_recipe_arty2
-inv_name_short = st_ammo_recipe_arty2
-inv_grid_x = 17
-cost = 12600
-
-[recipe_ammo_fire]:recipe_ammo_ru1
-description = st_ammo_recipe_fire_desc
-inv_name = st_ammo_recipe_fire
-inv_name_short = st_ammo_recipe_fire
-inv_grid_x = 19
-cost = 9600
-
-[recipe_ammo_powder]:recipe_ammo_ru1 ; pink
-description = st_ammo_recipe_powder_desc
-inv_name = st_ammo_recipe_powder
-inv_name_short = st_ammo_recipe_powder
-inv_grid_x = 15
-cost = 9600
-[recipe_ammo_bullet]:recipe_ammo_ru1 ; blue
-description = st_ammo_recipe_bullet_desc
-inv_name = st_ammo_recipe_bullet
-inv_name_short = st_ammo_recipe_bullet
-inv_grid_x = 18
-cost = 9600
\ No newline at end of file
diff --git a/mods/Anomaly Ballistics Overhaul/gamedata/configs/items/settings/ball_crusher.ltx b/mods/Anomaly Ballistics Overhaul/gamedata/configs/items/settings/ball_crusher.ltx
deleted file mode 100644
index 334cc91f..00000000
--- a/mods/Anomaly Ballistics Overhaul/gamedata/configs/items/settings/ball_crusher.ltx
+++ /dev/null
@@ -1,85 +0,0 @@
-; fireball = fire
-; nightstar = explosive
-; gravi
-; blood = toxic
-; battery = electric
-[af_itcher] ; 2
-powder_fireball = 20-25
-powder_nightstar = 20-25
-[af_pin] ; 2
-powder_nightstar = 45-60
-[af_night_star] ;
-powder_nightstar = 45-60
-[af_electra_sparkler] ; 2
-powder_battery = 45-60
-[af_blood] ; 2
-powder_blood = 45-60
-[af_cristall_flower] ; 2
-powder_blood = 25-30
-powder_gravi = 20-30
-[af_dummy_glassbeads] ;
-powder_fireball = 45-50
-[af_medusa] ;
-powder_gravi = 45-60
-[af_dummy_battery] ;
-powder_battery = 45-60
-[af_sponge] ; 2, shock
-powder_blood = 30-40
-powder_nightstar = 10-20
-[af_mincer_meat] ; 2
-powder_blood = 55-70
-[af_cristall] ; 3
-powder_fireball = 40-70
-[af_vyvert] ;
-powder_gravi = 60-85
-[af_lobster_eyes] ; 2
-powder_fireball = 40-50
-powder_battery = 30-40
-[af_eye] ;
-powder_blood = 15-20
-powder_fireball = 75-85
-[af_soul]
-powder_blood = 45-50
-powder_battery = 25-30
-[af_dummy_dummy] ;
-powder_battery = 65-75
-powder_gravi = 25-30
-[af_bracelet] ; 3
-powder_blood = 35-45
-powder_fireball = 30-40
-[af_fuzz_kolobok] ;
-powder_blood = 50-60
-powder_gravi = 50-60
-[af_ring] ; 3
-powder_nightstar = 70-90
-[af_empty] ;
-powder_gravi = 100-100
-[af_electra_moonlight] ; 3
-powder_battery = 75-100
-[af_fireball] ; 4
-powder_fireball = 75-100
-[af_fire] ;
-powder_fireball = 60-80
-powder_nightstar = 20-30
-[af_glass]
-powder_blood = 50-60
-powder_fireball = 40-50
-[af_baloon] ; 4
-powder_blood = 75-100
-[af_gravi] ;
-powder_gravi = 75-100
-[af_electra_flash] ; 4
-powder_battery = 90-120
-[af_ice] ;
-powder_battery = 60-85
-powder_nightstar = 40-55
-[af_black_spray] ; 4
-powder_nightstar = 50-55
-powder_fireball = 50-55
-powder_blood = 50-55
-[af_full_empty] ;
-powder_gravi = 100-100
-powder_battery = 10-30
-powder_fireball = 10-30
-[af_gold_fish] ;
-powder_gravi = 130-150
\ No newline at end of file
diff --git a/mods/Anomaly Ballistics Overhaul/gamedata/configs/items/weapons/w_ammo_bas.ltx b/mods/Anomaly Ballistics Overhaul/gamedata/configs/items/weapons/w_ammo_bas.ltx
deleted file mode 100644
index 1ac2ab16..00000000
--- a/mods/Anomaly Ballistics Overhaul/gamedata/configs/items/weapons/w_ammo_bas.ltx
+++ /dev/null
@@ -1,275 +0,0 @@
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-[ammo_23x75_shrapnel]:ammo_base ; #00
-GroupControlSection = spawn_group
-discovery_dependency =
-$spawn = "weapons\ammo\ammo_23x75_shrapnel" ; option for Level Editor
-class = AMMO_S
-cform = skeleton
-visual = dynamics\weapons\wpn_ammo\ammo_12x70_buck.ogf
-description = ammo_23x75_shrapnel_descr
-$prefetch = 64
-
-cost = 2100
-
-box_size = 10
-
-inv_name = ammo_new_23x75_shrapnel
-inv_name_short = ammo_new_23x75_shrapnel_s
-inv_weight = 0.45
-
-icons_texture = ui\ui_icon_bas
-inv_grid_width = 2
-inv_grid_height = 1
-inv_grid_x = 121
-inv_grid_y = 1
-
-
-k_dist = 1.0
-k_disp = 6.5
-k_hit = 6.0
-k_impulse = 5.5
-k_ap = 0.3
-buck_shot = 6
-tracer = on
-4to1_tracer = false
-wm_size = 0.08
-k_air_resistance = 1.5
-
-tier = 2
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-[ammo_23x75_barrikada]:ammo_base ; #00
-GroupControlSection = spawn_group
-discovery_dependency =
-$spawn = "weapons\ammo\ammo_23x75_barrikada" ; option for Level Editor
-class = AMMO_S
-cform = skeleton
-visual = dynamics\weapons\wpn_ammo\ammo_12x76_zhekan.ogf
-description = ammo_23x75_barrikada_descr
-$prefetch = 64
-
-cost = 3500
-
-box_size = 10
-
-inv_name = ammo_new_23x75_barrikada
-inv_name_short = ammo_new_23x75_barrikada_s
-inv_weight = 0.5
-
-icons_texture = ui\ui_icon_bas
-inv_grid_width = 2
-inv_grid_height = 1
-inv_grid_x = 121
-inv_grid_y = 0
-
-k_dist = 1.00
-k_disp = 1.00
-k_hit = 10.7
-k_impulse = 50
-k_ap = 0.6
-impair = 0.05
-tracer = off
-4to1_tracer = on
-wm_size = 0.2
-k_air_resistance = 1.1
-k_bullet_speed = 1.15
-
-tier = 2
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-[ammo_9x21_sp10]:ammo_base ; 165 gr
-GroupControlSection = spawn_group
-discovery_dependency =
-$spawn = "weapons\ammo\ammo_9x21_sp10" ; option for Level Editor
-class = AMMO_S
-cform = skeleton
-visual = dynamics\weapons\wpn_ammo\ammo_1143x23_Hydro.ogf
-description = ammo_9x21_sp10_descr
-$prefetch = 64
-
-cost = 3196
-
-box_size = 14
-
-inv_name = ammo_new_9x21_sp10
-inv_name_short = ammo_new_9x21_sp10_s
-inv_weight = .24
-
-icons_texture = ui\ui_icon_bas
-inv_grid_width = 2
-inv_grid_height = 1
-inv_grid_x = 119
-inv_grid_y = 0
-
-k_disp = 0.66
-k_hit = 0.77 ; 1.25
-k_impulse = 0.8
-k_ap = 0.45
-impair = 1.1
-tracer_color_ID = 0
-wm_size = 0.088
-k_air_resistance = 0.8
-k_bullet_speed = 1.25
-k_cam_dispersion = 1.0 ; 1.1
-
-tier = 2
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-[ammo_20x70_buck]:ammo_base ; #00
-GroupControlSection = spawn_group
-discovery_dependency =
-$spawn = "weapons\ammo\ammo_20x70_buck" ; option for Level Editor
-class = AMMO_S
-cform = skeleton
-visual = dynamics\weapons\wpn_ammo\ammo_12x70_buck.ogf
-description = ammo_20x70_buck_descr
-$prefetch = 64
-
-cost = 450
-
-box_size = 10
-
-inv_name = ammo_new_20x70_buck
-inv_name_short = ammo_new_20x70_buck_s
-inv_weight = .35
-
-icons_texture = ui\ui_icon_bas
-inv_grid_width = 2
-inv_grid_height = 1
-inv_grid_x = 119
-inv_grid_y = 1
-
-k_dist = 0.55
-k_disp = 4.6
-k_hit = 0.35 ; 0.4
-k_impulse = 0.33
-k_ap = 0.03
-buck_shot = 5
-tracer = off
-4to1_tracer = false
-wm_size = 0.02
-k_air_resistance = 2.0
-
-tier = 2
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-[ammo_23_eco]:ammo_base ; #00
-GroupControlSection = spawn_group
-discovery_dependency =
-$spawn = "weapons\ammo\ammo_20x70_buck" ; option for Level Editor
-class = AMMO_S
-cform = skeleton
-visual = dynamics\weapons\wpn_ammo\ammo_12x70_buck.ogf
-description = ammo_23_eco_descr
-$prefetch = 64
-
-cost = 3500
-
-box_size = 1
-
-inv_name = ammo_new_23_eco
-inv_name_short = ammo_new_23_eco_s
-inv_weight = .05
-
-icons_texture = ui\ui_icon_bas
-inv_grid_width = 2
-inv_grid_height = 1
-inv_grid_x = 121
-inv_grid_y = 2
-
-
-k_disp = 0.5
-k_impulse = 0.15
-k_ap = 0.01
-tracer_color_ID = 1
-wm_size = 0.048
-k_air_resistance = 0.15
-
-tier = 2
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-[ammo_vog-30]:ammo_base
-GroupControlSection = spawn_group
-discovery_dependency =
-
-class = S_VOG25
-cform = skeleton
-visual = dynamics\weapons\wpn_ammo\ammo_vog_25.ogf
-description = ammo_vog_30_descr
-
-$prefetch = 64
-
-cost = 1850
-
-box_size = 1
-
-inv_name = ammo_vog_30
-inv_name_short = ammo_vog_30_s
-inv_weight = 0.2 ;.08
-
-icons_texture = ui\ui_icon_bas
-
-inv_grid_width = 1
-inv_grid_height = 1
-inv_grid_x = 126
-inv_grid_y = 1
-
-kill_msg_x = 38
-kill_msg_y = 233
-kill_msg_width = 21
-kill_msg_height = 22
-
-k_disp = 0.6
-k_hit = 8.0 ; 2
-k_impulse = 1.1
-k_ap = 0.55
-buck_shot = 0
-tracer = off
-wm_size = 0.05
-
-fake_grenade_name = wpn_fake_missile
-
-tier = 5
-snd_on_take = other
-grenade_ammo = true
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-[ammo_338_federal]:ammo_base
-GroupControlSection = spawn_group
-discovery_dependency =
-$spawn = "weapons\ammo\ammo_338_federal" ; option for Level Editor
-class = AMMO_S
-cform = skeleton
-visual = dynamics\weapons\wpn_ammo\ammo_338_lapua.ogf
-description = ammo_338_federal_descr
-$prefetch = 64
-
-cost = 4100
-
-box_size = 10
-
-inv_name = ammo_new_338_federal
-inv_name_short = ammo_new_338_federal_s
-inv_weight = .420
-
-icons_texture = ui\ui_icon_bas
-
-inv_grid_width = 2
-inv_grid_height = 1
-inv_grid_x = 119
-inv_grid_y = 2
-
-k_disp = 0.67
-k_hit = 1.0
-k_impulse = 0.81
-k_ap = 0.9
-tracer_color_ID = 2
-wm_size = 0.066
-k_air_resistance = 0.05
-
-tier = 3
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
diff --git a/mods/Anomaly Ballistics Overhaul/gamedata/configs/items/weapons/w_explosives.ltx b/mods/Anomaly Ballistics Overhaul/gamedata/configs/items/weapons/w_explosives.ltx
deleted file mode 100644
index cac175c6..00000000
--- a/mods/Anomaly Ballistics Overhaul/gamedata/configs/items/weapons/w_explosives.ltx
+++ /dev/null
@@ -1,196 +0,0 @@
-
-[fake_rifle_grenade]:identity_immunities,default_weapon_params
-$prefetch = 32
-visual = dynamics\weapons\wpn_ammo\ammo_m209.ogf
-cform = skeleton
-class = G_FAKE
-description =
-inv_weight = 0
-
-cost = 150
-
-blast = 0;5.2 ;3.0
-blast_r = 0;4.7 ;4
-blast_impulse = 174 ;100
-;delete
-blast_impulse_factor = 1
-
-
-frags = 0;94 ;10
-frags_r = 28 ;10
-frag_hit = 0.074 ;0.50
-frag_hit_impulse = 44 ;50
-
-hit_type_blast = explosion
-hit_type_frag = fire_wound
-
-up_throw_factor = 0.36
-
-;trail = weapons\rpg_trail_01, weapons\rpg_trail_02
-
-explode_particles = explosions\effects\expl_bottle;explosions\explosion_01
-
-light_color = 1.9,1.4,0.5
-light_range = 14.0
-light_time = 0.85
-
-ph_mass = 5
-;engine_f = 530
-;engine_u = 90
-
-jump_height = 1
-
-;������ �� ��������
-fragment_speed = 190
-;wallmarks
-wallmark_section = explosion_marks
-wm_size = 0.1 ;0.05
-
-explode_duration = 5 ;���������������� ������ (�)
-
-;�����
-snd_explode = $nil;wpn_fake_vog-25_explode
-
-;�������� ������� ��������, �� �� ������������
-inv_name = ammo-m209
-inv_name_short = "M209"
-inv_weight = .2
-
-inv_grid_width = 1
-inv_grid_height = 1
-inv_grid_x = 16
-inv_grid_y = 5
-
-kill_msg_x = 61
-kill_msg_y = 232
-kill_msg_width = 19
-kill_msg_height = 22
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;; �������� CustomRocket
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-engine_present = false ;������������ �� � ������ ���������
-lights_enabled = false ;���� ������ ������, �� ����� ������
-trail_light_color = 0.6,0.5,0.3
-trail_light_range = 8.0
-force_explode_time = 10000
-
-script_binding = bind_grenade.bind
-
-[fake_vog]:fake_rifle_grenade
-visual = dynamics\weapons\wpn_ammo\ammo_vog_25.ogf
-[wpn_real_m209]:identity_immunities,default_weapon_params
-GroupControlSection = spawn_group
-discovery_dependency =
-visual = dynamics\weapons\wpn_ammo\ammo_m209.ogf
-$prefetch = 16
-class = S_EXPLO
-cform = skeleton
-visual = dynamics\balon\bochka_fuel.ogf
-inv_name =
-inv_name_short =
-inv_weight = .1
-
-inv_grid_width = 1
-inv_grid_height = 1
-inv_grid_x = 9
-inv_grid_y = 9
-;���� ���������� ���������
-can_take = false
-
-cost = 500
-;-------------------------------------------------------------------------------
-
-blast = 5.2 ;3.0
-blast_r = 4.7 ;4
-blast_impulse = 174 ;100
-;delete
-blast_impulse_factor = 1
-
-frags = 94 ;10
-frags_r = 28 ;10
-frag_hit = 0.074 ;0.50
-frag_hit_impulse = 44 ;50
-
-hit_type_blast = explosion
-hit_type_frag = fire_wound
-
-up_throw_factor = 0.36
-;-------------------------------------------------------------------------------
-wm_size = 0.1
-
-explode_particles = explosions\explosion_01
-
-light_color = 1.9,1.4,0.5
-light_range = 14.0
-light_time = 0.85
-
-;������ �� ��������
-fragment_speed = 186 ;�������� �������� (�/�)
-
-explode_duration = 5 ;���������������� ������ (�)
-
-condition_to_explode =0.f
-time_to_explode =0.f
-set_timer_particles =vehiclefx\exhaust_1
-;wallmarks
-wallmark_section = explosion_marks
-;�����
-snd_explode = wpn_fake_vog-25_explode
-immunities_sect = explosive_barrel_low_new_immunities_sect
-
-
-
-[wpn_real_vog25]:wpn_real_m209
-visual = dynamics\weapons\wpn_ammo\ammo_vog_25.ogf
-blast = 4.8 ;3.0
-blast_r = 4.3 ;4
-blast_impulse = 150 ;100
-frags = 85 ;10
-frags_r = 20 ;10
-frag_hit = 0.07 ;0.50
-frag_hit_impulse = 34 ;50
-
-[m209_sub]:identity_immunities,default_weapon_params
-GroupControlSection = spawn_group
-discovery_dependency =
-$spawn = "sm\scripts\mina_blow"
-$prefetch = 16
-kind = i_tool
-class = II_EXPLO
-cform = skeleton
-visual = dynamics\weapons\wpn_pfm1\wpn_pfm1.ogf
-inv_name = nil
-inv_name_short = nil
-inv_weight = 0.001
-inv_grid_width = 1
-inv_grid_height = 1
-inv_grid_x = 1
-inv_grid_y = 39
-can_take = false
-cost = 0
-blast = 2.5
-blast_r = 5.2
-blast_impulse = 60
-blast_impulse_factor = 1
-frags = 6
-frags_r = 36
-frag_hit = 0.01
-frag_hit_impulse = 2
-hit_type_blast = explosion
-hit_type_frag = fire_wound
-up_throw_factor = 0.1
-wm_size = 0.01
-explode_particles = explosions\explosion_01
-light_color = 1.9,1.4,0.5
-light_range = 25.0
-light_time = 0.85
-fragment_speed = 170
-explode_duration = 0
-time_to_explode = 0.f
-snd_explode = weapons\mine_boom
-immunities_sect = planted_mine_immunities
-wallmark_section = explosion_marks
-condition_to_explode =0.f
-time_to_explode =0.f
-set_timer_particles =vehiclefx\exhaust_1
diff --git a/mods/Anomaly Ballistics Overhaul/gamedata/configs/items/weapons/weapon_ammo.ltx b/mods/Anomaly Ballistics Overhaul/gamedata/configs/items/weapons/weapon_ammo.ltx
deleted file mode 100644
index 77ea00f7..00000000
--- a/mods/Anomaly Ballistics Overhaul/gamedata/configs/items/weapons/weapon_ammo.ltx
+++ /dev/null
@@ -1,3392 +0,0 @@
-
-[ammo_base]:identity_immunities,default_weapon_params
-;belt = true;
-slot = -1
-cform = skeleton
-class = AMMO
-kind = w_ammo
-tier = 1
-box_size = 1
-4to1_tracer = true
-buck_shot = 1
-explosive = false
-inv_name = st_none
-inv_name_short = st_none
-description = st_none
-cost = 0
-inv_grid_width = 1
-inv_grid_height = 1
-impair = 1
-k_bullet_speed = 1
-k_cam_dispersion = 1
-k_dist = 1
-k_disp = 1
-k_hit = 1
-k_impulse = 1
-tracer_color_ID = 0
-tracer = on
-wm_size = 0.05
-k_air_resistance = 1
-disassemble_parts = prt_i_ammo,prt_i_ammo
-snd_on_take = ammo
-
-
-
-;;---------------------PISTOL AMMO----------------------
-[ammo_9x18_fmj]:ammo_base ; Pst
-GroupControlSection = spawn_group
-discovery_dependency =
-$spawn = "weapons\ammo\ammo_9x18_fmj" ; option for Level Editor
-class = AMMO_S
-cform = skeleton
-visual = dynamics\weapons\wpn_ammo\ammo_9x18_fmj.ogf
-$prefetch = 64
-
-inv_weight = .16
-box_size = 15
-cost = 450
-
-inv_grid_width = 2
-inv_grid_height = 1
-inv_grid_x = 0
-inv_grid_y = 0
-icons_texture = ui\ui_maid_ammo
-inv_name = ammo_new_9x18_fmj
-inv_name_short = ammo_new_9x18_fmj_s
-
-k_disp = 1
-k_impulse = 0.6
-k_air_resistance = 0.8
-k_bullet_speed = 1
-k_ap = 0.1
-
-
-wm_size = 0.042
-
-[ammo_9x18_fmj_bad]:ammo_9x18_fmj ; +P+ FMJ
-
-inv_weight = .16
-cost = 900
-inv_grid_width = 2
-inv_grid_height = 1
-inv_grid_x = 2
-inv_grid_y = 0
-icons_texture = ui\ui_maid_ammo
-inv_name = ammo_new_9x18_plus
-inv_name_short = ammo_new_9x18_plus_s
-
-k_disp = 1
-k_impulse = 0.6
-k_air_resistance = 0.8
-k_bullet_speed = 1.3
-k_ap = 0.14
-impair = 1.25
-k_cam_dispersion = 1.6
-
-
-wm_size = 0.042
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-[ammo_9x18_pmm]:ammo_base ; HP
-GroupControlSection = spawn_group
-discovery_dependency =
-$spawn = "weapons\ammo\ammo_9x18_pmm" ; option for Level Editor
-class = AMMO_S
-cform = skeleton
-visual = dynamics\weapons\wpn_ammo\ammo_9x18_pmm.ogf
-$prefetch = 64
-inv_weight = .15
-
-box_size = 15
-cost = 550
-
-inv_grid_width = 2
-inv_grid_height = 1
-inv_grid_x = 0
-inv_grid_y = 1
-icons_texture = ui\ui_maid_ammo
-inv_name = ammo_new_9x18_hp
-inv_name_short = ammo_new_9x18_hp_s
-
-k_disp = 1
-k_impulse = 0.7
-k_bullet_speed = 1
-k_ap = 0.15
-
-
-wm_size = 0.062
-k_air_resistance = 0.8
-
-[ammo_9x18_pmm_bad]:ammo_9x18_pmm ; SP-7
-
-inv_grid_width = 2
-inv_grid_height = 1
-inv_grid_x = 2
-inv_grid_y = 1
-icons_texture = ui\ui_maid_ammo
-inv_name = ammo_new_9x18_sp7
-inv_name_short = ammo_new_9x18_sp7_s
-cost = 1216
-k_disp = 1
-k_impulse = 0.66
-k_air_resistance = 0.8
-k_bullet_speed = 1.2
-k_ap = 0.14
-impair = 1.25
-k_cam_dispersion = 1.6
-
-
-wm_size = 0.062
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-[ammo_9x18_ap]:ammo_base ; RGO
-GroupControlSection = spawn_group
-discovery_dependency =
-$spawn = "weapons\ammo\ammo_9x18_fmj" ; option for Level Editor
-class = AMMO_S
-cform = skeleton
-visual = dynamics\weapons\wpn_ammo\ammo_9x18_fmj.ogf
-$prefetch = 64
-
-inv_weight = .17
-box_size = 15
-cost = 840
-
-inv_grid_width = 2
-inv_grid_height = 1
-inv_grid_x = 0
-inv_grid_y = 2
-icons_texture = ui\ui_maid_ammo
-inv_name = ammo_new_9x18_ap
-inv_name_short = ammo_new_9x18_ap_s
-
-k_disp = 1.1
-k_impulse = 0.55
-k_air_resistance = 0.8
-k_ap = 0.2
-
-
-wm_size = 0.028
-
-[ammo_9x18_ap_bad]:ammo_9x18_ap ; 7N25
-cost = 1450
-inv_grid_width = 2
-inv_grid_height = 1
-inv_grid_x = 2
-inv_grid_y = 2
-icons_texture = ui\ui_maid_ammo
-inv_name = ammo_new_9x18_7n25
-inv_name_short = ammo_new_9x18_7n25_s
-
-k_disp = 1.1
-k_impulse = 0.52
-k_air_resistance = 0.8
-k_bullet_speed = 1.3
-k_ap = 0.19
-impair = 1.25
-k_cam_dispersion = 1.6
-
-
-
-wm_size = 0.028
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-[ammo_9x19_fmj]:ammo_base ; FMJ
-GroupControlSection = spawn_group
-discovery_dependency =
-$spawn = "weapons\ammo\ammo_9x19_fmj" ; option for Level Editor
-class = AMMO_S
-cform = skeleton
-visual = dynamics\weapons\wpn_ammo\ammo_9x19_fmj.ogf
-$prefetch = 64
-
-inv_weight = .18
-box_size = 15
-cost = 600
-
-inv_grid_width = 2
-inv_grid_height = 1
-inv_grid_x = 0
-inv_grid_y = 3
-icons_texture = ui\ui_maid_ammo
-inv_name = ammo_new_9x19_fmj
-inv_name_short = ammo_new_9x19_fmj_s
-
-k_disp = 1
-k_impulse = 0.44
-k_air_resistance = 0.8
-k_ap = 0.15
-
-
-wm_size = 0.048
-
-[ammo_9x19_fmj_bad]:ammo_9x19_fmj ; +P+
-inv_grid_width = 2
-inv_grid_height = 1
-inv_grid_x = 2
-inv_grid_y = 3
-icons_texture = ui\ui_maid_ammo
-inv_name = ammo_new_9x19_plus
-inv_name_short = ammo_new_9x19_plus_s
-cost = 1125
-
-k_disp = 1
-k_impulse = 0.42
-k_air_resistance = 0.8
-k_bullet_speed = 1.3
-k_ap = 0.14
-impair = 1.25
-k_cam_dispersion = 1.6
-
-
-
-wm_size = 0.048
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-[ammo_9x19_pbp]:ammo_base ; JHP
-GroupControlSection = spawn_group
-discovery_dependency =
-$spawn = "weapons\ammo\ammo_9x19_pbp" ; option for Level Editor
-class = AMMO_S
-cform = skeleton
-visual = dynamics\weapons\wpn_ammo\ammo_9x19_pbp.ogf
-$prefetch = 64
-
-inv_weight = .17
-box_size = 15
-cost = 750
-
-inv_grid_width = 2
-inv_grid_height = 1
-inv_grid_x = 0
-inv_grid_y = 4
-icons_texture = ui\ui_maid_ammo
-inv_name = ammo_new_9x19_pbp
-inv_name_short = ammo_new_9x19_pbp_s
-
-k_disp = 1
-k_impulse = 1
-k_air_resistance = 0.8
-k_ap = 0.15
-
-
-
-wm_size = 0.068
-
-
-[ammo_9x19_pbp_bad]:ammo_9x19_pbp ; JSP +P
-inv_grid_width = 2
-inv_grid_height = 1
-inv_grid_x = 2
-inv_grid_y = 4
-icons_texture = ui\ui_maid_ammo
-inv_name = ammo_new_9x19_pbps
-inv_name_short = ammo_new_9x19_pbps_s
-cost = 1759
-
-k_disp = 0.85
-k_impulse = 1
-k_air_resistance = 0.8
-k_bullet_speed = 1.2
-k_ap = 0.14
-impair = 1.1
-k_cam_dispersion = 1.5
-
-
-wm_size = 0.068
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-[ammo_9x19_ap]:ammo_base ; 7N21
-GroupControlSection = spawn_group
-discovery_dependency =
-$spawn = "weapons\ammo\ammo_9x19_fmj" ; option for Level Editor
-class = AMMO_S
-cform = skeleton
-visual = dynamics\weapons\wpn_ammo\ammo_9x19_fmj.ogf
-$prefetch = 64
-
-inv_weight = .14
-box_size = 15
-cost = 1350
-
-inv_grid_width = 2
-inv_grid_height = 1
-inv_grid_x = 0
-inv_grid_y = 5
-icons_texture = ui\ui_maid_ammo
-inv_name = ammo_new_9x19_ap
-inv_name_short = ammo_new_9x19_ap_s
-
-k_disp = 1.1
-k_impulse = 0.36
-k_air_resistance = 0.7
-k_bullet_speed = 1.2
-k_ap = 0.3
-k_cam_dispersion = 1.5
-
-
-wm_size = 0.033
-
-tier = 2
-
-[ammo_9x19_ap_bad]:ammo_9x19_ap ; 7N31
-inv_grid_width = 2
-inv_grid_height = 1
-inv_grid_x = 2
-inv_grid_y = 5
-icons_texture = ui\ui_maid_ammo
-inv_name = ammo_new_9x19_7n31
-inv_name_short = ammo_new_9x19_7n31_s
-cost = 1950
-impair = 1.25
-
-k_disp = 1.1
-k_impulse = 0.36
-k_air_resistance = 0.75
-k_bullet_speed = 1.3
-k_ap = 0.28
-k_cam_dispersion = 1.9
-
-
-
-wm_size = 0.033
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-[ammo_5.7x28_ss190]:ammo_base ; civ fmj
-GroupControlSection = spawn_group
-discovery_dependency =
-$spawn = "weapons\ammo\ammo_9x19_fmj" ; option for Level Editor
-class = AMMO_S
-cform = skeleton
-visual = dynamics\weapons\wpn_ammo\ammo_57x28_ss190.ogf
-$prefetch = 64
-
-box_size = 15
-cost = 740
-inv_weight = .09
-
-inv_grid_width = 2
-inv_grid_height = 1
-inv_grid_x = 0
-inv_grid_y = 7
-icons_texture = ui\ui_maid_ammo
-inv_name = ammo_new_5.7x28_fmj
-inv_name_short = ammo_new_5.7x28_fmj_s
-
-k_disp = 1
-k_impulse = 0.36
-k_air_resistance = 0.8
-k_ap = 0.35
-
-
-wm_size = 0.017
-
-tier = 2
-
-[ammo_5.7x28_ss190_bad]:ammo_5.7x28_ss190 ; ss190 ap
-
-inv_grid_width = 2
-inv_grid_height = 1
-inv_grid_x = 2
-inv_grid_y = 7
-icons_texture = ui\ui_maid_ammo
-inv_name = ammo_new_5.7x28_ss190
-inv_name_short = ammo_new_5.7x28_ss190_s
-cost = 1600
-
-k_disp = 0.8
-k_impulse = 0.36
-k_ap = 0.33
-k_air_resistance = 0.8
-
-
-wm_size = 0.017
-
-tier = 2
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-[ammo_5.7x28_ss195]:ammo_base ; hp
-GroupControlSection = spawn_group
-discovery_dependency =
-$spawn = "weapons\ammo\ammo_9x19_fmj" ; option for Level Editor
-class = AMMO_S
-cform = skeleton
-visual = dynamics\weapons\wpn_ammo\ammo_57x28_ss195.ogf
-$prefetch = 64
-
-inv_weight = .1
-box_size = 15
-cost = 1275
-
-inv_grid_width = 2
-inv_grid_height = 1
-inv_grid_x = 0
-inv_grid_y = 6
-icons_texture = ui\ui_maid_ammo
-inv_name = ammo_new_5.7x28_ss195
-inv_name_short = ammo_new_5.7x28_ss195_s
-
-k_disp = 1
-k_impulse = 1
-k_air_resistance = 0.8
-k_ap = 0.2
-
-
-wm_size = 0.019
-
-tier = 2
-
-[ammo_5.7x28_ss195_bad]:ammo_5.7x28_ss195 ; chaos
-cost = 3125
-inv_grid_width = 2
-inv_grid_height = 1
-inv_grid_x = 2
-inv_grid_y = 6
-icons_texture = ui\ui_maid_ammo
-inv_name = ammo_new_5.7x28_chaos
-inv_name_short = ammo_new_5.7x28_chaos_s
-
-k_disp = 1.25
-k_impulse = 1
-k_air_resistance = 0.8
-k_ap = 0.19
-k_cam_dispersion = 1.5
-
-
-wm_size = 0.019
-
-tier = 2
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-[ammo_7.62x25_p]:ammo_base ;p
-GroupControlSection = spawn_group
-discovery_dependency =
-$spawn = "weapons\ammo\ammo_9x19_fmj" ; option for Level Editor
-class = AMMO_S
-cform = skeleton
-visual = dynamics\weapons\wpn_ammo\ammo_762x25_p.ogf
-slot = -1
-$prefetch = 64
-
-inv_weight = .17
-box_size = 15
-cost = 650
-
-inv_grid_width = 2
-inv_grid_height = 1
-inv_grid_x = 0
-inv_grid_y = 8
-icons_texture = ui\ui_maid_ammo
-inv_name = ammo_new_7.62x25_p
-inv_name_short = ammo_new_7.62x25_p_s
-
-k_disp = 1
-k_impulse = 0.7
-k_air_resistance = 0.8
-k_ap = 0.15
-
-
-wm_size = 0.033
-
-tier = 3
-
-[ammo_7.62x25_p_bad]:ammo_7.62x25_p ; pst
-cost = 1120
-inv_grid_width = 2
-inv_grid_height = 1
-inv_grid_x = 2
-inv_grid_y = 8
-icons_texture = ui\ui_maid_ammo
-inv_name = ammo_new_7.62x25_ps
-inv_name_short = ammo_new_7.62x25_ps_s
-
-k_disp = 1
-k_impulse = 0.7
-k_ap = 0.14
-k_air_resistance = 0.8
-k_cam_dispersion = 1.1
-
-
-wm_size = 0.033
-
-tier = 3
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-[ammo_7.62x25_ps]:ammo_base ; hp
-GroupControlSection = spawn_group
-discovery_dependency =
-$spawn = "weapons\ammo\ammo_9x19_pbp" ; option for Level Editor
-class = AMMO_S
-cform = skeleton
-visual = dynamics\weapons\wpn_ammo\ammo_762x25_ps.ogf
-$prefetch = 64
-
-box_size = 15
-cost = 940
-inv_weight = .17
-
-inv_grid_width = 2
-inv_grid_height = 1
-inv_grid_x = 0
-inv_grid_y = 9
-icons_texture = ui\ui_maid_ammo
-inv_name = ammo_new_7.62x25_hp
-inv_name_short = ammo_new_7.62x25_hp_s
-
-k_disp = 1
-k_impulse = 0.5
-k_air_resistance = 0.8
-k_ap = 0.25
-
-
-wm_size = 0.036
-
-tier = 3
-
-[ammo_7.62x25_ps_bad]:ammo_7.62x25_ps ; acid
-
-inv_grid_width = 2
-inv_grid_height = 1
-inv_grid_x = 2
-inv_grid_y = 9
-icons_texture = ui\ui_maid_ammo
-inv_name = ammo_new_7.62x25_cor
-inv_name_short = ammo_new_7.62x25_cor_s
-cost = 2700
-k_disp = 1
-k_impulse = 0.5
-k_air_resistance = 0.8
-k_ap = 0.24
-impair = 1.5
-
-tracer = true
-tracer_color_ID = 1
-
-wm_size = 0.036
-
-tier = 3
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-[ammo_11.43x23_fmj]:ammo_base
-GroupControlSection = spawn_group
-discovery_dependency =
-$spawn = "weapons\ammo\ammo_11.43x23_fmj" ; option for Level Editor
-class = AMMO_S
-cform = skeleton
-visual = dynamics\weapons\wpn_ammo\ammo_1143x23_fmj.ogf
-$prefetch = 64
-
-inv_weight = .29
-box_size = 15
-cost = 800
-
-inv_grid_width = 2
-inv_grid_height = 1
-inv_grid_x = 6
-inv_grid_y = 0
-icons_texture = ui\ui_maid_ammo
-inv_name = ammo_new_11.43x23_fmj
-inv_name_short = ammo_new_11.43x23_fmj_s
-
-k_disp = 1
-k_impulse = 0.55
-k_air_resistance = 0.8
-k_ap = 0.1
-
-
-wm_size = 0.072
-
-tier = 2
-
-
-[ammo_11.43x23_fmj_bad]:ammo_11.43x23_fmj ; +P
-cost = 1300
-inv_grid_width = 2
-inv_grid_height = 1
-inv_grid_x = 8
-inv_grid_y = 0
-icons_texture = ui\ui_maid_ammo
-inv_name = ammo_new_11.43x23_fmjs
-inv_name_short = ammo_new_11.43x23_fmjs_s
-
-k_disp = 1.1
-k_impulse = 0.50
-k_air_resistance = 0.8
-k_ap = 0.09
-k_bullet_speed = 1.2
-impair = 1.25
-k_cam_dispersion = 1.7
-
-
-wm_size = 0.072
-
-tier = 2
-
-
-[ammo_11.43x23_hydro]:ammo_base ; hp
-GroupControlSection = spawn_group
-discovery_dependency =
-$spawn = "weapons\ammo\ammo_11.43x23_hydro" ; option for Level Editor
-class = AMMO_S
-cform = skeleton
-visual = dynamics\weapons\wpn_ammo\ammo_1143x23_Hydro.ogf
-$prefetch = 64
-inv_weight = .23
-
-box_size = 15
-cost = 1000
-
-inv_grid_width = 2
-inv_grid_height = 1
-inv_grid_x = 6
-inv_grid_y = 1
-icons_texture = ui\ui_maid_ammo
-inv_name = ammo_new_11.43x23_hp
-inv_name_short = ammo_new_11.43x23_hp_s
-
-k_disp = 1
-k_impulse = 0.7
-k_ap = 0.2
-
-
-
-wm_size = 0.088
-k_air_resistance = 0.8
-
-tier = 2
-
-[ammo_11.43x23_hydro_bad]:ammo_11.43x23_hydro ;rip
-
-inv_grid_width = 2
-inv_grid_height = 1
-inv_grid_x = 8
-inv_grid_y = 1
-icons_texture = ui\ui_maid_ammo
-inv_name = ammo_new_11.43x23_hydro
-inv_name_short = ammo_new_11.43x23_hydro_s
-cost = 1669
-k_disp = 0.85
-k_impulse = 0.68
-k_ap = 0.18
-k_bullet_speed = 1.2
-impair = 1.15
-k_cam_dispersion = 1.5
-
-
-
-wm_size = 0.088
-k_air_resistance = 0.8
-
-tier = 2
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-[ammo_357_hp_mag]:identity_immunities,default_weapon_params,ammo_base ; HP
-GroupControlSection = spawn_group
-discovery_dependency =
-$spawn = "weapons\wpn_ammo\ammo_357_hp_mag" ; option for Level Editor
-class = AMMO
-cform = skeleton
-visual = dynamics\weapons\wpn_ammo\ammo_357_jhp.ogf
-$prefetch = 64
-
-
-box_size = 15
-cost = 1430
-inv_weight = 0.21
-inv_grid_width = 2
-inv_grid_height = 1
-inv_grid_x = 6
-inv_grid_y = 7
-icons_texture = ui\ui_maid_ammo
-inv_name = ammo_new_357_hp
-inv_name_short = ammo_new_357_hp_s
-
-k_disp = 1
-k_impulse = 0.75
-k_ap = 0.25
-k_air_resistance = 0.8
-
-wm_size = 0.048
-
-tier = 1
-
-[ammo_357_hp_mag_bad]:ammo_357_hp_mag ; JFP
-
-cost = 2235
-inv_grid_width = 2
-inv_grid_height = 1
-inv_grid_x = 8
-inv_grid_y = 7
-icons_texture = ui\ui_maid_ammo
-inv_name = ammo_new_357_jfp
-inv_name_short = ammo_new_357_jfp_s
-
-k_disp = 0.6
-k_impulse = 0.72
-k_ap = 0.23
-k_bullet_speed = 1.1
-
-
-wm_size = 0.048
-k_air_resistance = 0.7
-
-tier = 1
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-[ammo_5.45x39_fmj]:ammo_base ; 7N6
-GroupControlSection = spawn_group
-discovery_dependency =
-$spawn = "weapons\ammo\ammo_5.45x39_fmj" ; option for Level Editor
-class = AMMO_S
-cform = skeleton
-visual = dynamics\weapons\wpn_ammo\ammo_545x39_fmj.ogf
-$prefetch = 64
-
-box_size = 15
-cost = 1250
-inv_weight = .16
-
-inv_grid_width = 2
-inv_grid_height = 1
-inv_grid_x = 12
-inv_grid_y = 3
-icons_texture = ui\ui_maid_ammo
-inv_name = ammo_new_5.45x39_fmj
-inv_name_short = ammo_new_5.45x39_fmj_s
-
-k_disp = 1
-k_impulse = 0.6
-k_air_resistance = 0.25
-k_ap = 0.4
-
-
-wm_size = 0.034
-
-tier = 2
-
-[ammo_5.45x39_fmj_bad]:ammo_5.45x39_fmj ; 7N6M
-inv_grid_width = 2
-inv_grid_height = 1
-inv_grid_x = 14
-inv_grid_y = 3
-icons_texture = ui\ui_maid_ammo
-inv_name = ammo_new_5.45x39_fmjs
-inv_name_short = ammo_new_5.45x39_fmjs_s
-cost = 1950
-impair = 1
-
-tracer = true
-tracer_color_ID = 3
-4to1_tracer = false
-
-k_disp = 1
-k_impulse = 0.58
-k_ap = 0.38
-
-
-wm_size = 0.034
-k_air_resistance = 0.25
-k_bullet_speed = 1.05
-
-tier = 2
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-[ammo_5.45x39_ep]:ammo_base ; HP
-GroupControlSection = spawn_group
-discovery_dependency =
-$spawn = "weapons\ammo\ammo_5.45x39_fmj" ; option for Level Editor
-class = AMMO_S
-cform = skeleton
-visual = dynamics\weapons\wpn_ammo\ammo_545x39_fmj.ogf
-$prefetch = 64
-
-
-box_size = 15
-cost = 1550
-inv_weight = .16
-inv_grid_width = 2
-inv_grid_height = 1
-inv_grid_x = 12
-inv_grid_y = 2
-icons_texture = ui\ui_maid_ammo
-inv_name = ammo_new_5.45x39_hp
-inv_name_short = ammo_new_5.45x39_hp_s
-
-k_disp = 1
-k_impulse = 0.55
-k_ap = 0.5
-
-
-wm_size = 0.031
-k_air_resistance = 0.25
-
-tier = 2
-
-[ammo_5.45x39_ep_bad]:ammo_5.45x39_ep ; JSP
-inv_grid_width = 2
-inv_grid_height = 1
-inv_grid_x = 14
-inv_grid_y = 2
-icons_texture = ui\ui_maid_ammo
-inv_name = ammo_new_5.45x39_sp
-inv_name_short = ammo_new_5.45x39_sp_s
-cost = 1750
-
-k_disp = 1
-k_impulse = 0.42
-k_ap = 0.48
-k_air_resistance = 0.25
-k_bullet_speed = 1.1
-impair = 1.05
-k_cam_dispersion = 1.1
-
-
-
-wm_size = 0.031
-
-tier = 2
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-[ammo_5.45x39_ap]:ammo_base ; 7N10
-GroupControlSection = spawn_group
-discovery_dependency =
-$spawn = "weapons\ammo\ammo_5.45x39_ap" ; option for Level Editor
-class = AMMO_S
-cform = skeleton
-visual = dynamics\weapons\wpn_ammo\ammo_545x39_ap.ogf
-$prefetch = 64
-
-box_size = 15
-cost = 2210
-inv_weight = .16
-k_bullet_speed = 1.1
-
-inv_grid_width = 2
-inv_grid_height = 1
-inv_grid_x = 12
-inv_grid_y = 1
-icons_texture = ui\ui_maid_ammo
-inv_name = ammo_new_5.45x39_ap
-inv_name_short = ammo_new_5.45x39_ap_s
-
-k_disp = 1
-k_impulse = 0.55
-k_ap = 0.6
-k_cam_dispersion = 1.5
-
-
-wm_size = 0.031
-k_air_resistance = 0.25
-
-tier = 3
-
-[ammo_5.45x39_ap_bad]:ammo_5.45x39_ap ; 7N22
-inv_grid_width = 2
-inv_grid_height = 1
-inv_grid_x = 14
-inv_grid_y = 1
-icons_texture = ui\ui_maid_ammo
-cost = 2950
-inv_name = ammo_new_5.45x39_aps
-inv_name_short = ammo_new_5.45x39_aps_s
-
-k_disp = 1.1
-k_impulse = 0.42
-k_ap = 0.58
-impair = 1.1
-k_bullet_speed = 1.2
-k_cam_dispersion = 1.9
-
-
-wm_size = 0.031
-k_air_resistance = 0.25
-
-tier = 3
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-[ammo_5.56x45_fmj]:ammo_base ; M193
-GroupControlSection = spawn_group
-discovery_dependency =
-$spawn = "weapons\ammo\ammo_5.56x45_ss190" ; option for Level Editor
-class = AMMO_S
-cform = skeleton
-visual = dynamics\weapons\wpn_ammo\ammo_556x45_ss190.ogf
-$prefetch = 64
-inv_weight = .17
-
-box_size = 15
-cost = 1500
-
-inv_grid_width = 2
-inv_grid_height = 1
-inv_grid_x = 12
-inv_grid_y = 5
-icons_texture = ui\ui_maid_ammo
-inv_name = ammo_new_5.56x45_fmj
-inv_name_short = ammo_new_5.56x45_fmj_s
-
-k_disp = 1
-k_impulse = 0.58
-k_ap = 0.33
-
-
-wm_size = 0.058
-k_air_resistance = 0.25
-
-tier = 3
-
-[ammo_5.56x45_fmj_bad]:ammo_5.56x45_fmj
-
-box_size = 15
-cost = 2000
-inv_grid_width = 2
-inv_grid_height = 1
-inv_grid_x = 14
-inv_grid_y = 5
-icons_texture = ui\ui_maid_ammo
-inv_name = ammo_new_5.56x45_fmjs
-inv_name_short = ammo_new_5.56x45_fmjs_s
-
-k_disp = 1
-k_impulse = 0.56
-k_ap = 0.33
-k_bullet_speed = 1
-
-tracer = true
-tracer_color_ID = 3
-4to1_tracer = false
-
-
-wm_size = 0.058
-k_air_resistance = 0.25
-
-tier = 3
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-[ammo_5.56x45_ss190]:ammo_base ; HP
-GroupControlSection = spawn_group
-discovery_dependency =
-$spawn = "weapons\ammo\ammo_5.56x45_ss190" ; option for Level Editor
-class = AMMO_S
-cform = skeleton
-visual = dynamics\weapons\wpn_ammo\ammo_556x45_ss190.ogf
-$prefetch = 64
-
-box_size = 15
-cost = 1600
-inv_weight = .18
-
-inv_grid_width = 2
-inv_grid_height = 1
-inv_grid_x = 12
-inv_grid_y = 6
-icons_texture = ui\ui_maid_ammo
-inv_name = ammo_new_5.56x45_hp
-inv_name_short = ammo_new_5.56x45_hp_s
-
-k_disp = 1
-k_impulse = 0.58
-k_ap = 0.4
-k_air_resistance = 0.25
-
-
-wm_size = 0.058
-
-tier = 3
-
-[ammo_5.56x45_ss190_bad]:ammo_5.56x45_ss190 ; Varmageddon
-
-inv_grid_width = 2
-inv_grid_height = 1
-inv_grid_x = 14
-inv_grid_y = 6
-icons_texture = ui\ui_maid_ammo
-inv_name = ammo_new_5.56x45_varma
-inv_name_short = ammo_new_5.56x45_varma_s
-cost = 1900
-
-k_disp = 1
-k_ap = 0.38
-k_impulse = 0.56
-k_air_resistance = 0.25
-impair = 1.1
-
-
-
-wm_size = 0.058
-
-tier = 3
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-[ammo_5.56x45_ap]:ammo_base ; M855A1
-GroupControlSection = spawn_group
-discovery_dependency =
-$spawn = "weapons\ammo\ammo_5.56x45_ap" ; option for Level Editor
-class = AMMO_S
-cform = skeleton
-visual = dynamics\weapons\wpn_ammo\ammo_556x45_ap.ogf
-$prefetch = 64
-box_size = 15
-cost = 1800
-inv_weight = .18
-
-inv_grid_width = 2
-inv_grid_height = 1
-inv_grid_x = 12
-inv_grid_y = 4
-icons_texture = ui\ui_maid_ammo
-inv_name = ammo_new_5.56x45_ss190
-inv_name_short = ammo_new_5.56x45_ss190_s
-
-k_disp = 1.1
-k_ap = 0.55
-k_impulse = 0.54
-k_air_resistance = 0.25
-k_cam_dispersion = 1.5
-
-
-
-wm_size = 0.034
-
-tier = 4
-
-
-[ammo_5.56x45_ap_bad]:ammo_5.56x45_ap
-cost = 2500
-
-inv_grid_width = 2
-inv_grid_height = 1
-inv_grid_x = 14
-inv_grid_y = 4
-icons_texture = ui\ui_maid_ammo
-inv_name = ammo_new_5.56x45_ap
-inv_name_short = ammo_new_5.56x45_ap_s
-
-k_disp = 1.1
-k_ap = 0.53
-k_impulse = 0.52
-k_air_resistance = 0.25
-k_bullet_speed = 1.05
-
-
-wm_size = 0.034
-
-tier = 3
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-[ammo_7.62x39_fmj]:ammo_base ; 57-N-231
-GroupControlSection = spawn_group
-discovery_dependency =
-;$spawn = "weapons\ammo\ammo_7.62x39_fmj" ; option for Level Editor
-class = AMMO
-cform = skeleton
-visual = dynamics\weapons\wpn_ammo\ammo_762x39_fmj.ogf
-$prefetch = 64
-box_size = 15
-cost = 1530
-inv_weight = .24
-
-inv_grid_width = 2
-inv_grid_height = 1
-inv_grid_x = 0
-inv_grid_y = 11
-icons_texture = ui\ui_maid_ammo
-inv_name = ammo_new_7.62x39_fmj
-inv_name_short = ammo_new_7.62x39_fmj_s
-
-k_disp = 1.1
-k_impulse = 0.66
-k_ap = 0.45
-k_air_resistance = 0.25
-wm_size = 0.062
-k_cam_dispersion = 1.2
-
-tier = 4
-
-[ammo_7.62x39_fmj_bad]:ammo_7.62x39_fmj ; M67
-cost = 1730
-inv_grid_width = 2
-inv_grid_height = 1
-inv_grid_x = 2
-inv_grid_y = 11
-icons_texture = ui\ui_maid_ammo
-inv_name = ammo_new_7.62x39_fmjs
-inv_name_short = ammo_new_7.62x39_fmjs_s
-
-k_disp = 1
-k_ap = 0.43
-k_impulse = 0.62
-k_air_resistance = 0.25
-impair = 0.9
-
-
-
-wm_size = 0.062
-
-tier = 3
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-[ammo_7.62x39_ap]:ammo_base
-GroupControlSection = spawn_group
-discovery_dependency =
-;$spawn = "weapons\ammo\ammo_7.62x39_ap" ; option for Level Editor
-class = AMMO_S
-cform = skeleton
-visual = dynamics\weapons\wpn_ammo\ammo_762x39_ap.ogf
-
-$prefetch = 64
-inv_weight = .24
-
-box_size = 15
-cost = 2530
-
-inv_grid_width = 2
-inv_grid_height = 1
-inv_grid_x = 0
-inv_grid_y = 10
-icons_texture = ui\ui_maid_ammo
-inv_name = ammo_new_7.62x39_ap
-inv_name_short = ammo_new_7.62x39_ap_s
-
-k_disp = 1.1
-k_impulse = 0.6
-k_ap = 0.55
-k_air_resistance = 0.25
-impair = 1.15
-k_cam_dispersion = 1.5
-
-
-wm_size = 0.054
-
-tier = 4
-
-[ammo_7.62x39_ap_bad]:ammo_7.62x39_ap
-cost = 3330
-
-inv_grid_width = 2
-inv_grid_height = 1
-inv_grid_x = 2
-inv_grid_y = 10
-icons_texture = ui\ui_maid_ammo
-inv_name = ammo_new_7.62x39_api
-inv_name_short = ammo_new_7.62x39_api_s
-
-k_disp = 1.1
-k_air_resistance = 0.25
-k_impulse = 0.56
-k_ap = 0.54
-impair = 2
-tracer = true
-tracer_color_ID = 0
-4to1_tracer = false
-k_cam_dispersion = 1.6
-
-
-wm_size = 0.054
-
-tier = 3
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-[ammo_9x39_pab9]:ammo_base ; SPP
-GroupControlSection = spawn_group
-discovery_dependency =
-$spawn = "weapons\ammo\ammo_9x39_pab9" ; option for Level Editor
-class = AMMO_S
-cform = skeleton
-visual = dynamics\weapons\wpn_ammo\ammo_9x39_pab9.ogf
-$prefetch = 64
-
-
-inv_weight = .43
-box_size = 15
-cost = 2600
-inv_grid_width = 2
-inv_grid_height = 1
-inv_grid_x = 12
-inv_grid_y = 9
-icons_texture = ui\ui_maid_ammo
-inv_name = ammo_new_9x39_sp5
-inv_name_short = ammo_new_9x39_sp5_s
-impair = 2.5
-
-k_disp = 1
-k_impulse = 0.55
-k_ap = 0.35
-k_air_resistance = 0.13
-
-
-wm_size = 0.048
-
-tier = 3
-
-[ammo_9x39_pab9_bad]:ammo_9x39_pab9 ; SP-5
-cost = 3400
-
-inv_grid_width = 2
-inv_grid_height = 1
-inv_grid_x = 14
-inv_grid_y = 9
-icons_texture = ui\ui_maid_ammo
-inv_name = ammo_new_9x39_spp
-inv_name_short = ammo_new_9x39_spp_s
-
-k_disp = 0.7
-k_ap = 0.33
-k_impulse = 0.53
-k_air_resistance = 0.15
-
-
-
-wm_size = 0.048
-
-tier = 3
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-[ammo_9x39_ap]:ammo_base ; PAB-9
-GroupControlSection = spawn_group
-discovery_dependency =
-$spawn = "weapons\ammo\ammo_9x39_ap" ; option for Level Editor
-class = AMMO_S
-cform = skeleton
-visual = dynamics\weapons\wpn_ammo\ammo_9x39_ap.ogf
-$prefetch = 64
-
-
-inv_weight = .43
-box_size = 15
-cost = 2500
-inv_grid_width = 2
-inv_grid_height = 1
-inv_grid_x = 12
-inv_grid_y = 8
-icons_texture = ui\ui_maid_ammo
-inv_name = ammo_new_9x39_pab9
-inv_name_short = ammo_new_9x39_pab9_s
-
-k_disp = 1.5
-k_impulse = 0.5
-k_ap = 0.45
-k_air_resistance = 0.15
-
-
-wm_size = 0.042
-
-tier = 4
-
-[ammo_9x39_ap_bad]:ammo_9x39_ap ; SP-6
-cost = 3500
-
-inv_grid_width = 2
-inv_grid_height = 1
-inv_grid_x = 14
-inv_grid_y = 8
-icons_texture = ui\ui_maid_ammo
-inv_name = ammo_new_9x39_ap
-inv_name_short = ammo_new_9x39_ap_s
-
-k_disp = 1
-k_ap = 0.43
-k_impulse = 0.47
-k_air_resistance = 0.15
-
-
-
-wm_size = 0.042
-
-tier = 4
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-[ammo_12x70_buck]:ammo_base ; #00
-GroupControlSection = spawn_group
-discovery_dependency =
-$spawn = "weapons\ammo\ammo_12x70_buck" ; option for Level Editor
-class = AMMO_S
-cform = skeleton
-visual = dynamics\weapons\wpn_ammo\ammo_12x70_buck.ogf
-$prefetch = 64
-
-
-box_size = 10
-cost = 800
-inv_weight = .45
-
-inv_grid_width = 2
-inv_grid_height = 1
-inv_grid_x = 6
-inv_grid_y = 4
-icons_texture = ui\ui_maid_ammo
-inv_name = ammo_new_12x70_buck
-inv_name_short = ammo_new_12x70_buck_s
-
-k_dist = 0.75
-k_disp = 5.5
-k_impulse = 0.33
-k_ap = 0
-k_air_resistance = 2.0
-buck_shot = 9
-
-tracer = off
-4to1_tracer = false
-wm_size = 0.022
-
-tier = 2
-
-[ammo_12x70_buck_bad]:ammo_12x70_buck ; Magnum
-
-box_size = 10
-cost = 1300
-inv_weight = .45
-
-inv_grid_width = 2
-inv_grid_height = 1
-inv_grid_x = 8
-inv_grid_y = 4
-icons_texture = ui\ui_maid_ammo
-inv_name = ammo_new_12x70_magnum
-inv_name_short = ammo_new_12x70_magnum_s
-
-k_dist = 0.75
-k_disp = 5
-k_ap = 0
-k_impulse = 0.43
-buck_shot = 9
-k_air_resistance = 2.0
-k_bullet_speed = 1.2
-impair = 1.3
-k_cam_dispersion = 1.6
-
-tracer = off
-4to1_tracer = false
-wm_size = 0.022
-
-tier = 2
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-[ammo_12x76_zhekan]:ammo_base
-GroupControlSection = spawn_group
-discovery_dependency =
-$spawn = "weapons\ammo\ammo_12x76_zhekan" ; option for Level Editor
-class = AMMO_S
-cform = skeleton
-visual = dynamics\weapons\wpn_ammo\ammo_12x76_zhekan.ogf
-
-$prefetch = 64
-
-box_size = 10
-cost = 1250
-inv_weight = .45
-
-inv_grid_width = 2
-inv_grid_height = 1
-inv_grid_x = 6
-inv_grid_y = 6
-icons_texture = ui\ui_maid_ammo
-inv_name = ammo_new_12x70_zhekan
-inv_name_short = ammo_new_12x70_zhekan_s
-
-k_dist = 0.9
-k_disp = 0.8
-k_ap = 0.2
-k_impulse = 1.8
-impair = 1.3
-
-tracer = off
-4to1_tracer = false
-wm_size = 0.052
-k_air_resistance = 1.1
-k_bullet_speed = 1.1
-
-tier = 2
-
-[ammo_12x76_zhekan_bad]:ammo_12x76_zhekan
-
-cost = 1850
-cost = 2
-inv_weight = .45
-
-inv_grid_width = 2
-inv_grid_height = 1
-inv_grid_x = 8
-inv_grid_y = 6
-icons_texture = ui\ui_maid_ammo
-inv_name = ammo_new_12x70_dart
-inv_name_short = ammo_new_12x70_dart_s
-
-k_dist = 1
-k_disp = 1
-k_ap = 0.2
-k_impulse = 2.0
-k_air_resistance = 0.8
-k_cam_dispersion = 1.6
-
-tracer = off
-4to1_tracer = false
-wm_size = 0.052
-k_bullet_speed = 1.2
-
-tier = 2
-
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-[ammo_12x76_dart]:ammo_base
-GroupControlSection = spawn_group
-discovery_dependency =
-$spawn = "weapons\ammo\ammo_12x76_zhekan" ; option for Level Editor
-class = AMMO
-cform = skeleton
-visual = dynamics\weapons\wpn_ammo\ammo_12x76_dart.ogf
-
-$prefetch = 64
-
-box_size = 10
-cost = 1000
-inv_weight = .4
-
-inv_grid_width = 2
-inv_grid_height = 1
-inv_grid_x = 6
-inv_grid_y = 5
-icons_texture = ui\ui_maid_ammo
-inv_name = ammo_new_12x70_flechette
-inv_name_short = ammo_new_12x70_flechette_s
-
-impair = 1
-k_disp = 3
-k_ap = 0.1
-k_impulse = 1.5
-k_dist = 0.85
-k_air_resistance = 1.4
-k_bullet_speed = 1.1
-buck_shot = 9
-
-tracer = off
-4to1_tracer = false
-wm_size = 0.05
-
-tier = 2
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-[ammo_12x76_dart_bad]:ammo_12x76_dart
-
-box_size = 10
-cost = 3300
-inv_weight = .4
-
-inv_grid_width = 2
-inv_grid_height = 1
-inv_grid_x = 8
-inv_grid_y = 5
-icons_texture = ui\ui_maid_ammo
-inv_name = ammo_new_12x70_dragon
-inv_name_short = ammo_new_12x70_dragon_s
-
-
-k_disp = 6.6
-k_ap = 0.2
-k_impulse = 1.5
-k_dist = 0.75
-k_air_resistance = 2.5
-k_bullet_speed = 1
-buck_shot = 9
-impair = 2.5
-
-tracer = true
-tracer_color_ID = 2
-4to1_tracer = false
-wm_size = 0.05
-
-tier = 2
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-[ammo_12x76_zhekan_heli]:ammo_12x76_zhekan ; Do not use! Fake zhekan for helicopter
-$spawn = ;"weapons\ammo\ammo_12x76_zhekan_heli" ; option for Level Editor
-k_disp = 1
-k_hit = 1.0 ; 1
-k_impulse = 1
-k_ap = 0.75
-tracer = on
-4to1_tracer = false
-tracer_color_ID = 3
-wm_size = 0.06
-explosive = off
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-[ammo_7.92x33_fmj]:ammo_base ; 7.92x57 German with mild steel
-GroupControlSection = spawn_group
-discovery_dependency =
-;$spawn = "weapons\ammo\ammo_7.62x39_fmj" ; option for Level Editor
-class = AMMO
-cform = skeleton
-visual = dynamics\weapons\wpn_ammo\ammo_792x33_fmj.ogf
-
-$prefetch = 64
-
-box_size = 10
-cost = 900
-inv_weight = .25
-
-inv_grid_width = 2
-inv_grid_height = 1
-inv_grid_x = 6
-inv_grid_y = 13
-icons_texture = ui\ui_maid_ammo
-inv_name = ammo_new_7.92x33_fmj
-inv_name_short = ammo_new_7.92x33_fmj_s
-
-k_disp = 1
-k_impulse = 0.7
-k_ap = 0.45
-wm_size = 0.066
-k_air_resistance = 0.25
-
-tier = 4
-
-[ammo_7.92x33_fmj_bad]:ammo_7.92x33_fmj ; match
-
-cost = 1500
-inv_grid_width = 2
-inv_grid_height = 1
-inv_grid_x = 8
-inv_grid_y = 13
-icons_texture = ui\ui_maid_ammo
-inv_name = ammo_new_7.92x33_match
-inv_name_short = ammo_new_7.92x33_match_s
-
-k_dist = 1.2
-k_disp = 0.7
-k_hit = 1.0 ; 0.95
-k_impulse = 0.66
-k_ap = 0.43
-wm_size = 0.066
-k_air_resistance = 0.25
-k_bullet_speed = 1.1
-k_cam_dispersion = 0.8
-
-tier = 4
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-[ammo_7.92x33_ap]:ammo_base ; 7.92x57 SA AP
-GroupControlSection = spawn_group
-discovery_dependency =
-;$spawn = "weapons\ammo\ammo_7.62x39_ap" ; option for Level Editor
-class = AMMO_S
-cform = skeleton
-visual = dynamics\weapons\wpn_ammo\ammo_792x33_ap.ogf
-
-$prefetch = 64
-box_size = 10
-cost = 2100
-inv_weight = .25
-
-inv_grid_width = 2
-inv_grid_height = 1
-inv_grid_x = 6
-inv_grid_y = 12
-icons_texture = ui\ui_maid_ammo
-inv_name = ammo_new_7.92x33_ap
-inv_name_short = ammo_new_7.92x33_ap_s
-
-k_disp = 1.1
-k_impulse = 0.5
-k_ap = 0.55
-wm_size = 0.057
-k_air_resistance = 0.25
-k_cam_dispersion = 1.4
-
-tier = 4
-
-[ammo_7.92x33_ap_bad]:ammo_7.92x33_ap
-
-cost = 3400
-inv_grid_width = 2
-inv_grid_height = 1
-inv_grid_x = 8
-inv_grid_y = 12
-icons_texture = ui\ui_maid_ammo
-inv_name = ammo_new_7.92x33_shock
-inv_name_short = ammo_new_7.92x33_shock_s
-
-impair = 1.5
-k_disp = 1.1
-k_hit = 1.0 ; 0.95
-k_impulse = 0.47
-k_ap = 0.53
-wm_size = 0.057
-k_air_resistance = 0.25
-k_bullet_speed = 0.9
-
-tier = 4
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-[ammo_7.62x51_fmj]:ammo_base ; M80
-GroupControlSection = spawn_group
-discovery_dependency =
-$spawn = "weapons\ammo\ammo_7.62x51_fmj" ; option for Level Editor
-class = AMMO
-cform = skeleton
-visual = dynamics\weapons\wpn_ammo\ammo_762x51_fmj.ogf
-
-$prefetch = 64
-
-box_size = 10
-inv_weight = .26
-cost = 1800
-
-inv_grid_width = 2
-inv_grid_height = 1
-inv_grid_x = 0
-inv_grid_y = 13
-icons_texture = ui\ui_maid_ammo
-inv_name = ammo_new_7.62x51_fmj
-inv_name_short = ammo_new_7.62x51_fmj_s
-
-k_disp = 1
-k_hit = 1.0 ; 1.1
-k_impulse = 0.66
-k_ap = 0.4
-
-wm_size = 0.068
-k_air_resistance = 0.1
-
-tier = 4
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-[ammo_7.62x51_fmj_bad]:ammo_7.62x51_fmj
-
-box_size = 10
-inv_weight = .26
-cost = 2600
-
-inv_grid_width = 2
-inv_grid_height = 1
-inv_grid_x = 2
-inv_grid_y = 13
-icons_texture = ui\ui_maid_ammo
-inv_name = ammo_new_7.62x51_fmjs
-inv_name_short = ammo_new_7.62x51_fmjs_s
-
-k_dist = 1.5
-k_disp = 0.6
-k_hit = 1.0 ; 1.05
-k_impulse = 0.63
-k_ap = 0.38
-k_cam_dispersion = 0.8
-
-wm_size = 0.068
-k_air_resistance = 0.07
-k_bullet_speed = 1.1
-tier = 4
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-[ammo_7.62x51_ap]:ammo_base ; M61
-GroupControlSection = spawn_group
-discovery_dependency =
-$spawn = "weapons\ammo\ammo_7.62x51_ap" ; option for Level Editor
-class = AMMO
-cform = skeleton
-visual = dynamics\weapons\wpn_ammo\ammo_762x51_ap.ogf
-
-$prefetch = 64
-
-box_size = 10
-cost = 2500
-inv_weight = .26
-
-inv_grid_width = 2
-inv_grid_height = 1
-inv_grid_x = 0
-inv_grid_y = 12
-icons_texture = ui\ui_maid_ammo
-inv_name = ammo_new_7.62x51_ap
-inv_name_short = ammo_new_7.62x51_ap_s
-
-k_disp = 1
-k_impulse = 0.5
-k_ap = 0.6
-k_cam_dispersion = 1.5
-
-wm_size = 0.053
-k_air_resistance = 0.1
-
-tier = 4
-
-[ammo_7.62x51_ap_bad]:ammo_7.62x51_ap ; slap
-box_size = 10
-cost = 3750
-inv_weight = .26
-
-inv_grid_width = 2
-inv_grid_height = 1
-inv_grid_x = 2
-inv_grid_y = 12
-icons_texture = ui\ui_maid_ammo
-inv_name = ammo_new_7.62x51_slap
-inv_name_short = ammo_new_7.62x51_slap_s
-
-k_disp = 0.6
-k_hit = 1.0 ; 0.95
-k_impulse = 0.48
-k_ap = 0.8
-k_bullet_speed = 1.2
-k_cam_dispersion = 1.6
-
-wm_size = 0.053
-k_air_resistance = 0.05
-
-tier = 4
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-[ammo_pkm_100]:ammo_base ; 57-N-323S belt
-GroupControlSection = spawn_group
-discovery_dependency =
-$spawn = "weapons\ammo\ammo_pkm_100" ; option for Level Editor
-class = AMMO_S
-cform = skeleton
-visual = dynamics\weapons\wpn_ammo\ammo_pkm.ogf
-
-$prefetch = 64
-box_size = 50
-inv_weight = 1.8
-cost = 4000
-
-inv_grid_width = 2
-inv_grid_height = 1
-inv_grid_x = 6
-inv_grid_y = 11
-icons_texture = ui\ui_maid_ammo
-inv_name = ammo_new_7.62x54_ppr
-inv_name_short = ammo_new_7.62x54_ppr_s
-
-k_disp = 1.2
-k_hit = 1.0 ; 0.95
-k_impulse = 0.56
-k_ap = 0.43
-k_air_resistance = 0.1
-k_bullet_speed = 1
-
-
-wm_size = 0.058
-
-tier = 4
-
-[ammo_pkm_100_bad]:ammo_pkm_100
-
-box_size = 50
-inv_weight = 1.8
-cost = 6500
-
-inv_grid_width = 2
-inv_grid_height = 1
-inv_grid_x = 8
-inv_grid_y = 11
-icons_texture = ui\ui_maid_ammo
-inv_name = ammo_new_7.62x54_split
-inv_name_short = ammo_new_7.62x54_split_s
-
-k_dist = 0.67
-k_hit = 0.43
-k_disp = 6.5
-k_impulse = 0.6
-k_ap = 0.45
-buck_shot = 3
-k_bullet_speed = 0.6
-k_air_resistance = 1.7
-impair = 1.5
-
-
-wm_size = 0.058
-
-tier = 3
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-[ammo_7.62x54_7h1]:ammo_base
-GroupControlSection = spawn_group
-discovery_dependency =
-$spawn = "weapons\ammo\ammo_7.62x54_7h1" ; option for Level Editor
-class = AMMO_S
-cform = skeleton
-visual = dynamics\weapons\wpn_ammo\ammo_762x54_7h1.ogf
-
-$prefetch = 64
-
-box_size = 10
-cost = 1800
-inv_weight = .22
-
-inv_grid_width = 2
-inv_grid_height = 1
-inv_grid_x = 6
-inv_grid_y = 8
-icons_texture = ui\ui_maid_ammo
-inv_name = ammo_new_7.62x54r
-inv_name_short = ammo_new_7.62x54r_s
-
-k_disp = 1.2
-k_impulse = 0.8
-k_ap = 0.5
-k_air_resistance = 0.04
-
-
-wm_size = 0.064
-
-tier = 4
-
-[ammo_7.62x54_7h1_bad]:ammo_7.62x54_7h1
-
-box_size = 10
-cost = 2600
-inv_weight = .22
-
-inv_grid_width = 2
-inv_grid_height = 1
-inv_grid_x = 8
-inv_grid_y = 8
-icons_texture = ui\ui_maid_ammo
-inv_name = ammo_new_7.62x54_7n1
-inv_name_short = ammo_new_7.62x54_7n1_s
-
-k_dist = 1.2
-k_disp = 0.8
-k_impulse = 0.76
-k_air_resistance = 0.04
-k_cam_dispersion = 0.8
-
-
-wm_size = 0.064
-
-tier = 4
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-[ammo_7.62x54_ap]:ammo_base ; 7N13
-GroupControlSection = spawn_group
-discovery_dependency =
-$spawn = "weapons\ammo\ammo_7.62x54_ap" ; option for Level Editor
-class = AMMO
-cform = skeleton
-visual = dynamics\weapons\wpn_ammo\ammo_762x54_ap.ogf
-
-$prefetch = 64
-box_size = 10
-cost = 2500
-
-inv_weight = .22
-
-inv_grid_width = 2
-inv_grid_height = 1
-inv_grid_x = 6
-inv_grid_y = 9
-icons_texture = ui\ui_maid_ammo
-inv_name = ammo_new_7.62x54_ap
-inv_name_short = ammo_new_7.62x54_ap_s
-
-k_disp = 1.1
-k_impulse = 0.45
-k_ap = 0.6
-k_air_resistance = 0.05
-k_cam_dispersion = 1.5
-
-
-wm_size = 0.051
-
-tier = 4
-
-[ammo_7.62x54_ap_bad]:ammo_7.62x54_ap
-
-box_size = 10
-cost = 3750
-inv_weight = .22
-
-inv_grid_width = 2
-inv_grid_height = 1
-inv_grid_x = 8
-inv_grid_y = 9
-icons_texture = ui\ui_maid_ammo
-inv_name = ammo_new_7.62x54_api
-inv_name_short = ammo_new_7.62x54_api_s
-
-k_disp = 1.4
-k_air_resistance = 0.05
-k_impulse = 0.43
-k_ap = 0.58
-impair = 1.5
-tracer = true
-4to1_tracer = false
-tracer_color_ID = 0
-k_cam_dispersion = 1.7
-
-
-
-
-wm_size = 0.051
-
-tier = 4
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-[ammo_7.62x54_7h14]:ammo_base
-GroupControlSection = spawn_group
-discovery_dependency =
-$spawn = "weapons\ammo\ammo_7.62x54_7h14" ; option for Level Editor
-class = AMMO
-cform = skeleton
-visual = dynamics\weapons\wpn_ammo\ammo_762x54_7h14.ogf
-
-$prefetch = 64
-box_size = 10
-cost = 1000
-inv_weight = .22
-
-inv_grid_width = 2
-inv_grid_height = 1
-inv_grid_x = 6
-inv_grid_y = 10
-icons_texture = ui\ui_maid_ammo
-inv_name = ammo_new_7.62x54_hp
-inv_name_short = ammo_new_7.62x54_hp_s
-
-k_disp = 1
-k_impulse = 0.74
-k_air_resistance = 0.05
-k_ap = 0.6
-
-
-wm_size = 0.06
-
-tier = 4
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-[ammo_7.62x54_7h14_bad]:ammo_7.62x54_7h14
-
-box_size = 10
-cost = 2450
-inv_weight = .22
-
-inv_grid_width = 2
-inv_grid_height = 1
-inv_grid_x = 8
-inv_grid_y = 10
-icons_texture = ui\ui_maid_ammo
-inv_name = ammo_new_7.62x54_fp
-inv_name_short = ammo_new_7.62x54_fp_s
-
-k_disp = 0.7
-k_ap = 0.6
-k_impulse = 0.71
-k_air_resistance = 0.05
-k_cam_dispersion = 0.8
-
-
-wm_size = 0.06
-
-tier = 4
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-[ammo_12.7x55_fmj]:ammo_base
-GroupControlSection = spawn_group
-discovery_dependency =
-$spawn = "weapons\ammo\ammo_7.62x54_7h1" ; option for Level Editor
-class = AMMO
-cform = skeleton
-visual = dynamics\weapons\wpn_ammo\ammo_127x55_fmj.ogf
-
-$prefetch = 64
-
-
-box_size = 10
-cost = 4000
-inv_weight = 0.75
-
-inv_grid_width = 2
-inv_grid_height = 1
-inv_grid_x = 6
-inv_grid_y = 2
-icons_texture = ui\ui_maid_ammo
-inv_name = ammo_new_12.7x55_fmj
-inv_name_short = ammo_new_12.7x55_fmj_s
-
-k_disp = 1
-k_impulse = 1.0
-k_ap = 0.5
-k_air_resistance = 0.05
-
-wm_size = 0.086
-
-tier = 4
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-[ammo_12.7x55_fmj_bad]:ammo_12.7x55_fmj
-box_size = 10
-cost = 6000
-inv_weight = 0.75
-
-inv_grid_width = 2
-inv_grid_height = 1
-inv_grid_x = 8
-inv_grid_y = 2
-icons_texture = ui\ui_maid_ammo
-inv_name = ammo_new_12.7x55_fmjs
-inv_name_short = ammo_new_12.7x55_fmjs_s
-
-k_disp = 0.7
-k_ap = 0.5
-k_impulse = 0.96
-k_air_resistance = 0.03
-k_bullet_speed = 1.1
-
-
-wm_size = 0.086
-
-tier = 4
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-[ammo_12.7x55_ap]:ammo_base
-GroupControlSection = spawn_group
-discovery_dependency =
-$spawn = "weapons\ammo\ammo_7.62x54_7h1" ; option for Level Editor
-class = AMMO_S
-cform = skeleton
-visual = dynamics\weapons\wpn_ammo\ammo_127x55_ap.ogf
-
-$prefetch = 64
-
-box_size = 10
-cost = 6500
-inv_weight = 0.85
-
-inv_grid_width = 2
-inv_grid_height = 1
-inv_grid_x = 6
-inv_grid_y = 3
-icons_texture = ui\ui_maid_ammo
-inv_name = ammo_new_12.7x55_ap
-inv_name_short = ammo_new_12.7x55_ap_s
-
-k_disp = 1.1
-k_ap = 0.7
-k_impulse = 0.9
-k_air_resistance = 0.05
-k_cam_dispersion = 1.6
-
-
-wm_size = 0.082
-
-tier = 5
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-[ammo_12.7x55_ap_bad]:ammo_12.7x55_ap
-box_size = 10
-cost = 11000
-inv_weight = 0.85
-
-inv_grid_width = 2
-inv_grid_height = 1
-inv_grid_x = 8
-inv_grid_y = 3
-icons_texture = ui\ui_maid_ammo
-inv_name = ammo_new_12.7x55_exp
-inv_name_short = ammo_new_12.7x55_exp_s
-
-k_disp = 1
-k_ap = 0.7
-k_impulse = 0.87
-k_air_resistance = 0.05
-impair = 1.3
-tracer = true
-tracer_color_ID = 2
-
-fake_grenade_name = wpn_fake_missile
-
-wm_size = 0.082
-
-tier = 4
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-[ammo_magnum_300]:ammo_base
-GroupControlSection = spawn_group
-discovery_dependency =
-$spawn = "weapons\ammo\ammo_7.62x54_7h1" ; option for Level Editor
-class = AMMO_S
-cform = skeleton
-visual = dynamics\weapons\wpn_ammo\ammo_338_lapua.ogf
-
-$prefetch = 64
-
-box_size = 10
-cost = 5500
-inv_weight = .44
-
-inv_grid_width = 2
-inv_grid_height = 1
-inv_grid_x = 12
-inv_grid_y = 10
-icons_texture = ui\ui_maid_ammo
-inv_name = ammo_new_338_lapua
-inv_name_short = ammo_new_338_lapua_s
-
-k_disp = 1
-k_impulse = 0.9
-k_air_resistance = 0.05
-k_ap = 0.8
-
-
-wm_size = 0.066
-
-tier = 3
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-[ammo_magnum_300_bad]:ammo_magnum_300
-box_size = 10
-cost = 8500
-inv_weight = .44
-
-inv_grid_width = 2
-inv_grid_height = 1
-inv_grid_x = 14
-inv_grid_y = 10
-icons_texture = ui\ui_maid_ammo
-inv_name = ammo_new_338_ap
-inv_name_short = ammo_new_338_ap_s
-
-k_disp = 0.8
-k_ap = 666
-k_impulse = 6666
-k_air_resistance = 0.03
-k_bullet_speed = 1.5
-impair = 2
-tracer = true
-tracer_color_ID = 2
-k_cam_dispersion = 3
-
-
-
-wm_size = 0.066
-
-tier = 3
-
-
-
-;;;;;;;;;;;;;;;;;;;;;;;KNIFE AMMO;;;;;;;;;;;;;;;;;;;;;;;
-[ammo_knife]:ammo_base
-GroupControlSection = spawn_group
-discovery_dependency =
-$spawn = "weapons\ammo\ammo_9x19_fmj" ; option for Level Editor
-class = AMMO_S
-cform = skeleton
-visual = dynamics\weapons\wpn_ammo\ammo_9x19_fmj.ogf
-description = st_none
-slot = -1
-$prefetch = 64
-fake_ammo = true
-
-cost = 0
-
-box_size = 1
-
-inv_name = st_none
-inv_name_short = st_none
-inv_weight = 0.001
-
-inv_grid_width = 1
-inv_grid_height = 1
-inv_grid_x = 0
-inv_grid_y = 0
-
-k_hit = 19.0
-k_impulse = 1.1
-k_ap = 0.92
-impair = 1.5
-tracer = off
-wm_size = 0.085
-k_air_resistance = 1.5
-
-[ammo_knife_2]:ammo_base
-GroupControlSection = spawn_group
-discovery_dependency =
-$spawn = "weapons\ammo\ammo_9x19_fmj" ; option for Level Editor
-class = AMMO_S
-cform = skeleton
-visual = dynamics\weapons\wpn_ammo\ammo_9x19_fmj.ogf
-description = st_none
-slot = -1
-$prefetch = 64
-fake_ammo = true
-
-cost = 0
-
-box_size = 1
-
-inv_name = st_none
-inv_name_short = st_none
-inv_weight = 0.001
-
-inv_grid_width = 1
-inv_grid_height = 1
-inv_grid_x = 0
-inv_grid_y = 0
-
-k_hit = 19.0
-k_impulse = 1.2
-k_ap = 2.45
-impair = 1.5
-tracer = off
-wm_size = 0.085
-k_air_resistance = 1.5
-
-[ammo_knife_3]:ammo_base
-GroupControlSection = spawn_group
-discovery_dependency =
-$spawn = "weapons\ammo\ammo_9x19_fmj" ; option for Level Editor
-class = AMMO_S
-cform = skeleton
-visual = dynamics\weapons\wpn_ammo\ammo_9x19_fmj.ogf
-description = st_none
-slot = -1
-$prefetch = 64
-fake_ammo = true
-
-cost = 0
-
-box_size = 1
-
-inv_name = st_none
-inv_name_short = st_none
-inv_weight = 0.001
-
-inv_grid_width = 1
-inv_grid_height = 1
-inv_grid_x = 0
-inv_grid_y = 0
-
-k_hit = 19.0
-k_impulse = 1.2
-k_ap = 2.84
-impair = 1.5
-tracer = off
-wm_size = 0.085
-k_air_resistance = 1.5
-
-[ammo_knife_4]:ammo_base
-GroupControlSection = spawn_group
-discovery_dependency =
-$spawn = "weapons\ammo\ammo_9x19_fmj" ; option for Level Editor
-class = AMMO_S
-cform = skeleton
-visual = dynamics\weapons\wpn_ammo\ammo_9x19_fmj.ogf
-description = st_none
-slot = -1
-$prefetch = 64
-fake_ammo = true
-
-cost = 0
-
-box_size = 1
-
-inv_name = st_none
-inv_name_short = st_none
-inv_weight = 0.001
-
-inv_grid_width = 1
-inv_grid_height = 1
-inv_grid_x = 0
-inv_grid_y = 0
-
-k_hit = 19.0
-k_impulse = 1.2
-k_ap = 1.78
-impair = 1.5
-tracer = off
-wm_size = 0.085
-k_air_resistance = 1.5
-
-[ammo_knife_5]:ammo_base
-GroupControlSection = spawn_group
-discovery_dependency =
-$spawn = "weapons\ammo\ammo_9x19_fmj" ; option for Level Editor
-class = AMMO_S
-cform = skeleton
-visual = dynamics\weapons\wpn_ammo\ammo_9x19_fmj.ogf
-description = st_none
-slot = -1
-$prefetch = 64
-fake_ammo = true
-
-cost = 0
-
-box_size = 1
-
-inv_name = st_none
-inv_name_short = st_none
-inv_weight = 0.001
-
-inv_grid_width = 1
-inv_grid_height = 1
-inv_grid_x = 0
-inv_grid_y = 0
-
-k_hit = 19.0
-k_impulse = 1.0
-k_ap = 1.62
-impair = 1.5
-tracer = off
-wm_size = 0.085
-k_air_resistance = 1.5
-
-[ammo_knife_6]:ammo_knife_5
-k_ap = 0.50
-
-
-;;;;;;;;;;;;;;;;;;;;;;;Binoc AMMO;;;;;;;;;;;;;;;;;;;;;;;
-[ammo_binoc]:ammo_base
-GroupControlSection = spawn_group
-discovery_dependency =
-$spawn = "weapons\ammo\ammo_9x19_fmj" ; option for Level Editor
-class = AMMO_S
-cform = skeleton
-visual = dynamics\weapons\wpn_ammo\ammo_9x19_fmj.ogf
-description = none
-$prefetch = 64
-fake_ammo = true
-
-cost = 0
-
-box_size = 0 ;50
-
-inv_name = none
-inv_name_short = none
-inv_weight = 0
-
-inv_grid_width = 2
-inv_grid_height = 1
-inv_grid_x = 14
-inv_grid_y = 9
-
-k_dist = 1
-k_disp = 1
-k_hit = 1
-k_impulse = 1
-k_ap = 1
-impair = 1.5 ; 1
-buck_shot = 1
-tracer = off
-wm_size = 0.001
-k_air_resistance = 1
-
-[ammo_dyno]:ammo_base
-GroupControlSection = spawn_group
-discovery_dependency =
-$prefetch = 64
-$spawn =
-cform = skeleton
-class = AMMO
-inv_grid_height = 0
-inv_grid_width = 0
-inv_grid_x = 33
-inv_grid_y = 6
-inv_name = -
-inv_name_short = -
-description = -
-inv_weight = 0.0
-cost = 216
-visual = dynamics\weapons\wpn_ammo\ammo_12x76_zhekan.ogf
-tracer = off
-wm_size = 0.0000001
-
-[ammo_batteries]:ammo_base ; dummy ammo section to be diplayed in UPD UI
-GroupControlSection = spawn_group
-discovery_dependency =
-$spawn = "weapons\ammo\ammo_9x19_fmj" ; option for Level Editor
-class = AMMO_S
-cform = skeleton
-visual = dynamics\weapons\wpn_ammo\ammo_9x19_fmj.ogf
-description = st_energy_descr ; st_batteries_descr
-$prefetch = 64
-fake_ammo = true
-
-cost = 0
-
-box_size = 1
-
-inv_name = st_energy ; st_batteries
-inv_name_short = st_energy ; st_batteries
-inv_weight = 0.01
-
-inv_grid_width = 1
-inv_grid_height = 1
-inv_grid_x = 1
-inv_grid_y = 26
-
-k_dist = 1
-k_disp = 1
-k_hit = 1
-k_impulse = 1
-k_ap = 1
-impair = 1
-buck_shot = 1
-tracer = off
-wm_size = 1
-k_air_resistance = 1
-
-[ammo_batteries_dead]:ammo_base ; dummy ammo section to be diplayed in UPD UI
-GroupControlSection = spawn_group
-discovery_dependency =
-$spawn = "weapons\ammo\ammo_9x19_fmj" ; option for Level Editor
-class = AMMO_S
-cform = skeleton
-visual = dynamics\weapons\wpn_ammo\ammo_9x19_fmj.ogf
-description = st_energy_descr ; st_batteries_dead_descr
-$prefetch = 64
-fake_ammo = true
-
-cost = 0
-
-box_size = 1 ;50
-
-inv_name = st_energy ; st_batteries_dead
-inv_name_short = st_energy ; st_batteries_dead
-inv_weight = .1 ;.24
-
-inv_grid_width = 1
-inv_grid_height = 1
-inv_grid_x = 0
-inv_grid_y = 26
-
-k_dist = 1
-k_disp = 1
-k_hit = 1
-k_impulse = 1
-k_ap = 1
-impair = 1
-buck_shot = 1
-tracer = off
-wm_size = 1
-k_air_resistance = 1
-
-[ammo_batteries_ccell]:ammo_base ; dummy ammo section to be diplayed in UPD UI
-GroupControlSection = spawn_group
-discovery_dependency =
-$spawn = "weapons\ammo\ammo_9x19_fmj" ; option for Level Editor
-class = AMMO_S
-cform = skeleton
-visual = dynamics\weapons\wpn_ammo\ammo_9x19_fmj.ogf
-description = st_energy_descr ; st_batteries_ccell_descr
-$prefetch = 64
-fake_ammo = true
-
-cost = 0
-
-box_size = 1 ;50
-
-inv_name = st_energy ; st_batteries_ccell
-inv_name_short = st_energy ; st_batteries_ccell
-inv_weight = .1 ;.24
-
-inv_grid_width = 1
-inv_grid_height = 1
-inv_grid_x = 2
-inv_grid_y = 26
-
-k_dist = 1
-k_disp = 1
-k_hit = 1
-k_impulse = 1
-k_ap = 1
-impair = 1
-buck_shot = 1
-tracer = off
-wm_size = 1
-k_air_resistance = 1
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-[ammo_12x70_buck_self]:ammo_12x70_buck
-
-[ammo_12x76_bull]:ammo_base
-GroupControlSection = spawn_group
-discovery_dependency =
-$spawn = "weapons\ammo\ammo_12x76_zhekan" ; option for Level Editor
-class = AMMO
-cform = skeleton
-visual = dynamics\weapons\wpn_ammo\ammo_12x76_dart.ogf
-description = ammo_new_12x76_bull_descr
-$prefetch = 64
-
-cost = 6000
-
-box_size = 10
-cost = 2
-
-inv_name = ammo_new_12x76_bull
-inv_name_short = ammo_new_12x76_bull_s
-inv_weight = .6
-
-icons_texture = ui\ui_maid_ammo
-
-inv_grid_width = 2
-inv_grid_height = 1
-inv_grid_x = 18
-inv_grid_y = 1
-k_disp = 1
-k_hit = 2.5 ; 2.5
-k_ap = 0.3
-tracer = off
-4to1_tracer = false
-wm_size = 0.06
-k_air_resistance = 1.0
-
-tier = 5
-
-[ammo_4.6x30_fmj]:ammo_base
-GroupControlSection = spawn_group
-discovery_dependency =
-$spawn = "weapons\ammo\ammo_9x19_fmj" ; option for Level Editor
-class = AMMO_S
-cform = skeleton
-visual = dynamics\weapons\wpn_ammo\ammo_46x30_fmj.ogf
-description = ammo_new_4.6x30_fmj_descr
-$prefetch = 64
-icons_texture = ui\ui_maid_ammo
-
-cost = 1600
-
-box_size = 15
-cost = 2
-
-inv_name = ammo_new_4.6x30_fmj
-inv_name_short = ammo_new_4.6x30_fmj_s
-inv_weight = .09
-
-inv_grid_width = 2
-inv_grid_height = 1
-inv_grid_x = 12
-inv_grid_y = 0
-
-
-k_disp = 1
-k_impulse = 0.36
-k_ap = 0.35
-
-wm_size = 0.017
-k_air_resistance = 0.8
-
-tier = 2
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-[ammo_4.6x30_fmj_bad]:ammo_4.6x30_fmj
-GroupControlSection = spawn_group
-discovery_dependency =
-$spawn = "weapons\ammo\ammo_9x19_fmj" ; option for Level Editor
-class = AMMO_S
-cform = skeleton
-description = ammo_new_4.6x30_fmj_descr
-visual = dynamics\weapons\wpn_ammo\ammo_46x30_fmj.ogf
-$prefetch = 64
-
-cost = 2200
-
-box_size = 15
-cost = 2
-
-;inv_name = ammo_new_4.6x30_fmj_bad
-inv_name_short = ammo_new_4.6x30_fmj_s
-inv_weight = .09
-
-inv_grid_width = 2
-inv_grid_height = 1
-inv_grid_x = 14
-inv_grid_y = 0
-
-k_disp = 0.7
-k_hit = 1.0 ; 0.95
-k_impulse = 0.33
-k_ap = 0.33
-
-
-wm_size = 0.017
-k_air_resistance = 0.8
-k_bullet_speed = 1.1
-
-tier = 2
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-[ammo_4.6x30_fmj_verybad]:ammo_4.6x30_fmj
-GroupControlSection = spawn_group
-discovery_dependency =
-$spawn = "weapons\ammo\ammo_9x19_fmj" ; option for Level Editor
-class = AMMO_S
-cform = skeleton
-description = ammo_new_4.6x30_fmj_descr
-visual = dynamics\weapons\wpn_ammo\ammo_46x30_fmj.ogf
-$prefetch = 64
-
-cost = 250
-
-box_size = 15
-cost = 2
-
-;inv_name = ammo_new_4.6x30_fmj_verybad
-inv_name_short = ammo_new_4.6x30_fmj_s
-inv_weight = .09
-
-inv_grid_width = 2
-inv_grid_height = 1
-inv_grid_x = 59
-inv_grid_y = 36
-
-k_disp = 1
-k_hit = 1.0 ; 0.9
-k_impulse = 0.3
-k_ap = 0.3
-impair = 1
-
-wm_size = 0.017
-k_air_resistance = 0.8
-k_bullet_speed = 0.9
-
-tier = 1
-
-
-[ammo_50_bmg]:ammo_base ; 7N13
-GroupControlSection = spawn_group
-discovery_dependency =
-$spawn = "weapons\ammo\ammo_7.62x54_ap" ; option for Level Editor
-class = AMMO
-cform = skeleton
-visual = dynamics\weapons\wpn_ammo\ammo_50_bmg.ogf
-$prefetch = 64
-icons_texture = ui\ui_maid_ammo
-
-cost = 4500
-
-box_size = 10
-cost = 2
-
-inv_name = ammo_new_50_bmg
-inv_name_short = ammo_new_50_bmg_s
-description = ammo_new_50_bmg_descr
-inv_weight = .33
-
-inv_grid_width = 2
-inv_grid_height = 1
-inv_grid_x = 12
-inv_grid_y = 7
-
-k_disp = 1
-k_impulse = 0.45
-k_ap = 0.6
-
-wm_size = 0.051
-k_air_resistance = 0.05
-
-tier = 4
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-[ammo_50_bmg_bad]:ammo_50_bmg
-GroupControlSection = spawn_group
-discovery_dependency =
-$spawn = "weapons\ammo\ammo_7.62x54_ap" ; option for Level Editor
-class = AMMO
-cform = skeleton
-visual = dynamics\weapons\wpn_ammo\ammo_50_bmg.ogf
-$prefetch = 64
-
-cost = 7500
-
-box_size = 10
-cost = 2
-
-inv_name = ammo_new_50_bmg
-inv_name_short = ammo_new_50_bmg_s
-description = ammo_new_50_bmg_descr
-
-inv_grid_width = 2
-inv_grid_height = 1
-inv_grid_x = 14
-inv_grid_y = 7
-
-k_disp = 1
-k_hit = 1.0 ; 0.95
-k_impulse = 0.43
-k_ap = 0.58
-
-
-wm_size = 0.051
-k_air_resistance = 0.05
-k_bullet_speed = 0.95
-
-tier = 4
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-[ammo_50_bmg_verybad]:ammo_50_bmg
-GroupControlSection = spawn_group
-discovery_dependency =
-$spawn = "weapons\ammo\ammo_7.62x54_ap" ; option for Level Editor
-class = AMMO
-cform = skeleton
-visual = dynamics\weapons\wpn_ammo\ammo_50_bmg.ogf
-description = ammo_new-50-bmg_descr
-$prefetch = 64
-
-cost = 500
-
-box_size = 10
-cost = 2
-
-;inv_name = ammo_new-50-bmg_verybad
-inv_name_short = ammo_new-50-bmg_s
-inv_weight = .33
-
-inv_grid_width = 2
-inv_grid_height = 1
-inv_grid_x = 59
-inv_grid_y = 38
-
-k_hit = 1.0 ; 0.9
-k_impulse = 0.4
-k_ap = 0.55
-impair = 1
-
-wm_size = 0.051
-k_air_resistance = 0.05
-k_bullet_speed = 0.9
-
-tier = 4
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;; Grenades for Attachable grenade launcher
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-[ammo_vog-25]:ammo_base
-GroupControlSection = spawn_group
-discovery_dependency =
-$spawn = "weapons\ammo\ammo_vog-25" ; option for Level Editor
-class = S_VOG25
-cform = skeleton
-visual = dynamics\weapons\wpn_ammo\ammo_vog_25.ogf
-description = ammo-vog-25_descr
-
-$prefetch = 64
-
-cost = 2180
-
-box_size = 1
-
-inv_name = ammo-vog-25
-icons_texture = ui\ui_vog_icon
-inv_name_short = ammo-vog-25_s
-inv_weight = 0.26 ;.08
-
-inv_grid_width = 1
-inv_grid_height = 1
-inv_grid_x = 0
-inv_grid_y = 0
-
-kill_msg_x = 38
-kill_msg_y = 233
-kill_msg_width = 21
-kill_msg_height = 22
-
-k_disp = 1
-k_hit = 1.0 ; 2
-k_impulse = 1.3
-k_ap = 0.35
-buck_shot = 0
-tracer = off
-wm_size = 0.05
-
-fake_grenade_name = fake_vog
-
-tier = 5
-snd_on_take = other
-grenade_ammo = true
-
-[ammo_vog-25_bad]:ammo_vog-25
-GroupControlSection = spawn_group
-discovery_dependency =
-$spawn = "weapons\ammo\ammo_vog-25" ; option for Level Editor
-class = S_VOG25
-cform = skeleton
-visual = dynamics\weapons\wpn_ammo\ammo_vog_25.ogf
-description = ammo-vog-25_descr
-
-$prefetch = 64
-
-cost = 480
-
-box_size = 1
-
-;inv_name = ammo-vog-25_bad
-inv_name_short = ammo-vog-25_s
-inv_weight = 0.87 ;.08
-
-inv_grid_width = 1
-inv_grid_height = 1
-inv_grid_x = 1
-inv_grid_y = 0
-
-kill_msg_x = 38
-kill_msg_y = 233
-kill_msg_width = 21
-kill_msg_height = 22
-
-k_disp = 1
-k_hit = 1.0 ; 1.536
-k_impulse = 1.2
-k_ap = 0.30
-impair = 1.1
-buck_shot = 0
-tracer = off
-wm_size = 0.05
-
-fake_grenade_name = fake_vog
-
-tier = 5
-snd_on_take = other
-grenade_ammo = true
-
-[ammo_vog-25_verybad]:ammo_vog-25
-GroupControlSection = spawn_group
-discovery_dependency =
-$spawn = "weapons\ammo\ammo_vog-25" ; option for Level Editor
-class = S_VOG25
-cform = skeleton
-visual = dynamics\weapons\wpn_ammo\ammo_vog_25.ogf
-description = ammo-vog-25_descr
-
-$prefetch = 64
-
-cost = 230
-
-box_size = 1
-
-;inv_name = ammo-vog-25_verybad
-inv_name_short = ammo-vog-25_s
-inv_weight = 0.26 ;.08
-
-inv_grid_width = 1
-inv_grid_height = 1
-inv_grid_x = 1
-inv_grid_y = 0
-
-kill_msg_x = 38
-kill_msg_y = 233
-kill_msg_width = 21
-kill_msg_height = 22
-
-k_disp = 1
-k_hit = 1.0 ; 1.01
-k_impulse = 1.12
-k_ap = 0.27
-impair = 1.3
-buck_shot = 0
-tracer = off
-wm_size = 0.05
-
-; fake_grenade_name = fake_vog
-fake_grenade_name = wpn_fake_missile
-
-tier = 5
-snd_on_take = other
-grenade_ammo = true
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-[ammo_m209]:ammo_base
-GroupControlSection = spawn_group
-discovery_dependency =
-$spawn = "weapons\ammo\ammo_m209" ; option for Level Editor
-class = S_M209
-cform = skeleton
-visual = dynamics\weapons\wpn_ammo\ammo_m209.ogf
-description = ammo-m209_descr
-$prefetch = 64
-
-cost = 2264
-
-box_size = 1
-
-inv_name = ammo-m209
-icons_texture = ui\ui_m209_icon
-inv_name_short = ammo-m209_s
-inv_weight = 0.2 ;.08
-
-inv_grid_width = 1
-inv_grid_height = 1
-inv_grid_x = 0
-inv_grid_y = 0
-
-kill_msg_x = 61
-kill_msg_y = 232
-kill_msg_width = 19
-kill_msg_height = 22
-
-
-k_disp = 1
-k_hit = 1.0 ; 2.1
-k_impulse = 1.35
-k_ap = 0.35
-buck_shot = 0
-tracer = off
-wm_size = 0.05
-
-fake_grenade_name = fake_rifle_grenade
-
-tier = 5
-snd_on_take = other
-grenade_ammo = true
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-[ammo_m209_bad]:ammo_m209
-GroupControlSection = spawn_group
-discovery_dependency =
-$spawn = "weapons\ammo\ammo_m209" ; option for Level Editor
-class = S_M209
-cform = skeleton
-visual = dynamics\weapons\wpn_ammo\ammo_m209.ogf
-description = ammo-m209_descr
-slot = -1
-$prefetch = 64
-
-cost = 665
-
-box_size = 1
-
-;inv_name = ammo-m209_bad
-inv_name = ammo_new_m209
-description = ammo_new_m209_descr
-inv_name_short = ammo_new_m209_s
-inv_weight = 0.4 ;.08
-
-
-inv_grid_width = 1
-inv_grid_height = 1
-inv_grid_x = 1
-inv_grid_y = 0
-
-kill_msg_x = 61
-kill_msg_y = 232
-kill_msg_width = 73
-kill_msg_height = 18
-
-
-k_disp = 1
-k_hit = 1.0 ; 1.78
-k_impulse = 1.30
-k_ap = 0.305
-impair = 1.1
-buck_shot = 0
-tracer = off
-wm_size = 0.05
-
-fake_grenade_name = fake_rifle_grenade
-
-tier = 5
-snd_on_take = other
-grenade_ammo = true
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-[ammo_m209_verybad]:ammo_m209
-GroupControlSection = spawn_group
-discovery_dependency =
-$spawn = "weapons\ammo\ammo_m209" ; option for Level Editor
-class = S_M209
-cform = skeleton
-visual = dynamics\weapons\wpn_ammo\ammo_m209.ogf
-description = ammo-m209_descr
-slot = -1
-$prefetch = 64
-
-cost = 300
-
-box_size = 1
-
-;inv_name = ammo-m209_verybad
-icons_texture = ui\ui_maid_ammo
-inv_name_short = ammo-m209_s
-inv_weight = 0.2 ;.08
-
-inv_grid_width = 1
-inv_grid_height = 1
-inv_grid_x = 19
-inv_grid_y = 4
-
-kill_msg_x = 61
-kill_msg_y = 232
-kill_msg_width = 73
-kill_msg_height = 25
-
-
-k_disp = 1
-k_hit = 1.0 ; 1.38
-k_impulse = 1.26
-k_ap = 0.301
-impair = 1.3
-buck_shot = 0
-tracer = off
-wm_size = 0.05
-
-fake_grenade_name = wpn_fake_missile2
-
-tier = 5
-snd_on_take = other
-grenade_ammo = true
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-[ammo_og-7b]:ammo_base
-GroupControlSection = spawn_group
-discovery_dependency =
-$spawn = "weapons\ammo\ammo_og-7b" ; option for Level Editor
-class = S_OG7B
-cform = skeleton
-visual = dynamics\weapons\wpn_ammo\ammo_og_7b.ogf
-description = ammo-og-7b_descr
-$prefetch = 64
-
-cost = 2490
-
-box_size = 1
-
-inv_name = ammo-og-7b
-icons_texture = ui\ui_maid_ammo
-inv_name_short = ammo-og-7b_s
-inv_weight = 1.96
-
-inv_grid_width = 3
-inv_grid_height = 1
-inv_grid_x = 12
-inv_grid_y = 11
-
-
-k_disp = 1
-k_hit = 1.0 ; 2.5
-k_impulse = 1.5
-k_ap = 1.25
-buck_shot = 0
-tracer = off
-wm_size = 0.1
-
-wallmark_section = explosion_marks
-
-tier = 5
-snd_on_take = other
-grenade_ammo = true
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-[ammo_og-7b_bad]:ammo_og-7b
-GroupControlSection = spawn_group
-discovery_dependency =
-$spawn = "weapons\ammo\ammo_og-7b" ; option for Level Editor
-class = S_OG7B
-cform = skeleton
-visual = dynamics\weapons\wpn_ammo\ammo_og_7b.ogf
-description = ammo-og-7b_descr
-$prefetch = 64
-
-cost = 520
-
-box_size = 1
-
-;inv_name = ammo-og-7b_bad
-icons_texture = ui\ui_maid_ammo
-inv_name_short = ammo-og-7b_s
-inv_weight = 1.96
-
-inv_grid_width = 3
-inv_grid_height = 1
-inv_grid_x = 15
-inv_grid_y = 11
-
-
-k_disp = 1
-k_hit = 1.0 ; 1.89
-k_impulse = 1.4
-k_ap = 1.25
-impair = 1.1
-buck_shot = 0
-tracer = off
-wm_size = 0.1
-
-wallmark_section = explosion_marks
-
-tier = 5
-snd_on_take = other
-grenade_ammo = true
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-[ammo_og-7b_verybad]:ammo_og-7b
-GroupControlSection = spawn_group
-discovery_dependency =
-$spawn = "weapons\ammo\ammo_og-7b" ; option for Level Editor
-class = S_OG7B
-cform = skeleton
-visual = dynamics\weapons\wpn_ammo\ammo_og_7b.ogf
-description = ammo-og-7b_descr
-$prefetch = 64
-
-cost = 200
-
-box_size = 1
-
-;inv_name = ammo-og-7b_verybad
-icons_texture = ui\ui_maid_ammo
-inv_name_short = ammo-og-7b_s
-inv_weight = 1.96
-
-inv_grid_width = 3
-inv_grid_height = 1
-inv_grid_x = 15
-inv_grid_y = 11
-
-
-k_disp = 1
-k_hit = 1.0 ; 1.29
-k_impulse = 1.3
-k_ap = 1.22
-impair = 1.3
-buck_shot = 0
-tracer = off
-wm_size = 0.1
-
-wallmark_section = explosion_marks
-
-tier = 5
-snd_on_take = other
-grenade_ammo = true
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-[ammo_gauss]:ammo_base
-GroupControlSection = spawn_group
-discovery_dependency =
-$spawn = "weapons\ammo\ammo_gauss" ; option for Level Editor
-class = AMMO_S
-cform = skeleton
-visual = dynamics\weapons\wpn_ammo\ammo_gauss.ogf
-description = ammo-gauss_descr
-$prefetch = 64
-
-cost = 11990
-
-box_size = 8
-
-inv_name = ammo-gauss
-icons_texture = ui\ui_maid_ammo
-inv_name_short = ammo-gauss
-inv_weight = 0.6
-
-inv_grid_width = 1
-inv_grid_height = 1
-inv_grid_x = 18
-inv_grid_y = 2
-
-k_disp = 1
-k_hit = 2.5 ; 2.5
-k_impulse = 100
-k_ap = 5.0
-tracer = off
-wm_size = 0.01
-k_air_resistance = 0.01
-explosive = on
-
-tier = 5
-snd_on_take = other
-
-[ammo_gauss_bad]:ammo_gauss
-GroupControlSection = spawn_group
-discovery_dependency =
-$spawn = "weapons\ammo\ammo_gauss" ; option for Level Editor
-class = AMMO_S
-cform = skeleton
-visual = dynamics\weapons\wpn_ammo\ammo_gauss.ogf
-description = ammo-gauss_descr
-$prefetch = 64
-
-cost = 2230
-
-box_size = 8
-
-;inv_name = ammo-gauss_bad
-icons_texture = ui\ui_maid_ammo
-inv_name_short = ammo-gauss
-inv_weight = 0.6
-
-inv_grid_width = 1
-inv_grid_height = 1
-inv_grid_x = 19
-inv_grid_y = 2
-
-k_disp = 1
-k_hit = 2.3 ; 2.3
-k_impulse = 1
-k_ap = 4.5
-impair = 1.1
-tracer = off
-wm_size = 0.01
-k_air_resistance = 0.01
-explosive = on
-
-tier = 5
-snd_on_take = other
-
-[ammo_gauss_verybad]:ammo_gauss
-GroupControlSection = spawn_group
-discovery_dependency =
-$spawn = "weapons\ammo\ammo_gauss" ; option for Level Editor
-class = AMMO_S
-cform = skeleton
-visual = dynamics\weapons\wpn_ammo\ammo_gauss.ogf
-description = ammo-gauss_descr
-$prefetch = 64
-
-cost = 1570
-
-box_size = 8
-
-;inv_name = ammo-gauss_verybad
-icons_texture = ui\ui_maid_ammo
-inv_name_short = ammo-gauss
-inv_weight = 0.6
-
-inv_grid_width = 1
-inv_grid_height = 1
-inv_grid_x = 18
-inv_grid_y = 3
-
-k_disp = 1
-k_hit = 2.0 ; 2.0
-k_impulse = 1
-k_ap = 4.0
-impair = 1.3
-tracer = off
-wm_size = 0.01
-k_air_resistance = 0.01
-explosive = on
-
-tier = 5
-snd_on_take = other
-
-[ammo_gauss_cardan]:ammo_gauss ; cocks
-$spawn = "weapons\ammo\ammo_gauss_cardan" ; option for Level Editor
-visual = dynamics\weapons\wpn_ammo\ammo_gauss_custom.ogf
-description = ammo-gauss_cardan_descr
-
-cost = 8399
-
-box_size = 6
-
-inv_name = ammo-gauss_cardan
-inv_name_short = ammo-gauss_cardan
-
-inv_grid_width = 1
-inv_grid_height = 1
-inv_grid_x = 18
-inv_grid_y = 3
-
-tier = 5
-snd_on_take = other
-
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-
-; verybad dumping grounds
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-[ammo_9x18_fmj_verybad]:ammo_9x18_fmj
-[ammo_9x18_pmm_verybad]:ammo_9x18_pmm
-[ammo_9x18_ap_verybad]:ammo_9x18_ap
-[ammo_9x19_fmj_verybad]:ammo_9x19_fmj
-[ammo_9x19_pbp_verybad]:ammo_9x19_pbp
-[ammo_9x19_ap_verybad]:ammo_9x19_ap
-[ammo_5.7x28_ss190_verybad]:ammo_5.7x28_ss190
-[ammo_5.7x28_ss195_verybad]:ammo_5.7x28_ss195
-[ammo_7.62x25_p_verybad]:ammo_7.62x25_p
-[ammo_7.62x25_ps_verybad]:ammo_7.62x25_ps
-[ammo_11.43x23_fmj_verybad]:ammo_11.43x23_fmj
-[ammo_11.43x23_hydro_verybad]:ammo_11.43x23_hydro
-[ammo_5.45x39_fmj_verybad]:ammo_5.45x39_fmj
-[ammo_5.45x39_ep_verybad]:ammo_5.45x39_ep
-[ammo_5.45x39_ap_verybad]:ammo_5.45x39_ap
-[ammo_5.56x45_fmj_verybad]:ammo_5.56x45_fmj
-[ammo_5.56x45_ss190_verybad]:ammo_5.56x45_ss190
-[ammo_5.56x45_ap_verybad]:ammo_5.56x45_ap
-[ammo_9x39_pab9_verybad]:ammo_9x39_pab9
-[ammo_9x39_ap_verybad]:ammo_9x39_ap
-[ammo_12x70_buck_verybad]:ammo_12x70_buck
-[ammo_12x76_zhekan_verybad]:ammo_12x76_zhekan
-[ammo_12x76_dart_verybad]:ammo_12x76_dart
-[ammo_7.62x39_fmj_verybad]:ammo_7.62x39_fmj
-[ammo_7.62x39_ap_verybad]:ammo_7.62x39_ap
-[ammo_7.92x33_fmj_verybad]:ammo_7.92x33_fmj
-[ammo_7.92x33_ap_verybad]:ammo_7.92x33_ap
-[ammo_7.62x51_fmj_verybad]:ammo_7.62x51_fmj
-[ammo_7.62x51_ap_verybad]:ammo_7.62x51_ap
-[ammo_pkm_100_verybad]:ammo_pkm_100
-[ammo_7.62x54_7h1_verybad]:ammo_7.62x54_7h1
-[ammo_7.62x54_ap_verybad]:ammo_7.62x54_ap
-[ammo_7.62x54_7h14_verybad]:ammo_7.62x54_7h14
-[ammo_12.7x55_fmj_verybad]:ammo_12.7x55_fmj
-[ammo_12.7x55_ap_verybad]:ammo_12.7x55_ap
-[ammo_magnum_300_verybad]:ammo_magnum_300
-[ammo_357_hp_mag_verybad]:ammo_357_hp_mag
diff --git a/mods/Anomaly Ballistics Overhaul/gamedata/configs/mod_system_ammoworldmodels.ltx b/mods/Anomaly Ballistics Overhaul/gamedata/configs/mod_system_ammoworldmodels.ltx
deleted file mode 100644
index d565b775..00000000
--- a/mods/Anomaly Ballistics Overhaul/gamedata/configs/mod_system_ammoworldmodels.ltx
+++ /dev/null
@@ -1,271 +0,0 @@
-![ammo_9x18_fmj]
-visual = dynamics\weapons\wpn_ammo\ammo_9x18_FMJ.ogf
-![ammo_9x18_fmj_bad]
-visual = dynamics\weapons\wpn_ammo\ammo_9x18_FMJ+.ogf
-![ammo_9x18_fmj_verybad]
-visual = dynamics\weapons\wpn_ammo\ammo_9x18_FMJ+.ogf
-![ammo_9x18_pmm]
-visual = dynamics\weapons\wpn_ammo\ammo_9x18_HP.ogf
-![ammo_9x18_pmm_bad]
-visual = dynamics\weapons\wpn_ammo\ammo_9x18_HP+.ogf
-![ammo_9x18_pmm_verybad]
-visual = dynamics\weapons\wpn_ammo\ammo_9x18_HP+.ogf
-![ammo_9x18_ap]
-visual = dynamics\weapons\wpn_ammo\ammo_9x18_AP.ogf
-![ammo_9x18_ap_bad]
-visual = dynamics\weapons\wpn_ammo\ammo_9x18_AP+.ogf
-![ammo_9x18_ap_verybad]
-visual = dynamics\weapons\wpn_ammo\ammo_9x18_AP+.ogf
-
-
-![ammo_9x19_fmj]
-visual = dynamics\weapons\wpn_ammo\ammo_9x19_FMJ.ogf
-![ammo_9x19_fmj_bad]
-visual = dynamics\weapons\wpn_ammo\ammo_9x19_FMJ+.ogf
-![ammo_9x19_fmj_verybad]
-visual = dynamics\weapons\wpn_ammo\ammo_9x19_FMJ+.ogf
-![ammo_9x19_pbp]
-visual = dynamics\weapons\wpn_ammo\ammo_9x19_HP.ogf
-![ammo_9x19_pbp_bad]
-visual = dynamics\weapons\wpn_ammo\ammo_9x19_HP+.ogf
-![ammo_9x19_pbp_verybad]
-visual = dynamics\weapons\wpn_ammo\ammo_9x19_HP+.ogf
-![ammo_9x19_ap]
-visual = dynamics\weapons\wpn_ammo\ammo_9x19_AP.ogf
-![ammo_9x19_ap_bad]
-visual = dynamics\weapons\wpn_ammo\ammo_9x19_AP+.ogf
-![ammo_9x19_ap_verybad]
-visual = dynamics\weapons\wpn_ammo\ammo_9x19_AP+.ogf
-
-![ammo_11.43x23_fmj]
-visual = dynamics\weapons\wpn_ammo\ammo_45_FMJ.ogf
-![ammo_11.43x23_fmj_bad]
-visual = dynamics\weapons\wpn_ammo\ammo_45_FMJ+.ogf
-![ammo_11.43x23_fmj_verybad]
-visual = dynamics\weapons\wpn_ammo\ammo_45_FMJ+.ogf
-![ammo_11.43x23_hydro]
-visual = dynamics\weapons\wpn_ammo\ammo_45_HP.ogf
-![ammo_11.43x23_hydro_bad]
-visual = dynamics\weapons\wpn_ammo\ammo_45_HP+.ogf
-![ammo_11.43x23_hydro_verybad]
-visual = dynamics\weapons\wpn_ammo\ammo_45_HP+.ogf
-
-![ammo_357_hp_mag]
-visual = dynamics\weapons\wpn_ammo\ammo_357_HP.ogf
-![ammo_357_hp_mag_bad]
-visual = dynamics\weapons\wpn_ammo\ammo_357_HP+.ogf
-![ammo_357_hp_mag_verybad]
-visual = dynamics\weapons\wpn_ammo\ammo_357_HP+.ogf
-
-![ammo_7.62x25_p]
-visual = dynamics\weapons\wpn_ammo\ammo_762x25_FMJ.ogf
-![ammo_7.62x25_p_bad]
-visual = dynamics\weapons\wpn_ammo\ammo_762x25_AP.ogf
-![ammo_7.62x25_p_verybad]
-visual = dynamics\weapons\wpn_ammo\ammo_762x25_AP.ogf
-![ammo_7.62x25_ps]
-visual = dynamics\weapons\wpn_ammo\ammo_762x25_HP.ogf
-![ammo_7.62x25_ps_bad]
-visual = dynamics\weapons\wpn_ammo\ammo_762x25_AP+.ogf
-![ammo_7.62x25_ps_verybad]
-visual = dynamics\weapons\wpn_ammo\ammo_762x25_AP+.ogf
-
-![ammo_5.7x28_ss190]
-visual = dynamics\weapons\wpn_ammo\ammo_57x28_FMJ.ogf
-![ammo_5.7x28_ss190_bad]
-visual = dynamics\weapons\wpn_ammo\ammo_57x28_FMJ+.ogf
-![ammo_5.7x28_ss190_verybad]
-visual = dynamics\weapons\wpn_ammo\ammo_57x28_FMJ+.ogf
-![ammo_5.7x28_ss195]
-visual = dynamics\weapons\wpn_ammo\ammo_57x28_AP.ogf
-![ammo_5.7x28_ss195_bad]
-visual = dynamics\weapons\wpn_ammo\ammo_57x28_AP+.ogf
-![ammo_5.7x28_ss195_verybad]
-visual = dynamics\weapons\wpn_ammo\ammo_57x28_AP+.ogf
-
-;==========
-![ammo_5.45x39_fmj]
-visual = dynamics\weapons\wpn_ammo\ammo_545x39_FMJ.ogf
-![ammo_5.45x39_fmj_bad]
-visual = dynamics\weapons\wpn_ammo\ammo_545x39_FMJ+.ogf
-![ammo_5.45x39_fmj_verybad]
-visual = dynamics\weapons\wpn_ammo\ammo_545x39_FMJ+.ogf
-![ammo_5.45x39_ep]
-visual = dynamics\weapons\wpn_ammo\ammo_545x39_HP.ogf
-![ammo_5.45x39_ep_bad]
-visual = dynamics\weapons\wpn_ammo\ammo_545x39_HP+.ogf
-![ammo_5.45x39_ep_verybad]
-visual = dynamics\weapons\wpn_ammo\ammo_545x39_HP+.ogf
-![ammo_5.45x39_ap]
-visual = dynamics\weapons\wpn_ammo\ammo_545x39_AP.ogf
-![ammo_5.45x39_ap_bad]
-visual = dynamics\weapons\wpn_ammo\ammo_545x39_AP+.ogf
-![ammo_5.45x39_ap_verybad]
-visual = dynamics\weapons\wpn_ammo\ammo_545x39_AP+.ogf
-
-![ammo_5.56x45_fmj]
-visual = dynamics\weapons\wpn_ammo\ammo_556x45_FMJ.ogf
-![ammo_5.56x45_fmj_bad]
-visual = dynamics\weapons\wpn_ammo\ammo_556x45_FMJ+.ogf
-![ammo_5.56x45_fmj_verybad]
-visual = dynamics\weapons\wpn_ammo\ammo_556x45_FMJ+.ogf
-![ammo_5.56x45_ss190]
-visual = dynamics\weapons\wpn_ammo\ammo_556x45_HP.ogf
-![ammo_5.56x45_ss190_bad]
-visual = dynamics\weapons\wpn_ammo\ammo_556x45_HP+.ogf
-![ammo_5.56x45_ss190_verybad]
-visual = dynamics\weapons\wpn_ammo\ammo_556x45_HP+.ogf
-![ammo_5.56x45_ap]
-visual = dynamics\weapons\wpn_ammo\ammo_556x45_AP.ogf
-![ammo_5.56x45_ap_bad]
-visual = dynamics\weapons\wpn_ammo\ammo_556x45_AP+.ogf
-![ammo_5.56x45_ap_verybad]
-visual = dynamics\weapons\wpn_ammo\ammo_556x45_AP+.ogf
-
-![ammo_7.62x39_fmj]
-visual = dynamics\weapons\wpn_ammo\ammo_762x39_FMJ.ogf
-![ammo_7.62x39_fmj_bad]
-visual = dynamics\weapons\wpn_ammo\ammo_762x39_FMJ+.ogf
-![ammo_7.62x39_fmj_verybad]
-visual = dynamics\weapons\wpn_ammo\ammo_762x39_FMJ+.ogf
-![ammo_7.62x39_ap]
-visual = dynamics\weapons\wpn_ammo\ammo_762x39_AP.ogf
-![ammo_7.62x39_ap_bad]
-visual = dynamics\weapons\wpn_ammo\ammo_762x39_AP+.ogf
-![ammo_7.62x39_ap_verybad]
-visual = dynamics\weapons\wpn_ammo\ammo_762x39_AP+.ogf
-
-![ammo_9x39_pab9]
-visual = dynamics\weapons\wpn_ammo\ammo_9x39_FMJ.ogf
-![ammo_9x39_pab9_bad]
-visual = dynamics\weapons\wpn_ammo\ammo_9x39_FMJ+.ogf
-![ammo_9x39_pab9_verybad]
-visual = dynamics\weapons\wpn_ammo\ammo_9x39_FMJ+.ogf
-![ammo_9x39_ap]
-visual = dynamics\weapons\wpn_ammo\ammo_9x39_AP.ogf
-![ammo_9x39_ap_bad]
-visual = dynamics\weapons\wpn_ammo\ammo_9x39_AP+.ogf
-![ammo_9x39_ap_verybad]
-visual = dynamics\weapons\wpn_ammo\ammo_9x39_AP+.ogf
-
-;==========
-![ammo_12x70_buck]
-visual = dynamics\weapons\wpn_ammo\ammo_12x70_Buck.ogf
-![ammo_12x70_buck_bad]
-visual = dynamics\weapons\wpn_ammo\ammo_12x70_Magnum.ogf
-![ammo_12x70_buck_verybad]
-visual = dynamics\weapons\wpn_ammo\ammo_12x70_Magnum.ogf
-![ammo_12x76_zhekan]
-visual = dynamics\weapons\wpn_ammo\ammo_12x70_Slug.ogf
-![ammo_12x76_zhekan_bad]
-visual = dynamics\weapons\wpn_ammo\ammo_12x70_SlugAP.ogf
-![ammo_12x76_zhekan_verybad]
-visual = dynamics\weapons\wpn_ammo\ammo_12x70_SlugAP.ogf
-![ammo_12x76_dart]
-visual = dynamics\weapons\wpn_ammo\ammo_12x70_Flechette.ogf
-![ammo_12x76_dart_bad]
-visual = dynamics\weapons\wpn_ammo\ammo_12x70_DB.ogf
-![ammo_12x76_dart_verybad]
-visual = dynamics\weapons\wpn_ammo\ammo_12x70_DB.ogf
-
-;==========
-![ammo_7.62x54_7h1]
-visual = dynamics\weapons\wpn_ammo\ammo_762x54_FMJ.ogf
-![ammo_7.62x54_7h1_bad]
-visual = dynamics\weapons\wpn_ammo\ammo_762x54_FMJ+.ogf
-![ammo_7.62x54_7h1_verybad]
-visual = dynamics\weapons\wpn_ammo\ammo_762x54_FMJ+.ogf
-![ammo_7.62x54_7h14]
-visual = dynamics\weapons\wpn_ammo\ammo_762x54_HP.ogf
-![ammo_7.62x54_7h14_bad]
-visual = dynamics\weapons\wpn_ammo\ammo_762x54_HP+.ogf
-![ammo_7.62x54_7h14_verybad]
-visual = dynamics\weapons\wpn_ammo\ammo_762x54_HP+.ogf
-![ammo_7.62x54_ap]
-visual = dynamics\weapons\wpn_ammo\ammo_762x54_AP.ogf
-![ammo_7.62x54_ap_bad]
-visual = dynamics\weapons\wpn_ammo\ammo_762x54_AP+.ogf
-![ammo_7.62x54_ap_verybad]
-visual = dynamics\weapons\wpn_ammo\ammo_762x54_AP+.ogf
-![ammo_pkm_100]
-visual = dynamics\weapons\wpn_ammo\ammo_762x54_FMJ.ogf
-![ammo_pkm_100_bad]
-visual = dynamics\weapons\wpn_ammo\ammo_762x54_FMJ+.ogf
-![ammo_pkm_100_verybad]
-visual = dynamics\weapons\wpn_ammo\ammo_762x54_FMJ+.ogf
-
-![ammo_7.62x51_fmj]
-visual = dynamics\weapons\wpn_ammo\ammo_762x51_FMJ.ogf
-![ammo_7.62x51_fmj_bad]
-visual = dynamics\weapons\wpn_ammo\ammo_762x51_FMJ+.ogf
-![ammo_7.62x51_fmj_verybad]
-visual = dynamics\weapons\wpn_ammo\ammo_762x51_FMJ+.ogf
-![ammo_7.62x51_ap]
-visual = dynamics\weapons\wpn_ammo\ammo_762x51_AP.ogf
-![ammo_7.62x51_ap_bad]
-visual = dynamics\weapons\wpn_ammo\ammo_762x51_AP+.ogf
-![ammo_7.62x51_ap_verybad]
-visual = dynamics\weapons\wpn_ammo\ammo_762x51_AP+.ogf
-
-![ammo_7.92x33_fmj]
-visual = dynamics\weapons\wpn_ammo\ammo_792x57_FMJ.ogf
-![ammo_7.92x33_fmj_bad]
-visual = dynamics\weapons\wpn_ammo\ammo_792x57_FMJ+.ogf
-![ammo_7.92x33_fmj_verybad]
-visual = dynamics\weapons\wpn_ammo\ammo_792x57_FMJ+.ogf
-![ammo_7.92x33_ap]
-visual = dynamics\weapons\wpn_ammo\ammo_792x57_AP.ogf
-![ammo_7.92x33_ap_bad]
-visual = dynamics\weapons\wpn_ammo\ammo_792x57_AP+.ogf
-![ammo_7.92x33_ap_verybad]
-visual = dynamics\weapons\wpn_ammo\ammo_792x57_AP+.ogf
-
-![ammo_12.7x55_fmj]
-visual = dynamics\weapons\wpn_ammo\ammo_127x55_FMJ.ogf
-![ammo_12.7x55_fmj_bad]
-visual = dynamics\weapons\wpn_ammo\ammo_127x55_FMJ+.ogf
-![ammo_12.7x55_fmj_verybad]
-visual = dynamics\weapons\wpn_ammo\ammo_127x55_FMJ+.ogf
-![ammo_12.7x55_ap]
-visual = dynamics\weapons\wpn_ammo\ammo_127x55_AP.ogf
-![ammo_12.7x55_ap_bad]
-visual = dynamics\weapons\wpn_ammo\ammo_127x55_AP+.ogf
-![ammo_12.7x55_ap_verybad]
-visual = dynamics\weapons\wpn_ammo\ammo_127x55_AP+.ogf
-
-![ammo_magnum_300]
-visual = dynamics\weapons\wpn_ammo\ammo_338_FMJ.ogf
-![ammo_magnum_300_bad]
-visual = dynamics\weapons\wpn_ammo\ammo_338_AP.ogf
-![ammo_magnum_300_verybad]
-visual = dynamics\weapons\wpn_ammo\ammo_338_AP.ogf
-
-;==========
-![ammo_4.6x30_fmj]
-visual = dynamics\weapons\wpn_ammo\ammo_46x30_AP.ogf
-![ammo_4.6x30_fmj_bad]
-visual = dynamics\weapons\wpn_ammo\ammo_46x30_FMJ.ogf
-
-![ammo_50_bmg]
-visual = dynamics\weapons\wpn_ammo\ammo_50_FMJ.ogf
-![ammo_50_bmg_bad]
-visual = dynamics\weapons\wpn_ammo\ammo_50_AP.ogf
-
-![ammo_12x76_bull]
-visual = dynamics\weapons\wpn_ammo\ammo_12x70_Bull.ogf
-
-;==========
-![ammo_23x75_shrapnel]
-visual = dynamics\weapons\wpn_ammo\ammo_23x75_Shrapnel.ogf
-![ammo_23x75_barrikada]
-visual = dynamics\weapons\wpn_ammo\ammo_23x75_Barrikada.ogf
-![ammo_23_eco]
-visual = dynamics\weapons\wpn_ammo\ammo_23x75_Ecologist.ogf
-![ammo_20x70_buck]
-visual = dynamics\weapons\wpn_ammo\ammo_20x70_Buck.ogf
-
-![ammo_9x21_sp10]
-visual = dynamics\weapons\wpn_ammo\ammo_9x21_FMJ.ogf
-
-![ammo_338_federal]
-visual = dynamics\weapons\wpn_ammo\ammo_338_FMJ+.ogf
diff --git a/mods/Anomaly Ballistics Overhaul/gamedata/configs/parts/importer.ltx b/mods/Anomaly Ballistics Overhaul/gamedata/configs/parts/importer.ltx
deleted file mode 100644
index b40015eb..00000000
--- a/mods/Anomaly Ballistics Overhaul/gamedata/configs/parts/importer.ltx
+++ /dev/null
@@ -1 +0,0 @@
-#include "parts_*.ltx"
\ No newline at end of file
diff --git a/mods/Anomaly Ballistics Overhaul/gamedata/configs/parts/parts_ammo.ltx b/mods/Anomaly Ballistics Overhaul/gamedata/configs/parts/parts_ammo.ltx
deleted file mode 100644
index 81f38bf2..00000000
--- a/mods/Anomaly Ballistics Overhaul/gamedata/configs/parts/parts_ammo.ltx
+++ /dev/null
@@ -1,120 +0,0 @@
-[salvage_high]
-salvage = old
-[salvage_low]
-salvage = new
-
-[part_defaults]
-degrade = 0.001
-parts = casing_p,1,powder_1,1,bullet_pistol,1
-
-[ammo_9x18_fmj]:part_defaults,salvage_low
-parts = casing_p,1,powder_1,1,bullet_pistol,1
-[ammo_9x18_ap]:part_defaults,salvage_low
-parts = casing_p,1,powder_1,1,bullet_pistol_ap,1
-
-[ammo_9x18_fmj_bad]:ammo_9x18_fmj,salvage_high
-[ammo_9x18_pmm]:ammo_9x18_fmj,salvage_low
-[ammo_9x18_pmm_bad]:ammo_9x18_fmj,salvage_high
-[ammo_9x18_ap_bad]:ammo_9x18_ap,salvage_high
-
-[ammo_9x19_ap]:ammo_9x18_ap,salvage_low
-[ammo_9x19_ap_bad]:ammo_9x18_ap,salvage_high
-[ammo_9x19_fmj]:ammo_9x18_fmj,salvage_low
-[ammo_9x19_fmj_bad]:ammo_9x18_fmj,salvage_high
-[ammo_9x19_pbp]:ammo_9x18_fmj,salvage_low
-[ammo_9x19_pbp_bad]:ammo_9x18_fmj,salvage_high
-
-[ammo_11.43x23_fmj]:part_defaults,salvage_low
-parts = casing_p,1,powder_1,1,bullet_pistol,2
-[ammo_11.43x23_fmj_bad]:ammo_11.43x23_fmj,salvage_high
-parts = casing_p,1,powder_1,1,bullet_pistol_ap,2
-[ammo_11.43x23_hydro]:part_defaults,salvage_low
-parts = casing_p,1,powder_1,1,bullet_pistol,2
-[ammo_11.43x23_hydro_bad]:ammo_11.43x23_hydro,salvage_high
-parts = casing_p,1,powder_1,2,bullet_pistol,2
-
-[ammo_7.62x25_p]:ammo_9x18_fmj,salvage_low
-[ammo_7.62x25_p_bad]:ammo_9x18_fmj,salvage_high
-[ammo_7.62x25_ps]:ammo_9x18_fmj,salvage_low
-[ammo_7.62x25_ps_bad]:ammo_9x18_fmj,salvage_high
-
-[ammo_5.7x28_ss190]:ammo_9x18_ap,salvage_low
-[ammo_5.7x28_ss190_bad]:ammo_9x18_ap,salvage_high
-[ammo_5.7x28_ss195]:ammo_9x18_fmj,salvage_low
-[ammo_5.7x28_ss195_bad]:ammo_9x18_fmj,salvage_high
-parts = casing_p,1,powder_1,1
-
-[ammo_357_hp_mag]:part_defaults,salvage_low
-parts = casing_p,1,powder_1,1,bullet_pistol,2
-[ammo_357_hp_mag_bad]:ammo_357_hp_mag,salvage_high
-
-[ammo_12x70_buck]:part_defaults,salvage_low
-parts = casing_s,1,powder_1,1,bullet_shotgun,1
-[ammo_12x70_buck_bad]:ammo_12x70_buck,salvage_high
-[ammo_12x76_zhekan]:ammo_12x70_buck
-parts = casing_s,1,powder_1,1,bullet_shotgun,2
-[ammo_12x76_zhekan_bad]:ammo_12x70_buck,salvage_high
-parts = casing_s,1,powder_1,1,bullet_shotgun_ap,2
-[ammo_12x76_dart]:ammo_12x70_buck
-parts = casing_s,1,powder_1,1,bullet_shotgun_ap,1
-[ammo_12x76_dart_bad]:ammo_12x76_dart,salvage_high
-parts = casing_s,1,powder_1,1
-
-[ammo_5.45x39_fmj]:part_defaults,salvage_low
-parts = casing_r5,1,powder_2,1,bullet_r5,1
-[ammo_5.45x39_fmj_bad]:ammo_5.45x39_fmj,salvage_high
-[ammo_5.45x39_ep]:ammo_5.45x39_fmj,salvage_low
-[ammo_5.45x39_ep_bad]:ammo_5.45x39_fmj,salvage_high
-[ammo_5.45x39_ap]:part_defaults,salvage_low
-parts = casing_r5,1,powder_2,1,bullet_r5_ap,1
-[ammo_5.45x39_ap_bad]:ammo_5.45x39_ap,salvage_high
-
-[ammo_5.56x45_fmj]:ammo_5.45x39_fmj,salvage_low
-[ammo_5.56x45_fmj_bad]:ammo_5.45x39_fmj,salvage_high
-[ammo_5.56x45_ss190]:ammo_5.45x39_fmj,salvage_low
-[ammo_5.56x45_ss190_bad]:ammo_5.45x39_fmj,salvage_high
-[ammo_5.56x45_ap]:ammo_5.45x39_ap,salvage_low
-[ammo_5.56x45_ap_bad]:ammo_5.45x39_ap,salvage_high
-
-[ammo_7.62x39_fmj]:ammo_5.45x39_fmj,salvage_low
-[ammo_7.62x39_fmj_bad]:ammo_5.45x39_fmj,salvage_high
-[ammo_7.62x39_ap]:ammo_5.45x39_ap,salvage_low
-[ammo_7.62x39_ap_bad]:ammo_5.45x39_ap,salvage_high
-parts = casing_r5,1,powder_2,1,bullet_r5_ap,1,powder_fire,2
-
-[ammo_9x39_pab9]:part_defaults,salvage_low
-parts = casing_r5,1,powder_2,1,bullet_r7,1
-[ammo_9x39_pab9_bad]:ammo_9x39_pab9,salvage_high
-[ammo_9x39_ap]:part_defaults,salvage_low
-parts = casing_r5,1,powder_2,1,bullet_r7_ap,1
-[ammo_9x39_ap_bad]:ammo_9x39_ap,salvage_high
-
-[ammo_7.62x51_fmj]:part_defaults,salvage_low
-parts = casing_r7,1,powder_3,1,bullet_r7,1
-[ammo_7.62x51_fmj_bad]:ammo_7.62x51_fmj,salvage_high
-[ammo_7.62x51_ap]:part_defaults,salvage_low
-parts = casing_r7,1,powder_3,1,bullet_r7_ap,1
-[ammo_7.62x51_ap_bad]:ammo_7.62x51_ap,salvage_high
-
-[ammo_7.62x54_7h1]:ammo_7.62x51_fmj,salvage_low
-[ammo_7.62x54_7h14]:ammo_7.62x51_fmj,salvage_high
-[ammo_7.62x54_7h14_bad]:ammo_7.62x51_fmj,salvage_low
-[ammo_7.62x54_7h1_bad]:ammo_7.62x51_fmj,salvage_high
-[ammo_7.62x54_ap]:ammo_7.62x51_ap,salvage_low
-[ammo_7.62x54_ap_bad]:ammo_7.62x51_ap,salvage_high
-parts = casing_r7,1,powder_3,1,bullet_r7_ap,1,powder_fire,2
-[ammo_pkm_100]:ammo_7.62x51_fmj,salvage_low
-[ammo_pkm_100_bad]:ammo_7.62x51_fmj,salvage_high
-
-[ammo_7.92x33_fmj]:ammo_7.62x51_fmj,salvage_low
-[ammo_7.92x33_fmj_bad]:ammo_7.62x51_fmj,salvage_high
-[ammo_7.92x33_ap]:ammo_7.62x51_ap,salvage_low
-[ammo_7.92x33_ap_bad]:ammo_7.62x51_ap,salvage_high
-
-[ammo_magnum_300]:ammo_7.62x51_ap,salvage_low
-[ammo_magnum_300_bad]:ammo_7.62x51_ap,salvage_high
-
-[ammo_12.7x55_fmj]:ammo_7.62x51_fmj,salvage_low
-[ammo_12.7x55_fmj_bad]:ammo_7.62x51_fmj,salvage_high
-[ammo_12.7x55_ap]:ammo_7.62x51_ap,salvage_low
-[ammo_12.7x55_ap_bad]:ammo_7.62x51_ap,salvage_high
\ No newline at end of file
diff --git a/mods/Anomaly Ballistics Overhaul/gamedata/configs/plugins/recoil/importer.ltx b/mods/Anomaly Ballistics Overhaul/gamedata/configs/plugins/recoil/importer.ltx
deleted file mode 100644
index 7111059d..00000000
--- a/mods/Anomaly Ballistics Overhaul/gamedata/configs/plugins/recoil/importer.ltx
+++ /dev/null
@@ -1 +0,0 @@
-#include "wpn_*.ltx"
diff --git a/mods/Anomaly Ballistics Overhaul/gamedata/configs/plugins/recoil/wpn_.ltx b/mods/Anomaly Ballistics Overhaul/gamedata/configs/plugins/recoil/wpn_.ltx
deleted file mode 100644
index e80bed86..00000000
--- a/mods/Anomaly Ballistics Overhaul/gamedata/configs/plugins/recoil/wpn_.ltx
+++ /dev/null
@@ -1,444 +0,0 @@
-;-- Weapons shoot effects
-
-;--
-[generic_default]
-kick_recoil = 0.4, 0.3, 0.2, 0.2, 0.2
-
-[generic_w_pistol]
-kick_recoil = 0.4, 0.3, 0.2, 0.2, 0.2
-
-[generic_w_smg]
-kick_recoil = 0.2, 0.4, 0.2, 0.2, 0.2
-
-[generic_w_smg_good]
-kick_recoil = 0, 0.1, 0.2, 0.3, 0.4
-
-[generic_w_rifle]
-kick_recoil = 0.1, 0.4, 0.3, 0.2, 0.2
-
-[generic_w_abakan]
-kick_recoil = 0, 0.6, 0.2, 0.2, 0.2
-
-[generic_w_shotgun]
-kick_recoil = 1.0, 1.0, 1.0, 1.0, 1.0
-
-[generic_w_sniper]
-kick_recoil = 0.1, 0.1, 0.1, 0.1, 0.1
-
-;-- s:effect power [1-5]
-;-- r,e:anim effects
-;-- p:ppe effects
-
-[wpn_aps]:generic_w_pistol
-s = 1
-r = 0
-e = 0.5, 0.3, 0.4:1, 0.6:0, 0.6:0, 0
-p =
-
-[wpn_pb]:generic_w_pistol
-s = 1
-r = 0
-e = 0.5, 0.4, 0.3:0, 0.4:0, 0.4:0, 0
-p =
-
-[wpn_beretta]:generic_w_pistol
-s = 1
-r = 0
-e = 0.8, 0.6, 0.4:0, 0.8, 0.8:0, 0.3
-p = blur=0
-
-[wpn_cz75]:generic_w_pistol
-s = 1
-r = 0
-e = 0.5, 0.3, 0.4:0, 0.5:0, 0.5:0, 0
-p =
-
-[wpn_hpsa]:generic_w_pistol
-s = 1
-r = 0
-e = 0.6, 0.5, 0.6:0, 0.8:0, 0.8:0, 0
-p =
-
-[wpn_mp5]:generic_w_smg_good
-s = 1
-r = 0
-e = 0.1, 0.1, 0.3:0, 0.3, 0.3:0, 0.2
-p = blur=0
-
-[wpn_desert_eagle]:generic_w_pistol
-s = 2
-r = 1
-e = 1.2, 0.8, 0.9:1, 1.8, 2:0, 0.7
-p = blur=0, duality_h=0.04
-
-[wpn_desert_eagle_custom]:generic_w_pistol
-s = 2
-r = 1
-e = 1.2, 0.8, 0.9:1, 1.8, 2:0, 0.6
-p = blur=0, duality_h=0.03
-
-[wpn_aug]:generic_w_rifle
-s = 1
-r = 0
-e = 0.1, 0.2:0, 0.3:0, 0.2, 0.2:0, 0.2
-p = blur=0
-
-[wpn_9a91]:generic_w_rifle
-s = 1
-r = 0
-e = 0, 1:0, 1:0, 1:0, 1:0, 0.4
-p = blur=0
-
-[wpn_groza]:generic_w_rifle
-s = 1
-r = 0
-e = 0.3, 0.3:0, 0.4:0, 0.3:0, 0.4:0, 0.2
-p = blur=0
-
-[wpn_vintorez]:generic_w_sniper
-s = 1
-r = 0
-e = 0, 0.6:0, 0.6:0, 0.4, 0.6:0, 0.2
-p = blur=0
-
-[wpn_abakan]:generic_w_abakan
-s = 1
-r = 0
-e = 0.3, 0.3:0, 0.3:0, 0.3, 0.3:0, 0.2
-p = blur=0
-
-[wpn_ak]:generic_w_rifle
-s = 1
-r = 0
-e = 0.6, 0.8:0, 0.8:0, 0.6, 1.2:0, 0.3
-p = blur=0
-
-[wpn_l96a1]:generic_w_sniper
-s = 2
-r = 1
-e = 1:0, 1:0, 1.5:1, 1:0, 1:0, 1
-p = blur=0
-
-[wpn_mosin]:generic_w_sniper
-s = 2 ; 4
-r = 1
-e = 1:0, 1:0, 1.5:1, 2:0, 2:0, 1:1
-p = blur=0
-
-[wpn_gauss]:generic_w_sniper
-s = 1
-r = 1
-e = 0, 1:0, 1:0, 1, 1.2:1, 0.2
-p = blur=0
-
-[wpn_bm16]:generic_w_shotgun
-s = 2
-r = 1
-e = 1, 1, 1, 1, 2, 1
-p = blur=0, duality_v=0.06
-
-[wpn_bm16_full]:generic_w_shotgun
-s = 2
-r = 1
-e = 1, 1, 1, 1, 2, 1
-p = blur=0, grey=0.05, duality_v=0.02
-
-[wpn_mossberg590]:generic_w_shotgun
-s = 1
-r = 1
-e = 0.8, 0.8, 0.6, 1, 0.8, 0.6
-p = grey=0.05, duality_v=0.02
-
-[wpn_protecta]:generic_w_shotgun
-s = 1
-r = 0
-e = 1, 0.8, 0.8, 1, 0.8, 0.8
-p = grey=0.02, duality_v=0.02
-
-[wpn_saiga12s]:generic_w_shotgun
-s = 1
-r = 0
-e = 1, 0.8, 0.8, 1, 1, 1
-p = grey=0.02, duality_v=0.02
-
-[wpn_wincheaster1300]:generic_w_shotgun
-s = 1
-r = 1
-e = 1, 0.8, 1, 1.2, 0.8, 0.6
-p = grey=0.02, duality_v=0.02
-
-[wpn_m79]:generic_w_rifle
-s = 2
-r = 1
-e = 1, 0.9, 1, 0.8, 0.8, 0.6
-p = grey=0.05, duality_v=0.04
-
-[wpn_rpg7]:generic_w_sniper
-s = 3
-r = 1
-e = 0, 1:1, 2:1, 0, 3:1, 0
-p = duality_h=0.05
-
-[wpn_fort]:wpn_aps
-[wpn_fort_snag]:wpn_aps
-[wpn_kiparis]:wpn_aps
-[wpn_oc33]:wpn_aps
-[wpn_pb_custom]:wpn_pb
-[wpn_pm]:wpn_aps
-[wpn_pm_custom]:wpn_aps
-[wpn_pmm]:wpn_aps
-[wpn_pm_actor]:wpn_aps
-[wpn_bizon]:wpn_aps
-;--
-;-- 9x19mm
-;--
-[wpn_beretta_camo]:wpn_beretta
-[wpn_beretta_modern]:wpn_beretta
-[wpn_beretta_alt]:wpn_beretta
-[wpn_cz75_auto]:wpn_cz75
-[wpn_glock]:wpn_cz75
-[wpn_glock_custom]:wpn_cz75
-[wpn_glock_modern]:wpn_cz75
-[wpn_mp443]:wpn_cz75
-[wpn_gsh18]:wpn_beretta
-[wpn_gsh18_custom]:wpn_beretta
-[wpn_hpsa_alt]:wpn_hpsa
-[wpn_usp_match]:wpn_hpsa
-[wpn_usp_nimble]:wpn_hpsa
-[wpn_walther_p99]:wpn_hpsa
-[wpn_mp5_custom]:wpn_mp5
-[wpn_mp5_alt]:wpn_mp5
-[wpn_mp5_nimble]:wpn_mp5
-[wpn_mp5sd]:wpn_mp5
-[wpn_mp5sd_custom]:wpn_mp5
-[wpn_mp5sd_new]:wpn_mp5
-[wpn_pp2000]:wpn_aps
-[wpn_vityaz]:wpn_aps
-[wpn_vz61]:wpn_aps
-[wpn_vz61_freedom]:wpn_aps
-[wpn_vz61_camo]:wpn_aps
-[wpn_vz61_alt]:wpn_aps
-[wpn_walther]:wpn_aps
-[wpn_walther_custom]:wpn_aps
-[wpn_mp7]:wpn_mp5
-;--
-;-- .45 ACP
-;--
-[wpn_colt1911]:wpn_beretta
-[wpn_colt911_n]:wpn_beretta
-[wpn_colt1911_duty]:wpn_beretta
-[wpn_colt1911_merc]:wpn_beretta
-[wpn_colt1911_camo]:wpn_beretta
-[wpn_colt1911_custom]:wpn_beretta
-[wpn_colt1911_modern]:wpn_beretta
-[wpn_colt1911_alt]:wpn_beretta
-[wpn_colt1911_new]:wpn_beretta
-[wpn_colt_kimber]:wpn_beretta
-[wpn_fnp45]:wpn_beretta
-[wpn_fnp45_custom]:wpn_beretta
-[wpn_fnx45]:wpn_beretta
-[wpn_fnx45_custom]:wpn_beretta
-[wpn_fnx45_alt]:wpn_beretta
-[wpn_sig220]:wpn_beretta
-[wpn_sig220_n]:wpn_beretta
-[wpn_sig226]:wpn_beretta
-[wpn_sig220_custom]:wpn_beretta
-[wpn_sig220_nimble]:wpn_beretta
-[wpn_ump45]:wpn_mp5
-[wpn_ump45_custom]:wpn_mp5
-[wpn_usp]:wpn_beretta
-[wpn_usp_custom]:wpn_beretta
-;--
-;-- 7.62 Tokarev
-;--
-[wpn_tt33]:wpn_beretta
-[wpn_tt33_modern]:wpn_beretta
-[wpn_ppsh41]:wpn_aps
-[wpn_ppsh41_woodnew]:wpn_aps
-[wpn_ppsh41_woodworn]:wpn_aps
-[wpn_ppsh41_rednew]:wpn_aps
-[wpn_ppsh41_redworn]:wpn_aps
-;--
-;-- .357 Magnum
-;--
-[wpn_desert_eagle_modern]:wpn_desert_eagle_custom
-[wpn_desert_eagle_nimble]:wpn_beretta
-[wpn_mp412]:wpn_desert_eagle_custom
-;--
-;-- 9x39
-;--
-[wpn_groza_nimble]:wpn_ak
-[wpn_val]:wpn_9a91
-[wpn_val_modern]:wpn_9a91
-[wpn_vihr]:wpn_9a91
-[wpn_vintorez_nimble]:wpn_vintorez
-[wpn_vsk94]:wpn_9a91
-[wpn_vintorez_n1]:wpn_vintorez
-[wpn_vintorez_m2]:wpn_vintorez
-[wpn_vintorez_m1]:wpn_vintorez
-;--
-;-- 5.45/5.56/7.62
-;--
-[wpn_abakan_camo]:wpn_abakan
-[wpn_ak12]:wpn_aug
-[wpn_ak12_custom]:wpn_aug
-[wpn_aek]:wpn_abakan
-[wpn_aek_camo]:wpn_abakan
-[wpn_aks]:wpn_ak
-[wpn_ak74]:wpn_groza
-[wpn_ak74_custom]:wpn_groza
-[wpn_ak74_modern]:wpn_groza
-[wpn_ak74_alt]:wpn_groza
-[wpn_ak74_old]:wpn_groza
-[wpn_ak74m]:wpn_groza
-[wpn_ak74m_duty]:wpn_groza
-[wpn_ak74m_camo]:wpn_groza
-[wpn_ak74m_custom]:wpn_groza
-[wpn_ak74m_alt]:wpn_groza
-[wpn_ak74m_pka]:wpn_groza
-[wpn_ak101]:wpn_groza
-[wpn_ak101_camo]:wpn_groza
-[wpn_ak102]:wpn_groza
-[wpn_aek_duty]:wpn_ak
-[wpn_ak103]:wpn_ak
-[wpn_ak103_camo]:wpn_ak
-[wpn_ak104]:wpn_groza
-[wpn_ak105]:wpn_groza
-[wpn_ak105_swamp]:wpn_groza
-[wpn_ak105_shakal]:wpn_groza
-[wpn_akm]:wpn_ak
-[wpn_akms]:wpn_ak
-[wpn_akms_alt]:wpn_ak
-[wpn_akms_bas]:wpn_ak
-[wpn_akm_bas]:wpn_ak
-[wpn_aks74]:wpn_groza
-[wpn_aks74_new]:wpn_groza
-[wpn_ak74u]:wpn_groza
-[wpn_ak74u_camo]:wpn_groza
-[wpn_ak74u_custom]:wpn_groza
-[wpn_ak74u_old]:wpn_groza
-[wpn_ak74u_snag]:wpn_groza
-[wpn_aug_freedom]:wpn_aug
-[wpn_aug_merc]:wpn_aug
-[wpn_aug_custom]:wpn_aug
-[wpn_aug_modern]:wpn_aug
-[wpn_aug_a3]:wpn_aug
-[wpn_fn2000]:wpn_aug
-[wpn_fn2000_camo]:wpn_aug
-[wpn_fn2000_custom]:wpn_aug
-[wpn_fn2000_nimble]:wpn_aug
-[wpn_g3]:wpn_ak
-[wpn_g3sg1]:wpn_aug
-[wpn_g36]:wpn_groza
-[wpn_g36_camo]:wpn_groza
-[wpn_g36k]:wpn_aug
-[wpn_g36_nimble]:wpn_groza
-[wpn_hk416]:wpn_groza
-[wpn_l85]:wpn_groza
-[wpn_l85_custom]:wpn_groza
-[wpn_l85_modern]:wpn_groza
-[wpn_l85_alt]:wpn_groza
-[wpn_l85a2]:wpn_aug
-[wpn_l85a2_custom]:wpn_aug
-[wpn_l85a2_modern]:wpn_aug
-[wpn_l85a2_alt]:wpn_aug
-[wpn_l96a1m]:wpn_l96a1
-[wpn_lr300]:wpn_aug
-[wpn_lr300_camo]:wpn_aug
-[wpn_lr300_custom]:wpn_aug
-[wpn_m4]:wpn_aug
-[wpn_m4a1]:wpn_aug
-[wpn_m4a1_freedom]:wpn_aug
-[wpn_m4a1_camo]:wpn_aug
-[wpn_m4a1_custom]:wpn_aug
-[wpn_ar15_freedom]:wpn_aug
-[wpn_m16]:wpn_groza
-[wpn_m16a2]:wpn_aug
-[wpn_m16a1]:wpn_aug
-[wpn_m16_m203]:wpn_abakan
-[wpn_pkm]:wpn_ak
-[wpn_pkp]:wpn_ak
-[wpn_pkm_zulus]:wpn_ak
-[wpn_rpd]:wpn_ak
-[wpn_rpk]:wpn_ak
-[wpn_rpk74]:wpn_groza
-
-[wpn_m249]:wpn_groza
-[wpn_scar]:wpn_ak
-[wpn_scar_custom]:wpn_ak
-[wpn_scar_new]:wpn_ak
-[wpn_sig550]:wpn_ak
-[wpn_sig550_camo]:wpn_ak
-[wpn_sig550_custom]:wpn_ak
-[wpn_sig550_sniper]:wpn_aug
-[wpn_sig550_luckygun]:wpn_ak
-[wpn_sig552]:wpn_groza
-[wpn_ace21]:wpn_groza
-[wpn_sv98]:wpn_l96a1
-[wpn_sv98_custom]:wpn_l96a1
-[wpn_svd]:wpn_mosin
-[wpn_svd_custom]:wpn_mosin
-[wpn_svd_nimble]:wpn_l96a1
-
-[wpn_svt40]:wpn_mosin
-[wpn_svt40_modern]:wpn_mosin
-[wpn_svu]:wpn_mosin
-[wpn_svu_alt]:wpn_mosin
-[wpn_svu_nimble]:wpn_mosin
-[wpn_sks]:wpn_mosin
-[wpn_sks_modern]:wpn_mosin
-[wpn_k98]:wpn_mosin
-[wpn_g43]:wpn_mosin
-[wpn_type63]:wpn_mosin
-[wpn_remington700]:wpn_mosin
-[wpn_wa2000]:wpn_mosin
-[wpn_m82]:wpn_mosin
-[wpn_fnfal]:wpn_aug
-[wpn_fal]:wpn_aug
-[wpn_mk14]:wpn_aug
-[wpn_hk417]:wpn_aug
-[wpn_fnc]:wpn_aug
-[wpn_ash12]:wpn_aug
-[wpn_galil]:wpn_ak
-[wpn_galil_custom]:wpn_ak
-[wpn_galil_modern]:wpn_ak
-;--
-;-- .338 magnum/12.7/gauss
-;--
-[wpn_m98b]:wpn_l96a1
-[wpn_m24]:wpn_l96a1
-[wpn_trg]:wpn_l96a1
-[wpn_vssk]:wpn_l96a1
-;--
-;-- 12x70_buck/12x76_zhekan
-;--
-[wpn_bm16_alt]:wpn_bm16
-[wpn_bm16_full_alt]:wpn_bm16_full
-[wpn_mp133]:wpn_mossberg590
-[wpn_mp153]:wpn_mossberg590
-[wpn_protecta_camo]:wpn_protecta
-[wpn_protecta_custom]:wpn_protecta
-[wpn_protecta_aim]:wpn_protecta
-[wpn_protecta_nimble]:wpn_protecta
-[wpn_spas12]:wpn_saiga12s
-[wpn_spas12_custom]:wpn_saiga12s
-[wpn_spas12_nimble]:wpn_saiga12s
-[wpn_toz34]:wpn_bm16_full
-[wpn_toz34_decor]:wpn_bm16_full
-[wpn_toz34_custom]:wpn_bm16_full
-[wpn_toz106_m1]:wpn_bm16_full
-[wpn_toz106]:wpn_bm16_full
-[wpn_toz34_mark4]:wpn_bm16_full
-[wpn_toz34_obrez]:wpn_bm16
-[wpn_toz34_obrez_decor]:wpn_bm16
-[wpn_toz34_obrez_custom]:wpn_bm16
-[wpn_usas12]:wpn_protecta
-[wpn_vepr]:wpn_saiga12s
-[wpn_wincheaster1300_trapper]:wpn_wincheaster1300
-[wpn_remington870]:wpn_saiga12s
-[wpn_fort500]:wpn_saiga12s
-
-[wpn_rg6]:wpn_m79
-[wpn_fn57]:wpn_cz75
-[wpn_p90]:wpn_cz75
-[wpn_sr25]:wpn_ak
diff --git a/mods/Anomaly Ballistics Overhaul/gamedata/configs/text/eng/st_ammo_parts.xml b/mods/Anomaly Ballistics Overhaul/gamedata/configs/text/eng/st_ammo_parts.xml
deleted file mode 100644
index 82548eed..00000000
--- a/mods/Anomaly Ballistics Overhaul/gamedata/configs/text/eng/st_ammo_parts.xml
+++ /dev/null
@@ -1,200 +0,0 @@
-
-
-
-
-
- Casing, handgun
-
-
- Small brass casings with primers used to produce handgun ammunition. \n \n
-
-
- Casing, shotgun
-
-
- Plastic shells with brass primers used to make shotgun ammunition. \n \n
-
-
- Casing, small rifle
-
-
- Medium-sized brass casings with primers for intermediate rifle cartridges. \n \n
-
-
- Casing, large rifle
-
-
- Large brass casings with primers for full-sized rifle cartridges. \n \n
-
-
- Propellant, pistol/shotgun
-
-
- Fast burning double-base propellant for use in shotguns and small handgun rounds. This variant of smokeless powder produces less overall energy than slower powders but burns more cleanly and quickly. \n \n
-
-
- Propellant, small rifle
-
-
- IMR propellant for light rifle catridges and some heavy handgun cartridges. This powder burns at a medium rate and produces a good amount of energy. Cannot be used in blowback handguns and shotguns as insufficient pressures will lead to incomplete burning, causing fouling. \n \n
-
-
- Propellant, large rifle
-
-
- High-yield, slow burning ball propellant for large rifle rounds. This powder produces the most energy and burns the slowest, thus it is only suitable for use in large caliber rifle ammunition fired from long-barrel weapons. \n \n
-
-
- Handgun bullets
-
-
- Variously sized handgun rounds salvaged from ammunition. These will be useful in crafting new ammunition. \n \n
-
-
- Handgun bullets, Armor piercing
-
-
- Variously sized handgun rounds salvaged from ammunition. These have alloy penetrators embedded in the bullet. Handgun rounds are usually too slow to penetrate armor, even with penetrators, unless overpressure loads are used. \n \n
-
-
- Lead shot
-
-
- #00 sized buckshot pellets used in hunting shotguns. These can also be melted down and cast into large slugs.
-
-
- Saboted darts
-
-
- Hardened steel dart rounds encased in a sabot. These are designed to be fired out of police shotguns to disable engine blocks, but do decently well against body armor. \n \n
-
-
- Small caliber rifle bullets
-
-
- Variously sized small caliber rifle bullets used in assault rifles. Military-manufactured and covered in a full metal jacket, optimized for accuracy.
-
-
- Small caliber rifle bullets, Armor piercing
-
-
- Variously sized smallbore rifle bullets with alloy penetrators used in assault rifles. These are special-issue rounds designed to defeat armor at standard engagement ranges, but do not tumble or fragment through the body as a result. \n \n
-
-
-
- Large caliber rifle bullets
-
-
- Full-size rifle bullets covered in a metal jacket. These are commonly used to load cartridges for hunting and military sniping use. \n \n
-
-
- Large caliber rifle bullets, Armor piercing
-
-
- Full-size rifle bullets with embedded alloy penetrators. These are found in special-issue cartridges used by military and special forces to defeat light vehicle armor from long range. \n \n
-
-
-
-
-
- Ammo Maker
-
-
- Ammo Salvage Chance
-
-
- Salvage multiplier for standard ammunition. This multiplier is placed on top of individual component salvage chances. For example, if you have a 50% chance to salvage casings and this slider is set to 60%, your final chance is (0.5 * 0.6) = 0.3, or 30% chance to recover casings.
-
-
-
- Ammo Salvage Multiplier
-
-
- Salvage multiplier for standard ammunition. This multiplier is placed on top of individual component salvage chances. For example, if you have a 50% chance to salvage casings and this slider is set to 60%, your final chance is (0.5 * 0.6) = 0.3, or 30% chance to recover casings.
-
-
-
- Good Ammo Salvage Multiplier
-
-
- Salvage multiplier for fancy ammunition (assuming using Anomaly Ballistic Framework). This multiplier is placed on top of individual component salvage chances. For example, if you have a 50% chance to salvage casings and this slider is set to 60%, your final chance is (0.5 * 0.6) = 0.3, or 30% chance to recover casings.
-
-
-
- Propellant Salvage Chance
-
-
- Chance to recover propellant/gunpowder when disassembling ammo.
-
-
-
- Casing Salvage Chance
-
-
- Chance to recover casings when disassembling ammo.
-
-
-
-
- Bullet Salvage Chance
-
-
- Chance to recover bullets when disassembling ammo.
-
-
-
-
-
- Thermal Artifact Fragments
-
-
- Pulverized remains of thermally active artifacts, for use in crafting certain types of ammo. Can be mixed into slow-burning powders to enhance their effectiveness, or be used in crafting incendiary rounds. Container is pleasantly warm to the touch.\n \n
-
-
- Volatile Artifact Fragments
-
-
- Pulverized remains of volatile artifacts, for use in crafting certain types of ammo. Glows faintly and vibrates in the container. \n \n
-
-
- Chemical Artifact Fragments
-
-
- Pulverized remains of chemically active artifacts, for use in crafting certain types of ammo. The toxic chemicals inside have been released, necessitating caution when handling. \n \n
-
-
- Gravitational Artifact Fragments
-
-
- Pulverized remains of artifacts that exert gravitational fields, for use in crafting certain types of ammo. Constantly rattles in the container. \n \n
-
-
- Jellyfish Fragments
-
-
- This item has been deprecated. If you have it, sorry! Please sell this.
-
-
- Electrical Artifact Fragments
-
-
- Pulverized remains of electrically active artifacts. Holding the container makes your hair stand on end. \n \n
-
-
-
- Incendiary powder
-
-
- Can of powder containing an incendiary mixture composed of magnesium, aluminum and barium nitrate. Usually purchased wholesale, this powder is found in small quantities in certain types of armor-piercing incendiary ammunition. Can also be synthesized from artifact fragments.\n \n
-
-
-
- crush into fragments
-
-
-
- batch disassemble [!]
-
-
\ No newline at end of file
diff --git a/mods/Anomaly Ballistics Overhaul/gamedata/configs/text/eng/st_ammo_recipes.xml b/mods/Anomaly Ballistics Overhaul/gamedata/configs/text/eng/st_ammo_recipes.xml
deleted file mode 100644
index b415b6f7..00000000
--- a/mods/Anomaly Ballistics Overhaul/gamedata/configs/text/eng/st_ammo_recipes.xml
+++ /dev/null
@@ -1,71 +0,0 @@
-
-
-
- GRAU Small Arms Report, Volume 1
-
-
- Classified documents stolen from a Russian research center and moved to the Zone temporarily for hiding. Contains specifications on current and experimental Russian rounds as well as empirical test data on round performance. Volume 1 only considers standard and special issue rounds for military and police work, including crowd control. For matters of information security, armor piercing ammunition schematics are moved to a higher security document.
-
-
-
- GRAU Small Arms Report, Volume 2
-
-
- Classified documents stolen from a Russian research center and moved to the Zone temporarily for hiding. Contains specifications on experimental Russian armor-piercing rounds of varying calibers as well as empirical test data on round performance. This volume is dedicated to armor piercing rounds, including material analysis on penetrator cores and details on different mechanisms to maximize damage after defeating armor. The pages concerning incendiary armor piercing rounds are mysteriously ripped out.
-
-
-
- Handguns for Self Defense
-
-
- American produced book detailing the various fine details in employing handguns for personal protection. Various common handguns and their ammunition types are covered, from the lowly .32 ACP up to increasingly impractical magnum loads. Interspersed throughout the book are extremely dubious 'first hand accounts', likely written by people who have never had to pull their weapons on targets that would shoot back or bite.
-
-
-
- Biggest Game: Taking Down Large Land Animals
-
-
- A detailed book concerning the sports of competition shooting and hunting large animals. Various types of ammunition and their purposes are detailed, along with detailed charts of performance and terminal ballistics in various conditions. Anatomy of several large game animals are also present, with notes on where to make efficient killshots - unfortunately, none of these normal creatures are present in the Zone.
-
-
-
- MIL-STD-1168C Manual M-5
-
-
- Broad technical document that covers all the specifications and dimensions of modern small arms ammunition under the NATO set of standards. Various esoteric calibers are covered for the sake of completeness, as well as brief blurbs about their history and comments from quartermasters and special forces operators.
-
-
-
- Applications of Artifacts on Small Arms, Rev. 3
-
-
- Research paper produced by the Ministry of Science with the help of various stalker groups. Over twenty different experiment types are listed, most of which ended in failures of varyingly catastrophic levels.
-
-
-
- Sin Ritual Book
-
-
- Mysterious book that appears to be constructed from several hand-written sheets of paper, with no authors or identifying marks. The information inside is surprisingly thorough and useful, almost like reading a wildlife guide. Considerable data is present on the Zone's many 'gifts' - divided among mutant anatomy, anomaly structure, and artifact properties. Dispersed amongst the information are various useful applications of the Zone's bounties: what parts of the Flesh may be extracted for a blood reestoring serum, for example, or how a Fruit Punch anomaly can be used to very carefully remove stains from clothing.
-
-
-
- Pyromaniac's Cookbook
-
-
- Charred notebook covered in fine traces of ash. Information inside concerns only that of things related to fire - Burner anomalies, Fireball artifacts, incendiary ammunition and grenades. Cobbled together from various sources, some printed, some handwritten.
-
-
-
- Artifact Experimentation Trials #22, "Prometheus"
-
-
- Scientific notebook detailing experiments with artifacts. In particular, there are several trials using small fragments of broken artifacts to alter the properties of combustible materials. The experiment logs detail a technique that allow for reliable and repeatable fine adjustment of smokeless powder combustion using otherwise worthless pieces of thermal artifact fragments, as well as chaotic and unstable reactions with liquid fuel.
-
-
- Artifact Experimentation Trials #67, "Philosopher's Stone"
-
-
- Scientific notebook detailing experiments with artifacts. A very extensive document focused on attempting to transmute metals to gold and silver. For the most part these experiments ended in various forms of failure, but there is documented success transmuting lead into significantly harder metals such as tungsten.
-
-
\ No newline at end of file
diff --git a/mods/Anomaly Ballistics Overhaul/gamedata/configs/text/eng/st_ballistics.xml b/mods/Anomaly Ballistics Overhaul/gamedata/configs/text/eng/st_ballistics.xml
deleted file mode 100644
index dee8097d..00000000
--- a/mods/Anomaly Ballistics Overhaul/gamedata/configs/text/eng/st_ballistics.xml
+++ /dev/null
@@ -1,80 +0,0 @@
-
-
-
-
-
- Ballistics Framework
-
-
-
- Developer logging.
-
-
- Custom Impair Values
-
-
- Apply the impair level in custom ammo config.
-
-
- Custom Cost Values
-
-
- Use the base cost defined in custom ammo config.
-
-
- Increased Mutant Health
-
-
- Artificially increases the mutant health of select mutants (Controllers, Chimeras, Bloodsuckers) when leveraging ballistics_utils.mutant_prot_values func. Note that zombies always have 10x hp to replicate a hidden script calculation.
-
-
- Ballistics Applies to Actor
-
-
- Applies custom calculations to incoming ballistic damage. Actor ID check can be used to stop custom effects, this is pending refactor.
-
-
- Burer Durability Options
-
-
- Changes the tanky behavior of burers. Options are as follows:
- \n \n Classic: How they are now (high armor, requires rifle rounds to defeat)
- \n \n Meaty: Reduces their armor to roughly Pseudodog levels and triples their health. Makes HP rounds more effective.
- \n \n Sith: Reduces their armor to roughly Pseudodog levels and they passively deflect low-velocity rounds.
-
-
- Classic
-
-
- Meaty
-
-
- Sith
-
-
- Snork Durability Options
-
-
- Changes snork protection. Snorks have abnormally high armor which makes them annoying to fight in this new system. Options are as follows:
- \n \n Normal: How they are now
- \n \n Fat: Double health, half armor.
- \n \n THICC: Triple health, quarter armor.
-
-
- Normal
-
-
- Fat
-
-
- THICC
-
-
- Leg Meta
-
-
- Reduces limb armor and limb damage takenby half. Higher AP rounds will suffer while hollowpoint rounds will be more effective. Gives an alternative, ammo-intensive option for taking down heavily armored foes.
-
-
\ No newline at end of file
diff --git a/mods/Anomaly Ballistics Overhaul/gamedata/configs/text/eng/st_items_ammo_new.xml b/mods/Anomaly Ballistics Overhaul/gamedata/configs/text/eng/st_items_ammo_new.xml
deleted file mode 100644
index 9d2e2fa7..00000000
--- a/mods/Anomaly Ballistics Overhaul/gamedata/configs/text/eng/st_items_ammo_new.xml
+++ /dev/null
@@ -1,996 +0,0 @@
-
-
-
-
-
-
-
-
-
-
- PROPERTIES:
-
-
- Damage multiplier
-
-
- Defeats armor level:
-
-
- Defeats armor level
-
-
- Expansion bonus
-
-
- Velocity modifier
-
-
- Accuracy modifier
-
-
- Wear multiplier
-
-
- Projectiles
-
-
- Special
-
-
- Blast Radius
-
-
- none
-
-
- I
-
-
- IIA
-
-
- II
-
-
- III
-
-
- IV
-
-
- V
-
-
- VI+
-
-
-
- chance to stagger human enemies
-
-
- chance to fragment, dealing extra damage
-
-
- expansion damage on full penetration
-
-
- headshots ignore some armor, center mass stuns
-
-
- steals life on hit
-
-
- bonus damage vs. mutants
-
-
- explodes on impact
-
-
- yes
-
-
- reduces armor on hit
-
-
- bonus damage and AP vs. unaware targets
-
-
- rapidly degrades weapon
-
-
- headshots ignore armor
-
-
- headshots stun, deal extra damage
-
-
- ignites targets, reduces armor
-
-
- chance to ignite targets
-
-
- fires three projectiles
-
-
- damage, aoe increases with target armor
-
-
- cover piercing
-
-
- headshots heal
-
-
- marks targets for 20% increased damage
-
-
- distance increases armor piercing
-
-
- ignites all targets
-
-
- explodes into 6 smaller bombs
-
-
-
- link to belt
-
-
- unlink belt
-
-
-
-
-
- 9x18mm FMJ rounds
-
-
- A full metal jacket round with a steel penetrator and a lead core under a metal jacket. Such rounds are the most common type of handgun round throughout the former Soviet Union. Provides good stopping power but is ineffective against heavy body armour.
-
-
- 9x18 FMJ
-
-
-
- 9x18mm +P+ FMJ rounds
-
-
- Full metal jacket round with overpressure powder load. Provides a 30% increase in muzzle velocity and commensurately increased stopping power and effectiveness against armor, at the cost of increased wear on the weapon.
-
-
- 9x18 +P+
-
-
-
- 9x18mm HP rounds
-
-
- Civilian-grade hollow-point 9x18mm round. Used primarily for hunting of small creatures and home defense. Quite a common find amongst Loners who bring their personal weapons to the Zone.
-
-
- 9x18 HP
-
-
-
- 9x18mm SP-7 rounds
-
-
- Military_spec jacketed hollowpoint bullet with a plastic plug and increased powder charge. Offers superior ballistics and remarkably flat shooting, making it popular amongst backline troops. Effective at stopping man and mutant alike, and as such is commonly used by the SSU in their sidearms and submachine guns.
-
-
- 9x18 SP-7
-
-
-
- 9x18mm RG028 rounds
-
-
- RG028 is a cartridge used for its armour penetration capabilities. The goal of the RG028 was to become a counter to body armour; for this reason, it's loaded with a hardened steel core. Unfortunately, the round itself isn't much of an improvement over the standard, only reliably penetrating soft body armor.
-
-
- 9x18 RG028
-
-
-
- 9x18mm 7N25 AP rounds
-
-
- Modern 9x18 armor-piercing handgun round with a carbon steel core and increased powder load. Unlike its predecessor RG028, this round is able to reliably defeat soft body armor and deal some damage to even rifle plates, but due to the powder charge and shape of the penetrator it suffers from reduced stopping power and increased wear on the weapon's internal components.
-
-
- 9x18 7N25
-
-
-
- 9x19mm FMJ rounds
-
-
- Basic and ubiquitous 9x19 caliber round with a jacketed bullet. Possesses good flight characteristics and appreciable stopping power while being simple to produce. The round is popular due to the fact that international conventions prohibit the use of expanding ammunition in combat. Ineffective against body armour.
-
-
- 9x19 FMJ
-
-
-
- 9x19mm FMJ +P+ rounds
-
-
- Standard 9x19 Parabellum round with an overpressure powder load. Overpressure loads shoot straighter and have increased stopping power compared to standard loads, but kick harder and wear on the weapon more.
-
-
- 9x19 FMJ+
-
-
-
- 9x19mm JHP rounds
-
-
- This 9x19 calibre jacketed hollow-point bullet with an expanding hollow has high stopping power and low ricochet propensity. Popular amongst police officers and concealed carry for its high stopping power. Ineffective against body armour due to its low penetration potential.
-
-
- 9x19 JHP
-
-
-
- 9x19mm Disruptor rounds
-
-
- Modified hand loaded 9mm JSP rounds. The metal jacket around the tip has been cut back like a Soft Point round, and the cartridge and powder charge modified for higher pressure. The tip of the bullet is coated in a thin slurry of gravitational artifacts that creates micro-singularities on impact. Created as an unconventional means for common stalkers to deal with heavily armored foes.
-
-
- 9x19 JSP
-
-
- 9x19mm AP rounds
-
-
- Russian-produced armor piercing pistol round designed to go in tandem with their newest suite of sidearms and submachine guns. Has a considerably higher muzzle velocity compared to other 9x19mm rounds and is much more effective at defeating armor. This is considered an 'overpressure' cartridge and thus caution must be used when firing this round. Relatively rare in the Zone and usually imported by mercenaries.
-
-
- 9x19 AP
-
-
-
- 9x19mm 7N31 AP rounds
-
-
- Enhanced Russian AP round with a stronger powder charge and lighter bullet. Provides much better peak performance and armor defeating capability than its predecessor, at the cost of higher wear. Extremely rare in the Zone and issued only to Spetsnaz or Russian Mercenaries.
-
-
- 9x19 7N31 AP
-
-
-
- .45 ACP rounds
-
-
- The .45 calibre full metal jacket round has enjoyed popularity for a hundred years thanks to its ballistic performance and a relatively small propelling charge. As a result, the bullet in this round is relatively slow but highly accurate and provides considerable stopping power.
-
-
- .45 ACP
-
-
- .45 ACP AP+P rounds
-
-
- .45 ACP round with an overpressure load to bring the terminal performance of the .45 bullet up to modern standards. Carbon steel penetrator has been added to the large bullet, adding some effectiveness in armor penetration without losing too much stopping power. Recommended to use in a modern handgun that is capable of withstanding the increased pressure, otherwise the round poses a danger to the operator.
-
-
- .45 AP+P
-
-
-
- .45 ACP JHP rounds
-
-
- Standard load .45 ACP round with a hollow point bullet. Infamously effective against unarmored human targets and is a mainstay round of most law enforcement. Surprisingly effective against mutants and makes for a popular option to protect against them.
-
-
- .45 HP
-
-
-
- .45 ACP 'RIP' rounds
-
-
- This experimental .45 ACP round is constructed from a chemical artifact fragment around which lead was 'grown' and molded into a bullet shape, then electroplated with nickel. The bullet is produced through classified experiments developed by the Ministry of Science in conjunction with Freedom-supplied research. Despite the hard metal coating the bullet readily fragments into several 'talons' which grants the round phenomeal stopping power at the cost of reduced penetration. Curiously, the bullets seem to create a localized anomaly around the point of shooting, affecting living things in the immediate vicnity. Speculators believe that unknown means draw the life energy from the victim to the shooter.
-
-
- .45 RIP
-
-
-
- .357 HP rounds
-
-
- The .357 HP round is a hollow-point bullet. The purpose of the round is to slow down upon impact, which decreases its penetration, but at the same time causes larger internal tissue damage. The high stopping power afforded by this round makes it extremely popular amongst Dutyers, especially to stop heavier mutants like boars.
-
-
- .357 HP
-
-
- .357 JFP Hand loaded rounds
-
-
- Hand loaded .357 round designed for hunters and target shooters. The bullet is flat and wrapped in a copper jacket. While lacking the sheer stopping power of hollow-point rounds, they fly straighter and penetrate armor to a much more effective degree. Transfers immense concussive force.
-
-
- .357 JFP
-
-
-
- 7.62x25mm P rounds
-
-
- The 7.62x25mm cartridge is a Russian bottle-necked pistol cartridge widely used in former Soviet satellite states, China and Pakistan among other countries. The cartridge is an enhanced Russian version of the 7.63x25mm Mauser. Possesses excellent penetration capabilities and can easily defeat lighter ballistic vests as well as kevlar helmets. Although most firearms chambered in this caliber are obsolete and removed from military inventories, the cartridge still sees widespread use because of the large quantity of stored ammunition available.
-
-
- 7.62x25 P
-
-
-
- 7.62x25mm Pst rounds
-
-
- The steel core 7.62x25mm cartridge is a Russian bottle-necked pistol cartridge widely used in former Soviet satellite states, China and Pakistan among other countries. It's effective against lightly armoured targets thanks to the steel core, without sacrificing much in the way of stopping power.
-
-
- 7.62x25 Pst
-
-
-
- 7.62x25mm HP rounds
-
-
- 7.62x25mm cartridge in hollowpoint sporting configuration. Still possesses respectable armor defeating capabilities due to the narrow bullet, and offers a respectable increase in stopping power.
-
-
- 7.62x25 HP
-
-
- 7.62x25mm Acid rounds
-
-
- Experimental rounds developed by a secret joint effort between elements of the Ukrainian Ministry of Science and members of the Clear Sky faction. These hollowpoint rounds are filled with a turquoise plug that feels like plastic to the touch. A certain treatment involving the use of Stone Blood artifacts and catalysis in the presence of aerosolized ammonia has resulted in the production of corrosive tips that, when exposed to the heat of a gunpowder explosion, reacts to form a substance that violently melts and consumes metal, fabric, wood, plastic, or stone. The material is safe to handle in its inert state and only reacts when fired out of a weapon.
-
-
- 7.62x25 Acid
-
-
-
- 5.7x28 FMJ rounds
-
-
- Civilian-grade SS196SR 5.7x28 FMJ round. Unlike the SS190, this round is not rated to defeat body armor. However, in practice this round is still capable of defeating light kevlar and thus is still used fairly commonly for that reason. Much cheaper and easier to acquire than its military armor-piercing brother, and is a good choice for the budget-conscious black operator looking to terrorize Loners.
-
-
- 5.7x28 FMJ
-
-
- 5.7x28 SS190 rounds
-
-
- The FN 5.7x28mm is a high velocity cartridge designed and manufactured by FN Herstal. It is a bottlenecked centrefire cartridge that is somewhat similar to the .22 Hornet or .22 K-Hornet. The 5.7x28mm was developed in conjunction with the FN P90 personal defense weapon (PDW) and FN Five-seven pistol, in response to perceived threats of body armor. As such, this type of projectile is capable of defeating rifle plates handedly, but its small size reduces its damage potential greatly.
-
-
- 5.7x28 AP
-
-
-
- 5.7x28 Unstable Core
-
-
- 5.7x28mm SS190 rounds with signs of unknown anomalous tampering. These are rarely found in the employ of Monolith and Sinners, and possess markers of treatment in the same vein as other experimental ammo types. While inert at rest, the rounds rapidly destabilize (in reality, not in flight) and behave erratically, making them highly unpredictable. Use with caution.
-
-
- 5.7x28 CHAOS
-
-
- 5.7x28mm SS195 rounds
-
-
- The SS195 FN 5.7x28mm is an expansive cartridge designed and manufactured by FN Herstal. It is a bottlenecked centrefire cartridge that is somewhat similar to the .22 Hornet or .22 K-Hornet. Popular sporting and hunting cartridge in the West that has made its way to the Zone for certain enthusiasts of the Five-seveN as a mutant defense handgun.
-
-
- 5.7x28 HP
-
-
-
-
-
- 12x70 #00 Buckshot
-
-
- Standard 12 gauge shell filled with 8mm #00 sized shot. Highly lethal at close range but effectiveness drops quickly. Very common in the Zone. Only suitable for use with smoothbore weapons.
-
-
- 12x70 Buck
-
-
-
- 12x70 Magnum Buckshot
-
-
- #00 Buckshot loaded with an increased powder charge. Provides a huge increase in stopping power and slightly better armor penetration at the cost of increased wear on the weapon. Excellent for hunting and the sheer force of the shot can seriously injure even protected limbs. If you're dropping monstrous mutants, better use some magnum buck.
-
-
- 12x70 Magnum
-
-
-
- 12x76 Slug shells
-
-
- This heavy 12 gauge slug round is normally used for hunting big game, but is also good for hunting men on a budget. Instead of piercing, this hefty slug is capable of crushing armor like a mace. Sheer concussive force makes this type of round extremely good at stopping people in their tracks.
-
-
- 12x76 Slug
-
-
- 12x76 AP Dart shells
-
-
- 12 gauge hardened steel armor-piercing dart round. Capable of providing equivalent armor penetration of rifle rounds with a considerable increase in stopping power. Extra powder load is used to propel the projectile to maximize damage to armor.
-
-
- 12x76 Dart
-
-
-
- 12x70 Flechette shells
-
-
- 12 gauge shotgun shell filled with 9 hardened steel spikes. Provides tight groupings, increased effective range and good armor penetration compared to buckshot, but lacks sheer stopping power. Suitable for defeating light body armor but ineffective against heavier armor, unless shots to the limbs are prioritized.
-
-
- 12x70 Flechette
-
-
- 12x70 'Dragon's Breath' shells
-
-
- 12 gauge shotgun shell loaded with small fragments of Fireball and Night Star artifacts. When fired, the gunpowder explosion sets off a runaway anomalous interaction that superheats the artifact pieces to temperatures equivalent to that of ignited thermite. The impact is devastating to flesh and melts most armors, but the extreme heat generated is hugely damaging to the weapon it is shot out of. Artifact fragments regrettably do not provide much armor defeating potential, so the primary source of damage comes from the ammo's ability to ignite targets.
-
-
- 12x70 Dragonsbreath
-
-
-
-
-
- 5.45x39mm FMJ rounds
-
-
- Steel-cased military 5.45x39 caliber round, designation 7N6, was the first standard issue round for automatic rifles of Warsaw Pact countries using the new intermediate cartridge. Provides better accuracy than the 7.62 calibre round thanks to reduced recoil and a 100-metre increase in range. Unique bullet design ensures consistent yawing on flesh peneteration, ensuring consistent stopping power. Typically found loaded in the rifles of backline troops, rear guards and poor schmucks patrolling the borders of the Exclusion Zone.
-
-
- 5.45x39 FMJ
-
-
-
- 5.45x39mm Tracer rounds
-
-
- Special-issue 5.45x39 caliber 7T3 tracer round. Used to adjust fire and designate targets. Suffers from mildly reduced performance compared to the standard issue FMJ round, but is valuable for coordinating fire in concentrated operations. Seldom used in the Zone except by the Military, and usually only carried by officers to coordinate fire.
-
-
- 5.45x39 Tracer
-
-
-
- 5.45x39mm Disruptor rounds
-
-
- Modified 5.45x39mm hollow point rounds developed by stalkers as a primitive form of experimentation with artifacts. Embedded in the hollow tip is a common artifact shard that creates a micro-gravitational pulse on impact. The impact, if it does not penetrate body armor, disorients and interrupts the enemy. A popular folk remedy for helping avoid well-armed foes - the rounds may not kill, but distract long enough to retreat to safety.
-
-
- 5.45x39 Disruptor
-
-
- 5.45x39mm HP rounds
-
-
- 5.45x39mm hollow-point rounds used by civilians for target shooting and police for special operations. Expands in the body as it travels, reducing penetration but increasing stopping power. Ineffective against body armor, though can overcome some soft armor with sheer force.
-
-
- 5.45x39 HP
-
-
-
- 5.45x39mm 7N10 EP rounds
-
-
- Standard-issue 5.45x39 caliber 7N10 is an enhanced penetration round for automatic rifles of Warsaw Pact countries. A harder and sleeker steel core is used to improve penetration. Standard issue round with modern SSU ground forces, and is readily found in stock with most military personnel. Improved penetration capabilities make a huge difference in combat effectiveness when fighting Mercenaries and Monolith forces.
-
-
- 5.45x39 EP
-
-
-
- 5.45x39mm 7N22 AP rounds
-
-
- Special-issue 5.45x39 caliber 7N22 armour-piercing round for automatic rifles of Warsaw Pact countries. The bullet contains a hard-alloy armour-piercing penetrator that is highly effective against body armour. Issued to Spetsnaz units conducting direct action against the most dangerous and well-armed foes, though a handful of these rounds rarely find their way into the hands of Dutyers.
-
-
- 5.45x39 AP
-
-
-
-
- 5.56x45mm FMJ rounds
-
-
- A standard-issue NATO 5.56x45 caliber M193 round that debuted along with the AR-15 family of rifles during the Vietnam War. While issues with the original stock of M193 ammo plagued U.S. soldiers in Vietnam, new manufacture rounds use the recommended IMR powder and retain the M193 round's signature fragmentation-derived stopping power. While relatively weak against modern armor, this round still enjoys high popularity in the Zone due to its flexibility as well as its reasonable cost.
-
-
- 5.56x45 FMJ
-
-
-
- 5.56x45mm Tracer rounds
-
-
- Special issue 5.56x45 Tracer round used for target designation and fire adjustment. Standard issue in most NATO militaries for officers, light machine gunners and sometimes used by rank and file to provide a visual warning for low ammo. These rounds can
-
-
- 5.56x45 Tracer
-
-
-
- 5.56x45mm HP rounds
-
-
- Hollow-point 5.56x45mm round commonly used in hunting and sport shooting. The open tip makes this round ineffective against armor, but provides for increased stopping power against unarmored enemies. Popular round for shooting mutants.
-
-
- 5.56x45 HP
-
-
-
- 5.56x45mm 'Varmageddon' rounds
-
-
- Imported 5.56x45 hunting cartridge specially designed to kill animals. The unique shape of the bullet enables projectiles to expand greatly in thick muscle and flesh of animals, inflicting catastrophic damage. The wounding effects in human targets are acceptable in comparison, but not as pronounced. These rounds enable Freedom fighters to stand toe to toe with the nastier mutants that are more prevalent up north.
-
-
- 5.56x45 Varma
-
-
-
- 5.56x45mm AP rounds
-
-
- The latest NATO military 5.56x45 caliber enhanced penetration round, known as M855A1, used by the US armed forces. The failure of the M855 round led to the development of both the Mk318 and this round, which offers both increased armor penetrating capabilities but also increased stopping power fired out of standard rifles. Difficult to find but extremely effective, especially against exosuit-level protection. Imported in bulk by unknown suppliers of the Mercenary group, and forms one of the bulk import items (alongside marijuana) that Freedom trades for.
-
-
- 5.56x45 AP
-
-
-
- 5.56x45mm EP rounds
-
-
- Relatively obsolete NATO 5.56x45 caliber round with a steel core. Initially developed as a means to counter body armor, the round, designated M855, lost the fragmentation properties that made the M193 such an effective round and thus traded a huge amount of stopping power for respectable armor defeating capability. Large quantities have made it to the Zone as most militaries have abandoned their stocks of this ineffectual round. Even despite the commonality, most stalkers only use these rounds begrudgingly.
-
-
- 5.56x45 EP
-
-
-
- 7.62x39mm FMJ rounds
-
-
- Steel case 7.62x39 M43 FMJ round that is ubiquitous in conflict zones, insurgencies and revolutions around the world. Provides high stopping power and strong armor defeating capabilities, but is hampered by its high recoil, reduced range and relative inaccuracy compared to the more modern 5.45 and 5.56 rounds. Extremely common in the Zone, as this type of round is also very popular for hunting and shooting for fun.
-
-
- 7.62x39 FMJ
-
-
- 7.62x39mm M67 FMJ rounds
-
-
- Brass cased 7.62x39 originally developed in Yugoslavia, but now used as a catch-all for the more modern manufacture brass-cased ammo. The round still features a mild steel core and provides slightly better performance to the M43 round, but the main selling point is the better feeding and reduced wear on the weapon. Clear Sky faction maintains an agreement with an unknown party to supply these rounds through their faction.
-
-
- 7.62x39 FMJ+
-
-
-
- 7.62x39mm AP rounds
-
-
- 7.62x39 7N23 round with a carbon steel core. These rounds are designed to neutralize enemy personnel behind light cover and defeat modern body armor that the M43 round normally struggles with. Thanks to the heavy weight, this round transfers more force on target compared to lighter 5.45 rounds, at the cost of accuracy and effective range. Issued on an increasing basis to SSU troops in order to combat the increasing presence of Monolith forces, as part of an agreement with the Russian government.
-
-
- 7.62x39 AP
-
-
-
- 7.62x39mm BZ API rounds
-
-
- 7.62x39 armor-piercing rounds with an incendiary component added to the base of the bullet. Designed to blow up vehicles by shooting the fuel tanks, the penetrator punches through any armor plating and the incendiary component creates sparks as they pass through, igniting fuel. While armored vehicles are an extreme shortage in the Zone, these rounds work extremely well as a means to inhumanely increase lethality against armored targets. Due to the incendiary component, the temperatures generated are high and increases heat generated in the weapon.
-
-
- 7.62x39 API
-
-
-
-
- 9x39mm SP-5 rounds
-
-
- The SP-5 is a subsonic rifle round with a bimetallic casing. The round contains a steel core with a gap behind it that is filled with lead. Canonically used in tandem with the VSS Vintorez, this round provides tight groupings and high stopping power, but is hampered by its steep trajectory and limited range. Requires a suppressor for stealth firing. Used by special services of Warsaw Pact countries.
-
-
- 9x39 SP-5
-
-
- 9x39mm SPP rounds
-
-
- The 9x39 SPP round is a modernized SP-5 round with a steel penetrator. Developed as an immediate successor to the SP-5, the SPP round capitalizes on and improves upon all the characteristics that make the SP-5 such an effective round. The redesigned bullet incorporates a steel penetrator core that enables the round to be more effective at defeating armor than the SP-5, and the shape and weight distribution of the bullet is improved upon to optimize its aerodynamic capabilities.
-
-
- 9x39 SPP
-
-
-
- 9x39mm PAB-9 rounds
-
-
- Old issue PAB-9 ammo that is no longer produced. In an effort to cut costs of producing SP-6 rounds, the penetrator core was stamped instead of machined and the propellant was replaced with a cheaper, dirtier mix. The end result is a cartridge that has performance mildly better than the SP-6, but suffers from instability in flight and very quickly destroys the weapon it is shot out of.
-
-
-
- 9x39 PAB-9
-
-
- 9x39mm SP-6 rounds
-
-
- The SP-6 is a subsonic armour-piercing round with a jacketed soft point bullet with a hard steel core that protrudes from the casing. Used in tandem with the AS VAL special assault rifle by elite Spetsnaz units. Requires a suppressor for stealth firing. Highly effective against body armour.
-
-
- 9x39 SP-6
-
-
-
-
-
-
- 7.62x54mm PP rounds
-
-
- Surplus 7.62x54mm 57-N-323S ammunition. The 7.62x54mm round is the second-oldest rifle cartridge still in use today, first produced in 1891 for the Mosin-Nagant rifle. The basic design of the bullet has not changed much since 1908, and remains very popular today amongst hunters and target shooters. These rounds are loose, but can be linked together for use in the PK machine gun.
-
-
- 7.62x54 PP
-
-
-
- 7.62x54mm 7N1 rounds
-
-
- A 7.62x54 sniper round for precision shooting at range. Designed specially for and in tandem with the SVD sniper rifle. Provides extremely tight groupings and consistent stopping power against lightly armored targets, but suffers slightly when dealing with heavy body armor. Popular round with all marksmen. Compatible with LMGs, but frankly using such a quality round in a machine gun is a complete waste.
-
-
- 7.62x54 7N1
-
-
-
- 7.62x54mm HP rounds
-
-
- Civilian grade 7.62x54 hunting rounds. The hollow point reduces penetration and increases stopping power, making it a good choice for hunters bringing down large animals without punching two holes in the valuable pelt. Very common in the Zone owing to the pedigree of a majority of Loners.
-
-
- 7.62x54 HP
-
-
- 7.62x54mm 'Headhunter' match rounds
-
-
- High-precision variant of the 7.62x54mm round, with a flat nose that provides tight groupings at medium to long ranges. These rounds are used for competition shooting where accuracy and precision are key, and thus these rounds are all carefully built to be exactly the same. The flat nosed round is designed for superior weight distribution and to punch clean holes through targets, and is tipped with a plastic plug to retain maximal aerodynamic performance. While the armor penetrating capabilities are lacking, the sheer force of impact due to the flat nose is enough to cause deadly concussions. In practice, snipers report that headshots with these rounds will lethally concuss targets, almost always guaranteeing a kill. Proper use of such rounds demands high skill.
-
-
- 7.62x54 FP
-
-
-
- 7.62x54mm AP rounds
-
-
- 7.62x54 7N13 armor piercing round. Features a hardened steel core and strong propellant charge. This round is normally designed for use in machine guns, especially those deployed for light anti armor purposes, but they work acceptably enough in sniper rifles to defeat heavy body armor at medium range. Due to the sheer power of the round, damage on unarmored targets remains extremely high.
-
-
- 7.62x54 AP
-
-
-
- 7.62x54mm BZAPI rounds
-
-
- 7.62x54 armor-piercing incendiary round designed to defeat light armor by penetrating external armor and igniting fuel tanks. Extremely and terrifyingly effective against mutants and men, as any and all protection is defeated by the armor piercing tip while the incendiary component causes catastrophic flesh damage. Generates a high temperature in the barrel, so frequent barrel changes are required when shooting out of a machine gun. In addition, this is nomally a machine gun round and thus it is not designed for precision - if using a rifle, be wary.
-
-
- 7.62x54 API
-
-
-
- 7.62x54mm PP rounds (linked)
-
-
- Surplus 7.62x54mm ammunition. The 7.62x54mm round is the second-oldest rifle cartridge still in use today, first produced in 1891 for the Mosin-Nagant rifle. The basic design of the bullet has not changed much since 1908, and remains very popular today amongst hunters and target shooters. These rounds are linked in a belt for use in the PK machine gun, but can be tediously unlinked to be used in other weapons.
-
-
- 7.62x54 PP MG
-
-
-
- 7.62x54mm Split Shot rounds
-
-
- 7.62x54mm machine gun rounds that split into three projectiles in flight. These projectiles have a short effective range comparable to handguns and some shotguns, but make up for it in sheer volume of fire. The rounds are anomalously tampered with to be extremely frangible at certain places, enough so that the stress of firing out of a barrel is enough to fracture the round into pieces. While seemingly counterintuitive, these rounds are used to great effect by members of Duty to provide a huge amount of short-range firepower in taking down mutant hordes, acting as a sort of heavy automatic shotgun. Due to the round's short range, there is no reason to fire this out of a rifle.
-
-
- 7.62x54 Split
-
-
-
-
- 7.62x51mm M80 ball rounds
-
-
- The 7.62x51 NATO round is a military variant of the .308 round which was used as a standard-issue by the NATO forces until 5.56 ammunition was introduced in the '70s in the Vietnam War. At present, it is most commonly employed by private military contractors all over the world. The 7.62x51 round is a very common and versatile machine gun caliber, and can also be used in battle or sniper rifles.
-
-
- 7.62x51 FMJ
-
-
-
- 7.62x51mm Mk316 Match rounds
-
-
- Specialized 7.62x51 round designed for long-range sniping. The tip is slightly hollowed out and the bullet is shaped specifically for maximal aerodynamic performance when shot out of long barrel rifles. Firing this round out of a battle rifle is frankly a waste, but the round will still perform admirably. Favored by Freedom snipers who will gladly trade any marijuana they have for boxes of these rounds.
-
-
- 7.62x51 Match
-
-
-
- 7.62x51mm M61 AP rounds
-
-
- Military 7.62x51 calibre M61 armor-piercing round with a hardened steel core. It retains high damage while greatly improving performance against body armor. Used often by Freedom snipers to eliminate armored Monolith targets.
-
-
- 7.62x51 AP
-
-
-
- 7.62x51mm M69 SLAP rounds
-
-
- Special-issue 7.62x51 round consisting of a 4mm tungsten dart encased in a plastic plug and short metal sabot. The plastic plug retains the shape of a normal FMJ round, making for easy feeding, and when fired the dense tungsten dart punches clean through light and medium vehicle armor, or any body armor. Due to the small size of the projectile, wounding effects are minimized. However, the penetrating capability makes it possible to shoot through cover or attack multiple targets in a row. Imported in limited quantities by Mercenaries to counter armored SSU divisions and to neutralize heavily armored Monolith threats.
-
-
- 7.62x51 SLAP
-
-
-
-
- 7.92x57mm Mauser rounds
-
-
- The 7.92x57 Mauser round was adopted by the German Empire and then the Third Reich. It was one of the most popular cartridges in the period of two world wars. However, nowadays, the round is primarily used for hunting and sports. Vast quantities of this round were seized from the losing faction of the Second World War and repurposed to ultimately shoot mutants with in the Zone.
-
-
- 7.92x57 FMJ
-
-
-
- 7.92x57mm Match hand load rounds
-
-
- Match grade 7.92x57 round with a hollow tip and boat-tail base bullet. Modern powder loads exert greater stress on historic rifles, but offer highly improved performance to compensate. Such rounds are popular with hunters and sport shooters for their flatness, tight groupings and reliable kill power for medium and large game.
-
-
- 7.92x57 Match
-
-
-
- 7.92x57mm SA rounds
-
-
- 7.92x57 SA is a round originally designed and used by the British military against armoured targets. It features a hardened steel core which gives it higher piercing capabilities. Used primarily for long range shots, the grain quality of this round is higher than the standard. Provides overall superior performance to its Wehrmacht counterpart. This cartridge is supported by several sniper rifles.
-
-
- 7.92x57 AP
-
-
-
- 7.92x57mm Lightning rounds
-
-
- 7.92x57 round with a bullet made from a reactive alloy of electrical artifacts. Similar to the Flash artifact, this projectile contains a tremendous amount of energy. However, the bullet is propelled by conventional means, with the high pressure and temperature of the gunpowder setting off a reaction with the artifact. On contact with a target, electrical energy is transferred. While this has limited stopping power against lightly armored targets, on heavily armored targets and powered armor the effect is devastating to both the target and the area around the target. Deals minimal damage to mutants and unarmored targets.
-
-
- 7.92x57 Shock
-
-
-
- 12.7x55mm STs-130 rounds
-
-
- The full metal jacket 12.7x55mm subsonic cartridge is used in the VKS bullpup sniper rifle. The cartridge can carry a projectile weighing between from 59 grams (911 grains) and 76 g (1173 grains), yielding massive amounts of kinetic energy. Commonly used by the SSU Spetsnaz when actions necessitate the clandestine recon and assassination of well-armored and well-equipped foes.
-
-
- 12.7x55
-
-
-
- 12.7x55mm STs-130 PT2 rounds
-
-
- Bronze 12.7x55mm subsonic cartridge used in the VKS bullpup sniper rifle. PT2 designation round is designed for high accuracy, good armor penetration and extreme stopping power at short to medium ranges. As this round is a relatively recent development, it is imported and fielded in highly limited capacity. General Voronin maintains a reserve of these rounds, along with VKS rifles, to be issued for clandestine assassination missions.
-
-
- 12.7x55 PT2
-
-
-
- 12.7x55 mm STs-130 VPS rounds
-
-
- The armour-piercing 12.7x55mm subsonic cartridge is used in the VKS bullpup sniper rifle. The hardened penetrator defeats most forms of body armor, but the true value in the round lies in its massive short-range stopping power, which is retained even despite the reduced capacity to fragment or yaw.
-
-
- 12.7x55 AP
-
-
- 12.7x55mm Explosive rounds
-
-
- A relatively new and restricted development, these experimental rounds have a small fragment of a destabilized thermal artifact wrapped in lead with a standard metal jacket. The round exhibits no anomalous effects when impacting most solid surfaces, but the artifact core releases a tremendous amount of energy on impacting a hard target. The lead casing and metal jacket become shrapnel for the explosion, like the outer case of a grenade. While the armor penetration is limited due to a majority of the energy being transferred radially outward, the force of the explosion will cause serious damage and disorientation to the target and anyone around them.
-
-
- 12.7x55 EXP
-
-
-
-
- .338 Lapua Magnum rounds
-
-
- The .338 Lapua Magnum is a specialised rimless bottlenecked centrefire cartridge developed for military long-range sniper rifles. The Afghanistan War and Iraq War made it a combat-proven round with ready and substantial ammunition availability. The .338 Lapua is a dual-purpose anti-personnel and anti-materiel round, but its anti-materiel potential is limited.
-
-
- .338 Lapua Magnum
-
-
-
- .338 'Soulripper' Sabot rounds
-
-
- .338 round consisting of a depleted uranium penetrator wrapped in a sabot and propelled with an anomalously powerful charge. Exhibits signs of anomalous tampering, as it is not physically possible for a projectile of this mass to fly with such velocity and deal as much damage as it does. Extremely rare, powerful, and dangerous to handle.
-
-
- .338 DU AP
-
-
-
- VOG-25 Grenade
-
-
- Regular fragmentation grenade for the GP-25 Kostyor underbarrel grenade launcher. This round has a 2.5 metre kill zone. The VOG-25 grenade is also used in the OTS-14 Groza and RG6 / 6G30 revolver-type grenade launcher.
-
-
- VOG-25 Grenade
-
-
-
- VOG-25 Cluster Grenade
-
-
- Modified VOG-25 grenade produced locally. Explosive payload is augmented with volatile artifact shards that produce several secondary explosions after a short delay. Primary detonation does not cause wounding but serves to scatter submunitions. In high demand from all factions due to the exponential increase in firepower offered. Exercise caution.
-
-
- VOG-25 Cluster
-
-
-
- VOG-25 Berserk Grenade
-
-
- Modified VOG-25 grenade created as an initial foray into leveraging psionic artifacts. On impact, creates a powerful signal that induces extreme anger and confusion in a small radius, causing affected creatures and humans to indiscriminately attack each other.
-
-
- VOG-25 Berserk
-
-
-
- 40x46 HE Grenade
-
-
- 40mm M406 grenade used in the M203 underbarrel grenade launcher and M79 single shot grenade launcher. This round has a 3.5 metre kill zone.
-
-
- 40mm HE
-
-
- 40x46 Incendiary Grenade
-
-
- 40mm grenade produced in special research facilities set up by the Ministry of Science. High explosive material is replaced by a brittle compound grown from thermal artifacts. On primary explosive detonation, a fine cloud of burning particles is scattered over a large area, igniting living creatures in the vicinity. No damage is dealt to nonliving things.
-
-
- 40mm Incendiary
-
-
- 40x46 Proximity Grenade
-
-
- 40mm self arming proximity mine. The impact fuse has been replaced by a synthetic artifact growth that activates when near a living creature. In order to now blow up the user, the detonation mechanism only fully arms about 1 second after launch, and automatically detonates the warhead after 60 seconds for safety reasons.
-
-
- 40mm Proximity
-
-
-
-
-
- .50 BMG M2 Ball Rounds
-
-
- .50 Browning Machine Gun (12.7x99mm) cartridge introduced in 1910 and adopted in 1921 along with the Browning M2 heavy machine gun. This round is very commonly used for man-portable anti-armor capabilities, where a single shot to the engine block is enough to disable a civilian vehicle or heavily damage a lightly armored military vehicle. Rarely imported in the Zone due to the lack of need - the Zone already does more than enough work destroying vehicles as it is.
-
-
- .50 Ball
-
-
- .50 BMG M2 AP Rounds
-
-
- .50 M2 AP round used to effectively counter more heavily armored vehicles and personnel. This round is capable of defeating any threat in the Zone, but will rarely be used due to its great weight, rarity and compatibility with weaponry. It is rumored Freedom has a secret stash of this ammo somewhere that is used to fend off Monolith threats in the Army Warehouses area.
-
-
- .50 AP
-
-
-
-
- 4.6x30mm FMJ rounds
-
-
- 4.6x30mm bottlenecked PDW round developed for the MP7. Capable of defeating soft body armor but is insufficient to defeat armor rated for rifle-grade threats. This full metal jacket projectile has a lead-antimony core and is optimized for damage to soft targets.
-
-
- 4.6x30 FMJ
-
-
- 4.6x30mm AP rounds
-
-
- German DM111 round with a hardened core. Lighter and faster, but loses a bit of stopping power in exchange. Given that the standard operating procedure for using the MP7 is to throw high volumes of fire with low-recoil rounds, it is not terribly concerning.
-
-
- 4.6x30 AP
-
-
- 12x90 'Bull' Magnum Slugs
-
-
- 12 gauge shell with stainless steel base and extremely high powder load. The projectile consists of a dense, copper-covered lead slug encased around a cone of depleted uranium. Ridiculously heavy and powerful round that requires a specially reinforced shotgun to be safely fired out of. The identity of the creator or buyers of these rounds and the shotguns they use remains a mystery.
-
-
- 12x90 Bull
-
-
-
diff --git a/mods/Anomaly Ballistics Overhaul/gamedata/configs/text/eng/st_items_new_ammo_bas_eng.xml b/mods/Anomaly Ballistics Overhaul/gamedata/configs/text/eng/st_items_new_ammo_bas_eng.xml
deleted file mode 100644
index af3587de..00000000
--- a/mods/Anomaly Ballistics Overhaul/gamedata/configs/text/eng/st_items_new_ammo_bas_eng.xml
+++ /dev/null
@@ -1,75 +0,0 @@
-
-
-
-
-
-
-
- 23x75mm "Shrapnel-25" shells
-
-
- 23mm shell with 8 #00 pellets. Application range up to 25 meters. It is used for firing from the KS-23 carbine. Due to the fact that the barrel has rifling in the KS-23 carbine, the buckshot flies over a large area, which allows you to shoot offhand, practically without aiming. Fielded in limited quantities with the KS-23 as a hunting round for extremely tough mutants.\n
-
-
- 23x75mm Shrapnel
-
-
-
- 23x75 "Barrikada" shells
-
-
- 23mm shell with a pointed steel bullet. Employed to forcibly stop vehicles by destroying the engine block. Application range up to 100 meters. Imported by esoteric stalkers for hunting very large creatures.
-
-
- 23x75mm Barrikada
-
-
-
- 9x21mm SP10 rounds
-
-
- Pistol cartridge with a bullet of increased penetration. Designed to destroy manpower protected by personal protective equipment. The nose part of the heat-strengthened steel core protrudes from the shell, due to which a high penetration effect of the bullet is achieved. Succeeded by the 9mm 7N21 and 7N31 special-issue rounds.
-
-
- 9x21 SP10
-
-
-
- 20x70 Buckshot shells
-
-
- Standard 20-caliber shell filled with 5 6mm buckshot pellets. Highly lethal at close range. Due to the reduced powder charge it suffers from reduced power compared to 12 gauge shotguns. The lighter recoil makes it more popular for novice hunters. Only suitable for use with smoothbore weapons.
-
-
- 20x70 Buck
-
-
-
- 23x75 "Cloudkill" Cartridge
-
-
- Special use cartridge developed by the Ecologist faction, part of an ongoing joint study with Duty. This cartridge contains a hollow metal ball filled with a liquid toxin derived from chemical anomalies. On impact with a target, the toxin vaporizes into a chemical cloud that severely weakens the targets and produces a similar effect on any nearby targets. Against all targets it induces lethargy and weakness, making them more susceptible to impacts and other forms of damage. With mutants specifically, the round weakens their ability to exert force, reducing the strength of their attacks. Specially ordered by Duty to increase the chances of surviving highly dangerous mutant raids by weakening the stronger monsters.
-
-
- 23x75 Poison Cloud
-
-
-
- creates weakening toxin clouds
-
-
-
-
-
- .338 Federal FMJ rounds
-
-
- The .338 Federal is a rifle cartridge based on the .308 Winchester case necked up to .33 caliber. It was created by Federal Cartridge and Sako in 2006 and intended as a big game cartridge with reasonable recoil for lightweight rifles.
-
-
- .338 Federal
-
-
-
diff --git a/mods/Anomaly Ballistics Overhaul/gamedata/configs/text/eng/st_recoil.xml b/mods/Anomaly Ballistics Overhaul/gamedata/configs/text/eng/st_recoil.xml
deleted file mode 100644
index 2855edea..00000000
--- a/mods/Anomaly Ballistics Overhaul/gamedata/configs/text/eng/st_recoil.xml
+++ /dev/null
@@ -1,32 +0,0 @@
-
-
-
-
-
-
-
- Enhanced Recoil
-
-
- Enable feature
-
-
- Enables enhanced recoil effects.
-
-
- Enable camera movement
-
-
- Moves the camera to create recoil patterns. If disruptive or annoying, this can be toggled off.
-
-
- Stance affects recoil
-
-
- Standing still stabilizes the weapon and reduces recoil. Movement increases recoil.
-
-
\ No newline at end of file
diff --git a/mods/Anomaly Ballistics Overhaul/gamedata/configs/text/eng/z_st_stats.xml b/mods/Anomaly Ballistics Overhaul/gamedata/configs/text/eng/z_st_stats.xml
deleted file mode 100644
index 0a8168b5..00000000
--- a/mods/Anomaly Ballistics Overhaul/gamedata/configs/text/eng/z_st_stats.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
-
- Armor Class
-
-
\ No newline at end of file
diff --git a/mods/Anomaly Ballistics Overhaul/gamedata/configs/text/rus/st_ammo_parts.xml b/mods/Anomaly Ballistics Overhaul/gamedata/configs/text/rus/st_ammo_parts.xml
deleted file mode 100644
index 0bb1b2e9..00000000
--- a/mods/Anomaly Ballistics Overhaul/gamedata/configs/text/rus/st_ammo_parts.xml
+++ /dev/null
@@ -1,100 +0,0 @@
-
-
-
-
-
-
-
-
- . 7.62x25 .357 Magnum.
-
-
-
-
-
- , .
-
-
-
-
-
- . 39 45 .
-
-
-
-
-
- .
-
-
- /
-
-
- . , .
-
-
-
-
-
- IMR , . . , , .
-
-
-
-
-
- , . , .
-
-
-
-
-
- , . .
-
-
-
-
-
- , . , , , 5.7x28.
-
-
-
-
-
- . .
-
-
- Sabot
-
-
- , Sabot. , .
-
-
-
-
-
- , . .
-
-
-
-
-
- . .
-
-
-
-
-
-
- . .
-
-
-
-
-
- , .
-
-
-
- [!]
-
-
\ No newline at end of file
diff --git a/mods/Anomaly Ballistics Overhaul/gamedata/configs/text/rus/st_ammo_recipes.xml b/mods/Anomaly Ballistics Overhaul/gamedata/configs/text/rus/st_ammo_recipes.xml
deleted file mode 100644
index 58d28d0d..00000000
--- a/mods/Anomaly Ballistics Overhaul/gamedata/configs/text/rus/st_ammo_recipes.xml
+++ /dev/null
@@ -1,59 +0,0 @@
-
-
-
- GRAU Small Arms Report, Volume 1
-
-
- Classified documents stolen from a Russian research center and moved to the Zone temporarily for hiding. Contains specifications on current and experimental Russian rounds as well as empirical test data on round performance. Volume 1 only considers standard and special issue rounds for military and police work, including crowd control. For matters of information security, armor piercing ammunition schematics are moved to a higher security document.
-
-
-
- GRAU Small Arms Report, Volume 2
-
-
- Classified documents stolen from a Russian research center and moved to the Zone temporarily for hiding. Contains specifications on experimental Russian armor-piercing rounds of varying calibers as well as empirical test data on round performance. This volume is dedicated to armor piercing rounds, including material analysis on penetrator cores and details on different mechanisms to maximize damage after defeating armor. The pages concerning incendiary armor piercing rounds are mysteriously ripped out.
-
-
-
- Handguns for Self Defense
-
-
- American produced book detailing the various fine details in employing handguns for personal protection. Various common handguns and their ammunition types are covered, from the lowly .32 ACP up to increasingly impractical magnum loads. Interspersed throughout the book are extremely dubious 'first hand accounts', likely written by people who have never had to pull their weapons on targets that would shoot back or bite.
-
-
-
- Biggest Game: Taking Down Large Land Animals
-
-
- A detailed book concerning the sports of competition shooting and hunting large animals. Various types of ammunition and their purposes are detailed, along with detailed charts of performance and terminal ballistics in various conditions. Anatomy of several large game animals are also present, with notes on where to make efficient killshots - unfortunately, none of these normal creatures are present in the Zone.
-
-
-
- MIL-STD-1168C Manual M-5
-
-
- Broad technical document that covers all the specifications and dimensions of modern small arms ammunition under the NATO set of standards. Various esoteric calibers are covered for the sake of completeness, as well as brief blurbs about their history and comments from quartermasters and special forces operators.
-
-
-
- Applications of Artifacts on Small Arms, Rev. 3
-
-
- Research paper produced by the Ministry of Science with the help of various stalker groups. Over twenty different experiment types are listed, most of which ended in failures of varyingly catastrophic levels.
-
-
-
- Sin Ritual Book
-
-
- Mysterious book that appears to be constructed from several hand-written sheets of paper, with no authors or identifying marks. The information inside is surprisingly thorough and useful, almost like reading a wildlife guide. Considerable data is present on the Zone's many 'gifts' - divided among mutant anatomy, anomaly structure, and artifact properties. Dispersed amongst the information are various useful applications of the Zone's bounties: what parts of the Flesh may be extracted for a blood reestoring serum, for example, or how a Fruit Punch anomaly can be used to very carefully remove stains from clothing.
-
-
-
- Pyromaniac's Cookbook
-
-
- A notebook covered in fine traces of ash. Information inside concerns only that of things related to fire - Burner anomalies, Fireball artifacts, incendiary ammunition and grenades.Cobbled together from various sources, some printed, some handwritten.
-
-
-
\ No newline at end of file
diff --git a/mods/Anomaly Ballistics Overhaul/gamedata/configs/text/rus/st_items_ammo_new.xml b/mods/Anomaly Ballistics Overhaul/gamedata/configs/text/rus/st_items_ammo_new.xml
deleted file mode 100644
index 33beb678..00000000
--- a/mods/Anomaly Ballistics Overhaul/gamedata/configs/text/rus/st_items_ammo_new.xml
+++ /dev/null
@@ -1,917 +0,0 @@
-
-
-
-
-
-
-
-
-
-
- PROPERTIES:
-
-
- Damage multiplier
-
-
- Defeats armor level:
-
-
- Defeats armor level
-
-
- Expansion bonus
-
-
- Velocity modifier
-
-
- Accuracy modifier
-
-
- Wear multiplier
-
-
- Projectiles
-
-
- Special
-
-
- none
-
-
- I
-
-
- IIA
-
-
- II
-
-
- III
-
-
- IV
-
-
- V
-
-
- VI+
-
-
-
- chance to stagger human enemies
-
-
- chance to fragment, dealing extra damage
-
-
- expansion damage on full penetration
-
-
- headshots ignore some armor, center mass stuns
-
-
- high expansion damage, lifesteal
-
-
- deals bonus damage to mutants
-
-
- explodes on impact
-
-
- 60%-160% damage/ap range, random effects
-
-
- reduces armor on hit
-
-
- bonus damage and AP vs. unaware targets
-
-
- headshots ignore armor
-
-
- ignites targets, reduces armor
-
-
- chance to ignite targets
-
-
- fires three projectiles
-
-
- damage and aoe increases with target armor
-
-
- limited target piercing
-
-
- exponential ultra piercing, headshots heal
-
-
-
- link to belt
-
-
- unlink belt
-
-
-
-
-
- 9x18mm FMJ rounds
-
-
- A full metal jacket round with a steel penetrator and a lead core under a metal jacket. Such rounds are the most common type of handgun round throughout the former Soviet Union. Provides good stopping power but is ineffective against heavy body armour.
-
-
- 9x18 FMJ
-
-
-
- 9x18mm +P+ FMJ rounds
-
-
- Full metal jacket round with overpressure powder load. Provides a 30% increase in muzzle velocity and commensurately increased stopping power and effectiveness against armor, at the cost of increased wear on the weapon.
-
-
- 9x18 +P+
-
-
-
- 9x18mm HP rounds
-
-
- Civilian-grade hollow-point 9x18mm round. Used primarily for hunting of small creatures and home defense. Quite a common find amongst Loners who bring their personal weapons to the Zone.
-
-
- 9x18 HP
-
-
-
- 9x18mm SP-7 rounds
-
-
- Military_spec jacketed hollowpoint bullet with a plastic plug and increased powder charge. Offers superior ballistics and remarkably flat shooting, making it popular amongst backline troops. Effective at stopping man and mutant alike, and as such is commonly used by the SSU in their sidearms and submachine guns.
-
-
- 9x18 SP-7
-
-
-
- 9x18mm RG028 rounds
-
-
- RG028 is a cartridge used for its armour penetration capabilities. The goal of the RG028 was to become a counter to body armour; for this reason, it's loaded with a hardened steel core. Unfortunately, the round itself isn't much of an improvement over the standard, only reliably penetrating soft body armor.
-
-
- 9x18 RG028
-
-
-
- 9x18mm 7N25 AP rounds
-
-
- Modern 9x18 armor-piercing handgun round with a carbon steel core and increased powder load. Unlike its predecessor RG028, this round is able to reliably defeat soft body armor and deal some damage to even rifle plates, but due to the powder charge and shape of the penetrator it suffers from reduced stopping power and increased wear on the weapon's internal components.
-
-
- 9x18 7N25
-
-
-
- 9x19mm FMJ rounds
-
-
- Basic and ubiquitous 9x19 caliber round with a jacketed bullet. Possesses good flight characteristics and appreciable stopping power while being simple to produce. The round is popular due to the fact that international conventions prohibit the use of expanding ammunition in combat. Ineffective against body armour.
-
-
- 9x19 FMJ
-
-
-
- 9x19mm FMJ +P+ rounds
-
-
- Standard 9x19 Parabellum round with an overpressure powder load. Overpressure loads shoot straighter and have increased stopping power compared to standard loads, but kick harder and wear on the weapon more.
-
-
- 9x19 FMJ+
-
-
-
- 9x19mm JHP rounds
-
-
- This 9x19 calibre jacketed hollow-point bullet with an expanding hollow has high stopping power and low ricochet propensity. Popular amongst police officers and concealed carry for its high stopping power. Ineffective against body armour due to its low penetration potential.
-
-
- 9x19 JHP
-
-
-
- 9x19mm JSP +P rounds
-
-
- Match grade 9mm hand loaded JSP rounds. Soft Point rounds are semi-jacketed and expose the lead tip, and expand like hollowpoint rounds while retaining better armor penetration properties. These are custom-order rounds from folk craftsmen that have earned the nickname of 'Man stopper' due to their purported ability to stop men dead in their tracks.
-
-
- 9x19 JSP
-
-
- 9x19mm AP rounds
-
-
- Russian-produced armor piercing pistol round designed to go in tandem with their newest suite of sidearms and submachine guns. Has a considerably higher muzzle velocity compared to other 9x19mm rounds and is much more effective at defeating armor. This is considered an 'overpressure' cartridge and thus caution must be used when firing this round. Relatively rare in the Zone and usually imported by mercenaries.
-
-
- 9x19 AP
-
-
-
- 9x19mm 7N31 AP rounds
-
-
- Enhanced Russian AP round with a stronger powder charge and lighter bullet. Provides much better peak performance and armor defeating capability than its predecessor, at the cost of higher wear. Extremely rare in the Zone and issued only to Spetsnaz or Russian Mercenaries.
-
-
- 9x19 7N31 AP
-
-
-
- .45 ACP rounds
-
-
- The .45 calibre full metal jacket round has enjoyed popularity for a hundred years thanks to its ballistic performance and a relatively small propelling charge. As a result, the bullet in this round is relatively slow but highly accurate and provides considerable stopping power.
-
-
- .45 ACP
-
-
- .45 ACP AP+P rounds
-
-
- .45 ACP round with an overpressure load to bring the terminal performance of the .45 bullet up to modern standards. Carbon steel penetrator has been added to the large bullet, adding some effectiveness in armor penetration without losing too much stopping power. Recommended to use in a modern handgun that is capable of withstanding the increased pressure, otherwise the round poses a danger to the operator.
-
-
- .45 AP+P
-
-
-
- .45 ACP JHP rounds
-
-
- Standard load .45 ACP round with a hollow point bullet. Infamously effective against unarmored human targets and is a mainstay round of most law enforcement. Surprisingly effective against mutants and makes for a popular option to protect against them.
-
-
- .45 HP
-
-
-
- .45 ACP 'RIP' rounds
-
-
- This experimental .45 ACP round is constructed from a chemical artifact fragment around which lead was 'grown' and molded into a bullet shape, then electroplated with nickel. The bullet is produced through classified experiments developed by the Ministry of Science in conjunction with Freedom-supplied research. Despite the hard metal coating the bullet readily fragments into several 'talons' which grants the round phenomeal stopping power at the cost of reduced penetration. Curiously, the bullets seem to create a localized anomaly around the point of shooting, affecting living things in the immediate vicnity. Speculators believe that unknown means draw the life energy from the victim to the shooter.
-
-
- .45 RIP
-
-
-
- .357 HP rounds
-
-
- The .357 HP round is a hollow-point bullet. The purpose of the round is to slow down upon impact, which decreases its penetration, but at the same time causes larger internal tissue damage. The high stopping power afforded by this round makes it extremely popular amongst Dutyers, especially to stop heavier mutants like boars.
-
-
- .357 HP
-
-
- .357 JFP Hand loaded rounds
-
-
- Hand loaded .357 round designed for hunters and target shooters. The bullet is flat and wrapped in a copper jacket. While lacking the sheer stopping power of hollow-point rounds, they fly straighter and penetrate armor to a much more effective degree. Transfers immense concussive force.
-
-
- .357 JFP
-
-
-
- 7.62x25mm P rounds
-
-
- The 7.62x25mm cartridge is a Russian bottle-necked pistol cartridge widely used in former Soviet satellite states, China and Pakistan among other countries. The cartridge is an enhanced Russian version of the 7.63x25mm Mauser. Possesses excellent penetration capabilities and can easily defeat lighter ballistic vests as well as kevlar helmets. Although most firearms chambered in this caliber are obsolete and removed from military inventories, the cartridge still sees widespread use because of the large quantity of stored ammunition available.
-
-
- 7.62x25 P
-
-
-
- 7.62x25mm Pst rounds
-
-
- The steel core 7.62x25mm cartridge is a Russian bottle-necked pistol cartridge widely used in former Soviet satellite states, China and Pakistan among other countries. It's effective against lightly armoured targets thanks to the steel core, without sacrificing much in the way of stopping power.
-
-
- 7.62x25 Pst
-
-
-
- 7.62x25mm HP rounds
-
-
- 7.62x25mm cartridge in hollowpoint sporting configuration. Still possesses respectable armor defeating capabilities due to the narrow bullet, and offers a respectable increase in stopping power.
-
-
- 7.62x25 HP
-
-
- 7.62x25mm Acid rounds
-
-
- Experimental rounds developed by a secret joint effort between elements of the Ukrainian Ministry of Science and members of the Clear Sky faction. These hollowpoint rounds are filled with a turquoise plug that feels like plastic to the touch. A certain treatment involving the use of Stone Blood artifacts and catalysis in the presence of aerosolized ammonia has resulted in the production of corrosive tips that, when exposed to the heat of a gunpowder explosion, reacts to form a substance that violently melts and consumes metal, fabric, wood, plastic, or stone. The material is safe to handle in its inert state and only reacts when fired out of a weapon.
-
-
- 7.62x25 Acid
-
-
-
- 5.7x28 FMJ rounds
-
-
- Civilian-grade SS196SR 5.7x28 FMJ round. Unlike the SS190, this round is not rated to defeat body armor. However, in practice this round is still capable of defeating light kevlar and thus is still used fairly commonly for that reason. Much cheaper and easier to acquire than its military armor-piercing brother, and is a good choice for the budget-conscious black operator looking to terrorize Loners.
-
-
- 5.7x28 FMJ
-
-
- 5.7x28 SS190 rounds
-
-
- The FN 5.7x28mm is a high velocity cartridge designed and manufactured by FN Herstal. It is a bottlenecked centrefire cartridge that is somewhat similar to the .22 Hornet or .22 K-Hornet. The 5.7x28mm was developed in conjunction with the FN P90 personal defense weapon (PDW) and FN Five-seven pistol, in response to perceived threats of body armor. As such, this type of projectile is capable of defeating rifle plates handedly, but its small size reduces its damage potential greatly.
-
-
- 5.7x28 AP
-
-
-
- 5.7x28 Unstable Core
-
-
- 5.7x28mm SS190 rounds with signs of unknown anomalous tampering. These are rarely found in the employ of Monolith and Sinners, and possess markers of treatment in the same vein as other experimental ammo types. These in particular have a bullet that destabilizes its presence in reality, randomly losing and gaining velocity, mass, and kinetic potential during flight. Performance is thus highly erratic, though if fired at high enough volume the overall potential seems to be higher than standard rounds. The exact nature and purpose of these rounds are unknown.
-
-
- 5.7x28 CHAOS
-
-
- 5.7x28mm SS195 rounds
-
-
- The SS195 FN 5.7x28mm is an expansive cartridge designed and manufactured by FN Herstal. It is a bottlenecked centrefire cartridge that is somewhat similar to the .22 Hornet or .22 K-Hornet. Popular sporting and hunting cartridge in the West that has made its way to the Zone for certain enthusiasts of the Five-seveN as a mutant defense handgun.
-
-
- 5.7x28 HP
-
-
-
-
-
- 12x70 #00 Buckshot
-
-
- Standard 12 gauge shell filled with 8mm #00 sized shot. Highly lethal at close range but effectiveness drops quickly. Very common in the Zone. Only suitable for use with smoothbore weapons.
-
-
- 12x70 Buck
-
-
-
- 12x70 Magnum Buckshot
-
-
- #00 Buckshot loaded with an increased powder charge. Provides a huge increase in stopping power and slightly better armor penetration at the cost of increased wear on the weapon. Excellent for hunting and the sheer force of the shot can seriously injure even protected limbs. If you're dropping monstrous mutants, better use some magnum buck.
-
-
- 12x70 Magnum
-
-
-
- 12x76 Slug shells
-
-
- This heavy 12 gauge slug round is normally used for hunting big game, but is also good for hunting men on a budget. Instead of piercing, this hefty slug is capable of crushing armor like a mace. Sheer concussive force makes this type of round extremely good at stopping people in their tracks.
-
-
- 12x76 Slug
-
-
- 12x76 AP Dart shells
-
-
- 12 gauge hardened steel armor-piercing dart round. Capable of providing equivalent armor penetration of rifle rounds with a considerable increase in stopping power. Extra powder load is used to propel the projectile to maximize damage to armor.
-
-
- 12x76 Dart
-
-
-
- 12x70 Flechette shells
-
-
- 12 gauge shotgun shell filled with 9 hardened steel spikes. Provides tight groupings, increased effective range and good armor penetration compared to buckshot, but lacks sheer stopping power. Suitable for defeating light body armor but ineffective against heavier armor, unless shots to the limbs are prioritized.
-
-
- 12x70 Flechette
-
-
- 12x70 'Dragon's Breath' shells
-
-
- 12 gauge shotgun shell loaded with small fragments of Fireball and Night Star artifacts. When fired, the gunpowder explosion sets off a runaway anomalous interaction that superheats the artifact pieces to temperatures equivalent to that of ignited thermite. The impact is devastating to flesh and melts most armors, but the extreme heat generated is hugely damaging to the weapon it is shot out of. Artifact fragments regrettably do not provide much armor defeating potential, so the primary source of damage comes from the ammo's ability to ignite targets.
-
-
- 12x70 Dragonsbreath
-
-
-
-
-
- 5.45x39mm FMJ rounds
-
-
- Steel-cased military 5.45x39 caliber round, designation 7N6, was the first standard issue round for automatic rifles of Warsaw Pact countries using the new intermediate cartridge. Provides better accuracy than the 7.62 calibre round thanks to reduced recoil and a 100-metre increase in range. Unique bullet design ensures consistent yawing on flesh peneteration, ensuring consistent stopping power. Typically found loaded in the rifles of backline troops, rear guards and poor schmucks patrolling the borders of the Exclusion Zone.
-
-
- 5.45x39 FMJ
-
-
-
- 5.45x39mm EP rounds
-
-
- Standard-issue 5.45x39 caliber 7N10 is an enhanced penetration round for automatic rifles of Warsaw Pact countries. A harder and sleeker steel core is used to improve penetration. Standard issue round with modern SSU ground forces, and is readily found in stock with most military personnel. Improved penetration capabilities make a huge difference in combat effectiveness when fighting Mercenaries and Monolith forces.
-
-
- 5.45x39 EP
-
-
-
- 5.45x39mm Soft Point rounds
-
-
- Special-issue 5.45x39mm Soft Point rounds used by law enforcement in response to armed and dangerous threats. The jacketed round is cut away at the top, exposing the inner lead core, and the powder charge is increased. Provides penetration capabilities comparable to that of 7N6, but also expands similarly to hollow-point rounds and imparts a stumbling effect on impact.
-
-
- 5.45x39 SP
-
-
- 5.45x39mm HP rounds
-
-
- 5.45x39mm hollow-point rounds used by civilians for target shooting and police for special operations. Expands in the body as it travels, reducing penetration but increasing stopping power. Ineffective against body armor, though can overcome some soft armor with sheer force.
-
-
- 5.45x39 HP
-
-
-
- 5.45x39mm AP rounds
-
-
- Special-issue 5.45x39 caliber 7N22 armour-piercing round for automatic rifles of Warsaw Pact countries. The bullet contains a hard-alloy armour-piercing penetrator that is highly effective against body armour. Issued to Spetsnaz units conducting direct action against the most dangerous and well-armed foes, though a handful of these rounds rarely find their way into the hands of Dutyers.
-
-
- 5.45x39 AP
-
-
-
- 5.45x39mm 7N39 AP rounds
-
-
- Classified, extremely rare 5.45x39 caliber 7N39 'super' armour-piercing round for automatic rifles of Warsaw Pact countries. The bullet contains a hardened tungsten penetrator and the cartridge packs a high-pressure load, conferring extreme penetration capability against most types of armor. Extremely difficult to find outside of Russian Special Forces armories - it has long been rumored that the Russian Federation is aware of the activities in the Zone and is conducting clandestine activities under the guise of cooperation with the Ukrainian Armed Forces, likely serving their own agenda. No matter the origin, these rounds are likely the best intermediate rifle rounds you can find.
-
-
- 5.45x39 AP+
-
-
-
-
- 5.56x45mm FMJ rounds
-
-
- A standard-issue NATO 5.56x45 caliber M193 round that debuted along with the AR-15 family of rifles during the Vietnam War. While issues with the original stock of M193 ammo plagued U.S. soldiers in Vietnam, new manufacture rounds use the recommended IMR powder and retain the M193 round's signature fragmentation-derived stopping power. While relatively weak against modern armor, this round still enjoys high popularity in the Zone due to its flexibility as well as its reasonable cost.
-
-
- 5.56x45 FMJ
-
-
-
- 5.56x45mm Mk318 FMJ rounds
-
-
- Match-grade 5.56x45 FMJ round that is standard issue with U.S. Marines and other elite task groups. Developed in response to M855's reported ineffectiveness at reliably putting down targets, the Mk318 roundprovides tight groupings out of short barrels, penetrates barriers reliably and offers fragmentation potential exceeding that of the M193. These combined properties make the round unmatched in close-range modern warfare. A reasonably rare find, however members of Freedom maintain an unusually high stock of these rounds, the origin of which is a well-guarded secret.
-
-
- 5.56x45 FMJ+
-
-
-
- 5.56x45mm HP rounds
-
-
- Hollow-point 5.56x45mm round commonly used in hunting and sport shooting. The open tip makes this round ineffective against armor, but provides for increased stopping power against unarmored enemies. Popular round for shooting mutants.
-
-
- 5.56x45 HP
-
-
-
- 5.56x45mm 'Varmageddon' rounds
-
-
- Imported 5.56x45 hunting cartridge specially designed to kill animals. The unique shape of the bullet enables projectiles to expand greatly in thick muscle and flesh of animals, inflicting catastrophic damage. The wounding effects in human targets are acceptable in comparison, but not as pronounced. These rounds enable Freedom fighters to stand toe to toe with the nastier mutants that are more prevalent up north.
-
-
- 5.56x45 Varma
-
-
-
- 5.56x45mm AP rounds
-
-
- The latest NATO military 5.56x45 caliber enhanced penetration round, known as M855A1, used by the US armed forces. The failure of the M855 round led to the development of both the Mk318 and this round, which offers both increased armor penetrating capabilities but also increased stopping power fired out of standard rifles. Difficult to find but extremely effective, especially against exosuit-level protection. Imported in bulk by unknown suppliers of the Mercenary group, and forms one of the bulk import items (alongside marijuana) that Freedom trades for.
-
-
- 5.56x45 AP
-
-
-
- 5.56x45mm EP rounds
-
-
- Relatively obsolete NATO 5.56x45 caliber round with a steel core. Initially developed as a means to counter body armor, the round, designated M855, lost the fragmentation properties that made the M193 such an effective round and thus traded a huge amount of stopping power for respectable armor defeating capability. Large quantities of this round have made it to the Zone as most militaries have abandoned their stocks of this ineffectual round. Even despite the commonality, most stalkers only use these rounds begrudgingly.
-
-
- 5.56x45 EP
-
-
-
- 7.62x39mm FMJ rounds
-
-
- Steel case 7.62x39 M43 FMJ round that is ubiquitous in conflict zones, insurgencies and revolutions around the world. Provides high stopping power and strong armor defeating capabilities, but is hampered by its high recoil, reduced range and relative inaccuracy compared to the more modern 5.45 and 5.56 rounds. Extremely common in the Zone, as this type of round is also very popular for hunting and shooting for fun.
-
-
- 7.62x39 FMJ
-
-
- 7.62x39mm M67 FMJ rounds
-
-
- Brass cased 7.62x39 originally developed in Yugoslavia, but now used as a catch-all for the more modern manufacture brass-cased ammo. The round still features a mild steel core and provides slightly better performance to the M43 round, but the main selling point is the better feeding and reduced wear on the weapon. Clear Sky faction maintains an agreement with an unknown party to supply these rounds through their faction.
-
-
- 7.62x39 FMJ+
-
-
-
- 7.62x39mm AP rounds
-
-
- 7.62x39 round with a carbon steel core. These rounds are designed to neutralize enemy personnel behind light cover and defeat modern body armor that the M43 round normally struggles with. Thanks to the heavy weight, this round transfers more force on target compared to lighter 5.45 rounds, at the cost of accuracy and effective range. Issued on an increasing basis to SSU troops in order to combat the increasing presence of Monolith forces, as part of an agreement with the Russian government.
-
-
- 7.62x39 AP
-
-
-
- 7.62x39mm BZ API rounds
-
-
- 7.62x39 armor-piercing rounds with an incendiary component added to the base of the bullet. Designed to blow up vehicles by shooting the fuel tanks, the penetrator punches through any armor plating and the incendiary component creates sparks as they pass through, igniting fuel. While armored vehicles are an extreme shortage in the Zone, these rounds work extremely well as a means to inhumanely increase lethality against armored targets. Due to the incendiary component, the temperatures generated are high and increases heat generated in the weapon.
-
-
- 7.62x39 API
-
-
-
-
- 9x39mm SP-5 rounds
-
-
- The SP-5 is a subsonic rifle round with a bimetallic casing. The round contains a steel core with a gap behind it that is filled with lead. Canonically used in tandem with the VSS Vintorez, this round provides tight groupings and high stopping power, but is hampered by its steep trajectory and limited range. Requires a suppressor for stealth firing. Used by special services of Warsaw Pact countries.
-
-
- 9x39 SP-5
-
-
- 9x39mm SPP rounds
-
-
- The 9x39 SPP round is a modernized SP-5 round with a steel penetrator. Developed as an immediate successor to the SP-5, the SPP round capitalizes on and improves upon all the characteristics that make the SP-5 such an effective round. The redesigned bullet incorporates a steel penetrator core that enables the round to be more effective at defeating armor than the SP-5, and the shape and weight distribution of the bullet is improved upon to optimize its aerodynamic capabilities.
-
-
- 9x39 SPP
-
-
-
- 9x39mm PAB-9 rounds
-
-
- Old issue PAB-9 ammo that is no longer produced. In an effort to cut costs of producing SP-6 rounds, the penetrator core was stamped instead of machined and the propellant was replaced with a cheaper, dirtier mix. The end result is a cartridge that has performance mildly better than the SP-6, but suffers from instability in flight and very quickly destroys the weapon it is shot out of.
-
-
-
- 9x39 PAB-9
-
-
- 9x39mm SP-6 rounds
-
-
- The SP-6 is a subsonic armour-piercing round with a jacketed soft point bullet with a hard steel core that protrudes from the casing. Used in tandem with the AS VAL special assault rifle by elite Spetsnaz units. Requires a suppressor for stealth firing. Highly effective against body armour.
-
-
- 9x39 SP-6
-
-
-
-
-
-
- 7.62x54mm PP rounds
-
-
- Surplus 7.62x54mm 57-N-323S ammunition. The 7.62x54mm round is the second-oldest rifle cartridge still in use today, first produced in 1891 for the Mosin-Nagant rifle. The basic design of the bullet has not changed much since 1908, and remains very popular today amongst hunters and target shooters. These rounds are loose, but can be linked together for use in the PK machine gun.
-
-
- 7.62x54 PP
-
-
-
- 7.62x54mm 7N1 rounds
-
-
- A 7.62x54 sniper round for precision shooting at range. Designed specially for and in tandem with the SVD sniper rifle. Provides extremely tight groupings and consistent stopping power against lightly armored targets, but suffers slightly when dealing with heavy body armor. Popular round with all marksmen. Compatible with LMGs, but frankly using such a quality round in a machine gun is a complete waste.
-
-
- 7.62x54 7N1
-
-
-
- 7.62x54mm HP rounds
-
-
- Civilian grade 7.62x54 hunting rounds. The hollow point reduces penetration and increases stopping power, making it a good choice for hunters bringing down large animals without punching two holes in the valuable pelt. Very common in the Zone owing to the pedigree of a majority of Loners.
-
-
- 7.62x54 HP
-
-
- 7.62x54mm 'Headhunter' match rounds
-
-
- High-precision variant of the 7.62x54mm round, with a flat nose that provides tight groupings at medium to long ranges. These rounds are used for competition shooting where accuracy and precision are key, and thus these rounds are all carefully built to be exactly the same. The flat nosed round is designed for superior weight distribution and to punch clean holes through targets, and is tipped with a plastic plug to retain maximal aerodynamic performance. While the armor penetrating capabilities are lacking, the sheer force of impact due to the flat nose is enough to cause deadly concussions. In practice, snipers report that headshots with these rounds will lethally concuss targets, almost always guaranteeing a kill. Proper use of such rounds demands high skill.
-
-
- 7.62x54 FP
-
-
-
- 7.62x54mm AP rounds
-
-
- 7.62x54 7N13 armor piercing round. Features a hardened steel core and strong propellant charge. This round is normally designed for use in machine guns, especially those deployed for light anti armor purposes, but they work acceptably enough in sniper rifles to defeat heavy body armor at medium range. Due to the sheer power of the round, damage on unarmored targets remains extremely high.
-
-
- 7.62x54 AP
-
-
-
- 7.62x54mm BZAPI rounds
-
-
- 7.62x54 armor-piercing incendiary round designed to defeat light armor by penetrating external armor and igniting fuel tanks. Extremely and terrifyingly effective against mutants and men, as any and all protection is defeated by the armor piercing tip while the incendiary component causes catastrophic flesh damage. Generates a high temperature in the barrel, so frequent barrel changes are required when shooting out of a machine gun. In addition, this is nomally a machine gun round and thus it is not designed for precision - if using a rifle, be wary.
-
-
- 7.62x54 API
-
-
-
- 7.62x54mm PP rounds (linked)
-
-
- Surplus 7.62x54mm ammunition. The 7.62x54mm round is the second-oldest rifle cartridge still in use today, first produced in 1891 for the Mosin-Nagant rifle. The basic design of the bullet has not changed much since 1908, and remains very popular today amongst hunters and target shooters. These rounds are linked in a belt for use in the PK machine gun, but can be tediously unlinked to be used in other weapons.
-
-
- 7.62x54 PP MG
-
-
-
- 7.62x54mm Split Shot rounds
-
-
- 7.62x54mm machine gun rounds that split into three projectiles in flight. These projectiles have a short effective range comparable to handguns and some shotguns, but make up for it in sheer volume of fire. The rounds are anomalously tampered with to be extremely frangible at certain places, enough so that the stress of firing out of a barrel is enough to fracture the round into pieces. While seemingly counterintuitive, these rounds are used to great effect by members of Duty to provide a huge amount of short-range firepower in taking down mutant hordes, acting as a sort of heavy automatic shotgun. Due to the round's short range, there is no reason to fire this out of a rifle.
-
-
- 7.62x54 Split
-
-
-
-
- 7.62x51mm M80 ball rounds
-
-
- The 7.62x51 NATO round is a military variant of the .308 round which was used as a standard-issue by the NATO forces until 5.56 ammunition was introduced in the '70s in the Vietnam War. At present, it is most commonly employed by private military contractors all over the world. The 7.62x51 round is a very common and versatile machine gun caliber, and can also be used in battle or sniper rifles.
-
-
- 7.62x51 FMJ
-
-
-
- 7.62x51mm Mk316 Match rounds
-
-
- Specialized 7.62x51 round designed for long-range sniping. The tip is slightly hollowed out and the bullet is shaped specifically for maximal aerodynamic performance when shot out of long barrel rifles. Firing this round out of a battle rifle is frankly a waste, but the round will still perform admirably. Favored by Freedom snipers who will gladly trade any marijuana they have for boxes of these rounds.
-
-
- 7.62x51 Match
-
-
-
- 7.62x51mm M61 AP rounds
-
-
- Military 7.62x51 calibre M61 armor-piercing round with a hardened steel core. It retains high damage while greatly improving performance against body armor. Used often by Freedom snipers to eliminate armored Monolith targets.
-
-
- 7.62x51 AP
-
-
-
- 7.62x51mm M69 SLAP rounds
-
-
- Special-issue 7.62x51 round consisting of a 4mm tungsten dart encased in a plastic plug and short metal sabot. The plastic plug retains the shape of a normal FMJ round, making for easy feeding, and when fired the dense tungsten dart punches clean through light and medium vehicle armor, or any body armor. Due to the small size of the projectile, wounding effects are minimized. However, the penetrating capability makes it possible to shoot through cover or attack multiple targets in a row. Imported in limited quantities by Mercenaries to counter armored SSU divisions and to neutralize heavily armored Monolith threats.
-
-
- 7.62x51 SLAP
-
-
-
-
- 7.92x57mm Mauser rounds
-
-
- The 7.92x57 Mauser round was adopted by the German Empire and then the Third Reich. It was one of the most popular cartridges in the period of two world wars. However, nowadays, the round is primarily used for hunting and sports. Vast quantities of this round were seized from the losing faction of the Second World War and repurposed to ultimately shoot mutants with in the Zone.
-
-
- 7.92x57 FMJ
-
-
-
- 7.92x57mm Match hand load rounds
-
-
- Match grade 7.92x57 round with a hollow tip and boat-tail base bullet. Modern powder loads exert greater stress on historic rifles, but offer highly improved performance to compensate. Such rounds are popular with hunters and sport shooters for their flatness, tight groupings and reliable kill power for medium and large game.
-
-
- 7.92x57 Match
-
-
-
- 7.92x57mm SA rounds
-
-
- 7.92x57 SA is a round originally designed and used by the British military against armoured targets. It features a hardened steel core which gives it higher piercing capabilities. Used primarily for long range shots, the grain quality of this round is higher than the standard. Provides overall superior performance to its Wehrmacht counterpart. This cartridge is supported by several sniper rifles.
-
-
- 7.92x57 AP
-
-
-
- 7.92x57mm Lightning rounds
-
-
- 7.92x57 round with a bullet made from a reactive alloy of electrical artifacts. Similar to the Flash artifact, this projectile contains a tremendous amount of energy. However, the bullet is propelled by conventional means, with the high pressure and temperature of the gunpowder setting off a reaction with the artifact. On contact with a target, electrical energy is transferred. While this has limited stopping power against lightly armored targets, on heavily armored targets and powered armor the effect is devastating to both the target and the area around the target. Deals minimal damage to mutants and unarmored targets.
-
-
- 7.92x57 Shock
-
-
-
- 12.7x55mm STs-130 rounds
-
-
- The full metal jacket 12.7x55mm subsonic cartridge is used in the VKS bullpup sniper rifle. The cartridge can carry a projectile weighing between from 59 grams (911 grains) and 76 g (1173 grains), yielding massive amounts of kinetic energy. Commonly used by the SSU Spetsnaz when actions necessitate the clandestine recon and assassination of well-armored and well-equipped foes.
-
-
- 12.7x55
-
-
-
- 12.7x55mm STs-130 PT2 rounds
-
-
- Bronze 12.7x55mm subsonic cartridge used in the VKS bullpup sniper rifle. PT2 designation round is designed for high accuracy, strong armor penetration and extreme stopping power at short to medium ranges. As this round is a relatively recent development, it is imported and fielded in highly limited capacity. General Voronin maintains a reserve of these rounds, along with VKS rifles, to be issued for clandestine assassination missions.
-
-
- 12.7x55 PT2
-
-
-
- 12.7x55 mm STs-130 VPS rounds
-
-
- The armour-piercing 12.7x55mm subsonic cartridge is used in the VKS bullpup sniper rifle. The hardened penetrator defeats most forms of body armor, but the true value in the round lies in its massive short-range stopping power, which is retained even despite the reduced capacity to fragment or yaw.
-
-
- 12.7x55 AP
-
-
- 12.7x55mm Explosive rounds
-
-
- A relatively new and restricted development, these experimental rounds have a small fragment of a destabilized thermal artifact wrapped in lead with a standard metal jacket. The round exhibits no anomalous effects when impacting most solid surfaces, but the artifact core releases a tremendous amount of energy on impacting a hard target. The lead casing and metal jacket become shrapnel for the explosion, like the outer case of a grenade. While the armor penetration is limited due to a majority of the energy being transferred radially outward, the force of the explosion will cause serious damage and disorientation to the target and anyone around them.
-
-
- 12.7x55 EXP
-
-
-
-
- .338 Lapua Magnum rounds
-
-
- The .338 Lapua Magnum is a specialised rimless bottlenecked centrefire cartridge developed for military long-range sniper rifles. The Afghanistan War and Iraq War made it a combat-proven round with ready and substantial ammunition availability. The .338 Lapua is a dual-purpose anti-personnel and anti-materiel round, but its anti-materiel potential is limited.
-
-
- .338 Lapua Magnum
-
-
-
- .338 'Soulripper' Sabot rounds
-
-
- .338 round consisting of a depleted uranium penetrator wrapped in a sabot and propelled with an anomalously powerful charge. Exhibits signs of anomalous tampering, as it is not physically possible for a projectile of this mass to fly with such velocity and deal as much damage as it does. Extremely rare, powerful, and dangerous to handle.
-
-
- .338 DU AP
-
-
-
-
-
- .50 BMG M2 Ball Rounds
-
-
- .50 Browning Machine Gun (12.7x99mm) cartridge introduced in 1910 and adopted in 1921 along with the Browning M2 heavy machine gun. This round is very commonly used for man-portable anti-armor capabilities, where a single shot to the engine block is enough to disable a civilian vehicle or heavily damage a lightly armored military vehicle. Rarely imported in the Zone due to the lack of need - the Zone already does more than enough work destroying vehicles as it is.
-
-
- .50 Ball
-
-
- .50 BMG M2 AP Rounds
-
-
- .50 M2 AP round used to effectively counter more heavily armored vehicles and personnel. This round is capable of defeating any threat in the Zone, but will rarely be used due to its great weight, rarity and compatibility with weaponry. It is rumored Freedom has a secret stash of this ammo somewhere that is used to fend off Monolith threats in the Army Warehouses area.
-
-
- .50 AP
-
-
-
-
- 4.6x30mm FMJ rounds
-
-
- 4.6x30mm bottlenecked PDW round developed for the MP7. Capable of defeating soft body armor but is insufficient to defeat armor rated for rifle-grade threats. This full metal jacket projectile has a lead-antimony core and is optimized for damage to soft targets.
-
-
- 4.6x30 FMJ
-
-
- 4.6x30mm AP rounds
-
-
- German DM111 round with a hardened core. Lighter and faster, but loses a bit of stopping power in exchange. Given that the standard operating procedure for using the MP7 is to throw high volumes of fire with low-recoil rounds, it is not terribly concerning.
-
-
- 4.6x30 AP
-
-
- 12x90 'Bull' Magnum Slugs
-
-
- 12 gauge shell with stainless steel base and extremely high powder load. The projectile consists of a dense, copper-covered lead slug encased around a cone of depleted uranium. Ridiculously heavy and powerful round that requires a specially reinforced shotgun to be safely fired out of. The identity of the creator or buyers of these rounds and the shotguns they use remains a mystery.
-
-
- 12x90 Bull
-
-
-
diff --git a/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_127x55_AP+.ogf b/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_127x55_AP+.ogf
deleted file mode 100644
index 5aaf45e7..00000000
--- a/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_127x55_AP+.ogf
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:112661b09084793a77d7171a8658c8d2206c6b18eb9302a6169c0e78931a06bc
-size 3499
diff --git a/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_127x55_AP.ogf b/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_127x55_AP.ogf
deleted file mode 100644
index 08ddd903..00000000
--- a/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_127x55_AP.ogf
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:970f9661087ae4de0b9b62ba4719b6e223da21d7eba4a32425ba8cbfdc238378
-size 3499
diff --git a/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_127x55_FMJ+.ogf b/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_127x55_FMJ+.ogf
deleted file mode 100644
index 0d7e4314..00000000
--- a/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_127x55_FMJ+.ogf
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:61da6d78b4a192c6fd8efdd3c376b5c680629709d41c9a20c4fe58a1b35b06a0
-size 3499
diff --git a/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_127x55_FMJ.ogf b/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_127x55_FMJ.ogf
deleted file mode 100644
index 185ce980..00000000
--- a/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_127x55_FMJ.ogf
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:07de994c56c24daffc4eddcd719174618021c637de8442bcac14e7dcb6bbf490
-size 3499
diff --git a/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_12x70_Buck.ogf b/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_12x70_Buck.ogf
deleted file mode 100644
index ec082d4a..00000000
--- a/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_12x70_Buck.ogf
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:f014f37064b6c6254a4bbcbbe5e8283f31e3402f6f80a7378a5c6268e3ec1bb2
-size 3499
diff --git a/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_12x70_Bull.ogf b/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_12x70_Bull.ogf
deleted file mode 100644
index d6827216..00000000
--- a/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_12x70_Bull.ogf
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:4326a43f93f05a8710a9f5eed5282fe2cdccad0417df8968acc36f6ba0d3e9d3
-size 3499
diff --git a/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_12x70_DB.ogf b/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_12x70_DB.ogf
deleted file mode 100644
index 5328a2be..00000000
--- a/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_12x70_DB.ogf
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:7dc9e506aafa7bf93d0cb0177064cc4a1a0090ff5a375342f9735c5c234466e6
-size 3499
diff --git a/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_12x70_Flechette.ogf b/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_12x70_Flechette.ogf
deleted file mode 100644
index 7bc66c15..00000000
--- a/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_12x70_Flechette.ogf
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:d0d2b970083fc7769a40d991a7fc7cb7f46365962969303e2a44c6cc4612838e
-size 3499
diff --git a/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_12x70_Hand.ogf b/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_12x70_Hand.ogf
deleted file mode 100644
index 04a2baa7..00000000
--- a/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_12x70_Hand.ogf
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:f75465677c6f2b5415c98bac3fd4e8c44b198603563df8c836d9f2d2310282a6
-size 3499
diff --git a/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_12x70_Magnum.ogf b/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_12x70_Magnum.ogf
deleted file mode 100644
index 191216a8..00000000
--- a/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_12x70_Magnum.ogf
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:32214730008ccaf8983c7fdbd6fb82c0a9cd5891b3fd01c74dbd3793964128fe
-size 3499
diff --git a/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_12x70_Slug.ogf b/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_12x70_Slug.ogf
deleted file mode 100644
index 5596f2c9..00000000
--- a/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_12x70_Slug.ogf
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:6752f2289516b5c3400c2828af4d6de93e2d5db5731512e0b0afb8cf94653538
-size 3499
diff --git a/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_12x70_SlugAP.ogf b/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_12x70_SlugAP.ogf
deleted file mode 100644
index bbab795c..00000000
--- a/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_12x70_SlugAP.ogf
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:0e42a44bff4c401ff2c116b4e9e9730f8c7233e5dd7cef4f961495ffe28945d4
-size 3499
diff --git a/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_20x70_Buck.ogf b/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_20x70_Buck.ogf
deleted file mode 100644
index 34a57702..00000000
--- a/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_20x70_Buck.ogf
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:3070673c3bc924221bdade89c7fb33a39e2cc12afd066c9aedc5291fc68231d5
-size 3499
diff --git a/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_23x75_Barrikada.ogf b/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_23x75_Barrikada.ogf
deleted file mode 100644
index 3b14ab5c..00000000
--- a/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_23x75_Barrikada.ogf
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:f563498e3ff58c7ddf4c2b7b865c88ec4f33d97dee4962a25e4f05e7a3922cd7
-size 3499
diff --git a/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_23x75_Ecologist.ogf b/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_23x75_Ecologist.ogf
deleted file mode 100644
index fc622384..00000000
--- a/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_23x75_Ecologist.ogf
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:cb389c21d61accfa900672ac77de764f0bc00974cb45f6e220a70b7476a8c7f1
-size 3499
diff --git a/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_23x75_Shrapnel.ogf b/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_23x75_Shrapnel.ogf
deleted file mode 100644
index baa25f19..00000000
--- a/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_23x75_Shrapnel.ogf
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:eb5ee3a4b05f9f217a8a50585ba868f4b01c9cc0235dd7fca2e14e8a90de5d60
-size 3499
diff --git a/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_338_AP.ogf b/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_338_AP.ogf
deleted file mode 100644
index f1ab14a4..00000000
--- a/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_338_AP.ogf
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:3afe13f0aca525d6105c8addce95b3828361a74dd42646752a08146c282ace0b
-size 3499
diff --git a/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_338_FMJ+.ogf b/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_338_FMJ+.ogf
deleted file mode 100644
index 41a9446b..00000000
--- a/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_338_FMJ+.ogf
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:69578b40f3208291d4b7e09ab46af4bd67099ff905ac0e684579e35f89648203
-size 3499
diff --git a/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_338_FMJ.ogf b/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_338_FMJ.ogf
deleted file mode 100644
index bb260faf..00000000
--- a/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_338_FMJ.ogf
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:dfc9bab463862dc9ec1eac98427005d0522f78f45e1db2c677955b60debfb89f
-size 3499
diff --git a/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_357_HP+.ogf b/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_357_HP+.ogf
deleted file mode 100644
index fca73601..00000000
--- a/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_357_HP+.ogf
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:86f5487851c3c628a41c11f63adf491fc0e092f447b23f219f6799905f8e9196
-size 3499
diff --git a/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_357_HP.ogf b/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_357_HP.ogf
deleted file mode 100644
index bfe97a99..00000000
--- a/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_357_HP.ogf
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:bebb586aa67b9134bf0a1a819f497f846cd427bc8b12e21cba810f70083794be
-size 3499
diff --git a/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_45_FMJ+.ogf b/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_45_FMJ+.ogf
deleted file mode 100644
index 710dd559..00000000
--- a/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_45_FMJ+.ogf
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:40471681319b60bfd059699742788cee14d65b9d7cdebe5eba6517dfc7c996c2
-size 3499
diff --git a/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_45_FMJ.ogf b/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_45_FMJ.ogf
deleted file mode 100644
index 914fdede..00000000
--- a/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_45_FMJ.ogf
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:df1fbe2dbed540c071cb67e203182534ef3b20f1cef1ef26bea15d3b2c8be5ca
-size 3499
diff --git a/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_45_HP+.ogf b/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_45_HP+.ogf
deleted file mode 100644
index 6cedee1b..00000000
--- a/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_45_HP+.ogf
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:d2a8e10d822d3ade6875af8f326e63930072e931141d247a73cd260dbe78a74e
-size 3499
diff --git a/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_45_HP.ogf b/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_45_HP.ogf
deleted file mode 100644
index 09818cb5..00000000
--- a/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_45_HP.ogf
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:a36411a47b820a6f112e5e359063c32866eca38e76e820c847158ab1c84d761e
-size 3499
diff --git a/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_46x30_AP.ogf b/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_46x30_AP.ogf
deleted file mode 100644
index 2db64119..00000000
--- a/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_46x30_AP.ogf
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:b49f54c2f92ee66deaad0e255896663c5205229d2bb905db24d970dd91b8d6b1
-size 3499
diff --git a/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_46x30_FMJ.ogf b/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_46x30_FMJ.ogf
deleted file mode 100644
index c597195c..00000000
--- a/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_46x30_FMJ.ogf
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:2908109241f3277c1d60034b9a1d2593eebf23787dc3a71bc9ad5b233ceb6c30
-size 3499
diff --git a/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_50_AP.ogf b/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_50_AP.ogf
deleted file mode 100644
index 705f0bdc..00000000
--- a/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_50_AP.ogf
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:48666e029bc3447d66bd74590adbef94ee57a00021e9a2480c316e5a18b91c27
-size 3499
diff --git a/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_50_FMJ.ogf b/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_50_FMJ.ogf
deleted file mode 100644
index 30ff6e59..00000000
--- a/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_50_FMJ.ogf
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:d2840117ed32ef9c44e9bec942c78565c22367022af83aa6aed6c223580fd2a7
-size 3499
diff --git a/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_545x39_AP+.ogf b/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_545x39_AP+.ogf
deleted file mode 100644
index 6286d9de..00000000
--- a/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_545x39_AP+.ogf
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:8d435f3350b993a3ce7a7ae370cc08d8611004a43cb752497bacfc299dd3e8b9
-size 3499
diff --git a/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_545x39_AP.ogf b/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_545x39_AP.ogf
deleted file mode 100644
index 4d83f6ee..00000000
--- a/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_545x39_AP.ogf
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:413264f534e18ccbc11f5b87a81c63cde013594bdf29d71edc0df14c200de326
-size 3499
diff --git a/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_545x39_FMJ+.ogf b/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_545x39_FMJ+.ogf
deleted file mode 100644
index 77743439..00000000
--- a/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_545x39_FMJ+.ogf
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:193d1a1058b388184ec769f16e22994efd605bfa325c10b70629fd82dedfd45a
-size 3499
diff --git a/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_545x39_FMJ.ogf b/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_545x39_FMJ.ogf
deleted file mode 100644
index 17c7b49f..00000000
--- a/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_545x39_FMJ.ogf
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:4114c11fa5ea56edf5714204c2ee6b8cb9f896796bbe426a01e432dddac1eb7b
-size 3499
diff --git a/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_545x39_HP+.ogf b/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_545x39_HP+.ogf
deleted file mode 100644
index 0cb078e1..00000000
--- a/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_545x39_HP+.ogf
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:ff7aa0cba7c2d93a7442aeae4a335063667042365df75131945e6ffcf372747b
-size 3499
diff --git a/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_545x39_HP.ogf b/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_545x39_HP.ogf
deleted file mode 100644
index b706730c..00000000
--- a/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_545x39_HP.ogf
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:ca9c39ca21204c4a5a4a5602f23dfe4c90dcaed5547082133602f702556bf82e
-size 3499
diff --git a/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_556x45_AP+.ogf b/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_556x45_AP+.ogf
deleted file mode 100644
index f5cc5fe9..00000000
--- a/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_556x45_AP+.ogf
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:94b421692952cc132f99d0bda181904aeabc5ff9894cb7af8093a4629618162e
-size 3499
diff --git a/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_556x45_AP.ogf b/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_556x45_AP.ogf
deleted file mode 100644
index 186eaa06..00000000
--- a/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_556x45_AP.ogf
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:e6897990ea01a1d379dd19a8523d9837ed9db6f212a81244d5168dc305a6cc3f
-size 3499
diff --git a/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_556x45_FMJ+.ogf b/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_556x45_FMJ+.ogf
deleted file mode 100644
index f47bb781..00000000
--- a/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_556x45_FMJ+.ogf
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:e7cd570b470fdaf379fe644fbe6b3124a4ef038d1cd5d9a7e5933032709f2c70
-size 3499
diff --git a/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_556x45_FMJ.ogf b/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_556x45_FMJ.ogf
deleted file mode 100644
index 022bb299..00000000
--- a/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_556x45_FMJ.ogf
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:30d14fcb0d0451846cf357ddb8567b61e0d8a8483d5cc96a536976dad4ee4282
-size 3499
diff --git a/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_556x45_HP+.ogf b/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_556x45_HP+.ogf
deleted file mode 100644
index 21db170e..00000000
--- a/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_556x45_HP+.ogf
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:fc6214d79379c01f1f49378437f275b3c8268eaae39139feab9743b5a9f23fc6
-size 18634
diff --git a/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_556x45_HP.ogf b/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_556x45_HP.ogf
deleted file mode 100644
index c4dd840e..00000000
--- a/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_556x45_HP.ogf
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:f36b572000ce7b6e331107a101c040187accf1c49c10589b43f0c50245091eb9
-size 3499
diff --git a/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_57x28_AP+.ogf b/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_57x28_AP+.ogf
deleted file mode 100644
index 6065bbd6..00000000
--- a/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_57x28_AP+.ogf
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:f110848efc1fefbdfb985cf4483732d086728426ffd92e7ba3fd9cc578f8829c
-size 3499
diff --git a/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_57x28_AP.ogf b/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_57x28_AP.ogf
deleted file mode 100644
index d5d5cd31..00000000
--- a/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_57x28_AP.ogf
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:cc0fc55ff4fe68bcecc87b81c7e1919a91c20bcc9bd77e6d06dff019cbbde907
-size 3499
diff --git a/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_57x28_FMJ+.ogf b/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_57x28_FMJ+.ogf
deleted file mode 100644
index ee2d0fe6..00000000
--- a/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_57x28_FMJ+.ogf
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:95e1296ff0b54fe5ec170eacaf2c7bfc36ce993bed87f84029009777a4262e15
-size 3499
diff --git a/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_57x28_FMJ.ogf b/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_57x28_FMJ.ogf
deleted file mode 100644
index f1a1dd92..00000000
--- a/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_57x28_FMJ.ogf
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:b78c1201a82c79cd2e99ea01e3c9943daad3a14439311847d379bdc31c277756
-size 3499
diff --git a/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_762x25_AP+.ogf b/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_762x25_AP+.ogf
deleted file mode 100644
index cef43c54..00000000
--- a/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_762x25_AP+.ogf
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:297b8a6bbda266dd633f7d2ba479369b9eaa9861717c71b8086e8ddd863011b5
-size 3499
diff --git a/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_762x25_AP.ogf b/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_762x25_AP.ogf
deleted file mode 100644
index 3629fc81..00000000
--- a/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_762x25_AP.ogf
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:ff37ef950732986b8f5faa55154c7218324375341f4a9a109702b9441289a735
-size 3499
diff --git a/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_762x25_FMJ.ogf b/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_762x25_FMJ.ogf
deleted file mode 100644
index 1e9247d5..00000000
--- a/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_762x25_FMJ.ogf
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:d3bc25dc9f003ed3463ed0c5710e67fdb1b05bf8df1005e8519b1c5618e0dfb2
-size 3499
diff --git a/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_762x25_HP.ogf b/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_762x25_HP.ogf
deleted file mode 100644
index c46d5c2c..00000000
--- a/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_762x25_HP.ogf
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:031eb9a8953c2e14f5c5d564edab62b10aefa384bcab26a363ad6e2403e605fe
-size 3499
diff --git a/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_762x39_AP+.ogf b/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_762x39_AP+.ogf
deleted file mode 100644
index eb59c8d0..00000000
--- a/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_762x39_AP+.ogf
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:8c512e6f5be81411e577caccd27855eac9a10e9cfe5329a35d0c35feddc4fa50
-size 3499
diff --git a/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_762x39_AP.ogf b/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_762x39_AP.ogf
deleted file mode 100644
index 478bf261..00000000
--- a/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_762x39_AP.ogf
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:9f1fd663832f0749d1471a8ab9547d94db6166d5348be15cf89fb572a199093a
-size 3499
diff --git a/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_762x39_FMJ+.ogf b/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_762x39_FMJ+.ogf
deleted file mode 100644
index 010b02de..00000000
--- a/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_762x39_FMJ+.ogf
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:f233706368db6ebb8cf2b352a454e9464597943e1e5f3b554771db558cf8e983
-size 3499
diff --git a/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_762x39_FMJ.ogf b/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_762x39_FMJ.ogf
deleted file mode 100644
index ddd0bb96..00000000
--- a/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_762x39_FMJ.ogf
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:4f2faa30f3b08f190c5c8290500a4459cb9abb1a67b6f223af349697b8a351d9
-size 3499
diff --git a/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_762x51_AP+.ogf b/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_762x51_AP+.ogf
deleted file mode 100644
index 17c81a61..00000000
--- a/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_762x51_AP+.ogf
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:e2754a7d8d8ebd59078afc734c90b52137de5f173b3629d8dcb2901243d44c8a
-size 3499
diff --git a/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_762x51_AP.ogf b/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_762x51_AP.ogf
deleted file mode 100644
index 5790fa60..00000000
--- a/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_762x51_AP.ogf
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:d883557ecd8c0b6b84479bc326cd39d7b0bb8a14007be404b17f6de091701029
-size 3499
diff --git a/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_762x51_FMJ+.ogf b/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_762x51_FMJ+.ogf
deleted file mode 100644
index 44c7b6cf..00000000
--- a/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_762x51_FMJ+.ogf
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:a3001499f2ff8c565d4be4d0516e451b1c42b6fd86360fb5378511a3c27f66ac
-size 3499
diff --git a/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_762x51_FMJ.ogf b/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_762x51_FMJ.ogf
deleted file mode 100644
index 24bad848..00000000
--- a/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_762x51_FMJ.ogf
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:7c26e697cb41b7075645eacc55bbe06934045d369ca36cc9acf44bb18611f33c
-size 3499
diff --git a/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_762x54_AP+.ogf b/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_762x54_AP+.ogf
deleted file mode 100644
index 021ee2eb..00000000
--- a/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_762x54_AP+.ogf
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:5e925cb12892e39fa4cd196a576113172b9caf48d722a74ec17f163624edd2f2
-size 3499
diff --git a/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_762x54_AP.ogf b/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_762x54_AP.ogf
deleted file mode 100644
index 6da5b399..00000000
--- a/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_762x54_AP.ogf
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:c1210bcfc8f248098a1c4dd229122c4aa54f8842956222aed2b83e42a5685ece
-size 3499
diff --git a/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_762x54_FMJ+.ogf b/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_762x54_FMJ+.ogf
deleted file mode 100644
index 1763ae0b..00000000
--- a/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_762x54_FMJ+.ogf
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:e08f651be5181e4ae30613ccf828154614457126e614ae2b98c26224342a7c01
-size 3499
diff --git a/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_762x54_FMJ.ogf b/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_762x54_FMJ.ogf
deleted file mode 100644
index 288ada73..00000000
--- a/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_762x54_FMJ.ogf
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:d6b683d47d3ddd46595ef34f211dcc724c42e510c48f4744196e241db7467908
-size 3499
diff --git a/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_762x54_HP+.ogf b/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_762x54_HP+.ogf
deleted file mode 100644
index 14c7dc67..00000000
--- a/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_762x54_HP+.ogf
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:f4fd1da9719f510131979d2a78b51f0a9911c07001c140096ad3339750c7ee6e
-size 3499
diff --git a/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_762x54_HP.ogf b/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_762x54_HP.ogf
deleted file mode 100644
index dceb5546..00000000
--- a/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_762x54_HP.ogf
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:b999eee04d2a7ad1353e1eecd71f0611daef287f88b6662ab1851f1b39598c63
-size 3499
diff --git a/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_792x57_AP+.ogf b/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_792x57_AP+.ogf
deleted file mode 100644
index c4d2925c..00000000
--- a/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_792x57_AP+.ogf
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:c9a8db657362b8e8bd048ef006faca9d5d5320eed2fde994c34a7470b599e2a3
-size 3499
diff --git a/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_792x57_AP.ogf b/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_792x57_AP.ogf
deleted file mode 100644
index 408289d9..00000000
--- a/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_792x57_AP.ogf
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:4e461c7c75825a5a9e0afd78ccd1206bef71e731ac12d2970ce52e77b4edc78b
-size 3499
diff --git a/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_792x57_FMJ+.ogf b/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_792x57_FMJ+.ogf
deleted file mode 100644
index 49f261c4..00000000
--- a/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_792x57_FMJ+.ogf
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:9616a05bd26a1c66d179926140c257742af39a33580248f82b35a30e52a832d6
-size 3499
diff --git a/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_792x57_FMJ.ogf b/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_792x57_FMJ.ogf
deleted file mode 100644
index 1325ea3d..00000000
--- a/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_792x57_FMJ.ogf
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:62bbeac2061c4e37f72431bdc8ef362fcd557e8dbf5c51d0acc04c737d4b778c
-size 3499
diff --git a/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_9x18_AP+.ogf b/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_9x18_AP+.ogf
deleted file mode 100644
index a45f5a8f..00000000
--- a/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_9x18_AP+.ogf
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:472ce282418dffb785e1ed9c24ec28ea70c3d6c880cb6d86c2a2005c0db4a4d7
-size 3495
diff --git a/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_9x18_AP.ogf b/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_9x18_AP.ogf
deleted file mode 100644
index f48f6cba..00000000
--- a/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_9x18_AP.ogf
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:92c794fb77be3b17b6ed41fa5eee46e19eac83de65ff9d5f6a9e561fafe43bb7
-size 3495
diff --git a/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_9x18_FMJ+.ogf b/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_9x18_FMJ+.ogf
deleted file mode 100644
index 4701a673..00000000
--- a/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_9x18_FMJ+.ogf
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:67c097e3de174f3f39f0a77f8775653e530991417b9e85c966f48678f3d79cc3
-size 3495
diff --git a/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_9x18_FMJ.ogf b/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_9x18_FMJ.ogf
deleted file mode 100644
index 3b21c10f..00000000
--- a/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_9x18_FMJ.ogf
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:691505ba6f1751ccdc3b2de2a29b02a41404db63a3a2dbbc8f9c083b431ffc8f
-size 3495
diff --git a/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_9x18_HP+.ogf b/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_9x18_HP+.ogf
deleted file mode 100644
index d28ae5f9..00000000
--- a/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_9x18_HP+.ogf
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:9e954fd5a6f6e1a9fccde26fa10ff774a500bfab244775bbea4932ba92134c76
-size 3495
diff --git a/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_9x18_HP.ogf b/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_9x18_HP.ogf
deleted file mode 100644
index 8417247b..00000000
--- a/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_9x18_HP.ogf
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:0d2aa9ca17dde6ddfd62e0ef7d55f1cb619fa3f7cacb45496a39d71843751696
-size 3495
diff --git a/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_9x19_AP+.ogf b/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_9x19_AP+.ogf
deleted file mode 100644
index 8eef765c..00000000
--- a/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_9x19_AP+.ogf
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:6b73d2575af76b2d56208dfd980e2d65f91db0a73e7f86332603e4d4188cf4a9
-size 3499
diff --git a/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_9x19_AP.ogf b/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_9x19_AP.ogf
deleted file mode 100644
index aa2b9122..00000000
--- a/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_9x19_AP.ogf
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:27f0de47e0a880a0cdad0d245c58f817ad3bc905dc0bdae2b43e759b898ca140
-size 3499
diff --git a/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_9x19_FMJ+.ogf b/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_9x19_FMJ+.ogf
deleted file mode 100644
index d7342b75..00000000
--- a/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_9x19_FMJ+.ogf
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:9c6c7c353730b790dd882ea808094168bee627e081750e78b5269d60177db559
-size 3499
diff --git a/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_9x19_FMJ.ogf b/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_9x19_FMJ.ogf
deleted file mode 100644
index dff50634..00000000
--- a/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_9x19_FMJ.ogf
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:b981419035f1706e159b557637b8b7281cfcc2fa86a0897d723a118b2aced4e5
-size 3499
diff --git a/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_9x19_HP+.ogf b/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_9x19_HP+.ogf
deleted file mode 100644
index 73c7788a..00000000
--- a/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_9x19_HP+.ogf
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:2ba8265e505c33bcf7e362192161f423740e4b35a9eb32928cfda05e61ee0171
-size 3499
diff --git a/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_9x19_HP.ogf b/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_9x19_HP.ogf
deleted file mode 100644
index 5f23361c..00000000
--- a/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_9x19_HP.ogf
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:f5b10ca63a1741f6b00a876a30ef1ea97d21b13b66db4700d91a4ce027652681
-size 3499
diff --git a/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_9x21_AP.ogf b/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_9x21_AP.ogf
deleted file mode 100644
index 4b18c995..00000000
--- a/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_9x21_AP.ogf
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:8f6b670cc13a0357acfba9c0f3891e57a91a289517a0e91aab12510583ef0f07
-size 3499
diff --git a/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_9x21_FMJ.ogf b/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_9x21_FMJ.ogf
deleted file mode 100644
index fc341d2d..00000000
--- a/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_9x21_FMJ.ogf
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:8451247348eac47717c7104e475c8c72861450ff7559ec7c5e03e2c39f62ee03
-size 3499
diff --git a/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_9x39_AP+.ogf b/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_9x39_AP+.ogf
deleted file mode 100644
index 2fd44789..00000000
--- a/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_9x39_AP+.ogf
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:ef14ef8dbb40f298bc15a832512ce7af561911c42ae7210842e127d4f4a67f04
-size 3499
diff --git a/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_9x39_AP.ogf b/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_9x39_AP.ogf
deleted file mode 100644
index da654cd5..00000000
--- a/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_9x39_AP.ogf
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:ab11cf9dcc7134bb067ad9f5cf92ff3fe5b14e4e5f38511a5f2fd0536e06b25d
-size 3499
diff --git a/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_9x39_FMJ+.ogf b/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_9x39_FMJ+.ogf
deleted file mode 100644
index 0e10e365..00000000
--- a/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_9x39_FMJ+.ogf
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:db37ef684f02f594a71bb34429f18ef4172584b30ec62446428d45e14f974dbb
-size 3499
diff --git a/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_9x39_FMJ.ogf b/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_9x39_FMJ.ogf
deleted file mode 100644
index bd65ed64..00000000
--- a/mods/Anomaly Ballistics Overhaul/gamedata/meshes/dynamics/weapons/wpn_ammo/ammo_9x39_FMJ.ogf
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:7cba8460d85941b8db6d4c7ab33e05024eb91e18d02c3599aed1a0c80ad1d2f9
-size 3499
diff --git a/mods/Anomaly Ballistics Overhaul/gamedata/scripts/a_mmo_stats_tbl.script b/mods/Anomaly Ballistics Overhaul/gamedata/scripts/a_mmo_stats_tbl.script
deleted file mode 100644
index 51e2f1c3..00000000
--- a/mods/Anomaly Ballistics Overhaul/gamedata/scripts/a_mmo_stats_tbl.script
+++ /dev/null
@@ -1,161 +0,0 @@
-local ini_ammo = ini_file("ammo\\importer.ltx")
-
-function inject_stats()
- utils_ui.stats_table["ammo"] = {
- ["damage"] = {
- index= 1, typ= "float", name= "st_prop_k_hit", icon_p= "ui_wp_prop_damage", icon_n= "", track= false, magnitude= 1, unit= "st_perc", compare= false, sign=false, show_always= true, value_functor= {"a_mmo_stats_tbl","prop_damage"} },
- ["ap"] = {
- index= 2, typ= "string", name= "st_prop_k_ap", icon_p= "ui_am_propery_01", icon_n= "", track= false, magnitude= 1, unit= "", compare= false, sign= false, show_always= false, value_functor= {"a_mmo_stats_tbl","prop_ap"} },
- ["hp"]= {
- index= 3, typ= "float", name= "st_prop_k_hp", icon_p= "ui_am_prop_restore_bleeding", icon_n= "", track= false, magnitude= 1, unit= "st_perc", compare= false, sign= true, show_always= true, value_functor= {"a_mmo_stats_tbl","prop_hp"} },
- ["projectiles"] = {
- index= 4, typ= "float", name= "st_prop_projectiles", icon_p= "ui_wp_prop_skorostrelnost", icon_n= "", track= false, magnitude= 1, unit= "", compare= false, sign= false, show_always= true, value_functor= {"a_mmo_stats_tbl","prop_projectiles"} },
- ["accuracy"] ={
- index= 5, typ= "float", name= "st_prop_k_disp", icon_p= "ui_wp_prop_tochnost", icon_n= "", track= false, magnitude= 1, unit= "st_perc", compare= false, sign= true, show_always= false, value_functor= {"a_mmo_stats_tbl","prop_accuracy"} } ,
- ["velocity"]={
- index= 6, typ= "float", name= "st_prop_k_vel", icon_p= "ui_wp_prop_nastilnost", icon_n= "", track= false, magnitude= 1, unit= "st_perc", compare= false, sign= true, show_always= false, value_functor= {"a_mmo_stats_tbl","prop_flatness"} } ,
- ["recoil"]={
- index= 7 , typ= "float", name= "st_prop_recoil", icon_p= "ui_wp_prop_otdacha", icon_n= "", track= false, magnitude= 1, unit= "st_perc", compare= false, sign= false, show_always= false, value_functor= {"a_mmo_stats_tbl","prop_recoil"} } ,
- ["wear"]={
- index= 8 , typ= "float", name= "st_prop_impair", icon_p= "ui_wp_prop_nadezhnost", icon_n= "", track= false, magnitude= 1, unit= "st_perc", compare= false, sign= false, show_always= true, value_functor= {"a_mmo_stats_tbl","prop_wear"} } ,
- ["radius"]={
- index= 9 , typ= "float", name= "st_prop_radius", icon_p= "ui_am_prop_explo", icon_n= "", track= false, magnitude= 1, unit= "m", compare= false, sign= false, show_always= false, value_functor= {"a_mmo_stats_tbl","prop_radius"} } ,
- ["special"]={
- index= 10 , typ= "float", name= "st_prop_special", icon_p= "ui_am_condition", icon_n= "", track= false, magnitude= 1, unit= "", compare= false, sign= false, show_always=false, value_functor= {"a_mmo_stats_tbl","prop_special"} }
- }
-end
-
-if ish_item_stats then
- override_stats_table = ish_item_stats.override_stats_table
-
- ish_item_stats.override_stats_table = function()
- override_stats_table()
- inject_stats()
- end
-end
-
-local function armor_to_class(val)
- val = clamp(math.floor(val * 20), 0, 7)
- return game.translate_string("st_prop_armor_"..val)
-end
-
-prepare_stats_table = utils_ui.prepare_stats_table
-
-function utils_ui.prepare_stats_table()
- prepare_stats_table()
- inject_stats()
-end
-
-GetTable = utils_ui.get_stats_table
-function utils_ui.get_stats_table(sec)
- if ini_ammo:section_exist(sec) then
- if not utils_ui.stats_table["ammo"] or is_empty(utils_ui.stats_table["ammo"]) then
- inject_stats()
- end
- return utils_ui.stats_table["ammo"]
- else
- return GetTable(sec)
- end
-end
-
-GetType = utils_ui.UIInfoItem.GetType
-function utils_ui.UIInfoItem:GetType(sec)
- if ini_ammo:section_exist(sec) then return "ammo"
- else return GetType(self, sec) end
-end
-
--- patching sync_finale because these post-update effects should only be applied once
-Sync_Finale = utils_ui.UIInfoItem.Sync_Finale
-function utils_ui.UIInfoItem:Sync_Finale(cond, ele_syncer, ele_resizer, ele_adapter, offset)
- local ret = Sync_Finale(self, cond, ele_syncer, ele_resizer, ele_adapter, offset)
- if not ele_syncer then return ret end
- -- patch the armor val
- local sec = self.section
- local obj = self.id and level.object_by_id(self.id) or nil
- if sec and ini_ammo:section_exist(sec) then
- for i=1,#self.stats do
- if self.stats[i].cap:GetText() == game.translate_string("st_prop_k_ap") then
- local str
- if ini_ammo:r_string_ex(sec, "special") == "chaos" then
- str = "I-V"
- else
- local ap = ini_ammo:r_float_ex(sec, "k_ap") or 0
- str = armor_to_class(ap)
- end
- self.stats[i].txt:SetText(str)
- end
- if self.stats[i].cap:GetText() == game.translate_string("st_prop_special") then
- local str_spec = ini_ammo:r_string_ex(sec, "special")
- if str_spec then
- self.stats[i].txt:SetText(game.translate_string("st_ballistics_"..str_spec))
- end
- end
- if self.stats[i].cap:GetText() == game.translate_string("st_prop_k_hit") and ini_ammo:r_string_ex(sec, "special") == "chaos" then
- self.stats[i].txt:SetText("60-160%")
- end
- end
- end
-
-end
-
-function prop_damage(obj, sec)
- return math.floor(100 * (ini_ammo:r_float_ex(sec, "k_hit") or SYS_GetParam(2, sec, "k_hit") or 1))
-end
-
--- pull from the armor classification
-function prop_ap(obj, sec)
- return ini_ammo:r_float_ex(sec, "k_ap") or 1
-end
-
-function prop_hp(obj, sec)
- local hp = ini_ammo:r_float_ex(sec, "k_hp") or 1
- return hp > 1.01 and math.floor(100 * (hp - 1)) or 0
-end
-
-function prop_projectiles(obj, sec)
- local proj = SYS_GetParam(2, sec, "buck_shot")
- return proj > 2 and proj or 0
-end
-
-function prop_radius(obj, sec)
- return ini_ammo:r_float_ex(sec, "radius") or 0
-end
-
--- 'normal' bullet dispersion is out of 1
-local BASE = 1
-function prop_accuracy(obj, sec)
- local accuracy = SYS_GetParam(2, sec, "k_disp") or BASE
- local proj = SYS_GetParam(2, sec, "buck_shot")
- if math.abs(accuracy - BASE) > 0.01 and proj == 1 then
- return math.floor(100 * (1 - accuracy))
- else return 0 end
-end
-
-
-function prop_flatness(obj, sec)
- local flat = SYS_GetParam(2, sec, "k_bullet_speed")
- if flat ~= 1 then
- return math.floor(100 * (flat - 1))
- else return 0
- end
-end
-
-function prop_recoil(obj, sec)
- local recoil = SYS_GetParam(2, sec, "k_cam_dispersion")
- if recoil ~= 1 then
- return math.floor(100 * recoil)
- else return 0
- end
-end
-
-function prop_wear(obj, sec)
- local impair = ini_ammo:r_float_ex(sec, "impair") or 1
- if impair ~= 1 then
- return math.floor(100 * impair)
- else return 0
- end
-end
-function prop_special(obj, sec)
- local str_spec = ini_ammo:r_string_ex(sec, "special")
- if str_spec then return 1 else return 0 end
-end
\ No newline at end of file
diff --git a/mods/Anomaly Ballistics Overhaul/gamedata/scripts/a_name_patch.script b/mods/Anomaly Ballistics Overhaul/gamedata/scripts/a_name_patch.script
deleted file mode 100644
index 42f523a9..00000000
--- a/mods/Anomaly Ballistics Overhaul/gamedata/scripts/a_name_patch.script
+++ /dev/null
@@ -1,20 +0,0 @@
--- gc = game.translate_string
--- local ini_ammo = ini_file("ammo\\importer.ltx")
-
--- GetFirstName = ui_item.build_name_first
--- function ui_item.build_name_first(obj, sec, str)
--- if ini_ammo:section_exist(sec) and ini_ammo:r_string_ex(sec, "name") then
--- return gc(ini_ammo:r_string_ex(sec, "name"))
--- else
--- return GetFirstName(obj, sec, str)
--- end
--- end
-
--- ShortName = ui_item.build_short_name_first
--- function ui_item.build_short_name_first(obj, sec, str)
--- if ini_ammo:section_exist(sec) and ini_ammo:r_string_ex(sec, "name") then
--- return gc(ini_ammo:r_string_ex(sec, "name") .. "_s")
--- else
--- return ShortName(obj, sec, str)
--- end
--- end
\ No newline at end of file
diff --git a/mods/Anomaly Ballistics Overhaul/gamedata/scripts/ammo_maker.script b/mods/Anomaly Ballistics Overhaul/gamedata/scripts/ammo_maker.script
deleted file mode 100644
index ec226126..00000000
--- a/mods/Anomaly Ballistics Overhaul/gamedata/scripts/ammo_maker.script
+++ /dev/null
@@ -1,204 +0,0 @@
-
-local part_lookup
-
-local d_flag = false
-local d_key = "DIK_LSHIFT" -- Saftey key hold (Left Alt)
-get_config = ammo_maker_mcm.get_config
-
--- break ammo down, returning an appropriate amount of items
-function breakdown(ammo, tool, batch)
- local sec = ammo and ammo:section() or nil
- local name = ui_item.get_sec_name(sec)
- local delay = actor_effects.is_animations_on() and 3 or 0
- local npc = db.actor--ammo:parent()
- if (not npc) then
- printf("~ breakdown | no owner found for [%s]", ammo:name())
- return
- end
- if not sec then return end
-
- local to_breakdown = {}
- if batch then
- db.actor:iterate_ruck(function(temp, item)
- if item:section() == sec then
- table.insert(to_breakdown, item)
- end
- end)
- else
- to_breakdown[1] = ammo
- end
-
- local tbl = do_breakdown(to_breakdown, tool)
-
- -- Increase Statistic
- game_statistics.increment_statistic("items_disassembled")
-
- -- Animation
- actor_effects.play_item_fx("disassemble_metal_fast")
- CreateTimeEvent("ammo_maker","delay_disassembly" .. ammo:id(), delay, timer_disassembly_item, npc:id(), tbl, name)
-
-end
-
-function do_breakdown(ammo_list, tool)
- if is_empty(ammo_list) then return {} end
- local tbl = {}
- local sec = ammo_list[1]:section()
-
- local salvage_type = part_lookup:r_string_ex(sec, "salvage") or "old"
- local salvage_coef = (get_config(salvage_type .. "_salvage")/100) or 0.4
- local parts = part_lookup:r_value(sec, "parts")
- local parts_map = str_explode(parts, ",")
- local degrade = tonumber(part_lookup:r_value(sec, "degrade")) or 0.0001
- local name = ui_item.get_sec_name(sec)
-
- local tbl = {}
-
- for k,v in pairs(ammo_list) do
- -- short circuit if tool gets depleted
- if not tool then return tbl end
- local box_size = v:ammo_get_count()
- local parts = part_lookup:r_value(sec, "parts")
- for i=1,#parts_map,2 do
- local new_box_size = 0
- local box_to_make = parts_map[i]
- local box_type = SYS_GetParam(0, box_to_make, "type") or "bullet"
- local box_chance = get_config(box_type)/100 or 1
- local base_amt = tonumber(parts_map[i+1])
- -- new 1 by 1 formula for consistency
- for i=1,box_size do
- if math.random() < (salvage_coef * box_chance) then
- new_box_size = new_box_size + base_amt
- end
- end
- if new_box_size > 0 then
- if tbl[box_to_make] then
- tbl[box_to_make] = tbl[box_to_make] + new_box_size
- else
- tbl[box_to_make] = new_box_size
- end
- end
- end
- utils_item.discharge(v)
-
- utils_item.degrade(tool, degrade)
- -- Add extra part on achievement
- if (game_achievements.has_achievement("recycler")) and not is_empty(tbl) and (math.random(1,100) <= 33) then
- local random_key = random_key_table(tbl)
- tbl[random_key] = tbl[random_key] + math.random(1, 3)
- end
- end
- return tbl
-end
-
-function timer_disassembly_item(npc_id, table, name)
- -- Who is item owner? we must give them the parts
- local npc = npc_id and get_object_by_id(npc_id)
- if (not npc) then
- printf("~ breakdown timer | no owner found")
- return
- end
- for k,v in pairs(table) do
- create_ammo(k, npc:position(), npc:level_vertex_id(), npc:game_vertex_id(), npc:id(), v)
- end
-
- local parts_text = create_disassemble_list(table)
- actor_menu.set_item_news("success", "weapon_ammo", "st_dis_text_11", name, game.translate_string("st_dis_text_9"), parts_text)
-
- return true
-end
-
-
-function create_disassemble_list(t)
- local str = ""
- for k,v in pairs(t) do
- str = str .. "\\n- " .. v .. " " .. ui_item.get_sec_name(k)
- end
- return str
-end
-
-Disassemble = item_parts.disassembly_item
-function wrap_disassemble(obj, obj_d, batch)
- obj_d = obj_d or item_parts.get_suitable_dtool(obj)
- if (not item_parts.is_suitable_dtool(obj, obj_d)) then
- if IsWeapon(obj) then
- actor_menu.set_item_news('fail', 'weapon', "st_dis_text_3", " ")
- else
- news_manager.send_tip(db.actor, game.translate_string("st_news_dis_items"), nil, "swiss_knife", 6000)
- end
- return
- end
-
- if part_lookup:section_exist(obj:section()) then
- breakdown(obj, obj_d, batch)
- else
- item_parts.disassembly_item(obj, obj_d)
- end
-end
-
-function item_parts.disassembly_item(obj, obj_d)
- obj_d = obj_d or item_parts.get_suitable_dtool(obj)
- if (not item_parts.is_suitable_dtool(obj, obj_d)) then
- if IsWeapon(obj) then
- actor_menu.set_item_news('fail', 'weapon', "st_dis_text_3", " ")
- else
- news_manager.send_tip(db.actor, game.translate_string("st_news_dis_items"), nil, "swiss_knife", 6000)
- end
- return
- end
-
- if part_lookup:section_exist(obj:section()) then
- breakdown(obj, obj_d, false)
- else
- Disassemble(obj, obj_d)
- end
-end
-
-function check_batch(obj)
- local sec = obj:section()
- if IsAmmo(obj) and part_lookup:section_exist(sec) then
- return 'st_batch_breakdown'
- end
-end
-
-NameCustom = ui_inventory.UIInventory.Name_Custom
-function ui_inventory.UIInventory:Name_Custom(obj, bag, temp, i)
- obj = self:CheckItem(obj,"Name_Custom " .. i)
- if i == 4 and IsAmmo(obj) then -- check unjam
- return check_batch(obj)
- else
- return NameCustom(self, obj, bag, temp, i)
- end
-end
-
-ActionCustom = ui_inventory.UIInventory.Action_Custom
-function ui_inventory.UIInventory:Action_Custom(obj, bag, temp, i)
- obj = self:CheckItem(obj,"Action_Custom " .. i)
- if i == 4 and IsAmmo(obj) then -- check unjam
- wrap_disassemble(obj, nil, true)
- else
- ActionCustom(self, obj, bag, temp, i)
- end
-end
-
-
-function on_game_start()
- part_lookup = ini_file_ex("parts\\importer.ltx")
- local ini_ammo = ini_file("items\\ammo\\importer.ltx")
- ini_ammo:section_for_each(function(ammo)
- local count = ini_ammo:line_count(ammo) or 0
- for i=0,count-1 do
- local result, id, value = ini_ammo:r_line(ammo , i , "", "")
- -- anomaly balls specific stuff
- if string.find(id, "_bad") then
- id = id:sub(1, -3)
- workshop_autoinject.add_new_recipe(6, id, value)
- elseif SYS_GetParam(0, id, "type") then
- workshop_autoinject.add_new_recipe(6, id, value)
- else
- workshop_autoinject.add_override_recipe(id, value, 6)
- end
- end
- end)
- workshop_autoinject.remove_existing_recipes("ammo_vog-25")
- workshop_autoinject.remove_existing_recipes("ammo_m209")
-end
\ No newline at end of file
diff --git a/mods/Anomaly Ballistics Overhaul/gamedata/scripts/ammo_maker_mcm.script b/mods/Anomaly Ballistics Overhaul/gamedata/scripts/ammo_maker_mcm.script
deleted file mode 100644
index a2691f3a..00000000
--- a/mods/Anomaly Ballistics Overhaul/gamedata/scripts/ammo_maker_mcm.script
+++ /dev/null
@@ -1,27 +0,0 @@
-
-
--- If you don't use MCM, change your defaults from here.
-local defaults = {
- ["old_salvage"] = 70,
- ["new_salvage"] = 90,
- ["casing"] = 50,
- ["powder"] = 100,
- ["bullet"] = 100,
-}
-
-function get_config(key)
- if ui_mcm then return ui_mcm.get("ammomaker/"..key) else return defaults[key] end
-end
-
-function on_mcm_load()
- op = { id= "ammomaker",sh=true ,gr={
- { id= "title",type= "slide",link= "ui_options_slider_player",text="ui_mcm_ammomaker_title",size= {512,50},spacing= 20 },
- {id = "casing", type = "track", val = 2, min=30,max=100,step=10, def = 50},
- {id = "powder", type = "track", val = 2, min=30,max=100,step=10, def = 100},
- {id = "bullet", type = "track", val = 2, min=30,max=100,step=10, def = 100},
- {id = "old_salvage", type = "track", val = 2, min=30,max=100,step=10, def = 70},
- {id = "new_salvage", type = "track", val = 2, min=30,max=100,step=10, def = 90},
- }
- }
- return op
-end
\ No newline at end of file
diff --git a/mods/Anomaly Ballistics Overhaul/gamedata/scripts/arti_ammo_utils.script b/mods/Anomaly Ballistics Overhaul/gamedata/scripts/arti_ammo_utils.script
deleted file mode 100644
index 634b58ed..00000000
--- a/mods/Anomaly Ballistics Overhaul/gamedata/scripts/arti_ammo_utils.script
+++ /dev/null
@@ -1,283 +0,0 @@
-
-math_random = math.random
-math_floor = math.floor
-gc = game.translate_string
-ini_ammo = ballistics_utils.ini_ammo
-get_ammo_data = arti_handlers.get_ammo_data
-print_dbg = ballistics_mcm.print_dbg
-
-local modes = {
- ["inventory"] = true,
-}
-local bags = {
- ["actor_bag"] = true,
- ["actor_equ"] = true,
- ["actor_belt"] = true,
-}
-function try_mg_link(obj, bag, mode)
- if obj and bags[bag] and modes[mode] then
- if obj:section() == "ammo_7.62x54_7h1" then
- return gc("st_link")
- elseif obj:section() == "ammo_pkm_100" then
- return gc("st_unlink")
- end
- end
-end
-
-function mg_link(obj)
- -- grab up to 5 and try to link them together
- if obj:section() == "ammo_7.62x54_7h1" then
- local to_link = {}
- local count = 0
- db.actor:iterate_inventory(function(npc, item)
- if item:section() == "ammo_7.62x54_7h1" and count < 5 then
- to_link[item:id()] = item
- count = count + 1
- end
- end)
- local total = 0
- for k,v in pairs(to_link) do
- total = total + v:ammo_get_count()
- alife_release_id(k)
- end
- if total > 0 then
- alife_create_item("ammo_pkm_100", db.actor, {ammo = total})
- end
- elseif obj:section() == "ammo_pkm_100" then
- local count = obj:ammo_get_count()
- create_ammo("ammo_7.62x54_7h1", db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id(), AC_ID, count)
- alife_release(obj)
- end
-end
-
-function downgrade_ammo(sec, bypass, mult)
- mult = mult or 1
- local dg_ammo = ini_ammo:r_string_ex(sec, "dg_ammo")
- local dg_chance = ini_ammo:r_float_ex(sec, "dg_chance") or 0
- dg_chance = dg_chance * mult
- -- print_dbg("Attempt downgrade ammo %s to %s", sec, dg_ammo)
- if dg_ammo and (math_random() < (dg_chance) or bypass) then
- -- print_dbg("Downgrading ammo %s to %s", sec, dg_ammo)
- return dg_ammo
- else
- return sec
- end
-end
-
-function process_wpn(wpn, bypass)
- local ammo_data = utils_item.get_ammo(wpn:section(), wpn:id())
- local ammo_data_inv = invert_table(ammo_data)
- if is_empty(ammo_data) then return end
- local ammo_type = ammo_data[wpn:get_ammo_type() + 1]
- local dg_ammo = ini_ammo:r_string_ex(ammo_type, "dg_ammo") or ""
- local dg_chance = ini_ammo:r_float_ex(ammo_type, "dg_chance") or 0
- if ammo_data_inv[dg_ammo] and (bypass or math_random() < dg_chance) then
- -- print_dbg("Downgrading ammo for weapon %s", wpn:section())
- local cnt = wpn:get_ammo_in_magazine()
- wpn:unload_magazine(true)
- wpn:set_ammo_type(ammo_data_inv[dg_ammo] - 1)
- wpn:set_ammo_elapsed(cnt)
- end
-end
-
-local recipe_trader = {
- killer = {
- "recipe_ammo_nato",
- "recipe_ammo_pistol",
- "recipe_ammo_powder",
- "recipe_ammo_bullet"
- },
- army = {
- "recipe_ammo_ru1",
- "recipe_ammo_ru2",
- "recipe_ammo_powder",
- "recipe_ammo_bullet"
- },
- ecolog = {
- "recipe_ammo_arty2",
- "recipe_ammo_arty1",
- "recipe_ammo_powder",
- "recipe_ammo_bullet"
- },
- monolith = {
- "recipe_ammo_ru2",
- "recipe_ammo_fire",
- "recipe_ammo_powder",
- "recipe_ammo_bullet"
- },
- dolg = {
- "recipe_ammo_ru1",
- "recipe_ammo_shotgun",
- "recipe_ammo_powder",
- "recipe_ammo_bullet"
- },
- freedom = {
- "recipe_ammo_nato",
- "recipe_ammo_fire",
- "recipe_ammo_powder",
- "recipe_ammo_bullet"
- },
- csky = {
- "recipe_ammo_shotgun",
- "recipe_ammo_arty1",
- "recipe_ammo_powder",
- "recipe_ammo_bullet"
- },
- stalker = {
- "recipe_ammo_pistol",
- "recipe_ammo_shotgun",
- "recipe_ammo_powder",
- "recipe_ammo_bullet"
- },
- bandit = {
- "recipe_ammo_ru1",
- "recipe_ammo_pistol",
- "recipe_ammo_powder",
- "recipe_ammo_bullet"
- },
- greh = {
- "recipe_ammo_arty2",
- "recipe_ammo_nato",
- "recipe_ammo_powder",
- "recipe_ammo_bullet"
- },
- isg = {
- "recipe_ammo_ru1",
- "recipe_ammo_ru2",
- "recipe_ammo_pistol",
- "recipe_ammo_shotgun",
- "recipe_ammo_nato",
- "recipe_ammo_arty1",
- "recipe_ammo_arty2",
- "recipe_ammo_fire",
- "recipe_ammo_powder",
- "recipe_ammo_bullet"
- },
-}
-
-function trader_on_restock(npc)
-
- if trader_autoinject.get_trader_type(npc) == 1 then
- trader_autoinject.spawn_items(npc, {
- powder_fire = 10
- }, true)
- end
-
- to_create = {}
- npc:iterate_inventory(function(npc, item)
- if not IsAmmo(item) then return end
- local sec = item:section()
- dg = downgrade_ammo(sec)
- if sec ~= dg then
- to_create[item:id()] = {
- sec = dg,
- cnt = item:ammo_get_count()
- }
- end
- end)
- for k,v in pairs(to_create) do
- alife_release_id(k)
- alife_create_item(v.sec, npc, {ammo = v.cnt})
- end
-
-
- local level = trader_autoinject.supply_level(npc, true) or 1
- local chance = clamp(30 * (level - 1), 0, 100)
- local comm = trader_autoinject.get_real_community(npc, "stalker")
- if not recipe_trader[comm] then return end
- for k,v in pairs(recipe_trader[comm]) do
- if math.random(100) <= chance then
- alife_create_item(v, npc)
- end
- end
-end
-
-local downgrade = false
-
-SpawnAmmo = death_manager.try_spawn_ammo
-function death_manager.try_spawn_ammo(npc)
- downgrade = true
- SpawnAmmo(npc)
- downgrade = false
-end
--- catch the guys that already exist
-SetDrop = death_manager.set_weapon_drop_condition
-function death_manager.set_weapon_drop_condition(npc,itm)
- downgrade = true
- SetDrop(npc,itm)
- -- process_wpn(itm)
- downgrade = false
-end
-AlifeCreate = _G.alife_create_item
-function _G.alife_create_item(section, obj, t)
- if downgrade and IsItem("ammo",section) and obj:id() ~= AC_ID then
- section = downgrade_ammo(section, true)
- end
- return AlifeCreate(section, obj, t)
-end
-
--- this happens whenever npc comes online, currently guarantees that the npc will never have access to better ammo in the wapon
-function npc_on_net_spawn(npc)
- CreateTimeEvent("downgrade_ammos",npc:id(), 0,function()
- npc:iterate_inventory(function(t, item)
- if IsWeapon(item) then process_wpn(item, true) end
- end)
- return true
- end)
-end
-
--- spawn recipes with random weights
-local recipe_weights = {
- recipe_ammo_ru1 = 20,
- recipe_ammo_ru2 = 10,
- recipe_ammo_pistol = 20,
- recipe_ammo_shotgun = 15,
- recipe_ammo_nato = 10,
- recipe_ammo_arty1 = 5,
- recipe_ammo_arty2 = 5,
- recipe_ammo_fire = 5,
-}
-
-SpawnTreasure = treasure_manager.try_spawn_treasure
-
-function treasure_manager.try_spawn_treasure(box)
- local id = box:id()
-
- -- no spawn if the cache is already looted
- if not (treasure_manager.caches[id]) then
- return
- end
- SpawnTreasure(box)
- local k = random_key_table(recipe_weights)
- if math.random(100) <= recipe_weights[k] then
- alife_create_item(k, box)
- end
-end
-if magazines then
- RollAmmo = magazines_loot.determine_ammo
- -- subject the ammo pop in mags to downgrade
- function magazines_loot.determine_ammo(ammo_to_pick, mag_sec, rank)
- if RollAmmo then
- print_dbg("Roll to downgrade %s in %s", ammo_to_pick, mag_sec)
- ammo_to_pick = RollAmmo(ammo_to_pick, mag_sec, rank)
- ammo_to_pick = downgrade_ammo(ammo_to_pick)
- end
- return ammo_to_pick
- end
-end
-
-function on_get_item_cost(kind, obj, profile, calculated_cost, ret)
- local sec = obj:section()
- if SYS_GetParam(1, sec, "is_component") and profile.mode == 1 then
- local calculated_cost = ret.new_cost or calculated_cost -- in case someone adjusted the price of the weapon
- calculated_cost = calculated_cost * 0.1
- ret.new_cost = calculated_cost
- end
-end
-
-function on_game_start()
- custom_functor_autoinject.add_functor("mg_link", try_mg_link, try_mg_link, nil, mg_link, true)
- RegisterScriptCallback("npc_on_net_spawn",npc_on_net_spawn)
- RegisterScriptCallback("on_get_item_cost",on_get_item_cost)
- RegisterScriptCallback("trader_on_restock",trader_on_restock)
-end
\ No newline at end of file
diff --git a/mods/Anomaly Ballistics Overhaul/gamedata/scripts/arti_ball_crusher.script b/mods/Anomaly Ballistics Overhaul/gamedata/scripts/arti_ball_crusher.script
deleted file mode 100644
index 1b448dd5..00000000
--- a/mods/Anomaly Ballistics Overhaul/gamedata/scripts/arti_ball_crusher.script
+++ /dev/null
@@ -1,92 +0,0 @@
--- arti_crusher = {
--- af_pin = "powder_nightstar:3",
--- af_night_star = "powder_nightstar:5",
-
--- af_medusa = "powder_gravi,3",
--- af_vyvert = "powder_gravi,4",
--- af_gravi = "powder_gravi,5",
-
--- af_cristall = "powder_fireball,3",
--- af_fireball = "powder_fireball,5",
-
--- af_blood = "powder_blood,3",
--- af_mincer_meat = "powder_blood,5",
-
--- af_electra_sparkler = "powder_battery,4",
--- af_dummy_battery = "powder_battery,5",
--- }
-
-tbl = {}
-ini_balls = ini_file("items\\settings\\ball_crusher.ltx")
-gc = game.translate_string
--- to powderize artifacts into crafting material
-
-local modes = {
- ["inventory"] = true,
-}
-local bags = {
- ["actor_bag"] = true,
- ["actor_equ"] = true,
- ["actor_belt"] = true,
-}
-function load_table()
- ini_balls:section_for_each(function(section)
- local powders = {}
- local lines = ini_balls:line_count(section) or 0
- for i=0,lines-1 do
- local _, id, value = ini_balls:r_line_ex(section,i)
- value = str_explode(value, "-")
- powders[id] = {
- min = value[1] or 0,
- max = value[2] or 0
- }
- end
- tbl[section] = powders
- end)
-end
-function try_crush(obj, bag, mode)
- if obj and bags[bag] and modes[mode] and tbl[obj:section()] then
- return gc("st_crush")
- end
-end
-
-function crush(obj, bag, mode)
- local to_create = tbl[obj:section()]
- local cond = obj:condition() or 1
- for k,v in pairs(to_create) do
- local diff = v.max - v.min
- local amt = v.min + math.random(diff)
- amt = math.ceil(amt * cond)
- create_ammo(k, db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id(), AC_ID, amt)
- end
- alife_release(obj)
-end
-
-SpawnTreasure = treasure_manager.try_spawn_treasure
-
-function treasure_manager.try_spawn_treasure(box)
- local id = box:id()
-
- --printf("try_spawn_treasure [%s]",caches[id])
- -- no spawn if the cache is already looted
- if not (treasure_manager.caches[id]) then
- return
- end
- SpawnTreasure(box)
- if math.random() < 0.1 then
- create_ammo(random_choice(
- "powder_gravi",
- "powder_fireball",
- "powder_nightstar",
- "powder_battery",
- "powder_blood")
- , box:position(), box:level_vertex_id(), box:game_vertex_id(), box:id(), math.random(3))
- end
-end
-
-
-
-function on_game_start()
- custom_functor_autoinject.add_functor("arti_crush", try_crush, try_crush, nil, crush, true)
- load_table()
-end
\ No newline at end of file
diff --git a/mods/Anomaly Ballistics Overhaul/gamedata/scripts/arti_handlers.script b/mods/Anomaly Ballistics Overhaul/gamedata/scripts/arti_handlers.script
deleted file mode 100644
index ff2eb203..00000000
--- a/mods/Anomaly Ballistics Overhaul/gamedata/scripts/arti_handlers.script
+++ /dev/null
@@ -1,844 +0,0 @@
-get_config = ballistics_mcm.get_config
-print_dbg = ballistics_mcm.print_dbg
-npc_bone_mult = ballistics_utils.npc_bone_mult
-npc_bone_protection = ballistics_utils.npc_bone_protection
-npc_bone_data = ballistics_utils.npc_bone_data
-play_particle = ballistics_utils.play_particle
-play_particle_firepoint = ballistics_utils.play_particle_firepoint
-mutant_hp = ballistics_utils.mutant_hp
-mutant_prot_values = ballistics_utils.mutant_prot_values
-modify_bone = ballistics_utils.modify_bone
-modify_velocity = ballistics_utils.modify_velocity
-modify_distance = ballistics_utils.modify_distance
-get_distance = ballistics_utils.get_distance
-get_cur_vel = ballistics_utils.get_cur_vel
-read_npc_bone_sec = ballistics_utils.read_npc_bone_sec
-add_effect = arti_timed_events.add_effect
-play_sound_on_location = ballistics_utils.play_sound_on_location
-math_floor = math.floor
-math_abs = math.abs
-math_random = math.random
-
-Bone_IDs = ballistics_utils.Bone_IDs
-head_bones = ballistics_utils.head_bones
-ini_ammo = ballistics_utils.ini_ammo
-ini_damage = ballistics_utils.ini_damage
-
-local anims = {
- "norm_2_critical_hit_torso_0", -- good
- "norm_1_critical_hit_head_0", -- good
-}
-
-
--- pulls custom ap and hit power values from code
-function get_ammo_data(ammo_sec)
- if ini_ammo:section_exist(ammo_sec) then
- return {
- sec = ammo_sec,
- k_hit = ini_ammo:r_float_ex(ammo_sec, "k_hit") or SYS_GetParam(2, ammo_sec, "k_hit") or 1,
- k_ap = ini_ammo:r_float_ex(ammo_sec, "k_ap") or SYS_GetParam(2, ammo_sec, "k_ap") or 0,
- k_pen = ini_ammo:r_float_ex(ammo_sec, "k_pen") or 0,
- k_imp = ini_ammo:r_float_ex(ammo_sec, "k_imp") or 0
- }
- end
-end
-
-function is_actor(npc)
- return npc and npc:id() == AC_ID
-end
-
--- deal residual impact damage only
--- 2-40%
-function impact(diff, ap_frac, ammo_data, bone_data)
- -- print_dbg("Impact")
- if head_bones[bone_data.id] then
- bone_data.hit_fraction = clamp(bone_data.hit_fraction * 1.1, 0, 1)
- end
- local frac_adj = 1 - bone_data.hit_fraction
- return 0.2 + clamp(ammo_data.k_imp - frac_adj, -0.18, 0.2)
-end
-
--- reduction based on AP frac and diff
--- base 40-80%
--- diff is 0-2
-function reduce(diff, ap_frac, ammo_data, bone_data)
- local modifier = 0.8 - (0.2 * (diff - ap_frac))
- return modifier
-end
-
--- deal full damage (does nothing lol)
-function full(diff, ap_frac, ammo_data, bone_data)
- return 1
-end
-
--- overpenetrate and lose damage (based on diff and pen)
--- default is reducing down to pen
--- only matters if diff > 3, or more than 0.2
-function penetrate(diff, ap_frac, ammo_data, bone_data)
- adj = clamp((diff - 4)/4, 0.05, ammo_data.k_pen)
- -- print_dbg("Overkill, reduce by %s", adj)
- return 1 - adj
-end
-
-local damage_subcalcs = {
- [-7] = impact,
- [-6] = impact,
- [-5] = impact,
- [-4] = impact,
- [-3] = impact,
- [-2] = reduce,
- [-1] = reduce,
- [0] = reduce,
- [1] = full,
- [2] = full,
- [3] = full,
- [4] = full,
- [5] = penetrate,
- [6] = penetrate,
- [7] = penetrate,
-}
-
--- input:
-function tbl_reduce(x)
- local acc = 1
- for k,v in pairs(x) do
- print_dbg("Applying key %s, val %s", k ,v)
- acc = acc * v
- end
- return acc
-end
-
-function get_tier(val)
- return clamp(math_floor(val * 20), 0, 7)
-end
-
-function get_frac(val)
- frac = math.fmod(val * 20, 1)
- if frac > 0.95 then frac = 1 end
- return frac
-end
-
-local function change_damage_type(s_hit, hit_type, bone_data, is_actor)
- s_hit.type = hit_type
- -- undo bone mult as elemental hits shouldn't get any bonus/malus from body part
- -- actor always receives full hits to allow for armor damage calc
- if not is_actor then
- s_hit.power = s_hit.power / bone_data.mult
- end
-end
-
---[[
- precalculate all the crap we need
- returns:
- {
- ammo_data: data on ammo (sec, overridden values for hit and ap)
- bone_data: data on bones (bone id, name, bone armor, if it's been modified, etc)
- }
-]]
-function prework(npc, s_hit, ctx)
- local precalc = {}
-
- precalc.base_power = ctx.hit_data.wpn:cast_Weapon():GetHitPower()
- precalc.ammo_data = get_ammo_data(ctx.hit_data.ammo)
- precalc.bone_data = ctx.is_npc and npc_bone_data(npc, ctx.bone_id) or mutant_prot_values(npc, ctx.bone_id)
-
- return precalc
-end
-
-function apply_std_calcs(tbl, npc, s_hit, precalc)
- tbl.base_power = precalc.base_power
- ammo_data = precalc.ammo_data
- bone_data = precalc.bone_data
- tbl.k_hit = ammo_data.k_hit
- tbl.velocity = is_actor(npc) and 1 or modify_velocity()
- tbl.distance = modify_distance(s_hit.draftsman, npc, ammo_data.sec)
- tbl.bone_mult = is_actor(npc) and 1 or bone_data.mult
- tbl.hit_scale = SYS_GetParam(2, ammo_data.sec, "hit_scale") or 1
-end
-
--- determine if a hit fully penetrates either mutant or npc
-local function full_pen_modifier(precalc, is_npc)
- if not is_npc then
- return 1 - clamp(2 * (precalc.bone_data.armor - precalc.ammo_data.k_ap), 0, 1)
- else
- return clamp(precalc.ammo_data.k_ap - precalc.bone_data.armor, 0, 1)
- end
- return 0
-end
-
-function process_hp(precalc, is_npc)
- local hp_mult = ini_ammo:r_float_ex(precalc.ammo_data.sec, "k_hp")
- if not hp_mult then return 1 end
- local modifier = full_pen_modifier(precalc, is_npc)
- -- mutants get partial hp expansion
- if not is_npc then
- local hp_frac = hp_mult - 1
- if modifier > 0 then hp_mult = 1 + (hp_frac * modifier) end
- print_dbg("Mutant with armor %s, bullet with AP %s, HP modifier %s, final HP %s", precalc.bone_data.armor, precalc.ammo_data.k_ap, modifier, hp_mult)
- return hp_mult
- else
- if modifier > 0 then return hp_mult end
- end
- return 1
-end
-
-function npc_standard(s_hit, precalc)
- ammo_data = precalc.ammo_data
- bone_data = precalc.bone_data
- -- print_dbg("[NPC] Ammo %s: Hit %s, AP %s. Bone: ID %s, Armor %s", ammo_data.sec, ammo_data.k_hit, ammo_data.k_ap, bone_data.id, bone_data.armor)
-
- local armor_tier = get_tier(bone_data.armor)
- local ap_tier = get_tier(ammo_data.k_ap)
- local ap_frac = get_frac(ammo_data.k_ap)
-
- local diff = ap_tier - armor_tier
- local mult = damage_subcalcs[diff](math_abs(diff), ap_frac, ammo_data, bone_data)
- print_dbg("Computed AP multipler is %s", mult)
- -- modify bone multiplier if above 1, to limit effectiveness of headshots
- -- if diff < 1 and mult < 1 and bone_data.mult > 1 then
- -- bone_adj = bone_data.mult - 1
- -- bone_adj = bone_adj * mult
- -- local mult_adj = clamp((1 + bone_adj) / bone_data.mult, 0.6, 1)
- -- print_dbg("AP insufficient, reducing multiplier by %s", mult_adj)
- -- mult = mult * mult_adj
- -- end
-
- -- tweak multiplier based on heavy/exo armor
- if armor_tier == 7 then
- local tank_coef = 10 * clamp(bone_data.armor - 0.4, 0.1, 0.3)
- -- print_dbg("Exo tank coef %s", tank_coef)
- mult = mult * (1/tank_coef)
- end
- return mult
-end
-
-function mutant_standard(s_hit, precalc)
- ammo_data = precalc.ammo_data
- bone_data = precalc.bone_data
- -- print_dbg("[MUT] Ammo %s: Hit %s, AP %s. Bone: ID %s, Armor %s", ammo_data.sec, ammo_data.k_hit, ammo_data.k_ap, bone_data.id, bone_data.armor)
-
- -- chance to zero damage, capped at 50% and play particle
- if bone_data.deflect then
- local air_res = SYS_GetParam(2, ammo_data.sec, "k_air_resistance") or 0.05
- air_res = clamp(air_res, 0, 0.5)
- air_res = air_res * (1 - get_cur_vel())
- if math_random() < air_res then
- local snd = xr_sound.get_safe_sound_object("anomaly\\anomaly_gravy_hit1")
- if snd then
- snd.volume = 1
- snd:play(db.actor, 0, sound_object.s2d)
- end
- return 0
- end
- end
-
- local ap_val = ammo_data.k_ap * 2
- if ap_val > bone_data.armor then
- return clamp((ap_val - bone_data.armor)/ap_val, bone_data.hit_fraction, 1)
- else
- return bone_data.hit_fraction
- end
-end
-
-local npc_stun = {}
-function stun_npc(npc)
- if is_actor(npc) then
- level.add_cam_effector("camera_effects\\fusker.anm",959,false,"")
- else
- play_anim(npc)
- npc_stun[npc:id()] = time_global() + 750
- end
-end
-
-
-function play_anim(npc)
- if npc:movement_type() == move.walk or npc:movement_type() == move.run then
- npc:set_movement_type(move.stand)
- end
- npc:play_cycle(anims[math_random(#anims)], true)
- state_mgr.set_state(npc, "idle")
-end
-
-function on_enemy_eval(obj, enemy, flags)
- if npc_stun[obj:id()] then
- if time_global() > npc_stun[obj:id()] then
- npc_stun[obj:id()] = false
- else
- flags.override = true
- flags.ret_value = false
- end
- end
-end
-
-function npc_on_death_callback(victim, who)
- npc_stun[victim:id()] = nil
- if marked == victim:id() then
- RemoveTimeEvent("clear_mark", "clear_mark")
- marked = nil
- end
-end
-
--- refer to ballistics_mcm.txt for logic details
--- handles basic bullets, flinching and hollowpoint expansion
-function ballistic_handlers.default(npc, s_hit, ctx)
- local calcs = {}
- local precalc = prework(npc, s_hit, ctx)
-
- -- add standard calcs for hit, bone mult, etc
- apply_std_calcs(calcs, npc, s_hit, precalc)
-
- if not ctx.is_npc then
- calcs.ap_calc = mutant_standard(s_hit, precalc)
- else
- -- tier based formula with overpen, and flinch
- calcs.ap_calc = npc_standard(s_hit, precalc)
- -- process_flinch(npc, precalc)
- end
- if not is_actor(npc) then
- calcs.hollowpoint = process_hp(precalc, ctx.is_npc)
- end
-
- local final_hit = tbl_reduce(calcs)
- print_dbg("Bone: %s. BA: %s. BM: %s. AP: %s. Vis: %s. Original: %s. Base hit: %s. Final hit: %s", bone_data.name, bone_data.armor, bone_data.mult, ammo_data.k_ap, npc:get_visual_name(), s_hit.power, calcs.base_power, final_hit)
- s_hit.power = final_hit
- return s_hit
-end
-
-function apply_flinch(npc, chance, health_dmg)
- if math_random() < chance then
- stun_npc(npc)
- npc.health = clamp(npc.health - health_dmg, 0.05, 1)
- return true
- end
-end
-
--- flinch applies up to 3 levels above the tier
-function disruptor(npc, s_hit, ctx)
- if ctx.is_npc then
- local precalc = prework(npc, s_hit, ctx)
- local ammo_data = precalc.ammo_data
- local bone_data = precalc.bone_data
- local flinch_adj = (bone_data.armor - ammo_data.k_ap) * 5
- local flinch_chance = clamp(0.95 - flinch_adj, 0.01, 0.8)
- local health_damage = (5 + math_random(10)) / 100
- if head_bones[ctx.bone_id] then
- flinch_chance = clamp(flinch_chance + 0.1, 0, 1)
- health_damage = health_damage * 2
- end
-
- print_dbg("Stagger adj %s, chance %s", flinch_adj, flinch_chance)
-
- local chest_armor = npc_bone_protection(npc, 11).armor
- local health_damage = (5 + math_random(10)) / 100
- local flinch = apply_flinch(npc, flinch_chance, health_damage)
- end
- return ballistic_handlers.default(npc, s_hit, ctx)
-end
-
-function head_disruptor(npc, s_hit, ctx)
- local precalc = prework(npc, s_hit, ctx)
- local ammo_data = precalc.ammo_data
- local bone_data = precalc.bone_data
- if ctx.is_npc and head_bones[ctx.bone_id] then
- local chest_armor = npc_bone_protection(npc, 11).armor
- apply_flinch(npc, clamp(0.9 + ammo_data.k_ap - chest_armor, 0, 1), 0.75 - chest_armor)
- end
- return ballistic_handlers.default(npc, s_hit, ctx)
-end
-local boar_clsid = {
- [clsid.boar] = true,
- [clsid.boar_s] = true,
-}
-
--- buckshot ignores up to 20 armor on limb hit
-function buckshot_damage(npc, s_hit, ctx)
- if boar_clsid[get_clsid(npc)] or (ctx.is_npc and ballistics_utils.limbs[ctx.bone_id] and not is_actor(npc)) then
- local calcs = {}
- local precalc = prework(npc, s_hit, ctx)
- bone_data = precalc.bone_data
- ammo_data = precalc.ammo_data
- -- reduce armor
-
- if boar_clsid[get_clsid(npc)] then
- bone_data.mult = 1.3
- else
- bone_data.armor = clamp(bone_data.armor - 0.1, 0, 1)
- ammo_data.k_imp = ammo_data.k_imp + 0.15
- end
-
- calcs.base_power = precalc.base_power
-
- apply_std_calcs(calcs, npc, s_hit, precalc)
- calcs.ap_calc = ctx.is_npc and npc_standard(s_hit, precalc) or mutant_standard(s_hit, precalc)
-
- local final_hit = tbl_reduce(calcs)
- print_dbg("Bone: %s. BA: %s. BM: %s. AP: %s. Vis: %s. Original: %s. Base hit: %s. Final hit: %s", bone_data.name, bone_data.armor, bone_data.mult, ammo_data.k_ap, npc:get_visual_name(), s_hit.power, calcs.base_power, final_hit)
- s_hit.power = final_hit
- else
- s_hit = ballistic_handlers.default(npc, s_hit, ctx)
- end
- return s_hit
-end
-
-function fragment(npc, s_hit, ctx)
- local precalc = prework(npc, s_hit, ctx)
- s_hit = ballistic_handlers.default(npc, s_hit, ctx)
-
- if not is_actor(npc) and full_pen_modifier(precalc, ctx.is_npc) > 0 and math_random(3) == 3 then
- s_hit.power = s_hit.power * ini_ammo:r_float_ex(ctx.hit_data.ammo, "frag") or 1.5
- end
- return s_hit
-end
-
-function fragment_sound(npc, s_hit, ctx)
- s_hit = fragment(npc, s_hit, ctx)
- play_sound_on_location("elite", npc)
- return s_hit
-end
-
-function headsplode(npc)
- CreateTimeEvent("headsplode", npc:id(), 0, function()
- if not npc:alive() then
- npc:set_bone_visible("bip01_head", false, true)
- play_particle(npc, 15, "anomaly2\\effects\\body_tear_blood_05")
- play_particle(npc, 15, "anomaly2\\effects\\body_tear_blood_01")
- play_sound_on_location("headshot", npc)
- end
- return true
- end)
-end
-
--- slugs are effective at merely crushing people to death (based on their hit fraction)
-function slug(npc, s_hit, ctx)
- if not ctx.is_npc then return ballistic_handlers.default(npc, s_hit, ctx) end
- local calcs = {}
- local precalc = prework(npc, s_hit, ctx)
- ammo_data = precalc.ammo_data
- bone_data = precalc.bone_data
- apply_std_calcs(calcs, npc, s_hit, precalc)
-
- -- ignore some armor on headshot
- if head_bones[ctx.bone_id] then
- local chest_armor = npc_bone_protection(npc, 11)
- if chest_armor.armor <= ammo_data.k_ap * 3 then
- bone_data.armor = clamp(bone_data.armor - ammo_data.k_ap, 0, 1)
- headsplode(npc)
- end
- elseif ballistics_utils.center_mass[ctx.bone_id] and math_random() < 0.9 then
- stun_npc(npc)
- npc.health = clamp(npc.health - 0.1, 0.1, 1)
- end
-
- calcs.ap_calc = npc_standard(s_hit, precalc)
-
- local final_hit = tbl_reduce(calcs)
- print_dbg("Bone: %s. BA: %s. BM: %s. AP: %s. Vis: %s. Original: %s. Base hit: %s. Final hit: %s", bone_data.name, bone_data.armor, bone_data.mult, ammo_data.k_ap, npc:get_visual_name(), s_hit.power, calcs.base_power, final_hit)
- s_hit.power = final_hit
- return s_hit
-end
-
--- jfp headshots
-function headshot(npc, s_hit, ctx)
- if not ctx.is_npc or is_actor(npc) then return ballistic_handlers.default(npc, s_hit, ctx) end
- local calcs = {}
- local precalc = prework(npc, s_hit, ctx)
- ammo_data = precalc.ammo_data
- bone_data = precalc.bone_data
-
- apply_std_calcs(calcs, npc, s_hit, precalc)
- -- ignore armor on headshot, set armor to one below ap to guarantee full damage
- if head_bones[ctx.bone_id] and bone_data.armor < 0.35 and not dialogs_axr_companion.is_actor_companion(db.actor, npc) then
- print_dbg("Ignoring armor on headshot")
- calcs.ap_calc = 1
- headsplode(npc)
- else
- calcs.ap_calc = npc_standard(s_hit, precalc)
- end
-
- calcs.hollowpoint = process_hp(precalc, ctx.is_npc)
-
- local final_hit = tbl_reduce(calcs)
-
- print_dbg("Bone: %s. BA: %s. BM: %s. AP: %s. Vis: %s. Original: %s. Base hit: %s. Final hit: %s", bone_data.name, bone_data.armor, bone_data.mult, ammo_data.k_ap, npc:get_visual_name(), s_hit.power, calcs.base_power, final_hit)
- s_hit.power = final_hit
- return s_hit
-end
-
--- for 5.56 varmageddon
-function varmageddon(npc, s_hit, ctx)
- s_hit = ballistic_handlers.default(npc, s_hit, ctx)
- if not ctx.is_npc then
- -- varma mult always applies
- local v_mult = ini_ammo:r_float_ex(ctx.hit_data.ammo, "v_mult") or 1.5
- s_hit.power = s_hit.power * v_mult
- end
- return s_hit
-end
-
-function ambush(npc, s_hit, ctx)
-
- local calcs = {}
- local precalc = prework(npc, s_hit, ctx)
- ammo_data = precalc.ammo_data
- bone_data = precalc.bone_data
-
- apply_std_calcs(calcs, npc, s_hit, precalc)
- -- hitting distracted npc with suppressed weapon confers 20% damage bonus and ups pen one class (SP6 eq)
- if ctx.hit_data.wpn:weapon_is_silencer() and(not npc:best_enemy() or npc:best_enemy():id() ~= 0) then
- calcs.ambush = 1.2
- ammo_data.k_ap = ammo_data.k_ap + 0.05
- end
- if not ctx.is_npc then
- calcs.ap_calc = mutant_standard(s_hit, precalc)
- else
- -- tier based formula with overpen, and flinch
- calcs.ap_calc = npc_standard(s_hit, precalc)
- end
-
- local final_hit = tbl_reduce(calcs)
- print_dbg("Bone: %s. BA: %s. BM: %s. AP: %s. Vis: %s. Original: %s. Base hit: %s. Final hit: %s", bone_data.name, bone_data.armor, bone_data.mult, ammo_data.k_ap, npc:get_visual_name(), s_hit.power, calcs.base_power, final_hit)
- s_hit.power = final_hit
- return s_hit
-end
--- 0-200 no damage falloff
-function match(npc, s_hit, ctx)
- local distance = get_distance(db.actor, npc)
-
- local calcs = {}
- local precalc = prework(npc, s_hit, ctx)
- ammo_data = precalc.ammo_data
- bone_data = precalc.bone_data
-
- apply_std_calcs(calcs, npc, s_hit, precalc)
- calcs.distance = nil
- -- distance based ap increase
- local distance_mult = clamp(1 + (distance / 200), 1, 2)
- ammo_data.k_ap = clamp(ammo_data.k_ap * distance_mult, 0, 0.399)
- if not ctx.is_npc then
- calcs.ap_calc = mutant_standard(s_hit, precalc)
- else
- -- tier based formula with overpen, and flinch
- calcs.ap_calc = npc_standard(s_hit, precalc)
- end
-
- local final_hit = tbl_reduce(calcs)
- print_dbg("Bone: %s. BA: %s. BM: %s. AP: %s. Vis: %s. Original: %s. Base hit: %s. Final hit: %s", bone_data.name, bone_data.armor, bone_data.mult, ammo_data.k_ap, npc:get_visual_name(), s_hit.power, calcs.base_power, final_hit)
- s_hit.power = final_hit
- return s_hit
-end
-
-local marked
-
-function tracer(npc, s_hit, ctx)
- if marked == npc:id() then return ballistic_handlers.default(npc, s_hit, ctx) end
- marked = npc:id()
- play_sound_on_location("elite", db.actor)
- -- aggro companions
- for k,v in pairs(axr_companions.list_actor_squad_by_id()) do
- companion = get_object_by_id(v)
- if companion then
- local h = hit()
- h.type = hit.fire_wound
- h.power = 0.0
- h.impulse = 0.0
- h.direction = VEC_Y
- h.draftsman = npc
- companion:hit(h)
- end
- end
-
- RemoveTimeEvent("clear_mark", "clear_mark")
- CreateTimeEvent("clear_mark", "clear_mark", 5, function()
- marked = nil
- return true
- end)
- return ballistic_handlers.default(npc, s_hit, ctx)
-end
-
-function on_before_hit(npc, s_hit, bone_id, flags)
- if npc:id() == marked then
- local companions = axr_companions.companion_squads
- if s_hit.draftsman:id() == AC_ID then
- s_hit.power = clamp(s_hit.power * 1.2, 0, 0.99)
- elseif companions[s_hit.draftsman:id()] then
- s_hit.power = clamp(s_hit.power * 1.3, 0, 0.99)
- end
- end
-end
-
-function rip(npc, s_hit, ctx)
- s_hit = ballistic_handlers.default(npc, s_hit, ctx)
- if is_actor(npc) then return s_hit end
-
- if s_hit.power > 0.5 and db.actor.health < 1 then
- local s = xr_sound.get_safe_sound_object("Soul_"..math.random(5))
- s:play(db.actor, 0, sound_object.s2d)
- end
- db.actor.health = clamp(db.actor.health + 0.05 + (0.2 * s_hit.power), 0, 1)
-
- return s_hit
-end
-
-function ignite_npc(npc, bone_id, damage, stack, duration, hit_frac)
- play_particle(npc, bone_id, "artefact\\af_thermal_idle")
-
- stack = stack or 1
- duration = duration or 5
- dmg_low = damage[1] or 5
- dmg_high = damage[2] or 15
- dmg_low = clamp(dmg_low, 0, dmg_high)
- if hit_frac then
- dmg_low = dmg_low * hit_frac
- dmg_high = dmg_high * hit_frac
- end
- print_dbg("Ignited %s", npc:id())
- play_sound_on_location("incendiary", npc)
- play_particle(npc, 11, "damage_fx\\effects\\body_burn_01", duration)
- add_effect("ignite"..npc:id()..math.random(stack), duration,
- function()
- if not npc:alive() then return end
- local h = hit()
- h.type = hit.burn
- h.draftsman = db.actor
- h.power = math_random(dmg_low, dmg_high) / 100
- h.bone = "bip01_spine"
- npc:hit(h)
- end)
-end
-
--- ignite + reduce armor
-function dragonsbreath(npc, s_hit, ctx)
- s_hit = ballistic_handlers.default(npc, s_hit, ctx)
- -- shred 0.06 off each hit
- local bone_data = ctx.is_npc and npc_bone_data(npc, ctx.bone_id) or mutant_prot_values(npc, ctx.bone_id)
- local hit_frac = 0
- if ctx.is_npc then
- modify_bone(npc, ctx.bone_id, clamp(bone_data.armor - 0.03, 0, 1))
- else
- hit_frac = bone_data.hit_fraction
- end
- if not is_actor(npc) then
- ignite_npc(npc, ctx.bone_id, {5, 12}, 8, math_random(8, 16), hit_frac)
- end
- s_hit.type = hit.burn
- change_damage_type(s_hit, hit.burn, bone_data, is_actor(npc))
- return s_hit
-end
-
--- ignite
-function fire_damage(npc, s_hit, ctx)
- s_hit = ballistic_handlers.default(npc, s_hit, ctx)
- local ignite_chance = ini_ammo:r_float_ex(ctx.hit_data.ammo, "ignite") or 0
- if math_random() < ignite_chance then
- if not is_actor(npc) then
- ignite_npc(npc, ctx.bone_id, {5, 15}, 15, math.random(5, 20))
- end
- end
- return s_hit
-end
-
--- for corrosive ammo
-function acid_damage(npc, s_hit, ctx)
- s_hit = ballistic_handlers.default(npc, s_hit, ctx)
- change_damage_type(s_hit, hit.chemical_burn, bone_data, is_actor(npc))
- if not ctx.is_npc or is_actor(npc) then return s_hit end
- -- shred ONCE per bone
- local bone_data = npc_bone_data(npc, ctx.bone_id)
- play_particle(npc, ctx.bone_id, "artefact\\effects\\af_acidic_idle_color")
- modify_bone(npc, ctx.bone_id, clamp(bone_data.armor * 0.8, 0, 1))
- play_sound_on_location("acid", npc)
- return s_hit
-end
-
--- for 5.7 chaos sx
-function chaos_damage(npc, s_hit, ctx)
- local calcs = {}
- local precalc = prework(npc, s_hit, ctx)
- ammo_data = precalc.ammo_data
- bone_data = precalc.bone_data
-
- -- these work for mutant or man
- apply_std_calcs(calcs, npc, s_hit, precalc)
-
- random = math_random()
-
- -- ap +/- 2 tiers randomly
- ammo_data.k_ap = clamp(ammo_data.k_ap + random/9, 0, 1)
- if not ctx.is_npc then
- calcs.ap_calc = mutant_standard(s_hit, precalc)
- else
- calcs.ap_calc = npc_standard(s_hit, precalc)
- end
- -- damage inverse of ap
- calcs.chaos = 0.6 + (1 - random)
-
- local extra_effect = math_random(15)
- if not is_actor(npc) then
- if extra_effect == 3 then
- ignite_npc(npc, ctx.bone_id, {1, 20}, 3, 10, ctx.is_npc and 1 or bone_data.hit_fraction)
- elseif extra_effect == 4 and ctx.is_npc then
- stun_npc(npc)
- elseif extra_effect == 5 then
- db.actor.health = clamp(db.actor.health + (0.1 * s_hit.power), 0, 1)
- elseif extra_effect == 6 then
- -- random full AP
- calcs.ap_calc = 1
- elseif extra_effect == 7 then
- play_particle(npc, ctx.bone_id, "artefact\\effects\\af_acidic_idle_color")
- modify_bone(npc, ctx.bone_id, clamp(bone_data.armor * 0.8, 0, 1))
- play_sound_on_location("acid", npc)
- elseif extra_effect == 8 then
- local explode_obj = alife_create_item("bullet_blow", npc)
- CreateTimeEvent(explode_obj.id, explode_obj.id, 0,
- function(id)
- local explode_obj = get_object_by_id(id)
- if explode_obj then
- explode_obj:explode(0)
- return true
- end
- return false
- end, explode_obj.id)
- end
- end
- -- add random effect
- local final_hit = tbl_reduce(calcs)
- print_dbg("Bone: %s. BA: %s. BM: %s. AP: %s. Vis: %s. Original: %s. Base hit: %s. Final hit: %s", bone_data.name, bone_data.armor, bone_data.mult, ammo_data.k_ap, npc:get_visual_name(), s_hit.power, calcs.base_power, final_hit)
- s_hit.power = final_hit
- return s_hit
-end
-
-local shock_effect = particles_object("artefact\\effects\\af_electra_show_flash_00")
--- for shock anti armor
-function shock_damage(npc, s_hit, ctx)
- local precalc = prework(npc, s_hit, ctx)
- change_damage_type(s_hit, hit.shock, precalc.bone_data, is_actor(npc))
- if not ctx.is_npc then return ballistic_handlers.default(npc, s_hit, ctx)
- end
- local calcs = {}
-
- local armor_tier = get_tier(precalc.bone_data.armor)
-
- apply_std_calcs(calcs, npc, s_hit, precalc)
- calcs.lightning_bonus = 1 + (armor_tier * 0.6)
- snd = "electric"
- if armor_tier > 3 then
- snd = "electric_big"
- play_particle(npc, ctx.bone_id, "amik\\anomaly\\electra\\electra_dust_distort")
- local h = hit()
- h.type = hit.shock
- h.draftsman = db.actor
- h.power = armor_tier * 0.3
- h.bone = "bip01_spine"
- radius = armor_tier / 2
-
- level.iterate_nearest(npc:position(), radius, function(obj)
- if obj and obj:alive() and obj:id() ~= AC_ID then
- obj:hit(h)
- shock_effect:play_at_pos(obj:position())
- end
- end)
- end
- s_hit.power = tbl_reduce(calcs)
- play_sound_on_location(snd, npc)
- return s_hit
-end
-
-function soulripper(npc, s_hit, ctx)
- s_hit = head_bones[ctx.bone_id] and rip(npc, s_hit, ctx) or ballistic_handlers.default(npc, s_hit, ctx)
- return s_hit
-end
-
--- get position of where actor is aiming
-function get_point_of_aim()
- gvid = db.actor:game_vertex_id()
- local r = level.get_target_dist and level.get_target_dist() or 3
- if r > 1000 then return end
- pos = vector():set(db.actor:position())
- pos:add(device().cam_dir:mul(r))
- lvid = level.vertex_id(pos)
- return {pos, lvid, gvid}
-end
-
-local mine_id = 0
-function explode_handler()
- local aim_point = get_point_of_aim()
- if not aim_point then return end
- local explode_obj = alife_create_item("bullet_blow", aim_point)
- CreateTimeEvent(explode_obj.id, explode_obj.id, 0,
- function(id)
- local explode_obj = get_object_by_id(id)
- if explode_obj then
- explode_obj:explode(0)
- explode_obj:destroy_object()
- return true
- end
- return false
- end, explode_obj.id)
-end
-
--- randomly rip the durability
-function pab()
- local rand = math_random(4)
- local wpn = db.actor:active_item()
- if wpn and rand == 1 then
- wpn:set_condition(clamp(wpn:condition() - 0.01, 0, 1))
- end
-end
-
-function play_acid()
- play_particle_firepoint("artefact\\effects\\af_acidic_idle_color_trail")
-end
-function play_shock()
- play_particle_firepoint("anomaly2\\effects\\electra_entrance_small")
-end
-function play_grav_sound()
- play_particle_firepoint("anomaly2\\bloodsucker_shield")
- play_sound_on_location("soulripper", db.actor)
-end
-function play_grav()
- play_particle_firepoint("anomaly2\\bloodsucker_shield")
-end
-function play_fire_big()
- play_particle_firepoint("artefact\\af_thermal_idle")
-end
-
-local custom_proj_table = {
- ["explodes"] = explode_handler,
- ["impair"] = pab,
- ["soulripper"] = play_grav_sound,
- ["chaos"] = play_grav,
- ["shock"] = play_shock,
- ["fire_melt"] = play_fire_big,
- ["acid"] = play_acid
-}
-
-
-
-function actor_on_weapon_fired(obj, wpn, ammo_elapsed, grenade_elapsed, ammo_type, grenade_type)
- local ammo_table = utils_item.get_ammo(wpn:section(), wpn:id())
- ammo_type = wpn:get_ammo_type()
- if ammo_table[ammo_type + 1] and custom_proj_table[ini_ammo:r_string_ex(ammo_table[ammo_type + 1], "special")] then
- custom_proj_table[ini_ammo:r_string_ex(ammo_table[ammo_type + 1], "special")]()
- end
-end
-
--- enhanced recoil patch
-if enhanced_recoil then
- RecoilMult = enhanced_recoil.recoil_multiplier
- function enhanced_recoil.recoil_multiplier(wpn, shotc)
- local sect = wpn:section()
- local ammo_list = utils_item.get_ammo(sect, wpn:id())
- local ammo_type = ammo_list[wpn:get_ammo_type() + 1]
- return RecoilMult(wpn, shotc) * (ini_ammo:r_float_ex(ammo_type, "recoil") or 1)
- end
-end
-
-function on_game_start()
- RegisterScriptCallback("actor_on_weapon_fired", actor_on_weapon_fired)
- RegisterScriptCallback("on_enemy_eval", on_enemy_eval)
- RegisterScriptCallback("npc_on_death_callback", npc_on_death_callback)
- RegisterScriptCallback("monster_on_death_callback",npc_on_death_callback)
- RegisterScriptCallback("npc_on_before_hit", on_before_hit)
- RegisterScriptCallback("monster_on_before_hit", on_before_hit)
-
-end
\ No newline at end of file
diff --git a/mods/Anomaly Ballistics Overhaul/gamedata/scripts/arti_timed_events.script b/mods/Anomaly Ballistics Overhaul/gamedata/scripts/arti_timed_events.script
deleted file mode 100644
index f2c9411f..00000000
--- a/mods/Anomaly Ballistics Overhaul/gamedata/scripts/arti_timed_events.script
+++ /dev/null
@@ -1,43 +0,0 @@
--- simple stateless timed events
-timed_effects = {}
-
-function add_effect(key, duration, effect_function)
- local effect = {
- duration = duration,
- effect = effect_function
- }
-
- if key then
- timed_effects[key] = effect
- else
- table_insert(timed_effects, effect)
- end
-end
-
--- Processing the effects
--- Whatever lowest time is set for effect, it will be processed at least once on process cycle
-local function process_timed_effects()
- for key, props in pairs(timed_effects) do
- if props.effect then
- props.effect()
- props.duration = clamp(props.duration - 1, 0, 999)
- end
- if props.duration == 0 then
- timed_effects[key] = nil
- end
- end
-end
-
-local interval = 1000
-local time = 0
-function actor_on_update()
- tg = time_global()
- --trace("current tg %s", tg)
- if tg < time + interval then return end
- time = tg
- process_timed_effects()
-end
-
-function on_game_start()
- RegisterScriptCallback("actor_on_update", actor_on_update)
-end
\ No newline at end of file
diff --git a/mods/Anomaly Ballistics Overhaul/gamedata/scripts/ballistic_handlers.script b/mods/Anomaly Ballistics Overhaul/gamedata/scripts/ballistic_handlers.script
deleted file mode 100644
index 58eee2cb..00000000
--- a/mods/Anomaly Ballistics Overhaul/gamedata/scripts/ballistic_handlers.script
+++ /dev/null
@@ -1,21 +0,0 @@
--- Sample handler files for ballistics_mcm.
-
---[[
- The default means of managing damage. This is a no-op function for demonstrative purposes.
- In addition to passing the object being hit and the hit, it also passes a context that collects information about the hit details.
- Contents are as follows:
- {
- hit_data = {
- wpn = Weapon object that was used to perform the hit
- sec = Section of the weapon, for convenience
- ammo = Section of the ammo that did the hit. Can be used to pull more information stored in ini_ammo or from your custom configs.
- }
- bone_id = Bone ID, can leverage npc_bone_mult, npc_bone_protection, npc_bone_data with npc to pull additional information.
- is_npc = Boolean that determines if we hit a human (true) or mutant (false)
- }
- Monkey patch this handler or specify a custom handler.
-]]
-
-function default(npc, s_hit, ctx)
- return s_hit
-end
\ No newline at end of file
diff --git a/mods/Anomaly Ballistics Overhaul/gamedata/scripts/ballistics_mcm.script b/mods/Anomaly Ballistics Overhaul/gamedata/scripts/ballistics_mcm.script
deleted file mode 100644
index 38dbb41f..00000000
--- a/mods/Anomaly Ballistics Overhaul/gamedata/scripts/ballistics_mcm.script
+++ /dev/null
@@ -1,218 +0,0 @@
--- Core file for ballistics. When someone is shot, the hit will be intercepted and deferred to a custom config defined in ammo importer based on bullet type.
-
-ini_ammo = ini_file("ammo\\importer.ltx")
-
-local dbg_log
-function print_dbg( text , ...)
- if get_config("debug") or false then
- dbg_log = dbg_log or mcm_log and mcm_log.new("DBG")
- if dbg_log then
- dbg_log.enabled = true
- dbg_log:log( text , ...)
- else
- printf( "ballistics: | %s | "..text ,time_global(), ...)
- end
- end
- return nil
-end
-
--- checking if actor shot the gun at npc or vice versa and if gun is gun
-function validate_hit(s_hit, is_actor)
- if s_hit.draftsman and ((not is_actor and s_hit.draftsman:id() ~= AC_ID) or is_actor and s_hit.type ~= hit.fire_wound) then return end
- if bone_id == 65535 then return end
- if s_hit.power >= 50 then return end
- local wpn = level.object_by_id(s_hit.weapon_id)
- if not wpn or IsGrenade(wpn) or (not IsWeapon(wpn)) then return end
- local sec = wpn:section()
- if ini_sys:r_string_ex(sec, "class") == "S_EXPLO" then return end
- if IsItem("fake_ammo_wpn",sec) then return end
- ammo_map = utils_item.get_ammo(nil, s_hit.weapon_id)
- local ammo = ammo_map[wpn:get_ammo_type() + 1]
- return {
- ["wpn"] = wpn,
- ["ammo"] = ammo,
- ["wpn_sec"] = sec
- } -- returning stuff we parsed, so we don't parse it again
-end
-
-function get_handler(ammo_sec)
- if ini_ammo:section_exist(ammo_sec) then
- local is_grenade = SYS_GetParam(0, ammo_sec, "fake_grenade_name")
- local default = is_grenade and "bind_grenade.explode" or "ballistic_handlers.default"
- local proc = ini_ammo:r_string_ex(ammo_sec, "handler") or ("ballistic_handlers.default")
- proc = str_explode(proc, "%.")
- return proc
- end
-end
-
--- for the most part calculations will be deferred to function-specifics for each ammo type
--- Generically it will call a function specified in config. Function determines how damage is applied.
--- is_npc is either 0 (actor), 1 (npc), 2 (mutant)
--- Final damage should be stored in s_hit.power field.
--- Return false or nothing in order to pass the original hit.
-function on_before_hit(npc,s_hit,bone_id, is_npc)
- local valid_hit_data = validate_hit(s_hit, npc:id() == AC_ID)
- if not (valid_hit_data) then -- no data, so we don't care about the hit
- return false
- end
- local wpn = valid_hit_data.wpn
- local ammo = valid_hit_data.ammo
- local sec = valid_hit_data.wpn_sec
-
- local func = get_handler(ammo)
- if not func then return false end
- -- print_dbg("Applying custom hit for %s on %s using function %s.%s. Prev hit power %s", ammo, bone_id, func[1], func[2], s_hit.power)
- local hit_ctx = {
- hit_data = valid_hit_data,
- bone_id = bone_id,
- is_npc = is_npc
- }
- -- pass to the ammo processor
- -- return value should be the new hit
- if func and func[1] and func[2] and _G[func[1]] and _G[func[1]][func[2]] then
-
- ret_val = _G[func[1]][func[2]](npc, s_hit, hit_ctx)
- if ret_val then s_hit = ret_val end
- end
-
- return {
- ["s_hit"] = s_hit,
- ["bone_id"] = bone_id
- }
-end
-
--- Overriding hit callbacks so our custom hits can communicate with other scripts
-local flags = { ret_value = true }
-
-_G.CActor__BeforeHitCallback = function(actor,s_hit,bone_id)
- if (s_hit.type ~= hit.strike) then
- if (bind_stalker_ext.invulnerable_time and time_global() < bind_stalker_ext.invulnerable_time) then
- bind_stalker_ext.invulnerable_time = bind_stalker_ext.invulnerable_time - 500
- return false
- end
- end
-
- if (s_hit.power > 0) then
- if (s_hit.draftsman and s_hit.draftsman:id() ~= 0 and IsStalker(s_hit.draftsman) and s_hit.draftsman:relation(db.actor) == game_object.friend) then
- return false
- end
- end
-
- flags.ret_value = true
- -- go to original
- if not get_config("incoming") then
- SendScriptCallback("actor_on_before_hit",s_hit,bone_id,flags)
- return flags.ret_value
- end
-
- -- pass through processor
- local custom_hit = on_before_hit(actor,s_hit,bone_id, true)
- custom_hit = custom_hit and custom_hit.s_hit or s_hit
- if custom_hit then
- SendScriptCallback("actor_on_before_hit",custom_hit,bone_id,flags)
- if flags.ret_value and get_config("incoming") then
- s_hit.power = custom_hit.power
- end
- end
- return flags.ret_value
-end
-
-_G.CAI_Stalker__BeforeHitCallback = function(npc,s_hit,bone_id)
- flags.ret_value = true
- local custom_hit = on_before_hit(npc,s_hit,bone_id, true)
- if custom_hit then
- SendScriptCallback("npc_on_before_hit",npc,custom_hit.s_hit,custom_hit.bone_id, flags)
- if flags.ret_value then
- if custom_hit.s_hit.type ~= hit.fire_wound then
- s_hit.power = custom_hit.s_hit.power
- else
- npc:set_health_ex(npc.health - custom_hit.s_hit.power)
- s_hit.power = 0.0001 -- removing engine stuff
- end
- end
- else
- SendScriptCallback("npc_on_before_hit",npc,s_hit,bone_id,flags)
- end
- return flags.ret_value
-end
-
--- bone mult is unknown for monster, so simply assume skin armor vs ap calcs
-_G.CBaseMonster__BeforeHitCallback = function(monster,s_hit,bone_id)
- flags.ret_value = true
- local custom_hit = on_before_hit(monster,s_hit,bone_id, false)
- if custom_hit then
- SendScriptCallback("monster_on_before_hit",monster,custom_hit.s_hit,custom_hit.bone_id, flags)
- if flags.ret_value then
- s_hit.power = custom_hit.s_hit.power
- s_hit.ap = 0
- end
- else
- SendScriptCallback("monster_on_before_hit",monster,s_hit,bone_id,flags)
- end
- return flags.ret_value
-end
-
-local ini_ammo = ini_file("ammo\\importer.ltx")
-gc = game.translate_string
-
-GetFirstName = ui_item.build_name_first
-function ui_item.build_name_first(obj, sec, str)
- if ini_ammo:section_exist(sec) and ini_ammo:r_string_ex(sec, "name") then
- return gc(ini_ammo:r_string_ex(sec, "name"))
- else
- return GetFirstName(obj, sec, str)
- end
-end
-
-ShortName = ui_item.build_short_name_first
-function ui_item.build_short_name_first(obj, sec, str)
- if ini_ammo:section_exist(sec) and ini_ammo:r_string_ex(sec, "name") then
- return gc(ini_ammo:r_string_ex(sec, "name") .. "_s")
- else
- return ShortName(obj, sec, str)
- end
-end
--- custom ammo desc, inject descriptions later
-BuildFooter = ui_item.build_desc_footer
-function ui_item.build_desc_footer(obj, sec, str)
- if ini_ammo:section_exist(sec) and ini_ammo:r_string_ex(sec, "name") then
- return gc(ini_ammo:r_string_ex(sec, "name") .. "_descr")
- else
- return BuildFooter(obj, sec, str)
- end
-end
-
-
--- If you don't use MCM, change your defaults from here.
-local defaults = {
- ["debug"] = true,
- ["incoming"] = false,
- ["cost"] = true,
- ["impair"] = true,
- ["mutant"] = true,
- ["burer"] = 0,
- ["snork"] = 0,
- ["legs"] = true,
-}
-
-function get_config(key)
- if ui_mcm then return ui_mcm.get("ballistics/"..key) else return defaults[key] end
-end
-
-function on_mcm_load()
- op = { id= "ballistics",sh=true ,gr={
- { id= "title",type= "slide",link= "ui_options_slider_player",text="ui_mcm_ballistics_title",size= {512,50},spacing= 20 },
- {id = "debug", type = "check", val = 1, def=true},
- {id = "incoming", type = "check", val = 1, def=false},
- -- {id = "osp", type = "check", val = 1, def=false},
- {id = "cost", type = "check", val = 1, def=true},
- {id = "impair", type = "check", val = 1, def=true},
- {id = "mutant", type = "check", val = 1, def=true},
- {id = "burer", type = "list", val = 2, def=0, content= {{0,"bclassic"} , {1,"bmeaty"} , {2,"bsith"}}},
- {id = "snork", type = "list", val = 2, def=0, content= {{0,"snormal"} , {1,"sfat"} , {2,"ssfat"}}},
-
- {id = "legs", type = "check", val = 1, def=true},
- }
- }
- return op
-end
\ No newline at end of file
diff --git a/mods/Anomaly Ballistics Overhaul/gamedata/scripts/ballistics_utils.script b/mods/Anomaly Ballistics Overhaul/gamedata/scripts/ballistics_utils.script
deleted file mode 100644
index 6207e980..00000000
--- a/mods/Anomaly Ballistics Overhaul/gamedata/scripts/ballistics_utils.script
+++ /dev/null
@@ -1,474 +0,0 @@
--- Utility scripts to help calculate things.
-
-get_config = ballistics_mcm.get_config
-print_dbg = ballistics_mcm.print_dbg
-
-ini_ammo = ini_file("ammo\\importer.ltx")
-ini_damage = ini_file("creatures\\damages.ltx")
-
-ini_sounds = ini_file("ammo\\sounds.ltx")
-
-Bone_IDs = {
- [1] = "bip01_pelvis",
- [2] = "bip01_pelvis",
- [3] = "bip01_l_thigh",
- [4] = "bip01_l_calf",
- [5] = "bip01_l_foot",
- [6] = "bip01_l_foot",
- [7] = "bip01_r_thigh",
- [8] = "bip01_r_calf",
- [9] = "bip01_r_foot",
- [10] = "bip01_r_foot",
- [11] = "bip01_spine",
- [12] = "bip01_spine1",
- [13] = "bip01_spine2",
- -- head
- [14] = "bip01_neck",
- [15] = "bip01_head",
- [16] = "eye_left",
- [17] = "eye_right",
- [18] = "eyelid_1",
- [19] = "jaw_1",
- -- endhead
- [20] = "bip01_l_clavicle",
- [21] = "bip01_l_upperarm",
- [22] = "bip01_l_forearm",
- [23] = "bip01_l_hand",
- [24] = "bip01_l_hand",
- [25] = "bip01_l_hand",
- [26] = "bip01_l_hand",
- [27] = "bip01_l_hand",
- [28] = "bip01_l_hand",
- [29] = "bip01_l_hand",
- [30] = "bip01_l_hand",
- [31] = "bip01_l_hand",
- [32] = "bip01_l_hand",
- [33] = "bip01_r_clavicle",
- [34] = "bip01_r_upperarm",
- [35] = "bip01_r_forearm",
- [36] = "bip01_r_hand",
- [37] = "bip01_r_hand",
- [38] = "bip01_r_hand",
- [39] = "bip01_r_hand",
- [40] = "bip01_r_hand",
- [41] = "bip01_r_hand",
- [42] = "bip01_r_hand",
- [43] = "bip01_r_hand",
- [44] = "bip01_r_hand",
- [45] = "bip01_r_hand",
- [46] = "bip01_pelvis",
-}
-
-head_bones = {
-
- [14] = "bip01_neck",
- [15] = "bip01_head",
- [16] = "eye_left",
- [17] = "eye_right",
- [18] = "eyelid_1",
- [19] = "jaw_1",
-}
-
-center_mass = {
-
- [1] = "bip01_pelvis",
- [2] = "bip01_pelvis",
- [11] = "bip01_spine",
- [12] = "bip01_spine1",
- [13] = "bip01_spine2",
- [20] = "bip01_l_clavicle",
- [33] = "bip01_r_clavicle",
- [46] = "bip01_pelvis",
-}
-
-
-limbs = {
- [3] = "bip01_l_thigh",
- [4] = "bip01_l_calf",
- [6] = "bip01_l_toe0",
- [7] = "bip01_r_thigh",
- [8] = "bip01_r_calf",
- [10] = "bip01_r_toe0",
- [22] = "bip01_l_forearm",
- [24] = "bip01_l_finger0",
- [25] = "bip01_l_finger01",
- [26] = "bip01_l_finger02",
- [27] = "bip01_l_finger1",
- [28] = "bip01_l_finger11",
- [29] = "bip01_l_finger12",
- [30] = "bip01_l_finger2",
- [31] = "bip01_l_finger21",
- [32] = "bip01_l_finger22",
- [35] = "bip01_r_forearm",
- [37] = "bip01_r_finger0",
- [38] = "bip01_r_finger01",
- [39] = "bip01_r_finger02",
- [40] = "bip01_r_finger1",
- [41] = "bip01_r_finger11",
- [42] = "bip01_r_finger12",
- [43] = "bip01_r_finger2",
- [44] = "bip01_r_finger21",
- [45] = "bip01_r_finger22",
-}
-
-
--- play particle at npc bone
-function play_particle(npc, bone_id, name, duration)
- bone_id = (not bone_id or bone_id == 65535) and 1 or bone_id
- bone_name = Bone_IDs[bone_id] or "bip01_spine"
- duration = duration or 1
- local particle = particles_object(name)
- local bone_pos = npc:bone_position(bone_name)
-
- if particle and not particle:playing() then
- particle:play_at_pos(bone_pos)
- end
- local timeout = time_global() + (duration * 1000)
- CreateTimeEvent(npc:id(), name, 0, function(npc, bone, particle, timeout)
- if time_global() > timeout then
- return true
- end
- local bp = npc:bone_position(bone)
- if not particle:playing() then
- particle:play_at_pos(bp)
- end
- particle:move_to(bp, VEC_Z)
- end, npc, bone_name, particle, timeout)
-end
-
--- play a particle at the weapon bone firepoint. good for emulating fancier muzzle fx
-function play_particle_firepoint(name)
- local wpn = db.actor:active_item()
- if not wpn then return end
-
- last_particle = particles_object(name)
- if last_particle and not last_particle:playing() then
- local hud = utils_data.read_from_ini(nil,wpn:section(),"hud","string",nil)
- local fire_bone = utils_data.read_from_ini(nil,hud,"fire_bone","string",nil) or "wpn_body"
- local offset = utils_data.read_from_ini(nil,hud,"fire_point","string",nil) or VEC_ZERO
- offset = offset and utils_data.string_to_vector(offset)
- last_particle:play_at_pos( wpn:bone_position(fire_bone, true), offset )
- CreateTimeEvent("particle_stop", math.random(30), 0.7,
- function()
- last_particle:stop()
- return true
- end)
- end
-end
-
--- play some sounds that scale based on distance
-function play_sound_on_location(snd, npc, distance)
- if not snd or not npc or not ini_sounds:section_exist(snd) then
- return
- end
- distance = distance or get_distance(db.actor, npc)
- play_sound_distance(snd, distance)
-end
-
-function play_sound_distance(snd, distance)
- to_use = distance > 10 and ini_sounds:r_string_ex(snd, "far") and "far" or "near"
- snd_to_play = ini_sounds:r_string_ex(snd, to_use)
- if not snd_to_play then return end
- snd_to_play = snd_to_play .. math.random(ini_sounds:r_float_ex(snd, to_use.."_amt") or 1)
- local s = xr_sound.get_safe_sound_object(snd_to_play)
- if s then
- -- print_dbg("Playing %s", snd_to_play)
- s:play(db.actor, 0, sound_object.s2d)
- -- snd.volume = 1
- s.volume = (distance > 10) and 0.3 + (0.7 * (1 - (clamp(distance, 2, 100) - 2)/98)) or 1
- return s
- end
-end
-
--- pull the bone_mult from [stalker_damage] section, cache the values to prevent excessive stringsplitting
-local stalker_damage = {}
-function npc_bone_mult(bone_id)
- local damage_mult = stalker_damage[bone_id]
- if damage_mult then return damage_mult
- else
- -- pull from data and cache
- local bone_name = Bone_IDs[bone_id] or "bip01_spine"
- local damages = SYS_GetParam(0, "stalker_damage", bone_name)
- damages = str_explode(damages, ",")
- stalker_damage[bone_id] = tonumber(damages[1])
- return stalker_damage[bone_id]
- end
-end
-
--- Pull bone protection for a given NPC's bone. Can use custom bone data.
--- returns two values, second one indicates if this has already been modified
-local bone_cache = {}
-local custom_bone_data = {}
-function npc_bone_protection(npc, bone_id)
- local id = npc:id()
- if id == AC_ID then return {
- armor = actor_bone_prot(bone_id),
- modified = false
- } end
- if custom_bone_data[id] and custom_bone_data[id][bone_id] then return {
- armor = custom_bone_data[id][bone_id],
- modified = false
- }
- else
- local bone_name = Bone_IDs[bone_id] or "bip01_spine"
- local bone_sec = read_npc_bone_sec(npc) or "stalker_hero_1"
- if not bone_cache[bone_sec] then
- bone_cache[bone_sec] = {}
- end
- if not bone_cache[bone_sec][bone_id] then
- local bone_armor_str = SYS_GetParam(0, bone_sec, bone_name) or "0, 0.15"
- local bone_armor = str_explode(bone_armor_str, ",")
- bone_cache[bone_sec][bone_id] = tonumber(bone_armor[2]) or 0.15
- end
- return {
- armor = bone_cache[bone_sec][bone_id],
- modified = false
- }
- end
-end
-
-function hit_frac(npc, bone_id)
- local bone_sec = read_npc_bone_sec(npc) or "stalker_hero_1"
- return SYS_GetParam(2, bone_sec, "hit_fraction_npc") or 0.5
-end
-
--- compute actor bone prot based on active suit
-function actor_bone_prot(bone_id)
- local helmet = db.actor:item_in_slot(12)
- if head_bones[bone_id] and helmet then
- return helmet:cast_Helmet():GetBoneArmor(bone_id)
- else
- local outfit = db.actor:item_in_slot(7)
- if not outfit then return 0
- else return outfit:cast_CustomOutfit():GetBoneArmor(bone_id) end
- end
-end
-
-function read_npc_bone_sec(npc)
- local visual_data = game.get_visual_userdata(npc:get_visual_name())
- if not visual_data then
- printf("!!! Visual %s is lacking data !!!", npc:get_visual_name())
- return "stalker_hero_1"
- end
- local bone_sec = visual_data:r_string_ex("bone_protection", "bones_protection_sect", "stalker_hero_1")
- visual_data:close()
- return bone_sec
-end
-
--- Used to modify the custom values of a stalker's bone armors (to account for reductions, etc)
-function modify_bone(npc, bone_id, new_val)
- local npc_id = npc:id()
- if npc_id == AC_ID then return end
- if not custom_bone_data[npc_id] then custom_bone_data[npc_id] = {} end
- custom_bone_data[npc_id][bone_id] = new_val
-end
-
--- util to collect information about a bone - damage multiplier, id, name
-function npc_bone_data(npc, bone_id)
- bone_prot = npc_bone_protection(npc, bone_id)
- local data = {
- id = bone_id,
- name = Bone_IDs[bone_id],
- armor = bone_prot.armor,
- modified = bone_prot.modified,
- mult = npc_bone_mult(bone_id),
- hit_fraction = hit_frac(npc, bone_id)
- }
- -- halve leg armor and damage multiplier
- if get_config("legs") and limbs[bone_id] then
- data.armor = data.armor / 2
- data.mult = data.mult / 2
- end
- return data
-end
-
-function npc_on_death_callback(npc, who)
- if custom_bone_data[npc:id()] then
- custom_bone_data[npc:id()] = nil
- end
-end
-
--- zombies have an inexplicable 0.1x damage multiplier that isn't reflected anywhere, so I added it here
-local undead_clsid = {
- SM_IZLOM = true,
- SM_ZOMBI = true
-}
-
-local mutant_hp = {
- SM_BLOOD = 1.5,
- SM_CONTR = 3,
- SM_CHIMS = 3,
- SM_IZLOM = 10,
- SM_ZOMBI = 10,
-}
-
-local burer = {
- SM_BURER = 3
-}
-function mutant_prot_values(mutant, id)
-
- local sec = mutant:section()
- local skin_armor = SYS_GetParam(2, sec, "skin_armor")
- local clsid = SYS_GetParam(0, sec, "kind")
- if not clsid or clsid == "" then clsid = SYS_GetParam(0, sec, "class") or "" end
- local prot_sec = SYS_GetParam(0, sec, "protections_sect")
- local burer_lv = get_config("burer") or 0
- if not skin_armor then
- if prot_sec then
- skin_armor = SYS_GetParam(2, prot_sec, "skin_armor") or 0
- else skin_armor = 0 end
- end
- local hit_frac = SYS_GetParam(2, sec, "hit_fraction_monster")
- if not hit_frac and prot_sec then
- hit_frac = SYS_GetParam(2, prot_sec, "hit_fraction_monster")
- end
- if not hit_frac then hit_frac = 0.5 end
- local mult = mutant_hp[clsid] and (get_config("mutant") or undead_clsid[clsid]) and 1/mutant_hp[clsid] or 1
-
- local snork = get_config("snork")
- if snork > 0 and clsid == SM_SNORK then
- skin_armor = skin_armor / (snork * 2)
- mult = mult * (1 + snork)
- end
-
- if burer[clsid] then
- if burer_lv > 0 then
- skin_armor = skin_armor / 2
- end
- if burer_lv == 1 then
- mult = 0.4
- end
- end
- return {
- id = id,
- hit_fraction = hit_frac,
- armor = skin_armor,
- deflect = (burer[clsid] and burer_lv == 2) and true or false,
- mult = mult
- }
-end
-
--- Utils to handle storing velocity. Before weapon fired, compute and cache velocity modifier
-local cur_wep_data = {
- id = 0
-}
--- check and update current weapon to cache hit power, velocity and recoil (for recoil module)
-function actor_on_weapon_before_fire(flags)
- local current_wpn = db.actor:active_item()
- if not current_wpn then return end
- -- cache
- local id = current_wpn:id()
- local sec = current_wpn:section()
- if not cur_wep_data.id or cur_wep_data.id ~= id then
- if IsWeapon(current_wpn) and not IsItem("fake_ammo_wpn",sec) then
- cur_wep_data.id = current_wpn:id()
- base_vel = SYS_GetParam(2, sec, "bullet_speed")
- base_degrade = SYS_GetParam(2, sec, "condition_shot_dec") or 0
- base_recoil = SYS_GetParam(2, sec, "cam_step_angle_horz")
- local vel_add = 0
- local recoil_add = 0
- local upgrades = utils_item.get_upgrades_installed(current_wpn)
- for _, upgrade in pairs(upgrades) do
- local section = ini_sys:r_string_ex(upgrade, "section")
- local speed_adj = ini_sys:r_string_ex(section,"bullet_speed")
- if speed_adj then
- local op = string.sub(speed_adj, 1, 1)
- local val = tonumber(string.sub(speed_adj, 2))
-
- vel_add = op == "+" and vel_add + val or vel_add - val
- end
-
- local shot_dec = ini_sys:r_string_ex(section,"condition_shot_dec")
- if shot_dec then
- local op = string.sub(shot_dec, 1, 1)
- local val = tonumber(string.sub(shot_dec, 2))
- base_degrade = op == "+" and base_degrade + val or base_degrade - val
- end
- end
- cur_wep_data.vel_mod = vel_add/base_vel
- cur_wep_data.dec = base_degrade
- -- print_dbg("Stored velocity mod %s, recoil %s, degradation %s for wpn %s", cur_wep_data.vel_mod, cur_wep_data.recoil, base_degrade, sec)
- else
- -- clear
- -- print_dbg("Clearing cwd")
- cur_wep_data.id = 0
- cur_wep_data.vel_mod = 0
- cur_wep_data.dec = 0
- end
- end
-end
-
--- return the velocity modifier for the current weapon, or 1
-function get_cur_vel()
- return cur_wep_data.vel_mod or 1
-end
-
-function get_recoil()
- return cur_wep_data.recoil or 1
-end
-
--- Provide a damage modifier based on distance, adjusted by bullet velocity and flatness
-function modify_distance(shooter, npc, ammo)
- local dist = get_distance(shooter, npc)
- local air_res = SYS_GetParam(2, ammo, "k_air_resistance") or 0.05
- air_res = clamp(air_res, 0, 1.1)
- local mod = clamp( 1 / ( 1 + (dist / 600) * air_res / ( 1.3 - air_res)), 0.02, 1)
- -- print_dbg("applying distance modifier %s", mod)
- return mod
-end
-
-function get_distance(shooter, npc)
- local npc_pos = npc:position()
- local shooter_pos = shooter:position()
- return npc_pos:distance_to(shooter_pos)
-end
-
--- One way to modify damage based on velocity. 20% of bonus velocity (e.g. taken from flatness upgrades) is added as hit damage.
--- Of course, you don't need to use this
-function modify_velocity()
- -- 20% of velocity bonus becomes damage
- local velocity_mod = (1 + (get_cur_vel() / 5))
- -- print_dbg("Applying velocity damage multiplier of %s", velocity_mod)
- return velocity_mod
-end
-
--- Modify weapon degradation based on ammo type to be correct, if needed. Leverage stored data
--- eg. if ammo degrade in custom config is 1.5 and is 1 in weapon_ammo, reduce weapon dura by 0.5 x condition_shot_dec
-function actor_on_weapon_fired(obj, weapon, ammo_elapsed, grenade_elapsed, ammo_type, grenade_type)
- if weapon:id() ~= cur_wep_data.id then return end
- if not get_config("impair") then return end
- local sec = weapon:section()
- ammo_map = utils_item.get_ammo(nil, cur_wep_data.id)
- local ammo = ammo_map[weapon:get_ammo_type() + 1]
- local base_degrade = SYS_GetParam(2, ammo, "impair")
- local actual_degrade = ini_ammo:r_float_ex(ammo, "impair") or base_degrade
- if base_degrade == actual_degrade then return end
- local diff = (actual_degrade - base_degrade) * cur_wep_data.dec
- -- print_dbg("Adjusting weapon cond by %s", diff)
- weapon:set_condition(clamp(weapon:condition() - diff, 0.001, 0.999))
-end
-
-
-function on_get_item_cost(kind, obj, profile, calculated_cost, ret)
- if not (obj and profile) then
- return nil
- end
-
- if not get_config("cost") then return end
-
- local sec = obj:section()
- local discount = profile.discount
-
- local ammo = IsItem("ammo",sec)
- if ammo and ini_ammo:section_exist(sec) and ini_ammo:r_float_ex(sec, "cost") then
- ret.new_cost = ini_ammo:r_float_ex(sec, "cost") * discount * (obj:ammo_get_count() / ammo)
- end
-end
-
-function on_game_start()
- RegisterScriptCallback("actor_on_weapon_before_fire", actor_on_weapon_before_fire)
- RegisterScriptCallback("actor_on_weapon_fired", actor_on_weapon_fired)
- RegisterScriptCallback("on_get_item_cost", on_get_item_cost)
- RegisterScriptCallback("npc_on_death_callback",npc_on_death_callback)
- RegisterScriptCallback("monster_on_hit_callback",npc_on_death_callback)
-end
\ No newline at end of file
diff --git a/mods/Anomaly Ballistics Overhaul/gamedata/scripts/bas_handler.script b/mods/Anomaly Ballistics Overhaul/gamedata/scripts/bas_handler.script
deleted file mode 100644
index de92c126..00000000
--- a/mods/Anomaly Ballistics Overhaul/gamedata/scripts/bas_handler.script
+++ /dev/null
@@ -1,46 +0,0 @@
-play_sound_on_location = ballistics_utils.play_sound_on_location
-play_particle = ballistics_utils.play_particle
-
-local weakened = {}
-
-function corrosive_cloud(npc, s_hit, ctx)
- local effect = particles_object("artefact\\effects\\af_acidic_idle_color")
- play_particle(npc, ctx.bone_id, "artefact\\effects\\af_acidic_show_01")
- play_sound_on_location("acid", npc)
- level.iterate_nearest(npc:position(), 5, function(obj)
- if obj and obj:alive() and obj:id() ~= AC_ID then
- weakened[obj:id()] = true
- effect:play_at_pos(obj:position())
- end
- end)
- return ballistic_handlers.default(npc, s_hit, ctx)
-end
-
-function on_before_hit(npc, s_hit, bone_id, flags)
- if weakened[npc:id()] then
- s_hit.power = s_hit.power * 1.2
- end
-end
-
-function actor_on_before_hit(s_hit, bone_id, flags)
- if weakened[s_hit.draftsman:id()] and s_hit.type == hit.wound then
- s_hit.power = s_hit.power * 0.7
- end
-end
-
-function se_on_unregister(se)
- weakened[se.id] = nil
-end
-
-function on_death_callback(npc, who)
- weakened[npc:id()] = nil
-end
-
-function on_game_start()
- RegisterScriptCallback("npc_on_death_callback", on_death_callback)
- RegisterScriptCallback("monster_on_death_callback", on_death_callback)
- RegisterScriptCallback("actor_on_before_hit", actor_on_before_hit)
- RegisterScriptCallback("npc_on_before_hit", on_before_hit)
- RegisterScriptCallback("monster_on_before_hit", on_before_hit)
- RegisterScriptCallback("server_entity_on_unregister", se_on_unregister)
-end
\ No newline at end of file
diff --git a/mods/Anomaly Ballistics Overhaul/gamedata/scripts/bind_grenade.script b/mods/Anomaly Ballistics Overhaul/gamedata/scripts/bind_grenade.script
deleted file mode 100644
index c7921af0..00000000
--- a/mods/Anomaly Ballistics Overhaul/gamedata/scripts/bind_grenade.script
+++ /dev/null
@@ -1,196 +0,0 @@
--- custom rocket/grenade binder based on hawu impact grenade
-
-ini_ammo = ini_file("ammo\\importer.ltx")
-
---[[
- Credits: Thial
-]]
-
-class "geometry_ray"
---[[
-(At least one range parameter should be specified)
-ray_range:
- Defines the total range of the ray. If you want to attach the ray to
- a fast moving object it is good to extend the ray so that you can reduce
- the polling rate by using the get function.
-contact_range:
- Defines the distance at which the result will report being in contact.
- You can skip it or set it to a value lower than the ray_range to
- still be able to get the intersection position from the result while
- marking the ray as not being in contact yet
-distance_offset:
- Defines how much the intersection position is offset.
- You can use both positive and negative values or you can leave it blank.
-flags (bit map = values can be added together for combined effect):
- 0 : None
- 1 : Objects
- 2 : Statics
- 4 : Shapes
- 8 : Obstacles
-]]--
-function geometry_ray:__init(ray_range, contact_range, distance_offset, flags)
- if ray_range == nil and contact_range == nil then
- return nil
- end
- self.ray_range = ray_range or contact_range
- self.contact_range = contact_range or ray_range
- self.distance_offset = distance_offset ~= nil and distance_offset or 0
- self.ray = ray_pick()
- self.ray:set_ignore_object(db.actor)
- self.ray:set_flags(flags or 2)
- self.ray:set_range(self.ray_range)
-end
---[[
-position:
- position from which the ray will start
-direction:
- direction in which the ray will be fired
-]]--
-function geometry_ray:get(position, direction)
- if position == nil or direction == nil then
- return nil
- end
- self.ray:set_position(position)
- self.ray:set_direction(direction)
- local distance = self.ray:query() and self.ray:get_distance() or self.ray_range
- local result = {}
- result.in_contact = distance <= self.contact_range
- result.position = position:add(direction:mul(distance + self.distance_offset))
- result.distance = distance + self.distance_offset
- return result
-end
-
-function bind(obj)
- if (not alife_object(obj:id())) then
- obj:bind_object(custom_grenade_binder(obj))
- end
-end
---[[
-
---------------------------------------------------------------------------------
- Class "custom_grenade_binder"
- Usage is trickier than for bullets. In order to use it the following steps are required:
- 1. grenade ammo section needs to define a custom fake_grenade_name
- 2. said fake_grenade_name needs line `script_binding = bind_grenade.bind`
- 3. when projectile hits the ground, custom explosion will be triggered (default does nothing)
- 4. Default explosion spawns item defined by `bomb_type` and immediately detonates if possible
---------------------------------------------------------------------------------
-]]
-
-local VEC_GROUND = vector():set(0, -1, 0)
-class "custom_grenade_binder" (object_binder)
-
-function custom_grenade_binder:__init(obj)
- super(obj)
-
- self.sec = self.object:section()
- self.ray = geometry_ray(0.11, 0.1, nil, 1 + 2)
- self.ray.ray:set_ignore_object(obj)
-
- -- self.ray = geometry_ray(40, 2, nil, 1 + 2)
- -- self.ray.ray:set_ignore_object(obj)
- -- self.frags_r = SYS_GetParam(2, self.sec, "frags_r", 6)
- -- self.velocity_threshold = SYS_GetParam(2, self.sec, "velocity_threshold", 0.36)
- self.tg_period = 33
- self.object:set_fastcall(self.fastcall, self)
-end
-
-function custom_grenade_binder:fastcall()
- local obj = self.object
-
- if obj:parent() then
- return
- end
- -- shamelessly stolen from molotovs
- if (not self.position) then
- -- self.velocity = 0
- self.position = obj:position()
- self.direction = VEC_GROUND
- self.tg = 0
- self.tg_time = 0
- return
- end
-
- self.tg = self.tg + device().time_delta
-
- if self.tg < self.tg_time then
- return
- end
-
- self.tg_time = self.tg + self.tg_period
-
- local pos = obj:position()
- local dir = vector():set(pos):sub(self.position)
-
- local result = self.ray:get(pos, dir)
- if result.in_contact or self.tg_time > 5000 then
- res = self:explode(pos, dir)
- self.object:destroy_object()
- end
-end
-
-local func
-local last_ammo
-function custom_grenade_binder:explode(pos, dir)
- if not last_ammo then
- local weapon = self.object:parent() or db.actor:active_item()
- local ammo = "ammo_vog-25"
- if weapon ~= nil then
- ammo_map = utils_item.get_ammo(nil, weapon:id())
- if not is_empty(ammo_map) then
- ammo = ammo_map[weapon:get_ammo_type() + 1]
- end
- end
- last_ammo = ammo
- func = ballistics_mcm.get_handler(ammo)
- end
- if func and func[1] and func[2] and _G[func[1]] and _G[func[1]][func[2]] then
- _G[func[1]][func[2]](pos, dir, last_ammo)
- end
- func = nil
-end
-
-function custom_grenade_binder:net_spawn(se_abstract)
- if (not object_binder.net_spawn(self, se_abstract)) then
- return false
- end
-
- return true
-end
-
--- lock the grenade handler for the next round
-function actor_on_weapon_before_fire(flags)
- local weapon = db.actor:active_item()
- if weapon and (weapon:weapon_in_grenade_mode() or weapon:clsid() == clsid.wpn_rg6_s or weapon:clsid() == clsid.wpn_rg6) then
- local ammo = "ammo_vog-25"
- if weapon ~= nil then
- ammo_map = utils_item.get_ammo(nil, weapon:id())
- if not is_empty(ammo_map) then
- ammo = ammo_map[weapon:get_ammo_type() + 1]
- end
- end
- func = ballistics_mcm.get_handler(ammo)
- end
-end
-
-function explode(pos, dir, ammo)
- local lvid = db.actor:level_vertex_id()
- local gvid = db.actor:game_vertex_id()
- local bomb_type = ini_ammo:r_string_ex(ammo, "bomb_type") or ""
- if not bomb_type then return end
- local bomb = alife_create_item(bomb_type, {pos, lvid, gvid})
- CreateTimeEvent(bomb.id, bomb.id, 0, function()
- local bomb_obj = level.object_by_id(bomb.id)
- if bomb_obj then
- bomb_obj:explode(0)
- return true
- else
- return false
- end
- end)
-end
-
-function on_game_start()
- RegisterScriptCallback("actor_on_weapon_before_fire", actor_on_weapon_before_fire)
- func = nil
-end
\ No newline at end of file
diff --git a/mods/Anomaly Ballistics Overhaul/gamedata/scripts/bomb_handlers.script b/mods/Anomaly Ballistics Overhaul/gamedata/scripts/bomb_handlers.script
deleted file mode 100644
index 03abdc5a..00000000
--- a/mods/Anomaly Ballistics Overhaul/gamedata/scripts/bomb_handlers.script
+++ /dev/null
@@ -1,118 +0,0 @@
-ini_ammo = ballistics_utils.ini_ammo
-math_random = math.random
---grenade handlers
-
--- m209 cluster
-
-local bomb_min_force = 2000
-local bomb_force = 3000
-function detonate(item_id)
- local bomb = get_object_by_id(item_id)
- if bomb then
- bomb:explode(0)
- end
- return true
-end
-function bomb_scatter(item_id)
- local bomb = level.object_by_id(item_id)
- if bomb then
- bomb:get_physics_shell():apply_force(
- bomb_min_force + (random_float(-1, 1) * bomb_force * 5),
- (bomb_min_force + (math_random() * bomb_force * 5)),
- bomb_min_force + (random_float(-1, 1) * bomb_force * 5))
- CreateTimeEvent(item_id, math_random(10), 0.2 + 1.5 * math_random(), detonate, item_id)
- return true
- end
- return false
-end
-local cluster_particle
-function cluster_bomb(position, direction, ammo)
- local bomb_type = ini_ammo:r_string_ex(ammo, "bomb_type")
- if not bomb_type then return end
- local bomb_count = ini_ammo:r_float_ex(ammo, "bomb_count") or 1
-
- local lvid = db.actor:level_vertex_id()
- local gvid = db.actor:game_vertex_id()
- if not cluster_particle then cluster_particle = particles_object("explosions\\explosion_03") end
- cluster_particle:play_at_pos(position)
- for i = 1, bomb_count do
- local pos = vector():set(position.x, position.y, position.z)
- local dir = vector():set(random_float(-1, 1), math_random(), random_float(-1, 1))
- pos.x = pos.x + dir.x
- pos.y = pos.y + dir.y + 1
- pos.z = pos.z + dir.z
- local bomb = alife_create_item(bomb_type, {pos, lvid, gvid})
- CreateTimeEvent(bomb.id, bomb.id, 0, bomb_scatter, bomb.id)
- end
-end
-
-local fire_particle, fire_particle2
-function ignite(pos, dir, ammo)
-
- if not fire_particle then fire_particle = particles_object("explosions\\effects\\expl_smoke_big_veh") end
- fire_particle:play_at_pos(pos)
- if not fire_particle2 then fire_particle2 = particles_object("explosions\\effects\\expl_distortion") end
- ballistics_utils.play_sound_distance("incendiary", db.actor:position():distance_to(pos))
- fire_particle:play_at_pos(pos)
- fire_particle2:play_at_pos(pos)
- level.iterate_nearest(pos, 10, function(obj)
- if obj and obj:id() ~= AC_ID and obj:alive() then
- arti_handlers.ignite_npc(obj, 11, {20, 40}, 1, 10)
- end
- end)
-end
-
--- local berserked = {}
--- function on_enemy_eval(obj, enemy, flags)
--- if berserked[obj:id()] then
--- flags.override = true
--- flags.ret_value = true
--- end
--- end
-
--- function berserk(pos, dir, ammo)
--- printf("Berserk impact")
--- level.iterate_nearest(pos, 5, function(obj)
--- if obj and obj:id() ~= AC_ID and not berserked[obj:id()] and obj:alive() then
--- local st = db.storage[obj:id()]
--- st.enemy_id = nil
--- berserked[obj:id()] = true
-
--- printf("Making %s berserk", obj:id())
--- CreateTimeEvent(obj:id(), "berserk_wearoff", 20, function()
--- st.enemy_id = nil
--- berserked[obj:id()] = nil
--- return true
--- end)
--- end
--- end)
--- end
-
--- function on_death_callback(obj)
--- if berserked[obj:id()] then berserked[obj:id()] = nil end
--- end
-
-
--- function se_on_unregister(se)
--- berserked[se.id] = nil
--- end
-
--- get_nades = item_weapon.get_grenades
--- function item_weapon.get_grenades(section)
--- printf("Get grenades")
--- get_nades(section)
--- item_weapon.GUI.show_verybad = true
--- end
-
--- Close = item_weapon.UIWheelAmmo.Close
--- function item_weapon.UIWheelAmmo:Close()
--- self.show_verybad = not _NO_DAMAGED_AMMO
--- Close(self)
--- end
-
-function on_game_start()
- -- RegisterScriptCallback("on_enemy_eval", on_enemy_eval)
- -- RegisterScriptCallback("npc_on_before_hit", on_before_hit)
- -- RegisterScriptCallback("monster_on_before_hit", on_before_hit)
- -- RegisterScriptCallback("server_entity_on_unregister", se_on_unregister)
-end
\ No newline at end of file
diff --git a/mods/Anomaly Ballistics Overhaul/gamedata/scripts/custom_functor_autoinject.script b/mods/Anomaly Ballistics Overhaul/gamedata/scripts/custom_functor_autoinject.script
deleted file mode 100644
index dd656651..00000000
--- a/mods/Anomaly Ballistics Overhaul/gamedata/scripts/custom_functor_autoinject.script
+++ /dev/null
@@ -1,538 +0,0 @@
---[[
-
-Custom Dynamic Functors, written by demonized
-Allows to add/remove item functors dynamically from script
-Can override ltx-defined functors and can remove the override to return back to ltx functor
-
-To use in your script look at example below
-
----------------------------------------------------------------------------------------------------------------------
-local function name_condition_function(obj, bag, mode)
- if obj then
- return true
- end
-end
-
-local function name_function(obj, bag, mode)
- return "st_my_functor_string_in_xml"
-end
-
-local function action_condition_function(obj, bag, mode)
- if obj then
- return true
- end
-end
-
-local function action_function(obj, bag, mode)
- alife_create_item(obj:section(), db.actor)
-end
-
-local add_functor = custom_functor_autoinject.add_functor
-add_functor("my_name_of_functor", name_condition_function, name_function, action_condition_function, action_function, override_bags)
----------------------------------------------------------------------------------------------------------------------
-
-to add your functor you use add_functor function which requires these arguments in order:
- name: string, your name of your functor, can be any string.
- If the name of functor already exists this function will overwrite functions for it
- name_condition_function: function, the condition at which you will get your right-click option for item
- name_function: function, the name itself, must return string ID defined in XML files for your option.
- if set to return nil, the option won't appear
- action_condition_function: function, the condition at which the action will be performed, usually its the same as name_condition_function
- you can put nil into argument to use the same function as name_condition_function
- action_function: function, the action itself to perform
- override_bags: boolean. If its true, then you can override bags and modes to check for condition, otherwise it will use defaults (mode == "inventory" and bag == "actor_bag" or bag == "actor_equ" or bag == "actor_belt")
-
-functions themselves accept obj, bag and mode arguments
-obj: current object you right-clicked
-bag: current bag, list of possible bags: {"actor_equ","actor_belt","actor_bag","actor_trade_bag","actor_trade","npc_bag","npc_trade","npc_trade_bag"}
-mode: current mode, list of possible modes: {"inventory" , "loot" , "trade" , "repair"}
-bag and mode is not enabled unless you set override_bags flag to true
-
-
-removal of functor is done by calling this
-
---------------------------------------------------------------------------------------
-local remove_functor = custom_functor_autoinject.remove_functor
-remove_functor("my_name_of_functor")
---------------------------------------------------------------------------------------
-
-you can also override existing functors defined in item's ltx by using this
-
----------------------------------------------------------------------------------------------------------------------
-local override_functor = custom_functor_autoinject.override_functor
-override_functor(slot, name_condition_function, name_function, action_condition_function, action_function, override_bags)
----------------------------------------------------------------------------------------------------------------------
-
-arguments are same, except you have to provide the slot (first argument) for your override. The slots are 1-10
-for example if item's ltx have use1_functor and use1_action_functor then
-if you want to override it you have to provide slot 1
-be aware that if your name_condition_function or action_condition_function may return false
-then old functor will be fired
-if you don't want that behaviour, you can define generic "return true" function for those
-and check condition for firing in name_function and action_function
-
-removal of override is done by calling this
-
---------------------------------------------------------------------------------------
-local remove_override = custom_functor_autoinject.remove_override
-remove_override(slot)
---------------------------------------------------------------------------------------
-
---]]
-
-local function func_index(t,a,b)
- return (t[a].index) < (t[b].index)
-end
-
-local function func_index_reverse(t,a,b)
- return (t[a].index) > (t[b].index)
-end
-
-local function func_value(t, a, b)
- return t[a] < t[b]
-end
-
-local spairs = spairs
-local string_find = string.find
-local string_gsub = string.gsub
-local table_remove = table.remove
-local tonumber = tonumber
-local unpack = unpack
-
---Recursive print of tables similar to PHP print_r function
-local function print_r(t)
- local print_r_cache={}
- local function sub_print_r(t,indent)
- if (print_r_cache[tostring(t)]) then
- printf(indent.."*"..tostring(t))
- else
- print_r_cache[tostring(t)]=true
- if (type(t)=="table") then
- for pos,val in pairs(t) do
- if (type(val)=="table") then
- printf(indent.."["..pos.."] => "..tostring(t).." {")
- sub_print_r(val,indent..string.rep(" ",string.len(pos)+8))
- printf(indent..string.rep(" ",string.len(pos)+6).."}")
- else
- printf(indent.."["..pos.."] => "..tostring(val))
- end
- end
- else
- printf(indent..tostring(t))
- end
- end
- end
- sub_print_r(t," ")
-end
-
-local function print_table(table, subs)
-
- local sub
- if subs ~= nil then
- sub = subs
- else
- sub = ""
- end
- for k,v in pairs(table) do
- if type(v) == "table" then
- print_table(v, sub.."["..k.."]----->")
- elseif type(v) == "function" then
- printf(sub.."%s = function",k)
- elseif type(v) == "userdata" then
- if (v.x) then
- printf(sub.."%s = %s",k,utils_data.vector_to_string(v))
- else
- printf(sub.."%s = userdata", k)
- end
- elseif type(v) == "boolean" then
- if v == true then
- if(type(k)~="userdata") then
- printf(sub.."%s = true",k)
- else
- printf(sub.."userdata = true")
- end
- else
- if(type(k)~="userdata") then
- printf(sub.."%s = false", k)
- else
- printf(sub.."userdata = false")
- end
- end
- else
- if v ~= nil then
- printf(sub.."%s = %s", k,v)
- else
- printf(sub.."%s = nil", k,v)
- end
- end
- end
-
-end
-
--- Removing element from table and shifting down both key and value
--- Modes: 0 - index, 1 - value, 2 - key, 3 - key-index
-local function table_remove_shift(t, val, mode)
- local removed = false
- local res
- if mode == 0 then
- for k, v in spairs(t, func_index) do
- if removed then
- t[k - 1] = v
- if t[k - 1].index then
- t[k - 1].index = t[k - 1].index - 1
- end
- if t[k - 1].properties_index then
- t[k - 1].properties_index = t[k - 1].properties_index - 1
- end
- t[k] = nil
- elseif v.index and v.index == val then
- res = t[k]
- t[k] = nil
- removed = true
- end
- end
- elseif mode == 1 then
- for k, v in spairs(t, func_value) do
- if removed then
- t[k - 1] = v - 1
- t[k] = nil
- elseif v == val then
- res = t[k]
- t[k] = nil
- removed = true
- end
- end
- elseif mode == 2 then
- for k, v in spairs(t, func_value) do
- if removed then
- t[k] = v - 1
- elseif v == val then
- res = t[k]
- t[k] = nil
- removed = true
- end
- end
- elseif mode == 3 then
- for k, v in spairs(t, func_index) do
- if removed then
- if t[k].index then
- t[k].index = t[k].index - 1
- end
- elseif v.index and v.index == val then
- res = t[k]
- t[k] = nil
- removed = true
- end
- end
- end
- return res
-end
-
-local ui_inventory_init = ui_inventory.UIInventory.__init
-ui_inventory.UIInventory.__init = function(self)
- ui_inventory_init(self)
- self.custom_functor = {}
- self.custom_functor_names = {}
-end
-
-local NameCustom = ui_inventory.UIInventory.Name_Custom
-function ui_inventory.UIInventory:Name_Custom(obj, bag, temp, i)
- obj = self:CheckItem(obj,"Name_Custom " .. i)
- if self.custom_functor[i] and self.custom_functor[i].cond_name(obj, bag, self.mode) then
- return self.custom_functor[i].func_name(obj, bag, self.mode)
- else
- return NameCustom(self, obj, bag, temp, i)
- end
-end
-
-local ActionCustom = ui_inventory.UIInventory.Action_Custom
-function ui_inventory.UIInventory:Action_Custom(obj, bag, temp, i)
- obj = self:CheckItem(obj,"Action_Custom " .. i)
- if self.custom_functor[i] and self.custom_functor[i].cond_action(obj, bag, self.mode) then
- return self.custom_functor[i].func_action(obj, bag, self.mode)
- else
- return ActionCustom(self, obj, bag, temp, i)
- end
-end
-
-ui_inventory.UIInventory.get_max_custom_functor = function(self)
- local max = 0
- local max_custom = {}
- local max_index = 0
- for k, v in pairs(self.properties) do
- if string_find(k, "custom_.*") then
- if v.index > max_index then
- max_index = v.index
- end
- local x = tonumber(string_gsub(k, "custom_(.*)", "%1"), nil)
- if x > max then
- max = x
- max_custom = v
- end
- end
- end
- return max, max_custom, max_index
-end
-
-local modes = {
- ["inventory"] = true,
- ["loot"] = true,
- ["trade"] = true,
- ["repair"] = true
-}
-local bags = {
- ["actor_equ"] = true,
- ["actor_belt"] = true,
- ["actor_bag"] = true,
- ["actor_trade_bag"] = true,
- ["actor_trade"] = true,
- ["npc_bag"] = true,
- ["npc_trade"] = true,
- ["npc_trade_bag"] = true
-}
-
-ui_inventory.UIInventory.Mode_Custom_Functor = function(self, obj, bag, temp, i)
- return modes[self.mode]
-end
-
-ui_inventory.UIInventory.Cont_Custom_Functor = function(self, obj, bag, temp, i)
- return bags[bag]
-end
-
-ui_inventory.UIInventory.add_custom_functor = function(self, name, cond_name, func_name, cond_action, func_action, override_bags)
- local custom_functor_slot
-
- if self.custom_functor_names[name] then
- custom_functor_slot = self.custom_functor_names[name]
- self.custom_functor[custom_functor_slot].cond_name = cond_name
- self.custom_functor[custom_functor_slot].func_name = func_name
- self.custom_functor[custom_functor_slot].cond_action = cond_action
- self.custom_functor[custom_functor_slot].func_action = func_action
- self.properties["custom_" .. custom_functor_slot].mode_func[1] = override_bags and "Mode_Custom_Functor" or "Mode_Custom"
- self.properties["custom_" .. custom_functor_slot].cont_func[1] = override_bags and "Cont_Custom_Functor" or "Cont_Custom"
- else
- local max, max_custom, max_index = self:get_max_custom_functor()
- local custom_num = max + 1
- local properties_num = max_index + 1
- for k, v in spairs(self.properties, func_index_reverse) do
- if v.index > max_index then
- printf("%s, %s", k, v.index)
- v.index = v.index + 1
- else
- printf("%s, %s, max custom_functor reached", k, v.index)
- break
- end
- end
- self.properties["custom_" .. custom_num] = {
- index = properties_num,
- name_func = {"Name_Custom", max_custom["name_func"][2] + 1},
- mode_func = {override_bags and "Mode_Custom_Functor" or "Mode_Custom", max_custom["mode_func"][2] + 1},
- cont_func = {override_bags and "Cont_Custom_Functor" or "Cont_Custom", max_custom["cont_func"][2] + 1},
- precondition1 = {"Name_Custom", max_custom["precondition1"][2] + 1},
- action = {"Action_Custom", max_custom["action"][2] + 1}
- }
- custom_functor_slot = custom_num
- self.custom_functor[custom_functor_slot] = {
- index = custom_functor_slot,
- properties_index = properties_num,
- name = name,
- cond_name = cond_name,
- func_name = func_name,
- cond_action = cond_action,
- func_action = func_action
- }
- self.custom_functor_names[name] = custom_functor_slot
- end
-end
-
-ui_inventory.UIInventory.remove_custom_functor = function(self, name)
- if not self.custom_functor_names[name] then return end
-
- local index = table_remove_shift(self.custom_functor_names, self.custom_functor_names[name], 2)
- if not index then return end
-
- local custom_functor = table_remove_shift(self.custom_functor, index, 0)
- if not custom_functor then return end
-
- local removed = false
- for k, v in spairs(self.properties, func_index) do
- if string_find(k, "custom_.*") then
- if removed then
- local x = tonumber(string_gsub(k, "custom_(.*)", "%1"), nil) - 1
- self.properties["custom_" .. x] = self.properties[k]
- self.properties["custom_" .. x].index = self.properties["custom_" .. x].index - 1
- self.properties["custom_" .. x].name_func[2] = self.properties["custom_" .. x].name_func[2] - 1
- self.properties["custom_" .. x].mode_func[2] = self.properties["custom_" .. x].mode_func[2] - 1
- self.properties["custom_" .. x].cont_func[2] = self.properties["custom_" .. x].cont_func[2] - 1
- self.properties["custom_" .. x].precondition1[2] = self.properties["custom_" .. x].precondition1[2] - 1
- self.properties["custom_" .. x].action[2] = self.properties["custom_" .. x].action[2] - 1
- self.properties[k] = nil
- elseif v.index == custom_functor.properties_index then
- self.properties[k] = nil
- removed = true
- end
- elseif removed then
- v.index = v.index - 1
- end
- end
-end
-
-ui_inventory.UIInventory.override_functor = function(self, slot, cond_name, func_name, cond_action, func_action, override_bags)
- self.custom_functor[slot] = {
- cond_name = cond_name,
- func_name = func_name,
- cond_action = cond_action,
- func_action = func_action
- }
- self.properties["custom_" .. slot].mode_func[1] = override_bags and "Mode_Custom_Functor" or "Mode_Custom"
- self.properties["custom_" .. slot].cont_func[1] = override_bags and "Cont_Custom_Functor" or "Cont_Custom"
-end
-
-ui_inventory.UIInventory.remove_override = function(self, slot)
- self.custom_functor[slot] = nil
- self.properties["custom_" .. slot].mode_func[1] = "Mode_Custom"
- self.properties["custom_" .. slot].cont_func[1] = "Cont_Custom"
-end
-
-ui_inventory.UIInventory.get_functor_at_slot = function(self, slot)
- return self.custom_functor[slot]
-end
-
-ui_inventory.UIInventory.get_functor_by_name = function(self, name)
- if self.custom_functor_names[name] then
- return self.custom_functor[self.custom_functor_names[name]], self.custom_functor_names[name]
- end
-end
-
--- Adding
-local first_update_pending = true
-local functor_queue = {}
-
-local function add_to_queue(type, ...)
- functor_queue[#functor_queue + 1] = {
- type = type,
- data = {...}
- }
-end
-
-local function process_queue()
-
- if not ui_inventory.GUI then
- ui_inventory.GUI = ui_inventory.UIInventory()
- end
-
- printf("Custom functors, processing queue")
-
- for i, v in ipairs(functor_queue) do
- printf("Custom functors, type %s", v.type)
- ui_inventory.GUI[v.type](ui_inventory.GUI, unpack(v.data))
- end
-
- functor_queue = {}
- first_update_pending = false
-end
-
-local function actor_on_first_update()
- process_queue()
-end
-
-function add_functor(name, cond_name, func_name, cond_action, func_action, override_bags)
- if not name then return end
-
- local cond_action = cond_action or cond_name
- if first_update_pending then
- add_to_queue("add_custom_functor", name, cond_name, func_name, cond_action, func_action, override_bags)
- return
- end
-
- ui_inventory.GUI:add_custom_functor(name, cond_name, func_name, cond_action, func_action, override_bags)
-end
-
-function remove_functor(name)
- if not name then return end
-
- if first_update_pending then
- add_to_queue("remove_custom_functor", name)
- return
- end
-
- ui_inventory.GUI:remove_custom_functor(name)
-end
-
-function override_functor(slot, cond_name, func_name, cond_action, func_action, override_bags)
- if slot < 1 or slot > 10 then
- printf("functor slot is not valid, min 1, max 10, your slot: %s", slot)
- return
- end
-
- local cond_action = cond_action or cond_name
- if first_update_pending then
- add_to_queue("override_functor", slot, cond_name, func_name, cond_action, func_action, override_bags)
- return
- end
-
- ui_inventory.GUI:override_functor(slot, cond_name, func_name, cond_action, func_action, override_bags)
-end
-
-function remove_override(slot)
- if slot < 1 or slot > 10 then
- printf("functor slot is not valid min 1, max 10, your slot: %s", slot)
- return
- end
-
- if first_update_pending then
- add_to_queue("remove_override", slot)
- return
- end
-
- ui_inventory.GUI:remove_override(slot)
-end
-
-function get_functor_at_slot(slot)
- if first_update_pending then
- add_to_queue("get_functor_at_slot", slot)
- return
- end
-
- return ui_inventory.GUI:get_functor_at_slot(slot)
-end
-
-function get_functor_by_name(name)
- if first_update_pending then
- add_to_queue("get_functor_by_name", name)
- return
- end
-
- return ui_inventory.GUI:get_functor_by_name(name)
-end
-
-function print_properties()
- if not ui_inventory.GUI then
- ui_inventory.GUI = ui_inventory.UIInventory()
- end
-
- for k, v in spairs(ui_inventory.GUI.properties, func_index) do
- printf("[" .. k .. "] => ")
- print_r(v)
- end
-end
-
-function print_custom_functor()
- if not ui_inventory.GUI then
- ui_inventory.GUI = ui_inventory.UIInventory()
- end
-
- print_r(ui_inventory.GUI.custom_functor)
-end
-
-function print_custom_functor_names()
- if not ui_inventory.GUI then
- ui_inventory.GUI = ui_inventory.UIInventory()
- end
-
- print_r(ui_inventory.GUI.custom_functor_names)
-end
-
-function on_game_start()
- RegisterScriptCallback("actor_on_first_update", actor_on_first_update)
-end
diff --git a/mods/Anomaly Ballistics Overhaul/gamedata/scripts/demonized_time_events.script b/mods/Anomaly Ballistics Overhaul/gamedata/scripts/demonized_time_events.script
deleted file mode 100644
index b6378a44..00000000
--- a/mods/Anomaly Ballistics Overhaul/gamedata/scripts/demonized_time_events.script
+++ /dev/null
@@ -1,265 +0,0 @@
--- Optimized time events, using sorted arrays to peek only closest event to come
--- Designed to fully reimplement existing timed events with all its quirks
--- Unlike vanilla time events, fires on actor_on_update and doesn't require any checks
--- Written by demonized
-
-local ev_queue = {}
-local computed_ev_queue = {}
-
-local math_floor = math.floor
-local math_huge = math.huge
-
-local table_insert = table.insert
-local table_remove = table.remove
-
-local has_alife_info = has_alife_info
-local time_global = time_global
-
-local pairs = pairs
-local unpack = unpack
-
-local tg = 0
-local i = 1
-
-local function print_table(table, subs)
-
- local sub
- if subs ~= nil then
- sub = subs
- else
- sub = ""
- end
- for k,v in pairs(table) do
- if type(v) == "table" then
- print_table(v, sub.."["..k.."]----->")
- elseif type(v) == "function" then
- printf(sub.."%s = function",k)
- elseif type(v) == "userdata" then
- if (v.x) then
- printf(sub.."%s = %s",k,utils_data.vector_to_string(v))
- else
- printf(sub.."%s = userdata", k)
- end
- elseif type(v) == "boolean" then
- if v == true then
- if(type(k)~="userdata") then
- printf(sub.."%s = true",k)
- else
- printf(sub.."userdata = true")
- end
- else
- if(type(k)~="userdata") then
- printf(sub.."%s = false", k)
- else
- printf(sub.."userdata = false")
- end
- end
- else
- if v ~= nil then
- printf(sub.."%s = %s", k,v)
- else
- printf(sub.."%s = nil", k,v)
- end
- end
- end
-
-end
-
-local function queue_timer_compare(a, b)
- return a.timer < b.timer
-end
-
--- http://lua-users.org/wiki/BinaryInsert
-local function binary_insert(t, value, fcomp)
- -- Initialise compare function
- local fcomp = fcomp or function(a, b) return a < b end
-
- -- print_table(value)
-
- -- Initialise numbers
- local iStart, iEnd, iMid, iState = 1, #t, 1, 0
-
- if iEnd == 0 then
- t[1] = value
- -- printf("adding in beginning table empty")
- return 1
- end
-
- if fcomp(value, t[1]) then
- -- printf("adding in beginning %s of %s", 1, iEnd)
- table_insert(t, 1, value)
- return 1
- end
-
- if not fcomp(value, t[iEnd]) then
- -- printf("adding in end %s of %s", iEnd + 1, iEnd)
- local pos = iEnd + 1
- t[pos] = value
- return pos
- end
-
- -- Get insert position
- while iStart <= iEnd do
-
- -- calculate middle
- iMid = math_floor((iStart + iEnd) / 2)
-
- -- compare
- if fcomp(value, t[iMid]) then
- iEnd, iState = iMid - 1, 0
- else
- iStart, iState = iMid + 1, 1
- end
- end
-
- local pos = iMid + iState
- -- printf("adding in middle %s of %s", pos, iEnd)
- table_insert(t, pos, value)
- return pos
-end
-
-local function refresh_ev_queue()
- empty_table(computed_ev_queue)
- -- tg = time_global()
-
- local t = computed_ev_queue
- for ev_id,actions in pairs(ev_queue) do
- for act_id,act in pairs(actions) do
- if (act_id ~= "__size") then
- local d = {
- ev_id = ev_id,
- act_id = act_id,
- timer = act.timer,
- f = act.f,
- p = act.p
- }
- binary_insert(t, d, queue_timer_compare)
- end
- end
- end
-end
-
-local function find_ev_queue(ev_id, act_id)
- for i = 1, #computed_ev_queue do
- local t = computed_ev_queue[i]
- if t.ev_id == ev_id and t.act_id == act_id then
- return i
- end
- end
-end
-
-local function remove_ev_queue(ev_id, act_id)
- local pos = find_ev_queue(ev_id, act_id)
- if pos then
- if pos <= i then
- i = i - 1
- end
- return table_remove(computed_ev_queue, pos)
- end
-end
-
-function CreateTimeEvent(ev_id,act_id,timer,f,...)
- if not (ev_queue[ev_id]) then
- ev_queue[ev_id] = {}
- ev_queue[ev_id].__size = 0
- end
-
- if not (ev_queue[ev_id][act_id]) then
- local new_timer = time_global() + timer*1000
- ev_queue[ev_id][act_id] = {}
- ev_queue[ev_id][act_id].timer = new_timer
- ev_queue[ev_id][act_id].f = f
- ev_queue[ev_id][act_id].p = {...}
- ev_queue[ev_id].__size = ev_queue[ev_id].__size + 1
-
- local d = {
- ev_id = ev_id,
- act_id = act_id,
- timer = new_timer,
- f = f,
- p = {...}
- }
- binary_insert(computed_ev_queue, d, queue_timer_compare)
- end
-end
-
-function RemoveTimeEvent(ev_id,act_id)
- if (ev_queue[ev_id] and ev_queue[ev_id][act_id]) then
- ev_queue[ev_id][act_id] = nil
- ev_queue[ev_id].__size = ev_queue[ev_id].__size - 1
- remove_ev_queue(ev_id, act_id)
- end
-end
-
-function ResetTimeEvent(ev_id,act_id,timer)
- if (ev_queue[ev_id] and ev_queue[ev_id][act_id]) then
- local new_timer = time_global() + timer*1000
- ev_queue[ev_id][act_id].timer = new_timer
-
- local el = remove_ev_queue(ev_id, act_id)
- el.timer = new_timer
- binary_insert(computed_ev_queue, el, queue_timer_compare)
- end
-end
-
-local tg_past = 0
-local to_remove = {}
-function ProcessEventQueue(force)
- tg = time_global()
- -- if tg > tg_past then
- -- printf("tg %s", tg)
- -- printf("computed")
- -- print_table(computed_ev_queue)
- -- tg_past = tg + 100
- -- end
-
- local force_refresh
- i = 1
- local l = #computed_ev_queue
- while i <= l do
- local t = computed_ev_queue[i] or (function()
- force_refresh = true
- return { timer = math_huge }
- end)() -- Failsafe if event does not exist, refresh queue and postpone to next tick
-
- if tg < t.timer then
- break
- end
-
- if t.f(unpack(t.p)) == true then
- local t1 = ev_queue[t.ev_id]
- t1[t.act_id] = nil
- t1.__size = t1.__size - 1
- if t1.__size == 0 then
- ev_queue[t.ev_id] = nil
- end
- to_remove[#to_remove + 1] = {
- ev_id = t.ev_id,
- act_id = t.act_id
- }
- end
- i = i + 1
- end
-
- if force_refresh then
- refresh_ev_queue()
- empty_table(to_remove)
- elseif to_remove[1] then
- for i = 1, #to_remove do
- local t = to_remove[i]
- remove_ev_queue(t.ev_id, t.act_id)
- to_remove[i] = nil
- end
- empty_table(to_remove)
- end
-
- return false
-end
-
-local function process_queue()
- ProcessEventQueue()
-end
-
-function on_game_start()
- RegisterScriptCallback("actor_on_update", process_queue)
-end
diff --git a/mods/Anomaly Ballistics Overhaul/gamedata/scripts/enhanced_recoil_mcm.script b/mods/Anomaly Ballistics Overhaul/gamedata/scripts/enhanced_recoil_mcm.script
deleted file mode 100644
index e43cea9c..00000000
--- a/mods/Anomaly Ballistics Overhaul/gamedata/scripts/enhanced_recoil_mcm.script
+++ /dev/null
@@ -1,348 +0,0 @@
--- Rip of the enhanced recoil effects with wildcarding support and ammo support
--- get_config = ballistics_mcm.get_config
--- print_dbg = ballistics_mcm.print_dbg
-
-local ini_eff = ini_file("plugins\\recoil\\importer.ltx")
-
--- track and upgrade recoil
-local wpn_data = {
- id = 0,
- recoil = 1,
- mult_table = {0, 0, 0, 0, 0, 0}
-}
-function actor_on_weapon_before_fire(flags)
-
- local current_wpn = db.actor:active_item()
- if not current_wpn or not (IsWeapon(current_wpn) and not IsItem("fake_ammo_wpn",sec)) then
- wpn_data = {
- id = 0,
- recoil = 1,
- mult_table = {0, 0, 0, 0, 0, 0}
- }
- return
- end
- -- cache recoil (determined by cam_step_angle_horz)
- local id = current_wpn:id()
- if wpn_data.id == id then return end
- local sec = current_wpn:section()
- local sec_p = ini_sys:r_string_ex(sec,"parent_section") or sec
- local base_recoil = SYS_GetParam(2, sec, "cam_step_angle_horz")
- local recoil_mod = 0
- local upgrades = utils_item.get_upgrades_installed(current_wpn)
- for _, upgrade in pairs(upgrades) do
- local section = ini_sys:r_string_ex(upgrade, "section")
- local recoil = ini_sys:r_string_ex(section,"cam_step_angle_horz")
- if recoil then
- local op = string.sub(recoil, 1, 1)
- local val = tonumber(string.sub(recoil, 2))
- recoil_mod = op == "+" and recoil_mod + val or recoil_mod - val
- end
- end
- -- current_wpn:cast_Weapon():GetCurrentFireMode()
- wpn_data.id = id
- wpn_data.recoil = 1 + (recoil_mod/base_recoil)
- wpn_data.mult_table = ini_eff:r_list(sec_p, "kick_recoil", "0, 0, 0, 0, 0, 0")
-end
-
-local wpn_fx = {}
-local function parse_anims(sec)
- local sec_p = ini_sys:r_string_ex(sec,"parent_section") or sec
-
- if wpn_fx[sec_p] and (sec ~= sec_p) then
- wpn_fx[sec] = wpn_fx[sec_p]
-
- elseif ini_eff:section_exist(sec_p) then
- local tbl = {}
-
- -- parse strength
- tbl.s = {}
- local s = ini_eff:r_string_ex(sec_p,"s")
- local _s = str_explode(s,",")
- for i=1,#_s do
- tbl.s[#tbl.s + 1] = tonumber(_s[i])
- end
-
- -- parse strength randomizer
- tbl.r = ini_eff:r_float_ex(sec_p,"r")
-
- -- parse anm
- tbl.e = {}
- local e = ini_eff:r_string_ex(sec_p,"e")
- local _e = str_explode(e,",")
- for i=1,#_e do
- local __e = str_explode(_e[i],":")
- for j=1,#__e do
- __e[j] = tonumber(__e[j])
- end
- tbl.e[#tbl.e + 1] = __e
- end
-
- -- parse ppe
- tbl.p = {}
- local p = ini_eff:r_string_ex(sec_p,"p")
- if p and p ~= "" then
- for k,v in string.gmatch(p, "([%w_%-%s%.]+)=([%w_%-%s%.]+)") do
- tbl.p[k] = tonumber(v)
- end
- end
-
- if (not wpn_fx[sec_p]) and (sec ~= sec_p) then
- wpn_fx[sec_p] = tbl
- end
-
- wpn_fx[sec] = tbl
-
- else
- wpn_fx[sec] = true
- end
-end
-
-local is_looking = false
-
-local shotc = 1 -- Counts the number of shots in a consecutive burst
-local shott = 0 -- Used to determin how far aparts shots can be to be considered part of the same burst
-local kick_t = 0 -- Time when kick stops
-local fov_r = 1
-function shoot_effect(obj, sect)
-
- if shott and (shott < time_global()) then
- shotc = 1
- shott = nil
- end
- local recoil_base = wpn_data.recoil or 1
-
- -- update based on actor stance
- if get_config("stance") then
- if IsMoveState("mcAnyMove") then
- recoil_base = recoil_base * 1.5
- elseif IsMoveState("mcCrouch") then
- recoil_base = recoil_base * (IsMoveState("mcAccel") and 0.25 or 0.5)
- end
- end
-
-
- local s = wpn_fx[sect].s
- local sc = #s
-
- if sc > 1 then
- if wpn_fx[sect].r == 1 then
- s = s[math.random(#s)]
- elseif wpn_fx[sect].r == 2 then
- if shotc == 1 then
- s = s[1]
- else
- s = s[math.random(2,#s)]
- end
- else
- sc = shotc <= sc and shotc or (sc > 2 and math.random(sc-1,sc)) or sc
- s = s[sc]
- end
- else
- s = s[1]
- end
-
- recoil_base = recoil_base * recoil_multiplier(obj, shotc)
- recoil_anm(sect, recoil_base, s)
- recoil_camera(obj, recoil_base, s)
- shotc = shotc+1
- shott = time_global()+200 -- adjust based on gun rpm / handling?
-end
-
--- plays weapon animation, strength depends on recoil
-function recoil_anm(sect, recoil_base, s)
- local anims = {}
- for i,v in pairs(wpn_fx[sect].e) do
- local cnt,r = math.modf(v[1]*fov_r)
- if r ~= 0 and cnt > 4 then --fmb
- cnt = cnt-cnt*math.random(0,r*100)/100 --fmb
- cnt,r = math.modf(cnt)
- end
-
- if r ~= 0 and math.random() < r then
- cnt = cnt+1
- end
-
- if cnt > 0 then
- table.insert(anims,{e = i, d = v[2] or math.random(0,1), c = cnt})
- end
- end
-
- for i,a in ipairs(anims) do
- local n = string.format([[shoot\s%s_e%s_%s.anm]], s, 2, 0)
- for ii=1,a.c do
- -- printf("N: " .. n)
- level.add_cam_effector(n,math.random(5000, 8000),false,"", 0, false, recoil_base*0.1)
- end
- -- printf("----")
- end
-
- for k,v in pairs(wpn_fx[sect].p) do
- local eid = math.random(5000,8000)
- level.add_pp_effector(string.format([[shoot\%s_s%s.ppe]],k,s), eid, false)
- if v > 0 then
- level.set_pp_effector_factor(eid,v)
- end
- end
-end
-
-function camera_effect(obj, recoil_base, h_recoil, strength)
- -- Assumes h_recoil ranges from -1 to 1
- local n = string.format([[shoot\s%s_e%s_%s.anm]], strength, 0, h_recoil < 0 and 0 or 1)
- level.add_cam_effector(n,math.random(5000, 8000),false,"", 0, false, recoil_base*math.abs(h_recoil))
-end
-
--- Invoked whenever a shot is fired and enhanced recoil applies.
--- Patch this to modify the magnitude based on the weapon and burst length
-function recoil_multiplier(wpn, shotc)
- return 1
-end
-
-local v_factor = 0.5
-local v_recoil = 0
-
-local h_factor = 0.4
-local h_recoil = 0
--- consider stance, wpn weight
-
-function recoil_camera(obj, recoil_base, s)
- -- never execute if the functions are not defined
- -- do not needlessly recompute if this is already firing - wait for time event to reset flag
- if not (db.actor.actor_look_at_point and db.actor.actor_stop_look_at_point) or recoil_base < 1 or not get_config("camera") then return end
-
- local sec = obj:section()
- local sec_p = ini_sys:r_string_ex(sec,"parent_section") or sec
- local mult_table = wpn_data.mult_table
- -- after enough shots climbing stops, math.random will provide a little variance
- local mult = tonumber(mult_table[shotc]) or (math.random()-0.5)/20
- -- printf("Recoil mult is %s, shots fired %s", mult, shotc)
- local actor_position = device().cam_pos
- local actor_direction = device().cam_dir
- local is_zoomed = obj:cast_Weapon():IsZoomed()
-
- -- Horizontal
- -- Base Horizontal Recoil
- local horizontal_base = is_zoomed == 1 and SYS_GetParam(2, sec, "zoom_cam_step_angle_horz") or SYS_GetParam(2, sec, "cam_step_angle_horz")
- horizontal_base = horizontal_base * (recoil_base)
-
- -- Randomness
- local h_recoil_rnd = (math.random()-0.5)
- -- local h_recoil_rnd = math.random(-1, 1)
- h_recoil = h_recoil_rnd * horizontal_base * h_factor
-
- -- Rotate camera left-right
- actor_direction = vector_rotate_y(actor_direction, h_recoil)
- camera_effect(obj, recoil_base, h_recoil_rnd*2, s)
-
- -- Vertical
- local vertical_base = is_zoomed == 1 and SYS_GetParam(2, sec, "zoom_cam_dispersion") or SYS_GetParam(2, sec, "cam_dispersion")
- vertical_base = vertical_base * (recoil_base)
-
- local zoom_factor = obj:cast_Weapon():GetZoomFactor()
- local zoom_kick_factor = is_zoomed and zoom_factor ~= 0 and 5*(1/zoom_factor) or 1
- v_recoil = vertical_base * zoom_kick_factor * mult * v_factor
- actor_direction.y = clamp(actor_direction.y + (v_recoil), -0.999, 0.999)
-
- -- printf("recoil_base: " .. recoil_base)
- kick_t = time_global()+(math.max(50, 100*recoil_base)) -- need to adjust for when scoped in
- -- update the variables used below, don't reset if already firing
- if is_looking then return end
- -- force actor to look at new point of aim
- db.actor:actor_look_at_point(vector():set(actor_position):add(actor_direction:mul(10000)))
- is_looking = true
-
- demonized_time_events.CreateTimeEvent("updatelook", 1, 0, function()
- local active_item = db.actor:active_item()
- if not active_item then
- return true
- end
- -- if died for w/e reason stop immediately
- if not is_looking then
- db.actor:actor_stop_look_at_point()
- return true
- end
- if active_item:get_state() == 5 then
- db.actor:actor_stop_look_at_point()
- if kick_t < time_global() then
- is_looking = false
- return true
- end
-
- actor_direction = device().cam_dir
- actor_direction.y = clamp(actor_direction.y + (v_recoil), -0.999, 0.999)
- actor_direction = vector_rotate_y(actor_direction, h_recoil)
- db.actor:actor_look_at_point(vector():set(device().cam_pos):add(actor_direction:mul(10000)))
- return false
- end
-
- is_looking = false
- db.actor:actor_stop_look_at_point()
- return true
-
- end)
-end
-
-function Update_Shooting(obj, wpn, ammo_elapsed, grenade_elapsed, ammo_type, grenade_type)
- if (obj:id() ~= AC_ID) then
- return
- end
-
- local wpn_obj = utils_item.item_is_fa(wpn) and wpn
- if wpn_obj then
- local sec = wpn_obj:section()
-
- if (not wpn_fx[sec]) then
- parse_anims(sec)
- end
-
- if (wpn_fx[sec] == true) then
- return
- end
-
- shoot_effect(wpn, sec)
- end
-end
-
-
-
-OriginalShoot = actor_effects.shoot_effect
-function actor_effects.shoot_effect(sec)
- if get_config("enabled") then return end
- OriginalShoot(sec)
-end
-
-function update_settings()
- if get_config("enabled") then
- RegisterScriptCallback("actor_on_weapon_fired",Update_Shooting)
- RegisterScriptCallback("actor_on_weapon_before_fire", actor_on_weapon_before_fire)
-
- else
- UnregisterScriptCallback("actor_on_weapon_fired",Update_Shooting)
- UnregisterScriptCallback("actor_on_weapon_before_fire", actor_on_weapon_before_fire)
- end
-end
-
--- If you don't use MCM, change your defaults from here.
-local defaults = {
- ["enabled"] = true,
- ["camera"] = true,
- ["stance"] = true,
-}
-
-function get_config(key)
- if ui_mcm then return ui_mcm.get("recoil/"..key) else return defaults[key] end
-end
-
-function on_mcm_load()
- op = { id= "recoil",sh=true ,gr={
- { id= "title",type= "slide",link= "ui_options_slider_player",text="ui_mcm_recoil_title",size= {512,50},spacing= 20 },
- {id = "enabled", type = "check", val = 1, def=true}, {id = "camera", type = "check", val = 1, def=true},
- {id = "stance", type = "check", val = 1, def=true},
- }
- }
- return op
-end
-
-function on_game_start()
- RegisterScriptCallback("on_option_change",update_settings)
- update_settings()
-end
diff --git a/mods/Anomaly Ballistics Overhaul/gamedata/scripts/workshop_autoinject.script b/mods/Anomaly Ballistics Overhaul/gamedata/scripts/workshop_autoinject.script
deleted file mode 100644
index 00cfb2c8..00000000
--- a/mods/Anomaly Ballistics Overhaul/gamedata/scripts/workshop_autoinject.script
+++ /dev/null
@@ -1,401 +0,0 @@
-cr = {}
-
-cr.added = {}
-cr.index_map = {}
-cr.overrides = {}
-cr.new_sections = {}
-cr.deletions = {}
-
-known_recipe = {}
-
-function print_dbg(text, ...)
- if true then
- printf( "workshop auto: | %s | "..text ,time_global(), ...)
- end
-end
-
-local function validate_recipe(craft_string)
- local t = str_explode(craft_string,",")
- if (#t == 6 or #t == 8 or #t == 10) then
- local tool = tonumber(t[1])
- if tool < 0 or tool > 5 then
- print_dbg("Invalid tool %s! Must be 0-5", t[1])
- return false
- end
- if not string.find(t[2], "recipe") then
- print_dbg("Invalid recipe %s!", t[2])
- return false
- end
- for i=3,#t,2 do
- local item = t[i]
- local amt = tonumber(t[i+1])
- if not ini_sys:section_exist(item) then
- print_dbg("Invalid component %s!", item)
- return false
- end
- if not amt or amt <= 0 then
- print_dbg("Invalid amount for component %s!", amt)
- return false
- end
- end
- return true
- else
- print_dbg("Invalid length of result table!")
- return false
- end
-end
-
--- Add a new recipe to workshops. You can add as many recipes as you want for an item, the only caveat is you cannot add a recipe with an 'override' (more below).
--- Arguments:
--- index - Index page of the workshop item (analogous to what page it's on, e.g. 1-6 by default. More can be added with add_index)
--- sec - Section of the item to be crafted
--- recipe_string - Valid recipe string for the item. Needs to follow the format in craft.ltx e.g. "1, recipe_basic_0, broken_detector,1,prt_i_resistors,8,prt_i_transistors,7,prt_i_capacitors,8"
--- returns true on success, false on failure with printed reason
-function add_new_recipe(index, sec, recipe_string)
-
- if index > 6 and not cr.new_sections[index] then return false end
- if not ini_sys:section_exist(sec) then return false end
- if not validate_recipe(recipe_string) then return false end
- if cr.overrides[sec] then
- print_dbg("Recipe %s already has an override recipe, returning", sec)
- return false
- end
- if not cr.added[sec] then
- cr.added[sec] = {}
- cr.index_map[sec] = index
- end
- local length = #cr.added[sec]
- cr.added[sec][length + 1] = recipe_string
-end
-
--- Delete any existing recipes not added by autoinject (e.g. that were predefined in craft.ltx)
-function clear_existing_recipes(sec)
- if not ini_sys:section_exist(sec) then return false end
- if not cr.deletions[sec] then cr.deletions[sec] = true end
- return true
-end
-
--- Specify a crafting recipe that will supersede all other crafting recipes for that item. Arguments similar to above.
--- returns true on success, false on failure with printed reason
-function add_override_recipe(sec, recipe_string, index)
- if not ini_sys:section_exist(sec) then return false end
- if not validate_recipe(recipe_string) then return false end
- if cr.added[sec] then
- print_dbg("Recipe %s already has additive recipes, returning", sec)
- return false
- end
- if not index then index = 1 end
- cr.index_map[sec] = index
- cr.overrides[sec] = recipe_string
- return true
-end
-
-function remove_existing_recipes(sec)
- if cr.overrides[sec] then
- print_dbg("Recipe %s already has an override recipe, returning")
- return false
- end
- cr.overrides[sec] = "none"
- return true
-end
-
--- Add a new page in the crafting menu. ID must be greater than 6. First-come, first-serve basis.
-function add_section(id, name)
- if id < 7 then
- print_dbg("Index already exists")
- return
- end
- if not cr.new_sections[id] then
- cr.new_sections[id] = name
- return true
- else
- print_dbg("Section already exists: %s", cr.new_sections[id])
- return false
- end
-end
-
--- to bypass encyclopedia
-function ui_workshop.UIWorkshopCraft:ListRecipes()
-
- -- Recipes showcase
- if is_empty(self.CC["recipe"].cell) then
- local inv, size_t = {}, 0
- for recipe,_ in pairs(GetItemList("recipe")) do
- size_t = size_t + 1
- inv[size_t] = recipe
- end
- self.CC["recipe"]:Reinit(inv)
- end
-
- -- Show/hide unlocked/locked recipes items
- for recipe,_ in pairs(GetItemList("recipe")) do
- local state = false
- print_dbg("Checking recipe %s", recipe)
- if ui_pda_encyclopedia_tab.is_unlocked_note("encyclopedia__notes_" .. recipe) or known_recipe[recipe] then
- state = true
- end
- self.recipes_items[recipe] = state
- end
-
- for idx,ci in pairs(self.CC["recipe"].cell) do
- if ci:IsShown() then
- if self.recipes_items[ci.section] then
- ci:Colorize("def")
- else
- ci:Colorize("hide")
- end
- end
- end
-end
-
-WSLoadRecipes = ui_workshop.UIWorkshopCraft.LoadRecipes
-function ui_workshop.UIWorkshopCraft:LoadRecipes()
- if is_empty(cr.added) and is_empty(cr.overrides) then
- WSLoadRecipes(self)
- return
- end
- -- Less parts on achievement
- local ach = 0
- if (game_achievements.has_achievement("artificer_eagerness")) then
- ach = 1
- end
-
- local ind = 1
- local ini = itms_manager.ini_craft
- while ini:section_exist(tostring(ind)) do
- local ind_str = tostring(ind)
- local n = ini:line_count(ind_str) or 0
- self.recipes[ind] = {}
- for i=0, n-1 do
- local result, id, value = ini:r_line(ind_str , i , "", "")
- if (id == "title") then
- self.recipes_type[ind] = value
- end
- id = string.sub(id,3)
- -- hijack and replace
- if cr.overrides[id] then
- print_dbg("UIWorkshop - Hijacking recipe for %s", id)
- local craft_string = cr.overrides[id]
- if craft_string then
- -- if craft_string ~= "override" then
- -- print_dbg("Craft recipe for %s is %s", id, craft_string)
- -- local t = str_explode(craft_string,",")
- -- add_recipe(self.recipes, ind, t, ach, id)
- -- end
- else
- local t = str_explode(value,",")
- add_recipe(self.recipes, ind, t, ach, id)
- end
- elseif cr.deletions[id] then
- -- do nothing lel
- elseif ini_sys:section_exist(id) then
- local t = str_explode(value,",")
- add_recipe(self.recipes, ind, t, ach, id)
- elseif (id ~= "tle") then
- printe("! UIWorkshopCraft:LoadRecipes() | section [%s] not found!",id)
- end
- end
-
- ind = ind + 1
- end
-
- for k,v in pairs(cr.new_sections) do
- self.recipes_type[k] = v
- self.recipes[k] = {}
- end
- for section,craft_string in pairs(cr.overrides) do
- if craft_string ~= "override" then
- local index = cr.index_map[section]
- local t = str_explode(craft_string,",")
- add_recipe(self.recipes, index, t, ach, section)
- end
- end
-
- for section,recipes in pairs(cr.added) do
- local index = cr.index_map[section]
- for x,craft_string in pairs(recipes) do
- local t = str_explode(craft_string, ",")
- add_recipe(self.recipes, index, t, ach, section)
- end
- end
-
- for i=1,#self.recipes_type do
- local _itm = ui_workshop.list_element(i, self.recipes_type[i])
- self.list_menu:AddExistingItem(_itm)
- end
-end
-
-
-UILoadRecipes = item_recipe.UIRecipe.LoadRecipes
-function item_recipe.UIRecipe:LoadRecipes()
- if is_empty(cr.added) and is_empty(cr.overrides) then
- UILoadRecipes(self)
- return
- end
- local ini_craft = itms_manager.ini_craft
-
- -- Less parts on achievement
- local ach = 0
- if (game_achievements.has_achievement("artificer_eagerness")) then
- ach = 1
- end
-
- local ind = 1
- while ini_craft:section_exist(tostring(ind)) do
- local ind_str = tostring(ind)
- local n = ini_craft:line_count(ind_str) or 0
- for i=0, n-1 do
- local result, id, value = ini_craft:r_line(ind_str , i , "", "")
- id = string.sub(id,3)
- if cr.overrides[id] then
- print_dbg("UIWorkshop - Hijacking recipe for %s", id)
- local craft_string = cr.overrides[id]
- if craft_string then
- if craft_string ~= "override" then
- print_dbg("Craft recipe for %s is %s", id, craft_string)
- local t = str_explode(craft_string,",")
- add_recipe_ui(self.recipes, self.section ,self.toolkit, t, ach, id)
- end
- else
- local t = str_explode(value,",")
- add_recipe_ui(self.recipes, self.section ,self.toolkit, t, ach, id)
- end
- elseif ini_sys:section_exist(id) then
- local t = str_explode(value,",")
- add_recipe_ui(self.recipes, self.section ,self.toolkit, t, ach, id)
- elseif (id ~= "tle") then
- printe("! workshop_craft_ui:LoadRecipes() | section [%s] not found!",id)
- end
- end
-
- ind = ind + 1
- end
-
- for section,recipes in pairs(cr.added) do
- local index = cr.index_map[section]
- for x,craft_string in pairs(recipes) do
- local t = str_explode(craft_string, ",")
- print_dbg("(Section %s) Adding for %s custom recipe %s", self.section, section, craft_string)
- add_recipe_ui(self.recipes, self.section ,self.toolkit, t, ach, section)
- end
- end
-end
-
-FuncRecipe = item_recipe.func_recipe
-function item_recipe.func_recipe(obj)
- local sec = obj:section()
- -- add to backup cache as well
- if not known_recipe[sec] then
- print_dbg("Adding %s to backup cache", sec)
- known_recipe[sec] = true
- end
- FuncRecipe(obj)
-end
-
---recipes, workshop section, table of requirements, achievement, item section
-function add_recipe(recipes, ind, t, ach, id)
-
- if (#t == 6) or (#t == 8) or (#t == 10) then
- if not recipes[ind] then recipes[ind] = {} end
- local x = #recipes[ind] + 1
- recipes[ind][x] = {}
- recipes[ind][x].sec = id
- recipes[ind][x].tool = tonumber(t[1]) or 1
- recipes[ind][x].rsp = t[2]
- if t[3] and t[4] then -- support item 1
- if ini_sys:section_exist(tostring(t[3])) then
- local amt = tonumber(t[4])
- recipes[ind][x][1] = {tostring(t[3]), (amt > 4) and (amt - ach) or amt}
- else
- printe("! Workshop UI craft | componenet section [%s] not found for [%s] recipe!", tostring(t[3]), id)
- end
- end
- if t[5] and t[6] then -- support item 2
- if ini_sys:section_exist(tostring(t[5])) then
- local amt = tonumber(t[6])
- recipes[ind][x][2] = {tostring(t[5]), (amt > 4) and (amt - ach) or amt}
- else
- printe("! UIWorkshopCraft:LoadRecipes() | componenet section [%s] not found for [%s] recipe!", tostring(t[5]), id)
- end
- end
- if t[7] and t[8] then -- support item 3
- if ini_sys:section_exist(tostring(t[7])) then
- local amt = tonumber(t[8])
- recipes[ind][x][3] = {tostring(t[7]), (amt > 4) and (amt - ach) or amt}
- else
- printe("! UIWorkshopCraft:LoadRecipes() | componenet section [%s] not found for [%s] recipe!", tostring(t[7]), id)
- end
- end
- if t[9] and t[10] then -- support item 4
- if ini_sys:section_exist(tostring(t[9])) then
- local amt = tonumber(t[10])
- recipes[ind][x][4] = {tostring(t[9]), (amt > 4) and (amt - ach) or amt}
- else
- printe("! UIWorkshopCraft:LoadRecipes() | componenet section [%s] not found for [%s] recipe!", tostring(t[9]), id)
- end
- end
- end
-end
-
-function add_recipe_ui(recipes, section, toolkit, t, ach, id)
- if ((#t == 6) or (#t == 8) or (#t == 10) )and (t[2] == section) then
- local x = #recipes + 1
- recipes[x] = {}
- recipes[x].sec = id
- toolkit = ui_workshop.workshop_toolkits[tonumber(t[1]) or 1]
- if t[3] and t[4] then -- support item 1
- if ini_sys:section_exist(tostring(t[3])) then
- local amt = tonumber(t[4])
- recipes[x][1] = {tostring(t[3]), (amt > 4) and (amt - ach) or amt}
- else
- printe("! Workshop UI craft | componenet section [%s] not found for [%s] recipe!", tostring(t[3]), id)
- end
- end
- if t[5] and t[6] then -- support item 2
- if ini_sys:section_exist(tostring(t[5])) then
- local amt = tonumber(t[6])
- recipes[x][2] = {tostring(t[5]), (amt > 4) and (amt - ach) or amt}
- else
- printe("! UIWorkshopCraft:LoadRecipes() | componenet section [%s] not found for [%s] recipe!", tostring(t[5]), id)
- end
- end
- if t[7] and t[8] then -- support item 3
- if ini_sys:section_exist(tostring(t[7])) then
- local amt = tonumber(t[8])
- recipes[x][3] = {tostring(t[7]), (amt > 4) and (amt - ach) or amt}
- else
- printe("! UIWorkshopCraft:LoadRecipes() | componenet section [%s] not found for [%s] recipe!", tostring(t[7]), id)
- end
- end
- if t[9] and t[10] then -- support item 4
- if ini_sys:section_exist(tostring(t[9])) then
- local amt = tonumber(t[10])
- recipes[x][4] = {tostring(t[9]), (amt > 4) and (amt - ach) or amt}
- else
- printe("! UIWorkshopCraft:LoadRecipes() | componenet section [%s] not found for [%s] recipe!", tostring(t[9]), id)
- end
- end
- end
-end
-
-local function save_state(mdata)
- mdata.known_recipe = known_recipe
-end
-
-function load_state(mdata)
- known_recipe = mdata.known_recipe or {}
-end
-
--- inject to ui
--- local craft_exist = itms_manager.ini_craft.section_exist
--- local craft_count = itms_manager.ini_craft.line_count
--- local craft_line = itms_manager.ini_craft.r_line
-
--- itms_manager.ini_craft.line_count = function(index)
-
--- end
-
-function on_game_start()
- RegisterScriptCallback("save_state",save_state)
- RegisterScriptCallback("load_state",load_state)
-end
\ No newline at end of file
diff --git a/mods/Anomaly Ballistics Overhaul/gamedata/sounds/Acid_Near_01.ogg b/mods/Anomaly Ballistics Overhaul/gamedata/sounds/Acid_Near_01.ogg
deleted file mode 100644
index 37e4664a..00000000
--- a/mods/Anomaly Ballistics Overhaul/gamedata/sounds/Acid_Near_01.ogg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:ea49d4f9412f1218af4dba3010f0949596dc5e2d917af4528a1cda3402ae5569
-size 275597
diff --git a/mods/Anomaly Ballistics Overhaul/gamedata/sounds/Acid_Near_02.ogg b/mods/Anomaly Ballistics Overhaul/gamedata/sounds/Acid_Near_02.ogg
deleted file mode 100644
index 46f4a1d6..00000000
--- a/mods/Anomaly Ballistics Overhaul/gamedata/sounds/Acid_Near_02.ogg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:0f1eca64336a461942a45d3a43994de5f2fc61baad4506812e117ca207223b71
-size 336758
diff --git a/mods/Anomaly Ballistics Overhaul/gamedata/sounds/Acid_Near_03.ogg b/mods/Anomaly Ballistics Overhaul/gamedata/sounds/Acid_Near_03.ogg
deleted file mode 100644
index 0bbe29aa..00000000
--- a/mods/Anomaly Ballistics Overhaul/gamedata/sounds/Acid_Near_03.ogg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:c33743c308c172b031823a5067ce5021d1254613403110c68a662fc573211b0c
-size 209603
diff --git a/mods/Anomaly Ballistics Overhaul/gamedata/sounds/Electricity_Big_Far_01.ogg b/mods/Anomaly Ballistics Overhaul/gamedata/sounds/Electricity_Big_Far_01.ogg
deleted file mode 100644
index 33d3b00f..00000000
--- a/mods/Anomaly Ballistics Overhaul/gamedata/sounds/Electricity_Big_Far_01.ogg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:4a346ed7f81a5f2a8583479646de7f1ad695056aedbc8774973bbe0ed61e836a
-size 102096
diff --git a/mods/Anomaly Ballistics Overhaul/gamedata/sounds/Electricity_Big_Far_02.ogg b/mods/Anomaly Ballistics Overhaul/gamedata/sounds/Electricity_Big_Far_02.ogg
deleted file mode 100644
index f2b76415..00000000
--- a/mods/Anomaly Ballistics Overhaul/gamedata/sounds/Electricity_Big_Far_02.ogg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:f5f720d3bc2649b98712b1189c926930fa150f3d9f4df491e6177e9a2c040cde
-size 97257
diff --git a/mods/Anomaly Ballistics Overhaul/gamedata/sounds/Electricity_Big_Far_03.ogg b/mods/Anomaly Ballistics Overhaul/gamedata/sounds/Electricity_Big_Far_03.ogg
deleted file mode 100644
index 44325293..00000000
--- a/mods/Anomaly Ballistics Overhaul/gamedata/sounds/Electricity_Big_Far_03.ogg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:540e3721b4204fbfbebde75ab008b60e88cf9c0fc75f1bff19dc39ca763ef8f5
-size 79924
diff --git a/mods/Anomaly Ballistics Overhaul/gamedata/sounds/Electricity_Big_Near_01.ogg b/mods/Anomaly Ballistics Overhaul/gamedata/sounds/Electricity_Big_Near_01.ogg
deleted file mode 100644
index edc05685..00000000
--- a/mods/Anomaly Ballistics Overhaul/gamedata/sounds/Electricity_Big_Near_01.ogg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:28a94b0aa6fe42af0dd20d14c344ebd0aa5eb5edccfac12ee3730738536c0ff7
-size 138659
diff --git a/mods/Anomaly Ballistics Overhaul/gamedata/sounds/Electricity_Big_Near_02.ogg b/mods/Anomaly Ballistics Overhaul/gamedata/sounds/Electricity_Big_Near_02.ogg
deleted file mode 100644
index 83167d7e..00000000
--- a/mods/Anomaly Ballistics Overhaul/gamedata/sounds/Electricity_Big_Near_02.ogg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:f7c8b3ba666ec8be7c39ba9e859b96e936e272ab7ccecf2e2347962705bc99ba
-size 156298
diff --git a/mods/Anomaly Ballistics Overhaul/gamedata/sounds/Electricity_Big_Near_03.ogg b/mods/Anomaly Ballistics Overhaul/gamedata/sounds/Electricity_Big_Near_03.ogg
deleted file mode 100644
index 1260d600..00000000
--- a/mods/Anomaly Ballistics Overhaul/gamedata/sounds/Electricity_Big_Near_03.ogg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:7be41d5da64db47b1f385f800cbecf19d2bc3d9f55e7f0a64037f00947cbcec5
-size 121116
diff --git a/mods/Anomaly Ballistics Overhaul/gamedata/sounds/Electricity_Small_Near_01.ogg b/mods/Anomaly Ballistics Overhaul/gamedata/sounds/Electricity_Small_Near_01.ogg
deleted file mode 100644
index 1c583d02..00000000
--- a/mods/Anomaly Ballistics Overhaul/gamedata/sounds/Electricity_Small_Near_01.ogg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:a12721a48fe8013203d4307cdb71a4877e387072d7629eeed374f65bc17978df
-size 90270
diff --git a/mods/Anomaly Ballistics Overhaul/gamedata/sounds/Electricity_Small_Near_02.ogg b/mods/Anomaly Ballistics Overhaul/gamedata/sounds/Electricity_Small_Near_02.ogg
deleted file mode 100644
index c06db896..00000000
--- a/mods/Anomaly Ballistics Overhaul/gamedata/sounds/Electricity_Small_Near_02.ogg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:5ba6acb82e490e0f1eeff15423cff0210b4298a7f7d4dcdd9f13987944627378
-size 144120
diff --git a/mods/Anomaly Ballistics Overhaul/gamedata/sounds/Electricity_Small_Near_03.ogg b/mods/Anomaly Ballistics Overhaul/gamedata/sounds/Electricity_Small_Near_03.ogg
deleted file mode 100644
index b3b2e00e..00000000
--- a/mods/Anomaly Ballistics Overhaul/gamedata/sounds/Electricity_Small_Near_03.ogg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:a169b2ad0f399165f1dd27c7551aa2b92f576b7c8176417c4ec2aaf0a0e1993e
-size 99048
diff --git a/mods/Anomaly Ballistics Overhaul/gamedata/sounds/Head_Explode_Near_01.ogg b/mods/Anomaly Ballistics Overhaul/gamedata/sounds/Head_Explode_Near_01.ogg
deleted file mode 100644
index d8002540..00000000
--- a/mods/Anomaly Ballistics Overhaul/gamedata/sounds/Head_Explode_Near_01.ogg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:b2e4e084c23e818f2a9cffd55ad776abca999c91ec5439debbd7402a6e733451
-size 119007
diff --git a/mods/Anomaly Ballistics Overhaul/gamedata/sounds/Head_Explode_Near_02.ogg b/mods/Anomaly Ballistics Overhaul/gamedata/sounds/Head_Explode_Near_02.ogg
deleted file mode 100644
index 2655b6b5..00000000
--- a/mods/Anomaly Ballistics Overhaul/gamedata/sounds/Head_Explode_Near_02.ogg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:aaf4bf83182407d76f8d2a46fdcadae964aed5ce6953c29eb7e368bb8e99357a
-size 102723
diff --git a/mods/Anomaly Ballistics Overhaul/gamedata/sounds/Head_Explode_Near_03.ogg b/mods/Anomaly Ballistics Overhaul/gamedata/sounds/Head_Explode_Near_03.ogg
deleted file mode 100644
index ef455c37..00000000
--- a/mods/Anomaly Ballistics Overhaul/gamedata/sounds/Head_Explode_Near_03.ogg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:1245a60c35453af5200cfc8167b32e74b521b48d77fca3b97227cbd131d98e6d
-size 120523
diff --git a/mods/Anomaly Ballistics Overhaul/gamedata/sounds/Hitmarker_Near_01.ogg b/mods/Anomaly Ballistics Overhaul/gamedata/sounds/Hitmarker_Near_01.ogg
deleted file mode 100644
index f5e8dd88..00000000
--- a/mods/Anomaly Ballistics Overhaul/gamedata/sounds/Hitmarker_Near_01.ogg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:b2a73fd741ed392f4e7d5370d5759352a5315a52d86130515eea3ee7b3d5443d
-size 6352
diff --git a/mods/Anomaly Ballistics Overhaul/gamedata/sounds/Incendiary_Far_01.ogg b/mods/Anomaly Ballistics Overhaul/gamedata/sounds/Incendiary_Far_01.ogg
deleted file mode 100644
index 09384c3f..00000000
--- a/mods/Anomaly Ballistics Overhaul/gamedata/sounds/Incendiary_Far_01.ogg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:400ae32a791d87a3356240b81e9d4cac4dfb2eb60e5265b2fdbeca6bb474af95
-size 53415
diff --git a/mods/Anomaly Ballistics Overhaul/gamedata/sounds/Incendiary_Far_02.ogg b/mods/Anomaly Ballistics Overhaul/gamedata/sounds/Incendiary_Far_02.ogg
deleted file mode 100644
index 51fde4e6..00000000
--- a/mods/Anomaly Ballistics Overhaul/gamedata/sounds/Incendiary_Far_02.ogg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:04c781ed142aa0a6cad764521776643f2f3aad3037da1a05fd6dbac31a112e7a
-size 68319
diff --git a/mods/Anomaly Ballistics Overhaul/gamedata/sounds/Incendiary_Far_03.ogg b/mods/Anomaly Ballistics Overhaul/gamedata/sounds/Incendiary_Far_03.ogg
deleted file mode 100644
index 3aa3d80a..00000000
--- a/mods/Anomaly Ballistics Overhaul/gamedata/sounds/Incendiary_Far_03.ogg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:c53c49149b8835960f9647ce7ec881a7e18ac9897b62418bbe06edcb9378527f
-size 75109
diff --git a/mods/Anomaly Ballistics Overhaul/gamedata/sounds/Incendiary_Far_04.ogg b/mods/Anomaly Ballistics Overhaul/gamedata/sounds/Incendiary_Far_04.ogg
deleted file mode 100644
index 6bdc1a7f..00000000
--- a/mods/Anomaly Ballistics Overhaul/gamedata/sounds/Incendiary_Far_04.ogg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:88dbc07c1fd807851d13263fda4591cf28cc8d4b6601c46e08b269d3f6839bdc
-size 73303
diff --git a/mods/Anomaly Ballistics Overhaul/gamedata/sounds/Incendiary_Far_05.ogg b/mods/Anomaly Ballistics Overhaul/gamedata/sounds/Incendiary_Far_05.ogg
deleted file mode 100644
index 0fd48750..00000000
--- a/mods/Anomaly Ballistics Overhaul/gamedata/sounds/Incendiary_Far_05.ogg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:b5de88215b8dd10468c277de464d01654ea586554c1a3ddb6ea7ecff42685bd1
-size 79197
diff --git a/mods/Anomaly Ballistics Overhaul/gamedata/sounds/Incendiary_Near_01.ogg b/mods/Anomaly Ballistics Overhaul/gamedata/sounds/Incendiary_Near_01.ogg
deleted file mode 100644
index 66128141..00000000
--- a/mods/Anomaly Ballistics Overhaul/gamedata/sounds/Incendiary_Near_01.ogg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:e0cbe26d31c5588ce81e615a3f8d911877ac539643b467ab5b1e4ffc5c8959cb
-size 160591
diff --git a/mods/Anomaly Ballistics Overhaul/gamedata/sounds/Incendiary_Near_02.ogg b/mods/Anomaly Ballistics Overhaul/gamedata/sounds/Incendiary_Near_02.ogg
deleted file mode 100644
index 393eb016..00000000
--- a/mods/Anomaly Ballistics Overhaul/gamedata/sounds/Incendiary_Near_02.ogg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:506ef5889dfcaec2c4c29475ec49d34f68ff3c78bfc4c0911caf1fec5acf19c0
-size 173077
diff --git a/mods/Anomaly Ballistics Overhaul/gamedata/sounds/Incendiary_Near_03.ogg b/mods/Anomaly Ballistics Overhaul/gamedata/sounds/Incendiary_Near_03.ogg
deleted file mode 100644
index 39b0b659..00000000
--- a/mods/Anomaly Ballistics Overhaul/gamedata/sounds/Incendiary_Near_03.ogg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:8cc00bbf9cb849cdb3a83cf5cfc6e729d23d5c98927b649a563d5eeef015155e
-size 167080
diff --git a/mods/Anomaly Ballistics Overhaul/gamedata/sounds/Incendiary_Near_04.ogg b/mods/Anomaly Ballistics Overhaul/gamedata/sounds/Incendiary_Near_04.ogg
deleted file mode 100644
index 435e1117..00000000
--- a/mods/Anomaly Ballistics Overhaul/gamedata/sounds/Incendiary_Near_04.ogg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:39d370f6b73b2d605fa831ae11328aa605b9d5e5032bc262ba9b9ab4bd4b8ccb
-size 203904
diff --git a/mods/Anomaly Ballistics Overhaul/gamedata/sounds/Incendiary_Near_05.ogg b/mods/Anomaly Ballistics Overhaul/gamedata/sounds/Incendiary_Near_05.ogg
deleted file mode 100644
index e01cfbd3..00000000
--- a/mods/Anomaly Ballistics Overhaul/gamedata/sounds/Incendiary_Near_05.ogg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:b6f60b27c0663ddf705f7f60a9506d1c0180847d5aa73d01f8a2968d9bce0520
-size 159994
diff --git a/mods/Anomaly Ballistics Overhaul/gamedata/sounds/Railgun_Far_01.ogg b/mods/Anomaly Ballistics Overhaul/gamedata/sounds/Railgun_Far_01.ogg
deleted file mode 100644
index d6a25da7..00000000
--- a/mods/Anomaly Ballistics Overhaul/gamedata/sounds/Railgun_Far_01.ogg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:d83abe756d8519a9607bcfecc640c4c1e830fee785b3c0ccc184c666e5efb5d0
-size 106758
diff --git a/mods/Anomaly Ballistics Overhaul/gamedata/sounds/Railgun_Far_02.ogg b/mods/Anomaly Ballistics Overhaul/gamedata/sounds/Railgun_Far_02.ogg
deleted file mode 100644
index fca85764..00000000
--- a/mods/Anomaly Ballistics Overhaul/gamedata/sounds/Railgun_Far_02.ogg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:2d79fe6a9509b2ef9c12eedead05dc76bd3ce15705558a74fa788a2671d5df85
-size 92833
diff --git a/mods/Anomaly Ballistics Overhaul/gamedata/sounds/Railgun_Far_03.ogg b/mods/Anomaly Ballistics Overhaul/gamedata/sounds/Railgun_Far_03.ogg
deleted file mode 100644
index 440ff87b..00000000
--- a/mods/Anomaly Ballistics Overhaul/gamedata/sounds/Railgun_Far_03.ogg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:2b3c59dbca2269c0ae1b46754b85450ea580dc8ca63258e5a0660b1fb0afaf95
-size 85341
diff --git a/mods/Anomaly Ballistics Overhaul/gamedata/sounds/Railgun_Near_01.ogg b/mods/Anomaly Ballistics Overhaul/gamedata/sounds/Railgun_Near_01.ogg
deleted file mode 100644
index 6df8e8f0..00000000
--- a/mods/Anomaly Ballistics Overhaul/gamedata/sounds/Railgun_Near_01.ogg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:db21fd152c9889a742cdbaf1bbfa3a0ab6736e2e98fa5daa9386495aa1499f7d
-size 119684
diff --git a/mods/Anomaly Ballistics Overhaul/gamedata/sounds/Railgun_Near_02.ogg b/mods/Anomaly Ballistics Overhaul/gamedata/sounds/Railgun_Near_02.ogg
deleted file mode 100644
index 658f4e8f..00000000
--- a/mods/Anomaly Ballistics Overhaul/gamedata/sounds/Railgun_Near_02.ogg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:aac75955dcbff2369c6aa84f309ec6ea41f73d3bcd3826cd4652d3aeb5856e4d
-size 120717
diff --git a/mods/Anomaly Ballistics Overhaul/gamedata/sounds/Railgun_Near_03.ogg b/mods/Anomaly Ballistics Overhaul/gamedata/sounds/Railgun_Near_03.ogg
deleted file mode 100644
index 68db3fa4..00000000
--- a/mods/Anomaly Ballistics Overhaul/gamedata/sounds/Railgun_Near_03.ogg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:57b4d42cf3aeef4dc84efd2d6d2cf94fe51fdbce998f430dc511f0a07bc377db
-size 101339
diff --git a/mods/Anomaly Ballistics Overhaul/gamedata/sounds/Soul_1.ogg b/mods/Anomaly Ballistics Overhaul/gamedata/sounds/Soul_1.ogg
deleted file mode 100644
index 82308d75..00000000
--- a/mods/Anomaly Ballistics Overhaul/gamedata/sounds/Soul_1.ogg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:66e01164665f38c61cd2084364bd635c43e742869543d5451f418f5d05971578
-size 15230
diff --git a/mods/Anomaly Ballistics Overhaul/gamedata/sounds/Soul_2.ogg b/mods/Anomaly Ballistics Overhaul/gamedata/sounds/Soul_2.ogg
deleted file mode 100644
index ac6bb2e1..00000000
--- a/mods/Anomaly Ballistics Overhaul/gamedata/sounds/Soul_2.ogg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:77ce1bf7a9b57a68ad45f2d41335f193e070c1bee8c5e0d50c2c614902a75b97
-size 16234
diff --git a/mods/Anomaly Ballistics Overhaul/gamedata/sounds/Soul_3.ogg b/mods/Anomaly Ballistics Overhaul/gamedata/sounds/Soul_3.ogg
deleted file mode 100644
index 076e6791..00000000
--- a/mods/Anomaly Ballistics Overhaul/gamedata/sounds/Soul_3.ogg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:4f7d73a83b57468d8da10cf45ea39c3d34b710ec800c6db0fb18312009a97c0b
-size 21519
diff --git a/mods/Anomaly Ballistics Overhaul/gamedata/sounds/Soul_4.ogg b/mods/Anomaly Ballistics Overhaul/gamedata/sounds/Soul_4.ogg
deleted file mode 100644
index c4befd1f..00000000
--- a/mods/Anomaly Ballistics Overhaul/gamedata/sounds/Soul_4.ogg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:8967adbc7224a5b403d99648d94e29a7f78fc5242e498ad6ba70be20b5c9a3e0
-size 16110
diff --git a/mods/Anomaly Ballistics Overhaul/gamedata/sounds/Soul_5.ogg b/mods/Anomaly Ballistics Overhaul/gamedata/sounds/Soul_5.ogg
deleted file mode 100644
index 4c8abb52..00000000
--- a/mods/Anomaly Ballistics Overhaul/gamedata/sounds/Soul_5.ogg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:01e99229571f1f8669fc868fffc4e049a1022556906ff76d33ee2ea141e5061f
-size 15845
diff --git a/mods/Anomaly Ballistics Overhaul/gamedata/textures/ui/ammo_parts.dds b/mods/Anomaly Ballistics Overhaul/gamedata/textures/ui/ammo_parts.dds
deleted file mode 100644
index 0f4c7140..00000000
--- a/mods/Anomaly Ballistics Overhaul/gamedata/textures/ui/ammo_parts.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:ca91008b5b7a8ab297dd8bfa2eb2c2078043d4e3b7f1a07238d0e8550d0eba8c
-size 262272
diff --git a/mods/Anomaly Ballistics Overhaul/gamedata/textures/ui/ui_m209_icon.dds b/mods/Anomaly Ballistics Overhaul/gamedata/textures/ui/ui_m209_icon.dds
deleted file mode 100644
index 574c2e54..00000000
--- a/mods/Anomaly Ballistics Overhaul/gamedata/textures/ui/ui_m209_icon.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:ab2450d3fdf741c7ff15043f89db23001bb33d4bcf57cbdacc62c51db580122d
-size 32896
diff --git a/mods/Anomaly Ballistics Overhaul/gamedata/textures/ui/ui_maid_ammo.dds b/mods/Anomaly Ballistics Overhaul/gamedata/textures/ui/ui_maid_ammo.dds
deleted file mode 100644
index ab156c04..00000000
--- a/mods/Anomaly Ballistics Overhaul/gamedata/textures/ui/ui_maid_ammo.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:7a3eb98cb03b35529dcb60e3747436a67bb278fe9f783b8f5f272e9809e18daf
-size 4194432
diff --git a/mods/Anomaly Ballistics Overhaul/gamedata/textures/ui/ui_vog_icon.dds b/mods/Anomaly Ballistics Overhaul/gamedata/textures/ui/ui_vog_icon.dds
deleted file mode 100644
index fcdb2221..00000000
--- a/mods/Anomaly Ballistics Overhaul/gamedata/textures/ui/ui_vog_icon.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:13c8fe723e5f1630b536d773e820a65ee96698d7c2077c48e849b7a435130d4a
-size 32896
diff --git a/mods/Anomaly Ballistics Overhaul/gamedata/textures/wpn/arti/wpn_ammo_boxes_1.dds b/mods/Anomaly Ballistics Overhaul/gamedata/textures/wpn/arti/wpn_ammo_boxes_1.dds
deleted file mode 100644
index ef5ac571..00000000
--- a/mods/Anomaly Ballistics Overhaul/gamedata/textures/wpn/arti/wpn_ammo_boxes_1.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:d1cec408e46f35f675569b8eae4a41047bdcc7110a35b9a76929127036615008
-size 11184952
diff --git a/mods/Anomaly Ballistics Overhaul/gamedata/textures/wpn/arti/wpn_ammo_boxes_1.thm b/mods/Anomaly Ballistics Overhaul/gamedata/textures/wpn/arti/wpn_ammo_boxes_1.thm
deleted file mode 100644
index 4435f3db..00000000
--- a/mods/Anomaly Ballistics Overhaul/gamedata/textures/wpn/arti/wpn_ammo_boxes_1.thm
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:7e31b94b09c413edd95bdce0afc2ea5c70a24b654cac294071e3d48e3ac8e478
-size 168
diff --git a/mods/Anomaly Ballistics Overhaul/gamedata/textures/wpn/arti/wpn_ammo_boxes_1_bump#.dds b/mods/Anomaly Ballistics Overhaul/gamedata/textures/wpn/arti/wpn_ammo_boxes_1_bump#.dds
deleted file mode 100644
index 0f8b97a0..00000000
--- a/mods/Anomaly Ballistics Overhaul/gamedata/textures/wpn/arti/wpn_ammo_boxes_1_bump#.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:927927a7de5f862fa6e10ca2328f9d82323005a9ae8f14751b1830427ca73f37
-size 176
diff --git a/mods/Anomaly Ballistics Overhaul/gamedata/textures/wpn/arti/wpn_ammo_boxes_1_bump#.thm b/mods/Anomaly Ballistics Overhaul/gamedata/textures/wpn/arti/wpn_ammo_boxes_1_bump#.thm
deleted file mode 100644
index 7c6a9bae..00000000
--- a/mods/Anomaly Ballistics Overhaul/gamedata/textures/wpn/arti/wpn_ammo_boxes_1_bump#.thm
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:9054e8f75b38345e94add586ba5da38070ac5a28694189d9e9fafd2558913304
-size 138
diff --git a/mods/Anomaly Ballistics Overhaul/gamedata/textures/wpn/arti/wpn_ammo_boxes_1_bump.dds b/mods/Anomaly Ballistics Overhaul/gamedata/textures/wpn/arti/wpn_ammo_boxes_1_bump.dds
deleted file mode 100644
index 8a13bf11..00000000
--- a/mods/Anomaly Ballistics Overhaul/gamedata/textures/wpn/arti/wpn_ammo_boxes_1_bump.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:ab2d36c8299fa02efd9a57e4f0e3a5900dae06e639940940da353eea345ebc7a
-size 1398228
diff --git a/mods/Anomaly Ballistics Overhaul/gamedata/textures/wpn/arti/wpn_ammo_boxes_1_bump.thm b/mods/Anomaly Ballistics Overhaul/gamedata/textures/wpn/arti/wpn_ammo_boxes_1_bump.thm
deleted file mode 100644
index d44c7d76..00000000
--- a/mods/Anomaly Ballistics Overhaul/gamedata/textures/wpn/arti/wpn_ammo_boxes_1_bump.thm
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:1690e8c6cc6f0a5077145a2a7642a955e1a2e4cad6f6122074c4d7b60460444d
-size 138
diff --git a/mods/Anomaly Ballistics Overhaul/gamedata/textures/wpn/arti/wpn_ammo_boxes_2.dds b/mods/Anomaly Ballistics Overhaul/gamedata/textures/wpn/arti/wpn_ammo_boxes_2.dds
deleted file mode 100644
index 6902e2a1..00000000
--- a/mods/Anomaly Ballistics Overhaul/gamedata/textures/wpn/arti/wpn_ammo_boxes_2.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:d5acb29114543024756d5767026ddc9f7a3258bd619fdacf45582ea5c57aeb19
-size 11184952
diff --git a/mods/Anomaly Ballistics Overhaul/gamedata/textures/wpn/arti/wpn_ammo_boxes_2.thm b/mods/Anomaly Ballistics Overhaul/gamedata/textures/wpn/arti/wpn_ammo_boxes_2.thm
deleted file mode 100644
index 4435f3db..00000000
--- a/mods/Anomaly Ballistics Overhaul/gamedata/textures/wpn/arti/wpn_ammo_boxes_2.thm
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:7e31b94b09c413edd95bdce0afc2ea5c70a24b654cac294071e3d48e3ac8e478
-size 168
diff --git a/mods/Anomaly Ballistics Overhaul/gamedata/textures/wpn/arti/wpn_ammo_boxes_3.dds b/mods/Anomaly Ballistics Overhaul/gamedata/textures/wpn/arti/wpn_ammo_boxes_3.dds
deleted file mode 100644
index e125e114..00000000
--- a/mods/Anomaly Ballistics Overhaul/gamedata/textures/wpn/arti/wpn_ammo_boxes_3.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:84e72c19b5e573019bfd3206ccc7110ce086674539c26c1da2ecba549f88faf4
-size 11184952
diff --git a/mods/Anomaly Ballistics Overhaul/gamedata/textures/wpn/arti/wpn_ammo_boxes_3.thm b/mods/Anomaly Ballistics Overhaul/gamedata/textures/wpn/arti/wpn_ammo_boxes_3.thm
deleted file mode 100644
index 4435f3db..00000000
--- a/mods/Anomaly Ballistics Overhaul/gamedata/textures/wpn/arti/wpn_ammo_boxes_3.thm
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:7e31b94b09c413edd95bdce0afc2ea5c70a24b654cac294071e3d48e3ac8e478
-size 168
diff --git a/mods/Anomaly Barter/gamedata/configs/text/eng/st_barter.xml b/mods/Anomaly Barter/gamedata/configs/text/eng/st_barter.xml
index 1aa0c086..293cab23 100644
--- a/mods/Anomaly Barter/gamedata/configs/text/eng/st_barter.xml
+++ b/mods/Anomaly Barter/gamedata/configs/text/eng/st_barter.xml
@@ -39,6 +39,10 @@
condition: %
+
+ Want to trade for anything? %c[orange][Barter]
+
+
(refreshed on restock)
diff --git a/mods/Anomaly Barter/gamedata/scripts/barter_core.script b/mods/Anomaly Barter/gamedata/scripts/barter_core.script
index e6b64699..a5b08d94 100644
--- a/mods/Anomaly Barter/gamedata/scripts/barter_core.script
+++ b/mods/Anomaly Barter/gamedata/scripts/barter_core.script
@@ -42,7 +42,17 @@ function get_desc(name)
end
function npc_has_barter(npc)
- local name = npc and npc:section() or ""
+ local name = ""
+ if type(npc) == "string" then
+ -- two cases for sid and forester
+ if npc == "esc_2_12_stalker_trader" then name = "m_trader"
+ elseif npc == "red_forester_tech" then name = "m_lesnik"
+ else
+ name = npc
+ end
+ else
+ name = npc and npc:section() or ""
+ end
return trader_to_barter[name] and not is_empty(trader_to_barter[name])
end
@@ -112,6 +122,7 @@ end
-- get barter list with data on each barter
function get_barter_list(npc, random)
+ printf("Checking barters for %s", npc:section())
if not npc_has_barter(npc) then return {} end
local name = npc:section()
print_dbg("Fetching list for %s", npc:character_name())
@@ -641,13 +652,11 @@ local function load_state(mdata)
end
-function actor_on_first_update()
- validate_barters()
-end
function on_game_start()
RegisterScriptCallback("save_state",save_state)
RegisterScriptCallback("load_state",load_state)
RegisterScriptCallback("actor_on_first_update", actor_on_first_update)
RegisterScriptCallback("trader_on_restock", trader_on_restock)
+ validate_barters()
end
\ No newline at end of file
diff --git a/mods/Anomaly Barter/gamedata/scripts/barter_ui.script b/mods/Anomaly Barter/gamedata/scripts/barter_ui.script
index 9c748833..7fa89ec2 100644
--- a/mods/Anomaly Barter/gamedata/scripts/barter_ui.script
+++ b/mods/Anomaly Barter/gamedata/scripts/barter_ui.script
@@ -30,48 +30,50 @@ function start()
end
end
-function ui_inventory.UIInventory:InitBarterButton()
- self.npc_barter_btn = self.xml:Init3tButton("npc:trade_delimiter:trade_buy_button", self.npc_trade)
- local weight = self.npc_trade_weight:GetWndPos()
- -- printf("trade button at %s %s, delimter at %s %s", pos.x, pos.y, rcoord.x, rcoord.y)
- local pos = self.npc_barter_btn:GetWndPos()
-
- self.npc_barter_btn:SetWndPos(vector2():set(
- weight.x + 20 , -- TODO: Add sliders in MCM to adjust button position
- pos.y
- ))
-
- self.npc_barter_btn:TextControl():SetText(game.translate_string("st_ui_mm_barter"))
-
- self:Register(self.npc_barter_btn, "barter")
-
- self:InitBarterButtonCallback()
-
- local npc = mob_trade.GetTalkingNpc()
- local enable = npc_has_barter(npc)
- self.npc_barter_btn:Enable(enable)
-
-end
-
-function ui_inventory.UIInventory:InitBarterButtonCallback()
- self:AddCallback("barter", ui_events.BUTTON_CLICKED, start, self)
-end
-
-function GUI_on_show(name, path)
- local instance = ui_inventory.GUI
- if name ~= "UIInventory" or (not instance ) then return end
-
- if (not instance.npc_barter_btn) then
- instance:InitBarterButton()
- end
- local partner = instance:GetPartner()
- instance.npc_barter_btn:Show(partner and npc_has_barter(partner))
-end
-
function on_game_start()
- RegisterScriptCallback("GUI_on_show", GUI_on_show)
+ RegisterScriptCallback("on_specific_character_dialog_list", function(character_id, dialog_list)
+ if npc_has_barter(character_id) then
+ local res = dialog_list:add("dm_init_barter", 2)
+ end
+ end)
end
+-- function ui_inventory.UIInventory:InitBarterButton()
+-- self.npc_barter_btn = self.xml:Init3tButton("npc:trade_delimiter:trade_buy_button", self.npc_trade)
+-- local weight = self.npc_trade_weight:GetWndPos()
+-- -- printf("trade button at %s %s, delimter at %s %s", pos.x, pos.y, rcoord.x, rcoord.y)
+-- local pos = self.npc_barter_btn:GetWndPos()
+-- self.npc_barter_btn:SetWndPos(vector2():set(
+-- weight.x + 20 , -- TODO: Add sliders in MCM to adjust button position
+-- pos.y
+-- ))
+
+-- self.npc_barter_btn:TextControl():SetText(game.translate_string("st_ui_mm_barter"))
+
+-- self:Register(self.npc_barter_btn, "barter")
+
+-- self:InitBarterButtonCallback()
+
+-- local npc = mob_trade.GetTalkingNpc()
+-- local enable = npc_has_barter(npc)
+-- self.npc_barter_btn:Enable(enable)
+
+-- end
+
+-- function ui_inventory.UIInventory:InitBarterButtonCallback()
+-- self:AddCallback("barter", ui_events.BUTTON_CLICKED, start, self)
+-- end
+
+-- function GUI_on_show(name, path)
+-- local instance = ui_inventory.GUI
+-- if name ~= "UIInventory" or (not instance ) then return end
+
+-- if (not instance.npc_barter_btn) then
+-- instance:InitBarterButton()
+-- end
+-- local partner = instance:GetPartner()
+-- instance.npc_barter_btn:Show(partner and npc_has_barter(partner))
+-- end
----------------------------------------------------------------------
-- UI
----------------------------------------------------------------------
diff --git a/mods/Anomaly Barter/gamedata/scripts/modxml_barter.script b/mods/Anomaly Barter/gamedata/scripts/modxml_barter.script
new file mode 100644
index 00000000..ee1ec8cb
--- /dev/null
+++ b/mods/Anomaly Barter/gamedata/scripts/modxml_barter.script
@@ -0,0 +1,28 @@
+function on_xml_read()
+ RegisterScriptCallback("on_xml_read", function(xml_file_name, xml_obj)
+ -- XML file i want to change
+ local xml_to_change = [[gameplay\dialogs.xml]]
+
+ -- Check if its the file i want to change
+ if xml_file_name == xml_to_change then
+ -- Here is my code to change XML
+ local barter_dialog =
+[[
+
+
+]]
+ xml_obj:insertFromXMLString(barter_dialog)
+ end
+ end)
+end
\ No newline at end of file
diff --git a/mods/Anomaly Barter/meta.ini b/mods/Anomaly Barter/meta.ini
index 43767f2e..d80aa652 100644
--- a/mods/Anomaly Barter/meta.ini
+++ b/mods/Anomaly Barter/meta.ini
@@ -1,11 +1,11 @@
[General]
gameName=stalkeranomaly
modid=0
-version=d2024.2.27.0
+version=d2024.4.3.0
newestVersion=
category="3,"
nexusFileStatus=1
-installationFile=anomaly-barter.2024.02.19.zip
+installationFile=anomaly-barter.2024.03.09.zip
repository=Nexus
ignoredVersion=
comments=
diff --git a/mods/Anomaly Magazines Redux/gamedata/scripts/magazines_keybinds.script b/mods/Anomaly Magazines Redux/gamedata/scripts/magazines_keybinds.script
index eb786839..445af8cb 100644
--- a/mods/Anomaly Magazines Redux/gamedata/scripts/magazines_keybinds.script
+++ b/mods/Anomaly Magazines Redux/gamedata/scripts/magazines_keybinds.script
@@ -11,7 +11,7 @@ function ui_inventory.UIInventory:On_CC_Mouse1(bag, idx)
self:Print(nil, "Callback On_CC_Mouse1 | no object recieved!", bag, idx)
return
end
- if ((key_state(DIK_keys.DIK_RSHIFT) or 0) ~= 0 or (key_state(DIK_keys.DIK_LSHIFT) or 0) ~= 0) and (bag == "actor_bag" or bag == "npc_bag")then
+ if ((key_state(DIK_keys.DIK_LCONTROL) or 0) ~= 0 or (key_state(DIK_keys.DIK_RCONTROL) or 0) ~= 0) and (bag == "actor_bag" or bag == "npc_bag")then
if magazine_binder.is_magazine(obj) then
magazines.func_unload_ammo(obj)
print_dbg("shift unload")
diff --git a/mods/Arrival/Edited_OLD_DAO_readme.txt b/mods/Arrival/Edited_OLD_DAO_readme.txt
deleted file mode 100644
index 9e9efa79..00000000
--- a/mods/Arrival/Edited_OLD_DAO_readme.txt
+++ /dev/null
@@ -1,37 +0,0 @@
-MODDED EXES ARE REQUIRED FOR WORK: https://github.com/themrdemonized/STALKER-Anomaly-modded-exes
-
-DLTX OR FDDA EXES ALSO WORK
-
-Dynamic Anomalies Overhaul (DAO)
-Written by demonized, 2022
-Based on work by DoctorX and Eugenium Hazardous Anomalies
-Edited by S.e.m.i.t.o.n.e for Arrival - Anomalies mod
-
-Features
- Creating anomalies at the start of level after emission/psi-storm and removing anomalies after emission/psi-storm instead of just disabling them, allowing for truly dynamic generation
- Anomalies behaviour:
- enable/disable with randomized periods, duration and cooldowns for every single anomaly
- behaviour if actor is near an anomaly
- behaviour on hit
- articles about new anomalies
- Spawning artefacts in new anomaly zones
- Enhanced behaviour of usual anomalies
-
- Anomalies:
- - "Darkness" - typical one shot anomaly, very omnious looking, met only on north locations. Special behaviour - has a chance to spawn poltergeist in the proximity of player.
- - "Flash" - bubbly temporal anomaly, which doesnt hurt the player by itself, but travels him forward in time.
- - "Ghost" - Green bubble anomaly that moves along the fixed path.
- - "Liquid gold" - Yellow acid pool like anomaly, special behaviour - drains thirst and some stamina.
- - "Sloth" - Acid field anomaly, special behaviour - 50% reduction of speed near anomaly.
- - "Mefistotel" - Strange flower-like anomaly.
- - "Net" - Fountain of particles.
- - "Point" - Ball lightning anomaly, special behaviour - charges batteries of active items if near actor.
- - "CDF" - Psy anomaly, has weak but unavoidable psy field which hurts player along with main hit.
- - "Rebounder" - Gravitational anomaly, provides 50%-100% resistance to bullet damage if near actor.
- - "No Gravity" - Hard to spot, highly radioactive field that rases dust and rocks arround you bluring your vision and slowing you down.
- - "Electra - has electric field that damages player and equipment, causes electrical interference to PDA and flashlights.
- - "Gravitational anomalies - emits disturbance in gravitational field, causing player to tremble and shake.
- - "Springboard" - a twisting swirl of unknown particles and orbiting leaves that releases a swarm of small elements of itself inflicting shock damage.
- - "Thorn" -
- - "Shatterpoint" -
- - "Seed" -
\ No newline at end of file
diff --git a/mods/Arrival/desktop.ini b/mods/Arrival/desktop.ini
deleted file mode 100644
index 8e1236e3..00000000
--- a/mods/Arrival/desktop.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[.ShellClassInfo]
-IconResource=C:\Users\Admin\Desktop\MOD RELEASE\Latest\Arrival - Anomalies\fomod\Arrival.ico,0
diff --git a/mods/Bullet Time/gamedata/scripts/bullet_time.script b/mods/Bullet Time/gamedata/scripts/bullet_time.script
index 11c5dc43..b55710d3 100644
--- a/mods/Bullet Time/gamedata/scripts/bullet_time.script
+++ b/mods/Bullet Time/gamedata/scripts/bullet_time.script
@@ -52,7 +52,7 @@ end
function power_drain_check()
if not drug_flag then
if (db.actor.power > 0.1 and slowmo_flag) then
- db.actor:change_power(-0.004) -- here you can adjust stamina drain
+ db.actor:change_power(-0.001) -- here you can adjust stamina drain
elseif (db.actor.power < 0.1 and slowmo_flag) then
slowmo_off()
end
diff --git a/mods/Classes and Talents/gamedata/scripts/talents_functions.script b/mods/Classes and Talents/gamedata/scripts/talents_functions.script
index 85275f10..09b66dfc 100644
--- a/mods/Classes and Talents/gamedata/scripts/talents_functions.script
+++ b/mods/Classes and Talents/gamedata/scripts/talents_functions.script
@@ -522,7 +522,7 @@ function actor_hit_npc(npc, s_hit, bone_id, flags)
if not kind then return end
-- machine guns
- kind = machine_guns_t[wpn:section()] and "w_machine_gun" or kind
+ kind = is_mg_type(wpn:section()) and "w_machine_gun" or kind
-- sniper
if picked_class == "sniper" then
@@ -1309,7 +1309,7 @@ function talent_heavy_guns_expert_reload(obj) -- reload
if heavy_guns_expert_t.level <= 0 then return end
local kind = obj and ini_sys:r_string_ex(obj:section(), "kind")
- local kind_fits = (kind and kind == "w_shotgun") or machine_guns_t[obj:section()]
+ local kind_fits = (kind and kind == "w_shotgun") or is_mg_type(obj:section())
if kind_fits then
local val = 1 + heavy_guns_expert_t.reload[heavy_guns_expert_t.level] / 100
return val
@@ -2893,7 +2893,10 @@ function actor_on_hud_animation_play(t, obj)
-- merc grenadier
local grenadier_t = talents_table["defensive"]["merc"]["grenadier"]
if grenadier_t.level > 0 and t.anm_name == "anm_throw" then
- durations_t.grenadier_var = grenadier_t.duration
+ local kind = obj and ini_sys:r_string_ex(obj:section(), "kind")
+ if kind and kind == "w_explosive" then
+ durations_t.grenadier_var = grenadier_t.duration
+ end
end
-- assassin knifeman
@@ -3648,6 +3651,16 @@ function get_left_communities()
return ret_str
end
+function is_mg_type(sec)
+ if not sec then return end
+
+ for str, _ in pairs(machine_guns_t) do
+ if string.find(sec, str) then
+ return true
+ end
+ end
+end
+
-- for stats, calculate cur and max stats (all "cur" are included in "max" too)
local calc_stats_t = {
["offensive"] = {
@@ -4222,7 +4235,7 @@ function ui_item.build_desc_header(obj, sec, str)
end
if IsWeapon(obj) or IsOutfit(obj) then
- if machine_guns_t[sec] then
+ if is_mg_type(sec) then
kind = "w_machine_gun"
end
if in_ar(kinds_to_display, kind) then
diff --git a/mods/Classes and Talents/meta.ini b/mods/Classes and Talents/meta.ini
index 58364725..e5ffdfab 100644
--- a/mods/Classes and Talents/meta.ini
+++ b/mods/Classes and Talents/meta.ini
@@ -1,11 +1,11 @@
[General]
gameName=stalkeranomaly
modid=0
-version=d2024.2.27.0
+version=d2024.4.3.0
newestVersion=
category="10,"
nexusFileStatus=1
-installationFile=Classes_and_talents_0.51.zip
+installationFile=Classes_and_talents_0.52.zip
repository=Nexus
ignoredVersion=
comments=
diff --git a/mods/Even More Hideout Furniture/gamedata/configs/items/settings/hideout_furniture/trade/trade_base_decor.ltx b/mods/Even More Hideout Furniture/gamedata/configs/items/settings/hideout_furniture/trade/trade_base_decor.ltx
new file mode 100644
index 00000000..e148cfc2
--- /dev/null
+++ b/mods/Even More Hideout Furniture/gamedata/configs/items/settings/hideout_furniture/trade/trade_base_decor.ltx
@@ -0,0 +1,41 @@
+
+[decor_furniture]
+items = decor_cabinet, decor_countertop, decor_fchair, decor_stool, decor_rug, decor_sink, decor_sidetable1, decor_sidetable2, decor_shelves, decor_shelves_b, decor_plant4
+factions = stalker, renegade, greh, bandit
+min_supply_level = 1
+amount = 2
+
+[decor_miscellaneous]
+items = decor_ashtray, decor_pot, decor_game, decor_teapot, decor_money_5000, decor_stalker_outfit, decor_merc_outfit, decor_exoskelet, decor_suit, decor_documents_1, decor_documents_2, decor_notes_writing_book
+factions = stalker, renegade, greh, bandit
+min_supply_level = 1
+amount = 1
+
+[decor_Impro]
+items = decor_fuel, decor_bidon, decor_gaz_balon, decor_barrel_metal, decor_box_wood, decor_box_paper
+factions = stalker, renegade, greh, bandit
+min_supply_level = 1
+amount = 2
+
+[decor_dolg]
+items = decor_shooting_target_1, decor_gun_parts, decor_trophie1, decor_trophie2, decor_trophie3, decor_trophie4, decor_trophie5, decor_map1, decor_map2
+factions = dolg, csky, freedom
+min_supply_level = 1
+amount = 1
+
+[decor_freedom]
+items = decor_kartina03, decor_radiola, decor_dev_guitar, decor_poster1, decor_poster2, decor_poster3, decor_poster4, decor_poster5, decor_biliard
+factions = freedom, csky
+min_supply_level = 1
+amount = 1
+
+[decor_clinic_equipments]
+items = decor_clinic_equipments, decor_microscope, decor_junk, decor_stretcher, decor_psi_helmet, decor_metal_table1, decor_metal_table2, decor_lead_box_open,decor_plant2
+factions = ecolog
+min_supply_level = 1
+amount = 1
+
+[decor_light1]
+items = decor_light1, decor_light2, decor_light3, decor_light4, decor_light5, decor_light6, decor_light7, decor_light8, decor_grave1, decor_grave2
+min_supply_level = 1
+amount = 5
diff --git a/mods/Even More Hideout Furniture/gamedata/configs/mod_system_decor.ltx b/mods/Even More Hideout Furniture/gamedata/configs/mod_system_decor.ltx
new file mode 100644
index 00000000..a32a6c84
--- /dev/null
+++ b/mods/Even More Hideout Furniture/gamedata/configs/mod_system_decor.ltx
@@ -0,0 +1,2922 @@
+[decor_documents_1]:tch_junk
+class = II_ATTCH
+kind = i_tool
+visual = dynamics\Decor\documents_1.ogf
+
+description = st_placeable_documents_1_descr
+inv_name = st_placeable_documents_1
+inv_name_short = st_placeable_documents_1
+
+icons_texture = ui\ui_decor
+inv_grid_x = 8
+inv_grid_y = 2
+inv_grid_width = 2
+inv_grid_height = 1
+
+cost = 300
+inv_weight = 0.01
+
+use1_functor = placeable_furniture.place_item
+use1_action_functor = placeable_furniture.func_place_item
+
+placeable_type = prop
+placeable_section = placeable_documents_1
+
+[placeable_documents_1]:physic_object
+visual = dynamics\Decor\documents_1.ogf
+placeable_type = prop
+base_rotation = 0
+
+script_binding = bind_hf_base.init
+item_section = decor_documents_1
+
+ui_texture = ui_decor_documents_1
+
+bounding_box_size = 0.343199, 0.489332, 0.041227
+bounding_box_origin = 0.001088, 0.017884, -0.033876
+
+[decor_cabinet]:tch_junk
+class = II_ATTCH
+kind = i_tool
+visual = dynamics\Decor\cabinet.ogf
+
+description = st_placeable_cabinet_descr
+inv_name = st_placeable_cabinet
+inv_name_short = st_placeable_cabinet
+
+icons_texture = ui\ui_decor
+inv_grid_x = 7
+inv_grid_y = 0
+inv_grid_width = 4
+inv_grid_height = 2
+
+cost = 200
+inv_weight = 1.0
+
+use1_functor = placeable_furniture.place_item
+use1_action_functor = placeable_furniture.func_place_item
+
+placeable_type = prop
+placeable_section = placeable_cabinet
+
+[placeable_cabinet]:physic_object
+visual = dynamics\Decor\cabinet.ogf
+placeable_type = prop
+base_rotation = 0
+
+script_binding = bind_hf_base.init
+item_section = decor_cabinet
+
+ui_texture = ui_decor_cabinet
+
+bounding_box_size = 2.76701, 1.452, 0.583201
+bounding_box_origin = -0.009566, 0.25809, -0.149342
+
+fixed_bones = link1, link2, link3, link4, link5, link6
+
+[decor_ashtray]:tch_junk
+class = II_ATTCH
+kind = i_tool
+visual = dynamics\Decor\ashtray.ogf
+
+description = st_placeable_ashtray_descr
+inv_name = st_placeable_ashtray
+inv_name_short = st_placeable_ashtray
+
+icons_texture = ui\ui_decor
+inv_grid_x = 2
+inv_grid_y = 12
+inv_grid_width = 1
+inv_grid_height = 1
+
+cost = 2
+inv_weight = 0.05
+
+use1_functor = placeable_furniture.place_item
+use1_action_functor = placeable_furniture.func_place_item
+
+placeable_type = prop
+placeable_section = placeable_ashtray
+
+[placeable_ashtray]:physic_object
+visual = dynamics\Decor\ashtray.ogf
+placeable_type = prop
+base_rotation = 0
+
+script_binding = bind_hf_base.init
+item_section = decor_ashtray
+
+ui_texture = ui_decor_ashtray
+
+bounding_box_size = 0.188746, 0.188746, 0.052734
+bounding_box_origin = 0.000031, 0.025074, 0.000031
+
+[decor_barrel_metal]:tch_junk
+class = II_ATTCH
+kind = i_tool
+visual = dynamics\Decor\barrel_metal.ogf
+
+description = st_placeable_barrel_metal_descr
+inv_name = st_placeable_barrel_metal
+inv_name_short = st_placeable_barrel_metal
+
+icons_texture = ui\ui_decor
+inv_grid_x = 5
+inv_grid_y = 2
+inv_grid_width = 1
+inv_grid_height = 2
+
+cost = 20
+inv_weight = 0.3
+
+use1_functor = placeable_furniture.place_item
+use1_action_functor = placeable_furniture.func_place_item
+
+placeable_type = prop
+placeable_section = placeable_barrel_metal
+
+[placeable_barrel_metal]:physic_object
+visual = dynamics\Decor\barrel_metal.ogf
+placeable_type = prop
+base_rotation = 0
+
+script_binding = bind_hf_base.init
+item_section = decor_barrel_metal
+
+ui_texture = ui_decor_barrel_metal
+
+bounding_box_size = 0.705537, 0.705537, 1.05612
+bounding_box_origin = -0.02877, 0.541116, -0.017981
+
+[decor_pot]:tch_junk
+class = II_ATTCH
+kind = i_tool
+visual = dynamics\Decor\pot.ogf
+
+description = st_placeable_pot_descr
+inv_name = st_placeable_pot
+inv_name_short = st_placeable_pot
+
+icons_texture = ui\ui_decor
+inv_grid_x = 6
+inv_grid_y = 4
+inv_grid_width = 1
+inv_grid_height = 1
+
+cost = 20
+inv_weight = 0.1
+
+use1_functor = placeable_furniture.place_item
+use1_action_functor = placeable_furniture.func_place_item
+
+placeable_type = prop
+placeable_section = placeable_pot
+
+[placeable_pot]:physic_object
+visual = dynamics\Decor\pot.ogf
+placeable_type = prop
+base_rotation = 0
+
+script_binding = bind_hf_base.init
+item_section = decor_pot
+
+ui_texture = ui_decor_pot
+
+bounding_box_size = 0.305438, 0.305438, 0.26509
+bounding_box_origin = -0.001073, 0.13335, 0.000198
+
+[decor_countertop]:tch_junk
+class = II_ATTCH
+kind = i_tool
+visual = dynamics\Decor\countertop.ogf
+
+description = st_placeable_countertop_descr
+inv_name = st_placeable_countertop
+inv_name_short = st_placeable_countertop
+
+icons_texture = ui\ui_decor
+inv_grid_x = 3
+inv_grid_y = 0
+inv_grid_width = 4
+inv_grid_height = 2
+
+cost = 100
+inv_weight = 1.0
+
+use1_functor = placeable_furniture.place_item
+use1_action_functor = placeable_furniture.func_place_item
+
+placeable_type = prop
+placeable_section = placeable_countertop
+
+[placeable_countertop]:physic_object
+visual = dynamics\Decor\countertop.ogf
+placeable_type = prop
+base_rotation = 180
+
+script_binding = bind_hf_base.init
+item_section = decor_countertop
+
+ui_texture = ui_decor_countertop
+
+bounding_box_size = 2.33501, 0.7686, 0.948
+bounding_box_origin = 0.012393, 0.473714, 0.038322
+
+fixed_bones = link1, link2, link3, link4
+
+[decor_cuttingboard]:tch_junk
+class = II_ATTCH
+kind = i_tool
+visual = dynamics\Decor\cuttingboard.ogf
+
+description = st_placeable_cuttingboard_descr
+inv_name = st_placeable_cuttingboard
+inv_name_short = st_placeable_cuttingboard
+
+icons_texture = ui\ui_decor
+inv_grid_x = 7
+inv_grid_y = 2
+inv_grid_width = 1
+inv_grid_height = 1
+
+cost = 5
+inv_weight = 0.01
+
+use1_functor = placeable_furniture.place_item
+use1_action_functor = placeable_furniture.func_place_item
+
+placeable_type = prop
+placeable_section = placeable_cuttingboard
+
+[placeable_cuttingboard]:physic_object
+visual = dynamics\Decor\cuttingboard.ogf
+placeable_type = prop
+base_rotation = 0
+
+script_binding = bind_hf_base.init
+item_section = decor_cuttingboard
+
+ui_texture = ui_decor_cuttingboard
+
+bounding_box_size = 0.240099, 0.495514, 0.024
+bounding_box_origin = -0.003294, 0.012163, -0.06031
+
+[decor_fchair]:tch_junk
+class = II_ATTCH
+kind = i_tool
+visual = dynamics\Decor\fchair.ogf
+
+description = st_placeable_fchair_descr
+inv_name = st_placeable_fchair
+inv_name_short = st_placeable_fchair
+
+icons_texture = ui\ui_decor
+inv_grid_x = 0
+inv_grid_y = 2
+inv_grid_width = 2
+inv_grid_height = 2
+
+cost = 150
+inv_weight = 0.6
+
+use1_functor = placeable_furniture.place_item
+use1_action_functor = placeable_furniture.func_place_item
+
+placeable_type = prop
+placeable_section = placeable_fchair
+
+[placeable_fchair]:physic_object
+visual = dynamics\Decor\fchair.ogf
+placeable_type = prop
+base_rotation = 0
+
+script_binding = bind_hf_base.init
+item_section = decor_fchair
+
+ui_texture = ui_decor_fchair
+
+bounding_box_size = 0.681225, 0.769679, 1.00176
+bounding_box_origin = 0.000172, 0.494899, 0.038733
+
+fixed_bones = link1
+
+[decor_game]:tch_junk
+class = II_ATTCH
+kind = i_tool
+visual = dynamics\Decor\game.ogf
+
+description = st_placeable_game_descr
+inv_name = st_placeable_game
+inv_name_short = st_placeable_game
+
+icons_texture = ui\ui_decor
+inv_grid_x = 7
+inv_grid_y = 3
+inv_grid_width = 1
+inv_grid_height = 1
+
+cost = 15
+inv_weight = 0.1
+
+use1_functor = placeable_furniture.place_item
+use1_action_functor = placeable_furniture.func_place_item
+
+placeable_type = prop
+placeable_section = placeable_game
+
+[placeable_game]:physic_object
+visual = dynamics\Decor\game.ogf
+placeable_type = prop
+base_rotation = 0
+
+script_binding = bind_hf_base.init
+item_section = decor_game
+
+ui_texture = ui_decor_game
+
+bounding_box_size = 0.62053, 0.630427, 0.017488
+bounding_box_origin = -0.010258, 0.008303, -0.010541
+
+[decor_fuel]:tch_junk
+class = II_ATTCH
+kind = i_tool
+visual = dynamics\Decor\fuel.ogf
+
+description = st_placeable_fuel_descr
+inv_name = st_placeable_fuel
+inv_name_short = st_placeable_fuel
+
+icons_texture = ui\ui_decor
+inv_grid_x = 4
+inv_grid_y = 8
+inv_grid_width = 1
+inv_grid_height = 2
+
+cost = 30
+inv_weight = 0.3
+
+use1_functor = placeable_furniture.place_item
+use1_action_functor = placeable_furniture.func_place_item
+
+placeable_type = prop
+placeable_section = placeable_fuel
+
+[placeable_fuel]:physic_object
+visual = dynamics\Decor\fuel.ogf
+placeable_type = prop
+base_rotation = 0
+
+script_binding = bind_hf_base.init
+item_section = decor_fuel
+
+ui_texture = ui_decor_fuel
+
+bounding_box_size = 0.167712, 0.371525, 0.570807
+bounding_box_origin = 0.001506, 0.282296, -0.008672
+
+[decor_shooting_target_1]:tch_junk
+class = II_ATTCH
+kind = i_tool
+visual = dynamics\Decor\shooting_target_1.ogf
+
+description = st_placeable_shooting_target_1_descr
+inv_name = st_placeable_shooting_target_1
+inv_name_short = st_placeable_shooting_target_1
+
+icons_texture = ui\ui_decor
+inv_grid_x = 17
+inv_grid_y = 3
+inv_grid_width = 2
+inv_grid_height = 3
+
+cost = 50
+inv_weight = 0.7
+
+use1_functor = placeable_furniture.place_item
+use1_action_functor = placeable_furniture.func_place_item
+
+placeable_type = prop
+placeable_section = placeable_shooting_target_1
+
+[placeable_shooting_target_1]:physic_object
+visual = dynamics\Decor\shooting_target_1.ogf
+placeable_type = prop
+base_rotation = 0
+
+script_binding = bind_hf_base.init
+item_section = decor_shooting_target_1
+
+ui_texture = ui_decor_shooting_target_1
+
+bounding_box_size = 0.916736, 0.111207, 1.57359
+bounding_box_origin = 0, 0.779446, 0
+
+[decor_bidon]:tch_junk
+class = II_ATTCH
+kind = i_tool
+visual = dynamics\Decor\bidon.ogf
+
+description = st_placeable_bidon_descr
+inv_name = st_placeable_bidon
+inv_name_short = st_placeable_bidon
+
+icons_texture = ui\ui_decor
+inv_grid_x = 6
+inv_grid_y = 2
+inv_grid_width = 1
+inv_grid_height = 2
+
+cost = 10
+inv_weight = 0.3
+
+use1_functor = placeable_furniture.place_item
+use1_action_functor = placeable_furniture.func_place_item
+
+placeable_type = prop
+placeable_section = placeable_bidon
+
+[placeable_bidon]:physic_object
+visual = dynamics\Decor\bidon.ogf
+placeable_type = prop
+base_rotation = 0
+
+script_binding = bind_hf_base.init
+item_section = decor_bidon
+
+ui_texture = ui_decor_bidon
+
+bounding_box_size = 0.537837, 0.537837, 0.902951
+bounding_box_origin = 0, 0.464162, 0
+
+[decor_gaz_balon]:tch_junk
+class = II_ATTCH
+kind = i_tool
+visual = dynamics\Decor\gaz_balon.ogf
+
+description = st_placeable_gaz_balon_descr
+inv_name = st_placeable_gaz_balon
+inv_name_short = st_placeable_gaz_balon
+
+icons_texture = ui\ui_decor
+inv_grid_x = 0
+inv_grid_y = 4
+inv_grid_width = 1
+inv_grid_height = 2
+
+cost = 10
+inv_weight = 0.3
+
+use1_functor = placeable_furniture.place_item
+use1_action_functor = placeable_furniture.func_place_item
+
+placeable_type = prop
+placeable_section = placeable_gaz_balon
+
+[placeable_gaz_balon]:physic_object
+visual = dynamics\Decor\gaz_balon.ogf
+placeable_type = prop
+base_rotation = 0
+
+script_binding = bind_hf_base.init
+item_section = decor_gaz_balon
+
+ui_texture = ui_decor_gaz_balon
+
+bounding_box_size = 0.360004, 0.552756, 0.360004
+bounding_box_origin = 0.000008, 0.276378, 0.000001
+
+[decor_radiola]:tch_junk
+class = II_ATTCH
+kind = i_tool
+visual = dynamics\Decor\radiola.ogf
+
+description = st_placeable_radiola_descr
+inv_name = st_placeable_radiola
+inv_name_short = st_placeable_radiola
+
+icons_texture = ui\ui_decor
+inv_grid_x = 0
+inv_grid_y = 6
+inv_grid_width = 2
+inv_grid_height = 1
+
+cost = 200
+inv_weight = 0.3
+
+use1_functor = placeable_furniture.place_item
+use1_action_functor = placeable_furniture.func_place_item
+
+placeable_type = radio
+placeable_section = placeable_radiola
+
+[placeable_radiola]:physic_object
+visual = dynamics\Decor\radiola.ogf
+placeable_type = prop
+base_rotation = 0
+
+script_binding = placeable_radio.init
+item_section = decor_radiola
+
+ui_texture = ui_decor_radiola
+
+bounding_box_size = 0.807849, 0.364277, 0.519719
+bounding_box_origin = -0.004948, 0.25986, 0.005105
+
+[decor_kartina03]:tch_junk
+class = II_ATTCH
+kind = i_tool
+visual = dynamics\Decor\kartina03.ogf
+
+description = st_placeable_kartina03_descr
+inv_name = st_placeable_kartina03
+inv_name_short = st_placeable_kartina03
+
+icons_texture = ui\ui_decor
+inv_grid_x = 14
+inv_grid_y = 2
+inv_grid_width = 2
+inv_grid_height = 2
+
+cost = 20
+inv_weight = 0.1
+
+use1_functor = placeable_furniture.place_item
+use1_action_functor = placeable_furniture.func_place_item
+
+placeable_type = prop
+placeable_section = placeable_kartina03
+
+[placeable_kartina03]:physic_object
+visual = dynamics\Decor\kartina03.ogf
+placeable_type = prop
+base_rotation = 0
+
+script_binding = bind_hf_base.init
+item_section = decor_kartina03
+
+ui_texture = ui_decor_kartina03
+
+bounding_box_size = 0.7234, 0.520035, 0.03
+bounding_box_origin = -0.009935, 0.015, -0.000255
+
+[decor_dev_guitar]:tch_junk
+class = II_ATTCH
+kind = i_tool
+visual = dynamics\Decor\dev_guitar.ogf
+
+description = st_placeable_dev_guitar_descr
+inv_name = st_placeable_dev_guitar
+inv_name_short = st_placeable_dev_guitar
+
+icons_texture = ui\ui_decor
+inv_grid_x = 7
+inv_grid_y = 9
+inv_grid_width = 3
+inv_grid_height = 1
+
+cost = 50
+inv_weight = 0.3
+
+use1_functor = placeable_furniture.place_item
+use1_action_functor = placeable_furniture.func_place_item
+
+placeable_type = prop
+placeable_section = placeable_dev_guitar
+
+[placeable_dev_guitar]:physic_object
+visual = dynamics\Decor\dev_guitar.ogf
+placeable_type = prop
+base_rotation = 0
+
+script_binding = bind_hf_base.init
+item_section = decor_dev_guitar
+
+ui_texture = ui_decor_dev_guitar
+
+bounding_box_size = 0.373486, 0.969974, 0.091669
+bounding_box_origin = 0.002572, 0.045834, -0.237922
+
+[decor_stool]:tch_junk
+class = II_ATTCH
+kind = i_tool
+visual = dynamics\Decor\stool.ogf
+
+description = st_placeable_stool_descr
+inv_name = st_placeable_stool
+inv_name_short = st_placeable_stool
+
+icons_texture = ui\ui_decor
+inv_grid_x = 2
+inv_grid_y = 6
+inv_grid_width = 1
+inv_grid_height = 1
+
+cost = 30
+inv_weight = 0.5
+
+use1_functor = placeable_furniture.place_item
+use1_action_functor = placeable_furniture.func_place_item
+
+placeable_type = prop
+placeable_section = placeable_stool
+
+[placeable_stool]:physic_object
+visual = dynamics\Decor\stool.ogf
+placeable_type = prop
+base_rotation = 0
+
+script_binding = bind_hf_base.init
+item_section = decor_stool
+
+ui_texture = ui_decor_stool
+
+bounding_box_size = 0.448472, 0.448218, 0.533629
+bounding_box_origin = -0.000329, 0.266913, -0.02082
+
+[decor_metal_table1]:tch_junk
+class = II_ATTCH
+kind = i_tool
+visual = dynamics\Decor\metal_table1.ogf
+
+description = st_placeable_metal_table1_descr
+inv_name = st_placeable_metal_table1
+inv_name_short = st_placeable_metal_table1
+
+icons_texture = ui\ui_decor
+inv_grid_x = 11
+inv_grid_y = 0
+inv_grid_width = 3
+inv_grid_height = 2
+
+cost = 60
+inv_weight = 1.0
+
+use1_functor = placeable_furniture.place_item
+use1_action_functor = placeable_furniture.func_place_item
+
+placeable_type = prop
+placeable_section = placeable_metal_table1
+
+[placeable_metal_table1]:physic_object
+visual = dynamics\Decor\metal_table1.ogf
+placeable_type = prop
+base_rotation = 0
+
+script_binding = bind_hf_base.init
+item_section = decor_metal_table1
+
+ui_texture = ui_decor_metal_table1
+
+bounding_box_size = 1.625, 0.975001, 0.899382
+bounding_box_origin = -0.001679, 0.449561, -0.002676
+
+fixed_bones = link1, link2, link3
+
+[decor_metal_table2]:tch_junk
+class = II_ATTCH
+kind = i_tool
+visual = dynamics\Decor\metal_table2.ogf
+
+description = st_placeable_metal_table2_descr
+inv_name = st_placeable_metal_table2
+inv_name_short = st_placeable_metal_table2
+
+icons_texture = ui\ui_decor
+inv_grid_x = 14
+inv_grid_y = 0
+inv_grid_width = 4
+inv_grid_height = 2
+
+cost = 70
+inv_weight = 1.6
+
+use1_functor = placeable_furniture.place_item
+use1_action_functor = placeable_furniture.func_place_item
+
+placeable_type = prop
+placeable_section = placeable_metal_table2
+
+[placeable_metal_table2]:physic_object
+visual = dynamics\Decor\metal_table2.ogf
+placeable_type = prop
+base_rotation = 0
+
+script_binding = bind_hf_base.init
+item_section = decor_metal_table2
+
+ui_texture = ui_decor_metal_table2
+
+bounding_box_size = 2.17748, 0.9133, 0.886701
+bounding_box_origin = -0.0537, 0.453134, 0.010688
+
+fixed_bones = link1, link2, link3
+
+[decor_clinic_equipments]:tch_junk
+class = II_ATTCH
+kind = i_tool
+visual = dynamics\Decor\clinic_equipments.ogf
+
+description = st_placeable_clinic_equipments_descr
+inv_name = st_placeable_clinic_equipments
+inv_name_short = st_placeable_clinic_equipments
+
+icons_texture = ui\ui_decor
+inv_grid_x = 14
+inv_grid_y = 9
+inv_grid_width = 4
+inv_grid_height = 6
+
+cost = 35000
+inv_weight = 5.0
+
+use1_functor = placeable_furniture.place_item
+use1_action_functor = placeable_furniture.func_place_item
+
+placeable_type = prop
+placeable_section = placeable_clinic_equipments
+
+[placeable_clinic_equipments]:physic_object
+visual = dynamics\Decor\clinic_equipments.ogf
+placeable_type = prop
+base_rotation = 0
+
+script_binding = bind_hf_base.init
+item_section = decor_clinic_equipments
+
+ui_texture = ui_decor_clinic_equipments
+
+bounding_box_size = 0.67177, 0.676195, 2.52249
+bounding_box_origin = 0.005135, 1.26092, 0.000111
+
+fixed_bones = link1, link2, link3, link4, link5, link6, link7, link8
+
+[decor_rug]:tch_junk
+class = II_ATTCH
+kind = i_tool
+visual = dynamics\Decor\rug.ogf
+
+description = st_placeable_rug_descr
+inv_name = st_placeable_rug
+inv_name_short = st_placeable_rug
+
+icons_texture = ui\ui_decor
+inv_grid_x = 10
+inv_grid_y = 9
+inv_grid_width = 4
+inv_grid_height = 3
+
+cost = 100
+inv_weight = 0.5
+
+use1_functor = placeable_furniture.place_item
+use1_action_functor = placeable_furniture.func_place_item
+
+placeable_type = prop
+placeable_section = placeable_rug
+
+[placeable_rug]:physic_object
+visual = dynamics\Decor\rug.ogf
+placeable_type = prop
+base_rotation = 0
+
+script_binding = bind_hf_base.init
+item_section = decor_rug
+
+ui_texture = ui_decor_rug
+
+bounding_box_size = 3.00964, 4.00525, 0.013842
+bounding_box_origin = 0.002335, 0.007935, 0.007667
+
+[decor_stalker_outfit]:tch_junk
+class = II_ATTCH
+kind = i_tool
+visual = dynamics\Decor\stalker_outfit.ogf
+
+description = st_placeable_stalker_outfit_descr
+inv_name = st_placeable_stalker_outfit
+inv_name_short = st_placeable_stalker_outfit
+
+icons_texture = ui\ui_decor
+inv_grid_x = 15
+inv_grid_y = 6
+inv_grid_width = 1
+inv_grid_height = 1
+
+cost = 40
+inv_weight = 0.3
+
+use1_functor = placeable_furniture.place_item
+use1_action_functor = placeable_furniture.func_place_item
+
+placeable_type = prop
+placeable_section = placeable_stalker_outfit
+
+[placeable_stalker_outfit]:physic_object
+visual = dynamics\Decor\stalker_outfit.ogf
+placeable_type = prop
+base_rotation = 180
+
+script_binding = bind_hf_base.init
+item_section = decor_stalker_outfit
+
+ui_texture = ui_decor_stalker_outfit
+
+bounding_box_size = 0.66332, 0.788669, 0.163347
+bounding_box_origin = 0.066406, 0.133057, 0.122446
+
+[decor_merc_outfit]:tch_junk
+class = II_ATTCH
+kind = i_tool
+visual = dynamics\Decor\merc_outfit.ogf
+
+description = st_placeable_merc_outfit_descr
+inv_name = st_placeable_merc_outfit
+inv_name_short = st_placeable_merc_outfit
+
+icons_texture = ui\ui_decor
+inv_grid_x = 14
+inv_grid_y = 6
+inv_grid_width = 1
+inv_grid_height = 1
+
+cost = 60
+inv_weight = 0.4
+
+use1_functor = placeable_furniture.place_item
+use1_action_functor = placeable_furniture.func_place_item
+
+placeable_type = prop
+placeable_section = placeable_merc_outfit
+
+[placeable_merc_outfit]:physic_object
+visual = dynamics\Decor\merc_outfit.ogf
+placeable_type = prop
+base_rotation = 180
+
+script_binding = bind_hf_base.init
+item_section = decor_merc_outfit
+
+ui_texture = ui_decor_merc_outfit
+
+bounding_box_size = 0.618859, 0.735806, 0.1583
+bounding_box_origin = 0.066406, 0.08317, 0.122446
+
+[decor_exoskelet]:tch_junk
+class = II_ATTCH
+kind = i_tool
+visual = dynamics\Decor\exoskelet.ogf
+
+description = st_placeable_exoskelet_descr
+inv_name = st_placeable_exoskelet
+inv_name_short = st_placeable_exoskelet
+
+icons_texture = ui\ui_decor
+inv_grid_x = 12
+inv_grid_y = 2
+inv_grid_width = 2
+inv_grid_height = 2
+
+cost = 130
+inv_weight = 1.0
+
+use1_functor = placeable_furniture.place_item
+use1_action_functor = placeable_furniture.func_place_item
+
+placeable_type = prop
+placeable_section = placeable_exoskelet
+
+[placeable_exoskelet]:physic_object
+visual = dynamics\Decor\exoskelet.ogf
+placeable_type = prop
+base_rotation = 0
+
+script_binding = bind_hf_base.init
+item_section = decor_exoskelet
+
+ui_texture = ui_decor_exoskelet
+
+bounding_box_size = 0.737849, 0.664325, 0.371464
+bounding_box_origin = 0, 0.18399, -0.004757
+
+fixed_bones = link1, link2, link3, link4
+
+[decor_stretcher]:tch_junk
+class = II_ATTCH
+kind = i_tool
+visual = dynamics\Decor\stretcher.ogf
+
+description = st_placeable_stretcher_descr
+inv_name = st_placeable_stretcher
+inv_name_short = st_placeable_stretcher
+
+icons_texture = ui\ui_decor
+inv_grid_x = 6
+inv_grid_y = 10
+inv_grid_width = 4
+inv_grid_height = 2
+
+cost = 1300
+inv_weight = 2.0
+
+use1_functor = placeable_furniture.place_item
+use1_action_functor = placeable_furniture.func_place_item
+
+placeable_type = prop
+placeable_section = placeable_stretcher
+
+[placeable_stretcher]:physic_object
+visual = dynamics\Decor\stretcher.ogf
+placeable_type = prop
+base_rotation = 0
+
+script_binding = bind_hf_base.init
+item_section = decor_stretcher
+
+ui_texture = ui_decor_stretcher
+
+bounding_box_size = 0.706921, 2.37983, 1.18236
+bounding_box_origin = 0.00598, 0.594489, 0.082159
+
+fixed_bones = link1, link2, link3, link4
+
+[decor_gun_parts]:tch_junk
+class = II_ATTCH
+kind = i_tool
+visual = dynamics\Decor\gun_parts.ogf
+
+description = st_placeable_gun_parts_descr
+inv_name = st_placeable_gun_parts
+inv_name_short = st_placeable_gun_parts
+
+icons_texture = ui\ui_decor
+inv_grid_x = 9
+inv_grid_y = 3
+inv_grid_width = 2
+inv_grid_height = 1
+
+cost = 20
+inv_weight = 0.2
+
+use1_functor = placeable_furniture.place_item
+use1_action_functor = placeable_furniture.func_place_item
+
+placeable_type = prop
+placeable_section = placeable_gun_parts
+
+[placeable_gun_parts]:physic_object
+visual = dynamics\Decor\gun_parts.ogf
+placeable_type = prop
+base_rotation = 0
+
+script_binding = bind_hf_base.init
+item_section = decor_gun_parts
+
+ui_texture = ui_decor_gun_parts
+
+bounding_box_size = 0.639492, 0.380107, 0.043724
+bounding_box_origin = -0.007526, 0.021228, -0.034592
+
+[decor_teapot]:tch_junk
+class = II_ATTCH
+kind = i_tool
+visual = dynamics\Decor\teapot.ogf
+
+description = st_placeable_teapot_descr
+inv_name = st_placeable_teapot
+inv_name_short = st_placeable_teapot
+
+icons_texture = ui\ui_decor
+inv_grid_x = 6
+inv_grid_y = 5
+inv_grid_width = 1
+inv_grid_height = 1
+
+cost = 10
+inv_weight = 0.1
+
+use1_functor = placeable_furniture.place_item
+use1_action_functor = placeable_furniture.func_place_item
+
+placeable_type = prop
+placeable_section = placeable_teapot
+
+[placeable_teapot]:physic_object
+visual = dynamics\Decor\teapot.ogf
+placeable_type = prop
+base_rotation = 0
+
+script_binding = bind_hf_base.init
+item_section = decor_teapot
+
+ui_texture = ui_decor_teapot
+
+bounding_box_size = 0.385658, 0.31897, 0.279686
+bounding_box_origin = 0.042638, 0.139659, -0.008607
+
+[decor_psi_helmet]:tch_junk
+class = II_ATTCH
+kind = i_tool
+visual = dynamics\Decor\psi_helmet.ogf
+
+description = st_placeable_psi_helmet_descr
+inv_name = st_placeable_psi_helmet
+inv_name_short = st_placeable_psi_helmet
+
+icons_texture = ui\ui_decor
+inv_grid_x = 2
+inv_grid_y = 7
+inv_grid_width = 1
+inv_grid_height = 1
+
+cost = 7000
+inv_weight = 0.3
+
+use1_functor = placeable_furniture.place_item
+use1_action_functor = placeable_furniture.func_place_item
+
+placeable_type = prop
+placeable_section = placeable_psi_helmet
+
+[placeable_psi_helmet]:physic_object
+visual = dynamics\Decor\psi_helmet.ogf
+placeable_type = prop
+base_rotation = 0
+
+script_binding = bind_hf_base.init
+item_section = decor_psi_helmet
+
+ui_texture = ui_decor_psi_helmet
+
+bounding_box_size = 0.306059, 0.289966, 0.244044
+bounding_box_origin = -0.004963, 0.121284, 0.01764
+
+[decor_documents_2]:tch_junk
+class = II_ATTCH
+kind = i_tool
+visual = dynamics\Decor\documents_2.ogf
+
+description = st_placeable_documents_2_descr
+inv_name = st_placeable_documents_2
+inv_name_short = st_placeable_documents_2
+
+icons_texture = ui\ui_decor
+inv_grid_x = 10
+inv_grid_y = 2
+inv_grid_width = 2
+inv_grid_height = 1
+
+cost = 60
+inv_weight = 0.05
+
+use1_functor = placeable_furniture.place_item
+use1_action_functor = placeable_furniture.func_place_item
+
+placeable_type = prop
+placeable_section = placeable_documents_2
+
+[placeable_documents_2]:physic_object
+visual = dynamics\Decor\documents_2.ogf
+placeable_type = prop
+base_rotation = 0
+
+script_binding = bind_hf_base.init
+item_section = decor_documents_2
+
+ui_texture = ui_decor_documents_2
+
+bounding_box_size = 0.458679, 0.592955, 0.076463
+bounding_box_origin = -0.015154, 0.038764, -0.024205
+
+[decor_notes_writing_book]:tch_junk
+class = II_ATTCH
+kind = i_tool
+visual = dynamics\Decor\notes_writing_book.ogf
+
+description = st_placeable_notes_writing_book_descr
+inv_name = st_placeable_notes_writing_book
+inv_name_short = st_placeable_notes_writing_book
+
+icons_texture = ui\ui_decor
+inv_grid_x = 17
+inv_grid_y = 6
+inv_grid_width = 2
+inv_grid_height = 1
+
+cost = 10
+inv_weight = 0.01
+
+use1_functor = placeable_furniture.place_item
+use1_action_functor = placeable_furniture.func_place_item
+
+placeable_type = prop
+placeable_section = placeable_notes_writing_book
+
+[placeable_notes_writing_book]:physic_object
+visual = dynamics\Decor\notes_writing_book.ogf
+placeable_type = prop
+base_rotation = 0
+
+script_binding = bind_hf_base.init
+item_section = decor_notes_writing_book
+
+ui_texture = ui_decor_notes_writing_book
+
+bounding_box_size = 0.265535, 0.454157, 0.031568
+bounding_box_origin = 0, 0.015784, 0
+
+[decor_survivalguide]:tch_junk
+class = II_ATTCH
+kind = i_tool
+visual = dynamics\Decor\survivalguide.ogf
+
+description = st_placeable_survivalguide_descr
+inv_name = st_placeable_survivalguide
+inv_name_short = st_placeable_survivalguide
+
+icons_texture = ui\ui_decor
+inv_grid_x = 7
+inv_grid_y = 4
+inv_grid_width = 2
+inv_grid_height = 1
+
+cost = 100
+inv_weight = 0.01
+
+use1_functor = placeable_furniture.place_item
+use1_action_functor = placeable_furniture.func_place_item
+
+placeable_type = prop
+placeable_section = placeable_survivalguide
+
+[placeable_survivalguide]:physic_object
+visual = dynamics\Decor\survivalguide.ogf
+placeable_type = prop
+base_rotation = 0
+
+script_binding = bind_hf_base.init
+item_section = decor_survivalguide
+
+ui_texture = ui_decor_survivalguide
+
+bounding_box_size = 0.250187, 0.3346, 0.012797
+bounding_box_origin = -0.00276, 0.006398, -0.002259
+
+[decor_guidebook1]:tch_junk
+class = II_ATTCH
+kind = i_tool
+visual = dynamics\Decor\guidebook1.ogf
+
+description = st_placeable_guidebook1_descr
+inv_name = st_placeable_guidebook1
+inv_name_short = st_placeable_guidebook1
+
+icons_texture = ui\ui_decor
+inv_grid_x = 5
+inv_grid_y = 9
+inv_grid_width = 2
+inv_grid_height = 1
+
+cost = 100
+inv_weight = 0.01
+
+use1_functor = placeable_furniture.place_item
+use1_action_functor = placeable_furniture.func_place_item
+
+placeable_type = prop
+placeable_section = placeable_guidebook1
+
+[placeable_guidebook1]:physic_object
+visual = dynamics\Decor\guidebook1.ogf
+placeable_type = prop
+base_rotation = 0
+
+script_binding = bind_hf_base.init
+item_section = decor_guidebook1
+
+ui_texture = ui_decor_guidebook1
+
+bounding_box_size = 0.196302, 0.267427, 0.025638
+bounding_box_origin = -0.011759, 0.014337, 0.006255
+
+[decor_guidebook2]:tch_junk
+class = II_ATTCH
+kind = i_tool
+visual = dynamics\Decor\guidebook2.ogf
+
+description = st_placeable_guidebook2_descr
+inv_name = st_placeable_guidebook2
+inv_name_short = st_placeable_guidebook2
+
+icons_texture = ui\ui_decor
+inv_grid_x = 5
+inv_grid_y = 8
+inv_grid_width = 2
+inv_grid_height = 1
+
+cost = 100
+inv_weight = 0.01
+
+use1_functor = placeable_furniture.place_item
+use1_action_functor = placeable_furniture.func_place_item
+
+placeable_type = prop
+placeable_section = placeable_guidebook2
+
+[placeable_guidebook2]:physic_object
+visual = dynamics\Decor\guidebook2.ogf
+placeable_type = prop
+base_rotation = 0
+
+script_binding = bind_hf_base.init
+item_section = decor_guidebook2
+
+ui_texture = ui_decor_guidebook2
+
+bounding_box_size = 0.190685, 0.263814, 0.037867
+bounding_box_origin = -0.00077, 0.020421, 0.00617
+
+[decor_lead_box_open]:tch_junk
+class = II_ATTCH
+kind = i_tool
+visual = dynamics\Decor\lead_box_open.ogf
+
+description = st_placeable_lead_box_open_descr
+inv_name = st_placeable_lead_box_open
+inv_name_short = st_placeable_lead_box_open
+
+icons_texture = ui\ui_decor
+inv_grid_x = 11
+inv_grid_y = 3
+inv_grid_width = 1
+inv_grid_height = 2
+
+cost = 100
+inv_weight = 0.2
+
+use1_functor = placeable_furniture.place_item
+use1_action_functor = placeable_furniture.func_place_item
+
+placeable_type = prop
+placeable_section = placeable_lead_box_open
+
+[placeable_lead_box_open]:physic_object
+visual = dynamics\Decor\lead_box_open.ogf
+placeable_type = prop
+base_rotation = 0
+
+script_binding = bind_hf_base.init
+item_section = decor_lead_box_open
+
+ui_texture = ui_decor_lead_box_open
+
+bounding_box_size = 0.281036, 0.284124, 0.440942
+bounding_box_origin = 0.000236, 0.2208, -0.000266
+
+[decor_suit]:tch_junk
+class = II_ATTCH
+kind = i_tool
+visual = dynamics\Decor\suit.ogf
+
+description = st_placeable_suit_descr
+inv_name = st_placeable_suit
+inv_name_short = st_placeable_suit
+
+icons_texture = ui\ui_decor
+inv_grid_x = 16
+inv_grid_y = 4
+inv_grid_width = 1
+inv_grid_height = 3
+
+cost = 120
+inv_weight = 0.01
+
+use1_functor = placeable_furniture.place_item
+use1_action_functor = placeable_furniture.func_place_item
+
+placeable_type = prop
+placeable_section = placeable_suit
+
+[placeable_suit]:physic_object
+visual = dynamics\Decor\suit.ogf
+placeable_type = prop
+base_rotation = 0
+
+script_binding = bind_hf_base.init
+item_section = decor_suit
+
+ui_texture = ui_decor_suit
+
+bounding_box_size = 0.569, 1.81641, 0.434082
+bounding_box_origin = 0.006977, 0.14573, -0.029202
+
+[decor_poster1]:tch_junk
+class = II_ATTCH
+kind = i_tool
+visual = dynamics\Decor\poster1.ogf
+
+description = st_placeable_poster1_descr
+inv_name = st_placeable_poster1
+inv_name_short = st_placeable_poster1
+
+icons_texture = ui\ui_decor
+inv_grid_x = 10
+inv_grid_y = 7
+inv_grid_width = 2
+inv_grid_height = 2
+
+cost = 10
+inv_weight = 0.01
+
+use1_functor = placeable_furniture.place_item
+use1_action_functor = placeable_furniture.func_place_item
+
+placeable_type = prop
+placeable_section = placeable_poster1
+
+[placeable_poster1]:physic_object
+visual = dynamics\Decor\poster1.ogf
+placeable_type = prop
+base_rotation = 0
+
+script_binding = bind_hf_base.init
+item_section = decor_poster1
+
+ui_texture = ui_decor_poster1
+
+bounding_box_size = 1.26404, 0.882494, 0.0004
+bounding_box_origin = 0, 0.002616, 0
+
+[decor_poster2]:tch_junk
+class = II_ATTCH
+kind = i_tool
+visual = dynamics\Decor\poster2.ogf
+
+description = st_placeable_poster2_descr
+inv_name = st_placeable_poster2
+inv_name_short = st_placeable_poster2
+
+icons_texture = ui\ui_decor
+inv_grid_x = 14
+inv_grid_y = 7
+inv_grid_width = 1
+inv_grid_height = 2
+
+cost = 10
+inv_weight = 0.01
+
+use1_functor = placeable_furniture.place_item
+use1_action_functor = placeable_furniture.func_place_item
+
+placeable_type = prop
+placeable_section = placeable_poster2
+
+[placeable_poster2]:physic_object
+visual = dynamics\Decor\poster2.ogf
+placeable_type = prop
+base_rotation = 0
+
+script_binding = bind_hf_base.init
+item_section = decor_poster2
+
+ui_texture = ui_decor_poster2
+
+bounding_box_size = 0.570892, 0.747018, 0.017975
+bounding_box_origin = -0.02095, 0.012679, -0.005057
+
+[decor_poster3]:tch_junk
+class = II_ATTCH
+kind = i_tool
+visual = dynamics\Decor\poster3.ogf
+
+description = st_placeable_poster3_descr
+inv_name = st_placeable_poster3
+inv_name_short = st_placeable_poster3
+
+icons_texture = ui\ui_decor
+inv_grid_x = 15
+inv_grid_y = 7
+inv_grid_width = 1
+inv_grid_height = 2
+
+cost = 10
+inv_weight = 0.01
+
+use1_functor = placeable_furniture.place_item
+use1_action_functor = placeable_furniture.func_place_item
+
+placeable_type = prop
+placeable_section = placeable_poster3
+
+[placeable_poster3]:physic_object
+visual = dynamics\Decor\poster3.ogf
+placeable_type = prop
+base_rotation = 0
+
+script_binding = bind_hf_base.init
+item_section = decor_poster3
+
+ui_texture = ui_decor_poster3
+
+bounding_box_size = 0.570892, 0.747018, 0.017975
+bounding_box_origin = -0.02095, 0.012679, -0.005057
+
+[decor_poster4]:tch_junk
+class = II_ATTCH
+kind = i_tool
+visual = dynamics\Decor\poster4.ogf
+
+description = st_placeable_poster4_descr
+inv_name = st_placeable_poster4
+inv_name_short = st_placeable_poster4
+
+icons_texture = ui\ui_decor
+inv_grid_x = 7
+inv_grid_y = 7
+inv_grid_width = 3
+inv_grid_height = 2
+
+cost = 20
+inv_weight = 0.01
+
+use1_functor = placeable_furniture.place_item
+use1_action_functor = placeable_furniture.func_place_item
+
+placeable_type = prop
+placeable_section = placeable_poster4
+
+[placeable_poster4]:physic_object
+visual = dynamics\Decor\poster4.ogf
+placeable_type = prop
+base_rotation = 0
+
+script_binding = bind_hf_base.init
+item_section = decor_poster4
+
+ui_texture = ui_decor_poster4
+
+bounding_box_size = 2, 1.41858, 0.001
+bounding_box_origin = 0, 0.0008, 0
+
+[decor_poster5]:tch_junk
+class = II_ATTCH
+kind = i_tool
+visual = dynamics\Decor\poster5.ogf
+
+description = st_placeable_poster5_descr
+inv_name = st_placeable_poster5
+inv_name_short = st_placeable_poster5
+
+icons_texture = ui\ui_decor
+inv_grid_x = 13
+inv_grid_y = 4
+inv_grid_width = 1
+inv_grid_height = 2
+
+cost = 20
+inv_weight = 0.01
+
+use1_functor = placeable_furniture.place_item
+use1_action_functor = placeable_furniture.func_place_item
+
+placeable_type = prop
+placeable_section = placeable_poster5
+
+[placeable_poster5]:physic_object
+visual = dynamics\Decor\poster5.ogf
+placeable_type = prop
+base_rotation = 0
+
+script_binding = bind_hf_base.init
+item_section = decor_poster5
+
+ui_texture = ui_decor_poster5
+
+bounding_box_size = 0.623829, 0.747018, 0.016213
+bounding_box_origin = 0.005518, 0.011798, -0.005057
+
+[decor_sink]:tch_junk
+class = II_ATTCH
+kind = i_tool
+visual = dynamics\Decor\sink.ogf
+
+description = st_placeable_sink_descr
+inv_name = st_placeable_sink
+inv_name_short = st_placeable_sink
+
+icons_texture = ui\ui_decor
+inv_grid_x = 5
+inv_grid_y = 6
+inv_grid_width = 2
+inv_grid_height = 2
+
+cost = 80
+inv_weight = 0.3
+
+use1_functor = placeable_furniture.place_item
+use1_action_functor = placeable_furniture.func_place_item
+
+placeable_type = prop
+placeable_section = placeable_sink
+
+[placeable_sink]:physic_object
+visual = dynamics\Decor\sink.ogf
+placeable_type = prop
+base_rotation = 0
+
+script_binding = bind_hf_base.init
+item_section = decor_sink
+
+ui_texture = ui_decor_sink
+
+bounding_box_size = 0.881378, 0.494655, 0.754219
+bounding_box_origin = -0.000809, 0.364096, -0.029915
+
+fixed_bones = link1, link2, link3
+
+[decor_sidetable1]:tch_junk
+class = II_ATTCH
+kind = i_tool
+visual = dynamics\Decor\sidetable1.ogf
+
+description = st_placeable_sidetable1_descr
+inv_name = st_placeable_sidetable1
+inv_name_short = st_placeable_sidetable1
+
+icons_texture = ui\ui_decor
+inv_grid_x = 2
+inv_grid_y = 2
+inv_grid_width = 1
+inv_grid_height = 2
+
+cost = 50
+inv_weight = 0.4
+
+use1_functor = placeable_furniture.place_item
+use1_action_functor = placeable_furniture.func_place_item
+
+placeable_type = prop
+placeable_section = placeable_sidetable1
+
+[placeable_sidetable1]:physic_object
+visual = dynamics\Decor\sidetable1.ogf
+placeable_type = prop
+base_rotation = 0
+
+script_binding = bind_hf_base.init
+item_section = decor_sidetable1
+
+ui_texture = ui_decor_sidetable1
+
+bounding_box_size = 0.531296, 0.597328, 1.2
+bounding_box_origin = -0.000082, 0.597697, -0.025874
+
+fixed_bones = link1, link2, link3, link4, link5, link6, link7
+
+[decor_sidetable2]:tch_junk
+class = II_ATTCH
+kind = i_tool
+visual = dynamics\Decor\sidetable2.ogf
+
+description = st_placeable_sidetable2_descr
+inv_name = st_placeable_sidetable2
+inv_name_short = st_placeable_sidetable2
+
+icons_texture = ui\ui_decor
+inv_grid_x = 3
+inv_grid_y = 2
+inv_grid_width = 2
+inv_grid_height = 2
+
+cost = 50
+inv_weight = 0.3
+
+use1_functor = placeable_furniture.place_item
+use1_action_functor = placeable_furniture.func_place_item
+
+placeable_type = prop
+placeable_section = placeable_sidetable2
+
+[placeable_sidetable2]:physic_object
+visual = dynamics\Decor\sidetable2.ogf
+placeable_type = prop
+base_rotation = 0
+
+script_binding = bind_hf_base.init
+item_section = decor_sidetable2
+
+ui_texture = ui_decor_sidetable2
+
+bounding_box_size = 0.540001, 0.566193, 0.907142
+bounding_box_origin = 0, 0.447519, -0.015875
+
+fixed_bones = link1, link2, link3, link4, link5, link6
+
+[decor_shelves]:tch_junk
+class = II_ATTCH
+kind = i_tool
+visual = dynamics\Decor\shelves.ogf
+
+description = st_placeable_shelves_descr
+inv_name = st_placeable_shelves
+inv_name_short = st_placeable_shelves
+
+icons_texture = ui\ui_decor
+inv_grid_x = 18
+inv_grid_y = 0
+inv_grid_width = 2
+inv_grid_height = 3
+
+cost = 30
+inv_weight = 2.0
+
+use1_functor = placeable_furniture.place_item
+use1_action_functor = placeable_furniture.func_place_item
+
+placeable_type = prop
+placeable_section = placeable_shelves
+
+[placeable_shelves]:physic_object
+visual = dynamics\Decor\shelves.ogf
+placeable_type = prop
+base_rotation = 0
+
+script_binding = bind_hf_base.init
+item_section = decor_shelves
+
+ui_texture = ui_decor_shelves
+
+bounding_box_size = 1.7256, 0.927071, 3.19999
+bounding_box_origin = 0.000091, 1.59933, 0.000008
+
+fixed_bones = link1, link2, link3, link4, link5
+
+[decor_box_wood]:tch_junk
+class = II_ATTCH
+kind = i_tool
+visual = dynamics\Decor\box_wood.ogf
+
+description = st_placeable_box_wood_descr
+inv_name = st_placeable_box_wood
+inv_name_short = st_placeable_box_wood
+
+icons_texture = ui\ui_decor
+inv_grid_x = 2
+inv_grid_y = 8
+inv_grid_width = 2
+inv_grid_height = 2
+
+cost = 5
+inv_weight = 0.2
+
+use1_functor = placeable_furniture.place_item
+use1_action_functor = placeable_furniture.func_place_item
+
+placeable_type = prop
+placeable_section = placeable_box_wood
+
+[placeable_box_wood]:physic_object
+visual = dynamics\Decor\box_wood.ogf
+placeable_type = prop
+base_rotation = 0
+
+script_binding = bind_hf_base.init
+item_section = decor_box_wood
+
+ui_texture = ui_decor_box_wood
+
+bounding_box_size = 0.95853, 0.944863, 0.855122
+bounding_box_origin = 0.002247, 0.430613, -0.002731
+
+[decor_trophie1]:tch_junk
+class = II_ATTCH
+kind = i_tool
+visual = dynamics\Decor\trophie1.ogf
+
+description = st_placeable_trophie1_descr
+inv_name = st_placeable_trophie1
+inv_name_short = st_placeable_trophie1
+
+icons_texture = ui\ui_decor
+inv_grid_x = 0
+inv_grid_y = 7
+inv_grid_width = 2
+inv_grid_height = 2
+
+cost = 150
+inv_weight = 0.5
+
+use1_functor = placeable_furniture.place_item
+use1_action_functor = placeable_furniture.func_place_item
+
+placeable_type = prop
+placeable_section = placeable_trophie1
+
+[placeable_trophie1]:physic_object
+visual = dynamics\Decor\trophie1.ogf
+placeable_type = prop
+base_rotation = 0
+
+script_binding = bind_hf_base.init
+item_section = decor_trophie1
+
+ui_texture = ui_decor_trophie1
+
+bounding_box_size = 0.819992, 0.86304, 0.607002
+bounding_box_origin = -0.000285, 0.302342, 0.068351
+
+[decor_trophie2]:tch_junk
+class = II_ATTCH
+kind = i_tool
+visual = dynamics\Decor\trophie2.ogf
+
+description = st_placeable_trophie2_descr
+inv_name = st_placeable_trophie2
+inv_name_short = st_placeable_trophie2
+
+icons_texture = ui\ui_decor
+inv_grid_x = 0
+inv_grid_y = 9
+inv_grid_width = 2
+inv_grid_height = 2
+
+cost = 4800
+inv_weight = 0.7
+
+use1_functor = placeable_furniture.place_item
+use1_action_functor = placeable_furniture.func_place_item
+
+placeable_type = prop
+placeable_section = placeable_trophie2
+
+[placeable_trophie2]:physic_object
+visual = dynamics\Decor\trophie2.ogf
+placeable_type = prop
+base_rotation = 0
+
+script_binding = bind_hf_base.init
+item_section = decor_trophie2
+
+ui_texture = ui_decor_trophie2
+
+bounding_box_size = 0.819977, 0.93568, 0.381996
+bounding_box_origin = 0.010309, 0.188391, 0.101246
+
+[decor_trophie3]:tch_junk
+class = II_ATTCH
+kind = i_tool
+visual = dynamics\Decor\trophie3.ogf
+
+description = st_placeable_trophie3_descr
+inv_name = st_placeable_trophie3
+inv_name_short = st_placeable_trophie3
+
+icons_texture = ui\ui_decor
+inv_grid_x = 0
+inv_grid_y = 11
+inv_grid_width = 2
+inv_grid_height = 2
+
+cost = 100
+inv_weight = 0.6
+
+use1_functor = placeable_furniture.place_item
+use1_action_functor = placeable_furniture.func_place_item
+
+placeable_type = prop
+placeable_section = placeable_trophie3
+
+[placeable_trophie3]:physic_object
+visual = dynamics\Decor\trophie3.ogf
+placeable_type = prop
+base_rotation = 0
+
+script_binding = bind_hf_base.init
+item_section = decor_trophie3
+
+ui_texture = ui_decor_trophie3
+
+bounding_box_size = 1.37202, 0.659508, 0.89109
+bounding_box_origin = -0.039142, 0.440651, -0.083762
+
+[decor_trophie4]:tch_junk
+class = II_ATTCH
+kind = i_tool
+visual = dynamics\Decor\trophie4.ogf
+
+description = st_placeable_trophie4_descr
+inv_name = st_placeable_trophie4
+inv_name_short = st_placeable_trophie4
+
+icons_texture = ui\ui_decor
+inv_grid_x = 0
+inv_grid_y = 13
+inv_grid_width = 3
+inv_grid_height = 2
+
+cost = 250
+inv_weight = 0.7
+
+use1_functor = placeable_furniture.place_item
+use1_action_functor = placeable_furniture.func_place_item
+
+placeable_type = prop
+placeable_section = placeable_trophie4
+
+[placeable_trophie4]:physic_object
+visual = dynamics\Decor\trophie4.ogf
+placeable_type = prop
+base_rotation = 0
+
+script_binding = bind_hf_base.init
+item_section = decor_trophie4
+
+ui_texture = ui_decor_trophie4
+
+bounding_box_size = 1.50282, 0.448532, 1.0579
+bounding_box_origin = 0.061442, 0.517644, -0.00005
+
+[decor_trophie5]:tch_junk
+class = II_ATTCH
+kind = i_tool
+visual = dynamics\Decor\trophie5.ogf
+
+description = st_placeable_trophie5_descr
+inv_name = st_placeable_trophie5
+inv_name_short = st_placeable_trophie5
+
+icons_texture = ui\ui_decor
+inv_grid_x = 6
+inv_grid_y = 13
+inv_grid_width = 2
+inv_grid_height = 2
+
+cost = 2500
+inv_weight = 0.7
+
+use1_functor = placeable_furniture.place_item
+use1_action_functor = placeable_furniture.func_place_item
+
+placeable_type = prop
+placeable_section = placeable_trophie5
+
+[placeable_trophie5]:physic_object
+visual = dynamics\Decor\trophie5.ogf
+placeable_type = prop
+base_rotation = 0
+
+script_binding = bind_hf_base.init
+item_section = decor_trophie5
+
+ui_texture = ui_decor_trophie5
+
+bounding_box_size = 0.663858, 0.630309, 0.321262
+bounding_box_origin = -0.004171, 0.160393, 0.009268
+
+[decor_box_paper]:tch_junk
+class = II_ATTCH
+kind = i_tool
+visual = dynamics\Decor\box_paper.ogf
+
+description = st_placeable_box_paper_descr
+inv_name = st_placeable_box_paper
+inv_name_short = st_placeable_box_paper
+
+icons_texture = ui\ui_decor
+inv_grid_x = 4
+inv_grid_y = 4
+inv_grid_width = 2
+inv_grid_height = 1
+
+cost = 2
+inv_weight = 0.1
+
+use1_functor = placeable_furniture.place_item
+use1_action_functor = placeable_furniture.func_place_item
+
+placeable_type = prop
+placeable_section = placeable_box_paper
+
+[placeable_box_paper]:physic_object
+visual = dynamics\Decor\box_paper.ogf
+placeable_type = prop
+base_rotation = 0
+
+script_binding = bind_hf_base.init
+item_section = decor_box_paper
+
+ui_texture = ui_decor_box_paper
+
+bounding_box_size = 0.66426, 0.494387, 0.401195
+bounding_box_origin = -0.008145, 0.200488, 0.012157
+
+[decor_microscope]:tch_junk
+class = II_ATTCH
+kind = i_tool
+visual = dynamics\Decor\microscope.ogf
+
+description = st_placeable_microscope_descr
+inv_name = st_placeable_microscope
+inv_name_short = st_placeable_microscope
+
+icons_texture = ui\ui_decor
+inv_grid_x = 3
+inv_grid_y = 6
+inv_grid_width = 2
+inv_grid_height = 2
+
+cost = 1000
+inv_weight = 0.3
+
+use1_functor = placeable_furniture.place_item
+use1_action_functor = placeable_furniture.func_place_item
+
+placeable_type = prop
+placeable_section = placeable_microscope
+
+[placeable_microscope]:physic_object
+visual = dynamics\Decor\microscope.ogf
+placeable_type = prop
+base_rotation = 0
+
+script_binding = bind_hf_base.init
+item_section = decor_microscope
+
+ui_texture = ui_decor_microscope
+
+bounding_box_size = 0.587158, 0.976013, 0.759765
+bounding_box_origin = -0.044848, 0.377387, 0.000493
+
+fixed_bones = link1, link2
+
+[decor_map1]:tch_junk
+class = II_ATTCH
+kind = i_tool
+visual = dynamics\Decor\map1.ogf
+
+description = st_placeable_map1_descr
+inv_name = st_placeable_map1
+inv_name_short = st_placeable_map1
+
+icons_texture = ui\ui_decor
+inv_grid_x = 3
+inv_grid_y = 12
+inv_grid_width = 3
+inv_grid_height = 3
+
+cost = 30
+inv_weight = 0.3
+
+use1_functor = placeable_furniture.place_item
+use1_action_functor = placeable_furniture.func_place_item
+
+placeable_type = prop
+placeable_section = placeable_map1
+
+[placeable_map1]:physic_object
+visual = dynamics\Decor\map1.ogf
+placeable_type = prop
+base_rotation = -90
+
+script_binding = bind_hf_base.init
+item_section = decor_map1
+
+ui_texture = ui_decor_map1
+
+bounding_box_size = 1.97032, 1.96841, 0.044299
+bounding_box_origin = -0.037267, 0.022776, -0.00003
+
+[decor_map2]:tch_junk
+class = II_ATTCH
+kind = i_tool
+visual = dynamics\Decor\map2.ogf
+
+description = st_placeable_map2_descr
+inv_name = st_placeable_map2
+inv_name_short = st_placeable_map2
+
+icons_texture = ui\ui_decor
+inv_grid_x = 1
+inv_grid_y = 4
+inv_grid_width = 3
+inv_grid_height = 2
+
+cost = 20
+inv_weight = 0.1
+
+use1_functor = placeable_furniture.place_item
+use1_action_functor = placeable_furniture.func_place_item
+
+placeable_type = prop
+placeable_section = placeable_map2
+
+[placeable_map2]:physic_object
+visual = dynamics\Decor\map2.ogf
+placeable_type = prop
+base_rotation = 0
+
+script_binding = bind_hf_base.init
+item_section = decor_map2
+
+ui_texture = ui_decor_map2
+
+bounding_box_size = 2.52212, 1.26407, 0.000968
+bounding_box_origin = 0, 0.002139, -0.000064
+
+[decor_grave1]:tch_junk
+class = II_ATTCH
+kind = i_tool
+visual = dynamics\Decor\grave1.ogf
+
+description = st_placeable_grave1_descr
+inv_name = st_placeable_grave1
+inv_name_short = st_placeable_grave1
+
+icons_texture = ui\ui_decor
+inv_grid_x = 12
+inv_grid_y = 6
+inv_grid_width = 2
+inv_grid_height = 3
+
+cost = 30
+inv_weight = 0.4
+
+use1_functor = placeable_furniture.place_item
+use1_action_functor = placeable_furniture.func_place_item
+
+placeable_type = prop
+placeable_section = placeable_grave1
+
+[placeable_grave1]:physic_object
+visual = dynamics\Decor\grave1.ogf
+placeable_type = prop
+base_rotation = 0
+
+script_binding = bind_hf_base.init
+item_section = decor_grave1
+
+ui_texture = ui_decor_grave1
+
+bounding_box_size = 0.255836, 0.169534, 2.19254
+bounding_box_origin = 0.061066, 0.9336, -0.025442
+
+fixed_bones = link1
+
+[decor_grave2]:tch_junk
+class = II_ATTCH
+kind = i_tool
+visual = dynamics\Decor\grave2.ogf
+
+description = st_placeable_grave2_descr
+inv_name = st_placeable_grave2
+inv_name_short = st_placeable_grave2
+
+icons_texture = ui\ui_decor
+inv_grid_x = 15
+inv_grid_y = 4
+inv_grid_width = 1
+inv_grid_height = 2
+
+cost = 10
+inv_weight = 0.2
+
+use1_functor = placeable_furniture.place_item
+use1_action_functor = placeable_furniture.func_place_item
+
+placeable_type = prop
+placeable_section = placeable_grave2
+
+[placeable_grave2]:physic_object
+visual = dynamics\Decor\grave2.ogf
+placeable_type = prop
+base_rotation = 0
+
+script_binding = bind_hf_base.init
+item_section = decor_grave2
+
+ui_texture = ui_decor_grave2
+
+bounding_box_size = 1.043, 0.217338, 1.62386
+bounding_box_origin = -0.041132, 0.807867, 0.025559
+
+[decor_junk]:tch_junk
+class = II_ATTCH
+kind = i_tool
+visual = dynamics\Decor\junk.ogf
+
+description = st_placeable_junk_descr
+inv_name = st_placeable_junk
+inv_name_short = st_placeable_junk
+
+icons_texture = ui\ui_decor
+inv_grid_x = 4
+inv_grid_y = 5
+inv_grid_width = 2
+inv_grid_height = 1
+
+cost = 20
+inv_weight = 0.1
+
+use1_functor = placeable_furniture.place_item
+use1_action_functor = placeable_furniture.func_place_item
+
+placeable_type = prop
+placeable_section = placeable_junk
+
+[placeable_junk]:physic_object
+visual = dynamics\Decor\junk.ogf
+placeable_type = prop
+base_rotation = 0
+
+script_binding = bind_hf_base.init
+item_section = decor_junk
+
+ui_texture = ui_decor_junk
+
+bounding_box_size = 0.841995, 0.571812, 0.153469
+bounding_box_origin = 0.050344, 0.076709, -0.032064
+
+[decor_money_5000]:tch_junk
+class = II_ATTCH
+kind = i_tool
+visual = dynamics\Decor\money_5000.ogf
+
+description = st_placeable_money_5000_descr
+inv_name = st_placeable_money_5000
+inv_name_short = st_placeable_money_5000
+
+icons_texture = ui\ui_decor
+inv_grid_x = 8
+inv_grid_y = 3
+inv_grid_width = 1
+inv_grid_height = 1
+
+cost = 5000
+inv_weight = 0.01
+
+use1_functor = placeable_furniture.place_item
+use1_action_functor = placeable_furniture.func_place_item
+
+placeable_type = prop
+placeable_section = placeable_money_5000
+
+[placeable_money_5000]:physic_object
+visual = dynamics\Decor\money_5000.ogf
+placeable_type = prop
+base_rotation = 0
+
+script_binding = bind_hf_base.init
+item_section = decor_money_5000
+
+ui_texture = ui_decor_money_5000
+
+bounding_box_size = 0.178175, 0.206062, 0.085537
+bounding_box_origin = 0.000456, 0.042759, -0.001497
+
+[decor_plant2]:tch_junk
+class = II_ATTCH
+kind = i_tool
+visual = dynamics\Decor\plant2.ogf
+
+description = st_placeable_plant2_descr
+inv_name = st_placeable_plant2
+inv_name_short = st_placeable_plant2
+
+icons_texture = ui\ui_decor
+inv_grid_x = 7
+inv_grid_y = 5
+inv_grid_width = 1
+inv_grid_height = 2
+
+cost = 14000
+inv_weight = 0.1
+
+use1_functor = placeable_furniture.place_item
+use1_action_functor = placeable_furniture.func_place_item
+
+placeable_type = prop
+placeable_section = placeable_plant2
+
+[placeable_plant2]:physic_object
+visual = dynamics\Decor\plant2.ogf
+placeable_type = prop
+base_rotation = 0
+
+script_binding = bind_hf_base.init
+item_section = decor_plant2
+
+ui_texture = ui_decor_plant2
+
+bounding_box_size = 0.136345, 0.136345, 0.354193
+bounding_box_origin = -0.001231, 0.177993, 0.001028
+
+[decor_plant3]:tch_junk
+class = II_ATTCH
+kind = i_tool
+visual = dynamics\Decor\plant3.ogf
+
+description = st_placeable_plant3_descr
+inv_name = st_placeable_plant3
+inv_name_short = st_placeable_plant3
+
+icons_texture = ui\ui_decor
+inv_grid_x = 8
+inv_grid_y = 5
+inv_grid_width = 1
+inv_grid_height = 2
+
+cost = 2
+inv_weight = 0.05
+
+use1_functor = placeable_furniture.place_item
+use1_action_functor = placeable_furniture.func_place_item
+
+placeable_type = prop
+placeable_section = placeable_plant3
+
+[placeable_plant3]:physic_object
+visual = dynamics\Decor\plant3.ogf
+placeable_type = prop
+base_rotation = 0
+
+script_binding = bind_hf_base.init
+item_section = decor_plant3
+
+ui_texture = ui_decor_plant3
+
+bounding_box_size = 0.089274, 0.089711, 0.114294
+bounding_box_origin = -0.002585, 0.056342, -0.001336
+
+[decor_plant4]:tch_junk
+class = II_ATTCH
+kind = i_tool
+visual = dynamics\Decor\plant4.ogf
+
+description = st_placeable_plant4_descr
+inv_name = st_placeable_plant4
+inv_name_short = st_placeable_plant4
+
+icons_texture = ui\ui_decor
+inv_grid_x = 9
+inv_grid_y = 4
+inv_grid_width = 2
+inv_grid_height = 3
+
+cost = 50
+inv_weight = 0.3
+
+use1_functor = placeable_furniture.place_item
+use1_action_functor = placeable_furniture.func_place_item
+
+placeable_type = prop
+placeable_section = placeable_plant4
+
+[placeable_plant4]:physic_object
+visual = dynamics\Decor\plant4.ogf
+placeable_type = prop
+base_rotation = 0
+
+script_binding = bind_hf_base.init
+item_section = decor_plant4
+
+ui_texture = ui_decor_plant4
+
+bounding_box_size = 0.218546, 0.218546, 0.465953
+bounding_box_origin = -0.000065, 0.232549, -0.000759
+
+[decor_biliard]:tch_junk
+class = II_ATTCH
+kind = i_tool
+visual = dynamics\Decor\biliard.ogf
+
+description = st_placeable_biliard_descr
+inv_name = st_placeable_biliard
+inv_name_short = st_placeable_biliard
+
+icons_texture = ui\ui_decor
+inv_grid_x = 0
+inv_grid_y = 0
+inv_grid_width = 3
+inv_grid_height = 2
+
+cost = 50
+inv_weight = 0.7
+
+use1_functor = placeable_furniture.place_item
+use1_action_functor = placeable_furniture.func_place_item
+
+placeable_type = prop
+placeable_section = placeable_biliard
+
+[placeable_biliard]:physic_object
+visual = dynamics\Decor\biliard.ogf
+placeable_type = prop
+base_rotation = 0
+
+script_binding = bind_hf_base.init
+item_section = decor_biliard
+
+ui_texture = ui_decor_biliard
+
+bounding_box_size = 1.30002, 2.50001, 0.799999
+bounding_box_origin = -0.008532, 0.376783, -0.021173
+
+fixed_bones = link1, link2, link3, link4, link5
+
+[decor_shelves_b]:tch_junk
+class = II_ATTCH
+kind = i_tool
+visual = dynamics\Decor\shelves_b.ogf
+
+description = st_placeable_shelves_b_descr
+inv_name = st_placeable_shelves_b
+inv_name_short = st_placeable_shelves_b
+
+icons_texture = ui\ui_decor
+inv_grid_x = 16
+inv_grid_y = 7
+inv_grid_width = 3
+inv_grid_height = 2
+
+cost = 20
+inv_weight = 0.3
+
+use1_functor = placeable_furniture.place_item
+use1_action_functor = placeable_furniture.func_place_item
+
+placeable_type = prop
+placeable_section = placeable_shelves_b
+
+[placeable_shelves_b]:physic_object
+visual = dynamics\Decor\shelves_b.ogf
+placeable_type = prop
+base_rotation = 0
+
+script_binding = bind_hf_base.init
+item_section = decor_shelves_b
+
+ui_texture = ui_decor_shelves_b
+
+bounding_box_size = 1.77217, 1.04353, 0.496491
+bounding_box_origin = -0.093048, 0.244783, 0.0667
+
+fixed_bones = link1, link2, link3, link4, link5, link6
+
+;------------------------
+;--- Lights
+;------------------------
+
+[decor_light1]:tch_junk
+class = II_ATTCH
+kind = i_tool
+visual = dynamics\Decor\light\light_sharnir_1.ogf
+
+description = st_placeable_light1_descr
+inv_name = st_placeable_light1
+inv_name_short = st_placeable_light1
+
+icons_texture = ui\ui_decor
+inv_grid_x = 6
+inv_grid_y = 12
+inv_grid_width = 1
+inv_grid_height = 1
+
+cost = 20
+inv_weight = 0.2
+
+use_condition = true
+power_critical = 0.2
+power_consumption = 0
+condition_bar = power_progess_bar
+fuel_section = batteries_dead
+
+script_binding = item_device.bind
+use1_functor = placeable_furniture.place_item
+use1_action_functor = placeable_furniture.func_place_item
+use6_functor = item_device.menu_battery
+use6_action_functor = item_device.func_battery
+
+placeable_type = light
+placeable_section = placeable_light1
+
+[placeable_light1]
+class = SO_HLAMP
+visual = dynamics\Decor\light\light_sharnir_1.ogf
+script_binding = bind_light_furniture.init
+ui_on_interaction = ui_furniture_light.start_dialog
+ui_on_simple_interaction = ui_furniture_light.toggle_light
+
+fuel_duration = 336 ; measured in hours
+fuel_section = batteries_dead
+item_section = decor_light1
+light_section = definition_light1
+placeable_type = light
+
+base_rotation = -90
+bounding_box_size = 0.136962, 0.103783, 0.656577
+bounding_box_origin = 0.004383, 0.33017, 0.000001
+
+snd_turn_on = ambient\special\light_buzz_1
+snd_turn_off = ambient\special\light_sizzles_1
+hide_bone_off = bone_light
+
+ui_texture = ui_inGame2_placeable_metal_torch
+
+[definition_light1]
+type = 1 ; 0-Direct 1-Point 2-Spot 3-OMNIPART 4-Reflected
+color = 0.929, 0.639, 0.333, 0.5 ;
+range = 5;
+has_shadows = true
+
+volumetric = false
+volumetric_distance = 0.5
+volumetric_quality = 0.5
+volumetric_intensity = 0.1
+
+main_bone = bone_light
+
+[decor_light2]:tch_junk
+class = II_ATTCH
+kind = i_tool
+visual = dynamics\Decor\light\projector.ogf
+
+description = st_placeable_light2_descr
+inv_name = st_placeable_light2
+inv_name_short = st_placeable_light2
+
+icons_texture = ui\ui_decor
+inv_grid_x = 3
+inv_grid_y = 10
+inv_grid_width = 1
+inv_grid_height = 2
+
+cost = 30
+inv_weight = 0.3
+
+use_condition = true
+power_critical = 0.2
+power_consumption = 0
+condition_bar = power_progess_bar
+fuel_section = batteries_dead
+
+script_binding = item_device.bind
+use1_functor = placeable_furniture.place_item
+use1_action_functor = placeable_furniture.func_place_item
+use6_functor = item_device.menu_battery
+use6_action_functor = item_device.func_battery
+
+placeable_type = light
+placeable_section = placeable_light2
+
+[placeable_light2]
+class = SO_HLAMP
+visual = dynamics\Decor\light\projector.ogf
+script_binding = bind_light_furniture.init
+ui_on_interaction = ui_furniture_light.start_dialog
+ui_on_simple_interaction = ui_furniture_light.toggle_light
+
+fuel_duration = 336 ; measured in hours
+fuel_section = batteries_dead
+item_section = decor_light2
+light_section = definition_light2
+placeable_type = light
+
+base_rotation = 180
+bounding_box_size = 0.123953, 0.138189, 0.313449
+bounding_box_origin = -0.002944, 0.159257, 0.000268
+
+snd_turn_on = ambient\special\light_buzz_1
+snd_turn_off = ambient\special\light_sizzles_1
+hide_bone_off = bone_light
+
+ui_texture = ui_inGame2_placeable_metal_torch
+
+[definition_light2]
+type = 2 ; 0-Direct 1-Point 2-Spot 3-OMNIPART 4-Reflected
+cone_angle = 65
+color = 0.75, 0.91, 0.94, 1.0 ;
+range = 14;
+has_shadows = true
+
+volumetric = false
+volumetric_distance = 0.5
+volumetric_quality = 0.5
+volumetric_intensity = 0.1
+
+main_bone = bone_light
+
+[decor_light3]:tch_junk
+class = II_ATTCH
+kind = i_tool
+visual = dynamics\Decor\light\light_abajour_2_hirez.ogf
+
+description = st_placeable_light3_descr
+inv_name = st_placeable_light3
+inv_name_short = st_placeable_light3
+
+icons_texture = ui\ui_decor
+inv_grid_x = 2
+inv_grid_y = 10
+inv_grid_width = 1
+inv_grid_height = 2
+
+cost = 20
+inv_weight = 0.3
+
+use_condition = true
+power_critical = 0.2
+power_consumption = 0
+condition_bar = power_progess_bar
+fuel_section = batteries_dead
+
+script_binding = item_device.bind
+use1_functor = placeable_furniture.place_item
+use1_action_functor = placeable_furniture.func_place_item
+use6_functor = item_device.menu_battery
+use6_action_functor = item_device.func_battery
+
+placeable_type = light
+placeable_section = placeable_light3
+
+[placeable_light3]
+class = SO_HLAMP
+visual = dynamics\Decor\light\light_abajour_2_hirez.ogf
+script_binding = bind_light_furniture.init
+ui_on_interaction = ui_furniture_light.start_dialog
+ui_on_simple_interaction = ui_furniture_light.toggle_light
+
+fuel_duration = 336 ; measured in hours
+fuel_section = batteries_dead
+item_section = decor_light3
+light_section = definition_light3
+placeable_type = light
+
+base_rotation = 0
+bounding_box_size = 0.123953, 0.138189, 0.313449
+bounding_box_origin = -0.002944, 0.159257, 0.000268
+
+snd_turn_on = ambient\special\light_buzz_1
+snd_turn_off = ambient\special\light_sizzles_1
+hide_bone_off = bone_light
+
+ui_texture = ui_inGame2_placeable_metal_torch
+
+[definition_light3]
+type = 2 ; 0-Direct 1-Point 2-Spot 3-OMNIPART 4-Reflected
+cone_angle = 97
+color = 0.69, 0.506, 0.4, 0.8 ;
+range = 10;
+has_shadows = true
+
+volumetric = false
+volumetric_distance = 0.5
+volumetric_quality = 0.5
+volumetric_intensity = 0.1
+
+main_bone = bone_light
+
+[decor_light4]:tch_junk
+class = II_ATTCH
+kind = i_tool
+visual = dynamics\Decor\light\light_illicha_1.ogf
+
+description = st_placeable_light4_descr
+inv_name = st_placeable_light4
+inv_name_short = st_placeable_light4
+
+icons_texture = ui\ui_decor
+inv_grid_x = 11
+inv_grid_y = 5
+inv_grid_width = 1
+inv_grid_height = 2
+
+cost = 10
+inv_weight = 0.2
+
+use_condition = true
+power_critical = 0.2
+power_consumption = 0
+condition_bar = power_progess_bar
+fuel_section = batteries_dead
+
+script_binding = item_device.bind
+use1_functor = placeable_furniture.place_item
+use1_action_functor = placeable_furniture.func_place_item
+use6_functor = item_device.menu_battery
+use6_action_functor = item_device.func_battery
+
+placeable_type = light
+placeable_section = placeable_light4
+
+[placeable_light4]
+class = SO_HLAMP
+visual = dynamics\Decor\light\light_illicha_1.ogf
+script_binding = bind_light_furniture.init
+ui_on_interaction = ui_furniture_light.start_dialog
+ui_on_simple_interaction = ui_furniture_light.toggle_light
+
+fuel_duration = 336 ; measured in hours
+fuel_section = batteries_dead
+item_section = decor_light4
+light_section = definition_light4
+placeable_type = light
+
+base_rotation = 0
+bounding_box_size = 0.089417, 0.094489, 1.1299
+bounding_box_origin = 0, 0.565782, 0
+
+snd_turn_on = ambient\special\light_buzz_1
+snd_turn_off = ambient\special\light_sizzles_1
+hide_bone_off = bone_light
+
+ui_texture = ui_inGame2_placeable_metal_torch
+
+[definition_light4]
+type = 1 ; 0-Direct 1-Point 2-Spot 3-OMNIPART 4-Reflected
+color = 0.659, 0.596, 0.565, 0.2 ;
+range = 5;
+has_shadows = true
+
+volumetric = false
+volumetric_distance = 0.5
+volumetric_quality = 0.5
+volumetric_intensity = 0.1
+
+main_bone = bone_light
+
+[decor_light5]:tch_junk
+class = II_ATTCH
+kind = i_tool
+visual = dynamics\Decor\light\light_galogen_1_glass.ogf
+
+description = st_placeable_light5_descr
+inv_name = st_placeable_light5
+inv_name_short = st_placeable_light5
+
+icons_texture = ui\ui_decor
+inv_grid_x = 4
+inv_grid_y = 10
+inv_grid_width = 2
+inv_grid_height = 1
+
+cost = 40
+inv_weight = 0.4
+
+use_condition = true
+power_critical = 0.2
+power_consumption = 0
+condition_bar = power_progess_bar
+fuel_section = batteries_dead
+
+script_binding = item_device.bind
+use1_functor = placeable_furniture.place_item
+use1_action_functor = placeable_furniture.func_place_item
+use6_functor = item_device.menu_battery
+use6_action_functor = item_device.func_battery
+
+placeable_type = light
+placeable_section = placeable_light5
+
+[placeable_light5]
+class = SO_HLAMP
+visual = dynamics\Decor\light\light_galogen_1_glass.ogf
+script_binding = bind_light_furniture.init
+ui_on_interaction = ui_furniture_light.start_dialog
+ui_on_simple_interaction = ui_furniture_light.toggle_light
+
+fuel_duration = 336 ; measured in hours
+fuel_section = batteries_dead
+item_section = decor_light5
+light_section = definition_light5
+placeable_type = light
+
+base_rotation = 0
+bounding_box_size = 1.21959, 0.399142, 0.120028
+bounding_box_origin = -0.000013, 0.058992, -0.001006
+
+snd_turn_on = ambient\special\light_buzz_1
+snd_turn_off = ambient\special\light_sizzles_1
+hide_bone_off = bone_light
+
+ui_texture = ui_inGame2_placeable_metal_torch
+
+[definition_light5]
+type = 1 ; 0-Direct 1-Point 2-Spot 3-OMNIPART 4-Reflected
+color = 0.749, 0.671, 0.631, 0.5 ;
+range = 9;
+has_shadows = true
+
+volumetric = false
+volumetric_distance = 0.5
+volumetric_quality = 0.5
+volumetric_intensity = 0.1
+
+main_bone = bone_light
+
+[decor_light6]:tch_junk
+class = II_ATTCH
+kind = i_tool
+visual = dynamics\Decor\light\lightbulb_1.ogf
+
+description = st_placeable_light6_descr
+inv_name = st_placeable_light6
+inv_name_short = st_placeable_light6
+
+icons_texture = ui\ui_decor
+inv_grid_x = 12
+inv_grid_y = 5
+inv_grid_width = 1
+inv_grid_height = 1
+
+cost = 10
+inv_weight = 0.2
+
+use_condition = true
+power_critical = 0.2
+power_consumption = 0
+condition_bar = power_progess_bar
+fuel_section = batteries_dead
+
+script_binding = item_device.bind
+use1_functor = placeable_furniture.place_item
+use1_action_functor = placeable_furniture.func_place_item
+use6_functor = item_device.menu_battery
+use6_action_functor = item_device.func_battery
+
+placeable_type = light
+placeable_section = placeable_light6
+
+[placeable_light6]
+class = SO_HLAMP
+visual = dynamics\Decor\light\lightbulb_1.ogf
+script_binding = bind_light_furniture.init
+ui_on_interaction = ui_furniture_light.start_dialog
+ui_on_simple_interaction = ui_furniture_light.toggle_light
+
+fuel_duration = 336 ; measured in hours
+fuel_section = batteries_dead
+item_section = decor_light6
+light_section = definition_light6
+placeable_type = light
+
+base_rotation = 0
+bounding_box_size = 0.298882, 0.298882, 0.401897
+bounding_box_origin = 0.004469, 0.197871, -0.000002
+
+snd_turn_on = ambient\special\light_buzz_1
+snd_turn_off = ambient\special\light_sizzles_1
+hide_bone_off = bone_light
+
+ui_texture = ui_inGame2_placeable_metal_torch
+
+[definition_light6]
+type = 1 ; 0-Direct 1-Point 2-Spot 3-OMNIPART 4-Reflected
+cone_angle = 97
+color = 0.659, 0.596, 0.565, 0.5 ;
+range = 5;
+has_shadows = true
+
+volumetric = false
+volumetric_distance = 0.5
+volumetric_quality = 0.5
+volumetric_intensity = 0.1
+
+main_bone = bone_light
+
+[decor_light7]:tch_junk
+class = II_ATTCH
+kind = i_tool
+visual = dynamics\Decor\light\lightbulb_2.ogf
+
+description = st_placeable_light7_descr
+inv_name = st_placeable_light7
+inv_name_short = st_placeable_light7
+
+icons_texture = ui\ui_decor
+inv_grid_x = 12
+inv_grid_y = 4
+inv_grid_width = 1
+inv_grid_height = 1
+
+cost = 10
+inv_weight = 0.2
+
+use_condition = true
+power_critical = 0.2
+power_consumption = 0
+condition_bar = power_progess_bar
+fuel_section = batteries_dead
+
+script_binding = item_device.bind
+use1_functor = placeable_furniture.place_item
+use1_action_functor = placeable_furniture.func_place_item
+use6_functor = item_device.menu_battery
+use6_action_functor = item_device.func_battery
+
+placeable_type = light
+placeable_section = placeable_light7
+
+[placeable_light7]
+class = SO_HLAMP
+visual = dynamics\Decor\light\lightbulb_2.ogf
+script_binding = bind_light_furniture.init
+ui_on_interaction = ui_furniture_light.start_dialog
+ui_on_simple_interaction = ui_furniture_light.toggle_light
+
+fuel_duration = 336 ; measured in hours
+fuel_section = batteries_dead
+item_section = decor_light7
+light_section = definition_light7
+placeable_type = light
+
+base_rotation = 0
+bounding_box_size = 0.205771, 0.205771, 0.328874
+bounding_box_origin = 0.000153, 0.162001, 0.000378
+
+snd_turn_on = ambient\special\light_buzz_1
+snd_turn_off = ambient\special\light_sizzles_1
+hide_bone_off = bone_light
+
+ui_texture = ui_inGame2_placeable_metal_torch
+
+[definition_light7]
+type = 1 ; 0-Direct 1-Point 2-Spot 3-OMNIPART 4-Reflected
+cone_angle = 97
+color = 0.831, 0.392, 0.192, 0.5 ;
+range = 4;
+has_shadows = true
+
+volumetric = false
+volumetric_distance = 0.5
+volumetric_quality = 0.5
+volumetric_intensity = 0.1
+
+main_bone = bone_light
+
+[decor_light8]:tch_junk
+class = II_ATTCH
+kind = i_tool
+visual = dynamics\Decor\light\light_galogen_2_glass.ogf
+
+description = st_placeable_light8_descr
+inv_name = st_placeable_light8
+inv_name_short = st_placeable_light8
+
+icons_texture = ui\ui_decor
+inv_grid_x = 4
+inv_grid_y = 11
+inv_grid_width = 2
+inv_grid_height = 1
+
+cost = 30
+inv_weight = 0.2
+
+use_condition = true
+power_critical = 0.2
+power_consumption = 0
+condition_bar = power_progess_bar
+fuel_section = batteries_dead
+
+script_binding = item_device.bind
+use1_functor = placeable_furniture.place_item
+use1_action_functor = placeable_furniture.func_place_item
+use6_functor = item_device.menu_battery
+use6_action_functor = item_device.func_battery
+
+placeable_type = light
+placeable_section = placeable_light8
+
+[placeable_light8]
+class = SO_HLAMP
+visual = dynamics\Decor\light\light_galogen_2_glass.ogf
+script_binding = bind_light_furniture.init
+ui_on_interaction = ui_furniture_light.start_dialog
+ui_on_simple_interaction = ui_furniture_light.toggle_light
+
+fuel_duration = 336 ; measured in hours
+fuel_section = batteries_dead
+item_section = decor_light8
+light_section = definition_light8
+placeable_type = light
+
+base_rotation = 0
+bounding_box_size = 1.18652, 0.056545, 0.053432
+bounding_box_origin = -0.000029, 0.026897, -0.001138
+
+snd_turn_on = ambient\special\light_buzz_1
+snd_turn_off = ambient\special\light_sizzles_1
+hide_bone_off = bone_light
+
+ui_texture = ui_inGame2_placeable_metal_torch
+
+[definition_light8]
+type = 1 ; 0-Direct 1-Point 2-Spot 3-OMNIPART 4-Reflected
+color = 0.561, 0.459, 0.4, 0.7 ;
+range = 5;
+has_shadows = true
+
+volumetric = false
+volumetric_distance = 0.5
+volumetric_quality = 0.5
+volumetric_intensity = 0.1
+
+main_bone = bone_light
\ No newline at end of file
diff --git a/mods/Even More Hideout Furniture/gamedata/configs/text/eng/st_items_decor.xml b/mods/Even More Hideout Furniture/gamedata/configs/text/eng/st_items_decor.xml
new file mode 100644
index 00000000..c4f1ce3c
--- /dev/null
+++ b/mods/Even More Hideout Furniture/gamedata/configs/text/eng/st_items_decor.xml
@@ -0,0 +1,738 @@
+
+
+
+
+ Bundle of Paper
+
+
+
+ %c[ui_gray_3]PROPERTIES:\n
+ %c[d_blue] %c[ui_gray_2] placeable item\n
+ %c[d_green] %c[ui_gray_2] furniture item\n
+
+
+
+ Kitchen Cabinets
+
+
+
+ %c[ui_gray_3]PROPERTIES:\n
+ %c[d_blue] %c[ui_gray_2] placeable item\n
+ %c[d_green] %c[ui_gray_2] furniture item\n
+
+
+
+ Ash Tray
+
+
+
+ %c[ui_gray_3]PROPERTIES:\n
+ %c[d_blue] %c[ui_gray_2] placeable item\n
+ %c[d_green] %c[ui_gray_2] furniture item\n
+
+
+
+ Metal Barrel
+
+
+
+ %c[ui_gray_3]PROPERTIES:\n
+ %c[d_blue] %c[ui_gray_2] placeable item\n
+ %c[d_green] %c[ui_gray_2] furniture item\n
+
+
+
+ Bathroom Shelves
+
+
+
+ %c[ui_gray_3]PROPERTIES:\n
+ %c[d_blue] %c[ui_gray_2] placeable item\n
+ %c[d_green] %c[ui_gray_2] furniture item\n
+
+
+
+ Biliard Table
+
+
+
+ %c[ui_gray_3]PROPERTIES:\n
+ %c[d_blue] %c[ui_gray_2] placeable item\n
+ %c[d_green] %c[ui_gray_2] furniture item\n
+
+
+
+ Cooking Pot
+
+
+
+ %c[ui_gray_3]PROPERTIES:\n
+ %c[d_blue] %c[ui_gray_2] placeable item\n
+ %c[d_green] %c[ui_gray_2] furniture item\n
+
+
+
+ Countertop
+
+
+
+ %c[ui_gray_3]PROPERTIES:\n
+ %c[d_blue] %c[ui_gray_2] placeable item\n
+ %c[d_green] %c[ui_gray_2] furniture item\n
+
+
+
+ Cuttingboard
+
+
+
+ %c[ui_gray_3]PROPERTIES:\n
+ %c[d_blue] %c[ui_gray_2] placeable item\n
+ %c[d_green] %c[ui_gray_2] furniture item\n
+
+
+
+ Modern Chair
+
+
+
+ %c[ui_gray_3]PROPERTIES:\n
+ %c[d_blue] %c[ui_gray_2] placeable item\n
+ %c[d_green] %c[ui_gray_2] furniture item\n
+
+
+
+ Table Game
+
+
+
+ %c[ui_gray_3]PROPERTIES:\n
+ %c[d_blue] %c[ui_gray_2] placeable item\n
+ %c[d_green] %c[ui_gray_2] furniture item\n
+
+
+
+ Jerrycan
+
+
+
+ %c[ui_gray_3]PROPERTIES:\n
+ %c[d_blue] %c[ui_gray_2] placeable item\n
+ %c[d_green] %c[ui_gray_2] furniture item\n
+
+
+
+ Shooting Target
+
+
+
+ %c[ui_gray_3]PROPERTIES:\n
+ %c[d_blue] %c[ui_gray_2] placeable item\n
+ %c[d_green] %c[ui_gray_2] furniture item\n
+
+
+
+ Bidon
+
+
+
+ %c[ui_gray_3]PROPERTIES:\n
+ %c[d_blue] %c[ui_gray_2] placeable item\n
+ %c[d_green] %c[ui_gray_2] furniture item\n
+
+
+
+ Gas Tank
+
+
+
+ %c[ui_gray_3]PROPERTIES:\n
+ %c[d_blue] %c[ui_gray_2] placeable item\n
+ %c[d_green] %c[ui_gray_2] furniture item\n
+
+
+
+ Radio
+
+
+ A functional radio.\n
+ %c[ui_gray_3]PROPERTIES:\n
+ %c[d_blue] %c[ui_gray_2] technological item\n
+ %c[d_blue] %c[ui_gray_2] placeable item\n
+ %c[d_green] %c[ui_gray_2] furniture item\n
+
+
+
+ Picture Frame
+
+
+
+ %c[ui_gray_3]PROPERTIES:\n
+ %c[d_blue] %c[ui_gray_2] placeable item\n
+ %c[d_green] %c[ui_gray_2] furniture item\n
+
+
+
+ Guitar
+
+
+
+ %c[ui_gray_3]PROPERTIES:\n
+ %c[d_blue] %c[ui_gray_2] placeable item\n
+ %c[d_green] %c[ui_gray_2] furniture item\n
+
+
+
+ Stool
+
+
+
+ %c[ui_gray_3]PROPERTIES:\n
+ %c[d_blue] %c[ui_gray_2] placeable item\n
+ %c[d_green] %c[ui_gray_2] furniture item\n
+
+
+
+ Metal Table A
+
+
+
+ %c[ui_gray_3]PROPERTIES:\n
+ %c[d_blue] %c[ui_gray_2] placeable item\n
+ %c[d_green] %c[ui_gray_2] furniture item\n
+
+
+
+ Metal Table B
+
+
+
+ %c[ui_gray_3]PROPERTIES:\n
+ %c[d_blue] %c[ui_gray_2] placeable item\n
+ %c[d_green] %c[ui_gray_2] furniture item\n
+
+
+
+ Stalker Outfit bundle
+
+
+
+ %c[ui_gray_3]PROPERTIES:\n
+ %c[d_blue] %c[ui_gray_2] placeable item\n
+ %c[d_green] %c[ui_gray_2] furniture item\n
+
+
+
+ Mercenary Outfit bundle
+
+
+
+ %c[ui_gray_3]PROPERTIES:\n
+ %c[d_blue] %c[ui_gray_2] placeable item\n
+ %c[d_green] %c[ui_gray_2] furniture item\n
+
+
+
+ Exoskeleton bundle
+
+
+
+ %c[ui_gray_3]PROPERTIES:\n
+ %c[d_blue] %c[ui_gray_2] placeable item\n
+ %c[d_green] %c[ui_gray_2] furniture item\n
+
+
+
+ Stretcher
+
+
+
+ %c[ui_gray_3]PROPERTIES:\n
+ %c[d_blue] %c[ui_gray_2] placeable item\n
+ %c[d_green] %c[ui_gray_2] furniture item\n
+
+
+
+ Gun Parts
+
+
+
+ %c[ui_gray_3]PROPERTIES:\n
+ %c[d_blue] %c[ui_gray_2] placeable item\n
+ %c[d_green] %c[ui_gray_2] furniture item\n
+
+
+
+ Teapot
+
+
+
+ %c[ui_gray_3]PROPERTIES:\n
+ %c[d_blue] %c[ui_gray_2] placeable item\n
+ %c[d_green] %c[ui_gray_2] furniture item\n
+
+
+
+ Psi Helmet
+
+
+
+ %c[ui_gray_3]PROPERTIES:\n
+ %c[d_blue] %c[ui_gray_2] placeable item\n
+ %c[d_green] %c[ui_gray_2] furniture item\n
+
+
+
+ Stack of Documents
+
+
+
+ %c[ui_gray_3]PROPERTIES:\n
+ %c[d_blue] %c[ui_gray_2] placeable item\n
+ %c[d_green] %c[ui_gray_2] furniture item\n
+
+
+
+ Personal Journal
+
+
+
+ %c[ui_gray_3]PROPERTIES:\n
+ %c[d_blue] %c[ui_gray_2] placeable item\n
+ %c[d_green] %c[ui_gray_2] furniture item\n
+
+
+
+ Safety Guide
+
+
+
+ %c[ui_gray_3]PROPERTIES:\n
+ %c[d_blue] %c[ui_gray_2] placeable item\n
+ %c[d_green] %c[ui_gray_2] furniture item\n
+
+
+
+ Survival Guide
+
+
+
+ %c[ui_gray_3]PROPERTIES:\n
+ %c[d_blue] %c[ui_gray_2] placeable item\n
+ %c[d_green] %c[ui_gray_2] furniture item\n
+
+
+
+ Mechanics Manual
+
+
+
+ %c[ui_gray_3]PROPERTIES:\n
+ %c[d_blue] %c[ui_gray_2] placeable item\n
+ %c[d_green] %c[ui_gray_2] furniture item\n
+
+
+
+ Opened Lead Box
+
+
+
+ %c[ui_gray_3]PROPERTIES:\n
+ %c[d_blue] %c[ui_gray_2] placeable item\n
+ %c[d_green] %c[ui_gray_2] furniture item\n
+
+
+
+ SSP-99M Suit Display
+
+
+
+ %c[ui_gray_3]PROPERTIES:\n
+ %c[d_blue] %c[ui_gray_2] placeable item\n
+ %c[d_green] %c[ui_gray_2] furniture item\n
+
+
+
+ Poster 1
+
+
+
+ %c[ui_gray_3]PROPERTIES:\n
+ %c[d_blue] %c[ui_gray_2] placeable item\n
+ %c[d_green] %c[ui_gray_2] furniture item\n
+
+
+
+ Poster 2
+
+
+
+ %c[ui_gray_3]PROPERTIES:\n
+ %c[d_blue] %c[ui_gray_2] placeable item\n
+ %c[d_green] %c[ui_gray_2] furniture item\n
+
+
+
+ Poster 3
+
+
+
+ %c[ui_gray_3]PROPERTIES:\n
+ %c[d_blue] %c[ui_gray_2] placeable item\n
+ %c[d_green] %c[ui_gray_2] furniture item\n
+
+
+
+ Poster 4
+
+
+
+ %c[ui_gray_3]PROPERTIES:\n
+ %c[d_blue] %c[ui_gray_2] placeable item\n
+ %c[d_green] %c[ui_gray_2] furniture item\n
+
+
+
+ Poster 5
+
+
+
+ %c[ui_gray_3]PROPERTIES:\n
+ %c[d_blue] %c[ui_gray_2] placeable item\n
+ %c[d_green] %c[ui_gray_2] furniture item\n
+
+
+
+ Sink
+
+
+
+ %c[ui_gray_3]PROPERTIES:\n
+ %c[d_blue] %c[ui_gray_2] placeable item\n
+ %c[d_green] %c[ui_gray_2] furniture item\n
+
+
+
+ Side Table A
+
+
+
+ %c[ui_gray_3]PROPERTIES:\n
+ %c[d_blue] %c[ui_gray_2] placeable item\n
+ %c[d_green] %c[ui_gray_2] furniture item\n
+
+
+
+ Side Table B
+
+
+
+ %c[ui_gray_3]PROPERTIES:\n
+ %c[d_blue] %c[ui_gray_2] placeable item\n
+ %c[d_green] %c[ui_gray_2] furniture item\n
+
+
+
+ Metal Shelves
+
+
+
+ %c[ui_gray_3]PROPERTIES:\n
+ %c[d_blue] %c[ui_gray_2] placeable item\n
+ %c[d_green] %c[ui_gray_2] furniture item\n
+
+
+
+ Wooden Box
+
+
+
+ %c[ui_gray_3]PROPERTIES:\n
+ %c[d_blue] %c[ui_gray_2] placeable item\n
+ %c[d_green] %c[ui_gray_2] furniture item\n
+
+
+
+ Boar Trophie
+
+
+
+ %c[ui_gray_3]PROPERTIES:\n
+ %c[d_blue] %c[ui_gray_2] placeable item\n
+ %c[d_green] %c[ui_gray_2] furniture item\n
+
+
+
+ Chimera Trophie
+
+
+
+ %c[ui_gray_3]PROPERTIES:\n
+ %c[d_blue] %c[ui_gray_2] placeable item\n
+ %c[d_green] %c[ui_gray_2] furniture item\n
+
+
+
+ Pseudodog Trophie
+
+
+
+ %c[ui_gray_3]PROPERTIES:\n
+ %c[d_blue] %c[ui_gray_2] placeable item\n
+ %c[d_green] %c[ui_gray_2] furniture item\n
+
+
+
+ Cat Trophie
+
+
+
+ %c[ui_gray_3]PROPERTIES:\n
+ %c[d_blue] %c[ui_gray_2] placeable item\n
+ %c[d_green] %c[ui_gray_2] furniture item\n
+
+
+
+ Bloodsucker Trophie
+
+
+
+ %c[ui_gray_3]PROPERTIES:\n
+ %c[d_blue] %c[ui_gray_2] placeable item\n
+ %c[d_green] %c[ui_gray_2] furniture item\n
+
+
+
+ Carton Box
+
+
+
+ %c[ui_gray_3]PROPERTIES:\n
+ %c[d_blue] %c[ui_gray_2] placeable item\n
+ %c[d_green] %c[ui_gray_2] furniture item\n
+
+
+
+ Microscope
+
+
+
+ %c[ui_gray_3]PROPERTIES:\n
+ %c[d_blue] %c[ui_gray_2] placeable item\n
+ %c[d_green] %c[ui_gray_2] furniture item\n
+
+
+
+ Wall Mounted Map A
+
+
+
+ %c[ui_gray_3]PROPERTIES:\n
+ %c[d_blue] %c[ui_gray_2] placeable item\n
+ %c[d_green] %c[ui_gray_2] furniture item\n
+
+
+
+ Wall Mounted Map B
+
+
+
+ %c[ui_gray_3]PROPERTIES:\n
+ %c[d_blue] %c[ui_gray_2] placeable item\n
+ %c[d_green] %c[ui_gray_2] furniture item\n
+
+
+
+ Grave A
+
+
+
+ %c[ui_gray_3]PROPERTIES:\n
+ %c[d_blue] %c[ui_gray_2] placeable item\n
+ %c[d_green] %c[ui_gray_2] furniture item\n
+
+
+
+ Grave B
+
+
+
+ %c[ui_gray_3]PROPERTIES:\n
+ %c[d_blue] %c[ui_gray_2] placeable item\n
+ %c[d_green] %c[ui_gray_2] furniture item\n
+
+
+
+ Mechanical Junk
+
+
+
+ %c[ui_gray_3]PROPERTIES:\n
+ %c[d_blue] %c[ui_gray_2] placeable item\n
+ %c[d_green] %c[ui_gray_2] furniture item\n
+
+
+
+ Money Stack
+
+
+
+ %c[ui_gray_3]PROPERTIES:\n
+ %c[d_blue] %c[ui_gray_2] placeable item\n
+ %c[d_green] %c[ui_gray_2] furniture item\n
+
+
+
+ Anomalous Plant
+
+
+
+ %c[ui_gray_3]PROPERTIES:\n
+ %c[d_blue] %c[ui_gray_2] placeable item\n
+ %c[d_green] %c[ui_gray_2] furniture item\n
+
+
+
+ Improvised Plant
+
+
+
+ %c[ui_gray_3]PROPERTIES:\n
+ %c[d_blue] %c[ui_gray_2] placeable item\n
+ %c[d_green] %c[ui_gray_2] furniture item\n
+
+
+
+ Tall plant
+
+
+
+ %c[ui_gray_3]PROPERTIES:\n
+ %c[d_blue] %c[ui_gray_2] placeable item\n
+ %c[d_green] %c[ui_gray_2] furniture item\n
+
+
+
+ Rug
+
+
+
+ %c[ui_gray_3]PROPERTIES:\n
+ %c[d_blue] %c[ui_gray_2] placeable item\n
+ %c[d_green] %c[ui_gray_2] furniture item\n
+
+
+
+ Clinical Equipments
+
+
+
+ %c[ui_gray_3]PROPERTIES:\n
+ %c[d_blue] %c[ui_gray_2] placeable item\n
+ %c[d_green] %c[ui_gray_2] furniture item\n
+
+
+
+ Wall Sconce
+
+
+
+ %c[ui_gray_3]PROPERTIES:\n
+ %c[d_blue] %c[ui_gray_2] technological item\n
+ %c[d_blue] %c[ui_gray_2] placeable item\n
+ %c[d_blue] %c[ui_gray_2] fuel: batteries\n
+ %c[d_green] %c[ui_gray_2] Very low electric power consumption\n
+ %c[d_purple] %c[ui_gray_2] TEMP: 2700K\n
+
+
+
+ Projector Lamp
+
+
+
+ %c[ui_gray_3]PROPERTIES:\n
+ %c[d_blue] %c[ui_gray_2] technological item\n
+ %c[d_blue] %c[ui_gray_2] placeable item\n
+ %c[d_blue] %c[ui_gray_2] fuel: batteries\n
+ %c[d_green] %c[ui_gray_2] Very low electric power consumption\n
+ %c[d_purple] %c[ui_gray_2] TEMP: 6500K\n
+
+
+
+ Abajour Lamp
+
+
+
+ %c[ui_gray_3]PROPERTIES:\n
+ %c[d_blue] %c[ui_gray_2] technological item\n
+ %c[d_blue] %c[ui_gray_2] placeable item\n
+ %c[d_blue] %c[ui_gray_2] fuel: batteries\n
+ %c[d_green] %c[ui_gray_2] Very low electric power consumption\n
+ %c[d_purple] %c[ui_gray_2] TEMP: 3000K\n
+
+
+
+ Hanging Light Bulb
+
+
+
+ %c[ui_gray_3]PROPERTIES:\n
+ %c[d_blue] %c[ui_gray_2] technological item\n
+ %c[d_blue] %c[ui_gray_2] placeable item\n
+ %c[d_blue] %c[ui_gray_2] fuel: batteries\n
+ %c[d_green] %c[ui_gray_2] Very low electric power consumption\n
+ %c[d_purple] %c[ui_gray_2] TEMP: 4000K\n
+
+
+
+ Triple-Tube Lights
+
+
+
+ %c[ui_gray_3]PROPERTIES:\n
+ %c[d_blue] %c[ui_gray_2] technological item\n
+ %c[d_blue] %c[ui_gray_2] placeable item\n
+ %c[d_blue] %c[ui_gray_2] fuel: batteries\n
+ %c[d_green] %c[ui_gray_2] Very low electric power consumption\n
+ %c[d_purple] %c[ui_gray_2] TEMP: 4000K\n
+
+
+
+ Wall-Mounted Bulb A
+
+
+
+ %c[ui_gray_3]PROPERTIES:\n
+ %c[d_blue] %c[ui_gray_2] technological item\n
+ %c[d_blue] %c[ui_gray_2] placeable item\n
+ %c[d_blue] %c[ui_gray_2] fuel: batteries\n
+ %c[d_green] %c[ui_gray_2] Very low electric power consumption\n
+ %c[d_purple] %c[ui_gray_2] TEMP: 5000K\n
+
+
+
+ Wall-Mounted Bulb B
+
+
+
+ %c[ui_gray_3]PROPERTIES:\n
+ %c[d_blue] %c[ui_gray_2] technological item\n
+ %c[d_blue] %c[ui_gray_2] placeable item\n
+ %c[d_blue] %c[ui_gray_2] fuel: batteries\n
+ %c[d_green] %c[ui_gray_2] Very low electric power consumption\n
+ %c[d_purple] %c[ui_gray_2] HUE: 2000K\n
+
+
+
+ Single-Tube Light
+
+
+
+ %c[ui_gray_3]PROPERTIES:\n
+ %c[d_blue] %c[ui_gray_2] technological item\n
+ %c[d_blue] %c[ui_gray_2] placeable item\n
+ %c[d_blue] %c[ui_gray_2] fuel: batteries\n
+ %c[d_green] %c[ui_gray_2] Very low electric power consumption\n
+ %c[d_purple] %c[ui_gray_2] TEMP: 4000K\n
+
+
diff --git a/mods/Even More Hideout Furniture/gamedata/configs/ui/textures_descr/ui_decor.xml b/mods/Even More Hideout Furniture/gamedata/configs/ui/textures_descr/ui_decor.xml
new file mode 100644
index 00000000..98526e14
--- /dev/null
+++ b/mods/Even More Hideout Furniture/gamedata/configs/ui/textures_descr/ui_decor.xml
@@ -0,0 +1,67 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/ashtray.ogf b/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/ashtray.ogf
new file mode 100644
index 00000000..30b0d600
--- /dev/null
+++ b/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/ashtray.ogf
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:bcc229104c516747b148bdacba6deda53b22dd496b2b68b53219dca0ab4712b9
+size 13502
diff --git a/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/barrel_metal.ogf b/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/barrel_metal.ogf
new file mode 100644
index 00000000..234490d0
--- /dev/null
+++ b/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/barrel_metal.ogf
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:eb901a2ccd7fe9eb9f3565e25090dcbc296a910413a19b31a0635df1ecfb4bd2
+size 21704
diff --git a/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/bidon.ogf b/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/bidon.ogf
new file mode 100644
index 00000000..a8a1b0af
--- /dev/null
+++ b/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/bidon.ogf
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:13929851d3d4702becb33e216947d0a53f728fd58587ba3a6f00e288abe1e5e5
+size 121031
diff --git a/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/biliard.ogf b/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/biliard.ogf
new file mode 100644
index 00000000..b4c3ec93
--- /dev/null
+++ b/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/biliard.ogf
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:3b3aa3328144a201348fc1c2d53e57aeef6f6365aa551ff3ff33c1ff6e27f976
+size 61190
diff --git a/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/box_paper.ogf b/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/box_paper.ogf
new file mode 100644
index 00000000..dd0b3266
--- /dev/null
+++ b/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/box_paper.ogf
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:5c391cd2129cc50fdf4829fa95366ed822df935bf44249c692aea677fcb7618f
+size 12615
diff --git a/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/box_wood.ogf b/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/box_wood.ogf
new file mode 100644
index 00000000..61f89548
--- /dev/null
+++ b/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/box_wood.ogf
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:10601412d5da406c3d74988d5b445925dcb3dabc4758b7d94b1f010454ea12c7
+size 23399
diff --git a/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/cabinet.ogf b/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/cabinet.ogf
new file mode 100644
index 00000000..f5b1f37d
--- /dev/null
+++ b/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/cabinet.ogf
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:717faab74f24d13706b76c878a66f50d2cf56254e0d47fabcfb30b57970dec15
+size 26868
diff --git a/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/clinic_equipments.ogf b/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/clinic_equipments.ogf
new file mode 100644
index 00000000..a9172195
--- /dev/null
+++ b/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/clinic_equipments.ogf
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:9ff8d6f20c4e875ad87c21013ee9b7d6bb374c610edfdfbd70306160ff637571
+size 234384
diff --git a/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/countertop.ogf b/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/countertop.ogf
new file mode 100644
index 00000000..8bd39b78
--- /dev/null
+++ b/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/countertop.ogf
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:84e85638c469ef70b9c8e9d39f04061e328b4830db09ad1e146f239bbc2209d5
+size 26158
diff --git a/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/cuttingboard.ogf b/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/cuttingboard.ogf
new file mode 100644
index 00000000..d6ed5cd0
--- /dev/null
+++ b/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/cuttingboard.ogf
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:691a57658121e88e7d3d495ee2c0d38ef51ceb93ae720ddddc897debf9d6f603
+size 6249
diff --git a/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/dev_guitar.ogf b/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/dev_guitar.ogf
new file mode 100644
index 00000000..f9494424
--- /dev/null
+++ b/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/dev_guitar.ogf
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:3957e26cbe5ededc0ee18fab9753033d7ca2ccc50682df01aad343dd5be2f9d6
+size 103007
diff --git a/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/documents_1.ogf b/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/documents_1.ogf
new file mode 100644
index 00000000..0936b28a
--- /dev/null
+++ b/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/documents_1.ogf
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:8e8be0426ba9fc5833698c978fae47e9b3c7310cb6163265b514494867e26f6d
+size 10522
diff --git a/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/documents_2.ogf b/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/documents_2.ogf
new file mode 100644
index 00000000..54cbad13
--- /dev/null
+++ b/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/documents_2.ogf
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:3c6b39924c5d63fb7f4ff87a919801b10c1138fb4071212d5046a11948e12775
+size 11986
diff --git a/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/exoskelet.ogf b/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/exoskelet.ogf
new file mode 100644
index 00000000..5b03ad08
--- /dev/null
+++ b/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/exoskelet.ogf
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:e18e6e7537997b7a63b716f49c35fd8c62bc830a47a3969dfba502546e3d5b8f
+size 296571
diff --git a/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/fchair.ogf b/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/fchair.ogf
new file mode 100644
index 00000000..8464c26e
--- /dev/null
+++ b/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/fchair.ogf
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:da3d3c35465d3a92d52aa0b727c4af30a4a95f0edbd7f307d8c0eb6fbd90b9fa
+size 24259
diff --git a/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/fuel.ogf b/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/fuel.ogf
new file mode 100644
index 00000000..c3c96b70
--- /dev/null
+++ b/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/fuel.ogf
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:5639f727122f0895931c35d04b461e428b4584913fa3cf79e038940d0c1d14cc
+size 36046
diff --git a/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/game.ogf b/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/game.ogf
new file mode 100644
index 00000000..bc0146e4
--- /dev/null
+++ b/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/game.ogf
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:937b701f1602b6e9a04f12b1cb5c5f2ea4a23cfe2b87474958f63581b6665357
+size 50359
diff --git a/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/gaz_balon.ogf b/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/gaz_balon.ogf
new file mode 100644
index 00000000..a13b4bbb
--- /dev/null
+++ b/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/gaz_balon.ogf
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:318c016e8ad487801895efccc7f6d755e41811d088c63b392f23b98cfa673431
+size 38225
diff --git a/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/grave1.ogf b/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/grave1.ogf
new file mode 100644
index 00000000..bd68b8cc
--- /dev/null
+++ b/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/grave1.ogf
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:3654ff56d38202575a79264dcbd09115cb76d2124fc13ba93cfa55e056b692b4
+size 23791
diff --git a/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/grave2.ogf b/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/grave2.ogf
new file mode 100644
index 00000000..552bc90d
--- /dev/null
+++ b/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/grave2.ogf
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:71c9286baf78e02df329e2f248ebdde14a6028c7dbaa068e7fd426bd41d6f28d
+size 58176
diff --git a/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/guidebook1.ogf b/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/guidebook1.ogf
new file mode 100644
index 00000000..ca131941
--- /dev/null
+++ b/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/guidebook1.ogf
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:fb45390abc97b90cf236c588dd5ff725e937e4d7b11fb9f232e8abc4c2ada62e
+size 8566
diff --git a/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/guidebook2.ogf b/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/guidebook2.ogf
new file mode 100644
index 00000000..ec4bf658
--- /dev/null
+++ b/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/guidebook2.ogf
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:6876527f5a901787aa2d5cb704e9f57a0d3458c3f06d99fee0fe08d137989d11
+size 8566
diff --git a/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/gun_parts.ogf b/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/gun_parts.ogf
new file mode 100644
index 00000000..04ab3771
--- /dev/null
+++ b/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/gun_parts.ogf
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:357f7a53e82ccf245ad580c90818c4ea92d8dade3b7792e658bdaa4382df8b95
+size 476627
diff --git a/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/junk.ogf b/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/junk.ogf
new file mode 100644
index 00000000..9dcd8b37
--- /dev/null
+++ b/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/junk.ogf
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:678295f7164457177dc255f0bd3aa0a7b36472f09c2f846a30abbc5c1d970fdd
+size 108628
diff --git a/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/kartina03.ogf b/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/kartina03.ogf
new file mode 100644
index 00000000..1fcb2cb3
--- /dev/null
+++ b/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/kartina03.ogf
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d87873ae4958c2a64419d82cd7bec02372e9b77234bb0e4fb4a8b9cca04b3da2
+size 5445
diff --git a/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/lead_box_open.ogf b/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/lead_box_open.ogf
new file mode 100644
index 00000000..2392a39d
--- /dev/null
+++ b/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/lead_box_open.ogf
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:7d65368f7002f8e080134f84e2afd8279e1aed3e73bfe3e353cc7c236c31f0ef
+size 55969
diff --git a/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/light/light_abajour_2_hirez.ogf b/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/light/light_abajour_2_hirez.ogf
new file mode 100644
index 00000000..da038f14
--- /dev/null
+++ b/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/light/light_abajour_2_hirez.ogf
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:c7e37569f5c9d951d6e0887ab765ea12446a8d5480fff3f22d813b60d9beb223
+size 156438
diff --git a/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/light/light_galogen_1_glass.ogf b/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/light/light_galogen_1_glass.ogf
new file mode 100644
index 00000000..64742026
--- /dev/null
+++ b/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/light/light_galogen_1_glass.ogf
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d722a1319d86da05c897fbd3813e942b2748cf56e916663e479355b1c1901403
+size 64638
diff --git a/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/light/light_galogen_2_glass.ogf b/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/light/light_galogen_2_glass.ogf
new file mode 100644
index 00000000..87285996
--- /dev/null
+++ b/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/light/light_galogen_2_glass.ogf
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:1eddb0f4c47fdbf051e0622d48a3b3e868907a9cbc917b8e04e3201e1e6bac24
+size 9798
diff --git a/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/light/light_illicha_1.ogf b/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/light/light_illicha_1.ogf
new file mode 100644
index 00000000..2e6e79cb
--- /dev/null
+++ b/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/light/light_illicha_1.ogf
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:1374e201040fb659364d5cff0839fc66b72debcd28b8e3b26b4b43eeb958b749
+size 34618
diff --git a/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/light/light_sharnir_1.ogf b/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/light/light_sharnir_1.ogf
new file mode 100644
index 00000000..bce287a7
--- /dev/null
+++ b/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/light/light_sharnir_1.ogf
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:557d1770322a5e617ff8631f04730019840f5abf516ca06786bc78c59a30676b
+size 59131
diff --git a/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/light/lightbulb_1.ogf b/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/light/lightbulb_1.ogf
new file mode 100644
index 00000000..13ace32e
--- /dev/null
+++ b/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/light/lightbulb_1.ogf
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:812e5061db6b91f7a565471cfa19755036b5f40779f01bd4b8933fe8f6190c77
+size 62209
diff --git a/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/light/lightbulb_2.ogf b/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/light/lightbulb_2.ogf
new file mode 100644
index 00000000..3d560cd3
--- /dev/null
+++ b/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/light/lightbulb_2.ogf
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:9caa0fca9f38d18684d0b5f139feb49ba92e4cd110b828fe5ec1d6dd6b5bbaec
+size 49766
diff --git a/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/light/projector.ogf b/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/light/projector.ogf
new file mode 100644
index 00000000..1a748997
--- /dev/null
+++ b/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/light/projector.ogf
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:e7bf9fe149bcf512cb163e884c04a9d42b084de2c0c0f3d461bf48e4bc1932b6
+size 64747
diff --git a/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/map1.ogf b/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/map1.ogf
new file mode 100644
index 00000000..61054b64
--- /dev/null
+++ b/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/map1.ogf
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:2549017afccf0dcbfda9a33f629546ca924c90bd96a94a6478fb44076a248f7d
+size 12118
diff --git a/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/map2.ogf b/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/map2.ogf
new file mode 100644
index 00000000..c91be3c7
--- /dev/null
+++ b/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/map2.ogf
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:f04917cdcba5d6154ac351237cb63622bf98139ddb825d34b4eb96e10d0f50e0
+size 908
diff --git a/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/merc_outfit.ogf b/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/merc_outfit.ogf
new file mode 100644
index 00000000..06589be2
--- /dev/null
+++ b/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/merc_outfit.ogf
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:6669061d004dffae2f29de77646bf26514c0be9ded4765c484f76a3e73e6e1b9
+size 75939
diff --git a/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/metal_table1.ogf b/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/metal_table1.ogf
new file mode 100644
index 00000000..1812b982
--- /dev/null
+++ b/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/metal_table1.ogf
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:b136a28d5cc61c354c6037e2e639a569b33d1103fb4aa8a10d2e44105f4d0ee3
+size 17873
diff --git a/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/metal_table2.ogf b/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/metal_table2.ogf
new file mode 100644
index 00000000..5a4dd310
--- /dev/null
+++ b/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/metal_table2.ogf
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:3236e3134fc1b40a54756e30fe93d0a4cbeb52d6c57317500d49f8f00c79d82a
+size 38133
diff --git a/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/microscope.ogf b/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/microscope.ogf
new file mode 100644
index 00000000..978f2a15
--- /dev/null
+++ b/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/microscope.ogf
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:fc53dbd5cea00427a4a5cd386bbd952258ae726bfdb0f72a61b450aab89a5ff4
+size 63183
diff --git a/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/money_5000.ogf b/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/money_5000.ogf
new file mode 100644
index 00000000..a91f2e57
--- /dev/null
+++ b/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/money_5000.ogf
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:1e2642c8e24a192b6601c8d7eb4c31272411bb094a6f9736a7d700f2a7642e67
+size 8767
diff --git a/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/notes_writing_book.ogf b/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/notes_writing_book.ogf
new file mode 100644
index 00000000..4a069a36
--- /dev/null
+++ b/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/notes_writing_book.ogf
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:c4eab68f2eb14601004439cba6e60e396d17b18b1830682ae8905f2bbc3a064d
+size 5148
diff --git a/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/plant2.ogf b/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/plant2.ogf
new file mode 100644
index 00000000..3d35bbfb
--- /dev/null
+++ b/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/plant2.ogf
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a706d6ec44d79bf911b44397ceef8386d1c9049b5bfe5cdecef189b0ec8a253c
+size 172374
diff --git a/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/plant3.ogf b/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/plant3.ogf
new file mode 100644
index 00000000..8dc20fb9
--- /dev/null
+++ b/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/plant3.ogf
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:e50326d09d3ae637e5d80fcb707bb9c2e5bc6730d7cc8585de65459b85f29a7f
+size 26064
diff --git a/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/plant4.ogf b/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/plant4.ogf
new file mode 100644
index 00000000..8e6d90d7
--- /dev/null
+++ b/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/plant4.ogf
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:75718f32fa90ff538be0367211bc82168c65bf5dad42fcc27bc58699725778e5
+size 29210
diff --git a/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/poster1.ogf b/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/poster1.ogf
new file mode 100644
index 00000000..3e6eefdb
--- /dev/null
+++ b/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/poster1.ogf
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:e6b1223df0226d64ce392c79d9f385cfb5837c45ea063b754bacfc7d1144e68d
+size 911
diff --git a/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/poster2.ogf b/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/poster2.ogf
new file mode 100644
index 00000000..10497f14
--- /dev/null
+++ b/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/poster2.ogf
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:8647122d51e15614496b447ebf9229dd3d8d1081a9249fffc6b7ce6e4d566122
+size 2039
diff --git a/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/poster3.ogf b/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/poster3.ogf
new file mode 100644
index 00000000..0462d0d0
--- /dev/null
+++ b/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/poster3.ogf
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:6ab09381764c7e2dda2c9321bfc7899329b57941e2ab9ac041ede227409abe52
+size 2039
diff --git a/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/poster4.ogf b/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/poster4.ogf
new file mode 100644
index 00000000..cdb7b8e6
--- /dev/null
+++ b/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/poster4.ogf
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:4ddedf97b6f8a1e27e2f365ccb806e2911eaae2cee4eb69c96e82cda6cde2915
+size 911
diff --git a/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/poster5.ogf b/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/poster5.ogf
new file mode 100644
index 00000000..f2085a8d
--- /dev/null
+++ b/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/poster5.ogf
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:1bbfa290b605bee66722752638aa5d63bda17c621f32156a2be1b3ded9c0cfaf
+size 2039
diff --git a/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/pot.ogf b/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/pot.ogf
new file mode 100644
index 00000000..d9e99783
--- /dev/null
+++ b/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/pot.ogf
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:851b89399d2fe06be6c37d0d36b0619d0ef464e9a6ec5c255c3dd85e69e32d5d
+size 39888
diff --git a/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/psi_helmet.ogf b/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/psi_helmet.ogf
new file mode 100644
index 00000000..01aa9add
--- /dev/null
+++ b/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/psi_helmet.ogf
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:5ffba7a9a5f3387c5fd8660f4bca743470d0eb9789e32612574644ec615ccf3b
+size 151591
diff --git a/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/radiola.ogf b/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/radiola.ogf
new file mode 100644
index 00000000..b5038a75
--- /dev/null
+++ b/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/radiola.ogf
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:589f2ca0fbe2d224b4b1497e66cce7904479cc8d54151e78cafe41bf48a23082
+size 26412
diff --git a/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/rug.ogf b/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/rug.ogf
new file mode 100644
index 00000000..b02b944e
--- /dev/null
+++ b/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/rug.ogf
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:6065659ce1e03c22310510859a3fd9cfbe5469a8388cf4e3bbc09e74ffe15a7d
+size 5266
diff --git a/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/shelves.ogf b/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/shelves.ogf
new file mode 100644
index 00000000..c7234a4c
--- /dev/null
+++ b/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/shelves.ogf
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:cc93bb8627197ec550b9f3e546b7f2f623fbf9207cb660782d1caf9a7b556362
+size 57181
diff --git a/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/shelves_b.ogf b/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/shelves_b.ogf
new file mode 100644
index 00000000..c19369e8
--- /dev/null
+++ b/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/shelves_b.ogf
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:abb1fc311c3f1997bda78fd07d255a4824dca8ed431f65775d614d8aa0f9ed8c
+size 26253
diff --git a/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/shooting_target_1.ogf b/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/shooting_target_1.ogf
new file mode 100644
index 00000000..ecaf8235
--- /dev/null
+++ b/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/shooting_target_1.ogf
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:4f9c4f700200a930f5373a4d3f28564c8c0e5db66cbce4bdc549ecad55a454b1
+size 73690
diff --git a/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/sidetable1.ogf b/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/sidetable1.ogf
new file mode 100644
index 00000000..7788f8f6
--- /dev/null
+++ b/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/sidetable1.ogf
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:991889cd3a68bb9054a5b4ed9ef70c00257de3911ca0f87ea40984e3cb0ccef4
+size 17049
diff --git a/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/sidetable2.ogf b/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/sidetable2.ogf
new file mode 100644
index 00000000..0ab71974
--- /dev/null
+++ b/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/sidetable2.ogf
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:8609179530a31e16f2868cade488c8a23cb113e840dc168096177ea793e9e8a0
+size 17745
diff --git a/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/sink.ogf b/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/sink.ogf
new file mode 100644
index 00000000..95144866
--- /dev/null
+++ b/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/sink.ogf
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:c5ce873b1edef6600fb3bb43e12d0b04581419cc27d71e68d51da89e971e4141
+size 52403
diff --git a/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/stalker_outfit.ogf b/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/stalker_outfit.ogf
new file mode 100644
index 00000000..eeb7edd0
--- /dev/null
+++ b/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/stalker_outfit.ogf
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:b4015d30a99dd18cd5f54bf9fe81b6d9504affa57eefce6cccab78674f857ffc
+size 75988
diff --git a/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/stool.ogf b/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/stool.ogf
new file mode 100644
index 00000000..f4cd7d76
--- /dev/null
+++ b/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/stool.ogf
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:9f168a318b6f0528a6edbd19915b2a573ffa39e78147a8e24b087bdd03f636c8
+size 21763
diff --git a/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/stretcher.ogf b/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/stretcher.ogf
new file mode 100644
index 00000000..2ff4a5b9
--- /dev/null
+++ b/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/stretcher.ogf
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:6d0876439867d2f2e72c8b2469a5f25b08c46214684941944a39af25db7eb780
+size 242908
diff --git a/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/suit.ogf b/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/suit.ogf
new file mode 100644
index 00000000..f6edc9d0
--- /dev/null
+++ b/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/suit.ogf
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:cf042dac467979c1e712b1ad0afa850b0b8e394a4c091956b5736aa95900856b
+size 67792
diff --git a/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/survivalguide.ogf b/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/survivalguide.ogf
new file mode 100644
index 00000000..1da637e8
--- /dev/null
+++ b/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/survivalguide.ogf
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:b2fde27df742c5f60bf6679e65275b85bef58355cffb6612b527ab224eac1c87
+size 3435
diff --git a/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/teapot.ogf b/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/teapot.ogf
new file mode 100644
index 00000000..a4984208
--- /dev/null
+++ b/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/teapot.ogf
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:2f7f7440e6edea1cafeb03ebdae007f9a390186146d30dcfa2fb13fd9b989ea8
+size 35991
diff --git a/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/trophie1.ogf b/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/trophie1.ogf
new file mode 100644
index 00000000..83a3530f
--- /dev/null
+++ b/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/trophie1.ogf
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:002effd92305a9258d6d23beb4d447455cfe11ed0220e937cc4ecd805d8793fe
+size 74515
diff --git a/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/trophie2.ogf b/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/trophie2.ogf
new file mode 100644
index 00000000..725d8b58
--- /dev/null
+++ b/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/trophie2.ogf
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:fed204273b05ceebfc2b8f41f2e5276b62543ed01528d8b051676a64b94a028c
+size 79952
diff --git a/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/trophie3.ogf b/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/trophie3.ogf
new file mode 100644
index 00000000..7220650e
--- /dev/null
+++ b/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/trophie3.ogf
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:cfeaa3f875663eb230222466390a717f9a6d127753c708ccd4646adae0bd4858
+size 157078
diff --git a/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/trophie4.ogf b/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/trophie4.ogf
new file mode 100644
index 00000000..410d09e2
--- /dev/null
+++ b/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/trophie4.ogf
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:ccefc66d2e9a4efc91fc3fe82e0ced0eb591f532be3b547696f3fb2b52682064
+size 107884
diff --git a/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/trophie5.ogf b/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/trophie5.ogf
new file mode 100644
index 00000000..9a82477b
--- /dev/null
+++ b/mods/Even More Hideout Furniture/gamedata/meshes/dynamics/Decor/trophie5.ogf
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:26cec33289dde28cccf19de4af6aeae1b0b38f654f9311b0e6faccb911420875
+size 71445
diff --git a/mods/Even More Hideout Furniture/gamedata/textures/items/505.dds b/mods/Even More Hideout Furniture/gamedata/textures/items/505.dds
new file mode 100644
index 00000000..7c212bbc
--- /dev/null
+++ b/mods/Even More Hideout Furniture/gamedata/textures/items/505.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:ad4d3c20f8f62588b14e7d8777accac9c8ea7db13980a6ba0eb37ed458cfb85e
+size 1398256
diff --git a/mods/Even More Hideout Furniture/gamedata/textures/items/frame.dds b/mods/Even More Hideout Furniture/gamedata/textures/items/frame.dds
new file mode 100644
index 00000000..bd965800
--- /dev/null
+++ b/mods/Even More Hideout Furniture/gamedata/textures/items/frame.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:5980e82be6ddf521c09d0ee96378ad74e97ed1a2fe331b534a145f7fee293445
+size 87536
diff --git a/mods/Even More Hideout Furniture/gamedata/textures/items/plants.dds b/mods/Even More Hideout Furniture/gamedata/textures/items/plants.dds
new file mode 100644
index 00000000..963f3def
--- /dev/null
+++ b/mods/Even More Hideout Furniture/gamedata/textures/items/plants.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:e3c3da8388f20e4384fd47c033ad4dc6dd267a87cb08dd7c875ba719d2b44277
+size 5592560
diff --git a/mods/Even More Hideout Furniture/gamedata/textures/items/poster1.dds b/mods/Even More Hideout Furniture/gamedata/textures/items/poster1.dds
new file mode 100644
index 00000000..34d75f33
--- /dev/null
+++ b/mods/Even More Hideout Furniture/gamedata/textures/items/poster1.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:bb661300fdacfafa6167ac22715dcc70583e8bf09a353ab324845653791e0180
+size 2796344
diff --git a/mods/Even More Hideout Furniture/gamedata/textures/items/poster2.dds b/mods/Even More Hideout Furniture/gamedata/textures/items/poster2.dds
new file mode 100644
index 00000000..f0ca50db
--- /dev/null
+++ b/mods/Even More Hideout Furniture/gamedata/textures/items/poster2.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:2d95b56fac80d810c4ae2c9904831d271a34679936ddf9cd3acedd3c557a4dd4
+size 87536
diff --git a/mods/Even More Hideout Furniture/gamedata/textures/items/poster3.dds b/mods/Even More Hideout Furniture/gamedata/textures/items/poster3.dds
new file mode 100644
index 00000000..24d08beb
--- /dev/null
+++ b/mods/Even More Hideout Furniture/gamedata/textures/items/poster3.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:02de2f52e2664c9a88f67652a3f323b4959c4cb155040f54ea07ba6ccb91c60e
+size 87536
diff --git a/mods/Even More Hideout Furniture/gamedata/textures/items/poster4.dds b/mods/Even More Hideout Furniture/gamedata/textures/items/poster4.dds
new file mode 100644
index 00000000..713889f1
--- /dev/null
+++ b/mods/Even More Hideout Furniture/gamedata/textures/items/poster4.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:1e0981f9ec65aef5ee5edef664fda331be1b0ddbedb6456ae2ab2a8dddcd5952
+size 699192
diff --git a/mods/Even More Hideout Furniture/gamedata/textures/items/poster5.dds b/mods/Even More Hideout Furniture/gamedata/textures/items/poster5.dds
new file mode 100644
index 00000000..f251bfba
--- /dev/null
+++ b/mods/Even More Hideout Furniture/gamedata/textures/items/poster5.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:9ed9652167c27ba2c1b2bd8328b5faa896117c78f8cb97f45683d4e5bd63e356
+size 87536
diff --git a/mods/Even More Hideout Furniture/gamedata/textures/ui/ui_decor.dds b/mods/Even More Hideout Furniture/gamedata/textures/ui/ui_decor.dds
new file mode 100644
index 00000000..2742df0c
--- /dev/null
+++ b/mods/Even More Hideout Furniture/gamedata/textures/ui/ui_decor.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:44b90abe2ef5cb85035a8b0c9d9f4351aede21a706b0c3e0b0b75d07e9caad14
+size 1000128
diff --git a/mods/Mutant Loot Chance_backup/meta.ini b/mods/Even More Hideout Furniture/meta.ini
similarity index 76%
rename from mods/Mutant Loot Chance_backup/meta.ini
rename to mods/Even More Hideout Furniture/meta.ini
index 9fa8dcff..a2059fd8 100644
--- a/mods/Mutant Loot Chance_backup/meta.ini
+++ b/mods/Even More Hideout Furniture/meta.ini
@@ -1,11 +1,11 @@
[General]
gameName=stalkeranomaly
modid=0
-version=d2024.3.30.0
+version=d2024.4.4.0
newestVersion=
category="-1,"
nexusFileStatus=1
-installationFile=Mutant_Loot_Chance_MCM_Config.1.zip
+installationFile=Even_More_Hideout_Furniture.7z
repository=Nexus
ignoredVersion=
comments=
@@ -15,7 +15,7 @@ url=
hasCustomURL=true
lastNexusQuery=
lastNexusUpdate=
-nexusLastModified=2024-03-30T09:03:17Z
+nexusLastModified=2024-04-04T22:10:49Z
nexusCategory=0
converted=false
validated=false
diff --git a/mods/Extra Level Transitions - Bonus Transitions/ReadMeExtraTransitions.txt b/mods/Extra Level Transitions - Bonus Transitions/ReadMeExtraTransitions.txt
deleted file mode 100644
index 35d479a8..00000000
--- a/mods/Extra Level Transitions - Bonus Transitions/ReadMeExtraTransitions.txt
+++ /dev/null
@@ -1,37 +0,0 @@
-Extra Level Transitions - Bonus Transitions + Transitions for new maps Promzone, Grimwood & Yushniy
-
-This is a set of new coordinates for extra transition points using Demonized's transition script (https://www.moddb.com/mods/stalker-anomaly/addons/extra-cordon-darkscape-transition).
- -> needs be loaded with lower PRIORITY in MO2 than the new extra transitions.
-
-It adds most of the available routes from the "New routes" mod (https://www.moddb.com/mods/stalker-anomaly/addons/anomaly-new-routes) but using Demonized's transition script.
-I left out the Radar <-> Jupiter UG route.
- -> whereas it wont show you conflicts, this mod and the new extra routes are highly incompatible
-
-Also included is the "Extra level transitions - Rostok to Garbage and Yantar facing fix" mod (https://www.moddb.com/mods/stalker-anomaly/addons/extra-level-transitions-rostok-to-garbage-and-yantar-facing-fix).
- -> disable in Mo2.
-
-All extra routes will be available for free and can be used on game start.
-
-
-MCM is strongly suggested to easily access the remove/update function for the new transitions.
-
-
-Install: (Mod Organizer2 is suggested)
-
-- drop included /gamedata folder into Anomaly root folder
-
-Uninstall:
-
-- to disable the new transition 1st use the attached MCM menu provided by Demonized to delete the transition
-- remove files with the name "items_extra_level_transitions_*.ltx" from \gamedata\configs\items\items
-- remove lc_extra_transitions.script & txr_routes.script from \gamedata\scripts
-
-*Configuration:
-
-Each of the new transitions can be disabled by simply commenting it out in the corresponding *.ltx file. You need to do this from outside of the game tho
-E.g. you don't like the upper transition between Red Forest <-> Dead City then you'd find the "items_extra_level_transitions_deadcity.ltx" and disable (comment out) everything related to !one! transition point. You disable lines by putting a " ; " infront of the line.
-The transition between Dead City to Red Forest via the sewer pipe is disabled, in case you want to make it go to Red Forest again (like in New Routes mod) you can do this by re-enabling the transition and disabling the transition from Dead city to yantar in the config file for Yantar. The transition zones should be apptly named and easily identifyable.
-
-
-
-Credits: Demonized, AlphaLion, Cpt. Gunner, GhenTuong, Jurkonov, Qball, Solais, xcvb, TheSmersh
\ No newline at end of file
diff --git a/mods/HUD Icons Time/gamedata/scripts/actor_status.script b/mods/HUD Icons Time/gamedata/scripts/actor_status.script
new file mode 100644
index 00000000..c1d9a7d7
--- /dev/null
+++ b/mods/HUD Icons Time/gamedata/scripts/actor_status.script
@@ -0,0 +1,504 @@
+
+--[[
+
+ Tronex
+ 2020/4/9
+
+ Actor status / info - Handly for checking actor related info like current safe cover by other scripts
+ Custom HUD indicators
+
+--]]
+
+-- Update rate
+local tg_update = 0
+local tg_update_step = 1000 --[ms]
+
+----------------------------------
+-- Current Boosters and states
+----------------------------------
+local active_boosters = {}
+local boost_name = {}
+function prepare_boosters_effect()
+ boost_name = invert_table(BoosterID)
+end
+function scan_boosters_effect()
+ for name,t in pairs(active_boosters) do
+ t.value = nil
+ t.period = nil
+ end
+ db.actor:cast_Actor():conditions():BoosterForEach( scan_current_booster_effect )
+end
+function scan_current_booster_effect(typ, period, value)
+ active_boosters[ boost_name[typ] ] = { value=value , period=period }
+end
+
+function get_boost(name, time_only)
+ if time_only then
+ return active_boosters[name] and active_boosters[name].period
+ end
+ return active_boosters[name] and active_boosters[name].value
+end
+
+function get_satienty(visual)
+ local conditions = db.actor:cast_Actor():conditions()
+ local satienty = conditions:GetSatiety()
+ if (not visual) then
+ return satienty
+ end
+
+ local satiety_critical = conditions:SatietyCritical()
+ local satiety_koef = (satienty - satiety_critical) / (satienty >= satiety_critical and (1 - satiety_critical) or satiety_critical)
+ if (satiety_koef > 0.5) then
+ return 0
+ else
+ if (satiety_koef > 0.0) then
+ return 1
+ elseif (satiety_koef > -0.5) then
+ return 2
+ else
+ return 4
+ end
+ end
+end
+
+function get_radiation(visual)
+ local radiation = db.actor.radiation
+ if (not visual) then
+ return radiation
+ end
+
+ -- for indicator
+ if radiation and radiation > 0 then
+ return math.ceil(radiation * 4)
+ end
+ return 0
+end
+
+function get_overweight(visual)
+ local actor = db.actor
+ local tot_weight = actor:get_total_weight()
+ local max_weight = actor:get_actor_max_walk_weight()
+
+ local outfit = actor:item_in_slot(7)
+ local backpack = actor:item_in_slot(13)
+ max_weight = max_weight + (outfit and outfit:get_additional_max_weight() or 0)
+ max_weight = max_weight + (backpack and backpack:get_additional_max_weight() or 0)
+ actor:iterate_belt( function(owner, obj)
+ local c_arty = obj:cast_Artefact()
+ max_weight = max_weight + (c_arty and c_arty:AdditionalInventoryWeight() or 0)
+ end)
+ --max_weight = max_weight + actor:cast_Actor():conditions().eBoostMaxWeight
+
+ if (not visual) then
+ return (tot_weight > max_weight), tot_weight, max_weight
+ end
+
+ -- for indicator
+ if (tot_weight > max_weight) then
+ return 4
+ elseif (tot_weight + 10 > max_weight) then
+ return 2
+ end
+ return 0
+end
+
+
+----------------------------------
+-- Current safe cover
+----------------------------------
+local safe_covers = {}
+local near_cover_dist
+local last_cover, last_cover_2, near_cover
+local last_cover_o, near_cover_o
+
+function prepare_safe_zone()
+ local sur_ini = ini_file("misc\\surge_manager.ltx")
+ local safe_covers_list = utils_data.collect_section(sur_ini,"list",true)
+
+ -- Only collect safe covers in the same level
+ local sim = alife()
+ local is_on_the_actor_level = simulation_objects.is_on_the_actor_level
+ for i=1, 65534 do
+ local se_obj = sim:object(i)
+ if se_obj and safe_covers_list[se_obj:name()] and is_on_the_actor_level(se_obj) then
+ safe_covers[se_obj:name()] = se_obj.id
+ end
+ end
+end
+function scan_safe_zone()
+ --printf("Safe cover: %s", GetEvent("current_safe_cover"))
+ if GetEvent("underground") then
+ return true, false, 0
+
+ elseif last_cover and db.actor_inside_zones[last_cover] then
+ return db.actor_inside_zones[last_cover]:id(), false, 1
+
+ elseif last_cover_2 and db.zone_by_name[last_cover_2] and db.zone_by_name[last_cover_2]:inside(db.actor:position()) then
+ return safe_covers[last_cover_2], false, 2
+
+ elseif (size_table(db.actor_inside_zones) > 1) then
+ for name, obj in pairs(db.actor_inside_zones) do
+ last_cover = name
+ return obj:id(), false, 3
+ end
+
+ else
+
+ local pos = db.actor:position()
+ last_cover = nil
+ last_cover_2 = nil
+ near_cover = nil
+ near_cover_dist = nil
+
+ for name,id in pairs(safe_covers) do
+ local zone = db.zone_by_name[name]
+ if (zone) then
+ local dist = zone:position():distance_to_sqr(pos)
+ if (near_cover_dist == nil or dist < near_cover_dist) then
+ near_cover = name
+ near_cover_dist = dist
+ end
+ end
+ end
+
+ if near_cover then
+ local zone = db.zone_by_name[near_cover]
+ if (zone) and zone:inside(pos) then
+ last_cover_2 = near_cover
+ return zone:id(), false, 4
+ end
+ end
+
+ -- Tents are considered as save covers
+ if item_tent and item_tent.get_nearby_tent(1.5) then
+ return true, near_cover and safe_covers[near_cover] or false, 5
+ end
+
+ return false, near_cover and safe_covers[near_cover] or false, 6
+ end
+end
+function scan_safe_zone_old()
+ --printf("Safe cover: %s", GetEvent("current_safe_cover"))
+ if GetEvent("underground") then
+ return true, false, 0
+
+ elseif last_cover_o and db.zone_by_name[last_cover_o] and db.zone_by_name[last_cover_o]:inside(db.actor:position()) then
+ return safe_covers[last_cover_o], false, 2
+
+ else
+
+ local pos = db.actor:position()
+ last_cover_o = nil
+ near_cover_o = nil
+ near_cover_dist = nil
+
+ for name,id in pairs(safe_covers) do
+ local zone = db.zone_by_name[name]
+ if (zone) then
+ local dist = zone:position():distance_to_sqr(pos)
+ if (near_cover_dist == nil or dist < near_cover_dist) then
+ near_cover_o = name
+ near_cover_dist = dist
+ end
+ end
+ end
+
+ if near_cover_o then
+ local zone = db.zone_by_name[near_cover_o]
+ if (zone) and zone:inside(pos) then
+ last_cover_o = near_cover_o
+ return zone:id(), false, 4
+ end
+ end
+
+ -- Tents are considered as save covers
+ if item_tent and item_tent.get_nearby_tent(1.5) then
+ return true, near_cover_o and safe_covers[near_cover_o] or false, 5
+ end
+
+ return false, near_cover_o and safe_covers[near_cover_o] or false, 6
+ end
+end
+
+----------------------------------
+-- HUD (Indicators)
+----------------------------------
+
+HUD = nil
+indicators = {}
+
+function prepare_indictors_list()
+-- functor must return number [1-4] if it's a state (to indicate the color), boosters will always use one color
+
+ if is_not_empty(indicators) then return end
+ indicators["Radiation"] = { index= 1 ,typ= "state" ,functor= {"actor_status","get_radiation",true} ,icon= "ui_inGame2_booster_rad" ,background= "ui_inGame2_indicator_slot" ,anim_icon= true ,anim_bk= false }
+ indicators["Hunger"] = { index= 2 ,typ= "state" ,functor= {"actor_status","get_satienty",true} ,icon= "ui_inGame2_indicator_hunger" ,background= "ui_inGame2_indicator_slot" ,anim_icon= false ,anim_bk= false }
+ indicators["Overweight"] = { index= 5 ,typ= "state" ,functor= {"actor_status","get_overweight",true} ,icon= "ui_inGame2_indicator_overweight" ,background= "ui_inGame2_indicator_slot" ,anim_icon= false ,anim_bk= false }
+
+ indicators["HpRestore"] = { index= 6 ,typ= "booster" ,functor= {"actor_status","get_boost","HpRestore",true} ,icon= "ui_inGame2_booster_health" ,background= "ui_inGame2_booster_slot" ,anim_icon= false ,anim_bk= false ,anim_period= 5 }
+ indicators["BleedingRestore"] = { index= 7 ,typ= "booster" ,functor= {"actor_status","get_boost","BleedingRestore",true} ,icon= "ui_inGame2_booster_bleed" ,background= "ui_inGame2_booster_slot" ,anim_icon= false ,anim_bk= false ,anim_period= 5 }
+ indicators["RadiationRestore"] = { index= 8 ,typ= "booster" ,functor= {"actor_status","get_boost","RadiationRestore",true} ,icon= "ui_inGame2_booster_rad" ,background= "ui_inGame2_booster_slot" ,anim_icon= false ,anim_bk= false ,anim_period= 5 }
+ indicators["MaxWeight"] = { index= 9 ,typ= "booster" ,functor= {"actor_status","get_boost","MaxWeight",true} ,icon= "ui_inGame2_booster_carry_weight" ,background= "ui_inGame2_booster_slot" ,anim_icon= false ,anim_bk= false ,anim_period= 5 }
+ indicators["PowerRestore"] = { index= 10 ,typ= "booster" ,functor= {"actor_status","get_boost","PowerRestore",true} ,icon= "ui_inGame2_booster_power" ,background= "ui_inGame2_booster_slot" ,anim_icon= false ,anim_bk= false ,anim_period= 5 }
+ indicators["RadiationProtection"] = { index= 11 ,typ= "booster" ,functor= {"actor_status","get_boost","RadiationProtection",true} ,icon= "ui_inGame2_booster_ext_rad" ,background= "ui_inGame2_booster_slot" ,anim_icon= false ,anim_bk= false ,anim_period= 5 }
+ indicators["TelepaticProtection"] = { index= 12 ,typ= "booster" ,functor= {"actor_status","get_boost","TelepaticProtection",true} ,icon= "ui_inGame2_booster_psi" ,background= "ui_inGame2_booster_slot" ,anim_icon= false ,anim_bk= false ,anim_period= 5 }
+ indicators["ChemicalBurnProtection"] = { index= 13 ,typ= "booster" ,functor= {"actor_status","get_boost","ChemicalBurnProtection",true} ,icon= "ui_inGame2_booster_chem" ,background= "ui_inGame2_booster_slot" ,anim_icon= false ,anim_bk= false ,anim_period= 5 }
+end
+
+function add_indicator(k,v)
+ prepare_indictors_list()
+ indicators[k] = v
+end
+
+function func_index(t,a,b)
+ return (t[a].index) < (t[b].index)
+end
+
+-------
+function activate_hud()
+ RegisterScriptCallback("actor_on_net_destroy",actor_on_net_destroy)
+ RegisterScriptCallback("on_console_execute",on_console_execute)
+ RegisterScriptCallback("GUI_on_show",update_hud)
+ RegisterScriptCallback("GUI_on_hide",update_hud)
+
+ if HUD == nil then
+ HUD = UIIndicators()
+ get_hud():AddDialogToRender(HUD)
+ end
+ HUD:Update(true)
+end
+
+function deactivate_hud()
+ if HUD ~= nil then
+ get_hud():RemoveDialogToRender(HUD)
+ HUD = nil
+ end
+
+ UnregisterScriptCallback("actor_on_net_destroy",actor_on_net_destroy)
+ UnregisterScriptCallback("on_console_execute",on_console_execute)
+ UnregisterScriptCallback("GUI_on_show",update_hud)
+ UnregisterScriptCallback("GUI_on_hide",update_hud)
+end
+
+function update_hud()
+ if HUD ~= nil then
+ HUD:Update(true)
+ end
+end
+
+function actor_on_net_destroy()
+ if HUD ~= nil then
+ get_hud():RemoveDialogToRender(HUD)
+ HUD = nil
+ end
+end
+
+function on_console_execute(name)
+ if name == "hud_draw" and HUD then
+ HUD:Update(true)
+ end
+end
+
+-------
+class "UIIndicators" (CUIScriptWnd)
+
+function UIIndicators:__init() super()
+
+ self.mirrored = false
+ self.slot = {}
+ self.clr_list = {
+ [0] = GetARGB(255,255,255,255), -- white
+ [1] = GetARGB(255,200,200,200), -- grey
+ [2] = GetARGB(255,255,255,50), -- yellow
+ [3] = GetARGB(255,255,125,50), -- orange
+ [4] = GetARGB(255,255,50,50), -- red
+ }
+
+ self.ratio = utils_xml.screen_ratio()
+ self._tmr = time_global()
+ self.index = 0
+ self.W = 40
+ self.offset = 10
+
+ prepare_indictors_list()
+
+ self:InitControls()
+end
+
+function UIIndicators:__finalize()
+end
+
+function UIIndicators:InitControls()
+ local xml = utils_xml.get_hud_xml()
+ local time_xml = CScriptXmlInit()
+ time_xml:ParseFile("actor_menu.xml")
+
+ self.dialog = xml:InitStatic("indicators", self)
+ --utils_xml.correct_ratio(self.dialog)
+ self.dialog:Show(false)
+
+ local t_size = size_table(indicators)
+ for i=1,t_size do
+ local x = (i-1)*(self.W + self.offset)
+ if self.mirrored then
+ x = (1-i)*(self.W + self.offset)
+ end
+
+ self.slot[i] = {}
+ self.slot[i].back_s = xml:InitStatic("indicators:static", self.dialog)
+ self.slot[i].back_f = xml:InitStatic("indicators:flashing", self.dialog)
+ self.slot[i].icon_s = xml:InitStatic("indicators:static", self.dialog)
+ self.slot[i].icon_f = xml:InitStatic("indicators:flashing", self.dialog)
+
+ -- xcvb boost time
+ self.slot[i].xcvb_time = time_xml:InitTextWnd("quick_slot3_text", self)
+ local dialog_pos = self.dialog:GetWndPos()
+ --------------------
+
+ for k, ele in pairs(self.slot[i]) do
+ ele:SetWndPos( vector2():set( x , 0 ) )
+ utils_xml.correct_ratio(ele)
+ end
+
+ -- xcvb boost time
+ local icon_pos = self.slot[i].icon_f:GetWndPos()
+ local text_x_pos = dialog_pos.x + icon_pos.x
+ local text_y_pos = dialog_pos.y + icon_pos.y - 15
+ self.slot[i].xcvb_time:SetWndPos(vector2():set( text_x_pos, text_y_pos ))
+
+ local icon_width = self.slot[i].icon_f:GetWidth()
+ local self_height = self.slot[i].xcvb_time:GetHeight()
+ self.slot[i].xcvb_time:SetWndSize(vector2():set(icon_width, self_height))
+ self.slot[i].xcvb_time:SetText("")
+ ---------------------
+
+ end
+end
+
+function UIIndicators:Clear()
+ for i=1,size_table(indicators) do
+ if self.slot[i] then
+ for k, ele in pairs(self.slot[i]) do
+ ele:Show(false)
+ end
+ end
+ end
+ self.index = 0
+end
+
+function UIIndicators:Update(force)
+ CUIScriptWnd.Update(self)
+
+ local tg = time_global()
+ if force then
+ self._tmr = tg - 1
+ end
+ if self._tmr >= tg then
+ return
+ else
+ self._tmr = tg + 1000
+ end
+
+ -- Clear all
+ self:Clear()
+
+ -- Hide HUD when it's occupied by a GUI class
+ if not main_hud_shown() then
+ return
+ end
+
+ -- Gather info
+ for name,t in spairs(indicators, func_index) do
+ local value = t.functor and execute_func(unpack(t.functor))
+
+ -- Determine if we should show the indicator on HUD according to type and value
+ local pass = false
+ if t.typ == "state" then
+ pass = value and value <= 4 and value >= 1
+ elseif t.typ == "booster" then
+ pass = value and true or false
+ end
+
+ if pass then
+ local i = self.index + 1
+
+ if t.icon then
+ local ico
+ if t.anim_period and (t.typ == "booster") and (value < t.anim_period) then
+ ico = self.slot[i].icon_f
+ else
+ ico = t.anim_icon and self.slot[i].icon_f or self.slot[i].icon_s
+ end
+
+ ico:InitTexture( t.icon )
+ ico:Show(true)
+
+ -- xcvb boost time
+ local show_time
+ db.actor:cast_Actor():conditions():BoosterForEach( function(boost_typ, boost_time, boost_val)
+ if name == boost_name[boost_typ] then
+ show_time = math.ceil(boost_time)
+ end
+ end)
+
+ if self.slot[i].xcvb_time then
+ self.slot[i].xcvb_time:Show(show_time and true or false)
+ self.slot[i].xcvb_time:SetText(show_time or "")
+ end
+ -----------------------
+ end
+
+ if t.background then
+ local bk
+ if t.anim_period and (t.typ == "booster") and (value < t.anim_period) then
+ bk = self.slot[i].back_f
+ else
+ bk = t.anim_bk and self.slot[i].back_f or self.slot[i].back_s
+ end
+
+ bk:InitTexture( t.background )
+ bk:SetTextureColor( t.typ == "state" and self.clr_list[value] or self.clr_list[0] )
+ bk:Show(true)
+ end
+
+ self.index = i
+ end
+ end
+
+ self.dialog:Show(self.index > 0)
+end
+
+
+----------------------------------
+-- Callbacks
+----------------------------------
+
+local function actor_on_first_update()
+ prepare_boosters_effect()
+ prepare_safe_zone()
+
+ activate_hud()
+end
+
+local function actor_on_update()
+
+ local tg = time_global()
+ if tg < tg_update then
+ return
+ end
+ tg_update = tg + tg_update_step
+
+ --local cover_curr, cover_near, num = scan_safe_zone()
+ local cover_curr, cover_near, num = scan_safe_zone_old()
+ --actor_menu.set_msg(nil, strformat("cover_curr: %s | cover_near: %s | num: %s", cover_curr, cover_near, num))
+ --printf("cover_curr: %s | cover_near: %s | num: %s", cover_curr, cover_near, num)
+ SetEvent("current_safe_cover", cover_curr)
+ SetEvent("nearest_safe_cover", cover_near)
+
+ scan_boosters_effect()
+end
+
+function on_game_start()
+ RegisterScriptCallback("actor_on_first_update",actor_on_first_update)
+ RegisterScriptCallback("actor_on_update",actor_on_update)
+end
diff --git a/mods/Anomaly Ballistics Overhaul/meta.ini b/mods/HUD Icons Time/meta.ini
similarity index 74%
rename from mods/Anomaly Ballistics Overhaul/meta.ini
rename to mods/HUD Icons Time/meta.ini
index 12f2cbc3..87ee804d 100644
--- a/mods/Anomaly Ballistics Overhaul/meta.ini
+++ b/mods/HUD Icons Time/meta.ini
@@ -1,11 +1,11 @@
[General]
gameName=stalkeranomaly
modid=0
-version=1.0.0.0
+version=d2024.4.4.0
newestVersion=
-category="10,"
+category="-1,"
nexusFileStatus=1
-installationFile=anomaly-ballistics.2024.02.19.zip
+installationFile=HUD_icons_time_0.zip
repository=Nexus
ignoredVersion=
comments=
@@ -15,7 +15,7 @@ url=
hasCustomURL=true
lastNexusQuery=
lastNexusUpdate=
-nexusLastModified=2024-03-01T03:25:33Z
+nexusLastModified=2024-04-05T03:51:15Z
nexusCategory=0
converted=false
validated=false
diff --git a/mods/Hideout Furniture Preview Gizmo/gamedata/scripts/aol_bshape.script b/mods/Hideout Furniture Preview Gizmo/gamedata/scripts/aol_bshape.script
new file mode 100644
index 00000000..68c472a7
--- /dev/null
+++ b/mods/Hideout Furniture Preview Gizmo/gamedata/scripts/aol_bshape.script
@@ -0,0 +1,207 @@
+last_gizmo_id = 696969
+color_colliding = fcolor():set(1,0,0,1)
+color_not_colliding = fcolor():set(0,1,0,1)
+
+-- Generic Class for handling collisions with a bounding shape
+-- supposed to be subclassed into a useful shape (see aol_bbox)
+class "bshape_collider"
+
+function bshape_collider:__init(world_origin, local_origin, rotation)
+ -- Coordinates of the origin in local space (relative to self.vertices)
+ self.local_origin = local_origin or vector():set(0,0,0)
+
+ -- Coordinates of the entire box's origin in world space (relative to game map)
+ self.world_origin = world_origin or vector():set(0,0,0)
+
+ self.rotation = rotation
+
+ self.is_colliding = false
+
+ -- Coordinates of bbox's vertices in local space
+ self.vertices = {}
+
+ -- Coordinates of bbox vertices in world space
+ self.world_vertices = {}
+
+ -- Pairs of vertices to perform raycasting between
+ self.ray_pairs = {}
+
+ -- Map of ray pair index to it's length
+ self.ray_pair_i2length = {}
+end
+
+function bshape_collider:UpdateBBox()
+ -- Get position of vertices in bounding box in world space
+ for i, local_vertex in ipairs(self.vertices) do
+ -- local space
+ local position = vector():set(local_vertex.x, local_vertex.y, local_vertex.z)
+
+ -- rotate with quaternion
+ if self.rotation then
+ position = self.rotation:rotate_vector(position)
+ end
+
+ -- world space
+ position = position:add(self.world_origin)
+
+ -- store vertices coordinates in world space of bbox
+ self.world_vertices[i] = position
+ end
+end
+
+function bshape_collider:UpdateLengths()
+ for i, ray_pair in ipairs(self.ray_pairs) do
+ local v1 = self.world_vertices[ray_pair[1]]
+ local v2 = self.world_vertices[ray_pair[2]]
+
+ local length = v1:distance_to(v2)
+ self.ray_pair_i2length[i] = length
+ end
+end
+
+function bshape_collider:CheckForCollisions()
+ -- Check for collisions by ray casting between vertex pairs
+ -- Pairs are specified in ray_pairs
+ -- Ray cast in both directions in case the ray goes into the world (rays only register collisions when hitting onto a normal plane)
+ local collision_found = false
+ for i, ray_pair in ipairs(self.ray_pairs) do
+ -- Exit early if there is no collision
+ if not collision_found then
+ local ray_length = self.ray_pair_i2length[i]
+ local ray = demonized_geometry_ray.geometry_ray({
+ ray_range=4,
+ contact_range=ray_length,
+ flags=(1+2)})
+ local ray_direction = vec_sub(self.world_vertices[ray_pair[1]], self.world_vertices[ray_pair[2]])
+ ray_direction = ray_direction:normalize()
+
+ -- Perform raycasts
+ local ray_result_rev = ray:get(vec_set(self.world_vertices[ray_pair[1]]), vec_set(ray_direction):invert())
+ local ray_result = ray:get(vec_set(self.world_vertices[ray_pair[2]]), vec_set(ray_direction))
+
+ if ray_result.in_contact or ray_result_rev.in_contact then
+ collision_found = true
+ end
+ end
+ end
+
+ self.is_colliding = collision_found
+
+ return collision_found
+end
+
+-- Setters
+
+function bshape_collider:SetLocalOrigin(new_pos)
+ self.local_origin = vec_set(new_pos)
+
+ -- update vertices of bbox in local space
+ self:UpdateVertices()
+
+ self:UpdateBBox()
+end
+
+function bshape_collider:SetWorldOrigin(new_pos)
+ self.world_origin = vec_set(new_pos)
+end
+
+-- Functions to be completed by subclasses
+
+function bshape_collider:UpdateVertices()
+end
+
+
+
+-- Class for rendering bounding boxes with particles
+class "bshape_renderer"
+
+function bshape_renderer:__init()
+ self.particles = {}
+ self.gizmos = nil
+end
+
+function bshape_renderer:DrawBShapeCollider(bshape_collider)
+ if #bshape_collider.world_vertices >= 8 then
+ self:DrawCube(bshape_collider)
+ else
+ self:DrawLegacy(bshape_collider)
+ end
+end
+
+function bshape_renderer:DrawCube(bshape_collider)
+ if self.gizmos == nil then
+ self.gizmos = {
+ self:AddLine(bshape_collider, 1, 2, aol_bshape.color_not_colliding),
+ self:AddLine(bshape_collider, 2, 4, aol_bshape.color_not_colliding),
+ self:AddLine(bshape_collider, 3, 4, aol_bshape.color_not_colliding),
+ self:AddLine(bshape_collider, 1, 3, aol_bshape.color_not_colliding),
+ self:AddLine(bshape_collider, 5, 6, aol_bshape.color_not_colliding),
+ self:AddLine(bshape_collider, 6, 8, aol_bshape.color_not_colliding),
+ self:AddLine(bshape_collider, 7, 8, aol_bshape.color_not_colliding),
+ self:AddLine(bshape_collider, 5, 7, aol_bshape.color_not_colliding),
+ self:AddLine(bshape_collider, 1, 5, aol_bshape.color_not_colliding),
+ self:AddLine(bshape_collider, 2, 6, aol_bshape.color_not_colliding),
+ self:AddLine(bshape_collider, 3, 7, aol_bshape.color_not_colliding),
+ self:AddLine(bshape_collider, 4, 8, aol_bshape.color_not_colliding)
+ }
+ end
+
+ for i, gizmo in ipairs(self.gizmos) do
+ gizmo.line.visible = true
+ gizmo.line.color = bshape_collider.is_colliding and aol_bshape.color_colliding or aol_bshape.color_not_colliding
+ gizmo.line.point_a = bshape_collider.world_vertices[gizmo.vertex_1]
+ gizmo.line.point_b = bshape_collider.world_vertices[gizmo.vertex_2]
+ end
+end
+
+function bshape_renderer:DrawLegacy(bshape_collider)
+ for i, position in ipairs(bshape_collider.world_vertices) do
+ if self.particles[i] == nil then
+ self.particles[i] = particles_object("_samples_particles_\\place_indicator")
+ end
+
+ local particle = self.particles[i]
+
+ if not particle:playing() then
+ particle:play()
+ end
+ -- Move particles to origin if bbox collides with something
+ if bshape_collider.is_colliding then
+ particle:move_to(bshape_collider.world_origin, VEC_Z)
+ -- Move particles to vertices of bbox if there is no collision
+ else
+ particle:move_to(position, VEC_Z)
+ end
+ end
+end
+
+function bshape_renderer:Stop()
+ for i, particle in ipairs(self.particles) do
+ if particle then
+ particle:stop_deffered()
+ end
+ end
+ for i, gizmo in ipairs(self.gizmos) do
+ gizmo.line.visible = false
+ end
+end
+
+function bshape_renderer:AddLine(bshape_collider, vertex_1, vertex_2, color)
+ if bshape_collider == nil or vertex_1 == nil or vertex_2 == nil or color == nil then
+ return
+ end
+
+ aol_bshape.last_gizmo_id = aol_bshape.last_gizmo_id + 1
+ local line = debug_render.add_object(aol_bshape.last_gizmo_id, DBG_ScriptObject.line):cast_dbg_line()
+ line.visible = true
+ line.color = color
+ line.point_a = bshape_collider.world_vertices[vertex_1]
+ line.point_b = bshape_collider.world_vertices[vertex_2]
+
+ return {
+ line = line,
+ vertex_1 = vertex_1,
+ vertex_2 = vertex_2
+ }
+end
+
diff --git a/mods/Hideout Furniture Preview Gizmo/meta.ini b/mods/Hideout Furniture Preview Gizmo/meta.ini
new file mode 100644
index 00000000..8277dfa9
--- /dev/null
+++ b/mods/Hideout Furniture Preview Gizmo/meta.ini
@@ -0,0 +1,28 @@
+[General]
+gameName=stalkeranomaly
+modid=0
+version=d2024.4.4.0
+newestVersion=
+category="-1,"
+nexusFileStatus=1
+installationFile=Hideout_Furniture_Preview_Gizmo.zip
+repository=Nexus
+ignoredVersion=
+comments=
+notes=
+nexusDescription=
+url=
+hasCustomURL=true
+lastNexusQuery=
+lastNexusUpdate=
+nexusLastModified=2024-04-04T22:10:28Z
+nexusCategory=0
+converted=false
+validated=false
+color=@Variant(\0\0\0\x43\0\xff\xff\0\0\0\0\0\0\0\0)
+tracked=0
+
+[installedFiles]
+1\modid=0
+1\fileid=0
+size=1
diff --git a/mods/Lootboxes/gamedata/scripts/arti_lootboxes.script b/mods/Lootboxes/gamedata/scripts/arti_lootboxes.script
index 4266ce67..f8edc4b9 100644
--- a/mods/Lootboxes/gamedata/scripts/arti_lootboxes.script
+++ b/mods/Lootboxes/gamedata/scripts/arti_lootboxes.script
@@ -682,6 +682,8 @@ function give_weapon(weapon, attachment_data)
end
+local sound
+
function open_lootbox(box, tool)
local id = box:id()
if not (lootbox_contents[id]) then
@@ -691,29 +693,29 @@ function open_lootbox(box, tool)
-- play cool animation, with cool sound
if get_config("animation") then
tool_sec = get_sec(tool)
- local sound = ini_tools:r_string_ex(tool_sec, "sound") or "Plastic_Small_Pick"
+ sound = ini_tools:r_string_ex(tool_sec, "sound") or "Plastic_Small_Pick"
local delay = ini_tools:r_float_ex(tool_sec, "duration") or 5
+ xr_effects.disable_ui_only(db.actor, nil)
- CreateTimeEvent("lootbox", "disable_ui", 0, function()
- xr_effects.disable_ui_only(db.actor, nil)
- return true
- end)
+ -- CreateTimeEvent("lootbox", "disable_ui", 0, function()
+ -- return true
+ -- end)
utils_obj.play_sound(sound)
print_dbg("Start open box with id "..id)
RemoveTimeEvent("lootbox","box_open " .. id)
CreateTimeEvent("lootbox","box_open " .. id, delay,
- function(id, give)
+ function()
xr_effects.enable_ui_lite(db.actor, nil)
- open_lootbox_timer(id, give)
+ open_lootbox_timer(id, true)
return true
- end, id, true)
+ end)
else
RemoveTimeEvent("lootbox","box_open " .. id)
CreateTimeEvent("lootbox","box_open " .. id, 0.1,
- function(id, give)
- open_lootbox_timer(id, give)
+ function()
+ open_lootbox_timer(id, true)
return true
- end, id, true)
+ end)
end
end
@@ -855,18 +857,22 @@ function spawn_stalker_loot(npc)
end
-- monkey patch loot managers
-SpawnTreasure = treasure_manager.try_spawn_treasure
+-- SpawnTreasure = treasure_manager.try_spawn_treasure
-function treasure_manager.try_spawn_treasure(box)
- local id = box:id()
+-- function treasure_manager.try_spawn_treasure(box)
+-- local id = box:id()
- --printf("try_spawn_treasure [%s]",caches[id])
- -- no spawn if the cache is already looted
- if not (treasure_manager.caches[id]) then
- return
- end
+-- --printf("try_spawn_treasure [%s]",caches[id])
+-- -- no spawn if the cache is already looted
+-- if not (treasure_manager.caches[id]) then
+-- return
+-- end
+-- spawn_lootbox(box)
+-- SpawnTreasure(box)
+-- end
+
+function stash_on_loot(box)
spawn_lootbox(box)
- SpawnTreasure(box)
end
-- string stuff
@@ -924,5 +930,6 @@ function on_game_start()
RegisterScriptCallback("ActorMenu_on_item_drag_drop",on_item_drag_dropped)
RegisterScriptCallback("server_entity_on_unregister", server_entity_on_unregister)
RegisterScriptCallback("actor_on_item_take",spook_player)
+ RegisterScriptCallback("stash_on_loot",stash_on_loot)
init()
end
diff --git a/mods/Lootboxes/gamedata/scripts/callback_stash.script b/mods/Lootboxes/gamedata/scripts/callback_stash.script
new file mode 100644
index 00000000..755b4674
--- /dev/null
+++ b/mods/Lootboxes/gamedata/scripts/callback_stash.script
@@ -0,0 +1,14 @@
+AddScriptCallback("stash_on_loot")
+
+
+SpawnTreasure = treasure_manager.try_spawn_treasure
+
+function treasure_manager.try_spawn_treasure(box)
+ local id = box:id()
+
+ if not (treasure_manager.caches[id]) then
+ return
+ end
+ SendScriptCallback("stash_on_loot", box)
+ SpawnTreasure(box)
+end
\ No newline at end of file
diff --git a/mods/Lootboxes/meta.ini b/mods/Lootboxes/meta.ini
index 6a5594c9..8b5484b5 100644
--- a/mods/Lootboxes/meta.ini
+++ b/mods/Lootboxes/meta.ini
@@ -1,11 +1,11 @@
[General]
gameName=stalkeranomaly
modid=0
-version=d2024.2.29.0
+version=d2024.4.3.0
newestVersion=
category="6,"
nexusFileStatus=1
-installationFile=anomaly-loot.2024.02.10.zip
+installationFile=anomaly-loot.2024.03.11.zip
repository=Nexus
ignoredVersion=
comments=
diff --git a/mods/M14 Reanimation/gamedata/anims/camera_effects/weapon/m14_hand_bored.anm b/mods/M14 Reanimation/gamedata/anims/camera_effects/weapon/em14_hand_bored.anm
similarity index 100%
rename from mods/M14 Reanimation/gamedata/anims/camera_effects/weapon/m14_hand_bored.anm
rename to mods/M14 Reanimation/gamedata/anims/camera_effects/weapon/em14_hand_bored.anm
diff --git a/mods/M14 Reanimation/gamedata/anims/camera_effects/weapon/m14_hand_draw.anm b/mods/M14 Reanimation/gamedata/anims/camera_effects/weapon/em14_hand_draw.anm
similarity index 100%
rename from mods/M14 Reanimation/gamedata/anims/camera_effects/weapon/m14_hand_draw.anm
rename to mods/M14 Reanimation/gamedata/anims/camera_effects/weapon/em14_hand_draw.anm
diff --git a/mods/M14 Reanimation/gamedata/anims/camera_effects/weapon/m14_hand_holster.anm b/mods/M14 Reanimation/gamedata/anims/camera_effects/weapon/em14_hand_holster.anm
similarity index 100%
rename from mods/M14 Reanimation/gamedata/anims/camera_effects/weapon/m14_hand_holster.anm
rename to mods/M14 Reanimation/gamedata/anims/camera_effects/weapon/em14_hand_holster.anm
diff --git a/mods/M14 Reanimation/gamedata/anims/camera_effects/weapon/m14_hand_jam_inspect.anm b/mods/M14 Reanimation/gamedata/anims/camera_effects/weapon/em14_hand_jam_inspect.anm
similarity index 100%
rename from mods/M14 Reanimation/gamedata/anims/camera_effects/weapon/m14_hand_jam_inspect.anm
rename to mods/M14 Reanimation/gamedata/anims/camera_effects/weapon/em14_hand_jam_inspect.anm
diff --git a/mods/M14 Reanimation/gamedata/anims/camera_effects/weapon/m14_hand_unjam.anm b/mods/M14 Reanimation/gamedata/anims/camera_effects/weapon/em14_hand_unjam.anm
similarity index 100%
rename from mods/M14 Reanimation/gamedata/anims/camera_effects/weapon/m14_hand_unjam.anm
rename to mods/M14 Reanimation/gamedata/anims/camera_effects/weapon/em14_hand_unjam.anm
diff --git a/mods/M14 Reanimation/gamedata/anims/camera_effects/weapon/m14_reload.anm b/mods/M14 Reanimation/gamedata/anims/camera_effects/weapon/em14_reload.anm
similarity index 100%
rename from mods/M14 Reanimation/gamedata/anims/camera_effects/weapon/m14_reload.anm
rename to mods/M14 Reanimation/gamedata/anims/camera_effects/weapon/em14_reload.anm
diff --git a/mods/M14 Reanimation/gamedata/anims/camera_effects/weapon/m14_reload1.anm b/mods/M14 Reanimation/gamedata/anims/camera_effects/weapon/em14_reload1.anm
similarity index 100%
rename from mods/M14 Reanimation/gamedata/anims/camera_effects/weapon/m14_reload1.anm
rename to mods/M14 Reanimation/gamedata/anims/camera_effects/weapon/em14_reload1.anm
diff --git a/mods/M14 Reanimation/gamedata/anims/camera_effects/weapon/m14_reload_empty.anm b/mods/M14 Reanimation/gamedata/anims/camera_effects/weapon/em14_reload_empty.anm
similarity index 100%
rename from mods/M14 Reanimation/gamedata/anims/camera_effects/weapon/m14_reload_empty.anm
rename to mods/M14 Reanimation/gamedata/anims/camera_effects/weapon/em14_reload_empty.anm
diff --git a/mods/M14 Reanimation/gamedata/anims/camera_effects/weapon/m14_reload_empty1.anm b/mods/M14 Reanimation/gamedata/anims/camera_effects/weapon/em14_reload_empty1.anm
similarity index 100%
rename from mods/M14 Reanimation/gamedata/anims/camera_effects/weapon/m14_reload_empty1.anm
rename to mods/M14 Reanimation/gamedata/anims/camera_effects/weapon/em14_reload_empty1.anm
diff --git a/mods/M14 Reanimation/gamedata/anims/camera_effects/weapon/m14_reload_empty2.anm b/mods/M14 Reanimation/gamedata/anims/camera_effects/weapon/em14_reload_empty2.anm
similarity index 100%
rename from mods/M14 Reanimation/gamedata/anims/camera_effects/weapon/m14_reload_empty2.anm
rename to mods/M14 Reanimation/gamedata/anims/camera_effects/weapon/em14_reload_empty2.anm
diff --git a/mods/M14 Reanimation/gamedata/anims/camera_effects/weapon/m14_reload_empty3.anm b/mods/M14 Reanimation/gamedata/anims/camera_effects/weapon/em14_reload_empty3.anm
similarity index 100%
rename from mods/M14 Reanimation/gamedata/anims/camera_effects/weapon/m14_reload_empty3.anm
rename to mods/M14 Reanimation/gamedata/anims/camera_effects/weapon/em14_reload_empty3.anm
diff --git a/mods/M14 Reanimation/gamedata/anims/camera_effects/weapon/mk14_hand_bored.anm b/mods/M14 Reanimation/gamedata/anims/camera_effects/weapon/emk14_hand_bored.anm
similarity index 100%
rename from mods/M14 Reanimation/gamedata/anims/camera_effects/weapon/mk14_hand_bored.anm
rename to mods/M14 Reanimation/gamedata/anims/camera_effects/weapon/emk14_hand_bored.anm
diff --git a/mods/M14 Reanimation/gamedata/anims/camera_effects/weapon/mk14_hand_draw.anm b/mods/M14 Reanimation/gamedata/anims/camera_effects/weapon/emk14_hand_draw.anm
similarity index 100%
rename from mods/M14 Reanimation/gamedata/anims/camera_effects/weapon/mk14_hand_draw.anm
rename to mods/M14 Reanimation/gamedata/anims/camera_effects/weapon/emk14_hand_draw.anm
diff --git a/mods/M14 Reanimation/gamedata/anims/camera_effects/weapon/mk14_hand_holster.anm b/mods/M14 Reanimation/gamedata/anims/camera_effects/weapon/emk14_hand_holster.anm
similarity index 100%
rename from mods/M14 Reanimation/gamedata/anims/camera_effects/weapon/mk14_hand_holster.anm
rename to mods/M14 Reanimation/gamedata/anims/camera_effects/weapon/emk14_hand_holster.anm
diff --git a/mods/M14 Reanimation/gamedata/anims/camera_effects/weapon/mk14_hand_jam_inspect.anm b/mods/M14 Reanimation/gamedata/anims/camera_effects/weapon/emk14_hand_jam_inspect.anm
similarity index 100%
rename from mods/M14 Reanimation/gamedata/anims/camera_effects/weapon/mk14_hand_jam_inspect.anm
rename to mods/M14 Reanimation/gamedata/anims/camera_effects/weapon/emk14_hand_jam_inspect.anm
diff --git a/mods/M14 Reanimation/gamedata/anims/camera_effects/weapon/mk14_hand_unjam.anm b/mods/M14 Reanimation/gamedata/anims/camera_effects/weapon/emk14_hand_unjam.anm
similarity index 100%
rename from mods/M14 Reanimation/gamedata/anims/camera_effects/weapon/mk14_hand_unjam.anm
rename to mods/M14 Reanimation/gamedata/anims/camera_effects/weapon/emk14_hand_unjam.anm
diff --git a/mods/M14 Reanimation/gamedata/anims/camera_effects/weapon/mk14_reload.anm b/mods/M14 Reanimation/gamedata/anims/camera_effects/weapon/emk14_reload.anm
similarity index 100%
rename from mods/M14 Reanimation/gamedata/anims/camera_effects/weapon/mk14_reload.anm
rename to mods/M14 Reanimation/gamedata/anims/camera_effects/weapon/emk14_reload.anm
diff --git a/mods/M14 Reanimation/gamedata/anims/camera_effects/weapon/mk14_reload1.anm b/mods/M14 Reanimation/gamedata/anims/camera_effects/weapon/emk14_reload1.anm
similarity index 100%
rename from mods/M14 Reanimation/gamedata/anims/camera_effects/weapon/mk14_reload1.anm
rename to mods/M14 Reanimation/gamedata/anims/camera_effects/weapon/emk14_reload1.anm
diff --git a/mods/M14 Reanimation/gamedata/anims/camera_effects/weapon/mk14_reload_empty.anm b/mods/M14 Reanimation/gamedata/anims/camera_effects/weapon/emk14_reload_empty.anm
similarity index 100%
rename from mods/M14 Reanimation/gamedata/anims/camera_effects/weapon/mk14_reload_empty.anm
rename to mods/M14 Reanimation/gamedata/anims/camera_effects/weapon/emk14_reload_empty.anm
diff --git a/mods/M14 Reanimation/gamedata/anims/camera_effects/weapon/mk14_reload_empty1.anm b/mods/M14 Reanimation/gamedata/anims/camera_effects/weapon/emk14_reload_empty1.anm
similarity index 100%
rename from mods/M14 Reanimation/gamedata/anims/camera_effects/weapon/mk14_reload_empty1.anm
rename to mods/M14 Reanimation/gamedata/anims/camera_effects/weapon/emk14_reload_empty1.anm
diff --git a/mods/M14 Reanimation/gamedata/anims/camera_effects/weapon/mk14_reload_empty2.anm b/mods/M14 Reanimation/gamedata/anims/camera_effects/weapon/emk14_reload_empty2.anm
similarity index 100%
rename from mods/M14 Reanimation/gamedata/anims/camera_effects/weapon/mk14_reload_empty2.anm
rename to mods/M14 Reanimation/gamedata/anims/camera_effects/weapon/emk14_reload_empty2.anm
diff --git a/mods/M14 Reanimation/gamedata/anims/camera_effects/weapon/mk14_reload_empty3.anm b/mods/M14 Reanimation/gamedata/anims/camera_effects/weapon/emk14_reload_empty3.anm
similarity index 100%
rename from mods/M14 Reanimation/gamedata/anims/camera_effects/weapon/mk14_reload_empty3.anm
rename to mods/M14 Reanimation/gamedata/anims/camera_effects/weapon/emk14_reload_empty3.anm
diff --git a/mods/M14 Reanimation/gamedata/anims/camera_effects/weapon/weapon.rar b/mods/M14 Reanimation/gamedata/anims/camera_effects/weapon/weapon.rar
deleted file mode 100644
index 1b15defb..00000000
Binary files a/mods/M14 Reanimation/gamedata/anims/camera_effects/weapon/weapon.rar and /dev/null differ
diff --git a/mods/M14 Reanimation/gamedata/configs/items/weapons/w_mk14.ltx b/mods/M14 Reanimation/gamedata/configs/items/weapons/w_mk14.ltx
index 8dac48e6..30e759d0 100644
--- a/mods/M14 Reanimation/gamedata/configs/items/weapons/w_mk14.ltx
+++ b/mods/M14 Reanimation/gamedata/configs/items/weapons/w_mk14.ltx
@@ -16,14 +16,14 @@ ef_weapon_type = 8
hand_dependence = 1
single_handed = 0
-icons_texture = ui\ui_icon_mk14
+icons_texture = ui\ui_icon_m14
inv_grid_height = 2
inv_grid_width = 6
inv_grid_x = 0
-inv_grid_y = 0
+inv_grid_y = 2
inv_name = st_wpn_mk14
inv_name_short = st_wpn_mk14
-description = st_wpn_mk14_descr
+description = st_wpn_mk14_descr_new
kind = w_rifle
inv_weight = 5.10
@@ -83,7 +83,7 @@ scope_zoom_factor = 0
silencer_name = wpn_sil_nato
silencer_status = 2
-silencer_x = 268
+silencer_x = 262
silencer_y = 9
silencer_light_color = 0.6, 0.5, 0.3
silencer_light_range = 0.01
@@ -164,7 +164,7 @@ kill_msg_height = 28
snd_bore = weapons\librarian_m14\bored
snd_draw = weapons\librarian_m14\draw
-snd_reload_misfire = weapons\librarian_m14\unjam
+snd_reload_misfire = $no_sound
snd_reload = $no_sound
snd_reload_empty = $no_sound
snd_switch_mode = weapons\librarian_m14\switch
@@ -176,6 +176,9 @@ scripted_snd_reload_empty_variant1 = weapons\librarian_m14\reload_empty1
scripted_snd_reload_empty_variant2 = weapons\librarian_m14\reload_empty2
scripted_snd_reload_empty_variant3 = weapons\librarian_m14\reload_empty3
+scripted_snd_reload_misfire = weapons\librarian_m14\unjam
+scripted_snd_reload_misfire_empty = weapons\librarian_m14\unjam_empty
+
[wpn_mk14_hud]:hud_base
item_visual = anomaly_weapons\wpn_m14\wpn_mk14_hud.ogf
@@ -209,51 +212,64 @@ gl_hud_offset_rot_16x9 = 0, 0, 0
lean_hud_offset_pos = 0, 0, 0
lean_hud_offset_rot = 0, 0, 0
-anm_bore = mk14_hand_bored, mk14_idle
-anm_hide = mk14_hand_holster, mk14_idle
-anm_idle = mk14_hand_idle, mk14_idle
-anm_idle_aim = mk14_hand_idle_aim, mk14_idle
-anm_idle_aim_moving = mk14_hand_moving, mk14_idle, 0.75
-anm_idle_aim_moving_crouch = mk14_hand_moving, mk14_idle, 0.7
-anm_idle_moving = mk14_hand_moving, mk14_idle
-anm_idle_sprint = mk14_hand_sprint, mk14_idle, 1.1
-anm_shots = mk14_hand_shoot, mk14_shoot
-anm_shots_aim = mk14_hand_shoot_aim, mk14_shoot
-anm_reload = mk14_reload
-anm_reload_variant1 = mk14_reload1
-anm_reload_empty = mk14_reload_empty
-anm_reload_empty_variant1 = mk14_reload_empty1
-anm_reload_empty_variant2 = mk14_reload_empty2
-anm_reload_empty_variant3 = mk14_reload_empty3
-anm_show = mk14_hand_draw, mk14_idle
-anm_switch_mode = mk14_hand_switch, mk14_idle
+anm_bore = emk14_hand_bored, emk14_idle
+anm_hide = emk14_hand_holster, emk14_idle
+anm_idle = emk14_hand_idle, emk14_idle
+anm_idle_aim = emk14_hand_idle_aim, emk14_idle
+anm_idle_aim_moving = emk14_hand_moving, emk14_idle, 0.75
+anm_idle_aim_moving_crouch = emk14_hand_moving, emk14_idle, 0.7
+anm_idle_moving = emk14_hand_moving, emk14_idle
+anm_idle_sprint = emk14_hand_sprint, emk14_idle, 1.1
+anm_shots = emk14_hand_shoot, emk14_shoot
+anm_shots_aim = emk14_hand_shoot_aim, emk14_shoot
+anm_reload = emk14_reload
+anm_reload_variant1 = emk14_reload1
+anm_reload_empty = emk14_reload_empty
+anm_reload_empty_variant1 = emk14_reload_empty1
+anm_reload_empty_variant2 = emk14_reload_empty2
+anm_reload_empty_variant3 = emk14_reload_empty3
+anm_show = emk14_hand_draw, emk14_idle
+anm_switch_mode = emk14_hand_switch, emk14_idle
;==============================COK========================================
-anm_bore_empty = mk14_hand_bored, mk14_idle_empty
-anm_hide_empty = mk14_hand_holster, mk14_idle_empty
-anm_idle_empty = mk14_hand_idle, mk14_idle_empty
-anm_idle_moving_empty = mk14_hand_moving, mk14_idle_empty
-anm_idle_moving_crouch_empty = mk14_hand_moving, mk14_idle_empty, 0.75
-anm_idle_aim_empty = mk14_hand_idle_aim, mk14_idle_empty
-anm_idle_aim_moving_empty = mk14_hand_moving, mk14_idle_empty, 0.75
-anm_idle_aim_moving_crouch_empty = mk14_hand_moving, mk14_idle_empty, 0.75
-anm_idle_sprint_empty = mk14_hand_sprint, mk14_idle_empty, 1.1
-anm_shot_l = mk14_hand_shoot, mk14_shoot_last
-anm_shots_aim_l = mk14_hand_shoot_aim, mk14_shoot_last
-anm_show_empty = mk14_hand_draw, mk14_idle_empty
-anm_switch_mode_empty = mk14_hand_switch, mk14_idle_empty
+anm_bore_empty = emk14_hand_bored, emk14_idle_empty
+anm_hide_empty = emk14_hand_holster, emk14_idle_empty
+anm_idle_empty = emk14_hand_idle, emk14_idle_empty
+anm_idle_moving_empty = emk14_hand_moving, emk14_idle_empty
+anm_idle_moving_crouch_empty = emk14_hand_moving, emk14_idle_empty, 0.75
+anm_idle_aim_empty = emk14_hand_idle_aim, emk14_idle_empty
+anm_idle_aim_moving_empty = emk14_hand_moving, emk14_idle_empty, 0.75
+anm_idle_aim_moving_crouch_empty = emk14_hand_moving, emk14_idle_empty, 0.75
+anm_idle_sprint_empty = emk14_hand_sprint, emk14_idle_empty, 1.1
+anm_shot_l = emk14_hand_shoot, emk14_shoot_last
+anm_shots_aim_l = emk14_hand_shoot_aim, emk14_shoot_last
+anm_show_empty = emk14_hand_draw, emk14_idle_empty
+anm_switch_mode_empty = emk14_hand_switch, emk14_idle_empty
;==============================TAE========================================
-anm_bore_jammed = mk14_hand_jam_inspect, mk14_idle_jam
-anm_hide_jammed = mk14_hand_holster, mk14_idle_jam
-anm_idle_jammed = mk14_hand_idle, mk14_idle_jam
-anm_idle_aim_jammed = mk14_hand_idle_aim, mk14_idle_jam
-anm_idle_aim_moving_jammed = mk14_hand_moving, mk14_idle_jam, 0.75
-anm_idle_aim_moving_crouch_jammed = mk14_hand_moving, mk14_idle_jam, 0.75
-anm_idle_moving_jammed = mk14_hand_moving, mk14_idle_jam, 0.75
-anm_idle_moving_crouch_jammed = mk14_hand_moving, mk14_idle_jam, 0.75
-anm_idle_sprint_jammed = mk14_hand_sprint, mk14_idle_jam, 1.1
-anm_reload_misfire = mk14_hand_unjam, mk14_unjam
-anm_show_jammed = mk14_hand_draw, mk14_idle_jam
-anm_switch_mode_jammed = mk14_hand_switch, mk14_idle_jam
+anm_bore_jammed = emk14_hand_jam_inspect, emk14_idle_jam
+anm_hide_jammed = emk14_hand_holster, emk14_idle_jam
+anm_idle_jammed = emk14_hand_idle, emk14_idle_jam
+anm_idle_aim_jammed = emk14_hand_idle_aim, emk14_idle_jam
+anm_idle_aim_moving_jammed = emk14_hand_moving, emk14_idle_jam, 0.75
+anm_idle_aim_moving_crouch_jammed = emk14_hand_moving, emk14_idle_jam, 0.75
+anm_idle_moving_jammed = emk14_hand_moving, emk14_idle_jam, 0.75
+anm_idle_moving_crouch_jammed = emk14_hand_moving, emk14_idle_jam, 0.75
+anm_idle_sprint_jammed = emk14_hand_sprint, emk14_idle_jam, 1.1
+anm_reload_misfire = emk14_hand_unjam, emk14_unjam
+anm_show_jammed = emk14_hand_draw, emk14_idle_jam
+anm_switch_mode_jammed = emk14_hand_switch, emk14_idle_jam
+;==============================TOD========================================
+anm_idle_empty_jammed = emk14_hand_idle, emk14_idle_jam
+anm_show_empty_jammed = emk14_hand_draw, emk14_idle_jam
+anm_hide_empty_jammed = emk14_hand_holster, emk14_idle_jam
+anm_idle_aim_empty_jammed = emk14_hand_idle_aim, emk14_idle_jam
+anm_idle_sprint_empty_jammed = emk14_hand_sprint, emk14_idle_jam, 1.2
+anm_idle_moving_empty_jammed = emk14_hand_moving, emk14_idle_jam
+anm_idle_moving_crouch_empty_jammed = emk14_hand_moving, emk14_idle_jam, 0.7
+anm_bore_empty_jammed = emk14_hand_bored, emk14_idle_jam
+anm_reload_misfire_empty = emk14_hand_unjam, emk14_unjam_empty
+anm_shot_l_jammed = emk14_hand_shoot, emk14_shoot_last
+anm_shots_jammed = emk14_hand_shoot, emk14_shoot
+
@@ -287,9 +303,9 @@ item_visual = anomaly_weapons\wpn_m14\wpn_mk14_barsk
aim_hud_offset_pos = -0.090608, 0.009595, -0.122659
aim_hud_offset_pos_16x9 = -0.090608, 0.009595, -0.122659
-anm_bore = mk14_hand_bored_scope, mk14_idle
-anm_bore_empty = mk14_hand_bored_scope, mk14_idle_empty
-anm_bore_jammed = mk14_hand_jam_inspect, mk14_idle_jam
+anm_bore = emk14_hand_bored_scope, emk14_idle
+anm_bore_empty = emk14_hand_bored_scope, emk14_idle_empty
+anm_bore_jammed = emk14_hand_jam_inspect, emk14_idle_jam
;------------------------------------------------------------------------------------------------
[wpn_mk14_acog]:wpn_mk14
@@ -320,9 +336,9 @@ item_visual = anomaly_weapons\wpn_m14\wpn_mk14_acog
aim_hud_offset_pos = -0.090874, 0.009595, -0.132691
aim_hud_offset_pos_16x9 = -0.090874, 0.009595, -0.132691
-anm_bore = mk14_hand_bored_scope, mk14_idle
-anm_bore_empty = mk14_hand_bored_scope, mk14_idle_empty
-anm_bore_jammed = mk14_hand_jam_inspect, mk14_idle_jam
+anm_bore = emk14_hand_bored_scope, emk14_idle
+anm_bore_empty = emk14_hand_bored_scope, emk14_idle_empty
+anm_bore_jammed = emk14_hand_jam_inspect, emk14_idle_jam
;------------------------------------------------------------------------------------------------
[wpn_mk14_c-more]:wpn_mk14
@@ -343,9 +359,9 @@ item_visual = anomaly_weapons\wpn_m14\wpn_mk14_c-mo
aim_hud_offset_pos = -0.091308, 0.007393, -0.122659
aim_hud_offset_pos_16x9 = -0.091308, 0.007393, -0.122659
-anm_bore = mk14_hand_bored_scope, mk14_idle
-anm_bore_empty = mk14_hand_bored_scope, mk14_idle_empty
-anm_bore_jammed = mk14_hand_jam_inspect, mk14_idle_jam
+anm_bore = emk14_hand_bored_scope, emk14_idle
+anm_bore_empty = emk14_hand_bored_scope, emk14_idle_empty
+anm_bore_jammed = emk14_hand_jam_inspect, emk14_idle_jam
;------------------------------------------------------------------------------------------------
[wpn_mk14_eot]:wpn_mk14
@@ -367,9 +383,9 @@ item_visual = anomaly_weapons\wpn_m14\wpn_mk14_eot_
aim_hud_offset_pos = -0.090873, 0.001267, -0.122659
aim_hud_offset_pos_16x9 = -0.090873, 0.001267, -0.122659
-anm_bore = mk14_hand_bored_scope, mk14_idle
-anm_bore_empty = mk14_hand_bored_scope, mk14_idle_empty
-anm_bore_jammed = mk14_hand_jam_inspect, mk14_idle_jam
+anm_bore = emk14_hand_bored_scope, emk14_idle
+anm_bore_empty = emk14_hand_bored_scope, emk14_idle_empty
+anm_bore_jammed = emk14_hand_jam_inspect, emk14_idle_jam
;-------------------------------------------M14-----------------------------------------------------
[wpn_m14]:wpn_mk14
@@ -409,48 +425,61 @@ aim_hud_offset_pos_16x9 = -0.091143, 0.028869, -0.100535
aim_hud_offset_rot = 0, 0, 0
aim_hud_offset_rot_16x9 = 0, 0, 0
-anm_bore = m14_hand_bored, m14_idle
-anm_hide = m14_hand_holster, m14_idle
-anm_idle = m14_hand_idle, m14_idle
-anm_idle_aim = m14_hand_idle_aim, m14_idle
-anm_idle_aim_moving = m14_hand_moving, m14_idle, 0.75
-anm_idle_aim_moving_crouch = m14_hand_moving, m14_idle, 0.7
-anm_idle_moving = m14_hand_moving, m14_idle
-anm_idle_sprint = m14_hand_sprint, m14_idle, 1.1
-anm_shots = m14_hand_shoot, m14_shoot
-anm_shots_aim = m14_hand_shoot_aim, m14_shoot
-anm_reload = m14_reload
-anm_reload_variant1 = m14_reload1
-anm_reload_empty = m14_reload_empty
-anm_reload_empty_variant1 = m14_reload_empty1
-anm_reload_empty_variant2 = m14_reload_empty2
-anm_reload_empty_variant3 = m14_reload_empty3
-anm_show = m14_hand_draw, m14_idle
-anm_switch_mode = m14_hand_switch, m14_idle
+anm_bore = em14_hand_bored, em14_idle
+anm_hide = em14_hand_holster, em14_idle
+anm_idle = em14_hand_idle, em14_idle
+anm_idle_aim = em14_hand_idle_aim, em14_idle
+anm_idle_aim_moving = em14_hand_moving, em14_idle, 0.75
+anm_idle_aim_moving_crouch = em14_hand_moving, em14_idle, 0.7
+anm_idle_moving = em14_hand_moving, em14_idle
+anm_idle_sprint = em14_hand_sprint, em14_idle, 1.1
+anm_shots = em14_hand_shoot, em14_shoot
+anm_shots_aim = em14_hand_shoot_aim, em14_shoot
+anm_reload = em14_reload
+anm_reload_variant1 = em14_reload1
+anm_reload_empty = em14_reload_empty
+anm_reload_empty_variant1 = em14_reload_empty1
+anm_reload_empty_variant2 = em14_reload_empty2
+anm_reload_empty_variant3 = em14_reload_empty3
+anm_show = em14_hand_draw, em14_idle
+anm_switch_mode = em14_hand_switch, em14_idle
;==============================COK========================================
-anm_bore_empty = m14_hand_bored, m14_idle_empty
-anm_hide_empty = m14_hand_holster, m14_idle_empty
-anm_idle_empty = m14_hand_idle, m14_idle_empty
-anm_idle_moving_empty = m14_hand_moving, m14_idle_empty
-anm_idle_moving_crouch_empty = m14_hand_moving, m14_idle_empty, 0.75
-anm_idle_aim_empty = m14_hand_idle_aim, m14_idle_empty
-anm_idle_aim_moving_empty = m14_hand_moving, m14_idle_empty, 0.75
-anm_idle_aim_moving_crouch_empty = m14_hand_moving, m14_idle_empty, 0.75
-anm_idle_sprint_empty = m14_hand_sprint, m14_idle_empty, 1.1
-anm_shot_l = m14_hand_shoot, m14_shoot_last
-anm_shots_aim_l = m14_hand_shoot_aim, m14_shoot_last
-anm_show_empty = m14_hand_draw, m14_idle_empty
-anm_switch_mode_empty = m14_hand_switch, m14_idle_empty
+anm_bore_empty = em14_hand_bored, em14_idle_empty
+anm_hide_empty = em14_hand_holster, em14_idle_empty
+anm_idle_empty = em14_hand_idle, em14_idle_empty
+anm_idle_moving_empty = em14_hand_moving, em14_idle_empty
+anm_idle_moving_crouch_empty = em14_hand_moving, em14_idle_empty, 0.75
+anm_idle_aim_empty = em14_hand_idle_aim, em14_idle_empty
+anm_idle_aim_moving_empty = em14_hand_moving, em14_idle_empty, 0.75
+anm_idle_aim_moving_crouch_empty = em14_hand_moving, em14_idle_empty, 0.75
+anm_idle_sprint_empty = em14_hand_sprint, em14_idle_empty, 1.1
+anm_shot_l = em14_hand_shoot, em14_shoot_last
+anm_shots_aim_l = em14_hand_shoot_aim, em14_shoot_last
+anm_show_empty = em14_hand_draw, em14_idle_empty
+anm_switch_mode_empty = em14_hand_switch, em14_idle_empty
;==============================TAE========================================
-anm_bore_jammed = m14_hand_jam_inspect, m14_idle_jam
-anm_hide_jammed = m14_hand_holster, m14_idle_jam
-anm_idle_jammed = m14_hand_idle, m14_idle_jam
-anm_idle_aim_jammed = m14_hand_idle_aim, m14_idle_jam
-anm_idle_aim_moving_jammed = m14_hand_moving, m14_idle_jam, 0.75
-anm_idle_aim_moving_crouch_jammed = m14_hand_moving, m14_idle_jam, 0.75
-anm_idle_moving_jammed = m14_hand_moving, m14_idle_jam, 0.75
-anm_idle_moving_crouch_jammed = m14_hand_moving, m14_idle_jam, 0.75
-anm_idle_sprint_jammed = m14_hand_sprint, m14_idle_jam, 1.1
-anm_reload_misfire = m14_hand_unjam, m14_unjam
-anm_show_jammed = m14_hand_draw, m14_idle_jam
-anm_switch_mode_jammed = m14_hand_switch, m14_idle_jam
\ No newline at end of file
+anm_bore_jammed = em14_hand_jam_inspect, em14_idle_jam
+anm_hide_jammed = em14_hand_holster, em14_idle_jam
+anm_idle_jammed = em14_hand_idle, em14_idle_jam
+anm_idle_aim_jammed = em14_hand_idle_aim, em14_idle_jam
+anm_idle_aim_moving_jammed = em14_hand_moving, em14_idle_jam, 0.75
+anm_idle_aim_moving_crouch_jammed = em14_hand_moving, em14_idle_jam, 0.75
+anm_idle_moving_jammed = em14_hand_moving, em14_idle_jam, 0.75
+anm_idle_moving_crouch_jammed = em14_hand_moving, em14_idle_jam, 0.75
+anm_idle_sprint_jammed = em14_hand_sprint, em14_idle_jam, 1.1
+anm_reload_misfire = em14_hand_unjam, em14_unjam
+anm_reload_misfire_empty = em14_hand_unjam, em14_unjam_empty
+anm_show_jammed = em14_hand_draw, em14_idle_jam
+anm_switch_mode_jammed = em14_hand_switch, em14_idle_jam
+;==============================TOD========================================
+anm_idle_empty_jammed = em14_hand_idle, em14_idle_jam
+anm_show_empty_jammed = em14_hand_draw, em14_idle_jam
+anm_hide_empty_jammed = em14_hand_holster, em14_idle_jam
+anm_idle_aim_empty_jammed = em14_hand_idle_aim, em14_idle_jam
+anm_idle_sprint_empty_jammed = em14_hand_sprint, em14_idle_jam, 1.2
+anm_idle_moving_empty_jammed = em14_hand_moving, em14_idle_jam
+anm_idle_moving_crouch_empty_jammed = em14_hand_moving, em14_idle_jam, 0.7
+anm_bore_empty_jammed = em14_hand_bored, em14_idle_jam
+anm_reload_misfire_empty = em14_hand_unjam, em14_unjam_empty
+anm_shot_l_jammed = em14_hand_shoot, em14_shoot_last
+anm_shots_jammed = em14_hand_shoot, em14_shoot
diff --git a/mods/M14 Reanimation/gamedata/configs/text/eng/st_wpn_m14.xml b/mods/M14 Reanimation/gamedata/configs/text/eng/st_wpn_m14.xml
index d880c4ce..ebd52a40 100644
--- a/mods/M14 Reanimation/gamedata/configs/text/eng/st_wpn_m14.xml
+++ b/mods/M14 Reanimation/gamedata/configs/text/eng/st_wpn_m14.xml
@@ -1,8 +1,23 @@
+
+
+
+
+
M14
- The M14 is a legendary semi-automatic battle rifle that has earned its place as a revered relic within the treacherous and enigmatic confines of the Zone. Its distinctive silhouette, combining elements of classic design with modern engineering, has made it a sought-after prize for Stalkers braving the dangers of this post-apocalyptic realm.
+ The M14 is a legendary semi-automatic battle rifle that has earned its place as a revered relic within the treacherous and enigmatic confines of the Zone. Its distinctive silhouette, combining elements of classic design with modern engineering, has made it a sought-after prize for Stalkers braving the dangers of this post-apocalyptic realm.\n \n
+ %c[ui_gray_2]ATTACHMENTS: \n
+ %c[d_purple] %c[ui_gray_2] 5.56x45 compatible suppressor\n \n
+
+
+ United States Navy Mark 14 Enhanced Battle Rifle (Mk 14 Enhanced Battle Rifle, "improved combat rifle") - American Marksman rifle, created by special operations of the US Navy based on the M14 rifle. Used by a number of special units of the Navy, including SEAL.\n \n
+ %c[ui_gray_2]ATTACHMENTS: \n
+ %c[d_purple] %c[ui_gray_2] 5.56x45 compatible suppressor\n
+ %c[d_purple] %c[ui_gray_2] ACOG, Barska ES AC10632, C-more Railway Tactical, EOTech scopes\n \n
\ No newline at end of file
diff --git a/mods/M14 Reanimation/gamedata/configs/text/rus/st_wpn_m14.xml b/mods/M14 Reanimation/gamedata/configs/text/rus/st_wpn_m14.xml
new file mode 100644
index 00000000..612d66eb
--- /dev/null
+++ b/mods/M14 Reanimation/gamedata/configs/text/rus/st_wpn_m14.xml
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+ M14
+
+
+ M14 - , . , , , .\n \n
+ %c[ui_gray_2]ATTACHMENTS: \n
+ %c[d_purple] %c[ui_gray_2] \n \n
+
+
+ United States Navy Mark 14 Enhanced Battle Rifle (Mk 14 Enhanced Battle Rifle, ) - , 14. , SEAL.\n \n
+ %c[ui_gray_2]ATTACHMENTS: \n
+ %c[d_purple] %c[ui_gray_2] \n
+ %c[d_purple] %c[ui_gray_2] ACOG, Barska ES AC10632, C-more Railway Tactical, EOTech\n \n
+
+
\ No newline at end of file
diff --git a/mods/M14 Reanimation/gamedata/meshes/anomaly_weapons/anomaly_weapons.rar b/mods/M14 Reanimation/gamedata/meshes/anomaly_weapons/anomaly_weapons.rar
deleted file mode 100644
index a594ab03..00000000
Binary files a/mods/M14 Reanimation/gamedata/meshes/anomaly_weapons/anomaly_weapons.rar and /dev/null differ
diff --git a/mods/M14 Reanimation/gamedata/meshes/anomaly_weapons/hud_animation/wpn_m14_hud_animation.omf b/mods/M14 Reanimation/gamedata/meshes/anomaly_weapons/hud_animation/wpn_em14_hud_animation.omf
similarity index 64%
rename from mods/M14 Reanimation/gamedata/meshes/anomaly_weapons/hud_animation/wpn_m14_hud_animation.omf
rename to mods/M14 Reanimation/gamedata/meshes/anomaly_weapons/hud_animation/wpn_em14_hud_animation.omf
index 84f6fb1e..3bce2cd5 100644
Binary files a/mods/M14 Reanimation/gamedata/meshes/anomaly_weapons/hud_animation/wpn_m14_hud_animation.omf and b/mods/M14 Reanimation/gamedata/meshes/anomaly_weapons/hud_animation/wpn_em14_hud_animation.omf differ
diff --git a/mods/M14 Reanimation/gamedata/meshes/anomaly_weapons/hud_hands_animation/wpn_m14_hud_hand_animation.omf b/mods/M14 Reanimation/gamedata/meshes/anomaly_weapons/hud_hands_animation/wpn_em14_hud_hand_animation.omf
similarity index 99%
rename from mods/M14 Reanimation/gamedata/meshes/anomaly_weapons/hud_hands_animation/wpn_m14_hud_hand_animation.omf
rename to mods/M14 Reanimation/gamedata/meshes/anomaly_weapons/hud_hands_animation/wpn_em14_hud_hand_animation.omf
index 103bfceb..24bf1d54 100644
Binary files a/mods/M14 Reanimation/gamedata/meshes/anomaly_weapons/hud_hands_animation/wpn_m14_hud_hand_animation.omf and b/mods/M14 Reanimation/gamedata/meshes/anomaly_weapons/hud_hands_animation/wpn_em14_hud_hand_animation.omf differ
diff --git a/mods/M14 Reanimation/gamedata/meshes/anomaly_weapons/wpn_m14/wpn_m14_hud.ogf b/mods/M14 Reanimation/gamedata/meshes/anomaly_weapons/wpn_m14/wpn_m14_hud.ogf
index 60dd91cd..9d66cdde 100644
--- a/mods/M14 Reanimation/gamedata/meshes/anomaly_weapons/wpn_m14/wpn_m14_hud.ogf
+++ b/mods/M14 Reanimation/gamedata/meshes/anomaly_weapons/wpn_m14/wpn_m14_hud.ogf
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:bffd21b5bb026f52228cf9851b641da6bdbdab901d5996e74a95403719e53e93
-size 521122
+oid sha256:db16ab7aeeca39dd7cf38baecdb1183edd702e006885597c3cd77eb8ce54ce30
+size 529582
diff --git a/mods/M14 Reanimation/gamedata/meshes/anomaly_weapons/wpn_m14/wpn_mk14_acog_hud.ogf b/mods/M14 Reanimation/gamedata/meshes/anomaly_weapons/wpn_m14/wpn_mk14_acog_hud.ogf
index 5707cb52..b2a907c1 100644
--- a/mods/M14 Reanimation/gamedata/meshes/anomaly_weapons/wpn_m14/wpn_mk14_acog_hud.ogf
+++ b/mods/M14 Reanimation/gamedata/meshes/anomaly_weapons/wpn_m14/wpn_mk14_acog_hud.ogf
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:857b349383fc617513d1e1a3a2914c12e9705fbd33536799b8fdacc896f2a888
-size 950106
+oid sha256:2319b0d7f1f09a5509d936f1dbe9c91b1e23bdf2da60b0c102c5944783757937
+size 910194
diff --git a/mods/M14 Reanimation/gamedata/meshes/anomaly_weapons/wpn_m14/wpn_mk14_barska_hud.ogf b/mods/M14 Reanimation/gamedata/meshes/anomaly_weapons/wpn_m14/wpn_mk14_barska_hud.ogf
index dc1dc726..d82d8636 100644
--- a/mods/M14 Reanimation/gamedata/meshes/anomaly_weapons/wpn_m14/wpn_mk14_barska_hud.ogf
+++ b/mods/M14 Reanimation/gamedata/meshes/anomaly_weapons/wpn_m14/wpn_mk14_barska_hud.ogf
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:cb5f10e602c7841cc9326de9c05e3cae6e6f10f5a8dffbb0ee8bc63b1c1e2cfe
-size 1197379
+oid sha256:f5f0e7d1654c57f8dd27786ede6e5c65afe6aec3f0b71ec67b1b435cb29084be
+size 1238179
diff --git a/mods/M14 Reanimation/gamedata/meshes/anomaly_weapons/wpn_m14/wpn_mk14_c-more_hud.ogf b/mods/M14 Reanimation/gamedata/meshes/anomaly_weapons/wpn_m14/wpn_mk14_c-more_hud.ogf
index f0bebe0c..a580ca3d 100644
--- a/mods/M14 Reanimation/gamedata/meshes/anomaly_weapons/wpn_m14/wpn_mk14_c-more_hud.ogf
+++ b/mods/M14 Reanimation/gamedata/meshes/anomaly_weapons/wpn_m14/wpn_mk14_c-more_hud.ogf
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:35b68e898071a1be7674db864363de16095c9718f4827b0cdda0f504ca663c45
-size 960529
+oid sha256:0fa17e5be871b075dd2db38b1c339d70230472ed1e5dbf7e203bf1a2ab09e23d
+size 973163
diff --git a/mods/M14 Reanimation/gamedata/meshes/anomaly_weapons/wpn_m14/wpn_mk14_eot_hud.ogf b/mods/M14 Reanimation/gamedata/meshes/anomaly_weapons/wpn_m14/wpn_mk14_eot_hud.ogf
index 8c37f4d3..c2a53629 100644
--- a/mods/M14 Reanimation/gamedata/meshes/anomaly_weapons/wpn_m14/wpn_mk14_eot_hud.ogf
+++ b/mods/M14 Reanimation/gamedata/meshes/anomaly_weapons/wpn_m14/wpn_mk14_eot_hud.ogf
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:f1b7c594d6d36d620027decd35f2d72f60b726d215e679d2011347c74ee386df
-size 867501
+oid sha256:1e93c8c243e325790902a2dbf0ee73bfe2b593dc77063bfc39898343243564df
+size 878961
diff --git a/mods/M14 Reanimation/gamedata/meshes/anomaly_weapons/wpn_m14/wpn_mk14_hud.ogf b/mods/M14 Reanimation/gamedata/meshes/anomaly_weapons/wpn_m14/wpn_mk14_hud.ogf
index 125c6c64..6866fd6e 100644
--- a/mods/M14 Reanimation/gamedata/meshes/anomaly_weapons/wpn_m14/wpn_mk14_hud.ogf
+++ b/mods/M14 Reanimation/gamedata/meshes/anomaly_weapons/wpn_m14/wpn_mk14_hud.ogf
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:658269ad42165bb1898a2985fc17b31ef956306081968efa00a3b596f6c536f7
-size 725437
+oid sha256:74c730be09aacff00910a6844283f159a97aec6c1b24e63f30ba2439b836c8a5
+size 734133
diff --git a/mods/M14 Reanimation/gamedata/meshes/dynamics/weapons/wpn_m14/wpn_m14.ogf b/mods/M14 Reanimation/gamedata/meshes/dynamics/weapons/wpn_m14/wpn_m14.ogf
index dcdd2f67..a13ea822 100644
--- a/mods/M14 Reanimation/gamedata/meshes/dynamics/weapons/wpn_m14/wpn_m14.ogf
+++ b/mods/M14 Reanimation/gamedata/meshes/dynamics/weapons/wpn_m14/wpn_m14.ogf
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:65d3d8ac1f1a4f3550dedda357dc2d07e124a47762395abb92de0718f4d34bd9
-size 448559
+oid sha256:f1f433e9b3017210ba4bad87197c10221f689d612d849178247e76d052d88883
+size 456087
diff --git a/mods/M14 Reanimation/gamedata/meshes/dynamics/weapons/wpn_m14/wpn_mk14.ogf b/mods/M14 Reanimation/gamedata/meshes/dynamics/weapons/wpn_m14/wpn_mk14.ogf
index 6f4b54d9..9c1fd042 100644
--- a/mods/M14 Reanimation/gamedata/meshes/dynamics/weapons/wpn_m14/wpn_mk14.ogf
+++ b/mods/M14 Reanimation/gamedata/meshes/dynamics/weapons/wpn_m14/wpn_mk14.ogf
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:1b6c15bb932433e50257668983d534fe4df2f6f100850ff1e76b958395b6411a
-size 497819
+oid sha256:a5677b2bb20f539933da4da35c8730377163a6147a4906faa5e5b8a645bc4252
+size 507904
diff --git a/mods/M14 Reanimation/gamedata/meshes/dynamics/weapons/wpn_m14/wpn_mk14_acog.ogf b/mods/M14 Reanimation/gamedata/meshes/dynamics/weapons/wpn_m14/wpn_mk14_acog.ogf
index f3fee5a8..c6ebbc10 100644
--- a/mods/M14 Reanimation/gamedata/meshes/dynamics/weapons/wpn_m14/wpn_mk14_acog.ogf
+++ b/mods/M14 Reanimation/gamedata/meshes/dynamics/weapons/wpn_m14/wpn_mk14_acog.ogf
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:d5ac56059052ed159f62d47e3ab0ee0e8be789b4f2cf01d1e203a05cc28ae97b
-size 704412
+oid sha256:414a8e7fc2f81166a550bc3d9e010ee35370fa8967a75f19248790748e1f0d36
+size 717519
diff --git a/mods/M14 Reanimation/gamedata/meshes/dynamics/weapons/wpn_m14/wpn_mk14_barska.ogf b/mods/M14 Reanimation/gamedata/meshes/dynamics/weapons/wpn_m14/wpn_mk14_barska.ogf
index ad013b42..f3f87d1c 100644
--- a/mods/M14 Reanimation/gamedata/meshes/dynamics/weapons/wpn_m14/wpn_mk14_barska.ogf
+++ b/mods/M14 Reanimation/gamedata/meshes/dynamics/weapons/wpn_m14/wpn_mk14_barska.ogf
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:78285e8abdcd832941a49d074b4da2abfbc6ca2e6ab8ede990c637d116ce4a32
-size 698972
+oid sha256:44f0f361a2efdc7d75e0c9fcdbacaca5a418aab23a59952f2c105a939701dfe5
+size 710217
diff --git a/mods/M14 Reanimation/gamedata/meshes/dynamics/weapons/wpn_m14/wpn_mk14_c-more.ogf b/mods/M14 Reanimation/gamedata/meshes/dynamics/weapons/wpn_m14/wpn_mk14_c-more.ogf
index f688fd9a..bdad7d34 100644
--- a/mods/M14 Reanimation/gamedata/meshes/dynamics/weapons/wpn_m14/wpn_mk14_c-more.ogf
+++ b/mods/M14 Reanimation/gamedata/meshes/dynamics/weapons/wpn_m14/wpn_mk14_c-more.ogf
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:84cd5907fc6dbeeda4c33a2acf79d4db16b23495a1d14b75ac9e0b7606d7fbb7
-size 713372
+oid sha256:b46d1bd571f004038eea3a48022585299e27d86dbd83f581500dd608b7590262
+size 742209
diff --git a/mods/M14 Reanimation/gamedata/meshes/dynamics/weapons/wpn_m14/wpn_mk14_eot.ogf b/mods/M14 Reanimation/gamedata/meshes/dynamics/weapons/wpn_m14/wpn_mk14_eot.ogf
index be61e2f1..534485a5 100644
--- a/mods/M14 Reanimation/gamedata/meshes/dynamics/weapons/wpn_m14/wpn_mk14_eot.ogf
+++ b/mods/M14 Reanimation/gamedata/meshes/dynamics/weapons/wpn_m14/wpn_mk14_eot.ogf
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:738fc15a4b42e52011fca1db6f4bf9337aa57e56f5f1e02b883516e265a1ac66
-size 638313
+oid sha256:efcd4e6b1979f55ac73f2bcd7ec97e4f39c559aa6b4870f10638a9679fe222ff
+size 651481
diff --git a/mods/M14 Reanimation/gamedata/scripts/ads_reloads.script b/mods/M14 Reanimation/gamedata/scripts/ads_reloads.script
deleted file mode 100644
index 32b0a278..00000000
--- a/mods/M14 Reanimation/gamedata/scripts/ads_reloads.script
+++ /dev/null
@@ -1,39 +0,0 @@
-function is_valid_wpn(wpn)
- local section = wpn:section()
- local has_tristate_reload = ini_sys:r_string_ex(section,"tri_state_reload")
-
- -- Ignore weapons that are not jammed / at max ammo capacity
- local casted_wpn = wpn:cast_Weapon()
- if (not casted_wpn) or (not casted_wpn:IsMisfire() and casted_wpn:GetAmmoElapsed() == casted_wpn:GetAmmoMagSize()) then
- return false
- end
-
- if has_tristate_reload then
- if animation_common.has_animation(section, "anm_open_aim") then
- return true
- else
- return false
- end
- else
- if animation_common.has_animation(section, "anm_reload_aim") then
- return true
- else
- return false
- end
- end
-end
-
-function on_before_key_press(key, bind, dis, flags)
- if bind ~= key_bindings.kWPN_RELOAD then return end
- local wpn = db.actor:item_in_slot(db.actor:active_slot())
- if not wpn then return end
- if not is_valid_wpn(wpn) then return end
-
- wpn:switch_state(7)
- flags.ret_value = false
-end
-
-function on_game_start()
- if magazines then return end
- RegisterScriptCallback("on_before_key_press", on_before_key_press)
-end
\ No newline at end of file
diff --git a/mods/M14 Reanimation/gamedata/scripts/animation_common.script b/mods/M14 Reanimation/gamedata/scripts/animation_common.script
deleted file mode 100644
index 0682de7b..00000000
--- a/mods/M14 Reanimation/gamedata/scripts/animation_common.script
+++ /dev/null
@@ -1,125 +0,0 @@
--- Might want to extend this to track flags based on IDs since detectors have animations too
--- Likely overkill unless someone implements custom anims for them
-FLAGS = {}
-
-local active_flags = {}
-
--- Export: Flags
-function get_flag(flag)
- return active_flags[flag]
-end
-
-function set_flag(flag)
- active_flags[flag] = true
-end
-
-function remove_flag(flag)
- active_flags[flag] = nil
-end
-
-function add_flag(flag)
- -- Exit early if it already exists
- if FLAGS[flag] then return end
- FLAGS[flag] = #FLAGS
-end
-
-local anim_mutators = {}
-
--- Export: Animation Mutators
-function add_anim_mutator(functor, priority)
- -- Add mutator func to list of mutators
- table.insert(anim_mutators, {functor=functor, priority=priority})
-
- -- Sort anim_mutators again
- table.sort(anim_mutators, function(a,b) return a.priority < b.priority end)
-end
-
-function has_animation(section, anm)
- local hud_section = ini_sys:r_string_ex(section,"hud") or section
- return SYS_GetParam(0, hud_section, anm)
-end
-
-function mutate_anim(anm_table, anm_suffix, section)
- local new_anm = anm_table.anm_name .. anm_suffix
- if has_animation(section, new_anm) then
- anm_table.anm_name = new_anm
- return true
- end
- return false
-end
-
--- Sounds
-local sound_object_by_sec_by_path = {}
-function get_safe_sound_object(path, sec)
- assert(path, "path to sound file was nil")
- assert(sec, "item section was nil")
-
- if sound_object_by_sec_by_path[sec] == nil then
- sound_object_by_sec_by_path[sec] = {}
- end
- local snd_obj = sound_object(path)
- sound_object_by_sec_by_path[sec][path] = snd_obj
- return snd_obj
-end
-
-function stop_all_sound_object(sec)
- -- printf("stop_all_sound_object(sec): %s", sec)
- for section, list in pairs(sound_object_by_sec_by_path) do
- for path, v in pairs(list) do
- if section == sec and v:playing() then
- -- printf("sec: %s| Stopping: %s", sec, path)
- v:stop()
- end
- end
- sound_object_by_sec_by_path[sec] = nil
- end
-end
-
-function get_sound_from_anm(anm_name) -- TODO: allow sound volume to be defined in config
- return anm_name:gsub("anm_", "scripted_snd_")
-end
-
--- Probably worth adding an ordered list of functions with conditions that can mutate anm_table
--- and use this script as source of truth for about-to-be-played animations since callback order is random between scripts
-function actor_on_hud_animation_play(anm_table, item)
- if not item then return end
- stop_all_sound_object(item:section())
- local section = item:section()
-
- -- Execute each mutator functor in turn, ordered by priority
- for i, mutator in ipairs(anim_mutators) do
- local stop = mutator.functor(anm_table, item)
- if stop then break end
- end
-
- -- Animation (No Mutation): Clear all flags if holstering weapon
- if anm_table.anm_name == "anm_hide" or anm_table.anm_name == "anm_hide_empty" then
- active_flags = {}
- end
-
- -- Sound: Check if weapon has a valid scripted sound in config
- local anm_name = anm_table.anm_name
-
- local snd_name = get_sound_from_anm(anm_name)
-
- local snd_value = SYS_GetParam(0, section, snd_name)
- if not snd_value then return end
-
- local snd_values = str_explode(snd_value,",")
- local snd_path = snd_values[1]
- local never_cancel = snd_values[2]
-
- -- Play sound
- local snd_obj = get_safe_sound_object( snd_path, item:section() )
- if not snd_obj then return end
-
- if never_cancel then
- snd_obj:play_no_feedback(db.actor, sound_object.s2d, 0, vector(), 1.0, 1.0)
- else
- snd_obj:play(db.actor, 0, sound_object.s2d)
- end
-end
-
-function on_game_start()
- RegisterScriptCallback("actor_on_hud_animation_play",actor_on_hud_animation_play)
-end
diff --git a/mods/M14 Reanimation/gamedata/scripts/aol_anim_transitions.script b/mods/M14 Reanimation/gamedata/scripts/aol_anim_transitions.script
deleted file mode 100644
index 959a37ab..00000000
--- a/mods/M14 Reanimation/gamedata/scripts/aol_anim_transitions.script
+++ /dev/null
@@ -1,169 +0,0 @@
-local common = animation_common
-
-valid_anims = {}
-local mutate_anim = animation_common.mutate_anim
-function animation_common.mutate_anim(anm_table, anm_suffix, section)
- table.insert(valid_anims, anm_suffix)
- return mutate_anim(anm_table, anm_suffix, section)
-end
-
-transitions = {
-}
-
-function add_strict_transition(hud_section, start_anm, end_anm, transition_anm)
- if not (hud_section and start_anm and end_anm and transition_anm) then
- printf("[ERROR] aol_anim_transitions: Could not add new transition (a parameter was nil)")
- return
- end
-
- -- Make sure transitions is properly set as a table of tables
- transitions[hud_section] = transitions[hud_section] or {}
- transitions[hud_section][start_anm] = transitions[hud_section][start_anm] or {}
-
- transitions[hud_section][start_anm][end_anm] = transition_anm
-end
-
-pattern_transitions = {
-}
-
-function add_pattern_transition(hud_section, start_anm, end_anm, transition_anm, priority)
- priority = priority or 25565
- if not (hud_section and start_anm and end_anm and transition_anm) then
- printf("[ERROR] aol_anim_transitions: Could not add new transition (a parameter was nil)")
- return
- end
-
- pattern_transitions[hud_section] = pattern_transitions[hud_section] or {}
- table.insert(pattern_transitions[hud_section], {
- ["start_anm"] = start_anm,
- ["end_anm"] = end_anm,
- ["transition_anm"] = transition_anm,
- ["priority"] = priority
- })
-end
-
-local ini_items = ini_file("system.ltx")
-local function itr(section)
- local is_hud_section = section:match('_hud$')
- if is_hud_section then
- local line_count = ini_items:line_count(section)
- for i=0,line_count-1 do
- local result, id, value = ini_items:r_line_ex(section,i,"","")
-
- local is_strict_transition = id:match("^ts_strict_")
- if is_strict_transition then
- local anm_names = str_explode(value,",")
- add_strict_transition(section, anm_names[1], anm_names[2], anm_names[3])
- end
-
- local is_pattern_transition = id:match("^ts_pattern_")
- if is_pattern_transition then
- local anm_names = str_explode(value,",")
- add_pattern_transition(section, anm_names[1], anm_names[2], anm_names[3], anm_names[4])
- end
- end
- end
- return false
-end
-ini_items:section_for_each(itr)
-table.sort(pattern_transitions, function(a,b) return a["priority"] < b["priority"] end)
-
-local previous_anms = {}
-
-function set_strict_transition(anm_table, hud_section)
- -- Make sure item has transitions
- local item_transitions = transitions[hud_section]
- if not (item_transitions) then
- -- previous_anms[hud_section] = anm_table.anm_name
- return false
- end
-
- -- Make sure there is a previous anm to check
- local start_anm = previous_anms[hud_section]
- if not start_anm then
- -- previous_anms[hud_section] = anm_table.anm_name
- return false
- end
-
- -- Get transition anm from table
- local end_anm = anm_table.anm_name
- local transition_anm = item_transitions[start_anm] and item_transitions[start_anm][end_anm]
- if not (transition_anm) then
- -- previous_anms[hud_section] = anm_table.anm_name
- return false
- end
-
- -- Re-add valid suffixes from previous mutations
- for i, anm_suffix in ipairs(valid_anims) do
- if animation_common.has_animation(hud_section, transition_anm .. anm_suffix) then
- transition_anm = transition_anm .. anm_suffix
- end
- end
-
- anm_table.anm_name = transition_anm
- return true
-end
-
-function set_pattern_transition(anm_table, hud_section)
- -- Make sure item has transitions
- local item_transitions = pattern_transitions[hud_section]
- if not item_transitions then
- return false
- end
-
- -- Make sure there is a previous anm to check
- local start_anm = previous_anms[hud_section]
- if not start_anm then
- -- previous_anms[hud_section] = anm_table.anm_name
- return false
- end
-
-
- local end_anm = anm_table.anm_name
- for _, transition in ipairs(item_transitions) do
- local transition_anm = transition["transition_anm"]
- -- Re-add valid suffixes from previous mutations
- for i, anm_suffix in ipairs(valid_anims) do
- if animation_common.has_animation(hud_section, transition_anm .. anm_suffix) then
- transition_anm = transition_anm .. anm_suffix
- end
- end
-
- if end_anm:match(transition["end_anm"]) and
- start_anm:match(transition["start_anm"]) and
- start_anm ~= transition_anm and
- end_anm ~= transition_anm and
- start_anm ~= end_anm then
-
- anm_table.anm_name = transition_anm
- return true
- end
- end
- return false
-end
-
-function anm_transitions(anm_table, item)
- -- printf("ITEM: " .. item:section() .. " | ANM: " .. anm_table.anm_name)
- local hud_section = SYS_GetParam(0, item:section(), "hud", nil)
- if not hud_section then
- return
- end
-
- local has_strict_transition = set_strict_transition(anm_table, hud_section)
-
- if not has_strict_transition then
- set_pattern_transition(anm_table, hud_section)
- end
-
- -- Track now playing animation
- previous_anms[hud_section] = anm_table.anm_name
-
- -- Clear valid anims
- valid_anims = {}
-
- -- printf("ITEM: " .. item:section() .. " | ANM: " .. anm_table.anm_name)
-end
-
-function on_game_start()
- common.add_anim_mutator(anm_transitions, 999)
-end
\ No newline at end of file
diff --git a/mods/M14 Reanimation/gamedata/scripts/aol_sprint_cancel.script b/mods/M14 Reanimation/gamedata/scripts/aol_sprint_cancel.script
deleted file mode 100644
index 2c66d7a4..00000000
--- a/mods/M14 Reanimation/gamedata/scripts/aol_sprint_cancel.script
+++ /dev/null
@@ -1,47 +0,0 @@
--- The idea is to stop the walk2sprint animation if the player stops sprinting during the animation
-
--- Use my transition animations script as 'truth' for currently playing animation
--- Likely to break if multiple scripts are using actor_on_hud_animation_play, but should be good enough for transition animations specifically
-local current_animation = ""
-local stop_animation = false
-
--- Slightly cleaner string equivalence check which should ignore variants like _empty or _jammed
-function isAnimationEqualTo(anim_name)
- if current_animation:match(anim_name) then
- return true
- end
- return false
-end
-
-aol_anim_transitions_anm_transitions = aol_anim_transitions.anm_transitions
-function aol_anim_transitions.anm_transitions(anm_table, item)
- local prev_name = anm_table.anm_name
- aol_anim_transitions_anm_transitions(anm_table, item)
- -- Restore original animation (probably idle) if previous animation was cancelled
- -- This should prevent sprint2walk from playing if its counterpart walk2sprint was cancelled
- if stop_animation then
- stop_animation = false
- if (isAnimationEqualTo("anm_walk2sprint") or isAnimationEqualTo("anm_sprint2walk")) then
- anm_table.anm_name = prev_name
- end
- end
- current_animation = anm_table.anm_name
-end
-
--- Detect if the player is not sprinting during the walk2sprint animation
--- Firebreath: added the elseif in because sometimes the player stops sprint animation
--- when interrupted by small obstacles like stairs
-function actor_on_movement_changed(num)
- if stop_animation then return end
- if (not IsMoveState("mcSprint") and isAnimationEqualTo("anm_walk2sprint")) then
- stop_animation = true
- game.stop_hud_motion()
- elseif (IsMoveState("mcSprint") and isAnimationEqualTo("anm_sprint2walk")) then
- stop_animation = true
- game.stop_hud_motion()
- end
-end
-
-function on_game_start()
- RegisterScriptCallback("actor_on_movement_changed",actor_on_movement_changed)
-end
diff --git a/mods/M14 Reanimation/gamedata/scripts/shotgun_unjam_fix.script b/mods/M14 Reanimation/gamedata/scripts/shotgun_unjam_fix.script
deleted file mode 100644
index f1cc7c94..00000000
--- a/mods/M14 Reanimation/gamedata/scripts/shotgun_unjam_fix.script
+++ /dev/null
@@ -1,58 +0,0 @@
-common = animation_common
-
-function block_shotgun_reload(anm_table, item)
- -- Ignore weapons without unjam animation
- if not common.has_animation(item:section(), "anm_reload_misfire") then
- return
- end
-
- -- Exit early
- if not (IsShotgun(item)
- and anm_table.anm_name == "anm_open"
- and item:cast_Weapon():IsMisfire()) then
- return
- end
-
- -- Cancel shotgun reload
- anm_table.anm_name = "$cancel"
-
- -- Play unjam animation and sound
- CreateTimeEvent("shotgun_unjam_fix", "start_unjam", 0.001, function(wpn)
- wpn:play_hud_motion("anm_reload_misfire", true, 0, 1, 0)
-
- -- Allow sound cancel if animation is interrupted
- local sound_path = SYS_GetParam(0, wpn:section(), "snd_reload_misfire")
- if sound_path then
- local sound = common.get_safe_sound_object(sound_path, wpn:section())
- sound:play(db.actor, 0, sound_object.s2d)
- end
-
- common.set_flag("SHOTGUN_UNJAM")
- return true
- end, item)
-
- -- Stop checks for variants
- return true
-end
-common.add_anim_mutator(block_shotgun_reload, -9999)
-
-function actor_on_hud_animation_end(item,section,motion,state,slot)
- -- Clear jam when unjam anim ends
- if common.get_flag("SHOTGUN_UNJAM") then
- item:cast_Weapon():SetMisfire(false)
- common.remove_flag("SHOTGUN_UNJAM")
- end
-end
-
--- Stop unjam spam
-function on_before_key_press(dik, bind, dis, flags)
- if bind == key_bindings.kWPN_RELOAD
- and common.get_flag("SHOTGUN_UNJAM") then
- flags.ret_value = false
- end
-end
-
-function on_game_start()
- RegisterScriptCallback("actor_on_hud_animation_end",actor_on_hud_animation_end)
- RegisterScriptCallback("on_before_key_press",on_before_key_press)
-end
\ No newline at end of file
diff --git a/mods/M14 Reanimation/gamedata/scripts/uni_anim_ammo.script b/mods/M14 Reanimation/gamedata/scripts/uni_anim_ammo.script
deleted file mode 100644
index 1b372944..00000000
--- a/mods/M14 Reanimation/gamedata/scripts/uni_anim_ammo.script
+++ /dev/null
@@ -1,12 +0,0 @@
-local common = animation_common
-
--- Animation: Append with '_ammoX' if weapon has X amount of ammo left
-local function anm_ammo(anm_table, item)
- local section = item:section()
- local ammo_amount = item:get_ammo_in_magazine()
-
- local suffix = "_ammo" .. ammo_amount
-
- common.mutate_anim(anm_table, suffix, section)
-end
-common.add_anim_mutator(anm_ammo, 3.5)
\ No newline at end of file
diff --git a/mods/M14 Reanimation/gamedata/scripts/uni_anim_core.script b/mods/M14 Reanimation/gamedata/scripts/uni_anim_core.script
deleted file mode 100644
index 10ba5097..00000000
--- a/mods/M14 Reanimation/gamedata/scripts/uni_anim_core.script
+++ /dev/null
@@ -1,126 +0,0 @@
-local common = animation_common
-
--- Flags
-common.add_flag("SHOTGUN_PUMP")
-
--------------------------------------------------
--- Animation Mutators
--------------------------------------------------
--- Animation: Append animation name with '_empty' if weapon is empty and has valid anim for it
-local function anm_empty(anm_table, item)
- local section = item:section()
- if IsWeapon(item) and item.get_ammo_in_magazine then
- local ammo = item:get_ammo_in_magazine()
- -- check if weapon is empty
- if ammo == 0 then
- -- check if anim is defined in config
- common.mutate_anim(anm_table, "_empty", section)
- common.set_flag("SHOTGUN_PUMP")
- end
- end
-end
-common.add_anim_mutator(anm_empty, 1)
-
--- Animation: Append with '_g' if weapon has a grenade launcher and can fire a grenade
--- Append with '_w_gl' if weapon has a grenade launcher, but is not in GL mode (can fire bullets)
--- Append with '_alt' if weapon does not have a GL, but is in alt aim mode
-local function anm_alt_modes(anm_table, item)
- local section = item:section()
- local alt = item:weapon_in_grenade_mode()
- local has_gl = utils_item.has_attached_gl(item)
-
- if alt and has_gl then
- common.mutate_anim(anm_table, "_g", section)
- elseif has_gl then
- common.mutate_anim(anm_table, "_w_gl", section)
- elseif alt then
- common.mutate_anim(anm_table, "_alt", section)
- end
-end
-common.add_anim_mutator(anm_alt_modes, 1.1)
-
--- Animation: Append with '_aim' is player is aiming down sights
-local function anm_ads(anm_table, item)
- local section = item:section()
-
- local wpn = item:cast_Weapon()
- if not wpn then return end
-
- if wpn:IsZoomed() then
- common.mutate_anim(anm_table, "_aim", section)
- end
-end
-common.add_anim_mutator(anm_ads, 1.3)
-
--- Animation: Append with '_jammed' if weapon misfires (vanilla) or fails to eject (WPO)
--- Append with '_superjammed' if magazine needs to be removed before unjam (WPO)
-local function anm_jammed(anm_table, item)
- local section = item:section()
- local jam_type = nil
- -- Check for WPO jams
- if arti_jamming then
- local jam_status = arti_jamming.get_jam_status(item:id())
- if jam_status == arti_jamming.JamType.FailureToEject then
- jam_type = "_jammed"
- elseif jam_status == arti_jamming.JamType.DoubleFeed then
- jam_type = "_superjammed"
- end
- end
- -- Check for vanilla jams (vanilla jams appear in anm_shots before WPO catches them)
- if not jam_type then
- local wpn = item:cast_Weapon()
- if not wpn then return end
-
- jam_type = item:cast_Weapon():IsMisfire() and "_jammed" or nil
- end
- if jam_type then
- local success = common.mutate_anim(anm_table, jam_type, section)
-
- -- Fallback to '_jammed' if '_superjammed' does not exist
- if not success and jam_type == "_superjammed" then
- common.mutate_anim(anm_table, jam_type, section)
- end
- end
-end
-common.add_anim_mutator(anm_jammed, 2)
-
--- Animation: Prepend with _pump if performing empty reload
-local function anm_pump(anm_table, item)
- local section = item:section()
- if common.get_flag("SHOTGUN_PUMP") then
- if anm_table.anm_name == "anm_close" then
- common.mutate_anim(anm_table, "_pump", section)
-
- -- Clear flag
- common.remove_flag("SHOTGUN_PUMP")
- end
- end
-end
-common.add_anim_mutator(anm_pump, 3)
-
--- Animation: Randomly select between variants of the same animation
-local function anm_variants(anm_table, item)
- local section = item:section()
- local variants = {anm_table.anm_name}
- local i = 2
- while (true) do
- local anm_variant = anm_table.anm_name .. "_variant" .. (i-1)
- if common.has_animation(section, anm_variant) then
- variants[i] = "_variant" .. (i-1)
- else
- break
- end
- i = i + 1
- end
- if #variants > 1 then
- local rand_i = random_number(1, #variants)
- common.mutate_anim(anm_table, variants[rand_i], section)
- end
-end
-common.add_anim_mutator(anm_variants, 4)
-
--------------------------------------------------
--- Callbacks
--------------------------------------------------
-function on_game_start()
-end
\ No newline at end of file
diff --git a/mods/M14 Reanimation/gamedata/scripts/unjam_motion_mark.script b/mods/M14 Reanimation/gamedata/scripts/unjam_motion_mark.script
deleted file mode 100644
index 4693fb90..00000000
--- a/mods/M14 Reanimation/gamedata/scripts/unjam_motion_mark.script
+++ /dev/null
@@ -1,10 +0,0 @@
--- Clear jam mid animation with motion marks
-function actor_on_hud_animation_mark(state, mark)
- if mark == "clear_jam" then
- db.actor:active_item():cast_Weapon():SetMisfire(false)
- end
-end
-
-function on_game_start()
- RegisterScriptCallback("actor_on_hud_animation_mark",actor_on_hud_animation_mark)
-end
diff --git a/mods/M14 Reanimation/gamedata/sounds/weapons/librarian_m14/unjam_empty.ogg b/mods/M14 Reanimation/gamedata/sounds/weapons/librarian_m14/unjam_empty.ogg
new file mode 100644
index 00000000..c79963c4
--- /dev/null
+++ b/mods/M14 Reanimation/gamedata/sounds/weapons/librarian_m14/unjam_empty.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:ab13357de533da10b48a153ef0c8931b506c1a2064a51612d7183ef8e59795b3
+size 9090
diff --git a/mods/M14 Reanimation/gamedata/textures/ui/ui_icon_m14.dds b/mods/M14 Reanimation/gamedata/textures/ui/ui_icon_m14.dds
index ec95a1bc..8720483c 100644
--- a/mods/M14 Reanimation/gamedata/textures/ui/ui_icon_m14.dds
+++ b/mods/M14 Reanimation/gamedata/textures/ui/ui_icon_m14.dds
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:ef2cf4036292ece53ec28b95e37ff95c99b59fd76c836543f262dc42a30b9b01
-size 30128
+oid sha256:8f45883c89dbe2b54e6a2c10f2eedb0f28d4bacb58f4fea8d116e7d6ac358a7a
+size 230528
diff --git a/mods/M14 Reanimation/gamedata/textures/ui/ui_icon_mk14.dds b/mods/M14 Reanimation/gamedata/textures/ui/ui_icon_mk14.dds
deleted file mode 100644
index ac323f20..00000000
--- a/mods/M14 Reanimation/gamedata/textures/ui/ui_icon_mk14.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:d431e56847508943f680ea6fdaff50cd9e34a77c32737865aa893c3a5f2b9ae2
-size 30128
diff --git a/mods/M14 Reanimation/meta.ini b/mods/M14 Reanimation/meta.ini
index 0d75d329..d999c9d7 100644
--- a/mods/M14 Reanimation/meta.ini
+++ b/mods/M14 Reanimation/meta.ini
@@ -1,11 +1,11 @@
[General]
gameName=stalkeranomaly
modid=0
-version=d2024.3.12.0
+version=d2024.4.3.0
newestVersion=
category="5,"
nexusFileStatus=1
-installationFile=M14_Reanimation1.3.zip
+installationFile=M14_Reanimation1.4.1.2.zip
repository=Nexus
ignoredVersion=
comments=
diff --git a/mods/MP5 Reanimation/gamedata/configs/items/weapons/w_mp5.ltx b/mods/MP5 Reanimation/gamedata/configs/items/weapons/w_mp5.ltx
index d8ccca96..2741d012 100644
--- a/mods/MP5 Reanimation/gamedata/configs/items/weapons/w_mp5.ltx
+++ b/mods/MP5 Reanimation/gamedata/configs/items/weapons/w_mp5.ltx
@@ -241,8 +241,8 @@ visual = dynamics\weapons\wpn_mp5\wpn_mp5_eot.
[wpn_mp5_eot_hud]:wpn_mp5_hud
item_visual = anomaly_weapons\wpn_mp5\wpn_mp5_eot_hud.ogf
-aim_hud_offset_pos = -0.083305, 0.007956, 0.058096
-aim_hud_offset_pos_16x9 = -0.083305, 0.007956, 0.058096
+aim_hud_offset_pos = -0.083305, 0.007956, -0.096862
+aim_hud_offset_pos_16x9 = -0.083305, 0.007956, -0.096862
aim_hud_offset_rot = 0.010731, 0.000589, 0
aim_hud_offset_rot_16x9 = 0.010731, 0.000589, 0
@@ -263,8 +263,8 @@ visual = dynamics\weapons\wpn_mp5\wpn_mp5_ac10
[wpn_mp5_ac10632_hud]:wpn_mp5_hud
item_visual = anomaly_weapons\wpn_mp5\wpn_mp5_ac10632_hud.ogf
-aim_hud_offset_pos = -0.083093, 0.007822, 0
-aim_hud_offset_pos_16x9 = -0.083093, 0.007822, 0
+aim_hud_offset_pos = -0.083093, 0.007822, -0.094982
+aim_hud_offset_pos_16x9 = -0.083093, 0.007822, -0.094982
aim_hud_offset_rot = -0.002485, 0.000642, 0
aim_hud_offset_rot_16x9 = -0.002485, 0.000642, 0
@@ -295,8 +295,8 @@ zoom_rotate_time = 0.25
item_visual = anomaly_weapons\wpn_mp5\wpn_mp5_acog_hud.ogf
-aim_hud_offset_pos = -0.083093, 0.007822, 0.216247
-aim_hud_offset_pos_16x9 = -0.083093, 0.007822, 0.216247
+aim_hud_offset_pos = -0.083093, 0.008674, -0.136209
+aim_hud_offset_pos_16x9 = -0.083093, 0.008674, -0.136209
aim_hud_offset_rot = -0.002485, 0.000642, 0
aim_hud_offset_rot_16x9 = -0.002485, 0.000642, 0
@@ -558,8 +558,8 @@ visual = dynamics\weapons\wpn_mp5\wpn_mp5_ac10
[wpn_mp5_ac10632_nimble_hud]:wpn_mp5_nimble_hud
item_visual = anomaly_weapons\wpn_mp5\wpn_mp5_ac10632_nimble_hud.ogf
-aim_hud_offset_pos = -0.083093, 0.007822, 0
-aim_hud_offset_pos_16x9 = -0.083093, 0.007822, 0
+aim_hud_offset_pos = -0.083093, 0.007822, -0.094982
+aim_hud_offset_pos_16x9 = -0.083093, 0.007822, -0.094982
aim_hud_offset_rot = -0.002485, 0.000642, 0
aim_hud_offset_rot_16x9 = -0.002485, 0.000642, 0
@@ -583,8 +583,8 @@ visual = dynamics\weapons\wpn_mp5\wpn_mp5_acog
[wpn_mp5_acog_nimble_hud]:wpn_mp5_nimble_hud
item_visual = anomaly_weapons\wpn_mp5\wpn_mp5_acog_nimble_hud.ogf
-aim_hud_offset_pos = -0.083093, 0.007822, 0.216247
-aim_hud_offset_pos_16x9 = -0.083093, 0.007822, 0.216247
+aim_hud_offset_pos = -0.083093, 0.008674, -0.136209
+aim_hud_offset_pos_16x9 = -0.083093, 0.008674, -0.136209
aim_hud_offset_rot = -0.002485, 0.000642, 0
aim_hud_offset_rot_16x9 = -0.002485, 0.000642, 0
@@ -604,8 +604,8 @@ visual = dynamics\weapons\wpn_mp5\wpn_mp5_eot_
[wpn_mp5_eot_nimble_hud]:wpn_mp5_nimble_hud
item_visual = anomaly_weapons\wpn_mp5\wpn_mp5_eot_nimble_hud.ogf
-aim_hud_offset_pos = -0.083305, 0.007956, 0.058096
-aim_hud_offset_pos_16x9 = -0.083305, 0.007956, 0.058096
+aim_hud_offset_pos = -0.083305, 0.007956, -0.096862
+aim_hud_offset_pos_16x9 = -0.083305, 0.007956, -0.096862
aim_hud_offset_rot = 0.010731, 0.000589, 0
aim_hud_offset_rot_16x9 = 0.010731, 0.000589, 0
@@ -720,8 +720,8 @@ visual = dynamics\weapons\wpn_mp5sd\wpn_mp5sd_
[wpn_mp5sd_eot_hud]:wpn_mp5sd_hud
item_visual = anomaly_weapons\wpn_mp5sd\wpn_mp5sd_eot_hud.ogf
-aim_hud_offset_pos = -0.083305, 0.007956, 0.058096
-aim_hud_offset_pos_16x9 = -0.083305, 0.007956, 0.058096
+aim_hud_offset_pos = -0.083305, 0.007956, -0.096862
+aim_hud_offset_pos_16x9 = -0.083305, 0.007956, -0.096862
aim_hud_offset_rot = 0.010731, 0.000589, 0
aim_hud_offset_rot_16x9 = 0.010731, 0.000589, 0
@@ -742,8 +742,8 @@ visual = dynamics\weapons\wpn_mp5sd\wpn_mp5sd_
[wpn_mp5sd_ac10632_hud]:wpn_mp5sd_hud
item_visual = anomaly_weapons\wpn_mp5sd\wpn_mp5sd_ac10632_hud.ogf
-aim_hud_offset_pos = -0.083093, 0.007822, 0
-aim_hud_offset_pos_16x9 = -0.083093, 0.007822, 0
+aim_hud_offset_pos = -0.083093, 0.007822, -0.094982
+aim_hud_offset_pos_16x9 = -0.083093, 0.007822, -0.094982
aim_hud_offset_rot = -0.002485, 0.000642, 0
aim_hud_offset_rot_16x9 = -0.002485, 0.000642, 0
@@ -766,8 +766,8 @@ hud = wpn_mp5sd_acog_hud
[wpn_mp5sd_acog_hud]:wpn_mp5sd_hud,hud_low_interia
item_visual = anomaly_weapons\wpn_mp5sd\wpn_mp5sd_acog_hud.ogf
-aim_hud_offset_pos = -0.083093, 0.007822, 0.216247
-aim_hud_offset_pos_16x9 = -0.083093, 0.007822, 0.216247
+aim_hud_offset_pos = -0.083093, 0.008674, -0.136209
+aim_hud_offset_pos_16x9 = -0.083093, 0.008674, -0.136209
aim_hud_offset_rot = -0.002485, 0.000642, 0
aim_hud_offset_rot_16x9 = -0.002485, 0.000642, 0
diff --git a/mods/MP5 Reanimation/gamedata/meshes/anomaly_weapons/Old Animation.zip b/mods/MP5 Reanimation/gamedata/meshes/anomaly_weapons/Old Animation.zip
new file mode 100644
index 00000000..ad826fe0
Binary files /dev/null and b/mods/MP5 Reanimation/gamedata/meshes/anomaly_weapons/Old Animation.zip differ
diff --git a/mods/MP5 Reanimation/gamedata/meshes/anomaly_weapons/hud_animation/wpn_mplimo_hud_animation.omf b/mods/MP5 Reanimation/gamedata/meshes/anomaly_weapons/hud_animation/wpn_mplimo_hud_animation.omf
index 23a3117f..0590da4d 100644
Binary files a/mods/MP5 Reanimation/gamedata/meshes/anomaly_weapons/hud_animation/wpn_mplimo_hud_animation.omf and b/mods/MP5 Reanimation/gamedata/meshes/anomaly_weapons/hud_animation/wpn_mplimo_hud_animation.omf differ
diff --git a/mods/MP5 Reanimation/gamedata/meshes/anomaly_weapons/hud_hands_animation/wpn_mplimo_hud_hand_animation.omf b/mods/MP5 Reanimation/gamedata/meshes/anomaly_weapons/hud_hands_animation/wpn_mplimo_hud_hand_animation.omf
index 94567ec6..a2309489 100644
Binary files a/mods/MP5 Reanimation/gamedata/meshes/anomaly_weapons/hud_hands_animation/wpn_mplimo_hud_hand_animation.omf and b/mods/MP5 Reanimation/gamedata/meshes/anomaly_weapons/hud_hands_animation/wpn_mplimo_hud_hand_animation.omf differ
diff --git a/mods/MP5 Reanimation/gamedata/meshes/anomaly_weapons/wpn_mplimo_hud_hand_animation.omf b/mods/MP5 Reanimation/gamedata/meshes/anomaly_weapons/wpn_mplimo_hud_hand_animation.omf
new file mode 100644
index 00000000..4bf12d83
Binary files /dev/null and b/mods/MP5 Reanimation/gamedata/meshes/anomaly_weapons/wpn_mplimo_hud_hand_animation.omf differ
diff --git a/mods/MP5 Reanimation/gamedata/meshes/dynamics.zip b/mods/MP5 Reanimation/gamedata/meshes/dynamics.zip
new file mode 100644
index 00000000..4f23718e
Binary files /dev/null and b/mods/MP5 Reanimation/gamedata/meshes/dynamics.zip differ
diff --git a/mods/MP5 Reanimation/meta.ini b/mods/MP5 Reanimation/meta.ini
index a6643208..cda952b2 100644
--- a/mods/MP5 Reanimation/meta.ini
+++ b/mods/MP5 Reanimation/meta.ini
@@ -1,11 +1,11 @@
[General]
gameName=stalkeranomaly
modid=0
-version=d2024.3.12.0
+version=d2024.4.2.0
newestVersion=
category="5,"
nexusFileStatus=1
-installationFile=MP5_Reanimation1.1.zip
+installationFile=MP5_Reanimation1.2.zip
repository=
ignoredVersion=
comments=
@@ -26,6 +26,6 @@ tracked=0
BAIN%20Installer\option0=MP5 Reanimation
[installedFiles]
-size=1
1\modid=0
+size=1
1\fileid=0
diff --git a/mods/Mutant Loot Chance/gamedata/configs/text/eng/st_cxv_mutant_loot.xml b/mods/Mutant Loot Chance/gamedata/configs/text/eng/st_cxv_mutant_loot.xml
index 7f6dc3ea..38a70592 100644
--- a/mods/Mutant Loot Chance/gamedata/configs/text/eng/st_cxv_mutant_loot.xml
+++ b/mods/Mutant Loot Chance/gamedata/configs/text/eng/st_cxv_mutant_loot.xml
@@ -56,7 +56,7 @@
Other Mutant Loot Chance Multiplier
-
+
Multiplies the base drop chance of other mutant loot not mentioned above by this value (1.2 * 50% = 60%).
diff --git a/mods/Mutant Loot Chance/gamedata/configs/text/rus/st_cxv_mutant_loot.xml b/mods/Mutant Loot Chance/gamedata/configs/text/rus/st_cxv_mutant_loot.xml
index 7280eb16..5e076e95 100644
--- a/mods/Mutant Loot Chance/gamedata/configs/text/rus/st_cxv_mutant_loot.xml
+++ b/mods/Mutant Loot Chance/gamedata/configs/text/rus/st_cxv_mutant_loot.xml
@@ -56,7 +56,7 @@
-
+
, , (1,2 * 50% = 60%).
diff --git a/mods/Mutant Loot Chance/gamedata/scripts/zzzzz_cxv_ui_mutant_loot_monkeypatch.script b/mods/Mutant Loot Chance/gamedata/scripts/zzzzz_cxv_ui_mutant_loot_monkeypatch.script
index b4923b13..c96080c5 100644
--- a/mods/Mutant Loot Chance/gamedata/scripts/zzzzz_cxv_ui_mutant_loot_monkeypatch.script
+++ b/mods/Mutant Loot Chance/gamedata/scripts/zzzzz_cxv_ui_mutant_loot_monkeypatch.script
@@ -59,6 +59,10 @@ function ui_mutant_loot.loot_mutant(section, clsid, loot_table, npc, dont_create
local possible_items = utils_data.collect_section(ini_mutant, mutant)
+ if #possible_items < 1 then
+ printf("[CXV Mutant Loot] Mutant has no loot table. No modifications will be done...")
+ end
+
local sim = alife()
local npc_id = npc and npc:id()
local npc_pos = npc and npc:position()
@@ -80,13 +84,13 @@ function ui_mutant_loot.loot_mutant(section, clsid, loot_table, npc, dont_create
part_kind = get_part_kind(sec)
if part_kind and mutant_part_guaranteed[part_kind] == true then
- printf("[CXV Mutant Loot] %s will be guaranteed (%s)", sec, part_kind)
+ -- printf("[CXV Mutant Loot] %s will be guaranteed (%s)", sec, part_kind)
chance = 1
elseif part_kind and mutant_part_chance_mult[part_kind] then
- printf("[CXV Mutant Loot] %s will have its chances increased by %sx (%s)", sec, mutant_part_chance_mult[part_kind], part_kind)
+ -- printf("[CXV Mutant Loot] %s will have its chances increased by %sx (%s)", sec, mutant_part_chance_mult[part_kind], part_kind)
chance = (loot[3] and (loot[3] * mutant_part_chance_mult[part_kind])) or 1
else
- printf("[CXV Mutant Loot] %s will have its chances increased by %sx (%s)", sec, mutant_other_chance_mult, part_kind)
+ -- printf("[CXV Mutant Loot] %s will have its chances increased by %sx (%s)", sec, mutant_other_chance_mult, part_kind)
chance = (loot[3] and (loot[3] * mutant_other_chance_mult)) or 1
end
else
@@ -123,7 +127,7 @@ function ui_mutant_loot.loot_mutant(section, clsid, loot_table, npc, dont_create
end
end
- if not was_loot_given and is_cxv_enabled and failsafe_loot then
+ if not was_loot_given and is_cxv_enabled and failsafe_loot and (#possible_items > 0) then
printf("[CXV Mutant Loot] No loot was given. Attempting loot failsafe...")
loot = str_explode(possible_items[math.random(1,#possible_items)],",")
if (loot and loot[1] and loot[2]) then
diff --git a/mods/Mutant Loot Chance/meta.ini b/mods/Mutant Loot Chance/meta.ini
index 5b2ffa7a..7edb160e 100644
--- a/mods/Mutant Loot Chance/meta.ini
+++ b/mods/Mutant Loot Chance/meta.ini
@@ -1,12 +1,12 @@
[General]
gameName=stalkeranomaly
modid=0
-version=d2024.4.1.0
+version=d2024.4.3.0
newestVersion=
category="-1,"
nexusFileStatus=1
-installationFile=Mutant_Loot_Config.zip
-repository=Nexus
+installationFile=Mutant_Loot_Config_-_Update_2.zip
+repository=
ignoredVersion=
comments=
notes=
diff --git a/mods/Mutant Loot Chance_backup/gamedata/configs/text/eng/st_cxv_mutant_loot.xml b/mods/Mutant Loot Chance_backup/gamedata/configs/text/eng/st_cxv_mutant_loot.xml
deleted file mode 100644
index 518b8420..00000000
--- a/mods/Mutant Loot Chance_backup/gamedata/configs/text/eng/st_cxv_mutant_loot.xml
+++ /dev/null
@@ -1,71 +0,0 @@
-
-
-
-
- Mutant Loot Configuration
-
-
-
- Enable Mod?
-
-
- Turning this on will allow the below settings to take effect.
-
-
-
- Give All Mutant Parts?
-
-
- Turning this on will always give you all mutant parts in their loot table, regardless of chance.
-
-
- Mutant Parts Chance Multiplier
-
-
- Multiplies the base drop chance of mutant parts by this value (1.2 * 50% = 60%).
-
-
-
- Give All Mutant Meat?
-
-
- Turning this on will always give you all mutant meat in their loot table, regardless of chance.
-
-
- Mutant Meat Chance Multiplier
-
-
- Multiplies the base drop chance of mutant meat by this value (1.2 * 50% = 60%).
-
-
-
- Give All Mutant Pelts?
-
-
- Turning this on will always give you all mutant pelts in their loot table, regardless of chance.
-
-
- Mutant Pelts Chance Multiplier
-
-
- Multiplies the base drop chance of mutant pelts by this value (1.2 * 50% = 60%).
-
-
-
- Other Mutant Loot Chance Multiplier
-
-
- Multiplies the base drop chance of other mutant loot not mentioned above by this value (1.2 * 50% = 60%).
-
-
-
- Failsafe Loot?
-
-
- Turning this on will guarantee you at least one item when looting mutants (if possible).
-
-
-
-
diff --git a/mods/Mutant Loot Chance_backup/gamedata/scripts/ui_mutant_loot.script b/mods/Mutant Loot Chance_backup/gamedata/scripts/ui_mutant_loot.script
deleted file mode 100644
index 7d584b56..00000000
--- a/mods/Mutant Loot Chance_backup/gamedata/scripts/ui_mutant_loot.script
+++ /dev/null
@@ -1,705 +0,0 @@
-
---[[
- -----------------------------------
- Copyright (C) 2012 Alundaio
-
- This program is free software; you can redistribute and/or modify
- it under the terms of the Open S.T.A.L.K.E.R. Mod License version 1.0.
-
- -----------------------------------
- ponney68
-
- -----------------------------------
- Tronex
- Last edit: 2019/12/17
- Added Loot all button, organized script, inventory cell system, alife spawn handlers
- -----------------------------------
- ilrathCXV
- Last edit: 2024/03/29
- MCM for Loot Chances + edits for DLTX Hunting Backpacks
- -----------------------------------
--]]
-
-
-local ini_mutant = ini_file("items\\settings\\mutant_loot.ltx")
-local get_config = zzz_cxv_mutant_loot_mcm.get_config
-local mcm_defaults = zzz_cxv_mutant_loot_mcm.defaults
-local mcm_check = ui_mcm and zzz_cxv_mutant_loot_mcm
-
-is_cxv_enabled = get_config("enable_mod") or mcm_defaults["enable_mod"] or false
-
--- local sec_kit_hunt = "kit_hunt"
--- local sec_kit_hunt_chance = ini_sys:r_float_ex("kit_hunt","bonus_mutant_part_chance") or 0
-
-local hunting_kits = {
- "kit_hunt",
- "equ_small_military_hunt_pack",
- "equ_military_hunt_pack",
- "equ_tourist_hunt_pack",
-}
-
-local item_prop_table = { cond_r = {30,70} , cond_ct = "part" , cond_cr = {0.5,0.75,1} }
-
--- Loot Mutant
-local MutantLootDecayTime = ini_mutant:r_float_ex("mutant_loot_mod","decay_time") or 7200
-
-local kind_to_section = {
- ["SM_KARLIK"] = "karlik",
- ["SM_PSYSUCKER"] = "psysucker",
- ["SM_LURKER"] = "lurker"
-}
-local clsid_to_section = {
- [clsid.bloodsucker_s] = "bloodsucker",
- [clsid.boar_s] = "boar",
- [clsid.burer_s] = "burer",
- [clsid.chimera_s] = "chimera",
- [clsid.controller_s] = "controller",
- [clsid.dog_s] = "dog",
- [clsid.flesh_s] = "flesh",
- [clsid.gigant_s] = "gigant",
- [clsid.poltergeist_s] = "poltergeist",
- [clsid.psy_dog_s] = "psy_dog",
- [clsid.psy_dog_phantom_s] = "psy_dog",
- [clsid.pseudodog_s] = "pseudodog",
- [clsid.snork_s] = "snork",
- [clsid.tushkano_s] = "tushkano",
- [clsid.cat_s] = "cat",
- [clsid.fracture_s] = "fracture",
- [clsid.zombie_s] = "zombie",
- [clsid.crow] = "crow",
- [clsid.rat_s] = "rat"
-}
-local clsdbg_to_section = {
- ["SM_KARLIK"] = "karlik",
- ["SM_PSYSUCKER"] = "psysucker",
- ["SM_LURKER"] = "lurker"
-}
-
-local killed_mutant_tbl = { -- ponney68: This table based on "species" of mutants
-
--- TRX: A-Life Revamp
- psysucker = {file="ui\\ui_actor_monsters_pda_3",x="393",y="0",type="small"},
- lurker = {file="ui\\ui_actor_monsters_pda_3",x="0",y="0",type="small"},
- karlik = {file="ui\\ui_actor_monsters_pda_3",x="0",y="200",type="small"},
-
- snork = {file="ui\\ui_actor_monsters_pda",x="393",y="0",type="small"},
- dog = {file="ui\\ui_actor_monsters_pda",x="0",y="800",type="small"},
- pseudodog = {file="ui\\ui_actor_monsters_pda",x="393",y="200",type="small"},
- psy_dog = {file="ui\\ui_actor_monsters_pda",x="393",y="200",type="small"},
- poltergeist = {file="ui\\ui_actor_monsters_pda",x="0",y="400",type="small"},
- bloodsucker = {file="ui\\ui_actor_monsters_pda",x="393",y="400",type="human"},
- controller = {file="ui\\ui_actor_monsters_pda",x="393",y="800",type="human"},
- chimera = {file="ui\\ui_actor_monsters_pda",x="0",y="600",type="large"},
- tushkano = {file="ui\\ui_actor_monsters_pda",x="0",y="0",type="small"},
- rat = {file="ui\\ui_actor_monsters_pda",x="0",y="0",type="small"},
- flesh = {file="ui\\ui_actor_monsters_pda",x="393",y="600",type="large"},
- tark = {file="ui\\ui_actor_monsters_pda_2",x="0",y="0",type="human"},
- rotan = {file="ui\\ui_actor_monsters_pda",x="0",y="0",type="human"},
- burer = {file="ui\\ui_actor_monsters_pda_1",x="0",y="0",type="large"},
- boar = {file="ui\\ui_actor_monsters_pda_1",x="393",y="0",type="large"},
- giant = {file="ui\\ui_actor_monsters_pda_1",x="0",y="200",type="large"},
- cat = {file="ui\\ui_actor_monsters_pda_2",x="0",y="0",type="small"},
- fracture = {file="ui\\ui_actor_monsters_pda_2",x="393",y="200",type="human"},
- bird = {file="ui\\ui_actor_monsters_pda_2",x="393",y="0",type="small"},
- zombie = {file="ui\\ui_actor_monsters_pda_2",x="0",y="200",type="human"},
- bloodsucker_arena = {file="ui\\ui_actor_monsters_pda",x="393",y="400",type="human"},
- burer_arena = {file="ui\\ui_actor_monsters_pda_1",x="0",y="0",type="large"},
- pseudodog_arena = {file="ui\\ui_actor_monsters_pda",x="393",y="200",type="small"},
- snork_arena = {file="ui\\ui_actor_monsters_pda",x="393",y="0",type="human"},
-}
-
--- Should specific loot be guaranteed?
-mutant_part_guaranteed = {
- ["i_mutant_part"] = get_config("always_give_parts") or mcm_defaults["always_give_parts"] or false,
- ["i_mutant_raw"] = get_config("always_give_meat") or mcm_defaults["always_give_meat"] or false,
- ["i_mutant_belt"] = get_config("always_give_pelt") or mcm_defaults["always_give_pelt"] or false,
-}
-
-
--- Chance multiplier solely for mutant parts
-mutant_part_chance_mult = {
- ["i_mutant_part"] = get_config("mutant_part_chance_mult") or mcm_defaults["mutant_part_chance_mult"] or 1,
- ["i_mutant_raw"] = get_config("mutant_meat_chance_mult") or mcm_defaults["mutant_meat_chance_mult"] or 1,
- ["i_mutant_belt"] = get_config("mutant_pelt_chance_mult") or mcm_defaults["mutant_pelt_chance_mult"] or 1,
-}
-
-mutant_other_chance_mult = get_config("mutant_other_chance_mult") or mcm_defaults["mutant_other_chance_mult"] or 1
-
-function get_part_kind(sec)
- local kind = sec and ini_sys:r_string_ex(sec,'kind') or nil
- return kind
-end
-
-function loot_mutant(section, clsid, loot_table, npc, dont_create, victim) -- Prepare mutant loot
-
- npc = npc or db.actor
- local clsid = clsid or obj and obj:clsid()
- local kind = section and ini_sys:r_string_ex(section,"kind") or "unknown"
- if not (clsid) then
- return
- end
-
- local loot, sec, count, chance
- local str_explode = str_explode
- local mutant = clsdbg_to_section[kind] or clsid_to_section[clsid]
- local was_loot_given = false
- local failsafe_loot = get_config("failsafe_loot") or mcm_defaults["failsafe_loot"] or false
-
- if victim:section() == "gigant_jumper" then
- mutant = "gigant"
- end
-
- local possible_items = utils_data.collect_section(ini_mutant, mutant)
-
- local sim = alife()
- local npc_id = npc and npc:id()
- local npc_pos = npc and npc:position()
- local npc_lvl_id = npc and npc:level_vertex_id()
- local npc_game_id = npc and npc:game_vertex_id()
-
- -- Spawn items on NPC if he looted the mutant
- for i=1,#possible_items do
- loot = str_explode(possible_items[i],",")
- if (loot and loot[1] and loot[2]) then
- if (not loot[3]) then
- loot[3] = 1
- end
-
- sec = loot[1]
- count = tonumber(loot[2])
-
- if is_cxv_enabled then
- part_kind = get_part_kind(sec)
-
- if part_kind and mutant_part_guaranteed[part_kind] == true then
- -- printf("[UI Mutant Loot] %s will be guaranteed (%s)", sec, part_kind)
- chance = 1
- elseif part_kind and mutant_part_chance_mult[part_kind] then
- -- printf("[UI Mutant Loot] %s will have its chances increased by %sx (%s)", sec, mutant_part_chance_mult[part_kind], part_kind)
- chance = (loot[3] and (loot[3] * mutant_part_chance_mult[part_kind])) or 1
- else
- -- printf("[UI Mutant Loot] %s will have its chances increased by %sx (%s)", sec, mutant_other_chance_mult, part_kind)
- chance = (loot[3] and (loot[3] * mutant_other_chance_mult)) or 1
- end
- else
- printf("[UI Mutant Loot] Mutant Loot MCM not enabled. Defaulting to normal drop chances...")
- chance = loot[3] or 1
- end
-
- for i=1,count do
- if (math.random() <= tonumber(chance)) then
- was_loot_given = true
- -- In case we don't want to bother with loot table
- local se_obj
- if (not dont_create) then
- se_obj = alife_create_item(sec, npc, item_prop_table)
- end
-
- -- Fill loot table if needed
- if (loot_table) then
- local sec_d, uses = utils_item.get_defined_uses(sec)
- if (not loot_table[sec_d]) then
- loot_table[sec_d] = {}
- end
- local c = loot_table[sec_d].count
- c = c and (c + 1) or 1
- loot_table[sec_d].count = c
- if se_obj then
- loot_table[sec_d][c] = se_obj.id
- end
- --printf("loot_mutant")
-
- --[[
- if npc and npc:id() ~= AC_ID then
- se_obj = alife_create_item(sec, npc, item_prop_table)
- end
- --]]
- end
-
- end
- end
- end
- end
-
- if not was_loot_given and is_cxv_enabled and failsafe_loot then
- printf("[UI Mutant Loot] No loot was given. Attempting loot failsafe...")
- loot = str_explode(possible_items[math.random(1,#possible_items)],",")
- if (loot and loot[1] and loot[2]) then
- if (not loot[3]) then
- loot[3] = 1
- end
-
- sec = loot[1]
- count = tonumber(loot[2])
-
- if (not dont_create) then
- se_obj = alife_create_item(sec, npc, item_prop_table)
- end
-
- if (loot_table) then
- local sec_d, uses = utils_item.get_defined_uses(sec)
- if (not loot_table[sec_d]) then
- loot_table[sec_d] = {}
- end
- local c = loot_table[sec_d].count
- c = c and (c + 1) or 1
- loot_table[sec_d].count = c
- if se_obj then
- loot_table[sec_d][c] = se_obj.id
- end
- end
- end
- end
-
-
- -- Unlock relevant mutant article in guide.
- if mutant and npc and (npc:id() == AC_ID) then
- SendScriptCallback("actor_on_interaction", "mutants", nil, mutant)
- end
-
- SendScriptCallback("monster_on_loot_init",victim,loot_table)
-end
-
-----------------------------------------------------------------------
-GUI = nil -- instance, don't touch
-function start(obj, for_bug1, for_bug2)
- if (not obj) then
- printf("!ERROR ui_mutant_loot | no game object passed!")
- return
- end
-
- if (not GUI) then
- GUI = UIMutantLoot()
- end
-
- if (GUI) and (not GUI:IsShown()) then
- local can_show = GUI:Reset(obj, for_bug1, for_bug2)
- if can_show then
- GUI:ShowDialog(true)
- Register_UI("UIMutantLoot","ui_mutant_loot")
- end
- end
-end
-
-
-----------------------------------------------------------------------
--- CALLBACKS
-----------------------------------------------------------------------
-local function monster_on_actor_use_callback(obj,who) -- Open mutant loot UI
-
- -- Return if mutant is already looted
- local looted = se_load_var(obj:id(),obj:name(),"looted")
- if (looted) then
- return
- end
-
- -- This is important so NPCs don't try to loot the corpse the player is looting
- if (obj:clsid() == clsid.crow) then
- save_var(obj, "looted", true)
- else
- se_save_var(obj:id(),obj:name(),"looted",true)
- end
- xr_corpse_detection.set_valuable_loot(obj:id(),false)
-
- -- if mutant corpse is lefted for long time, body is decayed
- local st = db.storage[obj:id()]
- if (st and st.death_time and game.get_game_time():diffSec(st.death_time) > MutantLootDecayTime) then
- actor_menu.set_msg(1, game.translate_string("st_body_decayed"),4)
-
- -- Start the Mutant Loot UI
- else
- start(obj, obj:id(), obj:section(), obj:clsid())
- end
-end
-
-function monster_on_loot_init(obj,t)
- -- t['conserva'] = {
- -- count = 3
- -- }
- -- utils_data.print_table(t,obj and obj:name() or "no_obj")
-end
-
-function on_option_change(mcm)
- if mcm then
- is_cxv_enabled = get_config("enable_mod") or mcm_defaults["enable_mod"] or false
-
- mutant_part_guaranteed = {
- ["i_mutant_part"] = get_config("always_give_parts") or mcm_defaults["always_give_parts"] or false,
- ["i_mutant_raw"] = get_config("always_give_meat") or mcm_defaults["always_give_meat"] or false,
- ["i_mutant_belt"] = get_config("always_give_pelt") or mcm_defaults["always_give_pelt"] or false,
- }
-
- -- Chance multiplier solely for mutant parts
- mutant_part_chance_mult = {
- ["i_mutant_part"] = get_config("mutant_part_chance_mult") or mcm_defaults["mutant_part_chance_mult"] or 1,
- ["i_mutant_raw"] = get_config("mutant_meat_chance_mult") or mcm_defaults["mutant_meat_chance_mult"] or 1,
- ["i_mutant_belt"] = get_config("mutant_pelt_chance_mult") or mcm_defaults["mutant_pelt_chance_mult"] or 1,
- }
-
- mutant_other_chance_mult = get_config("mutant_other_chance_mult") or mcm_defaults["mutant_other_chance_mult"] or 1
- end
-end
-
-function on_game_start()
- RegisterScriptCallback("monster_on_actor_use_callback",monster_on_actor_use_callback)
- RegisterScriptCallback("monster_on_loot_init",monster_on_loot_init)
-
- RegisterScriptCallback("on_option_change",on_option_change)
- on_option_change(mcm_check)
-end
-
-
-
-----------------------------------------------------------------------
--- UI
-----------------------------------------------------------------------
-class "UIMutantLoot" (CUIScriptWnd)
-
-function UIMutantLoot:__init() super()
- self:InitControls()
- self:InitCallBacks()
-end
-
-function UIMutantLoot:__finalize()
-end
-
-function UIMutantLoot:InitControls()
- self:SetWndRect (Frect():set(0,0,1024,768))
- self:SetAutoDelete(true)
-
- self.xml = CScriptXmlInit()
- self.xml:ParseFile ("ui_mutant_loot.xml")
- local xml = self.xml
-
- self.dialog = xml:InitStatic("mutant_loot:background",self)
-
- -- Mutant image
- self.image = self.xml:InitStatic("mutant_loot:image",self.dialog)
-
- -- Loot
- self.frame = xml:InitStatic("mutant_loot:frame",self.dialog)
- self.CC = utils_ui.UICellContainer("loot", self, nil, "mutant_loot:cont_loot", self.dialog)
- self.CC.showcase = true
--- self.CC.can_select = true
- self.CC.disable_drag = true
- self.CC.disable_stack = true
- self.CC:SetGridSpecs(35, 2)
-
- self.item_info = utils_ui.UIInfoItem(self, 1000)
-
- -- Button Loot one
- self.btn_loot_one = xml:Init3tButton("mutant_loot:btn_loot",self.dialog)
- self:Register(self.btn_loot_one, "button_loot")
-
- -- Button Loot all
- self.btn_loot_all = xml:Init3tButton("mutant_loot:btn_loot_all",self.dialog)
- self:Register(self.btn_loot_all, "button_loot_all")
-
- -- Button Cancel
- self.btn_cancel = xml:Init3tButton("mutant_loot:btn_cancel",self.dialog)
- self:Register(self.btn_cancel, "button_cancel")
-end
-
-function UIMutantLoot:InitCallBacks()
- self:AddCallback("button_loot",ui_events.BUTTON_CLICKED,self.OnButton_LootSelected,self)
- self:AddCallback("button_loot_all",ui_events.BUTTON_CLICKED,self.OnButton_LootAll,self)
- self:AddCallback("button_cancel",ui_events.BUTTON_CLICKED,self.Close,self)
-end
-
-function UIMutantLoot:Reset(obj, for_bug1, for_bug2)
- local function is_number(var)
- local function lets_try(var)
- var = tonumber(var)
- return (var > 0) or (var < 0) or var or -var
- end
- if pcall(function() lets_try(var) end) then
- return true
- else
- return false
- end
- end
-
- if not (is_number(obj)) then
- self.section = obj:section()
- self.clsid = obj:clsid()
- self.id = obj:id()
- self.obj = obj
- else
- self.id = obj
- self.section=for_bug1
- self.clsid = for_bug2
- self.obj = nil
- end
-
- self:SetMutantImage()
- return self:FillList()
-end
-
-function UIMutantLoot:Update()
- CUIScriptWnd.Update(self)
-
- -- Highlight selected items
- for idx,ci in pairs(self.CC.cell) do
- if (not ci:IsCursorOverWindow()) then
- if ci.flags.selected then
- ci:Highlight(true,"green")
- else
- ci:Highlight(false)
- end
- end
- end
-
- -- Updating item info box and item cell containers
- local found_cell = self.CC:Update(self.item_info)
- if (not found_cell) then
- self.item_info:Update()
- end
-end
-
--- Utility
-function UIMutantLoot:SetMutantImage()
- local mutant_id = game.translate_string(ini_sys:r_string_ex(self.section,"species") or "")
-
- local kind = ini_sys:r_string_ex(self.section,"kind") or "unknown"
- mutant_id = kind_to_section[kind] or mutant_id
-
- --printf("-MUTANT:"..mutant_id)
-
- local mutant_f = "ui\\ui_actor_monsters_pda_1"
- local mutant_x = 0
- local mutant_y = 0
-
- mutant_f = tostring(killed_mutant_tbl[mutant_id].file)
- mutant_x = tostring(killed_mutant_tbl[mutant_id].x)
- mutant_y = tostring(killed_mutant_tbl[mutant_id].y)
-
- local x1 = mutant_x
- local y1 = mutant_y
- local mutant_width = 393
- local mutant_height = 200
-
- local x2 = x1 + mutant_width
- local y2 = y1 + mutant_height
-
- self.image:InitTexture(tostring(mutant_f))
- self.image:SetTextureRect(Frect():set(x1,y1,x2,y2))
- self.image:SetStretchTexture(true)
-end
-
-function UIMutantLoot:Loot(loot_all)
- local obj_mutant = level.object_by_id(self.id)
- if (not obj_mutant) then
- self:Close()
- return
- end
-
- local is_looted
- local sim = alife()
- local bonus_part_chance = 0
-
- -- Checking in case player has Hunting Backpacks Expanded
- local is_huntkit
- local needs_equipped_hk = ui_options.get("gameplay/general/need_equipped_hkit")
-
- if needs_equipped_hk then
- local backpack = db.actor:item_in_slot(13)
- if backpack then
- backpack_sec = backpack:section()
- bonus_part_chance = ini_sys:r_float_ex(backpack_sec,"bonus_mutant_part_chance") or 0
- if bonus_part_chance > 0 then
- is_huntkit = true
- end
- end
- end
-
- -- Keeping the "Hunting Kit Equipped" option functional
- if not is_huntkit and not needs_equipped_hk then
-
- -- Checking for all types of Hunting Kits
- for i=1,#hunting_kits do
- if db.actor:object(hunting_kits[i]) then
- -- Checking in case a backpack with higher part chance is found (in case people add their own backpacks to the list)
- local temp_chance = ini_sys:r_float_ex(hunting_kits[i],"bonus_mutant_part_chance") or 0
- if temp_chance > bonus_part_chance then
- bonus_part_chance = temp_chance
- -- printf("[UI Mutant Loot] New bonus mutant part chance (%s%) from %s", bonus_part_chance, hunting_kits[i])
- end
- end
- end
-
- end
-
-
- --if (needs_equipped_hk and (backpack and (backpack:section() == sec_kit_hunt))) or (not needs_equipped_hk and db.actor:object(sec_kit_hunt)) then
- -- is_huntkit = true
- --end
-
- -- Spawn selected items, clean from loot table
- if loot_all then
- local tbl = self.loot -- temp
- for sec,t in pairs(tbl) do
- for i=1,t.count do
- is_looted = true
- item_knife.degradate()
-
- alife_create_item(sec, db.actor, item_prop_table)
-
- if is_huntkit and (math.random(100) < bonus_part_chance) then
- alife_create_item(sec, db.actor, item_prop_table)
- end
- self.loot[sec].count = self.loot[sec].count - 1
- if (self.loot[sec].count == 0) then
- self.loot[sec] = nil
- end
- end
- end
- else
- for idx,ci in pairs(self.CC.cell) do
- if ci.flags.selected then
- local sec = ci.section
- is_looted = true
- item_knife.degradate()
-
- alife_create_item(sec, db.actor, item_prop_table)
-
- if is_huntkit and (math.random(100) < bonus_part_chance) then
- alife_create_item(sec, db.actor, item_prop_table)
- end
-
- self.loot[sec].count = self.loot[sec].count - 1
- if self.loot[sec].count == 0 then
- self.loot[sec] = nil
- end
- end
- end
- end
-
- -- If no item is looted, don't proceed
- if (not is_looted) then
- return
- end
-
- -- Animation boost if player has Hunter Kit or Well Dressed Achievement
- if (actor_effects) then
- local boost = (game_achievements.has_achievement("well_dressed") and 1 or 0) + (is_huntkit and 1 or 0)
- if (boost == 2) then
- actor_effects.play_item_fx("mutant_looting_boost_2")
- elseif (boost == 1) then
- actor_effects.play_item_fx("mutant_looting_boost_1")
- else
- actor_effects.play_item_fx("mutant_looting")
- end
- end
- xr_sound.set_sound_play(AC_ID,"inv_mutant_loot_animal")
-
- -- Increat field dressings stat
- game_statistics.increment_statistic("field_dressings")
-
- -- Mutant post-state
- save_var(obj_mutant,"loot",self.loot)
- local is_more_loot = not is_empty(self.loot)
-
- -- Refill loot list if there's loot left
- if ((not actor_effects.is_animations_on()) and is_more_loot) then
- self:FillList()
- else
- self:Close()
- end
-end
-
-function UIMutantLoot:FillList()
-
- --developed by Dimeyne, copied by Wafel
- self.loot = load_var(self.obj,"loot",nil)
- if not self.loot then
- self.loot = {}
- loot_mutant(self.section, self.clsid, self.loot, nil, true, self.obj)
- save_var(self.obj,"loot",self.loot)
- end
-
- local is_there_loot
- local inv = {}
- for sec,t in pairs(self.loot) do
- for i=1,t.count do
- inv[#inv + 1] = sec
- end
- is_there_loot = true
- end
- if (self.obj:clsid() ~= clsid.crow) and load_var(self.obj,"looted",nil) then
- is_there_loot = false
- end
-
- if is_there_loot then
- self:ShowDialog(true)
- self.CC:Reinit(inv)
- return true
- else
- actor_menu.set_msg(1, "st_body_useless",3)
- end
-end
-
-function UIMutantLoot:SetMutantState(is_more_loot, obj_mutant)
-
- obj_mutant = obj_mutant or level.object_by_id(self.id)
- if (is_more_loot == nil) then
- is_more_loot = not is_empty(self.loot)
- end
-
- -- We set mutant state to looted or not if there's loot left, so other NPCs can decide what to do with the corpse
- if obj_mutant then
- if is_more_loot then
- --save_var(obj_mutant,"looted",false)
- se_save_var(obj_mutant:id(),obj_mutant:name(),"looted",false)
- xr_corpse_detection.set_valuable_loot(self.id,true)
- else
- --save_var(obj_mutant,"looted",true)
- se_save_var(obj_mutant:id(),obj_mutant:name(),"looted",true)
- xr_corpse_detection.set_valuable_loot(self.id,false)
- end
- else
- printe("!ERROR ui_mutant_loot | can't retrieve online object of mutant [%s](%s)", self.section, self.id)
- end
-end
-
--- Callbacks
-function UIMutantLoot:On_CC_Mouse1(cont, idx)
- local ci = self.CC.cell[idx]
- if (not ci) then
- return
- end
-
- if (not ci.flags.selected) then
- ci.flags.selected = true
- else
- ci.flags.selected = nil
- end
-end
-
-function UIMutantLoot:OnButton_LootSelected()
- self:Loot(false)
-end
-
-function UIMutantLoot:OnButton_LootAll()
- self:Loot(true)
-end
-
-function UIMutantLoot:Close()
- self:SetMutantState()
- self:HideDialog()
- Unregister_UI("UIMutantLoot")
-end
-
-function UIMutantLoot:OnKeyboard(dik, keyboard_action)
- local res = CUIScriptWnd.OnKeyboard(self,dik,keyboard_action)
- if (res == false) then
- self.CC:OnKeyboard(dik, keyboard_action)
-
- if (dik == DIK_keys.DIK_RETURN) then
- self:OnButton_LootAll()
-
- elseif (dik == DIK_keys.DIK_ESCAPE) then
- self:Close()
- end
- end
- return res
-end
diff --git a/mods/Mutant Loot Chance_backup/gamedata/scripts/zzz_cxv_mutant_loot_mcm.script b/mods/Mutant Loot Chance_backup/gamedata/scripts/zzz_cxv_mutant_loot_mcm.script
deleted file mode 100644
index ebe0ac38..00000000
--- a/mods/Mutant Loot Chance_backup/gamedata/scripts/zzz_cxv_mutant_loot_mcm.script
+++ /dev/null
@@ -1,33 +0,0 @@
-defaults = {
- ["enable_mod"] = false,
- ["mutant_part_chance_mult"] = 1,
- ["mutant_meat_chance_mult"] = 1,
- ["mutant_pelt_chance_mult"] = 1,
- ["mutant_other_chance_mult"] = 1,
- ["always_give_parts"] = false,
- ["always_give_meat"] = false,
- ["always_give_pelt"] = false,
- ["failsafe_loot"] = false,
-}
-
-function get_config(key)
- if ui_mcm then return ui_mcm.get("mutant_loot_config/"..key) else return defaults[key] end
-end
-
-function on_mcm_load()
- local options = {
- id = "mutant_loot_config", sh = true, gr = {
- { id = "title", type = "slide", link = "ui_options_slider_player", text = "ui_mcm_mutant_loot_config_title", size = { 512, 50 }, spacing = 20 },
- {id = "enable_mod", type = "check", val = 1, def = false},
- { id = "always_give_parts", type = "check", val = 1, def = false},
- { id = "mutant_part_chance_mult", type = "track", val = 2, min = 1, max = 5, step = 0.1, def = 1 },
- { id = "always_give_meat", type = "check", val = 1, def = false},
- { id = "mutant_meat_chance_mult", type = "track", val = 2, min = 1, max = 5, step = 0.1, def = 1 },
- { id = "always_give_pelt", type = "check", val = 1, def = false},
- { id = "mutant_pelt_chance_mult", type = "track", val = 2, min = 1, max = 5, step = 0.1, def = 1 },
- { id = "mutant_other_chance_mult", type = "track", val = 2, min = 1, max = 3, step = 0.1, def = 1 },
- {id = "failsafe_loot", type = "check", val = 1, def = false},
- }
- }
- return options
-end
\ No newline at end of file
diff --git a/mods/NPC Wounded Redone/gamedata/scripts/liz_wounded_redone.script b/mods/NPC Wounded Redone/gamedata/scripts/liz_wounded_redone.script
new file mode 100644
index 00000000..21eeb81f
--- /dev/null
+++ b/mods/NPC Wounded Redone/gamedata/scripts/liz_wounded_redone.script
@@ -0,0 +1,172 @@
+-- took from dismemberment mod
+local creatures_cls = {
+ [clsid.script_stalker] = { "human", "stalker_damage" },
+ -- [clsid.dog_s] = { "dog", "m_dog_damage" },
+ -- [clsid.pseudodog_s] = { "pseudo_dog", "m_pseudodog_damage" },
+ -- [clsid.psy_dog_s] = { "pseudo_dog", "m_pseudodog_damage" },
+ -- [clsid.boar_s] = { "boar", "m_boar_damage" },
+ -- [clsid.flesh_s] = { "flesh", "m_flesh_damage" },
+ -- [clsid.cat_s] = { "cat", "cat_damage" },
+ -- [clsid.zombie_s] = { "zombie", "m_zombie_damage" },
+ -- [clsid.tushkano_s] = { "tushkano", "m_tushkano_damage" },
+ -- [clsid.snork_s] = { "snork", "m_snork_damage" },
+ -- [clsid.controller_s] = { "controller", "m_controller_damage" },
+ -- [clsid.bloodsucker_s] = { "bloodsucker", "m_bloodsucker_damage" },
+ -- [clsid.chimera_s] = { "chimera" },
+ -- [clsid.burer_s] = { "burer", "m_burer_damage" },
+ -- [clsid.fracture_s] = { "fracture", "fracture_normal_damage" },
+ -- [clsid.gigant_s] = { "giant", "m_giant_damage" },
+}
+
+-- took from dismemberment mod
+-- local creatures_kind = {
+-- ["SM_KARLIK"] = { "karlik", "m_tushkano_damage" },
+-- ["SM_PSYSUCKER"] = { "bloodsucker", "m_bloodsucker_damage" },
+-- ["SM_LURKER"] = { "chimera" },
+-- }
+
+--damage to bones in this list make npc go into wounded state instead of dying
+local non_lethal_bones = {
+ ["bip01_l_upperarm"] = true,
+ ["bip01_l_forearm"] = true,
+ ["bip01_l_hand"] = true,
+ ["bip01_l_finger0"] = true,
+ ["bip01_l_finger01"] = true,
+ ["bip01_l_finger02"] = true,
+ ["bip01_l_finger1"] = true,
+ ["bip01_l_finger11"] = true,
+ ["bip01_l_finger12"] = true,
+ ["bip01_l_finger2"] = true,
+ ["bip01_l_finger21"] = true,
+ ["bip01_l_finger22"] = true,
+
+ ["bip01_r_upperarm"] = true,
+ ["bip01_r_forearm"] = true,
+ ["bip01_r_hand"] = true,
+ ["bip01_r_finger0"] = true,
+ ["bip01_r_finger01"] = true,
+ ["bip01_r_finger02"] = true,
+ ["bip01_r_finger1"] = true,
+ ["bip01_r_finger11"] = true,
+ ["bip01_r_finger12"] = true,
+ ["bip01_r_finger2"] = true,
+ ["bip01_r_finger21"] = true,
+ ["bip01_r_finger22"] = true,
+
+ ["bip01_l_thigh"] = true,
+ ["bip01_l_calf"] = true,
+ ["bip01_l_foot"] = true,
+ ["bip01_l_toe0"] = true,
+
+ ["bip01_r_thigh"] = true,
+ ["bip01_r_calf"] = true,
+ ["bip01_r_foot"] = true,
+ ["bip01_r_toe0"] = true,
+}
+
+--damage to bones in this list will make npc drop his weapon
+local hand_bones = {
+ -- ["bip01_l_forearm"] = true,
+ -- ["bip01_l_hand"] = true,
+ -- ["bip01_l_finger0"] = true,
+ -- ["bip01_l_finger01"] = true,
+ -- ["bip01_l_finger02"] = true,
+ -- ["bip01_l_finger1"] = true,
+ -- ["bip01_l_finger11"] = true,
+ -- ["bip01_l_finger12"] = true,
+ -- ["bip01_l_finger2"] = true,
+ -- ["bip01_l_finger21"] = true,
+ -- ["bip01_l_finger22"] = true,
+
+ -- ["bip01_r_forearm"] = true,
+ ["bip01_r_hand"] = true,
+ ["bip01_r_finger0"] = true,
+ ["bip01_r_finger01"] = true,
+ ["bip01_r_finger02"] = true,
+ ["bip01_r_finger1"] = true,
+ ["bip01_r_finger11"] = true,
+ ["bip01_r_finger12"] = true,
+ ["bip01_r_finger2"] = true,
+ ["bip01_r_finger21"] = true,
+ ["bip01_r_finger22"] = true,
+}
+
+local wounded_by_state = {
+ [0] = "wounded_heavy",
+ [1] = "wounded_heavy_2",
+ [2] = "wounded_heavy_3"
+}
+
+local allowed_hit_types = {
+ [hit.wound] = true,
+ [hit.fire_wound] = true,
+}
+
+
+function on_game_start()
+ RegisterScriptCallback("npc_on_before_hit", npc_on_before_hit)
+end
+
+
+function npc_on_before_hit(npc, shit, bone_id, flags)
+ if not (npc:alive()) then return end
+
+ local community = character_community(npc)
+ --skip monolith and zombied. They will use default behaviour
+ -- if community == "monolith" or community == "zombied" then return end
+
+ -- local npc_kind = ini_sys:r_string_ex(npc:section(), "kind")
+ -- local npc_damage_section = (creatures_cls[npc:clsid()] and creatures_cls[npc:clsid()][2]) or (npc_kind and creatures_kind[npc_kind] and creatures_kind[npc_kind][2]) or (npc:section())
+
+ local npc_damage_section = (creatures_cls[npc:clsid()] and creatures_cls[npc:clsid()][2]) or (npc:section()) -- took from dismemberment code
+ if npc_damage_section then
+ local bone_name = npc:bone_name(bone_id)
+ local str = bone_name and ini_sys:r_string_ex(npc_damage_section, bone_name)
+ local p = str and str_explode(str, ",")
+ if p and p[1] then
+ local hit_power_mult = tonumber(p[1]) or 1 -- if not found then 1
+ local predicted_health = npc.health - (shit.power * hit_power_mult)
+ if predicted_health <= 0 and non_lethal_bones[bone_name] and allowed_hit_types[shit.type] then --handle wounded state
+ flags.ret_value = false
+ local state = state_mgr.get_state(npc)
+ if state ~= "wounded_heavy" and state ~= "wounded_heavy_2" and state ~= "wounded_heavy_3" then
+ local new_state = wounded_by_state[math.random(0, 2)]
+ npc.health = 0.1
+ -- npc.bleeding = 0
+ -- save_var(npc, "wounded_state", new_state)
+ save_var(npc, "wounded_fight", "false")
+ save_var(npc, "wounded_victim", "nil")
+ save_var(npc, "victim_surrender", true)
+ state_mgr.set_state(npc, new_state, nil, nil, nil, { fast_set = true })
+ end
+ elseif hand_bones[bone_name] then -- handle drop weapon feature
+ if community == "zombied" then return end --ignore zombies. they don't know waht to do if they loose weapon
+ local item = npc:active_item()
+ local slot = npc:active_slot()
+ if (item) and ((slot == 2) or (slot == 3)) and (npc:dont_has_info("npcx_is_companion")) then
+ death_manager.set_weapon_drop_condition(npc, item)
+ npc:drop_item(item)
+ end
+ end
+ end
+ end
+end
+
+
+--TOSOX CODE THAT I TOOK FROM WOUNDED ANIMATION FIX
+orig_action_wounded_initialize = xr_wounded.action_wounded.initialize
+xr_wounded.action_wounded.initialize = function(self)
+ orig_action_wounded_initialize(self)
+ local npc = self.object
+ local community = character_community(npc)
+ local item = npc:active_item()
+ local slot = npc:active_slot()
+ if (item) and ((slot == 2) or (slot == 3)) and (npc:dont_has_info("npcx_is_companion")) then
+ if community == "zombied" then
+ npc:transfer_item(item, npc)
+ else
+ death_manager.set_weapon_drop_condition(npc, item)
+ npc:drop_item(item)
+ end
+ end
+end
diff --git a/mods/NPC Wounded Redone/meta.ini b/mods/NPC Wounded Redone/meta.ini
new file mode 100644
index 00000000..237e8352
--- /dev/null
+++ b/mods/NPC Wounded Redone/meta.ini
@@ -0,0 +1,28 @@
+[General]
+gameName=stalkeranomaly
+modid=0
+version=d2024.4.2.0
+newestVersion=
+category="-1,"
+nexusFileStatus=1
+installationFile=npc_wounded_redone.zip
+repository=Nexus
+ignoredVersion=
+comments=
+notes=
+nexusDescription=
+url=
+hasCustomURL=false
+lastNexusQuery=
+lastNexusUpdate=
+nexusLastModified=2024-04-02T08:48:17Z
+nexusCategory=0
+converted=false
+validated=false
+color=@Variant(\0\0\0\x43\0\xff\xff\0\0\0\0\0\0\0\0)
+tracked=0
+
+[installedFiles]
+1\modid=0
+1\fileid=0
+size=1
diff --git a/mods/New Levels/gamedata/configs/environment/ambients/bunker_a1.ltx b/mods/New Levels/gamedata/configs/environment/ambients/bunker_a1.ltx
new file mode 100644
index 00000000..a833052e
--- /dev/null
+++ b/mods/New Levels/gamedata/configs/environment/ambients/bunker_a1.ltx
@@ -0,0 +1,2 @@
+;; ambients rely on presets
+#include "presets\environment_underground.ltx"
\ No newline at end of file
diff --git a/mods/New Levels/gamedata/configs/environment/ambients/collaider.ltx b/mods/New Levels/gamedata/configs/environment/ambients/collaider.ltx
new file mode 100644
index 00000000..a833052e
--- /dev/null
+++ b/mods/New Levels/gamedata/configs/environment/ambients/collaider.ltx
@@ -0,0 +1,2 @@
+;; ambients rely on presets
+#include "presets\environment_underground.ltx"
\ No newline at end of file
diff --git a/mods/New Levels/gamedata/configs/environment/ambients/grimwood.ltx b/mods/New Levels/gamedata/configs/environment/ambients/grimwood.ltx
new file mode 100644
index 00000000..6f625511
--- /dev/null
+++ b/mods/New Levels/gamedata/configs/environment/ambients/grimwood.ltx
@@ -0,0 +1,2 @@
+;; ambients rely on presets
+#include "presets\environment_forest.ltx"
\ No newline at end of file
diff --git a/mods/New Levels/gamedata/configs/environment/ambients/poselok_ug.ltx b/mods/New Levels/gamedata/configs/environment/ambients/poselok_ug.ltx
new file mode 100644
index 00000000..6f625511
--- /dev/null
+++ b/mods/New Levels/gamedata/configs/environment/ambients/poselok_ug.ltx
@@ -0,0 +1,2 @@
+;; ambients rely on presets
+#include "presets\environment_forest.ltx"
\ No newline at end of file
diff --git a/mods/New Levels/gamedata/configs/environment/ambients/promzona.ltx b/mods/New Levels/gamedata/configs/environment/ambients/promzona.ltx
new file mode 100644
index 00000000..6f625511
--- /dev/null
+++ b/mods/New Levels/gamedata/configs/environment/ambients/promzona.ltx
@@ -0,0 +1,2 @@
+;; ambients rely on presets
+#include "presets\environment_forest.ltx"
\ No newline at end of file
diff --git a/mods/New Levels/gamedata/scripts/zzzz_for_level_add.script b/mods/New Levels/gamedata/scripts/zzzz_for_level_add.script
index 530c2e14..9afdda24 100644
--- a/mods/New Levels/gamedata/scripts/zzzz_for_level_add.script
+++ b/mods/New Levels/gamedata/scripts/zzzz_for_level_add.script
@@ -610,8 +610,8 @@ function actor_on_first_update()
if t.delete_routes[trans_from] then
for trans_to, trans_ar in pairs(maps_t) do -- ["mil"]
if t.delete_routes[trans_from][trans_to] then
- for idx, trans in ipairs(trans_ar) do -- ["mil"]["trc"]
- if t.delete_routes[trans_from][trans_to][trans] then
+ for idx = #trans_ar, 1, -1 do -- ["mil"]["trc"]
+ if t.delete_routes[trans_from][trans_to][trans_ar[idx]] then
table.remove(txr_routes.routes[trans_from][trans_to], idx)
-- remove key if array is empty
if #txr_routes.routes[trans_from][trans_to] <= 0 then
diff --git a/mods/New Levels/gamedata/scripts/zzzz_new_patches.script b/mods/New Levels/gamedata/scripts/zzzz_new_patches.script
new file mode 100644
index 00000000..fc50f6ad
--- /dev/null
+++ b/mods/New Levels/gamedata/scripts/zzzz_new_patches.script
@@ -0,0 +1,36 @@
+-- ISG first quest dialogue
+function dialogs_lostzone.unlock_routes_south(first_speaker, second_speaker)
+ txr_routes.open_route("esc","pol",true)
+ txr_routes.open_route("esc","mar",true)
+ txr_routes.open_route("esc","gar",true)
+ txr_routes.open_route("esc","dsc",true)
+ txr_routes.open_route("mar","agr",true)
+ txr_routes.open_route("val","pol",true)
+ txr_routes.open_route("val","trc",true)
+ txr_routes.open_route("val","gar",true)
+ txr_routes.open_route("val","dsc",true)
+-- txr_routes.open_route("mil","trc",true)
+ txr_routes.open_route("mil","prom",true)
+ txr_routes.open_route("trc","prom",true)
+ txr_routes.open_route("gar","agr",true)
+ txr_routes.open_route("gar","bar",true)
+ txr_routes.open_route("gar","ros",true)
+ txr_routes.open_route("bar","mil",true)
+ txr_routes.open_route("bar","ros",true)
+ txr_routes.open_route("yan","ros",true)
+-- txr_routes.open_route("cit","mil",true)
+ txr_routes.open_route("cit","grim",true)
+ txr_routes.open_route("mil","grim",true)
+ txr_routes.open_route("cit","yan",true)
+ txr_routes.open_route("pos","gar",true)
+ txr_routes.open_route("pos","val",true)
+ txr_routes.open_route("pos","mil",true)
+ txr_routes.open_route("pos","trc",true)
+
+ local sender = game.translate_string("st_route_open_title")
+ local msg = game.translate_string("st_msg_unlocked_routes")
+ db.actor:give_game_news(sender, msg, "ui_iconsTotal_locations", 0, 5000, 0)
+ local snd = sound_object([[device\pda\route_opened]])
+ snd.volume = 1
+ snd:play(db.actor, 0, sound_object.s2d)
+end
\ No newline at end of file
diff --git a/mods/New Levels/meta.ini b/mods/New Levels/meta.ini
index 95207ae9..9cdcafd1 100644
--- a/mods/New Levels/meta.ini
+++ b/mods/New Levels/meta.ini
@@ -1,12 +1,12 @@
[General]
gameName=stalkeranomaly
modid=0
-version=d2024.2.28.0
+version=d2024.4.3.0
newestVersion=
category="15,"
nexusFileStatus=1
-installationFile=Levels_0.52.zip
-repository=
+installationFile=Levels_0.53.zip
+repository=Nexus
ignoredVersion=
comments=
notes=
diff --git a/mods/Placeable Campfires/gamedata/anims/fade_nine_sec.ppe b/mods/Placeable Campfires/gamedata/anims/fade_nine_sec.ppe
new file mode 100644
index 00000000..0856f5e0
Binary files /dev/null and b/mods/Placeable Campfires/gamedata/anims/fade_nine_sec.ppe differ
diff --git a/mods/Placeable Campfires/gamedata/configs/items/items/items_campfire.ltx b/mods/Placeable Campfires/gamedata/configs/items/items/items_campfire.ltx
new file mode 100644
index 00000000..c00af378
--- /dev/null
+++ b/mods/Placeable Campfires/gamedata/configs/items/items/items_campfire.ltx
@@ -0,0 +1,111 @@
+[itm_campfire]:booster
+GroupControlSection = spawn_group
+discovery_dependency =
+$spawn = "food and drugs\antirad"
+$prefetch = 32
+;class = II_ANTIR
+kind = i_kit
+cform = skeleton
+visual = dynamics\equipments\sumka2.ogf ;dynamics\equipments\item_tent.ogf
+inv_weight = 3.68
+description = st_itms_campfire_descr
+inv_name = st_itms_campfire_name
+inv_name_short = st_itms_campfire_name
+icons_texture = ui\ui_campfire_placeable
+inv_grid_width = 2
+inv_grid_height = 1
+inv_grid_x = 0
+inv_grid_y = 0
+cost = 550
+eat_health = 0
+eat_satiety = 0
+eat_power = 0
+eat_radiation = 0
+eat_alcohol = 0
+wounds_heal_perc = 0
+animation_slot = 4
+remove_after_use = false
+hud = wpn_vodka_hud
+placeable_section = ph_campfiremod
+tier = 1
+
+[itm_xcvb_1]:booster
+$spawn = "food and drugs\bread"
+visual = dynamics\devices\dev_bred\dev_bred.ogf
+kind = i_food
+description = st_bread_descr
+cost = 1
+inv_name = st_bread
+inv_name_short = st_bread
+inv_weight = 0.01
+icons_texture = ui\ui_campfire_placeable
+inv_grid_width = 1
+inv_grid_height = 1
+inv_grid_x = 1
+inv_grid_y = 1
+attach_angle_offset = -0.287979, 1.560923, 1.544060
+attach_position_offset = 0.096910, -0.013594, 0.107925
+attach_bone_name = bip01_r_hand
+auto_attach = false
+bone_name = bip01_r_hand
+position_offset = 0.0,0.0,0.0
+angle_offset = 1.570790,1.570790,3.92699
+eat_satiety = -0.225
+eat_sleepiness = 0.75
+eat_thirstiness = 2.0
+use_sound = interface\axe_wood_chop
+tier = 1
+
+[itm_xcvb_2]:booster
+$spawn = "food and drugs\bread"
+visual = dynamics\devices\dev_bred\dev_bred.ogf
+kind = i_food
+description = st_bread_descr
+cost = 1
+inv_name = st_bread
+inv_name_short = st_bread
+inv_weight = 0.01
+icons_texture = ui\ui_campfire_placeable
+inv_grid_width = 1
+inv_grid_height = 1
+inv_grid_x = 1
+inv_grid_y = 1
+attach_angle_offset = -0.287979, 1.560923, 1.544060
+attach_position_offset = 0.096910, -0.013594, 0.107925
+attach_bone_name = bip01_r_hand
+auto_attach = false
+bone_name = bip01_r_hand
+position_offset = 0.0,0.0,0.0
+angle_offset = 1.570790,1.570790,3.92699
+eat_satiety = -0.15
+eat_sleepiness = 0.5
+eat_thirstiness = 1.32
+use_sound = interface\axe_wood_chop
+tier = 1
+
+[itm_xcvb_3]:booster
+$spawn = "food and drugs\bread"
+visual = dynamics\devices\dev_bred\dev_bred.ogf
+kind = i_food
+description = st_bread_descr
+cost = 1
+inv_name = st_bread
+inv_name_short = st_bread
+inv_weight = 0.01
+icons_texture = ui\ui_campfire_placeable
+inv_grid_width = 1
+inv_grid_height = 1
+inv_grid_x = 1
+inv_grid_y = 1
+attach_angle_offset = -0.287979, 1.560923, 1.544060
+attach_position_offset = 0.096910, -0.013594, 0.107925
+attach_bone_name = bip01_r_hand
+auto_attach = false
+bone_name = bip01_r_hand
+position_offset = 0.0,0.0,0.0
+angle_offset = 1.570790,1.570790,3.92699
+eat_satiety = -0.113
+eat_sleepiness = 0.375
+eat_thirstiness = 0.99
+use_sound = interface\axe_wood_chop
+tier = 1
\ No newline at end of file
diff --git a/mods/Placeable Campfires/gamedata/configs/models/dynamic_objects.ltx b/mods/Placeable Campfires/gamedata/configs/models/dynamic_objects.ltx
new file mode 100644
index 00000000..db654269
--- /dev/null
+++ b/mods/Placeable Campfires/gamedata/configs/models/dynamic_objects.ltx
@@ -0,0 +1,683 @@
+
+;***************************************************************
+;* !!!!!!!!!!!!!!! *
+;***************************************************************
+
+[physic_object]
+GroupControlSection = spawn_group
+$spawn = "physics\object"
+$prefetch = 8
+class = O_PHYSIC ;Change to O_PHYS_S if you want to use se_item.se_physic
+remove_time = 60; after this time unbreaked removable bone will be removed
+script_binding = bind_physic_object.init
+
+[physic_destroyable_object]
+GroupControlSection = spawn_group
+$spawn = "physics\destroyable_object"
+;$prefetch = 8
+class = P_DSTRBL ;Change to O_DSTR_S if you want to use se_item.se_physic script binding
+remove_time = 60; after this time unbreaked removable bone will be removed
+script_binding = bind_physic_object.init
+
+
+[physic_door]:physic_destroyable_object
+GroupControlSection = spawn_group
+$spawn = "physics\door"
+is_ai_obstacle = false
+
+;*******************************************************************************
+;* :-) *
+;*******************************************************************************
+
+
+;[phys_obj_test]:physic_object
+;$spawn = "dynamic_objects\test_object"
+;visual = dynamics\equipments\novice_suit
+;startup_animation =
+;fixed_bones =
+
+;[phys_destroyable_obj_test]:physic_destroyable_object
+;$spawn = "dynamic_objects\test_destroyable_object"
+;visual = dynamics\equipments\novice_suit
+;startup_animation =
+;fixed_bones =
+
+;*** scene_objects ***************************************************************
+[jup_b43_af_fuzz_kolobok]:physic_object
+$spawn = "dynamic_objects\scene_objects\jup_b43_af_fuzz_kolobok"
+visual = dynamics\artefacts\af_fuzz_kolobok.ogf
+startup_animation = idle
+fixed_bones = link
+
+[jup_b43_af_mincer_meat]:physic_object
+$spawn = "dynamic_objects\scene_objects\jup_b43_af_mincer_meat"
+visual = dynamics\artefacts\af_mincer_meat.ogf
+startup_animation = idle
+fixed_bones = link
+
+[jup_b41_af_oasis_heart]:physic_object
+$spawn = "dynamic_objects\scene_objects\jup_b41_af_oasis_heart"
+visual = dynamics\artefacts\af_cristall_plant.ogf
+startup_animation = idle
+fixed_bones = link
+
+[jup_b41_af_half_artifact]:physic_object
+$spawn = "dynamic_objects\scene_objects\jup_b41_half_artifact"
+visual = dynamics\artefacts\af_psi_field.ogf
+startup_animation = idle
+fixed_bones = link
+
+[jup_b32_ph_scanner]:physic_object
+$spawn = "dynamic_objects\scene_objects\jup_b32_ph_scanner"
+visual = dynamics\equipments\quest\scanner_artefact.ogf
+startup_animation = idle
+fixed_bones = link
+custom_data = models\objects\ignore_static.ltx
+
+[jup_b209_ph_scanner]:physic_object
+$spawn = "dynamic_objects\scene_objects\jup_b209_ph_scanner"
+visual = dynamics\equipments\quest\scanner_anomaly.ogf
+custom_data = scripts\jupiter\jup_b209_scanner.ltx
+startup_animation = idle
+fixed_bones = link
+story_id = jup_b209_ph_scanner
+
+[jup_b207_depot_cover]:physic_object
+$spawn = "dynamic_objects\scene_objects\jup_b207_depot_cover"
+visual = dynamics\fence\debris_01.ogf
+story_id = jup_b207_depot_cover_id
+
+[pri_a28_actor_hideout]:physic_object
+$spawn = "dynamic_objects\scene_objects\pri_a28_actor_hideout"
+visual = dynamics\fence\debris_01.ogf
+
+[jup_b219_gate]:physic_object
+$spawn = "dynamic_objects\scene_objects\jup_b219_gate"
+visual = dynamics\door\door_katakomb_big_4.ogf
+story_id = jup_b219_gate_id
+fixed_bones = link
+custom_data = models\objects\ignore_static.ltx
+
+[pri_a25_explosive_charge]:physic_object
+$spawn = "dynamic_objects\scene_objects\pri_a25_explosive_charge"
+visual = dynamics\equipments\quest\explosive_charge.ogf
+startup_animation = idle
+fixed_bones = link
+story_id = pri_a25_explosive_charge_id
+custom_data = models\objects\ignore_static.ltx
+
+[zat_b57_ph_gas]:physic_object
+$spawn = "dynamic_objects\scene_objects\zat_b57_ph_gas"
+visual = dynamics\equipments\quest\balloon_poison_gas.ogf
+startup_animation = idle
+fixed_bones = link
+story_id = zat_b57_ph_gas
+custom_data = models\objects\ignore_static.ltx
+
+[pri_a28_earth_helli_1]:physic_object
+$spawn = "dynamic_objects\scene_objects\pri_a28_earth_helli_1"
+visual = dynamics\vehicles\mi24\veh_mi24_u_02.ogf
+startup_animation = idle
+fixed_bones = korpus1
+story_id = pri_a28_earth_helli_1
+custom_data = models\objects\ignore_static.ltx
+
+[pri_a28_earth_helli_2]:physic_object
+$spawn = "dynamic_objects\scene_objects\pri_a28_earth_helli_2"
+visual = dynamics\vehicles\mi24\veh_mi24_u_02.ogf
+startup_animation = idle
+fixed_bones = korpus1
+story_id = pri_a28_earth_helli_2
+custom_data = models\objects\ignore_static.ltx
+
+[door_lab_x8]:physic_object
+$spawn = "physics\door_lab_x8"
+script_binding = bind_door_labx8.bind
+
+[jup_b206_plant_ph]:physic_destroyable_object
+$spawn = "dynamic_objects\scene_objects\jup_b206_plant_ph"
+visual = dynamics\equipments\quest\anomaly_plant.ogf
+startup_animation = idle
+fixed_bones = link
+story_id = jup_b206_plant_ph
+custom_data = models\objects\ignore_static.ltx
+
+;*******************************************************************************
+
+;*** armory_room ***************************************************************
+[shooting_target_1]:physic_destroyable_object
+$spawn = "dynamic_objects\armory_room\shooting_target_1"
+visual = dynamics\armory_room\shooting_target_1.ogf
+startup_animation = shooting_target_1_down
+fixed_bones = link
+;*******************************************************************************
+
+;*** balon *********************************************************************
+
+[balon_01]:physic_destroyable_object
+$spawn = "dynamic_objects\balon\balon_01"
+visual = dynamics\balon\balon_01.ogf
+
+[balon_02]:physic_destroyable_object
+$spawn = "dynamic_objects\balon\balon_02"
+visual = dynamics\balon\balon_02.ogf
+
+[balon_02link]:physic_destroyable_object
+$spawn = "dynamic_objects\balon\balon_02link"
+visual = dynamics\balon\balon_02.ogf
+fixed_bones = bone01, bone02, bone03
+
+[balon_02a]:physic_destroyable_object
+$spawn = "dynamic_objects\balon\balon_02a"
+visual = dynamics\balon\balon_02a.ogf
+
+[bidon]:physic_destroyable_object
+$spawn = "dynamic_objects\balon\bidon"
+visual = dynamics\balon\bidon.ogf
+
+[bochka_close_1]:physic_destroyable_object
+$spawn = "dynamic_objects\balon\bochka_close_1"
+visual = dynamics\balon\bochka_close_1.ogf
+
+[bochka_close_2]:physic_destroyable_object
+$spawn = "dynamic_objects\balon\bochka_close_2"
+visual = dynamics\balon\bochka_close_2.ogf
+
+[bochka_close_3]:physic_destroyable_object
+$spawn = "dynamic_objects\balon\bochka_close_3"
+visual = dynamics\balon\bochka_close_3.ogf
+
+[bochka_close_4]:physic_destroyable_object
+$spawn = "dynamic_objects\balon\bochka_close_4"
+visual = dynamics\balon\bochka_close_4.ogf
+
+[gaz_balon]:physic_destroyable_object
+$spawn = "dynamic_objects\balon\gaz_balon"
+visual = dynamics\balon\gaz_balon.ogf
+
+;*******************************************************************************
+
+;*** box ***********************************************************************
+;*******************************************************************************
+
+;*** el_tehnika ****************************************************************
+
+[disel_generator]:physic_destroyable_object
+$spawn = "dynamic_objects\el_tehnika\disel_generator"
+visual = dynamics\el_tehnika\disel_generator.ogf
+startup_animation = idle
+fixed_bones = link
+custom_data = models\objects\ignore_static.ltx
+
+[krisagenerator]:physic_destroyable_object
+$spawn = "dynamic_objects\el_tehnika\krisagenerator"
+visual = dynamics\el_tehnika\krisagenerator.ogf
+startup_animation = idle
+fixed_bones = link
+custom_data = models\objects\ignore_static.ltx
+
+[ventilator_01]:physic_destroyable_object
+$spawn = "dynamic_objects\el_tehnika\ventilator_01"
+visual = dynamics\el_tehnika\ventilator_01.ogf
+startup_animation = idle
+fixed_bones = link
+custom_data = models\objects\ignore_static.ltx
+
+[ventilator_02]:physic_destroyable_object
+$spawn = "dynamic_objects\el_tehnika\ventilator_02"
+visual = dynamics\el_tehnika\ventilator_02.ogf
+startup_animation = idle
+fixed_bones = link
+custom_data = models\objects\ignore_static.ltx
+
+[ventilator_03]:physic_destroyable_object
+$spawn = "dynamic_objects\el_tehnika\ventilator_03"
+visual = dynamics\el_tehnika\ventilator_03.ogf
+startup_animation = idle
+fixed_bones = link
+custom_data = models\objects\ignore_static.ltx
+
+[ventilator_04]:physic_destroyable_object
+$spawn = "dynamic_objects\el_tehnika\ventilator_04"
+visual = dynamics\el_tehnika\ventilator_04.ogf
+startup_animation = idle
+fixed_bones = link
+custom_data = models\objects\ignore_static.ltx
+
+[ventilator_05]:physic_destroyable_object
+$spawn = "dynamic_objects\el_tehnika\ventilator_05"
+visual = dynamics\el_tehnika\ventilator_05.ogf
+startup_animation = idle
+fixed_bones = link
+custom_data = models\objects\ignore_static.ltx
+
+[speakerphone]:physic_destroyable_object
+$spawn = "dynamic_objects\el_tehnika\speakerphone"
+visual = dynamics\el_tehnika\speakerphone.ogf
+fixed_bones = link
+custom_data = models\objects\ignore_static.ltx
+
+[notebook]:physic_destroyable_object
+$spawn = "dynamic_objects\el_tehnika\notebook"
+visual = dynamics\el_tehnika\notebook.ogf
+
+[priemnik_gorizont]:physic_destroyable_object
+$spawn = "dynamic_objects\el_tehnika\priemnik_gorizont"
+visual = dynamics\el_tehnika\priemnik_gorizont.ogf
+
+[rupor]:physic_destroyable_object
+$spawn = "dynamic_objects\el_tehnika\rupor"
+visual = dynamics\el_tehnika\rupor.ogf
+fixed_bones = link
+
+[transiver]:physic_destroyable_object
+$spawn = "dynamic_objects\el_tehnika\transiver"
+visual = dynamics\el_tehnika\transiver.ogf
+
+[tv_1]:physic_destroyable_object
+$spawn = "dynamic_objects\el_tehnika\tv_1"
+visual = dynamics\el_tehnika\tv_1.ogf
+
+[table_lamp_01]:physic_destroyable_object
+$spawn = "dynamic_objects\el_tehnika\table_lamp_01"
+visual = dynamics\el_tehnika\table_lamp_01.ogf
+fixed_bones = link
+
+[komp_monitor]:physic_destroyable_object
+$spawn = "dynamic_objects\el_tehnika\komp_monitor"
+visual = dynamics\el_tehnika\komp_monitor.ogf
+
+[komp_klava]:physic_destroyable_object
+$spawn = "dynamic_objects\el_tehnika\komp_klava"
+visual = dynamics\el_tehnika\komp_klava.ogf
+
+[komp_block]:physic_destroyable_object
+$spawn = "dynamic_objects\el_tehnika\komp_block"
+visual = dynamics\el_tehnika\komp_blok.ogf
+
+;*******************************************************************************
+
+;*** fence *********************************************************************
+;*******************************************************************************
+
+[debris_01]:physic_destroyable_object
+$spawn = "dynamic_objects\fence\debris_01"
+visual = dynamics\fence\debris_01.ogf
+
+[wood_fence_1]:physic_destroyable_object
+$spawn = "dynamic_objects\fence\wood_fence_1"
+fixed_bones = link
+visual = dynamics\fence\wood_fence_1.ogf
+
+[wood_fence_2]:physic_destroyable_object
+$spawn = "dynamic_objects\fence\wood_fence_2"
+fixed_bones = link
+visual = dynamics\fence\wood_fence_2.ogf
+
+[wood_fence_3]:physic_destroyable_object
+$spawn = "dynamic_objects\fence\wood_fence_3"
+fixed_bones = link
+visual = dynamics\fence\wood_fence_3.ogf
+
+[wood_fence_4]:physic_destroyable_object
+$spawn = "dynamic_objects\fence\wood_fence_4"
+fixed_bones = link
+visual = dynamics\fence\wood_fence_4.ogf
+
+;*** workshop_room *************************************************************
+;*******************************************************************************
+[banka_kraski_1]:physic_destroyable_object
+$spawn = "dynamic_objects\workshop_room\banka_kraski_1"
+visual = dynamics\workshop_room\banka_kraski_1.ogf
+
+[tiski]:physic_destroyable_object
+$spawn = "dynamic_objects\workshop_room\tiski"
+visual = dynamics\workshop_room\tiski.ogf
+
+[kanistra_02]:physic_destroyable_object
+$spawn = "dynamic_objects\workshop_room\kanistra_02"
+visual = dynamics\workshop_room\kanistra_02.ogf
+
+[vedro_01]:physic_destroyable_object
+$spawn = "dynamic_objects\workshop_room\vedro_01"
+visual = dynamics\workshop_room\vedro_01.ogf
+
+[axe]:physic_destroyable_object
+$spawn = "dynamic_objects\workshop_room\axe"
+visual = dynamics\workshop_room\axe.ogf
+
+[hammer]:physic_destroyable_object
+$spawn = "dynamic_objects\workshop_room\hammer"
+visual = dynamics\workshop_room\hammer.ogf
+
+[hatch_01]:physic_destroyable_object
+$spawn = "dynamic_objects\workshop_room\hatch_01"
+visual = dynamics\workshop_room\hatch_01.ogf
+
+[keyga]:physic_destroyable_object
+$spawn = "dynamic_objects\workshop_room\keyga"
+visual = dynamics\workshop_room\keyga.ogf
+
+[lopata]:physic_destroyable_object
+$spawn = "dynamic_objects\workshop_room\lopata"
+visual = dynamics\workshop_room\lopata.ogf
+
+[molot]:physic_destroyable_object
+$spawn = "dynamic_objects\workshop_room\molot"
+visual = dynamics\workshop_room\molot.ogf
+
+[pick]:physic_destroyable_object
+$spawn = "dynamic_objects\workshop_room\pick"
+visual = dynamics\workshop_room\pick.ogf
+
+[riffler]:physic_destroyable_object
+$spawn = "dynamic_objects\workshop_room\riffler"
+visual = dynamics\workshop_room\riffler.ogf
+
+[saw]:physic_destroyable_object
+$spawn = "dynamic_objects\workshop_room\saw"
+visual = dynamics\workshop_room\saw.ogf
+
+;***kitchen_room****************************************************************
+[bottle_3L]:physic_destroyable_object
+$spawn = "dynamic_objects\kitchen_room\bottle_3L"
+visual = dynamics\kitchen_room\bottle_3l.ogf
+
+[freezer]:physic_destroyable_object
+$spawn = "dynamic_objects\kitchen_room\freezer"
+visual = dynamics\kitchen_room\freezer.ogf
+
+[bludo]:physic_destroyable_object
+$spawn = "dynamic_objects\kitchen_room\bludo"
+visual = dynamics\kitchen_room\kitchen_bludo.ogf
+
+[kastrula]:physic_destroyable_object
+$spawn = "dynamic_objects\kitchen_room\kastrula"
+visual = dynamics\kitchen_room\kitchen_kastrula.ogf
+
+[kastrula_up]:physic_destroyable_object
+$spawn = "dynamic_objects\kitchen_room\kastrula_up"
+visual = dynamics\kitchen_room\kitchen_kastrula_up.ogf
+
+[krujka]:physic_destroyable_object
+$spawn = "dynamic_objects\kitchen_room\krujka"
+visual = dynamics\kitchen_room\kitchen_krujka.ogf
+
+[lojka]:physic_destroyable_object
+$spawn = "dynamic_objects\kitchen_room\lojka"
+visual = dynamics\kitchen_room\kitchen_lojka.ogf
+
+[miska]:physic_destroyable_object
+$spawn = "dynamic_objects\kitchen_room\miska"
+visual = dynamics\kitchen_room\kitchen_miska.ogf
+
+[tarelka1]:physic_destroyable_object
+$spawn = "dynamic_objects\kitchen_room\tarelka1"
+visual = dynamics\kitchen_room\kitchen_tarelka1.ogf
+
+[tarelka2]:physic_destroyable_object
+$spawn = "dynamic_objects\kitchen_room\tarelka2"
+visual = dynamics\kitchen_room\kitchen_tarelka2.ogf
+
+[teapot_1]:physic_destroyable_object
+$spawn = "dynamic_objects\kitchen_room\teapot_1"
+visual = dynamics\kitchen_room\teapot_1.ogf
+
+[gaz_plita]:physic_destroyable_object
+$spawn = "dynamic_objects\kitchen_room\gaz_plita"
+visual = dynamics\kitchen_room\gaz_plita.ogf
+
+[gaz_plita_small]:physic_destroyable_object
+$spawn = "dynamic_objects\kitchen_room\gaz_plita_small"
+visual = dynamics\kitchen_room\gaz_plita_small.ogf
+
+;*******************************************************************************
+
+;*** box ***********************************************************************
+[box_1a]:physic_destroyable_object
+$spawn = "dynamic_objects\box\box_1a"
+visual = dynamics\box\box_1a.ogf
+
+[box_1b]:physic_destroyable_object
+$spawn = "dynamic_objects\box\box_1b"
+visual = dynamics\box\box_1b.ogf
+
+[box_1c]:physic_destroyable_object
+$spawn = "dynamic_objects\box\box_1c"
+visual = dynamics\box\box_1c.ogf
+
+[box_bottle_1]:physic_destroyable_object
+$spawn = "dynamic_objects\box\box_bottle_1"
+visual = dynamics\box\box_bottle_1.ogf
+
+[box_metall_01]:physic_destroyable_object
+$spawn = "dynamic_objects\box\box_metall_01"
+visual = dynamics\box\box_metall_01.ogf
+
+[box_wood_01]:physic_destroyable_object
+$spawn = "dynamic_objects\box\box_wood_01"
+visual = dynamics\box\box_wood_01.ogf
+
+[box_wood_02]:physic_destroyable_object
+$spawn = "dynamic_objects\box\box_wood_02"
+visual = dynamics\box\box_wood_02.ogf
+
+[box_paper]:physic_destroyable_object
+$spawn = "dynamic_objects\box\box_paper"
+visual = dynamics\box\box_paper.ogf
+
+;*******************************************************************************
+
+;***medical_object**************************************************************
+[kolyaska_01]:physic_destroyable_object
+$spawn = "dynamic_objects\medical_object\kolyaska_01"
+visual = dynamics\medical_object\kolyaska_01.ogf
+
+[kolyaska_01_braked]:physic_destroyable_object
+$spawn = "dynamic_objects\medical_object\kolyaska_01_braked"
+visual = dynamics\medical_object\kolyaska_01_braked.ogf
+
+[kolyaska_wheel_01_braked]:physic_destroyable_object
+$spawn = "dynamic_objects\medical_object\kolyaska_wheel_01_braked"
+visual = dynamics\medical_object\kolyaska_wheel_01_braked.ogf
+
+[wheel_litter_01]:physic_destroyable_object
+$spawn = "dynamic_objects\medical_object\wheel_litter_01"
+visual = dynamics\medical_object\wheel_litter_01.ogf
+
+[wheel_litter_01_braked]:physic_destroyable_object
+$spawn = "dynamic_objects\medical_object\wheel_litter_01_braked"
+visual = dynamics\medical_object\wheel_litter_01_braked.ogf
+
+[med_stolik_01]:physic_destroyable_object
+$spawn = "dynamic_objects\medical_object\med_stolik_01"
+visual = dynamics\medical_object\med_stolik_01.ogf
+;*******************************************************************************
+
+;*** firestation ***************************************************************
+[fire_vedro]:physic_destroyable_object
+$spawn = "dynamic_objects\firestation\fire_vedro"
+visual = dynamics\firestation\fire_vedro.ogf
+
+[ognetushitel]:physic_destroyable_object
+$spawn = "dynamic_objects\firestation\ognetushitel"
+visual = dynamics\firestation\ognetushitel.ogf
+;*******************************************************************************
+
+;*** stul **********************************************************************
+[stul_wood_01]:physic_destroyable_object
+$spawn = "dynamic_objects\stul\stul_wood_01"
+visual = dynamics\stul\stul_wood_01.ogf
+
+[child_bench]:physic_destroyable_object
+$spawn = "dynamic_objects\stul\child_bench"
+visual = dynamics\stul\child_bench.ogf
+
+[stul_child_01]:physic_destroyable_object
+$spawn = "dynamic_objects\stul\stul_child_01"
+visual = dynamics\stul\stul_child_01.ogf
+
+[stul_school_01]:physic_destroyable_object
+$spawn = "dynamic_objects\stul\stul_school_01"
+visual = dynamics\stul\stul_school_01.ogf
+
+[stul_school_01_br]:physic_destroyable_object
+$spawn = "dynamic_objects\stul\stul_school_01_br"
+visual = dynamics\stul\stul_school_01_br.ogf
+
+[taburet_village]:physic_destroyable_object
+$spawn = "dynamic_objects\stul\taburet_village"
+visual = dynamics\stul\taburet_village.ogf
+
+[taburet_wood_01]:physic_destroyable_object
+$spawn = "dynamic_objects\stul\taburet_wood_01"
+visual = dynamics\stul\taburet_wood_01.ogf
+
+;*******************************************************************************
+
+;*** museum weapons ************************************************************
+[museum_abakan]:physic_destroyable_object
+$spawn = "dynamic_objects\museum_weapons\museum_abakan"
+visual = dynamics\weapons\wpn_abakan\wpn_abakan.ogf
+fixed_bones = wpn_body
+
+[museum_ak74]:physic_destroyable_object
+$spawn = "dynamic_objects\museum_weapons\museum_ak74"
+visual = dynamics\weapons\wpn_ak74\wpn_ak74.ogf
+fixed_bones = wpn_body
+
+[museum_ak74u]:physic_destroyable_object
+$spawn = "dynamic_objects\museum_weapons\museum_ak74u"
+visual = dynamics\weapons\wpn_ak74u\wpn_ak74u.ogf
+fixed_bones = wpn_body
+
+[museum_groza]:physic_destroyable_object
+$spawn = "dynamic_objects\museum_weapons\museum_groza"
+visual = dynamics\weapons\wpn_groza\wpn_groza.ogf
+fixed_bones = wpn_body
+
+[museum_lr300]:physic_destroyable_object
+$spawn = "dynamic_objects\museum_weapons\museum_lr300"
+visual = dynamics\weapons\wpn_lr300\wpn_lr300.ogf
+fixed_bones = wpn_body
+
+[museum_rg6]:physic_destroyable_object
+$spawn = "dynamic_objects\museum_weapons\museum_rg6"
+visual = dynamics\weapons\wpn_rg6\wpn_rg6.ogf
+fixed_bones = wpn_body
+
+[museum_rpg7]:physic_destroyable_object
+$spawn = "dynamic_objects\museum_weapons\museum_rpg7"
+visual = dynamics\weapons\wpn_rpg7\wpn_rpg7.ogf
+fixed_bones = wpn_body
+
+[museum_sig550]:physic_destroyable_object
+$spawn = "dynamic_objects\museum_weapons\museum_sig550"
+visual = dynamics\weapons\wpn_sig550\wpn_sig550.ogf
+fixed_bones = wpn_body
+
+[museum_spas12]:physic_destroyable_object
+$spawn = "dynamic_objects\museum_weapons\museum_spas12"
+visual = dynamics\weapons\wpn_spas12\wpn_spas12.ogf
+fixed_bones = wpn_body
+
+[museum_svd]:physic_destroyable_object
+$spawn = "dynamic_objects\museum_weapons\museum_svd"
+visual = dynamics\weapons\wpn_svd\wpn_svd.ogf
+fixed_bones = wpn_body
+
+[museum_bm16]:physic_destroyable_object
+$spawn = "dynamic_objects\museum_weapons\museum_bm16"
+visual = dynamics\weapons\wpn_bm16\wpn_bm16.ogf
+fixed_bones = wpn_body
+
+[museum_toz34]:physic_destroyable_object
+$spawn = "dynamic_objects\museum_weapons\museum_toz34"
+visual = dynamics\weapons\wpn_toz34\wpn_toz34.ogf
+fixed_bones = wpn_body
+
+[museum_val]:physic_destroyable_object
+$spawn = "dynamic_objects\museum_weapons\museum_val"
+visual = dynamics\weapons\wpn_val\wpn_val.ogf
+fixed_bones = wpn_body
+
+[museum_vintorez]:physic_destroyable_object
+$spawn = "dynamic_objects\museum_weapons\museum_vintorez"
+visual = dynamics\weapons\wpn_vintorez\wpn_vintorez.ogf
+fixed_bones = wpn_body
+
+[museum_winchester1300]:physic_destroyable_object
+$spawn = "dynamic_objects\museum_weapons\museum_winchester1300"
+visual = dynamics\weapons\wpn_winchester1300\wpn_winchester1300.ogf
+fixed_bones = wpn_body
+
+[museum_ammo_545x39_fmj]:physic_destroyable_object
+$spawn = "dynamic_objects\museum_weapons\museum_ammo_545x39_fmj"
+visual = dynamics\weapons\wpn_ammo\ammo_545x39_fmj.ogf
+fixed_bones = link
+
+[museum_ammo_12x70_buck]:physic_destroyable_object
+$spawn = "dynamic_objects\museum_weapons\museum_ammo_12x70_buck"
+visual = dynamics\weapons\wpn_ammo\ammo_12x70_buck.ogf
+fixed_bones = link
+
+[museum_ammo_762x54_7h14]:physic_destroyable_object
+$spawn = "dynamic_objects\museum_weapons\museum_ammo_762x54_7h14"
+visual = dynamics\weapons\wpn_ammo\ammo_762x54_7h14.ogf
+fixed_bones = link
+;*******************************************************************************
+
+[balloon_poison_gas]:physic_destroyable_object
+$spawn = "dynamic_objects\museum_weapons\balloon_poison_gas"
+visual = dynamics\equipments\quest\balloon_poison_gas.ogf
+fixed_bones = link
+
+;*********************************************************************************
+
+[ph_sleepbag]:physic_destroyable_object
+visual = dynamics\equipments\mattress02.ogf
+script_binding = bind_physic_object.init
+custom_data = scripts\ph_sleepbag.ltx
+;custom_data = models\objects\ignore_static.ltx
+;fixed_bones = bone01_(1),bone01_(2),bone01_(3),bone02_(1),bone02_(2),bone02_(3),bone03
+
+[ph_tent]:physic_destroyable_object
+visual = dynamics\equipments\item_tent.ogf
+script_binding = bind_physic_object.init
+custom_data = scripts\ph_tent.ltx
+
+[ph_sleepbag_npc]:physic_destroyable_object
+visual = dynamics\equipments\mattress02.ogf
+script_binding = bind_physic_object.init
+custom_data = models\objects\ignore_static.ltx
+fixed_bones = bone01_(1),bone01_(2),bone01_(3),bone02_(1),bone02_(2),bone02_(3),bone03
+
+[artefact_monolit_ghost]:physic_destroyable_object
+$spawn = "dynamics\anomaly\artefact_monolit_ghost"
+visual = dynamics\anomaly\artefact_monolit_ghost.ogf
+story_id = artefact_monolit_ghost
+startup_animation = idle
+fixed_bones = link
+custom_data = models\objects\ignore_static.ltx
+
+;************************************* HOLDER ENTITY OBJECT ****************************
+[holder_stul]
+$spawn = "holders\holder_stul"
+GroupControlSection = spawn_group
+cform = skeleton
+class = O_HLDR_E
+visual = dynamics\stul\stul_school_01.ogf
+
+allow_weapon = true
+camera_pos = 0,1.5,0
+camera_angle = 0,0,0 ;0 to 3.14 (PI)
+exit_pos = 0,0,0
+lock_enter = false
+lock_exit = false
+use_action_hint = st_use_action_sit
+
+;************************************* xcvb cringefires ****************************
+[ph_campfiremod]:physic_destroyable_object
+visual = dynamics\equipments\campfiremod.ogf
+script_binding = bind_physic_object.init
+custom_data = scripts\ph_campfiremod.ltx
\ No newline at end of file
diff --git a/mods/Placeable Campfires/gamedata/configs/scripts/ph_campfiremod.ltx b/mods/Placeable Campfires/gamedata/configs/scripts/ph_campfiremod.ltx
new file mode 100644
index 00000000..a5e44faa
--- /dev/null
+++ b/mods/Placeable Campfires/gamedata/configs/scripts/ph_campfiremod.ltx
@@ -0,0 +1,8 @@
+[logic]
+active = ph_idle@open
+
+[ph_idle@open]
+nonscript_usable = true
+
+[collide]
+ignore_static
\ No newline at end of file
diff --git a/mods/Placeable Campfires/gamedata/configs/text/eng/st_items_campfires.xml b/mods/Placeable Campfires/gamedata/configs/text/eng/st_items_campfires.xml
new file mode 100644
index 00000000..b2e78895
--- /dev/null
+++ b/mods/Placeable Campfires/gamedata/configs/text/eng/st_items_campfires.xml
@@ -0,0 +1,20 @@
+
+
+
+
+ Firewood
+
+
+ Although it is easy to find wood in the Zone, but high-quality firewood suitable for a campfire is a rarity. Despite of being rare it is very cheap, but also heavy. It can become an essential thing for hiking and raids. Helps to keep warm at night and gives the opportunity to cook food.
+
+
+
+
+ Surface does not suit.
+
+
+
+ hop wood
+
+
+
diff --git a/mods/Placeable Campfires/gamedata/configs/text/eng/ui_st_items_campfires.xml b/mods/Placeable Campfires/gamedata/configs/text/eng/ui_st_items_campfires.xml
new file mode 100644
index 00000000..e63c1492
--- /dev/null
+++ b/mods/Placeable Campfires/gamedata/configs/text/eng/ui_st_items_campfires.xml
@@ -0,0 +1,51 @@
+
+
+
+
+
+
+
+ Campfires Placeable
+
+
+
+
+ Fire installation radius
+
+
+ The radius of the surface around the player, which should be more or less flat so that it is possible to set a campfire. \n
+ \n Default: 3.0
+
+
+
+ Surface control
+
+
+ Difference limit in distance between rays casted to surface, used to figure if surface is flat. Increase slider if you want to be able to place campfires on more uneven surfaces. \n
+ \n Default: 0.4
+
+
+
+ Delete placed campfires on level change
+
+
+ Removes placed campfires on every level transition. \n
+ \n Default: On
+
+
+
+ DELETE NEW OBJECTS (Addon removal)
+
+
+ To prevent save file corruption, this option will delete all new items added by this addon on next load. \n
+ \n So, if you want to delete addon: \n
+ \n 1) Enable this option; \n
+ \n 2) Save, load, save again; \n
+ \n 3) Quit game and disable addon.
+
+
+
\ No newline at end of file
diff --git a/mods/Placeable Campfires/gamedata/configs/text/rus/st_items_campfires.xml b/mods/Placeable Campfires/gamedata/configs/text/rus/st_items_campfires.xml
new file mode 100644
index 00000000..d76634c4
--- /dev/null
+++ b/mods/Placeable Campfires/gamedata/configs/text/rus/st_items_campfires.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+ , , - . , , . . .
+
+
+
+
+ .
+
+
+
+
+
+
+
diff --git a/mods/Placeable Campfires/gamedata/configs/text/rus/ui_st_items_campfires.xml b/mods/Placeable Campfires/gamedata/configs/text/rus/ui_st_items_campfires.xml
new file mode 100644
index 00000000..47222822
--- /dev/null
+++ b/mods/Placeable Campfires/gamedata/configs/text/rus/ui_st_items_campfires.xml
@@ -0,0 +1,51 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ , , . \n
+ \n : 3.0
+
+
+
+
+
+
+ , , , . , . \n
+ \n : 0.4
+
+
+
+
+
+
+ . \n
+ \n :
+
+
+
+ ( )
+
+
+ , , . \n
+ \n , : \n
+ \n 1) ; \n
+ \n 2) , ; \n
+ \n 3) .
+
+
+
\ No newline at end of file
diff --git a/mods/Placeable Campfires/gamedata/meshes/dynamics/equipments/campfiremod.ogf b/mods/Placeable Campfires/gamedata/meshes/dynamics/equipments/campfiremod.ogf
new file mode 100644
index 00000000..2c057f00
--- /dev/null
+++ b/mods/Placeable Campfires/gamedata/meshes/dynamics/equipments/campfiremod.ogf
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:cf9fb395d21a4c3fb3c86e179a12c95f5139f704090b23716413c04bf174b19e
+size 296623
diff --git a/mods/Placeable Campfires/gamedata/scripts/campfire_placeable.script b/mods/Placeable Campfires/gamedata/scripts/campfire_placeable.script
new file mode 100644
index 00000000..bf885a81
--- /dev/null
+++ b/mods/Placeable Campfires/gamedata/scripts/campfire_placeable.script
@@ -0,0 +1,427 @@
+local ray_pos = {}
+--local se_campfires = {}
+local se_anoms = {}
+local prev_level = {}
+local chop_allowed = true
+
+--[[
+local axes = {
+ ["wpn_axe"] = { degr = 0.15, item_to_use = "itm_xcvb_1", hours = 1, minutes = 30},
+ ["wpn_axe2"] = { degr = 0.1, item_to_use = "itm_xcvb_2", hours = 1, minutes = 0},
+ ["wpn_axe3"] = { degr = 0.05, item_to_use = "itm_xcvb_3", hours = 0, minutes = 45},
+}
+--]]
+
+local axes = {
+ ["wpn_axe"] = { degr = 13, item_to_use = "itm_xcvb_1", minutes = 90},
+ ["wpn_axe2"] = { degr = 9, item_to_use = "itm_xcvb_2", minutes = 61},
+ ["wpn_axe3"] = { degr = 5, item_to_use = "itm_xcvb_3", minutes = 45},
+}
+
+function save_state(m_data)
+ -- m_data.se_campfires = se_campfires
+ m_data.se_anoms = se_anoms
+ m_data.prev_level = prev_level
+end
+
+function load_state(m_data)
+ -- se_campfires = m_data.se_campfires or {}
+ se_anoms = m_data.se_anoms or {}
+ prev_level = m_data.prev_level or {}
+end
+
+function actor_on_first_update()
+ if campfire_placeable_mcm.get_config("delete_items") then
+ for i = 1, 65534 do
+ local se_obj = alife_object(i)
+ if se_obj and (se_obj:section_name() == "itm_campfire" or se_obj:section_name() == "ph_campfiremod" or se_anoms[se_obj.id]) then
+ alife_release(se_obj)
+ end
+ end
+-- se_campfires = {}
+ se_anoms = {}
+ end
+
+ -- del obj on level change
+ local curr_level = level.name()
+ if (is_empty(prev_level)) then
+ prev_level.level_name = curr_level
+ printf("tbl is empty || .level_name is now: %s", prev_level.level_name)
+ elseif (prev_level.level_name) then
+ printf("tbl is not empty")
+ if (prev_level.level_name ~= curr_level) and (campfire_placeable_mcm.get_config("transition_delete_items")) then
+ printf(".level_name is not equal curr_level")
+ -- del
+ for i = 1, 65534 do
+ local se_obj = alife_object(i)
+ if se_obj and (se_obj:section_name() == "ph_campfiremod" or se_anoms[se_obj.id]) then
+ alife_release(se_obj)
+ printf("- Object deleted (id): %s", se_obj.id)
+ end
+ end
+ se_anoms = {}
+ prev_level.level_name = curr_level
+ end
+ end
+
+end
+
+function ray_main(add_pos_x, add_pos_y, add_pos_z, dir)
+ local pick = ray_pick()
+ local pos = device().cam_pos
+ pos.x = pos.x + add_pos_x
+ pos.y = pos.y + add_pos_y
+ pos.z = pos.z + add_pos_z
+
+ pick:set_position(pos)
+ pick:set_direction(dir)
+ pick:set_flags(2)
+ pick:set_range(200)
+ pick:query()
+ local distance = pick:get_distance()
+
+ return distance
+end
+
+function is_flat_surface()
+ local radius = campfire_placeable_mcm.get_config("place_radius")
+ local diff = campfire_placeable_mcm.get_config("dot_dist_diff")
+ local dir = vector():set(0, -0.5, 0)
+ ray_pos[1] = ray_main(0, 0, 0, dir)
+ ray_pos[2] = ray_main(radius, 0, 0, dir)
+ ray_pos[3] = ray_main(-radius, 0, 0, dir)
+ ray_pos[4] = ray_main(0, 0, radius, dir)
+ ray_pos[5] = ray_main(0, 0, -radius, dir)
+
+-- printf("-----------------------------------")
+ local cnt = 0
+ for k, v in pairs(ray_pos) do
+-- printf("[%s] = %s", k, v)
+ for i = 1, #ray_pos do
+ if ray_pos[i] + diff < v or ray_pos[i] - diff > v then
+ cnt = cnt + 1
+ end
+ end
+ end
+-- news_manager.send_tip(db.actor, string.format("surface comparison count: [ %s ]", (cnt)), 0, nil, 1500)
+
+ local front = ray_main(0, 0, 0, device().cam_dir) -- dist to obstacle infront
+ if cnt < 3 and front > 3 then
+-- actor_menu.set_msg(1, strformat("Surface around is FLAT"))
+ return true
+ end
+-- actor_menu.set_msg(1, strformat("Surface is meh"))
+ return false
+end
+
+function prepare_campfire()
+ local game_minutes = math.random(5, 10)
+ level.add_pp_effector("fade_nine_sec.ppe", 855121, false)
+ level.change_game_time(0, 0, game_minutes)
+ CreateTimeEvent("placing_cf", "placing_cf", 2, place_campfire)
+
+end
+
+function place_campfire()
+-- local snd = sound_object("no_sound_yet\\feels_bad")
+-- snd:play_no_feedback(db.actor, sound_object.s2d, 0, VEC_ZERO, 1.0, 1.0)
+
+ local function apply_force_to_campfire(obj_id)
+ local game_obj = get_object_by_id(obj_id)
+ if game_obj then
+ game_obj:get_physics_shell():apply_force(0, 1, 0)
+ CreateTimeEvent("spawn_anomaly_cf", "spawn_anomaly_cf", 1, spawn_anomaly_campfire, game_obj)
+ return true
+ end
+ return false
+ end
+
+ local pos = db.actor:position()
+ local dir = db.actor:direction()
+ pos = pos:add(dir:mul(2))
+ local ph_sec = ini_sys:r_string_ex("itm_campfire", "placeable_section")
+ local se_obj = alife_create(ph_sec or "ph_campfiremod", pos, db.actor:level_vertex_id(), db.actor:game_vertex_id())
+-- se_campfires[se_obj.id] = true
+
+ CreateTimeEvent("apply_force_to_cf", "apply_force_to_cf", 0.5, apply_force_to_campfire, se_obj.id)
+
+ return true
+end
+
+function spawn_anomaly_campfire(obj)
+ local pos = obj:position()
+ local new_pos = vector():set(pos.x - 0.05, pos.y + 0.15, pos.z + 0.05)
+ local se_obj = alife_create("campfire", new_pos, obj:level_vertex_id(), obj:game_vertex_id())
+ se_anoms[se_obj.id] = true
+
+ local data = utils_stpk.get_anom_zone_data(se_obj)
+ if not (data) then return end
+ data.shapes[1] = {}
+ data.shapes[1].shtype = 0
+ data.shapes[1].offset = vector():set(0, 0, 0)
+ data.shapes[1].center = vector():set(0, 0, 0)
+ data.shapes[1].radius = 0.85
+ utils_stpk.set_anom_zone_data(data, se_obj)
+
+ return true
+end
+
+function actor_on_item_use(obj)
+ local sec = obj:section()
+ if (sec == "itm_campfire") then
+ if not (is_flat_surface()) then
+ news_manager.send_tip(db.actor, game.translate_string("st_bad_surface"), 0, nil, 1500)
+ else
+ alife_release(obj)
+ prepare_campfire()
+ hide_hud_inventory()
+ end
+ end
+
+end
+
+-------------------------- gather wood xd -------------------------
+function allowing_chop()
+ chop_allowed = true
+ return true
+end
+
+function gather_wood(obj)
+ chop_allowed = false
+ CreateTimeEvent("allowing_chop_again", "allowing_chop_again", 7, allowing_chop)
+
+ local sec = obj:section()
+
+-- spawn fake item in inv and eat it
+ local itm_to_spawn = axes[sec].item_to_use
+ alife_create_item(itm_to_spawn, db.actor)
+
+ local function delay_item_use()
+ local itm_obj
+ db.actor:iterate_inventory( function(owner, item)
+ if item:section() == itm_to_spawn then
+ itm_obj = item
+ end
+ end)
+
+ db.actor:eat(itm_obj)
+ return true
+ end
+
+ CreateTimeEvent("eat_xcvb", "eat_xcvb", 0.25, delay_item_use) -- item spawn has small delay apparently ;[
+
+-- degradate axe
+ local cond = obj:condition()
+ local degr_for = axes[sec].degr
+ degr_for = (math.random(degr_for - 2, degr_for + 3)) / 100
+ printf("%s degraded for: %s %", sec, degr_for * 100)
+ if cond > degr_for then
+ obj:set_condition(cond - degr_for)
+ else
+ obj:set_condition(0.01)
+ end
+
+-- change time + fade out + play sound
+ local minutes = axes[sec].minutes
+ minutes = math.random(minutes - 15, minutes + 15)
+ hide_hud_inventory()
+ level.change_game_time(0, 0, minutes)
+ printf("Time spent on chopping wood: %s Minutes", minutes)
+ level.add_pp_effector("fade_nine_sec.ppe", 8551213, false)
+
+-- spawn campfire in inv
+ alife_create_item("itm_campfire", db.actor)
+
+end
+
+function menu_gather_wood(obj)
+ local p = obj:parent()
+ if not (p and p:id() == AC_ID) then return end
+
+ return game.translate_string("st_gather_wood")
+end
+
+function func_gather_wood(obj)
+ local p = obj:parent()
+ if not (p and p:id() == AC_ID) then return end
+
+ gather_wood(obj)
+
+end
+
+NameCustom = ui_inventory.UIInventory.Name_Custom
+
+function ui_inventory.UIInventory:Name_Custom(obj, bag, temp, i)
+ local active_item = db.actor:active_item()
+ local active_id = active_item and active_item:id()
+ obj = self:CheckItem(obj,"Name_Custom " .. i)
+ if i == 9 and axes[obj:section()] and chop_allowed and (not (level_weathers.bLevelUnderground)) then
+ if obj:condition() >= 0.05 then
+ return menu_gather_wood(obj)
+ else
+ return NameCustom(self, obj, bag, temp, i)
+ end
+ else
+ return NameCustom(self, obj, bag, temp, i)
+ end
+end
+
+ActionCustom = ui_inventory.UIInventory.Action_Custom
+function ui_inventory.UIInventory:Action_Custom(obj, bag, temp, i)
+ local active_item = db.actor:active_item()
+ local active_id = active_item and active_item:id()
+ obj = self:CheckItem(obj,"Action_Custom " .. i)
+ if i == 9 and axes[obj:section()] and chop_allowed and (not (level_weathers.bLevelUnderground)) then
+ if obj:condition() >= 0.05 then
+ func_gather_wood(obj)
+ else
+ ActionCustom(self, obj, bag, temp, i)
+ end
+ else
+ ActionCustom(self, obj, bag, temp, i)
+ end
+end
+
+-------------------------- trader artiinject -------------------------
+local trade_table = {
+
+ ["bandit"] = {
+ [1] = {
+ ["itm_campfire"] = 3,
+ },
+ [2] = {
+ ["itm_campfire"] = 4,
+ },
+ },
+
+ ["dolg"] = {
+ [1] = {
+ ["itm_campfire"] = 3,
+ },
+ [2] = {
+ ["itm_campfire"] = 4,
+ },
+ },
+
+ ["ecolog"] = {
+ [1] = {
+ ["itm_campfire"] = 3,
+ },
+ [2] = {
+ ["itm_campfire"] = 4,
+ },
+ },
+
+ ["freedom"] = {
+ [1] = {
+ ["itm_campfire"] = 3,
+ },
+ [2] = {
+ ["itm_campfire"] = 4,
+ },
+ },
+
+ ["killer"] = {
+ [1] = {
+ ["itm_campfire"] = 3,
+ },
+ [2] = {
+ ["itm_campfire"] = 4,
+ },
+ },
+
+ ["army"] = {
+ [1] = {
+ ["itm_campfire"] = 3,
+ },
+ [2] = {
+ ["itm_campfire"] = 4,
+ },
+ },
+
+ ["monolith"] = {
+ [1] = {
+ ["itm_campfire"] = 3,
+ },
+ [2] = {
+ ["itm_campfire"] = 4,
+ },
+ },
+
+ ["greh"] = {
+ [1] = {
+ ["itm_campfire"] = 3,
+ },
+ [2] = {
+ ["itm_campfire"] = 4,
+ },
+ },
+
+ ["stalker"] = {
+ [1] = {
+ ["itm_campfire"] = 3,
+ },
+ [2] = {
+ ["itm_campfire"] = 4,
+ },
+ },
+
+ ["csky"] = {
+ [1] = {
+ ["itm_campfire"] = 3,
+ },
+ [2] = {
+ ["itm_campfire"] = 4,
+ },
+ },
+
+ ["isg"] = {
+ [1] = {
+ ["itm_campfire"] = 3,
+ },
+ [2] = {
+ ["itm_campfire"] = 4,
+ },
+ },
+
+ ["renegade"] = {
+ [1] = {
+ ["itm_campfire"] = 3,
+ },
+ [2] = {
+ ["itm_campfire"] = 4,
+ },
+ },
+
+}
+
+function campfires_stock(npc)
+
+ local is_trader = trader_autoinject.get_trader_type(npc) == trader_autoinject.SUPPLIER
+ if not is_trader then return end
+
+ local community = npc:character_community() or "stalker"
+ local trader_table = trade_table[community] or trade_table["stalker"]
+ local supply_level = clamp(trader_autoinject.supply_level(npc, true) or 1, 1, 2)
+
+ if trader_table[supply_level] then
+ trader_autoinject.spawn_items(npc, trader_table[supply_level], true)
+ end
+
+end
+
+TraderAuto = trader_autoinject.update
+
+function trader_autoinject.update(npc)
+ TraderAuto(npc)
+ campfires_stock(npc)
+end
+
+------------------------------------------------------------
+
+function on_game_start()
+ RegisterScriptCallback("save_state", save_state)
+ RegisterScriptCallback("load_state", load_state)
+ RegisterScriptCallback("actor_on_first_update", actor_on_first_update)
+ RegisterScriptCallback("actor_on_item_use", actor_on_item_use)
+end
\ No newline at end of file
diff --git a/mods/Placeable Campfires/gamedata/scripts/campfire_placeable_mcm.script b/mods/Placeable Campfires/gamedata/scripts/campfire_placeable_mcm.script
new file mode 100644
index 00000000..16f75bdb
--- /dev/null
+++ b/mods/Placeable Campfires/gamedata/scripts/campfire_placeable_mcm.script
@@ -0,0 +1,27 @@
+-- If you don't use MCM, change your defaults from here.
+local defaults = {
+ ["place_radius"] = 3,
+ ["dot_dist_diff"] = 0.4,
+ ["transition_delete_items"] = true,
+ ["delete_items"] = false,
+}
+
+function get_config(key)
+ if ui_mcm then return ui_mcm.get("campfire_placeable/"..key) else return defaults[key] end
+end
+
+function on_mcm_load()
+ op = { id= "campfire_placeable",sh=true ,gr={
+ { id= "title",type= "slide",link= "ui_options_slider_player",text="ui_mcm_campfire_placeable_title",size= {512,50},spacing= 20 },
+ {id= "divider", type = "line" },
+ {id = "place_radius", type = "track", val = 2, min=0.5,max=5,step=0.25, def = 3},
+ {id = "dot_dist_diff", type = "track", val = 2, min=0.1,max=5,step=0.05, def = 0.4},
+ {id = "transition_delete_items", type = "check", val = 1, def = true},
+ {id= "divider", type = "line" },
+ {id= "divider", type = "line" },
+ {id = "delete_items", type = "check", val = 1, def = false},
+ }
+ }
+
+ return op
+end
\ No newline at end of file
diff --git a/mods/Anomaly Ballistics Overhaul/gamedata/scripts/trader_autoinject.script b/mods/Placeable Campfires/gamedata/scripts/trader_autoinject.script
similarity index 97%
rename from mods/Anomaly Ballistics Overhaul/gamedata/scripts/trader_autoinject.script
rename to mods/Placeable Campfires/gamedata/scripts/trader_autoinject.script
index 047d1b70..78a953da 100644
--- a/mods/Anomaly Ballistics Overhaul/gamedata/scripts/trader_autoinject.script
+++ b/mods/Placeable Campfires/gamedata/scripts/trader_autoinject.script
@@ -48,10 +48,8 @@ function trade_manager.update(npc, force_refresh)
CreateTimeEvent("custom_update"..npc:id(), "custom_resupply"..npc:id(), 0.1, timed_update, npc)
end
--- Add easier to trace callback
function timed_update(npc)
update(npc)
- SendScriptCallback("trader_on_restock",npc)
return true
end
@@ -196,6 +194,4 @@ function spawn_items(npc, to_spawn, check_existing)
alife_create_item(k, npc)
end
end
-end
-
-AddScriptCallback("trader_on_restock")
+end
\ No newline at end of file
diff --git a/mods/Placeable Campfires/gamedata/sounds/interface/axe_wood_chop.ogg b/mods/Placeable Campfires/gamedata/sounds/interface/axe_wood_chop.ogg
new file mode 100644
index 00000000..9a5cf153
--- /dev/null
+++ b/mods/Placeable Campfires/gamedata/sounds/interface/axe_wood_chop.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:6a1adadd8707f7d1799deb55093ecd23579753d996f943c4aa0d9e000cc339bc
+size 28969
diff --git a/mods/Placeable Campfires/gamedata/textures/detail/detail_grnd_earth.dds b/mods/Placeable Campfires/gamedata/textures/detail/detail_grnd_earth.dds
new file mode 100644
index 00000000..14eb1d99
--- /dev/null
+++ b/mods/Placeable Campfires/gamedata/textures/detail/detail_grnd_earth.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:8f3c98566d9a0a3539879f95baf3d37a4de24068d64729a9be9a3135d188a76a
+size 2796344
diff --git a/mods/Placeable Campfires/gamedata/textures/detail/detail_grnd_earth_bump#.dds b/mods/Placeable Campfires/gamedata/textures/detail/detail_grnd_earth_bump#.dds
new file mode 100644
index 00000000..9de9104f
--- /dev/null
+++ b/mods/Placeable Campfires/gamedata/textures/detail/detail_grnd_earth_bump#.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:86bc2c7b78578fc891b840730fcb64e6b1c436d290118e062f1988c7ea7100ce
+size 1398256
diff --git a/mods/Placeable Campfires/gamedata/textures/detail/detail_grnd_earth_bump.dds b/mods/Placeable Campfires/gamedata/textures/detail/detail_grnd_earth_bump.dds
new file mode 100644
index 00000000..e54a1f18
--- /dev/null
+++ b/mods/Placeable Campfires/gamedata/textures/detail/detail_grnd_earth_bump.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a803d10b8ad5d0c052aa061f7d50bc118ef3506fa610992a1db4a94cf2ca65e8
+size 5592560
diff --git a/mods/Placeable Campfires/gamedata/textures/ui/ui_campfire_placeable.dds b/mods/Placeable Campfires/gamedata/textures/ui/ui_campfire_placeable.dds
new file mode 100644
index 00000000..a5dffde5
--- /dev/null
+++ b/mods/Placeable Campfires/gamedata/textures/ui/ui_campfire_placeable.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:03ffe9b035e3b3d10baebd8f106f5c0ac8aaa80c662243d804124622464c4293
+size 65664
diff --git a/mods/Placeable Campfires/meta.ini b/mods/Placeable Campfires/meta.ini
new file mode 100644
index 00000000..2fa23bdf
--- /dev/null
+++ b/mods/Placeable Campfires/meta.ini
@@ -0,0 +1,28 @@
+[General]
+gameName=stalkeranomaly
+modid=0
+version=d2024.4.4.0
+newestVersion=
+category="-1,"
+nexusFileStatus=1
+installationFile=Campfires_placeable_0.22.zip
+repository=Nexus
+ignoredVersion=
+comments=
+notes=
+nexusDescription=
+url=
+hasCustomURL=true
+lastNexusQuery=
+lastNexusUpdate=
+nexusLastModified=2024-04-05T02:49:55Z
+nexusCategory=0
+converted=false
+validated=false
+color=@Variant(\0\0\0\x43\0\xff\xff\0\0\0\0\0\0\0\0)
+tracked=0
+
+[installedFiles]
+1\modid=0
+1\fileid=0
+size=1
diff --git a/mods/REPACK Doors/gamedata/textures/door/door_brown.dds b/mods/REPACK Doors/gamedata/textures/door/door_brown.dds
new file mode 100644
index 00000000..29bfc4ae
--- /dev/null
+++ b/mods/REPACK Doors/gamedata/textures/door/door_brown.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:99863a7cd75b642a3af892b1be95dec7e0c5fa867998594b9eb9c29b9d13f553
+size 22369796
diff --git a/mods/REPACK Doors/gamedata/textures/door/door_electricunit_01.dds b/mods/REPACK Doors/gamedata/textures/door/door_electricunit_01.dds
new file mode 100644
index 00000000..56912447
--- /dev/null
+++ b/mods/REPACK Doors/gamedata/textures/door/door_electricunit_01.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:120bd1d71fd1c0c5947c7754957c9520c581ed3a836f8eadab70b2a8f0212544
+size 22369796
diff --git a/mods/REPACK Doors/gamedata/textures/door/door_electricunit_02.dds b/mods/REPACK Doors/gamedata/textures/door/door_electricunit_02.dds
new file mode 100644
index 00000000..e391b01c
--- /dev/null
+++ b/mods/REPACK Doors/gamedata/textures/door/door_electricunit_02.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a2a79ea086735f95e8b5c107f6e017209104af45f2880f04215c149dc2150673
+size 22369796
diff --git a/mods/REPACK Doors/gamedata/textures/door/door_electricunit_03.dds b/mods/REPACK Doors/gamedata/textures/door/door_electricunit_03.dds
new file mode 100644
index 00000000..5cb34139
--- /dev/null
+++ b/mods/REPACK Doors/gamedata/textures/door/door_electricunit_03.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:045775a4f1866f9b22f08b802b8efe4f2eae86006b35ae9497e5b719d46d376e
+size 22369796
diff --git a/mods/REPACK Doors/gamedata/textures/door/door_electricunit_04.dds b/mods/REPACK Doors/gamedata/textures/door/door_electricunit_04.dds
new file mode 100644
index 00000000..183edaed
--- /dev/null
+++ b/mods/REPACK Doors/gamedata/textures/door/door_electricunit_04.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:677ce31249c21956bd80fe34d70ac8dd9fac9f62748251a88fe47c3562eae018
+size 11184996
diff --git a/mods/REPACK Doors/gamedata/textures/door/door_gate_metal_01.dds b/mods/REPACK Doors/gamedata/textures/door/door_gate_metal_01.dds
new file mode 100644
index 00000000..4e950a6c
--- /dev/null
+++ b/mods/REPACK Doors/gamedata/textures/door/door_gate_metal_01.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d6ae1f58a594737b0359e6ca331732dec2a5bc66a11bef0484c4f02146ee321d
+size 22369796
diff --git a/mods/REPACK Doors/gamedata/textures/door/door_gate_metal_02.dds b/mods/REPACK Doors/gamedata/textures/door/door_gate_metal_02.dds
new file mode 100644
index 00000000..34f1467e
--- /dev/null
+++ b/mods/REPACK Doors/gamedata/textures/door/door_gate_metal_02.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:eb4f1023fd5f078ce92749f018af304c0ceb8e42a3186bc8f522b5d736eb0b5e
+size 22369796
diff --git a/mods/REPACK Doors/gamedata/textures/door/door_gate_metal_03.dds b/mods/REPACK Doors/gamedata/textures/door/door_gate_metal_03.dds
new file mode 100644
index 00000000..718acdc4
--- /dev/null
+++ b/mods/REPACK Doors/gamedata/textures/door/door_gate_metal_03.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:7a34b58569ce38b6bd35b2020a514f65bf25038e486cdfb1bcb0c0786d571f66
+size 22369796
diff --git a/mods/REPACK Doors/gamedata/textures/door/door_gate_train_out.dds b/mods/REPACK Doors/gamedata/textures/door/door_gate_train_out.dds
new file mode 100644
index 00000000..200b1839
--- /dev/null
+++ b/mods/REPACK Doors/gamedata/textures/door/door_gate_train_out.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:1391309693373fcec0b5103e5bad061960607e788e50ede9b0557e99aa551bb7
+size 22369796
diff --git a/mods/REPACK Doors/gamedata/textures/door/door_gr01.dds b/mods/REPACK Doors/gamedata/textures/door/door_gr01.dds
new file mode 100644
index 00000000..48a1a1ac
--- /dev/null
+++ b/mods/REPACK Doors/gamedata/textures/door/door_gr01.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:5e1fd21531d0f3e1d09f92e38cf9d204fec3b413cb25eca7054a92a1e0c64dc1
+size 5592580
diff --git a/mods/REPACK Doors/gamedata/textures/door/door_gr02.dds b/mods/REPACK Doors/gamedata/textures/door/door_gr02.dds
new file mode 100644
index 00000000..b46aa59c
--- /dev/null
+++ b/mods/REPACK Doors/gamedata/textures/door/door_gr02.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:4d855542df1d4bb487481d228966e0fc5cc90f416438a3455aeb373f165bd185
+size 11184996
diff --git a/mods/REPACK Doors/gamedata/textures/door/door_gr05.dds b/mods/REPACK Doors/gamedata/textures/door/door_gr05.dds
new file mode 100644
index 00000000..3ff7853e
--- /dev/null
+++ b/mods/REPACK Doors/gamedata/textures/door/door_gr05.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:6e10dfe2b3ea472542ce54d5e6cf1cd8dba40f3c8e049e35a09f4134a8ce80d4
+size 11184996
diff --git a/mods/REPACK Doors/gamedata/textures/door/door_gr1.dds b/mods/REPACK Doors/gamedata/textures/door/door_gr1.dds
new file mode 100644
index 00000000..d27d3e18
--- /dev/null
+++ b/mods/REPACK Doors/gamedata/textures/door/door_gr1.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:1c1ab6aa9ffa1f0ef6816116b4026bd6ee96585449ed589998bdfd5e9897d9d6
+size 22369796
diff --git a/mods/REPACK Doors/gamedata/textures/door/door_gr2.dds b/mods/REPACK Doors/gamedata/textures/door/door_gr2.dds
new file mode 100644
index 00000000..335b44e1
--- /dev/null
+++ b/mods/REPACK Doors/gamedata/textures/door/door_gr2.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:764501d08d0f109e7cf11a435a860f677ba63cdac7117bd9b5366a7c804c64e4
+size 5592580
diff --git a/mods/REPACK Doors/gamedata/textures/door/door_gr2_iov.dds b/mods/REPACK Doors/gamedata/textures/door/door_gr2_iov.dds
new file mode 100644
index 00000000..71258ac7
--- /dev/null
+++ b/mods/REPACK Doors/gamedata/textures/door/door_gr2_iov.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:ee01ab1d0b152857ce672a301b2fb912c029da0674a49f7eeec4c6b7bd7e3692
+size 22369796
diff --git a/mods/REPACK Doors/gamedata/textures/door/door_gr_iov_01.dds b/mods/REPACK Doors/gamedata/textures/door/door_gr_iov_01.dds
new file mode 100644
index 00000000..3a52041e
--- /dev/null
+++ b/mods/REPACK Doors/gamedata/textures/door/door_gr_iov_01.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:aece8159fd5a13de9a74df64a3df0da007052b7023d54e1863e6222ba112bf17
+size 22369796
diff --git a/mods/REPACK Doors/gamedata/textures/door/door_gr_out.dds b/mods/REPACK Doors/gamedata/textures/door/door_gr_out.dds
new file mode 100644
index 00000000..6d1f2cc2
--- /dev/null
+++ b/mods/REPACK Doors/gamedata/textures/door/door_gr_out.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:4409c38a3e0b22311f836898956a0b889075a0d4ab0fb0668004daa2d2995f49
+size 44739428
diff --git a/mods/REPACK Doors/gamedata/textures/door/door_j01_out.dds b/mods/REPACK Doors/gamedata/textures/door/door_j01_out.dds
new file mode 100644
index 00000000..8e7f5d05
--- /dev/null
+++ b/mods/REPACK Doors/gamedata/textures/door/door_j01_out.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:4a7f74359a57fb7d507e1e10d1708d7e7704bda6887cab06cb1ca95df65b355f
+size 22369796
diff --git a/mods/REPACK Doors/gamedata/textures/door/door_j02.dds b/mods/REPACK Doors/gamedata/textures/door/door_j02.dds
new file mode 100644
index 00000000..43c7c4a4
--- /dev/null
+++ b/mods/REPACK Doors/gamedata/textures/door/door_j02.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:92c630f429050c25eea9800e92aed243363a566c440a5a11df77657eadfe2a02
+size 2796388
diff --git a/mods/REPACK Doors/gamedata/textures/door/door_j03alfa.dds b/mods/REPACK Doors/gamedata/textures/door/door_j03alfa.dds
new file mode 100644
index 00000000..50c225b0
--- /dev/null
+++ b/mods/REPACK Doors/gamedata/textures/door/door_j03alfa.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:ce739e66838e9435a1713d23a2ac2ffd00ba2733d709ae2e94ca8bbe257857b7
+size 22369796
diff --git a/mods/REPACK Doors/gamedata/textures/door/door_katakomb_01.dds b/mods/REPACK Doors/gamedata/textures/door/door_katakomb_01.dds
new file mode 100644
index 00000000..f46bcbb6
--- /dev/null
+++ b/mods/REPACK Doors/gamedata/textures/door/door_katakomb_01.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:685861bb3696e1387ea195bc5aff3cbf00098bb605a7ee99978eddc97cfc1df6
+size 5592580
diff --git a/mods/REPACK Doors/gamedata/textures/door/door_korob_wh.dds b/mods/REPACK Doors/gamedata/textures/door/door_korob_wh.dds
new file mode 100644
index 00000000..5dd358e7
--- /dev/null
+++ b/mods/REPACK Doors/gamedata/textures/door/door_korob_wh.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:78f79f0f6fd177643766655fa36d607449e752f2c44423348ee96b7fb56d87c1
+size 2796388
diff --git a/mods/REPACK Doors/gamedata/textures/door/door_kotelna.dds b/mods/REPACK Doors/gamedata/textures/door/door_kotelna.dds
new file mode 100644
index 00000000..083e8907
--- /dev/null
+++ b/mods/REPACK Doors/gamedata/textures/door/door_kotelna.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:59b48bde8a2fd929e314d741aa3e946145baef715b4a70f3a23c8f3ae762e037
+size 11184996
diff --git a/mods/REPACK Doors/gamedata/textures/door/door_lift_01.dds b/mods/REPACK Doors/gamedata/textures/door/door_lift_01.dds
new file mode 100644
index 00000000..7f4b2aa1
--- /dev/null
+++ b/mods/REPACK Doors/gamedata/textures/door/door_lift_01.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:bc9c729a70c7eb7b5af17367121611e877fa28696b2c3f77ed4b63a93e01de38
+size 2796388
diff --git a/mods/REPACK Doors/gamedata/textures/door/door_metal_01.dds b/mods/REPACK Doors/gamedata/textures/door/door_metal_01.dds
new file mode 100644
index 00000000..a6d531ab
--- /dev/null
+++ b/mods/REPACK Doors/gamedata/textures/door/door_metal_01.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d8860329ab45940cb3134742b54663a63308a19d2f4d27d58a07e5950784a55e
+size 11184996
diff --git a/mods/REPACK Doors/gamedata/textures/door/door_metal_02.dds b/mods/REPACK Doors/gamedata/textures/door/door_metal_02.dds
new file mode 100644
index 00000000..d9627e5b
--- /dev/null
+++ b/mods/REPACK Doors/gamedata/textures/door/door_metal_02.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d92f292610e69e38bb562ca510a3c64098cdea515dc8fc09246e523f57c28a61
+size 11184996
diff --git a/mods/REPACK Doors/gamedata/textures/door/door_metal_03.dds b/mods/REPACK Doors/gamedata/textures/door/door_metal_03.dds
new file mode 100644
index 00000000..d53f76a4
--- /dev/null
+++ b/mods/REPACK Doors/gamedata/textures/door/door_metal_03.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d07ce80e92e00f8644db5f0082e3d3dd51219d935135edef7c246df6d827d80d
+size 11184996
diff --git a/mods/REPACK Doors/gamedata/textures/door/door_old_iov.dds b/mods/REPACK Doors/gamedata/textures/door/door_old_iov.dds
new file mode 100644
index 00000000..3663ca76
--- /dev/null
+++ b/mods/REPACK Doors/gamedata/textures/door/door_old_iov.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:cce1d4137064ab59c810d2891cd2c0ad98cc7ddd0315c61c4b0a3628b07f3ab1
+size 11184996
diff --git a/mods/REPACK Doors/gamedata/textures/door/door_rusty_iron_0.dds b/mods/REPACK Doors/gamedata/textures/door/door_rusty_iron_0.dds
new file mode 100644
index 00000000..cc7f285b
--- /dev/null
+++ b/mods/REPACK Doors/gamedata/textures/door/door_rusty_iron_0.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:e71e140211e2504a42b4aec9a3986008322d3a3214435a959d27a5241282123b
+size 11184996
diff --git a/mods/REPACK Doors/gamedata/textures/door/door_sheet.dds b/mods/REPACK Doors/gamedata/textures/door/door_sheet.dds
new file mode 100644
index 00000000..507700fa
--- /dev/null
+++ b/mods/REPACK Doors/gamedata/textures/door/door_sheet.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:91a30c7aa8b3d523a74bc527f99eaad87cf533d82ee536568a46902dc0a158c6
+size 11184996
diff --git a/mods/REPACK Doors/gamedata/textures/door/door_ship_metall.dds b/mods/REPACK Doors/gamedata/textures/door/door_ship_metall.dds
new file mode 100644
index 00000000..e17a01d0
--- /dev/null
+++ b/mods/REPACK Doors/gamedata/textures/door/door_ship_metall.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:59608fa62ba21b5c24f428e24b96edf2326a9cc0ffd735962028d462081a0923
+size 22369796
diff --git a/mods/REPACK Doors/gamedata/textures/door/door_trader.dds b/mods/REPACK Doors/gamedata/textures/door/door_trader.dds
new file mode 100644
index 00000000..76898834
--- /dev/null
+++ b/mods/REPACK Doors/gamedata/textures/door/door_trader.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:2c0f7dee3ed2f85e8670f384b77496bc18982afd3bef921db88c4b51d92b8eed
+size 22369796
diff --git a/mods/REPACK Doors/gamedata/textures/door/door_vorota_ch_train.dds b/mods/REPACK Doors/gamedata/textures/door/door_vorota_ch_train.dds
new file mode 100644
index 00000000..d7619e49
--- /dev/null
+++ b/mods/REPACK Doors/gamedata/textures/door/door_vorota_ch_train.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:494c775e90ae7fdf498234335ee96b688d2ff590bd1f4001f3f57c43d55af660
+size 22369796
diff --git a/mods/REPACK Doors/gamedata/textures/door/door_w01.dds b/mods/REPACK Doors/gamedata/textures/door/door_w01.dds
new file mode 100644
index 00000000..b0f7309f
--- /dev/null
+++ b/mods/REPACK Doors/gamedata/textures/door/door_w01.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:e2922c29b16d6ca4ea01adc2f03eaa374a44160e7a33f206e8f3b21ecbee126d
+size 11184996
diff --git a/mods/REPACK Doors/gamedata/textures/door/door_white.dds b/mods/REPACK Doors/gamedata/textures/door/door_white.dds
new file mode 100644
index 00000000..f2c39eb9
--- /dev/null
+++ b/mods/REPACK Doors/gamedata/textures/door/door_white.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:e18fa5f155c2a2214b07e8c05fcb6b1c104173a38e9d9ff90d6736c4d467ae77
+size 2796388
diff --git a/mods/REPACK Doors/gamedata/textures/door/door_white_01.dds b/mods/REPACK Doors/gamedata/textures/door/door_white_01.dds
new file mode 100644
index 00000000..05543948
--- /dev/null
+++ b/mods/REPACK Doors/gamedata/textures/door/door_white_01.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:312e21c5244388c6277b3c0312fef2687da21595cc102bb29ff461e84a981157
+size 5592580
diff --git a/mods/REPACK Doors/gamedata/textures/door/door_white_02.dds b/mods/REPACK Doors/gamedata/textures/door/door_white_02.dds
new file mode 100644
index 00000000..6b2bec40
--- /dev/null
+++ b/mods/REPACK Doors/gamedata/textures/door/door_white_02.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:cfec42bb3b6547c01d137a730dd4e781b8cad225feb8676a74b8d04931c12c9b
+size 22369796
diff --git a/mods/REPACK Doors/gamedata/textures/door/door_white_03.dds b/mods/REPACK Doors/gamedata/textures/door/door_white_03.dds
new file mode 100644
index 00000000..f2c39eb9
--- /dev/null
+++ b/mods/REPACK Doors/gamedata/textures/door/door_white_03.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:e18fa5f155c2a2214b07e8c05fcb6b1c104173a38e9d9ff90d6736c4d467ae77
+size 2796388
diff --git a/mods/REPACK Doors/gamedata/textures/door/door_white_04.dds b/mods/REPACK Doors/gamedata/textures/door/door_white_04.dds
new file mode 100644
index 00000000..ece9db8d
--- /dev/null
+++ b/mods/REPACK Doors/gamedata/textures/door/door_white_04.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:8284a015451447bf90698b0235de690265fbfc42226822548729e18bb9556817
+size 11184996
diff --git a/mods/REPACK Doors/gamedata/textures/door/door_wood_01.dds b/mods/REPACK Doors/gamedata/textures/door/door_wood_01.dds
new file mode 100644
index 00000000..3663ca76
--- /dev/null
+++ b/mods/REPACK Doors/gamedata/textures/door/door_wood_01.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:cce1d4137064ab59c810d2891cd2c0ad98cc7ddd0315c61c4b0a3628b07f3ab1
+size 11184996
diff --git a/mods/REPACK Doors/gamedata/textures/door/door_wood_03.dds b/mods/REPACK Doors/gamedata/textures/door/door_wood_03.dds
new file mode 100644
index 00000000..8df64155
--- /dev/null
+++ b/mods/REPACK Doors/gamedata/textures/door/door_wood_03.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:70f5e09057279ed42c25ac610647a79bcf4f9f953735918a50ae5a6c4dc2be1e
+size 11184996
diff --git a/mods/REPACK Doors/meta.ini b/mods/REPACK Doors/meta.ini
new file mode 100644
index 00000000..22ea13d3
--- /dev/null
+++ b/mods/REPACK Doors/meta.ini
@@ -0,0 +1,28 @@
+[General]
+gameName=stalkeranomaly
+modid=0
+version=d2024.4.4.0
+newestVersion=
+category="-1,"
+nexusFileStatus=1
+installationFile=REPACK_Doors_1.0.1.rar
+repository=Nexus
+ignoredVersion=
+comments=
+notes=
+nexusDescription=
+url=
+hasCustomURL=true
+lastNexusQuery=
+lastNexusUpdate=
+nexusLastModified=2024-04-04T22:08:50Z
+nexusCategory=0
+converted=false
+validated=false
+color=@Variant(\0\0\0\x43\0\xff\xff\0\0\0\0\0\0\0\0)
+tracked=0
+
+[installedFiles]
+1\modid=0
+1\fileid=0
+size=1
diff --git a/mods/Redone Collection/README Psy-Field Ambient Addon.txt b/mods/Redone Collection/README Psy-Field Ambient Addon.txt
deleted file mode 100644
index 4f0e339f..00000000
--- a/mods/Redone Collection/README Psy-Field Ambient Addon.txt
+++ /dev/null
@@ -1,5 +0,0 @@
- An ambient sound will be played when player are in a psy-field, MM or BS locations.
-
-Sound ambient is from Horror Overhaul - DesmanMetzger
-
-Credits: DesmanMetzger
\ No newline at end of file
diff --git a/mods/Redone Collection/README Rank Progression Addon.txt b/mods/Redone Collection/README Rank Progression Addon.txt
deleted file mode 100644
index e8b6b130..00000000
--- a/mods/Redone Collection/README Rank Progression Addon.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-Re:done version of the Improved player and NPCs ranks addon.
-
-Slow progression. Rank increases quite slowly and have other values, and NPC has a higher rank cap, 50 000 - 70 000. More legends and master-ranked NPCs.
-
-novice, 1999, trainee, 3999, experienced, 9999, professional, 17999, veteran, 25999, expert, 34999, master, 49999, legend
-
-Credits: mandothreesixtee
-
-
diff --git a/mods/Redone Collection/README Update.txt b/mods/Redone Collection/README Update.txt
deleted file mode 100644
index 47fe0e8e..00000000
--- a/mods/Redone Collection/README Update.txt
+++ /dev/null
@@ -1 +0,0 @@
-A New install of Re:done is required when updating.
\ No newline at end of file
diff --git a/mods/Redone Collection/UPDATE 1.0 - 2.0 Patch note.txt b/mods/Redone Collection/UPDATE 1.0 - 2.0 Patch note.txt
deleted file mode 100644
index bd6b2a32..00000000
--- a/mods/Redone Collection/UPDATE 1.0 - 2.0 Patch note.txt
+++ /dev/null
@@ -1,90 +0,0 @@
-Update 2.0 (12/16/2023) BALANCE AND IMPROVEMENTS UPDATE
-
-CORDON UPDATE:
-
-Rebalanced mutants spawns time.
-Disabled few smart terrain.
-
-MEADOW UPDATE:
-
-A Renegade camp and a Renegade mechanic have been added to the abandoned factory.
-More bandits were added to their camp.
-When the Renegade squads is eliminated, mutants will respawn. When the Bandits squads are defeated, mutant will respawn. When the Free stalkers squads are defeated, mutant will respawn. Mutants are going to spawn at the location where stalkers previously had control.
-There's also a probability that ISG will appear when their mission begins.
-Because of the small area, all spawns has a low spawn percentage.
-Some zombie spawn will cease if the lab X16 is disabled.
-
-GARBAGE UPDATE:
-
-When General Voronin and Petrenko are killed, Duty spawn at the checkpoint will cease, the same applies for the army checkpoint when Colonel Kovalski dies.
-Rebalanced mutants spawns time.
-Minor changes to sim avail.
-Added few special squad to factions.
-Disabled few smart terrain.
-
-SWAMPS UPDATE:
-
-A renegade trader was added to their camp.
-Renegade spawns on this map will be reduced by 70% if the trader dies.
-If Snow dies, Csky spawns on this map will be reduced by 75%.
-Added few special squad to factions for free up new stalker spawns.
-Added so the radio not play music during a surge.
-Rebalanced mutants spawns time.
-Minor changes to sim avail.
-Disabled few smart terrain
-
-AGROPROM UPDATE:
-
-Added dealy on the Prapoaganda ambient.
-Special squads were added to free up new army stalker spawns.
-If Colonel Kovalski dies, spawn on this map will be reduced by 80% and will have an effect on other maps.
-Rebalanced mutants spawn time.
-Minor changes to sim avail.
-Disabled a few smart terrains.
-
-AGROPROM UNDERGROUND UPDATE:
-
-Non so far. Planning to enable smart terrain for spawning stalkers down there; only some testing remains before the release.
-Agroprom Underground V2 Endless Spawn is included in this update. To change, just install Agroprom Underground V2 Original in the Optional folder.
-
-DARKVALLEY UPDATE:
-
-Added so the radio not play music during a surge.
-Rebalanced mutants spawns time.
-Disabled few smart terrain.
-
-DARKSCAPE UPDATE:
-
-Rebalanced mutants spawns time.
-Disabled few smart terrain.
-
-ROSTOK UPDATE:
-
-Added Petrenko to the list of targets who must be killed before the Duty faction is destroyed.
-Decreased max pop. at the bar 100.
-TRUCK CEMETERY UPDATE:
-
-Rebalanced mutants spawns time.
-Disabled few smart terrain.
-
-YANTAR UPDATE:
-
-ISG and Ecolog will now spawn correctly in Lab X16 and not above the lab.
-Added back respawn for controller to the Lab X16.
-Rebalanced mutants spawns time.
-Disabled few smart terrain.
-
-WILD TERRITORY UPDATE:
-
-Rebalanced mutants spawns time.
-Disabled few smart terrain.
-
-ARMY WEARHOUSES UPDATE:
-
-Rebalanced mutants spawns time.
-Minor changes to sim avail.
-
-DEAD CITYUPDATE:
-
-Rebalanced mutants spawns time.
-Minor changes to sim avail.
diff --git a/mods/Redone Collection/UPDATE 2.0 - 2.1.6 Patch note.txt b/mods/Redone Collection/UPDATE 2.0 - 2.1.6 Patch note.txt
deleted file mode 100644
index c81ea53c..00000000
--- a/mods/Redone Collection/UPDATE 2.0 - 2.1.6 Patch note.txt
+++ /dev/null
@@ -1,115 +0,0 @@
-Update 2.1.6 (02/02/2024) BALANCE AND IMPROVEMENTS UPDATE
-
-YANTAR & WILD TERRITORY UPDATE:
-
-Added script to remove objects at Lab X-16.
-Added\Changed spawns at Lab X-16.
-Added alternative spawns at Lab X-16 when playing with Monolith or Sin when reactivating Miracle Machine and in Yantar.
-Added Endless spawns light feature at Lab X-16.
-ARMY WEARHOUSE:
-
-Balance of spawns; adjustments to Freedom spawns.
-Changes to sim avail.
-DEAD CITY:
-
-Balance of spawns; adjustments to Mercenaries spawns.
-Removed respawning if the bandit is killed at administration building.
-ROSTOK & TRUCK CEMETERY UPDATE:
-
-Balance of spawns; adjustments to Duty spawns.
-AGROPROM UPDATE:
-
-Balance of spawns; minor adjustments to Army & mutant spawning
-Added so the megaphone will be disabled when Colonel Kovalski dies.
-DARKVALLEY & DARKSCAPE UPDATE:
-
-Balance of spawns; minor adjustments to Bandit & mutant spawning
-GARBAGE:
-
-Balance of spawns: Adjustments to mutant spawning.
-Added logic to Duty checkpoint.
-SWAMPS:
-
-Balance of spawns: more stalker spawns and adjustments to mutant spawning.
-Added profiles to the Renegade trader & mechanic. "DXML"
-Fixed mission bug for the Renegades missions.
-Changes to sim avail.
-CORDON:
-
-Removed Bandit respawn at the car repair shop.
-Fixed incorrect logic at the farm.
-MEADOW:
-
-Balance of spawns: Adjustments to NPC spawns.
-
-
-Update 2.1.5 (12/26/2023) BALANCE AND IMPROVEMENTS UPDATE
-
-Stalkers and mutants spawn time changes and balance on all southern map and more files to DTLX format.
-Update 2.1.4 (12/23/2023) BALANCE AND IMPROVEMENTS UPDATE
-
-ROSTOK UPDATE:
-
-Minor changes to Rostok Duty base smart terrain.
-Minor changes to megaphone.
-TRUCK CEMETERY:
-
-Added one faction-controlled smart terrain.
-AGROPROM UPDATE:
-
-Minor changes to megaphone.
-Update 2.1.3 (12/23/2023) BALANCE AND IMPROVEMENTS UPDATE
-
-YANTAR UPDATE:
-
-Reactivation for Lab-X 16 is now possible and added gameplay for Monolith or Sin to activate the Miracle Machine. Monolith or Sin can reactivate the Miracle Machine with the added gameplay in storymode Off\On. ( If you changed faction in storymode On to Monolith or Sin. )
-Psy-field in Yantar work in conjunction with activation/deactivation settings in X-16
-Fixed surge avail for NPC at the industrial complex; they will still not seek shelter but will now survive a surge. There are no gulag surge scripts at the smart terrains
-Update 2.1.2 (12/23/2023) BALANCE AND IMPROVEMENTS UPDATE
-
-DARKVALLEY UPDATE:
-
-Added back the pyrogeist in Lab-X18 and the militery squad. After the pyrogeist is dead, the spawning will begin, and sim avail is turned on for other stalkers to visit Lab X-18. ISG, Greh, Monolith have no sim avail.
-Removed the faction control above Lab X-18 because of mods conflicts.
-DARKSCAPE UPDATE:
-
-Changed one army special spawn to not spawn again after being killed.
-Update 2.1.1 (12/21/2023) BALANCE AND IMPROVEMENTS UPDATE
-
-AGROPROM UNDERGROUND UPDATE:
-
-When the player has strelok notes in storymode, the smart terrain will be enabled and spawn hard mutants, and sim avail turn on so stalkers will finally be able to visit Agroprom Underground. ISG, Greh, Monolith have no sim avail.
-After 2 days, the soldier squad at the stercase will respawn. If Colonel Kovalski dies, spawn cease.
-AGROPROM UPDATE:
-
-Added military road patrol\special squad.
-MEADOW UPDATE:
-
-Removed the Renegade mechanic to Swamps.
-The Renegade special squad have new assignment at the abandoned factory.
-ROSTOK UPDATE:
-
-The surge ambient at the megafone has been corrected and works properly.
-SWAMPS:
-
-Added Renegade mechanic to the Renegade camp
-Added Renegade camp patrol\special squad.
-The Renegade camp is now a real faction camp.
-Update 2.1 (12/19/2023) BUG FIX UPDATE
-
-Optional FOLDER fix: Correcting some spelling errors in the folder; My dyslexia shines out at times. xD
-
-MEADOW UPDATE:
-
-Fixed surge avail for NPC in Meadow; they will still not seek shelter but will now survive a surge. There are no gulag surge scripts at the smart terrains, only for the Loners in the map's south.
-ROSTOK UPDATE:
-
-Fixed an issue in the arena where the doors remained locked in Rostok.
-AGROPROM UPDATE:
-
-Added more simulation spawns to army, loners, csky, ecolog at Agroprom.
-Fixed the megafone; the alarm feature does work again.
-AGROPROM UNDERGROUND UPDATE:
-
-Balance some mutants spawn.
-Fixed a bug in Endless spawn feature.
diff --git a/mods/Redone Collection_backup/README Psy-Field Ambient Addon.txt b/mods/Redone Collection_backup/README Psy-Field Ambient Addon.txt
deleted file mode 100644
index 4f0e339f..00000000
--- a/mods/Redone Collection_backup/README Psy-Field Ambient Addon.txt
+++ /dev/null
@@ -1,5 +0,0 @@
- An ambient sound will be played when player are in a psy-field, MM or BS locations.
-
-Sound ambient is from Horror Overhaul - DesmanMetzger
-
-Credits: DesmanMetzger
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/README Rank Progression Addon.txt b/mods/Redone Collection_backup/README Rank Progression Addon.txt
deleted file mode 100644
index e8b6b130..00000000
--- a/mods/Redone Collection_backup/README Rank Progression Addon.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-Re:done version of the Improved player and NPCs ranks addon.
-
-Slow progression. Rank increases quite slowly and have other values, and NPC has a higher rank cap, 50 000 - 70 000. More legends and master-ranked NPCs.
-
-novice, 1999, trainee, 3999, experienced, 9999, professional, 17999, veteran, 25999, expert, 34999, master, 49999, legend
-
-Credits: mandothreesixtee
-
-
diff --git a/mods/Redone Collection_backup/README Update.txt b/mods/Redone Collection_backup/README Update.txt
deleted file mode 100644
index 47fe0e8e..00000000
--- a/mods/Redone Collection_backup/README Update.txt
+++ /dev/null
@@ -1 +0,0 @@
-A New install of Re:done is required when updating.
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/UPDATE 1.0 - 2.0 Patch note.txt b/mods/Redone Collection_backup/UPDATE 1.0 - 2.0 Patch note.txt
deleted file mode 100644
index bd6b2a32..00000000
--- a/mods/Redone Collection_backup/UPDATE 1.0 - 2.0 Patch note.txt
+++ /dev/null
@@ -1,90 +0,0 @@
-Update 2.0 (12/16/2023) BALANCE AND IMPROVEMENTS UPDATE
-
-CORDON UPDATE:
-
-Rebalanced mutants spawns time.
-Disabled few smart terrain.
-
-MEADOW UPDATE:
-
-A Renegade camp and a Renegade mechanic have been added to the abandoned factory.
-More bandits were added to their camp.
-When the Renegade squads is eliminated, mutants will respawn. When the Bandits squads are defeated, mutant will respawn. When the Free stalkers squads are defeated, mutant will respawn. Mutants are going to spawn at the location where stalkers previously had control.
-There's also a probability that ISG will appear when their mission begins.
-Because of the small area, all spawns has a low spawn percentage.
-Some zombie spawn will cease if the lab X16 is disabled.
-
-GARBAGE UPDATE:
-
-When General Voronin and Petrenko are killed, Duty spawn at the checkpoint will cease, the same applies for the army checkpoint when Colonel Kovalski dies.
-Rebalanced mutants spawns time.
-Minor changes to sim avail.
-Added few special squad to factions.
-Disabled few smart terrain.
-
-SWAMPS UPDATE:
-
-A renegade trader was added to their camp.
-Renegade spawns on this map will be reduced by 70% if the trader dies.
-If Snow dies, Csky spawns on this map will be reduced by 75%.
-Added few special squad to factions for free up new stalker spawns.
-Added so the radio not play music during a surge.
-Rebalanced mutants spawns time.
-Minor changes to sim avail.
-Disabled few smart terrain
-
-AGROPROM UPDATE:
-
-Added dealy on the Prapoaganda ambient.
-Special squads were added to free up new army stalker spawns.
-If Colonel Kovalski dies, spawn on this map will be reduced by 80% and will have an effect on other maps.
-Rebalanced mutants spawn time.
-Minor changes to sim avail.
-Disabled a few smart terrains.
-
-AGROPROM UNDERGROUND UPDATE:
-
-Non so far. Planning to enable smart terrain for spawning stalkers down there; only some testing remains before the release.
-Agroprom Underground V2 Endless Spawn is included in this update. To change, just install Agroprom Underground V2 Original in the Optional folder.
-
-DARKVALLEY UPDATE:
-
-Added so the radio not play music during a surge.
-Rebalanced mutants spawns time.
-Disabled few smart terrain.
-
-DARKSCAPE UPDATE:
-
-Rebalanced mutants spawns time.
-Disabled few smart terrain.
-
-ROSTOK UPDATE:
-
-Added Petrenko to the list of targets who must be killed before the Duty faction is destroyed.
-Decreased max pop. at the bar 100.
-TRUCK CEMETERY UPDATE:
-
-Rebalanced mutants spawns time.
-Disabled few smart terrain.
-
-YANTAR UPDATE:
-
-ISG and Ecolog will now spawn correctly in Lab X16 and not above the lab.
-Added back respawn for controller to the Lab X16.
-Rebalanced mutants spawns time.
-Disabled few smart terrain.
-
-WILD TERRITORY UPDATE:
-
-Rebalanced mutants spawns time.
-Disabled few smart terrain.
-
-ARMY WEARHOUSES UPDATE:
-
-Rebalanced mutants spawns time.
-Minor changes to sim avail.
-
-DEAD CITYUPDATE:
-
-Rebalanced mutants spawns time.
-Minor changes to sim avail.
diff --git a/mods/Redone Collection_backup/UPDATE 2.0 - 2.1.6 Patch note.txt b/mods/Redone Collection_backup/UPDATE 2.0 - 2.1.6 Patch note.txt
deleted file mode 100644
index c81ea53c..00000000
--- a/mods/Redone Collection_backup/UPDATE 2.0 - 2.1.6 Patch note.txt
+++ /dev/null
@@ -1,115 +0,0 @@
-Update 2.1.6 (02/02/2024) BALANCE AND IMPROVEMENTS UPDATE
-
-YANTAR & WILD TERRITORY UPDATE:
-
-Added script to remove objects at Lab X-16.
-Added\Changed spawns at Lab X-16.
-Added alternative spawns at Lab X-16 when playing with Monolith or Sin when reactivating Miracle Machine and in Yantar.
-Added Endless spawns light feature at Lab X-16.
-ARMY WEARHOUSE:
-
-Balance of spawns; adjustments to Freedom spawns.
-Changes to sim avail.
-DEAD CITY:
-
-Balance of spawns; adjustments to Mercenaries spawns.
-Removed respawning if the bandit is killed at administration building.
-ROSTOK & TRUCK CEMETERY UPDATE:
-
-Balance of spawns; adjustments to Duty spawns.
-AGROPROM UPDATE:
-
-Balance of spawns; minor adjustments to Army & mutant spawning
-Added so the megaphone will be disabled when Colonel Kovalski dies.
-DARKVALLEY & DARKSCAPE UPDATE:
-
-Balance of spawns; minor adjustments to Bandit & mutant spawning
-GARBAGE:
-
-Balance of spawns: Adjustments to mutant spawning.
-Added logic to Duty checkpoint.
-SWAMPS:
-
-Balance of spawns: more stalker spawns and adjustments to mutant spawning.
-Added profiles to the Renegade trader & mechanic. "DXML"
-Fixed mission bug for the Renegades missions.
-Changes to sim avail.
-CORDON:
-
-Removed Bandit respawn at the car repair shop.
-Fixed incorrect logic at the farm.
-MEADOW:
-
-Balance of spawns: Adjustments to NPC spawns.
-
-
-Update 2.1.5 (12/26/2023) BALANCE AND IMPROVEMENTS UPDATE
-
-Stalkers and mutants spawn time changes and balance on all southern map and more files to DTLX format.
-Update 2.1.4 (12/23/2023) BALANCE AND IMPROVEMENTS UPDATE
-
-ROSTOK UPDATE:
-
-Minor changes to Rostok Duty base smart terrain.
-Minor changes to megaphone.
-TRUCK CEMETERY:
-
-Added one faction-controlled smart terrain.
-AGROPROM UPDATE:
-
-Minor changes to megaphone.
-Update 2.1.3 (12/23/2023) BALANCE AND IMPROVEMENTS UPDATE
-
-YANTAR UPDATE:
-
-Reactivation for Lab-X 16 is now possible and added gameplay for Monolith or Sin to activate the Miracle Machine. Monolith or Sin can reactivate the Miracle Machine with the added gameplay in storymode Off\On. ( If you changed faction in storymode On to Monolith or Sin. )
-Psy-field in Yantar work in conjunction with activation/deactivation settings in X-16
-Fixed surge avail for NPC at the industrial complex; they will still not seek shelter but will now survive a surge. There are no gulag surge scripts at the smart terrains
-Update 2.1.2 (12/23/2023) BALANCE AND IMPROVEMENTS UPDATE
-
-DARKVALLEY UPDATE:
-
-Added back the pyrogeist in Lab-X18 and the militery squad. After the pyrogeist is dead, the spawning will begin, and sim avail is turned on for other stalkers to visit Lab X-18. ISG, Greh, Monolith have no sim avail.
-Removed the faction control above Lab X-18 because of mods conflicts.
-DARKSCAPE UPDATE:
-
-Changed one army special spawn to not spawn again after being killed.
-Update 2.1.1 (12/21/2023) BALANCE AND IMPROVEMENTS UPDATE
-
-AGROPROM UNDERGROUND UPDATE:
-
-When the player has strelok notes in storymode, the smart terrain will be enabled and spawn hard mutants, and sim avail turn on so stalkers will finally be able to visit Agroprom Underground. ISG, Greh, Monolith have no sim avail.
-After 2 days, the soldier squad at the stercase will respawn. If Colonel Kovalski dies, spawn cease.
-AGROPROM UPDATE:
-
-Added military road patrol\special squad.
-MEADOW UPDATE:
-
-Removed the Renegade mechanic to Swamps.
-The Renegade special squad have new assignment at the abandoned factory.
-ROSTOK UPDATE:
-
-The surge ambient at the megafone has been corrected and works properly.
-SWAMPS:
-
-Added Renegade mechanic to the Renegade camp
-Added Renegade camp patrol\special squad.
-The Renegade camp is now a real faction camp.
-Update 2.1 (12/19/2023) BUG FIX UPDATE
-
-Optional FOLDER fix: Correcting some spelling errors in the folder; My dyslexia shines out at times. xD
-
-MEADOW UPDATE:
-
-Fixed surge avail for NPC in Meadow; they will still not seek shelter but will now survive a surge. There are no gulag surge scripts at the smart terrains, only for the Loners in the map's south.
-ROSTOK UPDATE:
-
-Fixed an issue in the arena where the doors remained locked in Rostok.
-AGROPROM UPDATE:
-
-Added more simulation spawns to army, loners, csky, ecolog at Agroprom.
-Fixed the megafone; the alarm feature does work again.
-AGROPROM UNDERGROUND UPDATE:
-
-Balance some mutants spawn.
-Fixed a bug in Endless spawn feature.
diff --git a/mods/Redone Collection_backup/gamedata/configs/creatures/game_relations.ltx b/mods/Redone Collection_backup/gamedata/configs/creatures/game_relations.ltx
deleted file mode 100644
index a19134c3..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/creatures/game_relations.ltx
+++ /dev/null
@@ -1,313 +0,0 @@
-
-
-[game_relations]
-; Requirements for each rank increase by an additional multiple of 500 points with each rank.
-; Rookie -> Trainee: 500 (+500), Trainee -> Experienced: 1500 (+1000), Experienced -> Professional: 3000 (+1500) etc.
-; Rank values are set 1 point lower than their target as engine uses upper_bound to determine which text to display in inventory.
-
-rating = novice, 1999, trainee, 3999, experienced, 9999, professional, 17999, veteran, 25999, expert, 34999, master, 49999, legend
-monster_rating = weak, 40, normal, 80, strong
-reputation = terrible, -1999, really_bad, -1499, very_bad, -999, bad, -499, neutral, 499, good, 999, very_good, 1499, really_good, 1999, excellent
-
-rating_names = st_rank_novice, 1999, st_rank_trainee, 3999, st_rank_experienced, 9999, st_rank_professional, 17999, st_rank_veteran, 25999, st_rank_expert, 34999, st_rank_master, 49999, st_rank_legend
-reputation_names = st_reputation_terrible, -1999, st_reputation_really_bad, -1499, st_reputation_very_bad, -999, st_reputation_bad, -499, st_reputation_neutral, 499, st_reputation_good, 999, st_reputation_very_good, 1499, st_reputation_really_good, 1999, st_reputation_excellent
-goodwill_names = st_goodwill_enemy, 0, st_goodwill_indifferent, 1000, st_goodwill_friendly
-
-;ii?iaiaua cia?aiey aey ioiioaiey ia?niia?ae
-attitude_neutal_threshold = -999 ;eiaaa attitude iaiuoa cia?aiey, oi aunoaaeyaony ALife::eRelationEnemy
-attitude_friend_threshold = 999 ;eiaaa attitude iaiuoa cia?aiey, oi aunoaaeyaony ALife::eRelationNeutral, eia?a ALife::eRelationFriend
-
-;Used on set_relation between npcs,
-goodwill_enemy = -1000
-goodwill_neutal = 0
-goodwill_friend = 1000
-
-;iacaaiey a?oiie?iaie (ii?yaie aie?ai niaiaaaou n communities_relations)
-communities = actor, 0, monster, 1, trader, 2, army_npc, 3, greh_npc, 4, bandit, 5, dolg, 6, ecolog, 7, freedom, 8, killer, 9, army, 10, monolith, 11, greh, 12, stalker, 13, zombied, 14, csky, 15, isg, 16, renegade, 17, actor_stalker, 18, actor_bandit, 19, actor_dolg, 20, actor_freedom, 21, actor_csky, 22, actor_ecolog, 23, actor_killer, 24, actor_army, 25, actor_monolith, 26, actor_zombied, 27, actor_greh, 28, actor_isg, 29, actor_renegade, 30, arena_enemy, 31
-
-; отношение персонажа к актеру (или другому NPC) вычисляется по формуле
-; attitude = personal_goodwill + //личное отношение персонажа к актеру (если раньше не встречались, то 0)
-; community_goodwill + //отношение группировки персонажа лично к актеру (если раньше контактов не было, то 0)
-; community_to_community + //отношение группировки персонажа к группировке актера из [communities_relations]
-; reputation_goodwill + //отношение репутации персонажа к репутации актера из [reputation_relations]
-; rank_goodwill //отношение ранга персонажа к рангу актера из [rank_relations]
-; столбцы и строки дописывать в алфавитном порядке!
-
-
-;//////////////////////////////////////////////////////////////////////////////////////////////////
-;
-; COMMUNITY RELATIONS
-;
-; Modified by DoctorX
-; for DoctorX Dynamic Faction Relations 1.3
-; November 2, 2016
-;
-;--------------------------------------------------------------------------------------------------
-
-;------------------------------------------------
-; Community Relations (>999 = Ally, 0 = Neutral, <-999 = Enemy):
-
-[communities_relations]
-; | actor|monster|trader| army_npc | greh_npc |bandit| dolg|ecolog|freedom|killer| army|monolith| greh |stalker| zombied| csky | isg |renegade| actor_stalker | actor_bandit | actor_dolg | actor_freedom | actor_csky | actor_ecolog | actor_killer | actor_army | actor_monolith | actor_zombied | actor_greh | actor_isg | actor_renegade| arena_enemy|
-;==============================================================================================================================================================================================================================================================================================================================================================================
-actor = 0, -2000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2000
-monster = -2000, 0, 0, -2000, -2000, -2000, -2000, -2000, -2000, -2000, -2000, -2000, -2000, -2000, -2000, -2000, -2000, -2000, -2000, -2000, -2000, -2000, -2000, -2000, -2000, -2000, -2000, 0, -2000, -2000, -2000, 0
-trader = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2000, 0, 0, 0, 0
-army_npc = 0, -2000, 0, 300, -2000, -2000, 0, 0, 0, 0, 300, -2000, -2000, 0, -2000, 0, -2000, -2000, 0, -2000, 0, 0, 0, 0, 0, 300, -2000, -2000, -2000, -2000, -2000, 0
-greh_npc = 0, -2000, 0, -2000, 300, 0, 0, 0, 0, 0, 0, 300, 300, 0, 300, 0, -2000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 300, 300, 300, -2000, 0, 0
-
-; | actor|monster|trader| army_npc | greh_npc |bandit| dolg|ecolog|freedom|killer| army|monolith| greh |stalker| zombied| csky | isg |renegade| actor_stalker | actor_bandit | actor_dolg | actor_freedom | actor_csky | actor_ecolog | actor_killer | actor_army | actor_monolith | actor_zombied | actor_greh | actor_isg | actor_renegade| arena_enemy|
-;==============================================================================================================================================================================================================================================================================================================================================================================
-bandit = 0, -2000, 0, -2000, 0, 300, -2000, -2000, 0, 0, -2000, -2000, -2000, -2000, -2000, -2000, -2000, 300, -2000, 300, -2000, 0, -2000, -2000, 0, -2000, -2000, -2000, -2000, -2000, 300, 0
-dolg = 0, -2000, 0, 0, 0, -2000, 300, 0, -2000, -2000, 0, -2000, -2000, 0, -2000, 0, -2000, -2000, 0, -2000, 300, -2000, 0, 0, -2000, 0, -2000, -2000, -2000, -2000, -2000, 0
-ecolog = 0, -2000, 0, 0, 0, -2000, 0, 300, 0, 0, 0, -2000, -2000, 0, -2000, 0, -2000, -2000, 0, -2000, 0, 0, 0, 300, 0, 0, -2000, -2000, -2000, -2000, -2000, 0
-freedom = 0, -2000, 0, 0, 0, 0, -2000, 0, 300, 0, -2000, -2000, -2000, 0, -2000, 0, -2000, -2000, 0, 0, -2000, 300, 0, 0, 0, -2000, -2000, -2000, -2000, -2000, -2000, 0
-killer = 0, -2000, 0, 0, 0, 0, -2000, 0, 0, 300, -2000, -2000, -2000, -2000, -2000, 0, 0, -2000, -2000, 0, -2000, 0, 0, 0, 300, -2000, -2000, -2000, -2000, 0, -2000, 0
-army = 0, -2000, 0, 2000, -2000, -2000, 0, 0, -2000, -2000, 300, -2000, -2000, -2000, -2000, -2000, -2000, -2000, -2000, -2000, 0, -2000, -2000, 0, -2000, 300, -2000, -2000, -2000, -2000, -2000, 0
-monolith = 0, -2000, 0, -2000, 300, -2000, -2000, -2000, -2000, -2000, -2000, 2000, 300, -2000, 300, -2000, -2000, -2000, -2000, -2000, -2000, -2000, -2000, -2000, -2000, -2000, 2000, 300, 300, -2000, -2000, 0
-greh = 0, -2000, 0, -2000, 300, -2000, -2000, -2000, -2000, -2000, -2000, 300, 300, -2000, 300, -2000, -2000, -2000, -2000, -2000, -2000, -2000, -2000, -2000, -2000, -2000, 300, 300, 300, -2000, -2000, 0
-stalker = 0, -2000, 0, 0, 0, -2000, 0, 0, 0, -2000, -2000, -2000, -2000, 300, -2000, 0, -2000, -2000, 0, -2000, 0, 0, 0, 0, -2000, -2000, -2000, -2000, -2000, -2000, -2000, 0
-zombied = 0, -2000, 1, -2000, 300, -2000, -2000, -2000, -2000, -2000, -2000, 300, 300, -2000, 300, -2000, -2000, -2000, -2000, -2000, -2000, -2000, -2000, -2000, -2000, -2000, 0, 300, 300, -2000, -2000, 0
-csky = 0, -2000, 0, 0, 0, -2000, 0, 0, 0, 0, -2000, -2000, -2000, 0, -2000, 300, -2000, -2000, 0, -2000, 0, 0, 300, 0, 0, -2000, -2000, -2000, -2000, -2000, -2000, 0
-isg = 0, -2000, 0, -2000, -2000, -2000, -2000, -2000, -2000, 0, -2000, -2000, -2000, -2000, -2000, -2000, 300, -2000, -2000, -2000, -2000, -2000, -2000, -2000, 0, -2000, -2000, -2000, -2000, 300, -2000, 0
-renegade = 0, -2000, 0, -2000, 0, 300, -2000, -2000, -2000, -2000, -2000, -2000, -2000, -2000, -2000, -2000, -2000, 300, -2000, 300, -2000, -2000, -2000, -2000, -2000, -2000, -2000, -2000, -2000, -2000, 300, 0
-
-; | actor|monster|trader| army_npc | greh_npc |bandit| dolg|ecolog|freedom|killer| army|monolith| greh |stalker| zombied| csky | isg |renegade| actor_stalker | actor_bandit | actor_dolg | actor_freedom | actor_csky | actor_ecolog | actor_killer | actor_army | actor_monolith | actor_zombied | actor_greh | actor_isg | actor_renegade| arena_enemy|
-;==============================================================================================================================================================================================================================================================================================================================================================================
-actor_stalker = 0, -2000, 0, 0, 0, -2000, 0, 0, 0, -2000, -2000, -2000, -2000, 0, -2000, 0, -2000, -2000, 0, 0, 0, 0, 0, 0, -2000, 0, 0, -2000, -2000, -2000, -2000, 0
-actor_bandit = 0, -2000, 0, -2000, 0, 300, -2000, -2000, 0, 0, -2000, -2000, -2000, -2000, -2000, -2000, -2000, 300, 0, 300, 0, 0, 0, 0, 0, 0, 0, -2000, -2000, -2000, 300, 0
-actor_dolg = 0, -2000, 0, 0, 0, -2000, 300, 0, -2000, -2000, 0, -2000, -2000, 0, -2000, 0, -2000, -2000, 0, 0, 300, 0, 0, 0, 0, 0, 0, -2000, -2000, -2000, -2000, 0
-actor_freedom = 0, -2000, 0, 0, 0, 0, -2000, 0, 300, 0, -2000, -2000, -2000, 0, -2000, 0, -2000, -2000, 0, 0, 0, 300, 0, 0, 0, 0, 0, -2000, -2000, -2000, -2000, 0
-actor_csky = 0, -2000, 0, 0, 0, -2000, 0, 0, 0, 0, -2000, -2000, -2000, 0, -2000, 300, -2000, -2000, 0, 0, 0, 0, 300, 0, 0, 0, 0, -2000, -2000, -2000, -2000, 0
-actor_ecolog = 0, -2000, 0, 0, 0, -2000, 0, 300, 0, 0, 0, -2000, -2000, 0, -2000, 0, -2000, -2000, 0, 0, 0, 0, 0, 300, 0, 0, 0, -2000, -2000, -2000, -2000, 0
-actor_killer = 0, -2000, 0, 0, 0, 0, -2000, 0, 0, 300, -2000, -2000, -2000, -2000, -2000, 0, 0, -2000, -2000, 0, 0, 0, 0, 0, 300, 0, 0, -2000, -2000, 0, -2000, 0
-actor_army = 0, -2000, 0, 2000, -2000, -2000, 0, 0, -2000, -2000, 300, -2000, -2000, -2000, -2000, -2000, -2000, -2000, 0, 0, 0, 0, 0, 0, 0, 300, 0, -2000, -2000, -2000, -2000, 0
-actor_monolith = 0, -2000, 0, -2000, 300, -2000, -2000, -2000, -2000, -2000, -2000, 2000, 300, -2000, 0, -2000, -2000, -2000, 0, 0, 0, 0, 0, 0, 0, 0, 2000, 0, 300, -2000, -2000, 0
-actor_zombied = 0, -2000, 0, -2000, 300, -2000, -2000, -2000, -2000, -2000, -2000, 300, 300, -2000, 300, -2000, -2000, -2000, -2000, -2000, -2000, -2000, -2000, -2000, -2000, -2000, 0, 300, 300, -2000, -2000, 0
-actor_greh = 0, -2000, 0, -2000, 300, -2000, -2000, -2000, -2000, -2000, -2000, 300, 300, -2000, 300, -2000, -2000, -2000, -2000, -2000, -2000, -2000, -2000, -2000, -2000, -2000, 300, 300, 300, -2000, -2000, 0
-actor_isg = 0, -2000, 0, -2000, -2000, -2000, -2000, -2000, -2000, 0, -2000, -2000, -2000, -2000, -2000, -2000, 300, -2000, -2000, -2000, -2000, -2000, -2000, -2000, 0, -2000, -2000, -2000, -2000, 300, -2000, 0
-actor_renegade = 0, -2000, 0, -2000, 0, 300, -2000, -2000, -2000, -2000, -2000, -2000, -2000, -2000, -2000, -2000, -2000, 300, -2000, 300, -2000, -2000, -2000, -2000, -2000, -2000, -2000, -2000, -2000, -2000, 300, 0
-arena_enemy = -2000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2000, 0, 0, 0, 0, 0, -2000, -2000, -2000, -2000, -2000, -2000, -2000, -2000, -2000, -2000, -2000, 0, 0, 0
-
-
-[rank_relations]
-; novice, trainee, experienced, professional, veteran, expert, master, legend
-;=========================================================================================
-novice = 0, 100, 200, 400, 600, 700, 800, 800
-trainee = 0, 0, 100, 300, 500, 700, 800, 800
-experienced = 0, 0, 100, 200, 400, 600, 700, 700
-professional = 0, 0, 0, 100, 300, 500, 600, 700
-veteran = 0, 0, 0, 0, 100, 300, 500, 600
-expert = 0, 0, 0, 0, 0, 200, 400, 600
-master = 0, 0, 0, 0, 0, 100, 300, 500
-legend = 0, 0, 0, 0, 0, 0, 200, 500
-
-[reputation_relations]
-; terrible, really_bad, very_bad, bad, neutral, good, very_good, really_good, excellent
-;==================================================================================================
-terrible = 300, 200, 100, 0, 0, 0, 0, 0, 0
-really_bad = 200, 300, 200, 100, 0, 0, 0, 0, 0
-very_bad = 200, 200, 300, 200, 0, 0, 0, 0, 0
-bad = 100, 100, 100, 300, 100, 0, 0, 0, 0
-neutral = 0, 0, 0, 100, 300, 100, 100, 0, 100
-good = 0, 0, 0, 0, 100, 300, 200, 100, 200
-very_good = 0, 0, 0, 0, 0, 200, 300, 300, 300
-really_good = 0, 0, 0, 0, 0, 100, 200, 400, 400
-excellent = 0, 0, 0, 0, 0, 0, 100, 300, 500
-
-;
-; очки рейтинга и репутации начисляемые за определенные действия
-;
-
-;очки рейтинга, получаемые за убийство персонажа
-;с определенным статусом
-[rank_kill_points]
-novice = 4
-trainee = 6
-experienced = 8
-professional = 10
-veteran = 15
-expert = 20
-master = 25
-legend = 100
-
-;коэффициенты "сочувствия" группировок
-;после воздействия на одного из членов группировки
-;goodwill его распространится на остальных членов группировки
-;с определенным коэффициентом
-;(порядок должен совпадать с communities_relations)
-[communities_sympathy]
-actor = 0.0
-bandit = 0.0
-dolg = 0.0
-ecolog = 0.0
-freedom = 0.0
-killer = 0.0
-army = 0.0
-army_npc = 0.0
-monolith = 0.0
-greh = 0.0
-greh_npc = 0.0
-renegade = 0.0
-monster = 0.0
-stalker = 0.0
-zombied = 0.0
-csky = 0.0
-isg = 0.0
-trader = 0.0
-actor_bandit = 0.0
-actor_dolg = 0.0
-actor_ecolog = 0.0
-actor_freedom = 0.0
-actor_killer = 0.0
-actor_army = 0.0
-actor_monolith = 0.0
-actor_stalker = 0.0
-actor_csky = 0.0
-actor_zombied = 0.0
-actor_renegade = 0.0
-actor_greh = 0.0
-actor_isg = 0.0
-arena_enemy = 0.0
-
-
-
-
-;очки рейтинга, репутации и доброжелательности начисляемые
-;в зависимости от совершенного действия
-[action_points]
-personal_goodwill_limits = -3000, 3000
-community_goodwill_limits = -5000, 5000
-
-
-;-------------------------------------------------------
-
-;-----
-; Killing other stalkers.
-;-----
-
-community_member_kill_goodwill = -2000 ; Same faction
-friend_kill_goodwill = -2000 ; Friendly
-neutral_kill_goodwill = -2000 ; Neutral
-enemy_kill_goodwill = -100 ; Enemy
-
-; These values are now set in xr_statistic.script.
-friend_kill_reputation = 0 ; Friendly
-neutral_kill_reputation = 0 ; Neutral
-enemy_kill_reputation = 0 ; Enemy
-
-;-----
-; Assisting stalkers in combat.
-;-----
-
-community_member_fight_help_goodwill = 500 ; Same faction
-friend_fight_help_goodwill = 200 ; Friendly
-neutral_fight_help_goodwill = 200 ; Neutral
-enemy_fight_help_goodwill = 1 ; Enemy
-
-friend_fight_help_reputation = 100 ; Friendly
-neutral_fight_help_reputation = 50 ; Neutral
-enemy_fight_help_reputation = 0 ; Enemy
-
-;-----
-; Attacking stalkers who ARE NOT shooting at you.
-;-----
-
-free_community_member_attack_goodwill = -500 ; Same faction
-free_friend_attack_goodwill = -2000 ; Friendly
-free_neutral_attack_goodwill = -2000 ; Neutral
-free_enemy_attack_goodwill = -100 ; Enemy
-
-free_friend_attack_reputation = -500 ; Friendly
-free_neutral_attack_reputation = -350 ; Neutral
-free_enemy_attack_reputation = 5 ; Enemy
-
-;-----
-; Attacking stalkers who ARE shooting at you.
-; You're already fighting them so the penalties are reduced.
-; Example: You assassinate a loner and his buddies start shooting at you.
-;-----
-
-danger_community_member_attack_goodwill = -1 ; Same faction
-danger_friend_attack_goodwill = -1 ; Friendly
-danger_neutral_attack_goodwill = -1 ; Neutral
-danger_enemy_attack_goodwill = -1 ; Enemy
-
-danger_friend_attack_reputation = 0 ; Friendly
-danger_neutral_attack_reputation = 0 ; Neutral
-danger_enemy_attack_reputation = 0 ; Enemy
-
-;--------------------------------------------------
-;(сек) минимальное время через которое снова будет зарегистрировано
-;сообщение об атаке на персонажа, и соответственно вычтеся attack_goodwill и attack_reputation
-;(работает аналогично и при помощи другим персонажам в бою)
-min_attack_delta_time = 1
-fight_remember_time = 0.2 ;(cae) a?aiy eioi?ia i?i a?aeo aoaao iiiieou ?aano?
-
-;свойства, которые изменяются у сталкеров в
-;зависимости от их ранга
-;коэффициенты линейно интерполируются для рангов от 0 (novice) до 100 (experienced)
-
-; Section is not used by the game.
-; However it is directly referenced in-engine.
-; Removing this or its contents will crash the game.
-[ranks_properties]
-immunities_novice_k = 1.0
-immunities_experienced_k = 1.0
-visibility_novice_k = 1.0
-visibility_experienced_k = 1.0
-dispersion_novice_k = 1.0
-dispersion_experienced_k = 0.8
-
-
-; диапазон изменения рангов при регистрации в новом смарт террейне
-[smart_terrain_rank_change]
-min = 1
-max = 2
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;; for monsters
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-[monster_communities]
-;--//Bamah added trader to keep traders and mechanics from getting attacked
-;Room team are assigned to appropriate types
-;255 - command is not given
-communities = actor, 255, human, 255, zoo_monster, 39, boar, 40, bloodsucker, 41, flesh, 42, dog, 43, pseudodog, 44, cat, 45, chimera, 46, giant, 47, zombie, 48, burer, 49, controller, 50, poltergeist, 51, snork, 52, fracture, 53, bird, 54, rat, 55, tushkano, 56, corpse, 57, trader, 58, arena_monstr, 59, komar, 60, tark, 61, medwed, 62, rotan, 63, fly, 64, mwolf, 65, psysucker, 66, lurker, 67, karlik, 68
-
-[monster_relations]
-; [1] friend, [0] neutral, [-1] enemy, [-2] hated enemy
-; actor, human, zoo_monstr, boar, bloodsucker, flesh, dog, pseudodog, cat, chimera, giant, zombie, burer, controller, poltergeist, snork, fracture, bird, rat, tushkano, corpse, trader, arena_monstr, komar, tark, medwed, rotan, fly, mwolf, psysucker, lurker, karlik
-;===================================================================================================================================================================================================================================================================================
-actor = 1, 1, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, 1, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2
-human = 0, 1, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, 1, 0, -1, -1, -2, -1, -1, -1, -1, -1, -1
-zoo_monster = 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-boar = -1, -1, 0, 1, -1, 1, -1, -1, 0, -1, -1, 0, -1, 0, 0, -1, -1, 0, 0, -1, 0, 1, 0, 0, 0, -1, -1, 0, -1, -1, -1, 0
-bloodsucker = -1, -1, 0, -1, 1, -1, -1, -1, 0, 0, -1, 0, -1, -1, 0, -1, -1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1
-flesh = -1, -1, 0, 1, -1, 1, -1, -1, 0, -1, 0, 0, 0, 0, 0, -1, -1, 0, 0, -1, 0, 1, 0, 0, 0, -1, -1, 0, -1, -1, -1, 0
-dog = -1, -1, 0, -1, -1, -1, 1, 1, -1, 0, -1, 0, -1, 0, 0, -1, -1, 0, 0, 0, 0, 1, 0, -1, -1, 0, 0, 0, 0, -1, 0, 0
-pseudodog = -1, -1, 0, -1, -1, -1, 1, 1, -1, 0, -1, 0, -1, 0, 0, -1, -1, 0, 0, 0, 0, 1, 0, 0, -1, 0, 0, 0, 0, -1, 0, 0
-cat = -1, -1, 0, 0, 0, 0, -1, -1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, -1, -1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-chimera = -1, -1, 0, -1, 0, -1, 0, 0, 0, 1, -1, 0, -1, -1, 0, -1, -1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, -1
-giant = -1, -1, 0, -1, -1, 0, -1, -1, 0, -1, 1, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 1, 0, 0, 0, -1, 0, 0, 0, -1, -1, 0
-zombie = -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -1, -1, 0, 0, 0, -1, 0, 0, -1, -1, -1, 0, 0, 0
-burer = -1, -1, 0, -1, -1, 0, -1, -1, 1, -1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0
-controller = -1, -1, 0, 0, -1, 0, 0, 0, 0, -1, 0, 0, 0, 1, 0, -1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, -1, -1, 1
-poltergeist = -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-snork = -1, -1, 0, -1, -1, -1, -1, -1, 0, -1, 0, 0, 0, -1, 0, 1, -1, 0, 0, 0, 0, 1, 0, -1, 0, -1, 0, 0, 0, -1, -1, -1
-fracture = -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0
-bird = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-rat = -1, -1, 0, 0, 0, 0, 0, 0, -1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-tushkano = -1, -1, 0, -1, 0, -1, 0, 0, -1, 0, -1, -1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-corpse = -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0
-trader = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 1, 1, 1
-arena_monstr= -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-komar = -2, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0
-tark = -2, -1, 0, 0, 0, 0, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, -1, -1, 0, 0, 0, 0, 0
-medwed = -2, -2, 0, -1, 0, -1, 0, 0, 0, 1, -1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 1, 0, 0, -1, 1, 0, 0, 0, 0, 1, 0
-rotan = -2, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, -1, 0, 1, 0, 0, 0, 0, 0
-fly = -2, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0
-mwolf = -2, -1, 0, -1, 0, -1, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0
-psysucker = -2, -1, 0, -1, 1, -1, -1, -1, 0, 0, -1, 0, -1, -1, 0, -1, -1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, -1
-lurker = -2, -1, 0, -1, 0, -1, 0, 0, 0, 1, -1, 0, -1, -1, 0, -1, -1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, -1
-karlik = -2, -1, 0, 0, -1, 0, 0, 0, 0, -1, 0, 0, 0, 1, 0, -1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, -1, -1, 1
diff --git a/mods/Redone Collection_backup/gamedata/configs/creatures/spawn_sections_labx16_spawn_point.ltx b/mods/Redone Collection_backup/gamedata/configs/creatures/spawn_sections_labx16_spawn_point.ltx
deleted file mode 100644
index 1bc71f68..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/creatures/spawn_sections_labx16_spawn_point.ltx
+++ /dev/null
@@ -1,355 +0,0 @@
-![labx16_zombie_1]:stalker_zombied
-$spawn = "respawn\labx16_zombie_1"
-character_profile = sim_default_zombied_2
-spec_rank = advanced
-community = zombied
-custom_data = scripts\labx16\labx16_zombie_1.ltx
-story_id = labx16_zombie_1
-
-![labx16_zombie_2]:stalker_zombied
-$spawn = "respawn\labx16_zombie_2"
-character_profile = sim_default_zombied_2
-spec_rank = advanced
-community = zombied
-custom_data = scripts\labx16\labx16_zombie_2.ltx
-story_id = labx16_zombie_2
-
-![labx16_zombie_3]:zombie_normal
-$spawn = "respawn\labx16_zombie_3"
-character_profile = zombie_normal
-;spec_rank = normal
-community = monster
-custom_data = scripts\labx16\labx16_zombie_3.ltx
-story_id = labx16_zombie_3
-
-![labx16_zombie_4]:zombie_strong
-$spawn = "respawn\labx16_zombie_4"
-character_profile = zombie_strong
-;spec_rank = normal
-community = monster
-custom_data = scripts\labx16\labx16_zombie_4.ltx
-story_id = labx16_zombie_4
-
-![labx16_zombie_6]:stalker_zombied
-$spawn = "respawn\labx16_zombie_6"
-character_profile = sim_default_zombied_2
-spec_rank = advanced
-community = zombied
-custom_data = scripts\labx16\labx16_zombie_6.ltx
-story_id = labx16_zombie_6
-
-![labx16_zombie_10]:stalker_zombied
-$spawn = "respawn\labx16_zombie_10"
-character_profile = sim_default_zombied_2
-spec_rank = advanced
-community = zombied
-custom_data = scripts\labx16\labx16_zombie_10.ltx
-story_id = labx16_zombie_10
-
-![labx16_zombie_11]:stalker_zombied
-$spawn = "respawn\labx16_zombie_11"
-character_profile = sim_default_zombied_2
-spec_rank = advanced
-community = zombied
-custom_data = scripts\labx16\labx16_zombie_11.ltx
-story_id = labx16_zombie_11
-
-![labx16_zombie_12]:zombie_weak
-$spawn = "respawn\labx16_zombie_12"
-character_profile = zombie_weak
-;spec_rank = normal
-community = monster
-custom_data = scripts\labx16\labx16_zombie_12.ltx
-story_id = labx16_zombie_12
-
-![labx16_zombie_13]:zombie_weak
-$spawn = "respawn\labx16_zombie_13"
-character_profile = zombie_weak
-;spec_rank = normal
-community = monster
-custom_data = scripts\labx16\labx16_zombie_13.ltx
-story_id = labx16_zombie_13
-
-![labx16_zombie_16]:burer_normal
-$spawn = "respawn\labx16_zombie_16"
-character_profile = burer_normal
-;spec_rank = normal
-community = monster
-custom_data = scripts\labx16\labx16_zombie_16.ltx
-story_id = labx16_zombie_16
-
-![labx16_zombie_17]:zombie_strong
-$spawn = "respawn\labx16_zombie_17"
-character_profile = zombie_strong
-;spec_rank = normal
-community = monster
-custom_data = scripts\labx16\labx16_zombie_17.ltx
-story_id = labx16_zombie_17
-
-![labx16_zombie_19]:rat_normal
-$spawn = "respawn\labx16_zombie_19"
-character_profile = rat_normal
-;spec_rank = normal
-community = monster
-custom_data = scripts\labx16\labx16_zombie_19.ltx
-story_id = labx16_zombie_19
-
-![labx16_snork_4]:bloodsucker_black_strong
-$spawn = "respawn\labx16_snork_4"
-community = monster
-
-![labx16_snork_5]:stalker_zombied
-$spawn = "respawn\labx16_snork_5"
-character_profile = sim_default_zombied_4
-spec_rank = veteran
-community = zombied
-custom_data = scripts\labx16\labx16_zombie_1.ltx
-story_id = labx16_zombied_5
-
-![labx16_snork_6]:stalker_zombied
-$spawn = "respawn\labx16_snork_6"
-character_profile = sim_default_zombied_4
-spec_rank = veteran
-community = zombied
-custom_data = scripts\labx16\labx16_zombie_2.ltx
-story_id = labx16_zombied_6
-
-[labx16_snork_7]:snork_strong
-$spawn = "respawn\labx16_snork_7"
-community = monster
-custom_data = scripts\labx16\labx16_controller.ltx
-
-[labx16_snork_8]:snork_strong
-$spawn = "respawn\labx16_snork_8"
-community = monster
-custom_data = scripts\labx16\labx16_controller.ltx
-
-[labx16_ecolog_1]:stalker
-$spawn = "respawn\labx16_ecolog_1"
-character_profile = sim_default_ecolog_2
-spec_rank = advanced
-community = ecolog
-custom_data = scripts\labx16\labx16_zombie_1.ltx
-story_id = labx16_ecolog_1
-
-[labx16_ecolog_2]:stalker
-$spawn = "respawn\labx16_ecolog_2"
-character_profile = sim_default_ecolog_1
-spec_rank = novice
-community = ecolog
-custom_data = scripts\labx16\labx16_zombie_2.ltx
-story_id = labx16_ecolog_2
-
-[labx16_ecolog_3]:stalker_strong
-$spawn = "respawn\labx16_ecolog_3"
-character_profile = sim_default_ecolog_3
-spec_rank = advanced
-community = ecolog
-custom_data = scripts\labx16\labx16_zombie_3.ltx
-story_id = labx16_ecolog_3
-
-[labx16_ecolog_4]:stalker
-$spawn = "respawn\labx16_ecolog_4"
-character_profile = sim_default_ecolog_1
-spec_rank = advanced
-community = ecolog
-custom_data = scripts\labx16\labx16_zombie_4.ltx
-story_id = labx16_ecolog_4
-
-[labx16_ecolog_5]:stalker
-$spawn = "respawn\labx16_ecolog_5"
-character_profile = sim_default_ecolog_1
-spec_rank = novice
-community = ecolog
-custom_data = scripts\labx16\labx16_zombie_5.ltx
-story_id = labx16_ecolog_5
-
-[labx16_ecolog_6]:stalker
-$spawn = "respawn\labx16_ecolog_6"
-character_profile = sim_default_ecolog_2
-spec_rank = advanced
-community = ecolog
-custom_data = scripts\labx16\labx16_zombie_6.ltx
-story_id = labx16_ecolog_6
-
-[labx16_ecolog_7]:stalker
-$spawn = "respawn\labx16_ecolog_7"
-character_profile = sim_default_ecolog_2
-spec_rank = advanced
-community = ecolog
-custom_data = scripts\labx16\labx16_zombie_7.ltx
-story_id = labx16_ecolog_7
-
-[labx16_ecolog_8]:stalker_strong
-$spawn = "respawn\labx16_ecolog_8"
-character_profile = sim_default_ecolog_3
-spec_rank = advanced
-community = ecolog
-custom_data = scripts\labx16\labx16_zombie_8.ltx
-story_id = labx16_ecolog_8
-
-[labx16_ecolog_9]:stalker
-$spawn = "respawn\labx16_ecolog_9"
-character_profile = sim_default_ecolog_1
-spec_rank = novice
-community = ecolog
-custom_data = scripts\labx16\labx16_zombie_9.ltx
-story_id = labx16_ecolog_9
-
-[labx16_ecolog_10]:stalker
-$spawn = "respawn\labx16_ecolog_10"
-character_profile = sim_default_ecolog_1
-spec_rank = novice
-community = ecolog
-custom_data = scripts\labx16\labx16_zombie_10.ltx
-story_id = labx16_ecolog_10
-
-[labx16_ecolog_11]:stalker
-$spawn = "respawn\labx16_ecolog_11"
-character_profile = sim_default_ecolog_1
-spec_rank = novice
-community = ecolog
-custom_data = scripts\labx16\labx16_zombie_11.ltx
-story_id = labx16_ecolog_11
-
-[labx16_ecolog_12]:stalker_strong
-$spawn = "respawn\labx16_ecolog_12"
-character_profile = sim_default_ecolog_3
-spec_rank = advanced
-community = ecolog
-custom_data = scripts\labx16\labx16_zombie_12.ltx
-story_id = labx16_ecolog_12
-
-[labx16_ecolog_13]:stalker_strong
-$spawn = "respawn\labx16_ecolog_13"
-character_profile = sim_default_ecolog_3
-spec_rank = advanced
-community = ecolog
-custom_data = scripts\labx16\labx16_zombie_13.ltx
-story_id = labx16_ecolog_13
-
-[labx16_ecolog_14]:stalker
-$spawn = "respawn\labx16_ecolog_14"
-character_profile = sim_default_ecolog_1
-spec_rank = novice
-community = ecolog
-custom_data = scripts\labx16\labx16_zombie_14.ltx
-story_id = labx16_ecolog_14
-
-[labx16_ecolog_15]:stalker
-$spawn = "respawn\labx16_ecolog_15"
-character_profile = sim_default_ecolog_2
-spec_rank = advanced
-community = ecolog
-custom_data = scripts\labx16\labx16_zombie_15.ltx
-story_id = labx16_ecolog_15
-
-[labx16_ecolog_16]:stalker_strong
-$spawn = "respawn\labx16_ecolog_16"
-character_profile = sim_default_ecolog_4
-spec_rank = veteran
-community = ecolog
-custom_data = scripts\labx16\labx16_zombie_16.ltx
-story_id = labx16_ecolog_16
-
-[labx16_ecolog_17]:stalker
-$spawn = "respawn\labx16_ecolog_17"
-character_profile = sim_default_ecolog_1
-spec_rank = novice
-community = ecolog
-custom_data = scripts\labx16\labx16_zombie_17.ltx
-story_id = labx16_ecolog_17
-
-[labx16_ecolog_18]:stalker
-$spawn = "respawn\labx16_ecolog_18"
-character_profile = sim_default_ecolog_2
-spec_rank = advanced
-community = ecolog
-custom_data = scripts\labx16\labx16_zombie_18.ltx
-story_id = labx16_ecolog_18
-
-[labx16_ecolog_19]:rat_normal
-$spawn = "respawn\labx16_zombie_19"
-character_profile = rat_normal
-;spec_rank = normal
-community = monster
-custom_data = scripts\labx16\labx16_zombie_19.ltx
-
-[labx16_ecolog_1a]:stalker
-$spawn = "respawn\labx16_ecolog_1a"
-character_profile = sim_default_ecolog_2
-spec_rank = advanced
-community = ecolog
-custom_data = scripts\labx16\labx16_zombie_4.ltx
-story_id = labx16_ecolog_1a
-
-[labx16_ecolog_2a]:stalker_strong
-$spawn = "respawn\labx16_ecolog_2a"
-character_profile = sim_default_ecolog_3
-spec_rank = advanced
-community = ecolog
-custom_data = scripts\labx16\labx16_zombie_3.ltx
-story_id = labx16_ecolog_2a
-
-[labx16_ecolog_3a]:stalker_strong
-$spawn = "respawn\labx16_ecolog_3a"
-character_profile = sim_default_ecolog_3
-spec_rank = advanced
-community = ecolog
-custom_data = scripts\labx16\labx16_zombie_4.ltx
-story_id = labx16_ecolog_3a
-
-[labx16_ecolog_4a]:stalker
-$spawn = "respawn\labx16_ecolog_4a"
-character_profile = sim_default_ecolog_2
-spec_rank = advanced
-community = ecolog
-custom_data = scripts\labx16\labx16_zombie_3.ltx
-story_id = labx16_ecolog_4a
-
-[labx16_ecolog_5a]:stalker
-$spawn = "respawn\labx16_ecolog_5a"
-character_profile = sim_default_ecolog_2
-spec_rank = advanced
-community = ecolog
-custom_data = scripts\labx16\labx16_zombie_4.ltx
-story_id = labx16_ecolog_5a
-
-[labx16_ecolog_6a]:stalker
-$spawn = "respawn\labx16_ecolog_6a"
-character_profile = sim_default_ecolog_2
-spec_rank = advanced
-community = ecolog
-custom_data = scripts\labx16\labx16_zombie_4.ltx
-story_id = labx16_ecolog_6a
-
-[labx16_ecolog_7a]:stalker_strong
-$spawn = "respawn\labx16_ecolog_7a"
-character_profile = sim_default_military_3_sniper
-spec_rank = veteran
-community = army
-custom_data = scripts\labx16\labx16_zombie_19.ltx
-story_id = labx16_ecolog_7a
-
-[labx16_ecolog_8a]:stalker_strong
-$spawn = "respawn\labx16_ecolog_8a"
-character_profile = sim_default_military_3_sniper
-spec_rank = veteran
-community = army
-custom_data = scripts\labx16\labx16_zombie_19.ltx
-story_id = labx16_ecolog_8a
-
-[labx16_ecolog_controller]:stalker_strong
-$spawn = "respawn\labx16_ecolog_controller"
-character_profile = sim_default_military_4
-spec_rank = veteran
-community = army
-custom_data = scripts\labx16\labx16_zombie_19.ltx
-story_id = labx16_ecolog_controller
-
-[labx16_killer_dead]:stalker_strong
-$spawn = "respawn\labx16_killer_dead"
-character_profile = sim_default_killer_dead
-spec_rank = veteran
-community = killer
-custom_data = scripts\labx16\labx16_ghost.ltx
diff --git a/mods/Redone Collection_backup/gamedata/configs/creatures/spawn_sections_labx18_spawn_point.ltx b/mods/Redone Collection_backup/gamedata/configs/creatures/spawn_sections_labx18_spawn_point.ltx
deleted file mode 100644
index da5d437a..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/creatures/spawn_sections_labx18_spawn_point.ltx
+++ /dev/null
@@ -1,15 +0,0 @@
-[dar_corpse_3]:sim_default_military_dead
-$spawn = "respawn\dar_corpse_1"
-;character_profile = dar_corpse_1
-spec_rank = veteran
-community = army
-;story_id = dar_corpse_1
-;custom_data = scripts\labx18\dar_corpse_1.ltx
-
-[dar_corpse_4]:sim_default_military_dead
-$spawn = "respawn\dar_corpse_2"
-;character_profile = dar_corpse_2
-spec_rank = veteran
-community = army
-;story_id = dar_corpse_2
-;custom_data = scripts\labx18\dar_corpse_2.ltx
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/creatures/spawn_sections_marsh_spawn_point.ltx b/mods/Redone Collection_backup/gamedata/configs/creatures/spawn_sections_marsh_spawn_point.ltx
deleted file mode 100644
index 67b2a9aa..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/creatures/spawn_sections_marsh_spawn_point.ltx
+++ /dev/null
@@ -1,13 +0,0 @@
-[mar_renegade_trader]:stalker
-$spawn = "respawn\mar_renegade_trader"
-character_profile = mar_renegade_trader
-spec_rank = regular
-community = renegade
-story_id = mar_renegade_trader
-
-[mar_renegade_mechanic]:stalker
-$spawn = "respawn\mar_renegade_mechanic"
-character_profile = mar_renegade_mechanic
-spec_rank = regular
-community = renegade
-story_id = mar_renegade_mechanic
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/creatures/spawn_sections_yantar_spawn_point.ltx b/mods/Redone Collection_backup/gamedata/configs/creatures/spawn_sections_yantar_spawn_point.ltx
deleted file mode 100644
index 06d9eead..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/creatures/spawn_sections_yantar_spawn_point.ltx
+++ /dev/null
@@ -1,118 +0,0 @@
-[yan_stalker_military_1]:stalker_strong
-$spawn = "respawn\yan_stalker_military_1"
-character_profile = sim_default_military_2
-spec_rank = regular
-community = army
-story_id = yan_stalker_killer_1
-custom_data = scripts\yantar\yan_tonnel_military_1_logic.ltx
-
-[yan_stalker_military_2]:stalker_strong
-$spawn = "respawn\yan_stalker_military_2"
-character_profile = sim_default_military_2
-spec_rank = regular
-community = army
-story_id = yan_stalker_military_2
-custom_data = scripts\yantar\yan_tonnel_military_1_logic.ltx
-
-[yan_stalker_military_3]:stalker_strong
-$spawn = "respawn\yan_stalker_military_3"
-character_profile = sim_default_military_1
-spec_rank = regular
-community = army
-story_id = yan_stalker_military_3
-custom_data = scripts\yantar\yan_tonnel_military_1_logic.ltx
-
-[yan_stalker_military_4]:stalker_strong
-$spawn = "respawn\yan_stalker_military_4"
-character_profile = sim_default_military_1
-spec_rank = regular
-community = army
-story_id = yan_stalker_military_4
-custom_data = scripts\yantar\yan_tonnel_military_2_logic.ltx
-
-[yan_stalker_military_5]:stalker_strong
-$spawn = "respawn\yan_stalker_military_5"
-character_profile = sim_default_military_3
-spec_rank = regular
-community = army
-story_id = yan_stalker_military_5
-custom_data = scripts\yantar\yan_tonnel_military_2_logic.ltx
-
-[yan_stalker_military_6]:stalker_strong
-$spawn = "respawn\yan_stalker_military_6"
-character_profile = sim_default_military_4
-spec_rank = veteran
-community = army
-story_id = yan_stalker_military_5
-custom_data = scripts\yantar\yan_tonnel_military_2_logic.ltx
-
-[yan_stalker_gigant_military]:stalker_strong
-$spawn = "respawn\yan_stalker_gigant_military"
-character_profile = sim_default_military_4
-spec_rank = veteran
-community = army
-custom_data = scripts\yantar\yan_tonnel_military_2_logic.ltx
-story_id = yan_stalker_gigant_military
-
-![yan_tonnel_snork_1]:psysucker_3_strong
-$spawn = "respawn\yan_tonnel_snork_1"
-community = monster
-custom_data = scripts\yantar\yan_tonnel_snork_1.ltx
-story_id = yan_tonnel_snork_1
-
-![yan_tonnel_snork_2]:stalker_strong
-$spawn = "respawn\yan_tonnel_snork_2"
-character_profile = sim_default_killer_dead
-spec_rank = advanced
-community = killer
-custom_data = scripts\labx16\labx16_ghost.ltx
-story_id = yan_tonnel_snork_2
-
-![yan_tonnel_snork_3]:bloodsucker_strong_big
-$spawn = "respawn\yan_tonnel_snork_3"
-community = monster
-custom_data = scripts\yantar\yan_tonnel_snork_3.ltx
-story_id = yan_tonnel_snork_3
-
-![yan_tonnel_snork_4]:stalker_strong
-$spawn = "respawn\yan_tonnel_snork_4"
-character_profile = sim_default_killer_dead
-spec_rank = advanced
-community = killer
-custom_data = scripts\labx16\labx16_ghost.ltx
-story_id = yan_tonnel_snork_4
-
-![yan_tonnel_snork_5]:bloodsucker_strong_big
-$spawn = "respawn\yan_tonnel_snork_5"
-community = monster
-custom_data = scripts\yantar\yan_tonnel_snork_5.ltx
-story_id = yan_tonnel_snork_5
-
-![yan_tonnel_snork_6]:stalker_strong
-$spawn = "respawn\yan_tonnel_snork_6"
-character_profile = sim_default_killer_dead
-spec_rank = advanced
-community = killer
-custom_data = scripts\labx16\labx16_ghost.ltx
-story_id = yan_tonnel_snork_6
-
-![yan_tonnel_zombied_1]:rat_normal
-$spawn = "respawn\yan_tonnel_zombied_1"
-community = monster
-character_profile = rat_normal
-custom_data = scripts\yantar\yan_tonnel_zombied_1.ltx
-story_id = yan_tonnel_zombied_1
-
-![yan_tonnel_zombied_2]:rat_normal
-$spawn = "respawn\yan_tonnel_zombied_2"
-community = monster
-character_profile = rat_normal
-custom_data = scripts\yantar\yan_tonnel_zombied_2.ltx
-story_id = yan_tonnel_zombied_2
-
-![yan_tonnel_zombied_3]:rat_normal
-$spawn = "respawn\yan_tonnel_zombied_3"
-community = monster
-character_profile = rat_normal
-custom_data = scripts\yantar\yan_tonnel_zombied_3.ltx
-story_id = yan_tonnel_zombied_3
diff --git a/mods/Redone Collection_backup/gamedata/configs/gameplay/character_desc_escape.xml b/mods/Redone Collection_backup/gamedata/configs/gameplay/character_desc_escape.xml
deleted file mode 100644
index a0d0dc32..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/gameplay/character_desc_escape.xml
+++ /dev/null
@@ -1,322 +0,0 @@
-
-
-
-
-
-
- escape_trader_name
- ui_inGame2_sid
- escape_trader_bio
- trader
- trader
-
- stalker_terrain
- actors\stalker_trader\stalker_trader_1
- 47450
- 2302
-
-
- [spawn] \n
-
-#include "gameplay\character_criticals.xml"
-
- esc_2_12_stalker_trader_start_dialog
- dm_init_trader
- sidorovich_questlines_about_dialog
- drx_sl_esc_m_trader_game_start_dialog_1
-
- sidorovich_living_legend
- sidorovich_living_legend_finish
- sidorovich_mortal_sin
- sidorovich_mortal_sin_envoy
- sidorovich_mortal_sin_report
- sidorovich_mortal_sin_ambush
- sidorovich_mortal_sin_zone_hero
- sidorovich_operation_afterglow
- sidorovich_operation_afterglow_transmission_report
-
- dm_important_documents
- drx_sl_cf_task_completed_dialog
- drx_sl_task_completed_dialog
- dm_ordered_task_completed_dialog
- drx_sl_esc_m_trader_meet_dialog
- dm_broker_dialog
- dm_ordered_task_dialog
- dm_lifestyle
- buy_route
- dm_bribe
- drx_sl_change_faction_dialog
- actor_break_dialog
- devushka_3_quest
-
-
-
-
- esc_wolf_name
- ui_inGame2_wolf
- esc_wolf_bio
- esc_2_12_stalker_wolf
- stalker stalker_terrain
-
- stalker_terrain
- 18200
- 2453
-
- characters_voice\human\stalker_1\
- -1
- actors\stalker_neutral\stalker_neytral_balon_1
-
- [spawn] \n
- wpn_pm \n
- ammo_9x18_fmj = 2 \n
- wpn_pkm \n
- ammo_pkm_100 = 3 \n
- device_torch \n
- hand_radio \n
-
-#include "gameplay\character_criticals.xml"
-
- esc_2_12_stalker_wolf_start_dialog
- wolf_st
- dm_ordered_task_completed_dialog
- dm_ordered_task_dialog
- actor_break_dialog
-
-
-
-
- esc_fanat_name
- ui_inGame2_fanatic
- esc_fanat_bio
- esc_2_12_stalker_fanat
- stalker stalker_terrain
-
- stalker_terrain
- 18850
- 1725
-
- characters_voice\human\stalker_1\
- -1
- 0
- actors\stalker_neutral\stalker_neytral_rukzak_3
-
- [spawn] \n
- wpn_binoc \n
- wpn_pm \n
- ammo_9x18_fmj = 3 \n
- wpn_ak74u \n
- ammo_5.45x39_fmj = 3 \n
-
-#include "gameplay\character_criticals.xml"
-
- fanat_training_start
- fanat_training_boars_death
- fanat_training_anomaly_reached
- fanat_training_artefact_taken
- fanat_training_back_to_village
- fanat_training_stash_search
- fanat_training_stash_found
- fanat_training_bandit_raid_start
- fanat_training_bandit_raid_end
- fanat_training_end
-
- dm_ordered_task_dialog
- dm_ordered_task_completed_dialog
- dm_ordered_task_cancel_dialog
- fanatic_st
- actor_break_dialog
-
-
-
-
- devushka
- ui_inGame2_Hip
-
- Hip
- devushka
- stalker stalker_terrain
- characters_voice\human\woman\
- 12550
- 900
- actors\mnp_npc_remeik\girl
-
- [spawn] \n
- wpn_binoc \n
- wpn_pm \n
- ammo_9x18_fmj = 3 \n
- wpn_ak74u \n
- ammo_5.45x39_fmj = 3 \n
-#include "gameplay\supplies\character_items.xml"
-#include "gameplay\supplies\character_food.xml"
-#include "gameplay\supplies\character_drugs_2.xml"
-
-#include "gameplay\character_criticals.xml"
- devushka_1_start
- devushka_2_start
- devushka_0_dialog
- devushka_1_dialog
- devushka_2_dialog
- devushka_3_quest_money
- actor_break_dialog
- dm_is_actor_companion_dialog
- dm_companion_patrol
- devushka_heal
- devushka_3_dialog
- devushka_4_dialog
- devushka_4_quest
- devushka_about_artefact
- devushka_about_semeckiy
- give_devushka_medved
- devushka_give_present
- devushka_go_village
- adventure_time_with_hip
-
-
-
-
- esc_smart_terrain_5_7_loner_mechanic_stalker_name
- ui_inGame2_loner_tech
- ??????? ???????. ƒ???????¤ ?????????¤ ???????????.
- esc_smart_terrain_5_7_loner_mechanic_stalker
- stalker
-
- stalker_terrain
-
-
- 3139
- 784
- actors\stalker_neutral\loner_mechanic_stalker
- characters_voice\human\stalker_3\
-
- [spawn] \n
- wpn_toz34 \n
- ammo_12x76_zhekan = 1 \n
- wpn_fort \n
- ammo_9x18_fmj = 1 \n
-#include "gameplay\supplies\character_items.xml"
-#include "gameplay\supplies\character_food.xml"
-#include "gameplay\supplies\character_drugs_2.xml"
-
-#include "gameplay\character_criticals.xml"
- dm_init_trader
- dm_init_mechanic
- drx_sl_task_completed_dialog
- dm_ordered_task_completed_dialog
- drx_sl_esc_smart_terrain_5_7_loner_mechanic_stalker_meet_dialog
- drx_sl_mechanic_task_dialog
- actor_break_dialog
- dm_encrypted_pda
- awr_tech_dialog_drink_1
- dm_tech_repair
-
-
-
-
- esc_main_base_trader_mlr_name
- ui_inGame2_kashpirovsky
-
- An experienced stalker. No detailed information is available.
-
- esc_main_base_trader_mlr
- traderstalker_terrain
- characters_voice\human\stalker_3\
-
- 1500
-
- 1000
-
- actors\stalker_neutral\stalker_neutral_1e_face_kashpirovsky
-
-
- [spawn] \n
- wpn_beretta \n
- ammo_9x19_fmj = 1 \n
-#include "gameplay\supplies\character_items.xml"
-#include "gameplay\supplies\character_food.xml"
-#include "gameplay\supplies\character_drugs.xml"
-
-#include "gameplay\character_criticals.xml"
- dm_init_trader
- buy_route
- actor_break_dialog
-
-
-
-
-
- army_south_mechan_mlr_name
- ui_inGame2_Soldier_3
-
- Нет данных.
-
- army_south_mechan_mlr
- armystalker_terrain
- characters_voice\human\military_3\
-
-
- 1100
-
- -600
-
- actors\stalker_soldier\stalker_soldier_3
-
-
- [spawn] \n
- wpn_ak74 \n
- ammo_5.45x39_ap = 3 \n
-#include "gameplay\supplies\character_items.xml"
-#include "gameplay\supplies\character_food.xml"
-#include "gameplay\supplies\character_drugs.xml"
-
-#include "gameplay\character_criticals.xml"
- dm_init_trader
- dm_init_mechanic
- army_south_mechan_mlr_st
- dm_ordered_task_dialog
- dm_ordered_task_completed_dialog
- dm_encrypted_pda
- dm_tech_repair
- awr_tech_dialog_drink_1
- actor_break_dialog
-
-
-
-
- esc_3_16_military_trader_name
- ui_inGame2_Soldier_3
-
- Нет данных.
-
- esc_3_16_military_trader
- army stalker_terrain
- characters_voice\human\military_3\
-
- 1900
-
- -1500
-
- actors\stalker_soldier\stalker_soldier_3
-
-
- [spawn] \n
- wpn_ak74 \n
- ammo_5.45x39_ap = 3 \n
-#include "gameplay\supplies\character_items.xml"
-#include "gameplay\supplies\character_food.xml"
-#include "gameplay\supplies\character_drugs.xml"
-
-#include "gameplay\character_criticals.xml"
-
- dm_init_trader
- dm_ordered_task_dialog
- dm_ordered_task_completed_dialog
-
- guid_esc_mlr_military
- guid_esc_mlr_military_vert
- guid_esc_mlr_military_list
- dm_bribe
- buy_route
- actor_break_dialog
-
-
-
diff --git a/mods/Redone Collection_backup/gamedata/configs/gameplay/character_desc_pripyat.xml b/mods/Redone Collection_backup/gamedata/configs/gameplay/character_desc_pripyat.xml
deleted file mode 100644
index 1b5f0220..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/gameplay/character_desc_pripyat.xml
+++ /dev/null
@@ -1,558 +0,0 @@
-
-
-
-
-
- GENERATE_NAME_stalker
- ui_inGame2_monolit_2
-
-
- . .
- pri_b36_monolith_sniper
- monolith
- stalker_terrain
- characters_voice\human\monolith_3\
- 1114
- 1153
- actors\stalker_monolith\stalker_monolith_2
-
- [spawn] \n
- wpn_svd = 1 \n
- ammo_7.62x54_7h1 = 3 \n
- wpn_colt1911 = 1 \n
- ammo_11.43x23_fmj = 1 \n
-#include "gameplay\supplies\character_items_nd.xml"
-#include "gameplay\supplies\character_food.xml"
-#include "gameplay\supplies\character_drugs_2.xml"
-
-#include "gameplay\character_criticals.xml"
-
-
-
- GENERATE_NAME_stalker
- ui_inGame2_monolit_3
-
-
- . .
- pri_b36_monolith_master_hiding_place
- monolith
- stalker_terrain
- characters_voice\human\monolith_3\
- 9144
- -471
- actors\stalker_monolith\stalker_monolith_3
-
- [spawn] \n
- wpn_protecta = 1 \n
- ammo_12x76_zhekan = 1 \n
- wpn_desert_eagle = 1 \n
- ammo_11.43x23_hydro = 1 \n
- pri_b36_monolith_hiding_place_pda = 1 \n
-#include "gameplay\supplies\character_items_nd.xml"
-#include "gameplay\supplies\character_food.xml"
-#include "gameplay\supplies\character_drugs_3.xml"
-
-#include "gameplay\character_criticals.xml"
-
-
-
- GENERATE_NAME_stalker
- ui_inGame2_monolit_3
-
-
- . .
- pri_b36_monolith_marine_sniper
- monolith
- stalker_terrain
- characters_voice\human\monolith_3\
- 8846
- -1033
- actors\stalker_monolith\stalker_monolith_3
-
- [spawn] \n
- wpn_vintorez = 1 \n
- ammo_9x39_ap = 3 \n
- wpn_colt1911 = 1 \n
- ammo_11.43x23_hydro = 1 \n
-#include "gameplay\supplies\character_items_nd.xml"
-#include "gameplay\supplies\character_food.xml"
-#include "gameplay\supplies\character_drugs_3.xml"
-
-#include "gameplay\character_criticals.xml"
-#include "gameplay\character_dialogs.xml"
-
-
-
- jup_b19_freedom_yar_name
- ui_inGame2_Dyadka_Yar
-
-
- . .
- pri_medic_stalker
- stalker
- stalker_terrain
- characters_voice\human\freedom_1\
- 9389
- 2309
-
- actors\stalker_freedom\stalker_freedom_2_face_2
-
- [spawn] \n
- wpn_svd = 1 \n
- ammo_7.62x54_7h1 = 3 \n
- wpn_beretta = 1 \n
- ammo_9x19_pbp = 1 \n
-#include "gameplay\supplies\character_food_army.xml"
-#include "gameplay\supplies\character_drugs.xml"
-#include "gameplay\supplies\character_drugs_mil.xml"
-
- dm_init_trader
- jup_b19_freedom_yar_pripyat_healing
- jup_b19_freedom_yar_break_dialog
-#include "gameplay\character_criticals.xml"
-
-
-
-
-
-
- pri_monolith_monolith_trader_stalker_name
- ui_inGame2_monolith_trade
- . .
- pri_monolith_monolith_trader_stalker
- monolith
-
- stalker_terrain
- 16846
- 380
-
- actors\stalker_monolith\stalker_monolith_2_face_1
- characters_voice\human\monolith_3\
-
-#include "gameplay\character_criticals.xml"
-
- dm_init_trader
- drx_sl_pri_monolith_monolith_trader_stalker_game_start_dialog_1
- drx_sl_cf_task_completed_dialog
- drx_sl_task_completed_dialog
- dm_ordered_task_completed_dialog
- dm_ordered_task_cancel_dialog
- drx_sl_pri_monolith_monolith_trader_stalker_meet_dialog
- buy_route
- dm_ordered_task_dialog
- drx_sl_change_faction_dialog
-
-
-
- actor_break_dialog
-
-
-
-
-
- pri_monolith_monolith_mechanic_stalker_name
- ui_inGame2_monolith_tech
- . .
- pri_monolith_monolith_mechanic_stalker
- monolith
-
- stalker_terrain
-
-
- 14698
- -900
- actors\stalker_monolith\stalker_monolith_2_face_2
- characters_voice\human\monolith_3\
-
-#include "gameplay\character_criticals.xml"
- dm_init_trader
- dm_init_mechanic
- drx_sl_task_completed_dialog
- dm_ordered_task_completed_dialog
- drx_sl_pri_monolith_monolith_mechanic_stalker_meet_dialog
- dm_broker_dialog
- drx_sl_mechanic_task_dialog
- dm_tech_repair
- dm_encrypted_pda
- awr_tech_dialog_drink_1
- actor_break_dialog
-
-
-
-
- monolith_eidolon_name
- ui_inGame2_monolit_1
-
-
- Perhaps the most infamous Monolith warrior, the one personally responsible for reactivating the Brain Scorcher.
-
- monolith_eidolon
- monolith
- stalker_terrain
- characters_voice\human\monolith_3\
-
- 52000
- -2000
-
- actors\stalker_radseva_series\stalker_monolith_radseva
-
-
- [spawn_loadout] \n
- wpn_groza = 1 \n
- wpn_val_kobra = 1 \n
- wpn_vihr_kobra = 1 \n
- [spawn_loadout2] \n
- wpn_fort_snag = 1 \n
- wpn_gsh18_custom = 1 \n
- [spawn] \n
- grenade_f1 = 2 \n
- detector_elite = 1 \n
- af_monolith = 1 \n
-
-#include "gameplay\supplies\character_food_army.xml"
-#include "gameplay\supplies\character_drugs_4.xml"
-#include "gameplay\supplies\character_drugs_sci.xml"
-#include "gameplay\supplies\character_drugs_mil.xml"
-
-#include "gameplay\character_criticals.xml"
-
- monolith_eidolon_start
- monolith_eidolon_st
- dm_ordered_task_dialog
- dm_ordered_task_completed_dialog
- dm_ordered_task_cancel_dialog
- actor_break_dialog
-
-
-
-
-
- lider_monolith_haron_name
- ui_inGame2_monolit_4
-
- . No information is available.
-
- lider_monolith_haron
- monolithstalker_terrain
- characters_voice\human\monolith_3\
-
- 22000
-
- -3000
-
- actors\stalker_monolith\stalker_monolith4b
-
-
- [spawn] \n
- wpn_val = 1 \n
- ammo_9x39_ap = 1 \n
-#include "gameplay\supplies\character_items.xml"
-#include "gameplay\supplies\character_food.xml"
-#include "gameplay\supplies\character_drugs.xml"
-
-#include "gameplay\character_criticals.xml"
- dm_ordered_task_dialog
- dm_ordered_task_completed_dialog
- meet_guid_l11pri_mon_haron
- meet_guid_l11pri_mon_haron_list
- travel_guid_l11pri_mon_haron
- find_blackbox_mlr_reward_haron
- actor_break_dialog
-
-
-
-
-
-
- pri_a16_mech_mlr_name
- ui_inGame2_neutral_2_mask
-
- .
-
- pri_a16_mech_mlr
- stalker
- stalker_terrain
- characters_voice\human\stalker_2\
-
-
- 4800
-
- 1900
-
- actors\stalker_neutral\stalker_neutral2a_mask
-
-
- [spawn] \n
- wpn_ak74 \n
- ammo_5.45x39_ap = 3 \n
-#include "gameplay\supplies\character_items.xml"
-#include "gameplay\supplies\character_food.xml"
-#include "gameplay\supplies\character_drugs.xml"
-
-#include "gameplay\character_criticals.xml"
-
- dm_init_trader
- dm_init_mechanic
- dm_ordered_task_dialog
- dm_ordered_task_completed_dialog
- dm_tech_repair
- actor_break_dialog
-
-
-
-
- guid_pri_a15_mlr_name
- ui_inGame2_neutral_2_mask
-
-
- An experienced stalker. No detailed information is available.
- guid_pri_a15_mlr
- stalker
- stalker_terrain
- characters_voice\human\stalker_2\
-
- 8000
-
- 1300
- actors\stalker_neutral\stalker_neutral2a_mas2
-
-
- [spawn] \n
- wpn_svu \n
- ammo_7.62x54_7h1 = 1 \n
-
-#include "gameplay\supplies\character_items.xml"
-#include "gameplay\supplies\character_food.xml"
-#include "gameplay\supplies\character_drugs.xml"
-
-#include "gameplay\character_criticals.xml"
- meet_guid_pri_stalker
- travel_guid_pri_stalker
- meet_guid_pri_stalker_list
- actor_break_dialog
-
-
-
-
- trader_pri_a15_mlr_name
- ui_inGame2_neutral_1
-
-
- An experienced stalker. No detailed information is available.
- trader_pri_a15_mlr
- stalker
- stalker_terrain
- characters_voice\human\stalker_3\
-
- 6000
-
- -1000
- actors\stalker_neutral\esc_mechanic_furgon
-
-
- [spawn] \n
- wpn_desert_eagle \n
- ammo_11.43x23_fmj = 1 \n
-
-#include "gameplay\supplies\character_items.xml"
-#include "gameplay\supplies\character_food.xml"
-#include "gameplay\supplies\character_drugs.xml"
-
-#include "gameplay\character_criticals.xml"
- dm_init_trader
- buy_route
- actor_break_dialog
-
-
-
-
-
-
- mechanic_monolith_kbo_name
- ui_inGame2_Bracer
-
- Monolith Mechanic.
-
- mechanic_monolith_kbo
- monolithstalker_terrain
-
- characters_voice\human\monolith_3\
-
- 4000
-
- 0
-
- actors\mnp_npc_remeik\monolit_jupiter_mechanik
-
-
- [spawn] \n
- wpn_abakan = 1 \n
- ammo_5.45x39_ap = 1 \n
-#include "gameplay\supplies\character_items.xml"
-#include "gameplay\supplies\character_food.xml"
-#include "gameplay\supplies\character_drugs.xml"
-
-#include "gameplay\character_criticals.xml"
- mechanic_monolith_kbo_start
- dm_init_trader
- dm_init_mechanic
- dm_ordered_task_dialog
- dm_ordered_task_completed_dialog
- dm_encrypted_pda
- awr_tech_dialog_drink_1
- dm_tech_repair
- actor_break_dialog
-
-
-
-
- trader_monolith_kbo_name
- ui_inGame2_Olivar
-
- Monolith, supplying his brothers with equipment.
-
- trader_monolith_kbo
- monolithstalker_terrain
- characters_voice\human\monolith_3\
-
- 4000
-
- 0
-
- actors\stalker_monolith\stalker_monolith_2a_face_rabbit
-
-
- [spawn] \n
- wpn_val = 1 \n
- ammo_9x39_ap = 1 \n
-#include "gameplay\supplies\character_items.xml"
-#include "gameplay\supplies\character_food.xml"
-#include "gameplay\supplies\character_drugs.xml"
-
-#include "gameplay\character_criticals.xml"
- dm_init_trader
- drx_sl_task_completed_dialog
- drx_sl_trader_monolith_kbo_meet_dialog
- meet_guid_prikbo_mon
- meet_guid_prikbo_mon_list
- travel_guid_prikbo_mon_mon
- buy_route
- actor_break_dialog
-
-
-
-
-
-
- merc_pri_a18_mech_mlr_name
-
- ui_inGame2_Trunk
- No information is available.
-
- merc_pri_a18_mech_mlr
- killer
- stalker_terrain
- 2100
- 1
- actors\mnp_npc_remeik\merc_black
- characters_voice\human\killer_3\
-
-
-
-
- [spawn] \n
- wpn_lr300 \n
- ammo_5.56x45_ap = 1 \n
-
-#include "gameplay\supplies\character_items_nd.xml"
-#include "gameplay\supplies\character_food.xml"
-#include "gameplay\supplies\character_drugs.xml"
-
-
-#include "gameplay\character_criticals.xml"
- dm_init_trader
- dm_init_mechanic
- dm_tech_repair
- tech_a18_meet_dialog
- tech_a18_meet_dialog_1
- tech_a18_meet_dialog_2
- dm_encrypted_pda
- awr_tech_dialog_drink_1
- actor_break_dialog
-
-
-
-
-
- merc_pri_grifon_mlr_name
-
- ui_inGame2_Griffith
- No information is available.
-
- merc_pri_grifon_mlr
- killer
- stalker_terrain
- 5000
- -1500
-
- actors\mnp_npc_remeik\merc_tihiy
- characters_voice\human\killer_3\
-
-
- [spawn] \n
- wpn_g36 \n
- ammo_5.56x45_ap = 1 \n
- wpn_sig220 = 1 \n
- ammo_11.43x23_hydro = 1 \n
-
-#include "gameplay\supplies\character_items_nd.xml"
-#include "gameplay\supplies\character_food.xml"
-#include "gameplay\supplies\character_drugs.xml"
-
-
-#include "gameplay\character_criticals.xml"
- grifon_meet_dialog
- drx_sl_task_completed_dialog
- drx_sl_merc_pri_grifon_mlr_meet_dialog
- task_find_inf_inx_8_mlr_1
- task_find_inf_inx_8_mlr_2
- dm_ordered_task_dialog
- dm_ordered_task_completed_dialog
- buy_route
- actor_break_dialog
-
-
-
-
- pri_special_trader_mlr_name
- ui_inGame2_Meeker
-
- .
-
- pri_special_trader_mlr
- killer stalker_terrain
- characters_voice\human\killer_1\
-
- 7500
-
- 1500
-
- actors\mnp_npc_remeik\killer_leshiy
-
-
- [spawn] \n
- wpn_g36 \n
- ammo_5.56x45_ap = 1 \n
-#include "gameplay\supplies\character_items.xml"
-#include "gameplay\supplies\character_food.xml"
-#include "gameplay\supplies\character_drugs.xml"
-
-#include "gameplay\character_criticals.xml"
- dm_init_trader
- pri_special_trader_mlr1
- pri_special_trader_mlr4
- pri_special_trader_mlr2
- pri_special_trader_mlr3
- actor_break_dialog
-
-
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_army_0.xml b/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_army_0.xml
deleted file mode 100644
index d36c1d49..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_army_0.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-ќпытный сталкер. ƒетальна¤ информаци¤ отсутствует.
-sim_default_military_0
-army
-
-
-GENERATE_NAME_private
-
-
-
-#include "gameplay\loadouts\army_base.ltx"
-#include "gameplay\loadouts\army_tier_1.ltx"
-[spawn] \n
-#include "gameplay\supplies\character_food.xml"
-#include "gameplay\supplies\character_medical_army.xml"
-
-#include "gameplay\character_criticals.xml"
-#include "gameplay\character_dialogs.xml"
-stalker_terrain
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_army_1.xml b/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_army_1.xml
deleted file mode 100644
index 25c2b10e..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_army_1.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-ќпытный сталкер. ƒетальна¤ информаци¤ отсутствует.
-sim_default_military_1
-army
-
-
-GENERATE_NAME_sergeant
-
-
-
-#include "gameplay\loadouts\army_base.ltx"
-#include "gameplay\loadouts\army_tier_2.ltx"
-[spawn] \n
-#include "gameplay\supplies\character_food.xml"
-#include "gameplay\supplies\character_medical_army.xml"
-#include "gameplay\supplies\character_drugs.xml"
-
-#include "gameplay\character_criticals.xml"
-#include "gameplay\character_dialogs.xml"
-stalker_terrain
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_army_2.xml b/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_army_2.xml
deleted file mode 100644
index 90ceab40..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_army_2.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-ќпытный сталкер. ƒетальна¤ информаци¤ отсутствует.
-sim_default_military_2
-army
-
-
-GENERATE_NAME_senior_sergeant
-
-
-
-#include "gameplay\loadouts\army_base.ltx"
-#include "gameplay\loadouts\army_tier_2.ltx"
-[spawn] \n
-#include "gameplay\supplies\character_food.xml"
-#include "gameplay\supplies\character_medical_army.xml"
-#include "gameplay\supplies\character_drugs.xml"
-
-#include "gameplay\character_criticals.xml"
-#include "gameplay\character_dialogs.xml"
-stalker_terrain
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_army_3.xml b/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_army_3.xml
deleted file mode 100644
index f04ed5a8..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_army_3.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-ќпытный сталкер. ƒетальна¤ информаци¤ отсутствует.
-sim_default_military_3
-army
-
-
-GENERATE_NAME_lieutenant
-
-
-
-#include "gameplay\loadouts\army_base.ltx"
-#include "gameplay\loadouts\army_tier_3.ltx"
-[spawn] \n
-#include "gameplay\supplies\character_food_army.xml"
-#include "gameplay\supplies\character_medical_army.xml"
-#include "gameplay\supplies\character_drugs_army.xml"
-
-#include "gameplay\character_criticals.xml"
-#include "gameplay\character_dialogs.xml"
-stalker_terrain
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_army_4.xml b/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_army_4.xml
deleted file mode 100644
index b8428a99..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_army_4.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-ќпытный сталкер. ƒетальна¤ информаци¤ отсутствует.
-sim_default_military_4
-army
-
-
-GENERATE_NAME_captain
-
-
-
-#include "gameplay\character_criticals.xml"
-#include "gameplay\character_dialogs.xml"
-stalker_terrain
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_army_special.xml b/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_army_special.xml
deleted file mode 100644
index c2fbfe50..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_army_special.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-ќпытный сталкер. ƒетальна¤ информаци¤ отсутствует.
-army
-
-
-
-
-
-#include "gameplay\character_criticals.xml"
-stalker_terrain
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_bandit_0.xml b/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_bandit_0.xml
deleted file mode 100644
index cff60823..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_bandit_0.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-ќпытный сталкер. ƒетальна¤ информаци¤ отсутствует.
-sim_default_bandit_0
-bandit
-
-
-GENERATE_NAME_bandit
-
-
-
-#include "gameplay\loadouts\bandit_base.ltx"
-#include "gameplay\loadouts\bandit_tier_1.ltx"
-[spawn] \n
-#include "gameplay\supplies\character_food.xml"
-#include "gameplay\supplies\character_medical.xml"
-
-#include "gameplay\character_criticals.xml"
-#include "gameplay\character_dialogs.xml"
-stalker_terrain
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_bandit_1.xml b/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_bandit_1.xml
deleted file mode 100644
index 993a88f3..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_bandit_1.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-ќпытный сталкер. ƒетальна¤ информаци¤ отсутствует.
-sim_default_bandit_1
-bandit
-
-
-GENERATE_NAME_bandit
-
-
-
-#include "gameplay\loadouts\bandit_base.ltx"
-#include "gameplay\loadouts\bandit_tier_1.ltx"
-[spawn] \n
-#include "gameplay\supplies\character_food.xml"
-#include "gameplay\supplies\character_medical.xml"
-
-#include "gameplay\character_criticals.xml"
-#include "gameplay\character_dialogs.xml"
-stalker_terrain
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_bandit_2.xml b/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_bandit_2.xml
deleted file mode 100644
index 2eda5de9..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_bandit_2.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-ќпытный сталкер. ƒетальна¤ информаци¤ отсутствует.
-sim_default_bandit_2
-bandit
-
-
-GENERATE_NAME_bandit
-
-
-
-#include "gameplay\loadouts\bandit_base.ltx"
-#include "gameplay\loadouts\bandit_tier_2.ltx"
-[spawn] \n
-#include "gameplay\supplies\character_items.xml"
-#include "gameplay\supplies\character_food.xml"
-#include "gameplay\supplies\character_medical.xml"
-#include "gameplay\supplies\character_drugs.xml"
-
-#include "gameplay\character_criticals.xml"
-#include "gameplay\character_dialogs.xml"
-stalker_terrain
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_bandit_3.xml b/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_bandit_3.xml
deleted file mode 100644
index 8f00b8fd..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_bandit_3.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-ќпытный сталкер. ƒетальна¤ информаци¤ отсутствует.
-sim_default_bandit_3
-bandit
-
-
-GENERATE_NAME_bandit
-
-
-
-#include "gameplay\loadouts\bandit_base.ltx"
-#include "gameplay\loadouts\bandit_tier_3.ltx"
-[spawn] \n
-#include "gameplay\supplies\character_items_2.xml"
-#include "gameplay\supplies\character_food.xml"
-#include "gameplay\supplies\character_medical.xml"
-#include "gameplay\supplies\character_drugs.xml"
-
-#include "gameplay\character_criticals.xml"
-#include "gameplay\character_dialogs.xml"
-stalker_terrain
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_bandit_4.xml b/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_bandit_4.xml
deleted file mode 100644
index ca228fab..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_bandit_4.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-ќпытный сталкер. ƒетальна¤ информаци¤ отсутствует.
-sim_default_bandit_4
-bandit
-
-
-GENERATE_NAME_bandit
-
-
-
-#include "gameplay\loadouts\bandit_base.ltx"
-#include "gameplay\loadouts\bandit_tier_4.ltx"
-[spawn] \n
-#include "gameplay\supplies\character_items_2.xml"
-#include "gameplay\supplies\character_food_2.xml"
-#include "gameplay\supplies\character_medical.xml"
-#include "gameplay\supplies\character_drugs_2.xml"
-
-#include "gameplay\character_criticals.xml"
-#include "gameplay\character_dialogs.xml"
-stalker_terrain
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_bandit_special.xml b/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_bandit_special.xml
deleted file mode 100644
index 5b9e4205..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_bandit_special.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-ќпытный сталкер. ƒетальна¤ информаци¤ отсутствует.
-bandit
-
-
-
-
-
-#include "gameplay\character_criticals.xml"
-stalker_terrain
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_csky_0.xml b/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_csky_0.xml
deleted file mode 100644
index 95ff6817..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_csky_0.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-ќпытный сталкер. ƒетальна¤ информаци¤ отсутствует.
-sim_default_csky_0
-csky
-
-
-GENERATE_NAME_stalker
-
-
-
-#include "gameplay\loadouts\csky_base.ltx"
-#include "gameplay\loadouts\csky_tier_1.ltx"
-[spawn] \n
-#include "gameplay\supplies\character_food.xml"
-#include "gameplay\supplies\character_medical.xml"
-
-#include "gameplay\character_criticals.xml"
-#include "gameplay\character_dialogs.xml"
-stalker_terrain
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_csky_1.xml b/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_csky_1.xml
deleted file mode 100644
index 4ea8d101..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_csky_1.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-ќпытный сталкер. ƒетальна¤ информаци¤ отсутствует.
-sim_default_csky_1
-csky
-
-
-GENERATE_NAME_stalker
-
-
-
-#include "gameplay\loadouts\csky_base.ltx"
-#include "gameplay\loadouts\csky_tier_2.ltx"
-[spawn] \n
-#include "gameplay\supplies\character_food.xml"
-#include "gameplay\supplies\character_medical.xml"
-#include "gameplay\supplies\character_drugs.xml"
-
-#include "gameplay\character_criticals.xml"
-#include "gameplay\character_dialogs.xml"
-stalker_terrain
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_csky_2.xml b/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_csky_2.xml
deleted file mode 100644
index 5f31db74..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_csky_2.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-ќпытный сталкер. ƒетальна¤ информаци¤ отсутствует.
-sim_default_csky_2
-csky
-
-
-GENERATE_NAME_stalker
-
-
-
-#include "gameplay\loadouts\csky_base.ltx"
-#include "gameplay\loadouts\csky_tier_2.ltx"
-[spawn] \n
-#include "gameplay\supplies\character_items.xml"
-#include "gameplay\supplies\character_food.xml"
-#include "gameplay\supplies\character_medical.xml"
-#include "gameplay\supplies\character_drugs.xml"
-
-#include "gameplay\character_criticals.xml"
-#include "gameplay\character_dialogs.xml"
-stalker_terrain
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_csky_3.xml b/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_csky_3.xml
deleted file mode 100644
index 00164f15..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_csky_3.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-ќпытный сталкер. ƒетальна¤ информаци¤ отсутствует.
-sim_default_csky_3
-csky
-
-
-GENERATE_NAME_stalker
-
-
-
-#include "gameplay\loadouts\csky_base.ltx"
-#include "gameplay\loadouts\csky_tier_3.ltx"
-[spawn] \n
-#include "gameplay\supplies\character_items_2.xml"
-#include "gameplay\supplies\character_food.xml"
-#include "gameplay\supplies\character_medical.xml"
-#include "gameplay\supplies\character_drugs_2.xml"
-
-#include "gameplay\character_criticals.xml"
-#include "gameplay\character_dialogs.xml"
-stalker_terrain
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_csky_4.xml b/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_csky_4.xml
deleted file mode 100644
index 2f872172..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_csky_4.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-ќпытный сталкер. ƒетальна¤ информаци¤ отсутствует.
-sim_default_csky_4
-csky
-
-
-GENERATE_NAME_stalker
-
-
-
-#include "gameplay\loadouts\csky_base.ltx"
-#include "gameplay\loadouts\csky_tier_4.ltx"
-[spawn] \n
-#include "gameplay\supplies\character_items_2.xml"
-#include "gameplay\supplies\character_food_2.xml"
-#include "gameplay\supplies\character_medical.xml"
-#include "gameplay\supplies\character_drugs_3.xml"
-
-#include "gameplay\character_criticals.xml"
-#include "gameplay\character_dialogs.xml"
-stalker_terrain
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_csky_special.xml b/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_csky_special.xml
deleted file mode 100644
index 8439d9b9..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_csky_special.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-ќпытный сталкер. ƒетальна¤ информаци¤ отсутствует.
-csky
-
-
-
-
-
-#include "gameplay\character_criticals.xml"
-stalker_terrain
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_dolg_0.xml b/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_dolg_0.xml
deleted file mode 100644
index 06d2f6bb..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_dolg_0.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-ќпытный сталкер. ƒетальна¤ информаци¤ отсутствует.
-sim_default_duty_0
-dolg
-
-
-GENERATE_NAME_private
-
-
-
-#include "gameplay\loadouts\dolg_base.ltx"
-#include "gameplay\loadouts\dolg_tier_1.ltx"
-[spawn] \n
-#include "gameplay\supplies\character_food.xml"
-#include "gameplay\supplies\character_medical.xml"
-
-#include "gameplay\character_criticals.xml"
-#include "gameplay\character_dialogs.xml"
-stalker_terrain
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_dolg_1.xml b/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_dolg_1.xml
deleted file mode 100644
index cfef6b18..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_dolg_1.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-ќпытный сталкер. ƒетальна¤ информаци¤ отсутствует.
-sim_default_duty_1
-dolg
-
-
-GENERATE_NAME_sergeant
-
-
-
-#include "gameplay\loadouts\dolg_base.ltx"
-#include "gameplay\loadouts\dolg_tier_2.ltx"
-[spawn] \n
-#include "gameplay\supplies\character_food.xml"
-#include "gameplay\supplies\character_medical.xml"
-#include "gameplay\supplies\character_drugs.xml"
-
-#include "gameplay\character_criticals.xml"
-#include "gameplay\character_dialogs.xml"
-stalker_terrain
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_dolg_2.xml b/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_dolg_2.xml
deleted file mode 100644
index fe4dc8d3..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_dolg_2.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-ќпытный сталкер. ƒетальна¤ информаци¤ отсутствует.
-sim_default_duty_2
-dolg
-
-
-GENERATE_NAME_senior_sergeant
-
-
-
-#include "gameplay\loadouts\dolg_base.ltx"
-#include "gameplay\loadouts\dolg_tier_2.ltx"
-[spawn] \n
-#include "gameplay\supplies\character_items.xml"
-#include "gameplay\supplies\character_food.xml"
-#include "gameplay\supplies\character_medical.xml"
-#include "gameplay\supplies\character_drugs.xml"
-
-#include "gameplay\character_criticals.xml"
-#include "gameplay\character_dialogs.xml"
-stalker_terrain
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_dolg_3.xml b/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_dolg_3.xml
deleted file mode 100644
index 2449a958..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_dolg_3.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-ќпытный сталкер. ƒетальна¤ информаци¤ отсутствует.
-sim_default_duty_3
-dolg
-
-
-GENERATE_NAME_lieutenant
-
-
-
-#include "gameplay\loadouts\dolg_base.ltx"
-#include "gameplay\loadouts\dolg_tier_3.ltx"
-[spawn] \n
-#include "gameplay\supplies\character_items_2.xml"
-#include "gameplay\supplies\character_food_army.xml"
-#include "gameplay\supplies\character_medical_army.xml"
-#include "gameplay\supplies\character_drugs_2.xml"
-
-#include "gameplay\character_criticals.xml"
-#include "gameplay\character_dialogs.xml"
-stalker_terrain
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_dolg_4.xml b/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_dolg_4.xml
deleted file mode 100644
index 13c0e9cb..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_dolg_4.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-ќпытный сталкер. ƒетальна¤ информаци¤ отсутствует.
-sim_default_duty_4
-dolg
-
-
-GENERATE_NAME_captain
-
-
-
-#include "gameplay\loadouts\dolg_base.ltx"
-#include "gameplay\loadouts\dolg_tier_4.ltx"
-[spawn] \n
-#include "gameplay\supplies\character_items_2.xml"
-#include "gameplay\supplies\character_food_army.xml"
-#include "gameplay\supplies\character_medical_army.xml"
-#include "gameplay\supplies\character_drugs_3.xml"
-
-#include "gameplay\character_criticals.xml"
-#include "gameplay\character_dialogs.xml"
-stalker_terrain
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_dolg_special.xml b/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_dolg_special.xml
deleted file mode 100644
index 39cab669..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_dolg_special.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-ќпытный сталкер. ƒетальна¤ информаци¤ отсутствует.
-dolg
-
-
-
-
-
-#include "gameplay\character_criticals.xml"
-stalker_terrain
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_ecolog_0.xml b/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_ecolog_0.xml
deleted file mode 100644
index 28e54c14..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_ecolog_0.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-Member of mobile science camp. Detailed information is missing.
-sim_default_ecolog_0
-ecolog
-
-
-GENERATE_NAME_stalker
-
-
-
-#include "gameplay\loadouts\ecolog_base.ltx"
-#include "gameplay\loadouts\ecolog_tier_1.ltx"
-[spawn] \n
-#include "gameplay\supplies\character_items_2.xml"
-#include "gameplay\supplies\character_food_army.xml"
-#include "gameplay\supplies\character_medical_sci.xml"
-#include "gameplay\supplies\character_drugs_army.xml"
-
-#include "gameplay\character_criticals.xml"
-#include "gameplay\character_dialogs.xml"
-stalker_terrain
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_ecolog_01.xml b/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_ecolog_01.xml
deleted file mode 100644
index ff9ef5ff..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_ecolog_01.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-Member of mobile science camp. Detailed information is missing.
-sim_default_ecolog_01
-ecolog
-
-
-GENERATE_NAME_stalker
-
-
-
-#include "gameplay\loadouts\ecolog_base.ltx"
-#include "gameplay\loadouts\ecolog_tier_1.ltx"
-[spawn] \n
-#include "gameplay\supplies\character_items_2.xml"
-#include "gameplay\supplies\character_food_army.xml"
-#include "gameplay\supplies\character_medical_sci.xml"
-#include "gameplay\supplies\character_drugs_army.xml"
-
-#include "gameplay\character_criticals.xml"
-#include "gameplay\character_dialogs.xml"
-stalker_terrain
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_ecolog_1.xml b/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_ecolog_1.xml
deleted file mode 100644
index d76a09fb..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_ecolog_1.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-Member of mobile science camp. Detailed information is missing.
-sim_default_ecolog_1
-ecolog
-
-
-GENERATE_NAME_science
-
-
-
-#include "gameplay\loadouts\ecolog_base.ltx"
-#include "gameplay\loadouts\ecolog_tier_2.ltx"
-[spawn] \n
-#include "gameplay\supplies\character_items_2.xml"
-#include "gameplay\supplies\character_food_army.xml"
-#include "gameplay\supplies\character_medical_sci.xml"
-#include "gameplay\supplies\character_drugs_army.xml"
-
-#include "gameplay\character_criticals.xml"
-#include "gameplay\character_dialogs.xml"
-stalker_terrain
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_ecolog_2.xml b/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_ecolog_2.xml
deleted file mode 100644
index 484a82b4..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_ecolog_2.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-ќпытный сталкер. ƒетальна¤ информаци¤ отсутствует.
-sim_default_ecolog_2
-ecolog
-
-
-GENERATE_NAME_stalker
-
-
-
-#include "gameplay\loadouts\ecolog_base.ltx"
-#include "gameplay\loadouts\ecolog_tier_3.ltx"
-[spawn] \n
-#include "gameplay\supplies\character_items_2.xml"
-#include "gameplay\supplies\character_food.xml"
-#include "gameplay\supplies\character_medical.xml"
-#include "gameplay\supplies\character_drugs_2.xml"
-
-#include "gameplay\character_criticals.xml"
-#include "gameplay\character_dialogs.xml"
-stalker_terrain
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_ecolog_3.xml b/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_ecolog_3.xml
deleted file mode 100644
index 98f95cc9..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_ecolog_3.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-ќпытный сталкер. ƒетальна¤ информаци¤ отсутствует.
-sim_default_ecolog_3
-ecolog
-
-
-GENERATE_NAME_stalker
-
-
-
-#include "gameplay\loadouts\ecolog_base.ltx"
-#include "gameplay\loadouts\ecolog_tier_4.ltx"
-[spawn] \n
-#include "gameplay\supplies\character_items_2.xml"
-#include "gameplay\supplies\character_food_2.xml"
-#include "gameplay\supplies\character_medical_sci.xml"
-#include "gameplay\supplies\character_drugs_3.xml"
-
-#include "gameplay\character_criticals.xml"
-#include "gameplay\character_dialogs.xml"
-stalker_terrain
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_ecolog_4.xml b/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_ecolog_4.xml
deleted file mode 100644
index 2c1e2357..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_ecolog_4.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-ќпытный сталкер. ƒетальна¤ информаци¤ отсутствует.
-sim_default_ecolog_4
-ecolog
-
-
-GENERATE_NAME_stalker
-
-
-
-#include "gameplay\loadouts\ecolog_base.ltx"
-#include "gameplay\loadouts\ecolog_tier_4.ltx"
-[spawn] \n
-#include "gameplay\supplies\character_items_2.xml"
-#include "gameplay\supplies\character_food_2.xml"
-#include "gameplay\supplies\character_medical_sci.xml"
-#include "gameplay\supplies\character_drugs_3.xml"
-
-#include "gameplay\character_criticals.xml"
-#include "gameplay\character_dialogs.xml"
-stalker_terrain
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_ecolog_5.xml b/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_ecolog_5.xml
deleted file mode 100644
index 4c864180..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_ecolog_5.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-ќпытный сталкер. ƒетальна¤ информаци¤ отсутствует.
-sim_default_ecolog_5
-ecolog
-
-
-GENERATE_NAME_stalker
-
-
-
-#include "gameplay\loadouts\ecolog_base.ltx"
-#include "gameplay\loadouts\ecolog_tier_4.ltx"
-[spawn] \n
-#include "gameplay\supplies\character_items_2.xml"
-#include "gameplay\supplies\character_food_2.xml"
-#include "gameplay\supplies\character_medical_sci.xml"
-#include "gameplay\supplies\character_drugs_3.xml"
-
-#include "gameplay\character_criticals.xml"
-#include "gameplay\character_dialogs.xml"
-stalker_terrain
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_ecolog_special.xml b/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_ecolog_special.xml
deleted file mode 100644
index be78d193..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_ecolog_special.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-ќпытный сталкер. ƒетальна¤ информаци¤ отсутствует.
-ecolog
-
-
-
-
-
-#include "gameplay\character_criticals.xml"
-stalker_terrain
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_freedom_0.xml b/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_freedom_0.xml
deleted file mode 100644
index 79abc539..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_freedom_0.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-ќпытный сталкер. ƒетальна¤ информаци¤ отсутствует.
-sim_default_freedom_0
-freedom
-
-
-GENERATE_NAME_stalker
-
-
-
-#include "gameplay\loadouts\freedom_base.ltx"
-#include "gameplay\loadouts\freedom_tier_1.ltx"
-[spawn] \n
-#include "gameplay\supplies\character_food.xml"
-#include "gameplay\supplies\character_medical.xml"
-
-#include "gameplay\character_criticals.xml"
-#include "gameplay\character_dialogs.xml"
-stalker_terrain
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_freedom_1.xml b/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_freedom_1.xml
deleted file mode 100644
index d5db35dd..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_freedom_1.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-ќпытный сталкер. ƒетальна¤ информаци¤ отсутствует.
-sim_default_freedom_1
-freedom
-
-
-GENERATE_NAME_stalker
-
-
-
-#include "gameplay\loadouts\freedom_base.ltx"
-#include "gameplay\loadouts\freedom_tier_2.ltx"
-[spawn] \n
-#include "gameplay\supplies\character_items.xml"
-#include "gameplay\supplies\character_food.xml"
-#include "gameplay\supplies\character_medical.xml"
-#include "gameplay\supplies\character_drugs.xml"
-
-#include "gameplay\character_criticals.xml"
-#include "gameplay\character_dialogs.xml"
-stalker_terrain
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_freedom_2.xml b/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_freedom_2.xml
deleted file mode 100644
index 1072c9ed..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_freedom_2.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-ќпытный сталкер. ƒетальна¤ информаци¤ отсутствует.
-sim_default_freedom_2
-freedom
-
-
-GENERATE_NAME_stalker
-
-
-
-#include "gameplay\loadouts\freedom_base.ltx"
-#include "gameplay\loadouts\freedom_tier_2.ltx"
-[spawn] \n
-#include "gameplay\supplies\character_items.xml"
-#include "gameplay\supplies\character_food.xml"
-#include "gameplay\supplies\character_medical.xml"
-#include "gameplay\supplies\character_drugs.xml"
-
-#include "gameplay\character_criticals.xml"
-#include "gameplay\character_dialogs.xml"
-stalker_terrain
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_freedom_3.xml b/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_freedom_3.xml
deleted file mode 100644
index 18f5c4d2..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_freedom_3.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-ќпытный сталкер. ƒетальна¤ информаци¤ отсутствует.
-sim_default_freedom_3
-freedom
-
-
-GENERATE_NAME_stalker
-
-
-
-#include "gameplay\loadouts\freedom_base.ltx"
-#include "gameplay\loadouts\freedom_tier_3.ltx"
-[spawn] \n
-#include "gameplay\supplies\character_items_2.xml"
-#include "gameplay\supplies\character_food.xml"
-#include "gameplay\supplies\character_medical_sci.xml"
-#include "gameplay\supplies\character_drugs_2.xml"
-
-#include "gameplay\character_criticals.xml"
-#include "gameplay\character_dialogs.xml"
-stalker_terrain
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_freedom_4.xml b/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_freedom_4.xml
deleted file mode 100644
index 5200864d..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_freedom_4.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-ќпытный сталкер. ƒетальна¤ информаци¤ отсутствует.
-sim_default_freedom_4
-freedom
-
-
-GENERATE_NAME_stalker
-
-
-
-#include "gameplay\loadouts\freedom_base.ltx"
-#include "gameplay\loadouts\freedom_tier_4.ltx"
-[spawn] \n
-#include "gameplay\supplies\character_items_2.xml"
-#include "gameplay\supplies\character_food_2.xml"
-#include "gameplay\supplies\character_medical_sci.xml"
-#include "gameplay\supplies\character_drugs_3.xml"
-
-#include "gameplay\character_criticals.xml"
-#include "gameplay\character_dialogs.xml"
-stalker_terrain
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_freedom_special.xml b/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_freedom_special.xml
deleted file mode 100644
index 8701bdac..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_freedom_special.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-ќпытный сталкер. ƒетальна¤ информаци¤ отсутствует.
-freedom
-
-
-
-
-
-#include "gameplay\character_criticals.xml"
-stalker_terrain
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_greh_0.xml b/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_greh_0.xml
deleted file mode 100644
index 49535caf..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_greh_0.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-ќпытный сталкер. ƒетальна¤ информаци¤ отсутствует.
-sim_default_greh_0
-greh
-
-
-GENERATE_NAME_stalker
-
-
-
-#include "gameplay\loadouts\monolith_base.ltx"
-#include "gameplay\loadouts\monolith_tier_1.ltx"
-[spawn] \n
-#include "gameplay\supplies\character_items.xml"
-#include "gameplay\supplies\character_food.xml"
-#include "gameplay\supplies\character_medical.xml"
-#include "gameplay\supplies\character_drugs.xml"
-
-#include "gameplay\character_criticals.xml"
-#include "gameplay\character_dialogs.xml"
-stalker_terrain
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_greh_1.xml b/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_greh_1.xml
deleted file mode 100644
index c81c2ee9..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_greh_1.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-ќпытный сталкер. ƒетальна¤ информаци¤ отсутствует.
-sim_default_greh_1
-greh
-
-
-GENERATE_NAME_stalker
-
-
-
-#include "gameplay\loadouts\monolith_base.ltx"
-#include "gameplay\loadouts\monolith_tier_1.ltx"
-[spawn] \n
-#include "gameplay\supplies\character_items.xml"
-#include "gameplay\supplies\character_food.xml"
-#include "gameplay\supplies\character_medical.xml"
-#include "gameplay\supplies\character_drugs.xml"
-
-#include "gameplay\character_criticals.xml"
-#include "gameplay\character_dialogs.xml"
-stalker_terrain
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_greh_2.xml b/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_greh_2.xml
deleted file mode 100644
index dac22b2f..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_greh_2.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-ќпытный сталкер. ƒетальна¤ информаци¤ отсутствует.
-sim_default_greh_2
-greh
-
-
-GENERATE_NAME_stalker
-
-
-
-#include "gameplay\loadouts\monolith_base.ltx"
-#include "gameplay\loadouts\monolith_tier_2.ltx"
-[spawn] \n
-#include "gameplay\supplies\character_items.xml"
-#include "gameplay\supplies\character_food.xml"
-#include "gameplay\supplies\character_medical.xml"
-#include "gameplay\supplies\character_drugs.xml"
-
-#include "gameplay\character_criticals.xml"
-#include "gameplay\character_dialogs.xml"
-stalker_terrain
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_greh_3.xml b/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_greh_3.xml
deleted file mode 100644
index 9ce17655..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_greh_3.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-ќпытный сталкер. ƒетальна¤ информаци¤ отсутствует.
-sim_default_greh_3
-greh
-
-
-GENERATE_NAME_stalker
-
-
-
-#include "gameplay\loadouts\monolith_base.ltx"
-#include "gameplay\loadouts\monolith_tier_3.ltx"
-[spawn] \n
-#include "gameplay\supplies\character_items_2.xml"
-#include "gameplay\supplies\character_food_2.xml"
-#include "gameplay\supplies\character_medical_army.xml"
-#include "gameplay\supplies\character_drugs_2.xml"
-
-#include "gameplay\character_criticals.xml"
-#include "gameplay\character_dialogs.xml"
-stalker_terrain
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_greh_4.xml b/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_greh_4.xml
deleted file mode 100644
index 0e774fd9..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_greh_4.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-ќпытный сталкер. ƒетальна¤ информаци¤ отсутствует.
-sim_default_greh_4
-greh
-
-
-GENERATE_NAME_stalker
-
-
-
-#include "gameplay\loadouts\monolith_base.ltx"
-#include "gameplay\loadouts\monolith_tier_4.ltx"
-[spawn] \n
-#include "gameplay\supplies\character_items_2.xml"
-#include "gameplay\supplies\character_food_2.xml"
-#include "gameplay\supplies\character_medical_sci.xml"
-#include "gameplay\supplies\character_drugs_3.xml"
-
-#include "gameplay\character_criticals.xml"
-#include "gameplay\character_dialogs.xml"
-stalker_terrain
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_greh_special.xml b/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_greh_special.xml
deleted file mode 100644
index 8bbb6ff4..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_greh_special.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-ќпытный сталкер. ƒетальна¤ информаци¤ отсутствует.
-greh
-
-
-
-
-
-#include "gameplay\character_criticals.xml"
-stalker_terrain
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_isg_1.xml b/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_isg_1.xml
deleted file mode 100644
index 88f651cf..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_isg_1.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-ќпытный сталкер. ƒетальна¤ информаци¤ отсутствует.
-sim_default_isg_1
-isg
-
-
-GENERATE_NAME_private
-
-
-
-#include "gameplay\loadouts\killer_base.ltx"
-#include "gameplay\loadouts\killer_tier_1.ltx"
-[spawn] \n
-#include "gameplay\supplies\character_food.xml"
-#include "gameplay\supplies\character_medical.xml"
-#include "gameplay\supplies\character_drugs.xml"
-
-#include "gameplay\character_criticals.xml"
-#include "gameplay\character_dialogs.xml"
-stalker_terrain
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_isg_2.xml b/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_isg_2.xml
deleted file mode 100644
index 676f0061..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_isg_2.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-ќпытный сталкер. ƒетальна¤ информаци¤ отсутствует.
-sim_default_isg_2
-isg
-
-
-GENERATE_NAME_sergeant
-
-
-
-#include "gameplay\loadouts\killer_base.ltx"
-#include "gameplay\loadouts\killer_tier_2.ltx"
-[spawn] \n
-#include "gameplay\supplies\character_items.xml"
-#include "gameplay\supplies\character_food.xml"
-#include "gameplay\supplies\character_medical.xml"
-#include "gameplay\supplies\character_drugs.xml"
-
-#include "gameplay\character_criticals.xml"
-#include "gameplay\character_dialogs.xml"
-stalker_terrain
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_isg_3.xml b/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_isg_3.xml
deleted file mode 100644
index 704576e1..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_isg_3.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-ќпытный сталкер. ƒетальна¤ информаци¤ отсутствует.
-sim_default_isg_3
-isg
-
-
-GENERATE_NAME_senior_sergeant
-
-
-
-#include "gameplay\loadouts\killer_base.ltx"
-#include "gameplay\loadouts\killer_tier_3.ltx"
-[spawn] \n
-#include "gameplay\supplies\character_items_2.xml"
-#include "gameplay\supplies\character_food_2.xml"
-#include "gameplay\supplies\character_medical_army.xml"
-#include "gameplay\supplies\character_drugs_2.xml"
-
-#include "gameplay\character_criticals.xml"
-#include "gameplay\character_dialogs.xml"
-stalker_terrain
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_isg_4.xml b/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_isg_4.xml
deleted file mode 100644
index a481a7ec..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_isg_4.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-ќпытный сталкер. ƒетальна¤ информаци¤ отсутствует.
-sim_default_isg_4
-isg
-
-
-GENERATE_NAME_lieutenant
-
-
-
-#include "gameplay\loadouts\killer_base.ltx"
-#include "gameplay\loadouts\killer_tier_4.ltx"
-[spawn] \n
-#include "gameplay\supplies\character_items_2.xml"
-#include "gameplay\supplies\character_food_2.xml"
-#include "gameplay\supplies\character_medical_army.xml"
-#include "gameplay\supplies\character_drugs_3.xml"
-
-#include "gameplay\character_criticals.xml"
-#include "gameplay\character_dialogs.xml"
-stalker_terrain
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_isg_special.xml b/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_isg_special.xml
deleted file mode 100644
index c1db704b..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_isg_special.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-ќпытный сталкер. ƒетальна¤ информаци¤ отсутствует.
-isg
-
-
-
-
-
-#include "gameplay\character_criticals.xml"
-stalker_terrain
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_killer_0.xml b/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_killer_0.xml
deleted file mode 100644
index f1b45472..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_killer_0.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-ќпытный сталкер. ƒетальна¤ информаци¤ отсутствует.
-sim_default_killer_0
-killer
-
-
-GENERATE_NAME_stalker
-
-
-
-#include "gameplay\loadouts\killer_base.ltx"
-#include "gameplay\loadouts\killer_tier_1.ltx"
-[spawn] \n
-#include "gameplay\supplies\character_food.xml"
-#include "gameplay\supplies\character_medical.xml"
-#include "gameplay\supplies\character_drugs.xml"
-
-#include "gameplay\character_criticals.xml"
-#include "gameplay\character_dialogs.xml"
-stalker_terrain
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_killer_1.xml b/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_killer_1.xml
deleted file mode 100644
index 44695b02..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_killer_1.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-ќпытный сталкер. ƒетальна¤ информаци¤ отсутствует.
-sim_default_killer_1
-killer
-
-
-GENERATE_NAME_stalker
-
-
-
-#include "gameplay\loadouts\killer_base.ltx"
-#include "gameplay\loadouts\killer_tier_1.ltx"
-[spawn] \n
-#include "gameplay\supplies\character_food.xml"
-#include "gameplay\supplies\character_medical.xml"
-#include "gameplay\supplies\character_drugs.xml"
-
-#include "gameplay\character_criticals.xml"
-#include "gameplay\character_dialogs.xml"
-stalker_terrain
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_killer_2.xml b/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_killer_2.xml
deleted file mode 100644
index c83c502f..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_killer_2.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-ќпытный сталкер. ƒетальна¤ информаци¤ отсутствует.
-sim_default_killer_2
-killer
-
-
-GENERATE_NAME_stalker
-
-
-
-#include "gameplay\loadouts\killer_base.ltx"
-#include "gameplay\loadouts\killer_tier_2.ltx"
-[spawn] \n
-#include "gameplay\supplies\character_items.xml"
-#include "gameplay\supplies\character_food.xml"
-#include "gameplay\supplies\character_medical.xml"
-#include "gameplay\supplies\character_drugs.xml"
-
-#include "gameplay\character_criticals.xml"
-#include "gameplay\character_dialogs.xml"
-stalker_terrain
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_killer_3.xml b/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_killer_3.xml
deleted file mode 100644
index 02563930..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_killer_3.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-ќпытный сталкер. ƒетальна¤ информаци¤ отсутствует.
-sim_default_killer_3
-killer
-
-
-GENERATE_NAME_stalker
-
-
-
-#include "gameplay\loadouts\killer_base.ltx"
-#include "gameplay\loadouts\killer_tier_3.ltx"
-[spawn] \n
-#include "gameplay\supplies\character_items_2.xml"
-#include "gameplay\supplies\character_food_2.xml"
-#include "gameplay\supplies\character_medical_army.xml"
-#include "gameplay\supplies\character_drugs_2.xml"
-
-#include "gameplay\character_criticals.xml"
-#include "gameplay\character_dialogs.xml"
-stalker_terrain
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_killer_4.xml b/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_killer_4.xml
deleted file mode 100644
index d3bfaac5..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_killer_4.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-ќпытный сталкер. ƒетальна¤ информаци¤ отсутствует.
-sim_default_killer_4
-killer
-
-
-GENERATE_NAME_stalker
-
-
-
-#include "gameplay\loadouts\killer_base.ltx"
-#include "gameplay\loadouts\killer_tier_4.ltx"
-[spawn] \n
-#include "gameplay\supplies\character_items_2.xml"
-#include "gameplay\supplies\character_food_2.xml"
-#include "gameplay\supplies\character_medical_army.xml"
-#include "gameplay\supplies\character_drugs_3.xml"
-
-#include "gameplay\character_criticals.xml"
-#include "gameplay\character_dialogs.xml"
-stalker_terrain
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_killer_special.xml b/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_killer_special.xml
deleted file mode 100644
index 2bf5e36e..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_killer_special.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-ќпытный сталкер. ƒетальна¤ информаци¤ отсутствует.
-killer
-
-
-
-
-
-#include "gameplay\character_criticals.xml"
-stalker_terrain
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_monolith_0.xml b/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_monolith_0.xml
deleted file mode 100644
index 2a9c77ad..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_monolith_0.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-ќпытный сталкер. ƒетальна¤ информаци¤ отсутствует.
-sim_default_monolith_0
-monolith
-
-
-GENERATE_NAME_stalker
-
-
-
-#include "gameplay\loadouts\monolith_base.ltx"
-#include "gameplay\loadouts\monolith_tier_1.ltx"
-[spawn] \n
-#include "gameplay\supplies\character_items.xml"
-#include "gameplay\supplies\character_food.xml"
-#include "gameplay\supplies\character_medical.xml"
-#include "gameplay\supplies\character_drugs.xml"
-
-#include "gameplay\character_criticals.xml"
-#include "gameplay\character_dialogs.xml"
-stalker_terrain
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_monolith_1.xml b/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_monolith_1.xml
deleted file mode 100644
index 17d72eff..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_monolith_1.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-ќпытный сталкер. ƒетальна¤ информаци¤ отсутствует.
-sim_default_monolith_1
-monolith
-
-
-GENERATE_NAME_stalker
-
-
-
-#include "gameplay\loadouts\monolith_base.ltx"
-#include "gameplay\loadouts\monolith_tier_1.ltx"
-[spawn] \n
-#include "gameplay\supplies\character_items.xml"
-#include "gameplay\supplies\character_food.xml"
-#include "gameplay\supplies\character_medical.xml"
-#include "gameplay\supplies\character_drugs.xml"
-
-#include "gameplay\character_criticals.xml"
-#include "gameplay\character_dialogs.xml"
-stalker_terrain
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_monolith_2.xml b/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_monolith_2.xml
deleted file mode 100644
index 06129260..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_monolith_2.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-ќпытный сталкер. ƒетальна¤ информаци¤ отсутствует.
-sim_default_monolith_2
-monolith
-
-
-GENERATE_NAME_stalker
-
-
-
-#include "gameplay\loadouts\monolith_base.ltx"
-#include "gameplay\loadouts\monolith_tier_2.ltx"
-[spawn] \n
-#include "gameplay\supplies\character_items.xml"
-#include "gameplay\supplies\character_food.xml"
-#include "gameplay\supplies\character_medical.xml"
-#include "gameplay\supplies\character_drugs.xml"
-
-#include "gameplay\character_criticals.xml"
-#include "gameplay\character_dialogs.xml"
-stalker_terrain
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_monolith_3.xml b/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_monolith_3.xml
deleted file mode 100644
index a51eb6c9..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_monolith_3.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-ќпытный сталкер. ƒетальна¤ информаци¤ отсутствует.
-sim_default_monolith_3
-monolith
-
-
-GENERATE_NAME_stalker
-
-
-
-#include "gameplay\loadouts\monolith_base.ltx"
-#include "gameplay\loadouts\monolith_tier_3.ltx"
-[spawn] \n
-#include "gameplay\supplies\character_items_2.xml"
-#include "gameplay\supplies\character_food_2.xml"
-#include "gameplay\supplies\character_medical_army.xml"
-#include "gameplay\supplies\character_drugs_2.xml"
-
-#include "gameplay\character_criticals.xml"
-#include "gameplay\character_dialogs.xml"
-stalker_terrain
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_monolith_4.xml b/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_monolith_4.xml
deleted file mode 100644
index b36b34af..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_monolith_4.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-ќпытный сталкер. ƒетальна¤ информаци¤ отсутствует.
-sim_default_monolith_4
-monolith
-
-
-GENERATE_NAME_stalker
-
-
-
-#include "gameplay\loadouts\monolith_base.ltx"
-#include "gameplay\loadouts\monolith_tier_4.ltx"
-[spawn] \n
-#include "gameplay\supplies\character_items_2.xml"
-#include "gameplay\supplies\character_food_2.xml"
-#include "gameplay\supplies\character_medical_sci.xml"
-#include "gameplay\supplies\character_drugs_3.xml"
-
-#include "gameplay\character_criticals.xml"
-#include "gameplay\character_dialogs.xml"
-stalker_terrain
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_monolith_special.xml b/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_monolith_special.xml
deleted file mode 100644
index 4d637e15..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_monolith_special.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-ќпытный сталкер. ƒетальна¤ информаци¤ отсутствует.
-monolith
-
-
-
-
-
-#include "gameplay\character_criticals.xml"
-stalker_terrain
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_renegade_0.xml b/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_renegade_0.xml
deleted file mode 100644
index 62304c50..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_renegade_0.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-ќпытный сталкер. ƒетальна¤ информаци¤ отсутствует.
-sim_default_renegade_0
-renegade
-
-
-GENERATE_NAME_bandit
-
-
-
-#include "gameplay\loadouts\bandit_base.ltx"
-#include "gameplay\loadouts\bandit_tier_1.ltx"
-[spawn] \n
-#include "gameplay\supplies\character_food.xml"
-#include "gameplay\supplies\character_medical.xml"
-
-#include "gameplay\character_criticals.xml"
-#include "gameplay\character_dialogs.xml"
-stalker_terrain
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_renegade_1.xml b/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_renegade_1.xml
deleted file mode 100644
index ffabbb0a..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_renegade_1.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-ќпытный сталкер. ƒетальна¤ информаци¤ отсутствует.
-sim_default_renegade_1
-renegade
-
-
-GENERATE_NAME_bandit
-
-
-
-#include "gameplay\loadouts\bandit_base.ltx"
-#include "gameplay\loadouts\bandit_tier_1.ltx"
-[spawn] \n
-#include "gameplay\supplies\character_food.xml"
-#include "gameplay\supplies\character_medical.xml"
-
-#include "gameplay\character_criticals.xml"
-#include "gameplay\character_dialogs.xml"
-stalker_terrain
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_renegade_2.xml b/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_renegade_2.xml
deleted file mode 100644
index 622f8972..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_renegade_2.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-ќпытный сталкер. ƒетальна¤ информаци¤ отсутствует.
-sim_default_renegade_2
-renegade
-
-
-GENERATE_NAME_bandit
-
-
-
-#include "gameplay\loadouts\bandit_base.ltx"
-#include "gameplay\loadouts\bandit_tier_2.ltx"
-[spawn] \n
-#include "gameplay\supplies\character_items.xml"
-#include "gameplay\supplies\character_food.xml"
-#include "gameplay\supplies\character_medical.xml"
-#include "gameplay\supplies\character_drugs.xml"
-
-#include "gameplay\character_criticals.xml"
-#include "gameplay\character_dialogs.xml"
-stalker_terrain
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_renegade_special.xml b/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_renegade_special.xml
deleted file mode 100644
index 39cae3a9..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_renegade_special.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-ќпытный сталкер. ƒетальна¤ информаци¤ отсутствует.
-renegade
-
-
-
-
-
-#include "gameplay\character_criticals.xml"
-stalker_terrain
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_stalker_0.xml b/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_stalker_0.xml
deleted file mode 100644
index 62bec81f..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_stalker_0.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-ќпытный сталкер. ƒетальна¤ информаци¤ отсутствует.
-sim_default_stalker_0
-stalker
-
-
-GENERATE_NAME_stalker
-
-
-
-#include "gameplay\loadouts\stalker_base.ltx"
-#include "gameplay\loadouts\stalker_tier_1.ltx"
-[spawn] \n
-#include "gameplay\supplies\character_food.xml"
-#include "gameplay\supplies\character_medical.xml"
-
-#include "gameplay\character_criticals.xml"
-#include "gameplay\character_dialogs.xml"
-stalker_terrain
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_stalker_1.xml b/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_stalker_1.xml
deleted file mode 100644
index 80bce432..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_stalker_1.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-ќпытный сталкер. ƒетальна¤ информаци¤ отсутствует.
-sim_default_stalker_1
-stalker
-
-
-GENERATE_NAME_stalker
-
-
-
-#include "gameplay\loadouts\stalker_base.ltx"
-#include "gameplay\loadouts\stalker_tier_2.ltx"
-[spawn] \n
-#include "gameplay\supplies\character_food.xml"
-#include "gameplay\supplies\character_medical.xml"
-#include "gameplay\supplies\character_drugs.xml"
-
-#include "gameplay\character_criticals.xml"
-#include "gameplay\character_dialogs.xml"
-stalker_terrain
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_stalker_2.xml b/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_stalker_2.xml
deleted file mode 100644
index ee71ecf9..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_stalker_2.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-ќпытный сталкер. ƒетальна¤ информаци¤ отсутствует.
-sim_default_stalker_2
-stalker
-
-
-GENERATE_NAME_stalker
-
-
-
-#include "gameplay\loadouts\stalker_base.ltx"
-#include "gameplay\loadouts\stalker_tier_2.ltx"
-[spawn] \n
-#include "gameplay\supplies\character_items.xml"
-#include "gameplay\supplies\character_food.xml"
-#include "gameplay\supplies\character_medical.xml"
-#include "gameplay\supplies\character_drugs.xml"
-
-#include "gameplay\character_criticals.xml"
-#include "gameplay\character_dialogs.xml"
-stalker_terrain
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_stalker_3.xml b/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_stalker_3.xml
deleted file mode 100644
index 982256d4..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_stalker_3.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-ќпытный сталкер. ƒетальна¤ информаци¤ отсутствует.
-sim_default_stalker_3
-stalker
-
-
-GENERATE_NAME_stalker
-
-
-
-#include "gameplay\loadouts\stalker_base.ltx"
-#include "gameplay\loadouts\stalker_tier_3.ltx"
-[spawn] \n
-#include "gameplay\supplies\character_items_2.xml"
-#include "gameplay\supplies\character_food.xml"
-#include "gameplay\supplies\character_medical.xml"
-#include "gameplay\supplies\character_drugs_2.xml"
-
-#include "gameplay\character_criticals.xml"
-#include "gameplay\character_dialogs.xml"
-stalker_terrain
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_stalker_4.xml b/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_stalker_4.xml
deleted file mode 100644
index 7b855efa..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_stalker_4.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-ќпытный сталкер. ƒетальна¤ информаци¤ отсутствует.
-sim_default_stalker_4
-stalker
-
-
-GENERATE_NAME_stalker
-
-
-
-#include "gameplay\loadouts\stalker_base.ltx"
-#include "gameplay\loadouts\stalker_tier_4.ltx"
-[spawn] \n
-#include "gameplay\supplies\character_items_2.xml"
-#include "gameplay\supplies\character_food_2.xml"
-#include "gameplay\supplies\character_medical.xml"
-#include "gameplay\supplies\character_drugs_3.xml"
-
-#include "gameplay\character_criticals.xml"
-#include "gameplay\character_dialogs.xml"
-stalker_terrain
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_stalker_special.xml b/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_stalker_special.xml
deleted file mode 100644
index b4f320f0..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_stalker_special.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-ќпытный сталкер. ƒетальна¤ информаци¤ отсутствует.
-stalker
-
-
-
-
-
-#include "gameplay\character_criticals.xml"
-stalker_terrain
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_zombied_1.xml b/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_zombied_1.xml
deleted file mode 100644
index 36db4a71..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_zombied_1.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-
-sim_default_zombied_1
-zombied
-0
-
-
-
-
-
-#include "gameplay\loadouts\zombied_base.ltx"
-#include "gameplay\loadouts\zombied_tier_1.ltx"
-[spawn] \n
-#include "gameplay\supplies\character_food.xml"
-#include "gameplay\supplies\character_medical.xml"
-
-#include "gameplay\character_criticals.xml"
-#include "gameplay\character_dialogs.xml"
-stalker_terrain
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_zombied_2.xml b/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_zombied_2.xml
deleted file mode 100644
index 0c8107b2..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_zombied_2.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-
-sim_default_zombied_2
-zombied
-0
-
-
-
-
-
-#include "gameplay\loadouts\zombied_base.ltx"
-#include "gameplay\loadouts\zombied_tier_2.ltx"
-[spawn] \n
-#include "gameplay\supplies\character_items.xml"
-#include "gameplay\supplies\character_food.xml"
-#include "gameplay\supplies\character_medical.xml"
-#include "gameplay\supplies\character_drugs.xml"
-
-#include "gameplay\character_criticals.xml"
-#include "gameplay\character_dialogs.xml"
-stalker_terrain
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_zombied_3.xml b/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_zombied_3.xml
deleted file mode 100644
index dd2daf69..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_zombied_3.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-
-sim_default_zombied_3
-zombied
-0
-
-
-
-
-
-#include "gameplay\loadouts\zombied_base.ltx"
-#include "gameplay\loadouts\zombied_tier_3.ltx"
-[spawn] \n
-#include "gameplay\supplies\character_items_2.xml"
-#include "gameplay\supplies\character_food.xml"
-#include "gameplay\supplies\character_medical.xml"
-#include "gameplay\supplies\character_drugs_2.xml"
-
-#include "gameplay\character_criticals.xml"
-#include "gameplay\character_dialogs.xml"
-stalker_terrain
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_zombied_4.xml b/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_zombied_4.xml
deleted file mode 100644
index 4ae69f96..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/gameplay/profiles/character_desc_zombied_4.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-
-sim_default_zombied_4
-zombied
-0
-
-
-
-
-
-#include "gameplay\loadouts\zombied_base.ltx"
-#include "gameplay\loadouts\zombied_tier_4.ltx"
-[spawn] \n
-#include "gameplay\supplies\character_items_2.xml"
-#include "gameplay\supplies\character_food_2.xml"
-#include "gameplay\supplies\character_medical.xml"
-#include "gameplay\supplies\character_drugs_3.xml"
-
-#include "gameplay\character_criticals.xml"
-#include "gameplay\character_dialogs.xml"
-stalker_terrain
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/items/items/items_endless_night_mutant_spawn_point_AGR.ltx b/mods/Redone Collection_backup/gamedata/configs/items/items/items_endless_night_mutant_spawn_point_AGR.ltx
deleted file mode 100644
index 3a34c912..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/items/items/items_endless_night_mutant_spawn_point_AGR.ltx
+++ /dev/null
@@ -1,21 +0,0 @@
-[pool_agr_night_mutants]
-GroupControlSection = spawn_group
-$spawn = "physics\object"
-$prefetch = 8
-class = O_PHYSIC
-remove_time = 60
-visual = dynamics\light\light_signal.ogf
-fixed_bones = link
-script_binding = bind_physic_object.init
-
-[agr_endless_night_spawn_01]:pool_agr_night_mutants
-custom_data = scripts\agroprom\agr_endless_night_spawn_logic_1.ltx
-story_id = agr_endless_night_spawn_01
-
-[agr_endless_night_spawn_02]:pool_agr_night_mutants
-custom_data = scripts\agroprom\agr_endless_night_spawn_logic_2.ltx
-story_id = agr_endless_night_spawn_02
-
-[agr_endless_night_spawn_03]:pool_agr_night_mutants
-custom_data = scripts\agroprom\agr_endless_night_spawn_logic_3.ltx
-story_id = agr_endless_night_spawn_03
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/items/items/items_endless_night_mutant_spawn_point_BAR.ltx b/mods/Redone Collection_backup/gamedata/configs/items/items/items_endless_night_mutant_spawn_point_BAR.ltx
deleted file mode 100644
index 73b45b34..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/items/items/items_endless_night_mutant_spawn_point_BAR.ltx
+++ /dev/null
@@ -1,21 +0,0 @@
-[pool_bar_night_mutants]
-GroupControlSection = spawn_group
-$spawn = "physics\object"
-$prefetch = 8
-class = O_PHYSIC
-remove_time = 60
-visual = dynamics\light\light_signal.ogf
-fixed_bones = link
-script_binding = bind_physic_object.init
-
-[bar_endless_night_spawn_01]:pool_bar_night_mutants
-custom_data = scripts\bar\bar_endless_night_spawn_logic_1.ltx
-story_id = bar_endless_night_spawn_01
-
-[bar_endless_night_spawn_02]:pool_bar_night_mutants
-custom_data = scripts\bar\bar_endless_night_spawn_logic_2.ltx
-story_id = bar_endless_night_spawn_02
-
-[bar_endless_night_spawn_03]:pool_bar_night_mutants
-custom_data = scripts\bar\bar_endless_night_spawn_logic_3.ltx
-story_id = bar_endless_night_spawn_03
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/items/items/items_endless_night_mutant_spawn_point_CIT.ltx b/mods/Redone Collection_backup/gamedata/configs/items/items/items_endless_night_mutant_spawn_point_CIT.ltx
deleted file mode 100644
index 2b109adb..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/items/items/items_endless_night_mutant_spawn_point_CIT.ltx
+++ /dev/null
@@ -1,21 +0,0 @@
-[pool_cit_night_mutants]
-GroupControlSection = spawn_group
-$spawn = "physics\object"
-$prefetch = 8
-class = O_PHYSIC
-remove_time = 60
-visual = dynamics\light\light_signal.ogf
-fixed_bones = link
-script_binding = bind_physic_object.init
-
-[cit_endless_night_spawn_01]:pool_cit_night_mutants
-custom_data = scripts\dead_city\cit_endless_night_spawn_logic_1.ltx
-story_id = cit_endless_night_spawn_01
-
-[cit_endless_night_spawn_02]:pool_cit_night_mutants
-custom_data = scripts\dead_city\cit_endless_night_spawn_logic_2.ltx
-story_id = cit_endless_night_spawn_02
-
-[cit_endless_night_spawn_03]:pool_cit_night_mutants
-custom_data = scripts\dead_city\cit_endless_night_spawn_logic_3.ltx
-story_id = cit_endless_night_spawn_03
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/items/items/items_endless_night_mutant_spawn_point_DS.ltx b/mods/Redone Collection_backup/gamedata/configs/items/items/items_endless_night_mutant_spawn_point_DS.ltx
deleted file mode 100644
index 40be2111..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/items/items/items_endless_night_mutant_spawn_point_DS.ltx
+++ /dev/null
@@ -1,21 +0,0 @@
-[pool_ds_night_mutants]
-GroupControlSection = spawn_group
-$spawn = "physics\object"
-$prefetch = 8
-class = O_PHYSIC
-remove_time = 60
-visual = dynamics\light\light_signal.ogf
-fixed_bones = link
-script_binding = bind_physic_object.init
-
-[ds_endless_night_spawn_01]:pool_ds_night_mutants
-custom_data = scripts\darkscape\ds_endless_night_spawn_logic_1.ltx
-story_id = ds_endless_night_spawn_01
-
-[ds_endless_night_spawn_02]:pool_ds_night_mutants
-custom_data = scripts\darkscape\ds_endless_night_spawn_logic_2.ltx
-story_id = ds_endless_night_spawn_02
-
-[ds_endless_night_spawn_03]:pool_ds_night_mutants
-custom_data = scripts\darkscape\ds_endless_night_spawn_logic_3.ltx
-story_id = ds_endless_night_spawn_03
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/items/items/items_endless_night_mutant_spawn_point_ESC.ltx b/mods/Redone Collection_backup/gamedata/configs/items/items/items_endless_night_mutant_spawn_point_ESC.ltx
deleted file mode 100644
index 60bcccf8..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/items/items/items_endless_night_mutant_spawn_point_ESC.ltx
+++ /dev/null
@@ -1,21 +0,0 @@
-[pool_esc_night_mutants]
-GroupControlSection = spawn_group
-$spawn = "physics\object"
-$prefetch = 8
-class = O_PHYSIC
-remove_time = 60
-visual = dynamics\light\light_signal.ogf
-fixed_bones = link
-script_binding = bind_physic_object.init
-
-[esc_endless_night_spawn_01]:pool_esc_night_mutants
-custom_data = scripts\escape\esc_endless_night_spawn_logic_1.ltx
-story_id = esc_endless_night_spawn_01
-
-[esc_endless_night_spawn_02]:pool_esc_night_mutants
-custom_data = scripts\escape\esc_endless_night_spawn_logic_2.ltx
-story_id = esc_endless_night_spawn_02
-
-[esc_endless_night_spawn_03]:pool_esc_night_mutants
-custom_data = scripts\escape\esc_endless_night_spawn_logic_3.ltx
-story_id = esc_endless_night_spawn_03
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/items/items/items_endless_night_mutant_spawn_point_GAR.ltx b/mods/Redone Collection_backup/gamedata/configs/items/items/items_endless_night_mutant_spawn_point_GAR.ltx
deleted file mode 100644
index dcf9fc55..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/items/items/items_endless_night_mutant_spawn_point_GAR.ltx
+++ /dev/null
@@ -1,21 +0,0 @@
-[pool_gar_night_mutants]
-GroupControlSection = spawn_group
-$spawn = "physics\object"
-$prefetch = 8
-class = O_PHYSIC
-remove_time = 60
-visual = dynamics\light\light_signal.ogf
-fixed_bones = link
-script_binding = bind_physic_object.init
-
-[gar_endless_night_spawn_01]:pool_gar_night_mutants
-custom_data = scripts\garbage\gar_endless_night_spawn_logic_1.ltx
-story_id = gar_endless_night_spawn_01
-
-[gar_endless_night_spawn_02]:pool_gar_night_mutants
-custom_data = scripts\garbage\gar_endless_night_spawn_logic_2.ltx
-story_id = gar_endless_night_spawn_02
-
-[gar_endless_night_spawn_03]:pool_gar_night_mutants
-custom_data = scripts\garbage\gar_endless_night_spawn_logic_3.ltx
-story_id = gar_endless_night_spawn_03
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/items/items/items_endless_night_mutant_spawn_point_MAR.ltx b/mods/Redone Collection_backup/gamedata/configs/items/items/items_endless_night_mutant_spawn_point_MAR.ltx
deleted file mode 100644
index c29cb837..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/items/items/items_endless_night_mutant_spawn_point_MAR.ltx
+++ /dev/null
@@ -1,21 +0,0 @@
-[pool_mar_night_mutants]
-GroupControlSection = spawn_group
-$spawn = "physics\object"
-$prefetch = 8
-class = O_PHYSIC
-remove_time = 60
-visual = dynamics\light\light_signal.ogf
-fixed_bones = link
-script_binding = bind_physic_object.init
-
-[mar_endless_night_spawn_01]:pool_mar_night_mutants
-custom_data = scripts\marsh\mar_endless_night_spawn_logic_1.ltx
-story_id = mar_endless_night_spawn_01
-
-[mar_endless_night_spawn_02]:pool_mar_night_mutants
-custom_data = scripts\marsh\mar_endless_night_spawn_logic_2.ltx
-story_id = mar_endless_night_spawn_02
-
-[mar_endless_night_spawn_03]:pool_mar_night_mutants
-custom_data = scripts\marsh\mar_endless_night_spawn_logic_3.ltx
-story_id = mar_endless_night_spawn_03
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/items/items/items_endless_night_mutant_spawn_point_MIL.ltx b/mods/Redone Collection_backup/gamedata/configs/items/items/items_endless_night_mutant_spawn_point_MIL.ltx
deleted file mode 100644
index 11be8584..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/items/items/items_endless_night_mutant_spawn_point_MIL.ltx
+++ /dev/null
@@ -1,21 +0,0 @@
-[pool_mil_night_mutants]
-GroupControlSection = spawn_group
-$spawn = "physics\object"
-$prefetch = 8
-class = O_PHYSIC
-remove_time = 60
-visual = dynamics\light\light_signal.ogf
-fixed_bones = link
-script_binding = bind_physic_object.init
-
-[mil_endless_night_spawn_01]:pool_mil_night_mutants
-custom_data = scripts\military\mil_endless_night_spawn_logic_1.ltx
-story_id = mil_endless_night_spawn_01
-
-[mil_endless_night_spawn_02]:pool_mil_night_mutants
-custom_data = scripts\military\mil_endless_night_spawn_logic_2.ltx
-story_id = mil_endless_night_spawn_02
-
-[mil_endless_night_spawn_03]:pool_mil_night_mutants
-custom_data = scripts\military\mil_endless_night_spawn_logic_3.ltx
-story_id = mil_endless_night_spawn_03
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/items/items/items_endless_night_mutant_spawn_point_ROS.ltx b/mods/Redone Collection_backup/gamedata/configs/items/items/items_endless_night_mutant_spawn_point_ROS.ltx
deleted file mode 100644
index c139e18b..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/items/items/items_endless_night_mutant_spawn_point_ROS.ltx
+++ /dev/null
@@ -1,21 +0,0 @@
-[pool_ros_night_mutants]
-GroupControlSection = spawn_group
-$spawn = "physics\object"
-$prefetch = 8
-class = O_PHYSIC
-remove_time = 60
-visual = dynamics\light\light_signal.ogf
-fixed_bones = link
-script_binding = bind_physic_object.init
-
-[ros_endless_night_spawn_01]:pool_ros_night_mutants
-custom_data = scripts\rostok\ros_endless_night_spawn_logic_1.ltx
-story_id = ros_endless_night_spawn_01
-
-[ros_endless_night_spawn_02]:pool_ros_night_mutants
-custom_data = scripts\rostok\ros_endless_night_spawn_logic_2.ltx
-story_id = ros_endless_night_spawn_02
-
-[ros_endless_night_spawn_03]:pool_ros_night_mutants
-custom_data = scripts\rostok\ros_endless_night_spawn_logic_3.ltx
-story_id = ros_endless_night_spawn_03
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/items/items/items_endless_night_mutant_spawn_point_TRC.ltx b/mods/Redone Collection_backup/gamedata/configs/items/items/items_endless_night_mutant_spawn_point_TRC.ltx
deleted file mode 100644
index 10c0f64e..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/items/items/items_endless_night_mutant_spawn_point_TRC.ltx
+++ /dev/null
@@ -1,21 +0,0 @@
-[pool_trc_night_mutants]
-GroupControlSection = spawn_group
-$spawn = "physics\object"
-$prefetch = 8
-class = O_PHYSIC
-remove_time = 60
-visual = dynamics\light\light_signal.ogf
-fixed_bones = link
-script_binding = bind_physic_object.init
-
-[trc_endless_night_spawn_01]:pool_trc_night_mutants
-custom_data = scripts\trucks_cemetery\trc_endless_night_spawn_logic_1.ltx
-story_id = trc_endless_night_spawn_01
-
-[trc_endless_night_spawn_02]:pool_trc_night_mutants
-custom_data = scripts\trucks_cemetery\trc_endless_night_spawn_logic_2.ltx
-story_id = trc_endless_night_spawn_02
-
-[trc_endless_night_spawn_03]:pool_trc_night_mutants
-custom_data = scripts\trucks_cemetery\trc_endless_night_spawn_logic_3.ltx
-story_id = trc_endless_night_spawn_03
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/items/items/items_endless_night_mutant_spawn_point_VAL.ltx b/mods/Redone Collection_backup/gamedata/configs/items/items/items_endless_night_mutant_spawn_point_VAL.ltx
deleted file mode 100644
index f40bb3dd..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/items/items/items_endless_night_mutant_spawn_point_VAL.ltx
+++ /dev/null
@@ -1,21 +0,0 @@
-[pool_val_night_mutants]
-GroupControlSection = spawn_group
-$spawn = "physics\object"
-$prefetch = 8
-class = O_PHYSIC
-remove_time = 60
-visual = dynamics\light\light_signal.ogf
-fixed_bones = link
-script_binding = bind_physic_object.init
-
-[val_endless_night_spawn_01]:pool_val_night_mutants
-custom_data = scripts\darkvalley\val_endless_night_spawn_logic_1.ltx
-story_id = val_endless_night_spawn_01
-
-[val_endless_night_spawn_02]:pool_val_night_mutants
-custom_data = scripts\darkvalley\val_endless_night_spawn_logic_2.ltx
-story_id = val_endless_night_spawn_02
-
-[val_endless_night_spawn_03]:pool_val_night_mutants
-custom_data = scripts\darkvalley\val_endless_night_spawn_logic_3.ltx
-story_id = val_endless_night_spawn_03
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/items/items/items_endless_night_mutant_spawn_point_YAN.ltx b/mods/Redone Collection_backup/gamedata/configs/items/items/items_endless_night_mutant_spawn_point_YAN.ltx
deleted file mode 100644
index a512ccb3..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/items/items/items_endless_night_mutant_spawn_point_YAN.ltx
+++ /dev/null
@@ -1,21 +0,0 @@
-[pool_yan_night_mutants]
-GroupControlSection = spawn_group
-$spawn = "physics\object"
-$prefetch = 8
-class = O_PHYSIC
-remove_time = 60
-visual = dynamics\light\light_signal.ogf
-fixed_bones = link
-script_binding = bind_physic_object.init
-
-[yan_endless_night_spawn_01]:pool_yan_night_mutants
-custom_data = scripts\yantar\yan_endless_night_spawn_logic_1.ltx
-story_id = yan_endless_night_spawn_01
-
-[yan_endless_night_spawn_02]:pool_yan_night_mutants
-custom_data = scripts\yantar\yan_endless_night_spawn_logic_2.ltx
-story_id = yan_endless_night_spawn_02
-
-[yan_endless_night_spawn_03]:pool_yan_night_mutants
-custom_data = scripts\yantar\yan_endless_night_spawn_logic_3.ltx
-story_id = yan_endless_night_spawn_03
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/items/items/items_lc_transition_spawn_point_ROS.ltx b/mods/Redone Collection_backup/gamedata/configs/items/items/items_lc_transition_spawn_point_ROS.ltx
deleted file mode 100644
index 8b5a8e45..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/items/items/items_lc_transition_spawn_point_ROS.ltx
+++ /dev/null
@@ -1,104 +0,0 @@
-[lc_tele_ros_hid]
-GroupControlSection = spawn_group
-$spawn = "physics\object"
-$prefetch = 8
-class = O_PHYSIC
-remove_time = 60
-visual = dynamics\light\light_signal.ogf
-fixed_bones = link
-script_binding = bind_physic_object.init
-custom_data = scripts\rostok\ros_lc_transition_logic_hid.ltx
-
-[lc_ros03_ros04]:lc_tele_ros_hid
-story_id = lc_ros03_ros04
-
-[lc_tele_ros_door_hid]
-GroupControlSection = spawn_group
-$spawn = "physics\object"
-$prefetch = 8
-class = O_PHYSIC
-remove_time = 60
-visual = dynamics\light\light_signal.ogf
-fixed_bones = link
-script_binding = bind_physic_object.init
-custom_data = scripts\rostok\ros_door_transition_logic.ltx
-
-[lc_ros01_ros02]:lc_tele_ros_door_hid
-story_id = lc_ros01_ros02
-
-[lc_ros01_ros02.1]:lc_tele_ros_door_hid
-story_id = lc_ros01_ros02.1
-
-[lc_ros01_ros02.2]:lc_tele_ros_door_hid
-story_id = lc_ros01_ros02.2
-
-[lc_ros01_ros02.3]:lc_tele_ros_door_hid
-story_id = lc_ros01_ros02.3
-
-[lc_ros02_ros01]:lc_tele_ros_door_hid
-story_id = lc_ros02_ros01
-
-[lc_ros02_ros01.1]:lc_tele_ros_door_hid
-story_id = lc_ros02_ros01.1
-
-[lc_ros02_ros01.2]:lc_tele_ros_door_hid
-story_id = lc_ros02_ros01.2
-
-[lc_ros02_ros01.3]:lc_tele_ros_door_hid
-story_id = lc_ros02_ros01.3
-
-[lc_ros02_ros01.4]:lc_tele_ros_door_hid
-story_id = lc_ros02_ros01.4
-
-[lc_ros02_ros01.5]:lc_tele_ros_door_hid
-story_id = lc_ros02_ros01.5
-
-[lc_ros07_ros08]:lc_tele_ros_door_hid
-story_id = lc_ros07_ros08
-
-[lc_ros07_ros08.1]:lc_tele_ros_door_hid
-story_id = lc_ros07_ros08.1
-
-[lc_ros07_ros08.2]:lc_tele_ros_door_hid
-story_id = lc_ros07_ros08.2
-
-[lc_ros07_ros08.3]:lc_tele_ros_door_hid
-story_id = lc_ros07_ros08.3
-
-[lc_ros08_ros07]:lc_tele_ros_door_hid
-story_id = lc_ros08_ros07
-
-[lc_ros08_ros07.1]:lc_tele_ros_door_hid
-story_id = lc_ros08_ros07.1
-
-[lc_ros08_ros07.2]:lc_tele_ros_door_hid
-story_id = lc_ros08_ros07.2
-
-[lc_tele_ros_ladder_hid]
-GroupControlSection = spawn_group
-$spawn = "physics\object"
-$prefetch = 8
-class = O_PHYSIC
-remove_time = 60
-visual = dynamics\light\light_signal.ogf
-fixed_bones = link
-script_binding = bind_physic_object.init
-custom_data = scripts\rostok\ros_climb_transition_logic.ltx
-
-[lc_ros05_ros06]:lc_tele_ros_ladder_hid
-story_id = lc_ros05_ros06
-
-[lc_ros05_ros06.1]:lc_tele_ros_ladder_hid
-story_id = lc_ros05_ros06.1
-
-[lc_ros05_ros06.2]:lc_tele_ros_ladder_hid
-story_id = lc_ros05_ros06.2
-
-[lc_ros06_ros05]:lc_tele_ros_ladder_hid
-story_id = lc_ros06_ros05
-
-[lc_ros06_ros05.1]:lc_tele_ros_ladder_hid
-story_id = lc_ros06_ros05.1
-
-[lc_ros06_ros05.2]:lc_tele_ros_ladder_hid
-story_id = lc_ros06_ros05.2
diff --git a/mods/Redone Collection_backup/gamedata/configs/items/items/items_physic_object_spawn_point_MIL.ltx b/mods/Redone Collection_backup/gamedata/configs/items/items/items_physic_object_spawn_point_MIL.ltx
deleted file mode 100644
index 233b23da..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/items/items/items_physic_object_spawn_point_MIL.ltx
+++ /dev/null
@@ -1,18 +0,0 @@
-[wearhouses_phys_physic_object]
-GroupControlSection = spawn_group
-$spawn = "physics\object"
-class = O_PHYS_S
-remove_time = 60
-script_binding = bind_physic_object.init
-
-[wearhouses_dstr_physic_object]
-GroupControlSection = spawn_group
-$spawn = "physics\destroyable_object"
-class = O_DSTR_S
-remove_time = 60
-script_binding = bind_physic_object.init
-
-[mil_smart_terrain_3_8_psy_field]:wearhouses_dstr_physic_object
-visual = dynamics\box\box_wood_01.ogf
-fixed_bones = link
-
diff --git a/mods/Redone Collection_backup/gamedata/configs/items/items/items_physic_object_spawn_point_ROS.ltx b/mods/Redone Collection_backup/gamedata/configs/items/items/items_physic_object_spawn_point_ROS.ltx
deleted file mode 100644
index 5d320a46..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/items/items/items_physic_object_spawn_point_ROS.ltx
+++ /dev/null
@@ -1,323 +0,0 @@
-[ros_phys_physic_object]
-GroupControlSection = spawn_group
-$spawn = "physics\object"
-class = O_PHYS_S
-remove_time = 60
-script_binding = bind_physic_object.init
-
-[ros_dstr_physic_object]
-GroupControlSection = spawn_group
-$spawn = "physics\destroyable_object"
-class = O_DSTR_S
-remove_time = 60
-script_binding = bind_physic_object.init
-
-[ros_valley_door_1]:ros_phys_physic_object
-visual = dynamics\door\door_metal_220x260_01_r.ogf
-fixed_bones = link
-custom_data = scripts\rostok\ros_door_hidden_logic.ltx
-
-[ros_valley_door_2]:ros_phys_physic_object
-visual = dynamics\door\door_metal_220x260_01_r.ogf
-fixed_bones = link
-custom_data = scripts\rostok\ros_door_hidden_logic.ltx
-
-[ros_roof_door_1]:ros_phys_physic_object
-visual = dynamics\door\door_metal_220x260_01_r.ogf
-fixed_bones = link
-custom_data = scripts\rostok\ros_door_hidden_logic.ltx
-
-[ros_roof_door_2]:ros_phys_physic_object
-visual = dynamics\door\door_metal_220x260_01_r.ogf
-fixed_bones = link
-custom_data = scripts\rostok\ros_door_hidden_logic.ltx
-
-[ros_climb_action_1.1]:ros_phys_physic_object
-visual = dynamics\light\light_signal.ogf
-fixed_bones = link
-custom_data = scripts\rostok\ros_climb_sound_logic.ltx
-
-[ros_climb_action_1.2]:ros_phys_physic_object
-visual = dynamics\light\light_signal.ogf
-fixed_bones = link
-custom_data = scripts\rostok\ros_climb_sound_logic.ltx
-
-[ros_climb_action_1.3]:ros_phys_physic_object
-visual = dynamics\fence\wooden_board_01_2m.ogf
-fixed_bones = link
-custom_data = scripts\rostok\ros_climb_sound_logic.ltx
-
-[ros_climb_action_2.1]:ros_phys_physic_object
-visual = dynamics\light\light_signal.ogf
-fixed_bones = link
-custom_data = scripts\rostok\ros_climb_sound_logic.ltx
-
-[ros_climb_action_2.2]:ros_phys_physic_object
-visual = dynamics\light\light_signal.ogf
-fixed_bones = link
-custom_data = scripts\rostok\ros_climb_sound_logic.ltx
-
-[ros_climb_action_2.3]:ros_phys_physic_object
-visual = dynamics\fence\part\wooden_board_01_2m_part_01.ogf
-fixed_bones = link
-custom_data = scripts\rostok\ros_climb_sound_logic.ltx
-
-[ros_valley_sign_1]:ros_phys_physic_object
-visual = dynamics\decor\sign_stop.ogf
-custom_data = models\objects\ignore_static.ltx
-
-[ros_valley_misc_1]:ros_phys_physic_object
-visual = dynamics\firestation\ognetushitel.ogf
-custom_data = models\objects\ignore_static.ltx
-
-[ros_valley_misc_2]:ros_phys_physic_object
-visual = dynamics\large_trash\truba_bar_rostok.ogf
-fixed_bones = link
-custom_data = models\objects\ignore_static.ltx
-
-[ros_valley_misc_3]:ros_phys_physic_object
-visual = dynamics\large_trash\truba_bar_rostok.ogf
-fixed_bones = link
-custom_data = models\objects\ignore_static.ltx
-
-[ros_valley_misc_4]:ros_phys_physic_object
-visual = dynamics\large_trash\truba_bar_rostok.ogf
-fixed_bones = link
-custom_data = models\objects\ignore_static.ltx
-
-[ros_valley_misc_5]:ros_phys_physic_object
-visual = dynamics\fence\wooden_board_01_2m.ogf
-fixed_bones = link
-custom_data = models\objects\ignore_static.ltx
-
-[ros_valley_misc_6]:ros_phys_physic_object
-visual = dynamics\fence\wooden_board_04.ogf
-fixed_bones = link
-custom_data = models\objects\ignore_static.ltx
-
-[ros_valley_misc_7]:ros_phys_physic_object
-visual = dynamics\fence\wooden_board_04.ogf
-fixed_bones = link
-custom_data = models\objects\ignore_static.ltx
-
-[ros_valley_misc_8]:ros_phys_physic_object
-visual = dynamics\fence\wooden_board_01_2m.ogf
-fixed_bones = link
-custom_data = models\objects\ignore_static.ltx
-
-[ros_valley_box_1]:ros_dstr_physic_object
-visual = dynamics\box\box_wood_01.ogf
-fixed_bones = link
-custom_data = models\objects\ignore_static.ltx
-
-[ros_valley_box_2]:ros_dstr_physic_object
-visual = dynamics\box\box_wood_01.ogf
-fixed_bones = link
-custom_data = models\objects\ignore_static.ltx
-
-[ros_valley_box_3]:ros_dstr_physic_object
-visual = dynamics\box\box_wood_01.ogf
-fixed_bones = link
-custom_data = models\objects\ignore_static.ltx
-
-[ros_valley_box_4]:ros_dstr_physic_object
-visual = dynamics\box\box_wood_01.ogf
-fixed_bones = link
-
-[ros_valley_box_5]:ros_dstr_physic_object
-visual = dynamics\box\box_wood_01.ogf
-fixed_bones = link
-
-[ros_valley_box_6]:ros_dstr_physic_object
-visual = dynamics\box\box_wood_01.ogf
-fixed_bones = link
-
-[ros_valley_box_7]:ros_dstr_physic_object
-visual = dynamics\box\box_wood_01.ogf
-fixed_bones = link
-
-[ros_valley_box_8]:ros_dstr_physic_object
-visual = dynamics\box\box_wood_01.ogf
-fixed_bones = link
-
-[ros_valley_box_9]:ros_dstr_physic_object
-visual = dynamics\box\box_wood_01.ogf
-fixed_bones = link
-
-[ros_valley_box_10]:ros_dstr_physic_object
-visual = dynamics\box\box_wood_01.ogf
-fixed_bones = link
-
-[ros_valley_box_11]:ros_dstr_physic_object
-visual = dynamics\box\box_wood_01.ogf
-fixed_bones = link
-
-[ros_valley_wall_1]:ros_phys_physic_object
-visual = dynamics\scene_objects\hospital\hospital_wooden_board_02.ogf
-fixed_bones = link
-custom_data = models\objects\ignore_static.ltx
-
-[ros_valley_wall_2]:ros_phys_physic_object
-visual = dynamics\scene_objects\hospital\hospital_wooden_board_01.ogf
-fixed_bones = link
-custom_data = models\objects\ignore_static.ltx
-
-[ros_valley_wall_3]:ros_phys_physic_object
-visual = dynamics\scene_objects\hospital\hospital_wooden_board_01.ogf
-fixed_bones = link
-custom_data = models\objects\ignore_static.ltx
-
-[ros_valley_wall_4]:ros_phys_physic_object
-visual = dynamics\scene_objects\hospital\hospital_wooden_board_01.ogf
-fixed_bones = link
-custom_data = models\objects\ignore_static.ltx
-
-[ros_valley_wall_5]:ros_phys_physic_object
-visual = dynamics\scene_objects\hospital\hospital_wooden_board_01.ogf
-fixed_bones = link
-custom_data = models\objects\ignore_static.ltx
-
-[ros_valley_wall_6]:ros_phys_physic_object
-visual = dynamics\scene_objects\hospital\hospital_wooden_board_01.ogf
-fixed_bones = link
-custom_data = models\objects\ignore_static.ltx
-
-[ros_valley_wall_7]:ros_phys_physic_object
-visual = dynamics\scene_objects\hospital\hospital_wooden_board_01.ogf
-fixed_bones = link
-custom_data = models\objects\ignore_static.ltx
-
-[ros_valley_wall_8]:ros_phys_physic_object
-visual = dynamics\scene_objects\hospital\hospital_wooden_board_01.ogf
-fixed_bones = link
-custom_data = models\objects\ignore_static.ltx
-
-[ros_valley_wall_9]:ros_phys_physic_object
-visual = dynamics\scene_objects\hospital\hospital_wooden_board_01.ogf
-fixed_bones = link
-custom_data = models\objects\ignore_static.ltx
-
-[ros_valley_wall_10]:ros_phys_physic_object
-visual = dynamics\scene_objects\hospital\hospital_wooden_board_01.ogf
-fixed_bones = link
-custom_data = models\objects\ignore_static.ltx
-
-[ros_valley_wall_11]:ros_phys_physic_object
-visual = dynamics\scene_objects\hospital\hospital_wooden_board_01.ogf
-fixed_bones = link
-custom_data = models\objects\ignore_static.ltx
-
-[ros_valley_wall_12]:ros_phys_physic_object
-visual = dynamics\scene_objects\hospital\hospital_wooden_board_01.ogf
-fixed_bones = link
-custom_data = models\objects\ignore_static.ltx
-
-[ros_valley_wall_13]:ros_phys_physic_object
-visual = dynamics\scene_objects\hospital\hospital_wooden_board_01.ogf
-fixed_bones = link
-custom_data = models\objects\ignore_static.ltx
-
-[ros_valley_wall_14]:ros_phys_physic_object
-visual = dynamics\scene_objects\hospital\hospital_wooden_board_01.ogf
-fixed_bones = link
-custom_data = models\objects\ignore_static.ltx
-
-[ros_valley_wall_15]:ros_phys_physic_object
-visual = dynamics\scene_objects\hospital\hospital_wooden_board_01.ogf
-fixed_bones = link
-custom_data = models\objects\ignore_static.ltx
-
-[ros_valley_wall_16]:ros_phys_physic_object
-visual = dynamics\scene_objects\hospital\hospital_wooden_board_01.ogf
-fixed_bones = link
-custom_data = models\objects\ignore_static.ltx
-
-[ros_valley_wall_17]:ros_phys_physic_object
-visual = dynamics\scene_objects\hospital\hospital_wooden_board_01.ogf
-fixed_bones = link
-custom_data = models\objects\ignore_static.ltx
-
-[ros_valley_wall_18]:ros_phys_physic_object
-visual = dynamics\scene_objects\hospital\hospital_wooden_board_01.ogf
-fixed_bones = link
-custom_data = models\objects\ignore_static.ltx
-
-[ros_valley_wall_19]:ros_phys_physic_object
-visual = dynamics\scene_objects\hospital\hospital_wooden_board_01.ogf
-fixed_bones = link
-custom_data = models\objects\ignore_static.ltx
-
-[ros_valley_wall_20]:ros_phys_physic_object
-visual = dynamics\scene_objects\hospital\hospital_wooden_board_01.ogf
-fixed_bones = link
-custom_data = models\objects\ignore_static.ltx
-
-[ros_valley_wall_21]:ros_phys_physic_object
-visual = dynamics\scene_objects\hospital\hospital_wooden_board_01.ogf
-fixed_bones = link
-custom_data = models\objects\ignore_static.ltx
-
-[ros_valley_wall_22]:ros_phys_physic_object
-visual = dynamics\scene_objects\hospital\hospital_wooden_board_01.ogf
-fixed_bones = link
-custom_data = models\objects\ignore_static.ltx
-
-[ros_valley_wall_23]:ros_phys_physic_object
-visual = dynamics\scene_objects\hospital\hospital_wooden_board_01.ogf
-fixed_bones = link
-custom_data = models\objects\ignore_static.ltx
-
-[ros_valley_wall_24]:ros_phys_physic_object
-visual = dynamics\scene_objects\hospital\hospital_wooden_board_01.ogf
-fixed_bones = link
-custom_data = models\objects\ignore_static.ltx
-
-[ros_valley_wall_25]:ros_phys_physic_object
-visual = dynamics\fence\wood_fence_1.ogf
-fixed_bones = link
-custom_data = models\objects\ignore_static.ltx
-
-[ros_valley_wall_26]:ros_phys_physic_object
-visual = dynamics\scene_objects\hospital\hospital_fence_01.ogf
-fixed_bones = link
-custom_data = models\objects\ignore_static.ltx
-
-[ros_valley_wall_27]:ros_phys_physic_object
-visual = dynamics\scene_objects\hospital\hospital_fence_01.ogf
-fixed_bones = link
-custom_data = models\objects\ignore_static.ltx
-
-[ros_valley_wall_28]:ros_phys_physic_object
-visual = dynamics\scene_objects\hospital\hospital_fence_01.ogf
-fixed_bones = link
-custom_data = models\objects\ignore_static.ltx
-
-[ros_valley_veh_1]:ros_dstr_physic_object
-visual = dynamics\vehicles\veh_gaz66\veh_gaz_u_01.ogf
-startup_animation = idle
-custom_data = models\objects\ignore_static.ltx
-story_id = ros_valley_veh_1
-
-[ros_valley_veh_2]:ros_dstr_physic_object
-visual = dynamics\vehicles\veh_kavz\veh_kavz_u_01.ogf
-startup_animation = idle
-custom_data = models\objects\ignore_static.ltx
-story_id = ros_valley_veh_2
-
-[ros_valley_veh_3]:ros_dstr_physic_object
-visual = dynamics\vehicles\veh_zaz\veh_zaz_u_01.ogf
-startup_animation = idle
-custom_data = models\objects\ignore_static.ltx
-story_id = red_valley_veh_3
-
-[ros_valley_veh_4]:ros_dstr_physic_object
-visual = dynamics\vehicles\veh_zaz\veh_zaz_u_01.ogf
-startup_animation = idle
-custom_data = models\objects\ignore_static.ltx
-story_id = ros_valley_veh_4
-
-[ros_valley_veh_5]:ros_dstr_physic_object
-visual = dynamics\vehicles\veh_zaz\veh_zaz_u_01.ogf
-startup_animation = idle
-custom_data = models\objects\ignore_static.ltx
-story_id = ros_valley_veh_5
diff --git a/mods/Redone Collection_backup/gamedata/configs/items/items/items_physic_object_spawn_point_YAN.ltx b/mods/Redone Collection_backup/gamedata/configs/items/items/items_physic_object_spawn_point_YAN.ltx
deleted file mode 100644
index c98959f4..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/items/items/items_physic_object_spawn_point_YAN.ltx
+++ /dev/null
@@ -1,102 +0,0 @@
-[yantar_phys_physic_object]
-GroupControlSection = spawn_group
-$spawn = "physics\object"
-class = O_PHYS_S
-remove_time = 60
-script_binding = bind_physic_object.init
-
-[yantar_dstr_physic_object]
-GroupControlSection = spawn_group
-$spawn = "physics\destroyable_object"
-class = O_DSTR_S
-remove_time = 60
-script_binding = bind_physic_object.init
-
-[ecolog_yan_base_rupor]:yantar_dstr_physic_object
-visual = dynamics\el_tehnika\rupor.ogf
-fixed_bones = link
-custom_data = scripts\yantar\yan_ecolog_bunker_rupor.ltx
-
-[ecolog_yan_base_sound]:yantar_dstr_physic_object
-visual = dynamics\el_tehnika\priemnik_gorizont.ogf
-fixed_bones = link
-custom_data = scripts\yantar\yan_ecolog_bunker_sound.ltx
-
-[yan_lx_16_rope_1]:yantar_phys_physic_object
-visual = dynamics\dead_body\trupik_rope.ogf
-fixed_bones = link
-
-[yan_lx_16_rope_2]:yantar_phys_physic_object
-visual = dynamics\dead_body\trupik_rope.ogf
-fixed_bones = link
-
-[yan_lx_16_rope_3]:yantar_phys_physic_object
-visual = dynamics\dead_body\trupik_rope.ogf
-fixed_bones = link
-
-[yan_lx_16_rope_4]:yantar_phys_physic_object
-visual = dynamics\dead_body\trupik_rope.ogf
-fixed_bones = link
-
-[yan_street_box_1]:yantar_dstr_physic_object
-visual = dynamics\box\box_wood_01.ogf
-fixed_bones = link
-
-[yan_street_box_2]:yantar_dstr_physic_object
-visual = dynamics\box\box_wood_01.ogf
-fixed_bones = link
-
-[yan_street_box_3]:yantar_dstr_physic_object
-visual = dynamics\box\box_wood_01.ogf
-fixed_bones = link
-
-[yan_street_box_4]:yantar_dstr_physic_object
-visual = dynamics\box\box_wood_01.ogf
-fixed_bones = link
-
-[yan_street_box_5]:yantar_dstr_physic_object
-visual = dynamics\box\box_wood_01.ogf
-fixed_bones = link
-
-[yan_street_misc_1]:yantar_phys_physic_object
-visual = dynamics\firestation\ognetushitel.ogf
-
-[yan_street_misc_2]:yantar_phys_physic_object
-visual = dynamics\large_trash\truba_bar_rostok.ogf
-custom_data = models\objects\ignore_static.ltx
-
-[yan_street_misc_3]:yantar_phys_physic_object
-visual = dynamics\misc\tech_waste.ogf
-custom_data = models\objects\ignore_static.ltx
-
-[yan_street_misc_4]:yantar_phys_physic_object
-visual = dynamics\fence\wooden_board_01_2m.ogf
-custom_data = models\objects\ignore_static.ltx
-
-[yan_street_misc_5]:yantar_phys_physic_object
-visual = dynamics\fence\wooden_board_04.ogf
-custom_data = models\objects\ignore_static.ltx
-
-[yan_street_veh_1]:yantar_dstr_physic_object
-visual = dynamics\vehicles\veh_uaz\veh_uaz_u_01.ogf
-;startup_animation = idle
-custom_data = models\objects\ignore_static.ltx
-story_id = yan_street_veh_1
-
-[yan_street_veh_2]:yantar_dstr_physic_object
-visual = dynamics\vehicles\veh_uaz\veh_uaz_u_01.ogf
-;startup_animation = idle
-custom_data = models\objects\ignore_static.ltx
-story_id = yan_street_veh_2
-
-[yan_street_veh_3]:yantar_dstr_physic_object
-visual = dynamics\vehicles\veh_kamaz\veh_kamaz_u_01
-;startup_animation = idle
-custom_data = models\objects\ignore_static.ltx
-story_id = yan_street_veh_3
-
-[yan_street_veh_4]:yantar_dstr_physic_object
-visual = dynamics\vehicles\veh_gaz66\veh_gaz_u_01.ogf
-;startup_animation = idle
-custom_data = models\objects\ignore_static.ltx
-story_id = yan_street_veh_4
diff --git a/mods/Redone Collection_backup/gamedata/configs/misc/mod_simulation_objects_props_AGR.ltx b/mods/Redone Collection_backup/gamedata/configs/misc/mod_simulation_objects_props_AGR.ltx
deleted file mode 100644
index 45c3e5e4..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/misc/mod_simulation_objects_props_AGR.ltx
+++ /dev/null
@@ -1,233 +0,0 @@
-;--------- SIMULATION --------
-
-;exit to Yantar
-![agr_smart_terrain_1_2]:default_lair
-sim_avail = true
-ecolog = 1
-stalker = 1
-csky = 1
-
-![agr_smart_terrain_1_3]:default_lair
-sim_avail = true
-resource = 1
-ecolog = 2
-stalker = 0
-csky = 0
-freedom = 0
-
-;bigger base, courtyard
-![agr_smart_terrain_1_6]:default_base
-sim_avail = {+agr_military_colonel_kovalski_dead} false, true
-surge = 1
-army = 1
-lair = 0
-
-;bigger base, gate
-![agr_smart_terrain_1_6_near_1]:default_base
-sim_avail = {+agr_military_colonel_kovalski_dead} false, true
-surge = 1
-army = 1
-
-;bigger base, inside building
-![agr_smart_terrain_1_6_near_2]:default_base
-sim_avail = {+agr_military_colonel_kovalski_dead} false, true
-surge = 1
-army = 1
-army_heli = 1
-
-![agr_smart_terrain_2_2]:default_lair
-sim_avail = true
-dolg = 1
-stalker = 1
-csky = 1
-killer = 1
-
-;smaller base, inside building
-![agr_smart_terrain_4_4]:default_base
-sim_avail = true
-surge = 1
-stalker = 1
-army = 1
-bandit = 1
-renegade = 1
-csky = 1
-ecolog = 1
-
-;smaller base, courtyard
-![agr_smart_terrain_4_4_near_1]:default
-sim_avail = {+agr_military_colonel_kovalski_dead} true, false
-surge = 1
-stalker = 1
-bandit = 1
-csky = 1
-ecolog = 1
-freedom = 1
-killer = 1
-army = 1
-renegade = 1
-
-;smaller base, hole in the fence
-![agr_smart_terrain_4_4_near_2]:default
-sim_avail = {+agr_military_colonel_kovalski_dead} true, false
-surge = 1
-stalker = 1
-bandit = 1
-csky = 1
-ecolog = 1
-freedom = 1
-killer = 1
-army = 1
-renegade = 1
-
-;smaller base, gate
-![agr_smart_terrain_4_4_near_3]:default
-sim_avail = {+agr_military_colonel_kovalski_dead} true, false
-surge = 1
-stalker = 1
-bandit = 1
-csky = 1
-ecolog = 1
-freedom = 1
-killer = 1
-army = 1
-renegade = 1
-
-![agr_smart_terrain_4_6]:default_base
-sim_avail = true
-surge = 1
-army = 2
-
-![agr_smart_terrain_5_2]:default
-sim_avail = true
-dolg = 1
-stalker = 1
-territory = 5
-zoo_monster = 5
-monster = 5
-monster_predatory_day = 5
-monster_predatory_night = 5
-monster_vegetarian = 5
-monster_zombied_day = 5
-monster_zombied_night = 5
-monster_special = 5
-
-;camp near tunnel
-![agr_smart_terrain_5_3]:default_lair
-sim_avail = true
-
-![agr_smart_terrain_5_4]:default_lair
-sim_avail = true
-army = 1
-
-![agr_smart_terrain_5_7]:default
-sim_avail = true
-csky = 0
-dolg = 0
-stalker = 0
-army = 1
-ecolog = 1
-territory = 5
-zoo_monster = 5
-monster = 5
-monster_predatory_day = 5
-monster_predatory_night = 5
-monster_vegetarian = 5
-monster_zombied_day = 5
-monster_zombied_night = 5
-monster_special = 5
-
-;tunnel
-![agr_smart_terrain_6_4]:default_base
-sim_avail = true
-surge = 1
-stalker = 1
-ecolog = 1
-csky = 1
-bandit = 1
-renegade = 1
-zombied = 0
-
-![agr_smart_terrain_6_6]:default
-sim_avail = true
-lair = 5
-territory = 5
-zoo_monster = 5
-monster = 5
-monster_predatory_day = 5
-monster_predatory_night = 5
-monster_vegetarian = 5
-monster_zombied_day = 5
-monster_zombied_night = 5
-
-; camp at level changer to garbage
-; TODO disable/replace bugged jobs
-![agr_smart_terrain_7_4]:default_lair
-sim_avail = true
-stalker = 0
-army = 1
-bandit = 0
-
-![agr_smart_terrain_7_5]:default_lair
-sim_avail = true
-army = 1
-dolg = 1
-stalker = 1
-csky = 1
-bandit = 1
-
-;--------- AGROPROM UNDERGROUND SMART TERRAINS --------
-
-![agr_u_bandits]:default
-sim_avail = {+strelok_notes} true, false
-lair = 1
-stalker = 1
-army = 2
-bandit = 2
-all = 0
-
-![agr_u_bloodsucker]:default_lair
-sim_avail = {+strelok_notes} true, false
-dolg = 1
-bandit = 1
-all = 0
-
-![agr_u_bloodsucker_2]:default_lair
-sim_avail = {+strelok_notes} true, false
-territory = 1
-stalker = 2
-army = 2
-bandit = 2
-zombied = 0
-all = 0
-
-![agr_u_monsters]:default
-sim_avail = {+strelok_notes} true, false
-stalker = 1
-army = 2
-dolg = 2
-bandit = 2
-ecolog = 2
-zombied = 0
-all = 0
-lair = 5
-territory = 5
-zoo_monster = 5
-monster = 5
-monster_predatory_day = 5
-monster_predatory_night = 5
-monster_vegetarian = 5
-monster_zombied_day = 5
-monster_zombied_night = 5
-monster_special = 5
-
-![agr_u_soldiers]:default_territory
-sim_avail = true ;{+agr_military_colonel_kovalski_dead} true, false
-stalker = 0
-army = 0
-dolg = 0
-bandit = 0
-ecolog = 0
-csky = 0
-renegade = 0
-zombied = 0
-all = 0
diff --git a/mods/Redone Collection_backup/gamedata/configs/misc/mod_simulation_objects_props_BAR.ltx b/mods/Redone Collection_backup/gamedata/configs/misc/mod_simulation_objects_props_BAR.ltx
deleted file mode 100644
index 766c08d3..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/misc/mod_simulation_objects_props_BAR.ltx
+++ /dev/null
@@ -1,55 +0,0 @@
-;--------- SIMULATION --------
-
-![bar_zastava_dogs_lair]:default_lair
-sim_avail = {+faction_base_defense_active} false, true
-territory = 0
-dolg = 0
-stalker = 0
-
-![bar_zastava_dogs_lair_2]:default_lair
-sim_avail = {+faction_base_defense_active} false, true
-territory = 0
-dolg = 0
-stalker = 0
-
-![bar_dolg_bunker]:default_base
-sim_avail = {+bar_dolg_leader_dead} true, false
-surge = 1
-freedom = 5
-dolg = 0
-lair = 1
-territory = 5
-zoo_monster = 5
-monster = 5
-monster_predatory_day = 5
-monster_predatory_night = 5
-monster_vegetarian = 5
-monster_zombied_day = 5
-monster_zombied_night = 5
-monster_special = 5
-
-![bar_dolg_general]:default_base
-sim_avail = {+bar_dolg_leader_dead} false, true
-surge = 1
-dolg = 5
-
-![bar_visitors]:default_base
-sim_avail = {+bar_stalker_barman_dead} false, true
-surge = 1
-stalker = 1
-csky = 1
-ecolog = 1
-dolg = 1
-
-;unique smarties, sim after guards die
-![bar_zastava]:default_lair
-sim_avail = {+bar_dolg_leader_dead} true, false ;{!squad_exist(bar_duty_security_squad_leader_squad)}
-surge = 1
-dolg = 0
-lair = 1
-
-![bar_zastava_2]:default_lair
-sim_avail = {+bar_dolg_leader_dead} true, false ;{!squad_exist(bar_zastava_2_commander_squad)}
-surge = 1
-dolg = 0
-lair = 1
diff --git a/mods/Redone Collection_backup/gamedata/configs/misc/mod_simulation_objects_props_CIT.ltx b/mods/Redone Collection_backup/gamedata/configs/misc/mod_simulation_objects_props_CIT.ltx
deleted file mode 100644
index 036e00c6..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/misc/mod_simulation_objects_props_CIT.ltx
+++ /dev/null
@@ -1,94 +0,0 @@
-;--------- SIMULATION --------
-
-![cit_bandits]:default_base
-sim_avail = {+cit_killers_aslan_dead +cit_killers_dushman_dead} true, false
-surge = 1
-stalker = 2
-bandit = 2
-csky = 2
-killer = 0
-dolg = 2
-army = 2
-monolith = 2
-greh = 2
-zombied = 1
-
-![cit_bandits_2]:default_base
-sim_avail = {+cit_killers_aslan_dead +cit_killers_dushman_dead} true, false
-surge = 1
-stalker = 2
-bandit = 2
-csky = 2
-killer = 0
-dolg = 2
-army = 2
-monolith = 2
-greh = 2
-zombied = 1
-
-![cit_kanaliz1]:default_lair
-sim_avail = true
-lair = 5
-territory = 5
-zoo_monster = 5
-monster = 5
-monster_predatory_day = 5
-monster_predatory_night = 5
-monster_vegetarian = 5
-monster_zombied_day = 1
-monster_zombied_night = 1
-monster_special = 5
-
-![cit_kanaliz2]:default_lair
-sim_avail = true
-lair = 5
-territory = 5
-zoo_monster = 5
-monster = 5
-monster_predatory_day = 5
-monster_predatory_night = 5
-monster_vegetarian = 5
-monster_zombied_day = 1
-monster_zombied_night = 1
-monster_special = 5
-
-![cit_killers]:default_base
-sim_avail = true
-surge = 1
-killer = 5
-
-![cit_killers_2]:default_base
-sim_avail = {+cit_killers_aslan_dead +cit_killers_dushman_dead} true, false
-surge = 1
-stalker = 2
-bandit = 2
-csky = 2
-killer = 0
-dolg = 2
-army = 2
-monolith = 2
-greh = 2
-zombied = 1
-
-![cit_killers_vs_bandits]:default_base ;broken npc path finding
-sim_avail = true
-lair = 0
-surge = 1
-bandit = 0
-army = 0
-killer = 0
-monolith = 0
-zombied = 0
-
-; bugged npc jobs/nothing in here, use only for mutants
-![zombie_smart_ds_mlr_1]:weak_lair
-sim_avail = true
-monster_zombied_day = 5
-monster_zombied_night = 5
-
-; bugged npc jobs, use only for mutants
-![zombie_smart_ds_mlr_2]:weak_lair
-sim_avail = true
-monster_zombied_day = 5
-monster_zombied_night = 5
-zombied = 1
diff --git a/mods/Redone Collection_backup/gamedata/configs/misc/mod_simulation_objects_props_DS.ltx b/mods/Redone Collection_backup/gamedata/configs/misc/mod_simulation_objects_props_DS.ltx
deleted file mode 100644
index 0ebbda5d..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/misc/mod_simulation_objects_props_DS.ltx
+++ /dev/null
@@ -1,86 +0,0 @@
-;--------- SIMULATION --------
-;farmhouse
-![ds2_domik_st]:default_base
-sim_avail = {+lttz_hb_spawned_ds_isg_leader_squad -lttz_hb_removed_ds_isg_leader_squad} false, true
-surge = 1
-stalker = 1
-csky = 1
-bandit = 1
-ecolog = 1
-dolg = 1
-killer = 1
-army = 1
-renegade = 1
-isg = 1
-
-;camp under rocks
-![ds2_lager_st]:default_base
-sim_avail = true
-surge = 1
-bandit = 1
-renegade = 1
-freedom = 0
-stalker = 0
-killer = 1
-dolg = 0
-isg = 1
-army = 1
-
-![ds2_st_dogs]:default_lair
-sim_avail = true
-
-![ds2_st_hoofs]:weak_lair
-sim_avail = true
-
-![ds_boars_nest]:weak_lair
-sim_avail = true
-
-![ds_deb1]:weak_lair
-sim_avail = true
-surge = 1
-
-![ds_grverfer2]:weak_lair
-sim_avail = true
-surge = 1
-stalker = 0
-
-![ds_kem1]:weak_lair
-sim_avail = true
-surge = 1
-
-;fuel station
-![ds_kem2]:default_base
-sim_avail = true
-surge = 1
-army = 1
-army_heli = 1
-
-![ds_kem3]:default_lair
-sim_avail = true
-surge = 1
-killer = 1
-bandit = 1
-renegade = 1
-stalker = 1
-army = 1
-
-![ds_ptr]:default_base
-sim_avail = true
-surge = 1
-bandit = 1
-renegade = 1
-killer = 1
-stalker = 1
-army = 1
-
-![ds_ptr2]:weak_lair
-sim_avail = true
-surge = 1
-
-![ds_ptr3]:weak_lair
-sim_avail = true
-surge = 1
-
-![ds_ptr4]:weak_lair
-sim_avail = true
-surge = 1
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/misc/mod_simulation_objects_props_ESC.ltx b/mods/Redone Collection_backup/gamedata/configs/misc/mod_simulation_objects_props_ESC.ltx
deleted file mode 100644
index 9ce04169..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/misc/mod_simulation_objects_props_ESC.ltx
+++ /dev/null
@@ -1,169 +0,0 @@
-;--------- SIMULATION --------
-
-![esc_smart_terrain_1_11]:default_resource
-sim_avail = true
-stalker = 1
-csky = 1
-ecolog = 1
-
-;novice camp
-![esc_smart_terrain_2_12]:default_base
-sim_avail = true
-surge = 1
-stalker = 1
-csky = 1
-ecolog = 1
-monolith = 0
-army = 0
-killer = 0
-lair = 0
-
-![esc_smart_terrain_2_14]:default
-sim_avail = true
-territory = 1
-
-![esc_smart_terrain_3_7]:weak_lair
-sim_avail = true
-stalker = 0
-bandit = 1
-csky = 0
-renegade = 1
-
-;military base
-![esc_smart_terrain_3_16]:default_base
-sim_avail = true
-surge = 1
-army_heli = 1
-army = 0
-
-![esc_smart_terrain_4_9]:default
-sim_avail = true
-surge = 1
-bandit = 0
-stalker = 0
-
-![esc_smart_terrain_4_11]:weak_lair
-sim_avail = true
-stalker = 1
-monster = 1
-monster_vegetarian = 1
-
-![esc_smart_terrain_4_13]:default
-sim_avail = true
-territory = 1
-
-;cordon-garbage building
-![esc_smart_terrain_5_2]:default_base
-sim_avail = true
-surge = 1
-army_heli = 1
-army = 5
-stalker = 0
-bandit = 0
-
-![esc_smart_terrain_5_4]:weak_lair
-sim_avail = true
-
-![esc_smart_terrain_5_6]:weak_lair
-sim_avail = true
-
-
-
-;farmhouse
-![esc_smart_terrain_5_7]:default_base
-sim_avail = true
-surge = 1
-stalker = 1
-csky = 1
-bandit = 0
-
-;mill
-![esc_smart_terrain_5_9]:default
-sim_avail = true
-surge = 1
-territory = 1
-bandit = 0
-freedom = 0
-killer = 0
-army = 2
-
-![esc_smart_terrain_5_12]:weak_lair
-sim_avail = true
-stalker = 0
-
-;fox house
-![esc_smart_terrain_6_6]:default_lair
-sim_avail = true
-surge = 1
-bandit = 1
-stalker = 1
-
-;ruined rail bridge
-![esc_smart_terrain_6_8]:default
-sim_avail = true
-surge = 1
-territory = 1
-all = 0
-army = 0
-bandit = 0
-
-;car repair
-![esc_smart_terrain_7_11]:default_base
-sim_avail = true
-surge = 1
-bandit = 1
-stalker = 0
-
-![esc_smart_terrain_8_10]:default_lair
-sim_avail = true
-lair = 5
-territory = 5
-zoo_monster = 5
-monster = 5
-monster_predatory_day = 5
-monster_predatory_night = 5
-monster_vegetarian = 5
-monster_zombied_day = 5
-monster_zombied_night = 5
-monster_special = 5
-
-![esc_smart_terrain_8_9]:default_lair
-sim_avail = true
-stalker = 0
-lair = 5
-territory = 5
-zoo_monster = 5
-monster = 5
-monster_predatory_day = 5
-monster_predatory_night = 5
-monster_vegetarian = 5
-monster_zombied_day = 5
-monster_zombied_night = 5
-monster_special = 5
-
-![esc_smart_terrain_9_7]:default_lair
-sim_avail = true
-lair = 5
-territory = 5
-zoo_monster = 5
-monster = 5
-monster_predatory_day = 5
-monster_predatory_night = 5
-monster_vegetarian = 5
-monster_zombied_day = 5
-monster_zombied_night = 5
-monster_special = 5
-
-![esc_smart_terrain_9_10]:default_base
-sim_avail = true
-bandit = 1
-lair = 1
-territory = 1
-zoo_monster = 1
-monster = 1
-monster_predatory_day = 5
-monster_predatory_night = 5
-monster_vegetarian = 1
-monster_zombied_day = 1
-monster_zombied_night = 1
-monster_special = 5
diff --git a/mods/Redone Collection_backup/gamedata/configs/misc/mod_simulation_objects_props_GAR.ltx b/mods/Redone Collection_backup/gamedata/configs/misc/mod_simulation_objects_props_GAR.ltx
deleted file mode 100644
index b98bec5d..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/misc/mod_simulation_objects_props_GAR.ltx
+++ /dev/null
@@ -1,130 +0,0 @@
-;--------- SIMULATION --------
-;exit to Agroprom1
-![gar_smart_terrain_1_5]:weak_lair
-sim_avail = true
-surge = 1
-bandit = 1
-
-;exit to Agroprom2
-![gar_smart_terrain_1_7]:weak_lair
-sim_avail = true
-stalker = 1
-bandit = 1
-dolg = 1
-
-;camp near tunnel
-![gar_smart_terrain_2_4]:weak_lair
-sim_avail = true
-surge = 1
-bandit = 0
-
-;hangar
-![gar_smart_terrain_3_5]:default_base
-sim_avail = true
-surge = 1
-stalker = 1
-bandit = 0
-csky = 1
-ecolog = 1
-dolg = 1
-army = 0
-
-![gar_smart_terrain_3_7]:default_resource
-sim_avail = true
-stalker = 0
-ecolog = 2
-army = 2
-
-![gar_smart_terrain_4_2]:default_lair
-sim_avail = true
-stalker = 0
-
-![gar_smart_terrain_4_5]:default
-sim_avail = true
-stalker = 1
-bandit = 1
-
-;outpost to Bar
-![gar_smart_terrain_5_2]:default_base
-sim_avail = true
-surge = 1
-stalker = 3
-bandit = 0
-csky = 3
-ecolog = 3
-freedom = 0
-killer = 0
-dolg = 1
-;monolith = 1
-
-![gar_smart_terrain_5_4]:weak_lair
-sim_avail = true
-
-![gar_smart_terrain_5_5]:weak_lair
-sim_avail = true
-stalker = 1
-
-![gar_smart_terrain_5_6]:default_lair
-sim_avail = true
-resource = 1
-stalker = 0
-bandit = 1
-ecolog = 1
-army = 1
-
-![gar_smart_terrain_5_8]:default_base
-sim_avail = true
-surge = 1
-stalker = 0
-bandit = 1
-army = 2
-
-![gar_smart_terrain_6_1]:default_lair
-sim_avail = true
-lair = 5
-territory = 5
-zoo_monster = 5
-monster = 5
-monster_predatory_day = 5
-monster_predatory_night = 5
-monster_vegetarian = 5
-monster_zombied_day = 5
-monster_zombied_night = 5
-monster_special = 5
-
-;ruined building
-![gar_smart_terrain_6_3]:default_base
-sim_avail = {+gar_baraholka_syoma_dead +gar_baraholka_yurko_dead} false, true
-surge = 1
-stalker = 1
-csky = 1
-
-![gar_smart_terrain_6_6]:default
-sim_avail = true
-lair = 5
-territory = 5
-zoo_monster = 5
-monster = 5
-monster_predatory_day = 5
-monster_predatory_night = 5
-monster_vegetarian = 5
-monster_zombied_day = 5
-monster_zombied_night = 5
-monster_special = 5
-
-![gar_smart_terrain_6_7]:default_lair
-sim_avail = true
-stalker = 0
-resource = 1
-
-![gar_smart_terrain_7_4]:default_lair
-sim_avail = true
-;stalker = 1
-
-![gar_smart_terrain_8_3]:weak_lair
-sim_avail = true
-bandit = 1
-dolg = 1
-
-![gar_smart_terrain_8_5]:default_lair
-sim_avail = true
diff --git a/mods/Redone Collection_backup/gamedata/configs/misc/mod_simulation_objects_props_MAR.ltx b/mods/Redone Collection_backup/gamedata/configs/misc/mod_simulation_objects_props_MAR.ltx
deleted file mode 100644
index 905e125c..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/misc/mod_simulation_objects_props_MAR.ltx
+++ /dev/null
@@ -1,228 +0,0 @@
-;--------- SIMULATION --------
-;unique starting base
-![mar_smart_terrain_base]:default_base
-sim_avail = true
-ecolog = 1
-stalker = 1
-surge = 1
-csky = 1
-
-![mar_smart_terrain_doc]:default_base
-sim_avail = false
-
-![mar_smart_terrain_doc_2]:default_lair
-sim_avail = true
-lair = 1
-zoo_monster = 1
-monster = 1
-monster_predatory_day = 1
-monster_predatory_night = 1
-monster_vegetarian = 1
-monster_zombied_day = 1
-monster_zombied_night = 1
-monster_special = 1
-
-;NW fishing village, bandits
-![mar_smart_terrain_3_3]:default_base
-sim_avail = true
-surge = 1
-bandit = 2
-renegade = 5
-
-![mar_smart_terrain_3_7]:default_lair
-sim_avail = true
-stalker = 0
-csky = 0
-ecolog = 0
-lair = 5
-zoo_monster = 5
-monster = 5
-monster_predatory_day = 5
-monster_predatory_night = 5
-monster_vegetarian = 5
-monster_zombied_day = 5
-monster_zombied_night = 5
-monster_special = 5
-
-
-![mar_smart_terrain_3_10]:weak_lair
-sim_avail = true
-
-![mar_smart_terrain_4_5]:default_base
-sim_avail = true
-surge = 1
-stalker = 0
-bandit = 1
-renegade = 5
-
-![mar_smart_terrain_4_7]:weak_lair
-sim_avail = true
-bandit = 1
-stalker = 1
-renegade = 1
-lair = 5
-zoo_monster = 5
-monster = 5
-monster_predatory_day = 5
-monster_predatory_night = 5
-monster_vegetarian = 5
-monster_zombied_day = 5
-monster_zombied_night = 5
-
-;Center, pumping station
-![mar_smart_terrain_5_8]:default_base
-sim_avail = {+pump_station_defense_task_smart_reserved} false, true
-base = 1
-surge = 1
-territory = 2
-stalker = 1
-bandit = 1
-csky = 2
-killer = 0
-ecolog = 1
-renegade = 2
-army = 0
-
-;South, fishing village
-![mar_smart_terrain_5_12]:default_base
-sim_avail = {+faction_base_defense_active} false, true
-stalker = 1
-surge = 1
-bandit = 0
-csky = 1
-renegade = 1
-
-![mar_smart_terrain_6_4]:weak_lair
-sim_avail = true
-
-![mar_smart_terrain_6_7]:default_lair
-sim_avail = true
-lair = 5
-zoo_monster = 5
-monster = 5
-monster_predatory_day = 5
-monster_predatory_night = 5
-monster_vegetarian = 5
-monster_zombied_day = 5
-monster_zombied_night = 5
-monster_special = 5
-
-![mar_smart_terrain_6_8]:weak_lair
-sim_avail = true
-
-![mar_smart_terrain_6_10]:weak_lair
-sim_avail = true
-
-;South watchtower
-![mar_smart_terrain_6_11]:default_base
-sim_avail = true
-surge = 1
-bandit = 0
-csky = 1
-renegade = 0
-lair = 1
-monster = 0
-monster_predatory_day = 0
-monster_predatory_night = 0
-monster_vegetarian = 0
-
-![mar_smart_terrain_7_3]:weak_lair
-sim_avail = true
-stalker = 1
-bandit = 1
-renegade = 1
-
-![mar_smart_terrain_7_7]:default_lair
-sim_avail = true
-
-![mar_smart_terrain_8_4]:weak_lair
-sim_avail = true
-
-![mar_smart_terrain_8_8]:default_resource
-sim_avail = true
-stalker = 1
-csky = 1
-bandit = 1
-ecolog = 1
-freedom = 0
-army = 1
-renegade = 1
-lair = 1
-zoo_monster = 1
-monster = 1
-monster_predatory_day = 1
-monster_predatory_night = 1
-monster_vegetarian = 1
-monster_zombied_day = 1
-monster_zombied_night = 1
-monster_special = 1
-
-![mar_smart_terrain_8_9]:weak_lair
-sim_avail = true
-stalker = 1
-csky = 1
-bandit = 1
-renegade = 1
-
-;East temple
-![mar_smart_terrain_8_11]:default_base
-sim_avail = true
-surge = 1
-stalker = 1
-bandit = 0
-csky = 1
-ecolog = 2
-renegade = 0
-
-;NE car repair, military
-![mar_smart_terrain_10_5]:default_base
-sim_avail = true
-surge = 1
-csky = 2
-army = 1
-army_heli = 1
-renegade = 2
-
-![mar_smart_terrain_10_7]:weak_lair
-sim_avail = true
-
-![mar_smart_terrain_10_10]:default_resource
-sim_avail = true
-lair = 1
-stalker = 1
-csky = 1
-ecolog = 1
-
-![mar_smart_terrain_11_3]:default_resource
-sim_avail = true
-stalker = 0
-csky = 0
-ecolog = 2
-army = 1
-
-;NE village, exit1 to Escape
-![mar_smart_terrain_11_11]:default_base
-sim_avail = true
-surge = 1
-stalker = 0
-bandit = 2
-csky = 1
-killer = 0
-freedom = 0
-ecolog = 0
-army = 1
-dolg = 0
-renegade = 2
-
-;NE village, exit2 to Escape
-![mar_smart_terrain_12_2]:default_base
-sim_avail = true
-lair = 1
-base = 1
-surge = 1
-stalker = 1
-bandit = 1
-csky = 1
-ecolog = 1
-army = 1
-renegade = 1
diff --git a/mods/Redone Collection_backup/gamedata/configs/misc/mod_simulation_objects_props_MIL.ltx b/mods/Redone Collection_backup/gamedata/configs/misc/mod_simulation_objects_props_MIL.ltx
deleted file mode 100644
index b6e030e6..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/misc/mod_simulation_objects_props_MIL.ltx
+++ /dev/null
@@ -1,194 +0,0 @@
-;--------- SIMULATION --------
-![mil_smart_terrain_2_1]:default_lair
-sim_avail = true
-territory = 1
-zombied = 2
-zoo_monster = 1
-monster = 1
-monster_predatory_day = 1
-monster_predatory_night = 1
-monster_vegetarian = 1
-monster_zombied_day = 5
-monster_zombied_night = 5
-monster_special = 1
-
-;SOC merc outpost to Dead City
-![mil_smart_terrain_2_2]:default_base
-sim_avail = true
-killer = 5
-stalker = 0
-bandit = 0
-csky = 0
-freedom = 0
-dolg = 1
-monolith = 0
-
-
-;SOC empty farmhouse north
-![mil_smart_terrain_2_4]:default_base
-sim_avail = true
-surge = 1
-stalker = 0
-ecolog = 1
-csky = 0
-freedom = 0
-dolg = 0
-killer = 0
-bandit = 0
-renegade = 0
-;monolith = 0
-
-![mil_smart_terrain_2_6]:default_lair
-sim_avail = true
-territory = 1
-monolith = 1
-zombied = 2
-zoo_monster = 1
-monster = 1
-monster_predatory_day = 1
-monster_predatory_night = 1
-monster_vegetarian = 1
-monster_zombied_day = 5
-monster_zombied_night = 5
-monster_special = 1
-
-;SOC bloodsuckers village, Freedom camp
-![mil_smart_terrain_2_10]:default_base
-sim_avail = true
-surge = 1
-bandit = 2
-freedom = 2
-killer = 2
-dolg = 2
-monolith = 0
-
-;SOC Freedom outpost to Radar, barrier
-![mil_smart_terrain_3_8]:default_base
-sim_avail = true
-freedom = 0
-dolg = 0
-monolith = 2
-
-;SOC bloodsuckers village
-![mil_smart_terrain_4_2]:default
-sim_avail = true
-surge = 1
-
-;SOC bloodsuckers village, water tower
-![mil_smart_terrain_4_3]:default_lair
-sim_avail = true
-surge = 1
-territory = 1
-resource = 1
-stalker = 0
-freedom = 0
-zombied = 2
-zoo_monster = 1
-monster = 1
-monster_predatory_day = 1
-monster_predatory_night = 1
-monster_vegetarian = 1
-monster_zombied_day = 5
-monster_zombied_night = 5
-monster_special = 1
-
-![mil_smart_terrain_4_5]:default_base
-sim_avail = true
-surge = 1
-stalker = 0
-freedom = 0
-dolg = 3
-bandit = 0
-monolith = 0
-zombied = 1
-lair = 1
-territory = 1
-zoo_monster = 0
-monster = 0
-monster_predatory_day = 0
-monster_predatory_night = 0
-monster_vegetarian = 0
-monster_zombied_day = 5
-monster_zombied_night = 5
-monster_special = 0
-
-![mil_smart_terrain_4_7]:default_lair
-sim_avail = {+faction_base_defense_active} false, true
-territory = 1
-zombied = 1
-
-;SOC Freedom outpost to Radar, wagon
-![mil_smart_terrain_4_8]:default_base
-sim_avail = true
-surge = 1
-stalker = 1
-freedom = 1
-dolg = 0
-bandit = 0
-monolith = 0
-
-;SOC Duty farm
-![mil_smart_terrain_7_4]:default_base
-sim_avail = {+bar_dolg_leader_dead +bar_dolg_petrenko_dead +mil_freedom_leader_dead} false, true
-surge = 1
-stalker = 0
-freedom = 3
-dolg = 3
-bandit = 0
-monolith = 0
-
-;SOC Freedom base, main
-![mil_smart_terrain_7_7]:default_base
-sim_avail = {+mil_freedom_leader_dead} false, true
-surge = 1
-;stalker = 0
-;csky = 0
-freedom = 5
-dolg = 0
-;bandit = 0
-monolith = 0
-;lair = 0
-
-;SOC Freedom base, entrance
-![mil_smart_terrain_7_8]:default_base
-sim_avail = {+mil_freedom_leader_dead} true, false
-surge = 1
-stalker = 0
-;ecolog = 0
-csky = 0
-freedom = 0
-dolg = 4
-bandit = 0
-monolith = 0
-army = 4
-
-;SOC Freedom base, near kitchen
-![mil_smart_terrain_7_10]:default_base
-sim_avail = {+mil_freedom_leader_dead} true, false
-surge = 1
-stalker = 0
-csky = 0
-freedom = 0
-dolg = 4
-bandit = 0
-monolith = 0
-army = 4
-
-;SOC Freedom base, near sleep barracks
-![mil_smart_terrain_7_12]:default_base
-sim_avail = {+mil_freedom_leader_dead} true, false
-surge = 1
-stalker = 0
-bandit = 0
-csky = 0
-freedom = 0
-dolg = 0
-army = 0
-monolith = 4
-greh = 4
-
-![mil_smart_terrain_8_3]:default
-sim_avail = true
-territory = 1
-freedom = 0
-monolith = 0
diff --git a/mods/Redone Collection_backup/gamedata/configs/misc/mod_simulation_objects_props_POL.ltx b/mods/Redone Collection_backup/gamedata/configs/misc/mod_simulation_objects_props_POL.ltx
deleted file mode 100644
index 968f19e6..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/misc/mod_simulation_objects_props_POL.ltx
+++ /dev/null
@@ -1,134 +0,0 @@
-;--------- SIMULATION --------
-;-- for MLR 6.2
-
-![pol_sim_1]:default
-sim_avail = true
-territory = 0
-surge = 1
-zoo_monster = 1
-monster = 1
-monster_predatory_day = 1
-monster_predatory_night = 1
-monster_vegetarian = 1
-monster_zombied_day = 1
-monster_zombied_night = 1
-monster_special = 1
-
-![pol_smart_terrain_1_1]:default_base
-sim_avail = true
-surge = 1
-zoo_monster = 1
-monster = 1
-monster_predatory_day = 1
-monster_predatory_night = 1
-monster_vegetarian = 1
-monster_zombied_day = 1
-monster_zombied_night = 1
-monster_special = 1
-
-![pol_smart_terrain_1_2]:default
-sim_avail = true
-surge = 1
-zoo_monster = 1
-monster = 1
-monster_predatory_day = 1
-monster_predatory_night = 1
-monster_vegetarian = 1
-monster_zombied_day = 1
-monster_zombied_night = 1
-monster_special = 1
-
-![pol_smart_terrain_1_3]:default_base
-sim_avail = true
-territory = 1
-surge = 0
-resource = 1
-zoo_monster = 1
-monster = 1
-monster_predatory_day = 1
-monster_predatory_night = 1
-monster_vegetarian = 1
-monster_zombied_day = 1
-monster_zombied_night = 1
-monster_special = 1
-
-![pol_smart_terrain_2_1]:default_base
-sim_avail = true
-territory = 0
-surge = 1
-zoo_monster = 1
-monster = 1
-monster_predatory_day = 1
-monster_predatory_night = 1
-monster_vegetarian = 1
-monster_zombied_day = 1
-monster_zombied_night = 1
-monster_special = 1
-
-![pol_smart_terrain_2_2]:default
-sim_avail = true
-territory = 0
-surge = 1
-zoo_monster = 1
-monster = 1
-monster_predatory_day = 1
-monster_predatory_night = 1
-monster_vegetarian = 1
-monster_zombied_day = 1
-monster_zombied_night = 1
-monster_special = 1
-
-;-- for MLR 6.2 (disabled) TODO: fix squads can't build path to Meadow
-;[pol_sim_1]:default_base
-;sim_avail = true
-;territory = 1
-;
-;[pol_smart_terrain_1_1]:default_base
-;sim_avail = true
-;territory = 1
-;surge = 1
-;stalker = 1
-;bandit = 1
-;dolg = 1
-;freedom = 1
-;army = 1
-;
-;[pol_smart_terrain_1_2]:default_base
-;sim_avail = true
-;territory = 1
-;surge = 1
-;stalker = 1
-;bandit = 1
-;dolg = 1
-;freedom = 1
-;army = 1
-;
-;[pol_smart_terrain_1_3]:default_resource
-;sim_avail = true
-;territory = 1
-;surge = 1
-;stalker = 1
-;bandit = 1
-;dolg = 1
-;freedom = 1
-;army = 1
-;
-;[pol_smart_terrain_2_1]:default_lair
-;sim_avail = true
-;territory = 1
-;surge = 1
-;stalker = 1
-;bandit = 1
-;dolg = 1
-;freedom = 1
-;army = 1
-;
-;[pol_smart_terrain_2_2]:default_lair
-;sim_avail = true
-;territory = 1
-;surge = 1
-;stalker = 1
-;bandit = 1
-;dolg = 1
-;freedom = 1
-;army = 1
diff --git a/mods/Redone Collection_backup/gamedata/configs/misc/mod_simulation_objects_props_ROS.ltx b/mods/Redone Collection_backup/gamedata/configs/misc/mod_simulation_objects_props_ROS.ltx
deleted file mode 100644
index e08406fe..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/misc/mod_simulation_objects_props_ROS.ltx
+++ /dev/null
@@ -1,103 +0,0 @@
-;--------- SIMULATION --------
-;sim smarties
-![ros_smart_killers1]:default_base
-sim_avail = true
-surge = 1
-killer = 2
-stalker = 0
-bandit = 1
-dolg = 1
-csky = 0
-army = 0
-
-![ros_smart_monster4]:default
-sim_avail = true
-territory = 0
-resource = 1
-stalker = 1
-ecolog = 1
-dolg = 1
-lair = 5
-territory = 5
-zoo_monster = 5
-monster = 5
-monster_predatory_day = 5
-monster_predatory_night = 5
-monster_vegetarian = 5
-monster_zombied_day = 5
-monster_zombied_night = 5
-monster_special = 5
-
-![ros_smart_monster5]:default
-sim_avail = true
-territory = 0
-stalker = 1
-dolg = 1
-resource = 1
-ecolog = 1
-lair = 5
-territory = 5
-zoo_monster = 5
-monster = 5
-monster_predatory_day = 5
-monster_predatory_night = 5
-monster_vegetarian = 5
-monster_zombied_day = 5
-monster_zombied_night = 5
-monster_special = 5
-
-![ros_smart_monster7]:default
-sim_avail = true
-territory = 1
-resource = 0
-ecolog = 0
-stalker = 0
-
-![ros_smart_poltergeist2]:default_lair
-sim_avail = true
-lair = 5
-territory = 5
-zoo_monster = 5
-monster = 5
-monster_predatory_day = 5
-monster_predatory_night = 5
-monster_vegetarian = 0
-monster_zombied_day = 0
-monster_zombied_night = 0
-monster_special = 0
-
-
-![ros_smart_snork1]:default_lair
-sim_avail = true
-territory = 0
-dolg = 0
-stalker = 0
-lair = 5
-territory = 5
-zoo_monster = 0
-monster = 5
-monster_predatory_day = 5
-monster_predatory_night = 5
-monster_vegetarian = 0
-monster_zombied_day = 0
-monster_zombied_night = 0
-monster_special = 1
-
-![ros_smart_stalker_killers1]:default_base
-sim_avail = true
-surge = 1
-bandits = 1
-csky = 0
-killer = 1
-dolg = 1
-army = 0
-
-![ros_smart_stalker1]:default
-sim_avail = true
-territory = 1
-stalker = 0
-ecolog = 0
-killer = 0
-dolg = 0
-csky = 0
-army = 0
diff --git a/mods/Redone Collection_backup/gamedata/configs/misc/mod_simulation_objects_props_TRC.ltx b/mods/Redone Collection_backup/gamedata/configs/misc/mod_simulation_objects_props_TRC.ltx
deleted file mode 100644
index 563da300..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/misc/mod_simulation_objects_props_TRC.ltx
+++ /dev/null
@@ -1,120 +0,0 @@
-;--------- SIMULATION --------
-;sim smarties
-![trc_sim_1]:default_base
-sim_avail = true
-surge = 1
-stalker = 0
-bandit = 1
-freedom = 1
-dolg = 0
-army = 0
-renegade = 1
-lair = 0
-
-![trc_sim_2]:default_base
-sim_avail = true
-surge = 1
-stalker = 0
-bandit = 1
-freedom = 0
-dolg = 0
-army = 0
-renegade = 1
-
-![trc_sim_3]:default_lair
-sim_avail = true
-dolg = 2
-zombied = 1
-
-![trc_sim_4]:default_lair
-sim_avail = true
-resource = 2
-stalker = 1
-ecolog = 1
-csky = 1
-zombied = 1
-
-![trc_sim_5]:default_lair
-sim_avail = true
-zombied = 1
-
-![trc_sim_6]:default_lair
-sim_avail = true
-surge = 1
-
-![trc_sim_7]:default_lair
-sim_avail = true
-
-![trc_sim_8]:default_lair
-sim_avail = true
-resource = 2
-stalker = 1
-csky = 1
-freedom = 1
-ecolog = 1
-dolg = 1
-zombied = 1
-
-![trc_sim_9]:default_lair
-sim_avail = true
-
-![trc_sim_10]:default_lair
-sim_avail = true
-resource = 1
-stalker = 1
-bandit = 1
-csky = 1
-ecolog = 1
-dolg = 1
-
-![trc_sim_11]:default_lair
-sim_avail = true
-zombied = 1
-
-![trc_sim_12]:default_lair
-sim_avail = true
-
-![trc_sim_13]:default_lair
-sim_avail = true
-resource = 1
-stalker = 1
-dolg = 1
-zombied = 1
-
-![trc_sim_14]:default_lair
-sim_avail = true
-zombied = 1
-
-![trc_sim_15]:default_lair
-sim_avail = true
-
-![trc_sim_16]:default_lair
-sim_avail = true
-
-![trc_sim_17]:default_lair
-sim_avail = true
-zombied = 1
-
-![trc_sim_18]:default_base
-sim_avail = true
-surge = 1
-stalker = 1
-bandit = 1
-freedom = 1
-army = 1
-dolg = 1
-renegade = 1
-zombied = 0
-
-![trc_sim_19]:default_lair
-sim_avail = true
-zombied = 1
-
-![trc_sim_20]:default_base
-sim_avail = true
-surge = 1
-bandit = 1
-renegade = 1
-
-![trc_sim_21]:default_lair
-sim_avail = true
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/misc/mod_simulation_objects_props_VAL.ltx b/mods/Redone Collection_backup/gamedata/configs/misc/mod_simulation_objects_props_VAL.ltx
deleted file mode 100644
index c6abb064..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/misc/mod_simulation_objects_props_VAL.ltx
+++ /dev/null
@@ -1,157 +0,0 @@
-;--------- SIMULATION --------
-
-;smaller base, x18 entrance building
-![val_smart_terrain_1_2]:default_base
-sim_avail = {+dar_lx18_complete_end) false, true
-surge = 1
-bandit = 2
-killer = 1
-renegade = 0
-army = 2
-army_heli = 1
-
-; camp on hills between farm and central lake
-![val_smart_terrain_3_0]:weak_lair
-sim_avail = true
-bandit = 0
-
-;south pig farm
-![val_smart_terrain_4_0]:default_base
-sim_avail = true
-surge = 1
-stalker = 1
-ecolog = 1
-csky = 1
-dolg = 1
-killer = 1
-freedom = 1
-bandit = 1
-renegade = 0
-
-;camp at northern level changer to to garbage
-![val_smart_terrain_5_7]:default_lair
-sim_avail = true
-bandit = 1
-
-;camp at southern level changer to to garbage
-![val_smart_terrain_5_8]:weak_lair
-sim_avail = true
-bandit = 1
-
-;lair near level changer to meadow
-![val_smart_terrain_5_10]:weak_lair
-sim_avail = true
-
-;camp in front of west exit of bandit base
-![val_smart_terrain_6_4]:weak_lair
-sim_avail = {+faction_base_defense_active} false, true
-bandit = 1
-
-; cliff south of andit base
-![val_smart_terrain_6_5]:weak_lair
-sim_avail = true
-
-;bigger base, SOC bandits, CS freedom, inside outer building
-![val_smart_terrain_7_3]:default_base
-sim_avail = {+zat_b5_sultan_dead} false, true
-surge = 1
-stalker = 0
-bandit = 5
-freedom = 2
-killer = 2
-army = 0
-dolg = 0
-renegade = 0
-
-;bigger base, SOC bandits, CS freedom, inside central building
-![val_smart_terrain_7_4]:default_base
-sim_avail = {+zat_b5_sultan_dead} true, false
-surge = 1
-stalker = 3
-bandit = 0
-freedom = 3
-killer = 3
-army = 3
-dolg = 3
-renegade = 3
-lair = 1
-territory = 1
-zoo_monster = 1
-monster = 1
-monster_predatory_day = 1
-monster_predatory_night = 1
-monster_vegetarian = 1
-monster_zombied_day = 1
-monster_zombied_night = 1
-monster_special = 0
-
-;bigger base, SOC bandits, CS freedom, courtyard
-![val_smart_terrain_7_5]:default_base
-sim_avail = {+zat_b5_sultan_dead} false, true
-surge = 1
-stalker = 0
-bandit = 5
-freedom = 0
-killer = 0
-army = 0
-dolg = 0
-renegade = 0
-
-;north island in lake
-![val_smart_terrain_7_8]:weak_lair
-sim_avail = true
-
-;camp near level changer to darkscape
-![val_smart_terrain_7_11]:weak_lair
-sim_avail = true
-bandit = 0
-
-![val_smart_terrain_8_6]:default ;terrain buggy, max_population
-sim_avail = {+zat_b5_sultan_dead} false, true
-bandit = 1
-dolg = 1
-
-![val_smart_terrain_8_7]:weak_lair
-sim_avail = true
-
-;south island in lake
-![val_smart_terrain_8_9]:weak_lair
-sim_avail = true
-
-![val_smart_terrain_9_10]:default
-sim_avail = true
-lair = 1
-territory = 1
-zoo_monster = 1
-monster = 1
-monster_predatory_day = 5
-monster_predatory_night = 5
-monster_vegetarian = 1
-monster_zombied_day = 1
-monster_zombied_night = 5
-monster_special = 5
-
-![val_smart_terrain_9_2]:weak_lair
-sim_avail = {+faction_base_defense_active} false, true
-
-![val_smart_terrain_9_4]:default_base
-sim_avail = {+zat_b5_sultan_dead} true, false
-surge = 1
-stalker = 1
-bandit = 0
-killer = 1
-freedom = 1
-dolg = 1
-renegade = 1
-
-;camp near x-18 building
-![val_smart_terrain_9_6]:default_territory
-sim_avail = {+dar_lx18_complete_end) true, false
-surge = 1
-stalker = 1
-bandit = 0
-killer = 1
-dolg = 1
-freedom = 1
-all = 0
-
diff --git a/mods/Redone Collection_backup/gamedata/configs/misc/mod_simulation_objects_props_X-16.ltx b/mods/Redone Collection_backup/gamedata/configs/misc/mod_simulation_objects_props_X-16.ltx
deleted file mode 100644
index 1eaa5698..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/misc/mod_simulation_objects_props_X-16.ltx
+++ /dev/null
@@ -1,66 +0,0 @@
-;--------- SIMULATION --------
-
-![x162_st_burer]:default
-sim_avail = {+yan_kill_brain_done} true, false
-monolith = 0
-ecolog = 0
-stalker = 0
-army = 0
-territory = 1
-lair = 1
-zoo_monster = 1
-monster = 1
-monster_predatory_day = 1
-monster_predatory_night = 1
-monster_vegetarian = 1
-monster_zombied_day = 5
-monster_zombied_night = 5
-monster_special = 5
-
-![x162_st_gigant]:default
-sim_avail = {+yan_kill_brain_done} true, false
-monolith = 0
-ecolog = 0
-csky = 0
-stalker = 0
-killer = 0
-army = 0
-territory = 1
-lair = 1
-zoo_monster = 1
-monster = 1
-monster_predatory_day = 1
-monster_predatory_night = 0
-monster_vegetarian = 1
-monster_zombied_day = 5
-monster_zombied_night = 0
-monster_special = 0
-
-![x162_st_snork]:default
-sim_avail = {+yan_kill_brain_done} true, false
-ecolog = o
-csky = 0
-stalker = 0
-killer = 0
-lair = 0
-zoo_monster = 0
-monster = 0
-monster_predatory_day = 0
-monster_predatory_night = 0
-monster_vegetarian = 0
-monster_zombied_day = 0
-monster_zombied_night = 0
-monster_special = 0
-
-![x162_st_poltergeist]:default
-sim_avail = {+yan_kill_brain_done} true, false
-territory = 1
-lair = 1
-zoo_monster = 1
-monster = 1
-monster_predatory_day = 1
-monster_predatory_night = 5
-monster_vegetarian = 1
-monster_zombied_day = 1
-monster_zombied_night = 1
-monster_special = 1
diff --git a/mods/Redone Collection_backup/gamedata/configs/misc/mod_simulation_objects_props_X-18.ltx b/mods/Redone Collection_backup/gamedata/configs/misc/mod_simulation_objects_props_X-18.ltx
deleted file mode 100644
index 09f62bbf..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/misc/mod_simulation_objects_props_X-18.ltx
+++ /dev/null
@@ -1,103 +0,0 @@
-;--------- SIMULATION --------
-![dar_angar]:default_lair
-sim_avail = {+dar_control_poltergeist_killed} true, false
-stalker = 1
-csky = 1
-bandit = 1
-killer = 1
-ecolog = 1
-army = 1
-dolg = 1
-lair = 0
-territory = 0
-zoo_monster = 0
-monster = 0
-monster_predatory_day = 0
-monster_predatory_night = 0
-monster_vegetarian = 0
-monster_zombied_day = 0
-monster_zombied_night = 0
-monster_special = 0
-
-![dar_control_poltergeist]:default_lair
-sim_avail = {+dar_control_poltergeist_killed} true, false
-stalker = 1
-csky = 1
-bandit = 1
-killer = 1
-ecolog = 1
-army = 1
-dolg = 1
-lair = 0
-territory = 0
-zoo_monster = 0
-monster = 0
-monster_predatory_day = 0
-monster_predatory_night = 0
-monster_vegetarian = 0
-monster_zombied_day = 0
-monster_zombied_night = 0
-monster_special = 0
-
-![dar_military_scout]:default_territory
-sim_avail = false ;{+dar_control_poltergeist_killed} true, false
-
-![dar_poltergeist_ring]:default_lair
-sim_avail = {+dar_control_poltergeist_killed} true, false
-lair = 0
-territory = 1
-zoo_monster = 0
-monster = 0
-monster_predatory_day = 0
-monster_predatory_night = 0
-monster_vegetarian = 0
-monster_zombied_day = 0
-monster_zombied_night = 0
-monster_special = 0
-
-![dar_poltergeist_tele]:default_lair
-sim_avail = {+dar_control_poltergeist_killed} true, false
-lair = 0
-territory = 1
-zoo_monster = 0
-monster = 0
-monster_predatory_day = 0
-monster_predatory_night = 0
-monster_vegetarian = 0
-monster_zombied_day = 0
-monster_zombied_night = 0
-monster_special = 0
-
-![dar_poltergeist_tele_round]:default_lair
-sim_avail = {+dar_control_poltergeist_killed} true, false
-lair = 0
-territory = 1
-zoo_monster = 0
-monster = 0
-monster_predatory_day = 0
-monster_predatory_night = 0
-monster_vegetarian = 0
-monster_zombied_day = 0
-monster_zombied_night = 0
-monster_special = 0
-
-![dar_smart_snork]:default_base
-sim_avail = {+dar_control_poltergeist_killed} true, false
-stalker = 1
-csky = 1
-bandit = 1
-killer = 1
-ecolog = 1
-army = 1
-dolg = 1
-lair = 0
-territory = 0
-zoo_monster = 0
-monster = 0
-monster_predatory_day = 0
-monster_predatory_night = 0
-monster_vegetarian = 0
-monster_zombied_day = 0
-monster_zombied_night = 0
-monster_special = 0
-
diff --git a/mods/Redone Collection_backup/gamedata/configs/misc/mod_simulation_objects_props_YAN.ltx b/mods/Redone Collection_backup/gamedata/configs/misc/mod_simulation_objects_props_YAN.ltx
deleted file mode 100644
index c9af061f..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/misc/mod_simulation_objects_props_YAN.ltx
+++ /dev/null
@@ -1,130 +0,0 @@
-;--------- SIMULATION --------
-;sim smarties
-![yan_smart_terrain_1_6]:default
-sim_avail = true
-resource = 1
-ecolog = 1
-stalker = 1
-freedom = 1
-
-;x-16 entrance yard, building
-![yan_smart_terrain_2_4]:default_lair
-sim_avail = true
-surge = 1
-surge = 1
-zombied = 2
-lair = 5
-territory = 1
-zoo_monster = 0
-monster = 0
-monster_predatory_day = 0
-monster_predatory_night = 5
-monster_vegetarian = 0
-monster_zombied_day = 5
-monster_zombied_night = 5
-monster_special = 0
-
-;x-16 entrance yard, gate
-![yan_smart_terrain_2_5]:default
-sim_avail = true
-surge = 1
-territory = 1
-
-;x-16 entrance yard
-![yan_smart_terrain_3_4]:default_lair
-sim_avail = true
-surge = 1
-zombied = 2
-territory = 1
-zoo_monster = 0
-monster = 0
-monster_predatory_day = 0
-monster_predatory_night = 5
-monster_vegetarian = 0
-monster_zombied_day = 5
-monster_zombied_night = 5
-monster_special = 0
-
-;camp 2 near small tunnel
-![yan_smart_terrain_3_6]:default_base
-sim_avail = true
-surge = 1
-stalker = 1
-ecolog = 1
-csky = 1
-
-![yan_smart_terrain_4_2]:default
-sim_avail = true
-surge = 1
-resource = 2
-ecolog = 1
-stalker = 1
-csky = 1
-freedom = 1
-killer = 1
-lair = 5
-territory = 1
-zoo_monster = 5
-monster = 5
-monster_predatory_day = 5
-monster_predatory_night = 5
-monster_vegetarian = 5
-monster_zombied_day = 5
-monster_zombied_night = 5
-monster_special = 5
-
-![yan_smart_terrain_4_4]:default
-sim_avail = {+faction_base_defense_active} false, true
-ecolog = 0
-stalker = 0
-csky = 0
-zombied = 1
-
-![yan_smart_terrain_4_5]:default
-sim_avail = {+yan_stalker_sakharov_dead +yan_ecolog_vasilyev_dead +yan_ecolog_semenov_dead +yan_ecolog_kruglov_dead} true, false
-ecolog = 1
-stalker = 1
-csky = 1
-
-![yan_smart_terrain_5_3]:default_resource
-sim_avail = {+yan_stalker_sakharov_dead +yan_ecolog_vasilyev_dead +yan_ecolog_semenov_dead +yan_ecolog_kruglov_dead} true, false
-
-;camp near small tunnel
-![yan_smart_terrain_5_5]:default_base
-sim_avail = {+faction_base_defense_active} false, true
-surge = 1
-stalker = 1
-csky = 1
-zombied = 0
-
-![yan_smart_terrain_6_2]:default_lair
-sim_avail = {+faction_base_defense_active} false, true
-territory = 0
-zombied = 1
-csky = 0
-
-;scientist base
-![yan_smart_terrain_6_4]:default_base
-sim_avail = true
-surge = 1
-stalker = 0
-ecolog = 4
-csky = 0
-zombied = 0
-
-![yan_smart_terrain_zombi_spawn]:default_lair
-sim_avail = true
-surge = 1
-zombied = 5
-territory = 1
-zoo_monster = 0
-monster = 0
-monster_predatory_day = 0
-monster_predatory_night = 5
-monster_vegetarian = 0
-monster_zombied_day = 5
-monster_zombied_night = 5
-monster_special = 0
-
-![yan_smart_terrain_snork_u]:default_lair
-sim_avail = {+yantar_tunnel_finish} true, false
diff --git a/mods/Redone Collection_backup/gamedata/configs/misc/mod_simulation_spawn_point_AGR.ltx b/mods/Redone Collection_backup/gamedata/configs/misc/mod_simulation_spawn_point_AGR.ltx
deleted file mode 100644
index d1086545..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/misc/mod_simulation_spawn_point_AGR.ltx
+++ /dev/null
@@ -1,43 +0,0 @@
-![agr_smart_terrain_1_2]
-per_yant_blood_agr_smart_terrain_1_2 = 0
-
-![agr_smart_terrain_1_3]
-ecolog_sim_squad_advanced_1e_2ls = 1
-
-![agr_smart_terrain_1_6];mlr
-agr_1_6_guards_army_mlr_squad
-army_sim_squad_advanced = 0
-army_sim_squad_novice = 1
-army_sim_squad_veteran = 1
-
-![agr_smart_terrain_1_6_near_1]
-agr_1_6_guards_army_mlr_2_squad
-agr_patrol_army_mlr_squad
-army_sim_squad_advanced = 0
-army_sim_squad_novice = 1
-army_sim_squad_sniper = 1
-army_sim_squad_veteran = 0
-
-![agr_smart_terrain_1_6_near_2]
-agr_1_6_guards_army_mlr_3_squad
-army_sim_squad_advanced = 1
-army_sim_squad_novice = 0
-army_sim_squad_sniper = 1
-army_sim_squad_veteran = 0
-
-![agr_smart_terrain_4_4]
-agr_smart_terrain_4_4_rat_mlr_squad
-ecolog_sim_squad_veteran = 0
-stalker_sim_squad_advanced = 0
-
-![agr_smart_terrain_4_4_near_1]
-stalker_sim_squad_novice = 0
-ecolog_sim_squad_advanced = 1
-
-![agr_smart_terrain_4_4_near_2]
-csky_sim_squad_advanced = 0
-
-;--------AGROPROM UNDERGROUND--------
-
-![agr_u_soldiers]
-agr_u_soldiers_squad
diff --git a/mods/Redone Collection_backup/gamedata/configs/misc/mod_simulation_spawn_point_BAR.ltx b/mods/Redone Collection_backup/gamedata/configs/misc/mod_simulation_spawn_point_BAR.ltx
deleted file mode 100644
index aad2d329..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/misc/mod_simulation_spawn_point_BAR.ltx
+++ /dev/null
@@ -1,28 +0,0 @@
-![bar_dolg_bunker]
-bar_dolg_bunker_squad
-duty_sim_squad_advanced = 0
-duty_sim_squad_novice = 0
-duty_sim_squad_veteran = 1
-
-![bar_dolg_general];mlr
-bar_dolg_general_squad
-bar_dolg_sick_stalker_squad
-bar_duty_medic_stalker_squad
-duty_sim_squad_advanced = 1
-duty_sim_squad_novice = 0
-duty_sim_squad_veteran = 0
-
-![bar_visitors];mlr
-ecolog_sim_squad_advanced = 1
-stalker_sim_squad_novice = 0
-stalker_sim_squad_veteran = 1
-bar_mlr_1_visitors
-bar_mlr_2_visitors
-bar_mlr_3_visitors
-
-![bar_zastava_dogs_lair]
-simulation_dog_5_7 = 0
-
-![bar_zastava_dogs_lair_2]
-simulation_mix_dogs = 0
-simulation_pseudodog = 0
diff --git a/mods/Redone Collection_backup/gamedata/configs/misc/mod_simulation_spawn_point_CIT.ltx b/mods/Redone Collection_backup/gamedata/configs/misc/mod_simulation_spawn_point_CIT.ltx
deleted file mode 100644
index d49caa75..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/misc/mod_simulation_spawn_point_CIT.ltx
+++ /dev/null
@@ -1,32 +0,0 @@
-![cit_killers] ;spawns for more quests
-cit_killers_merc_guard_squad_1
-cit_killers_merc_guard_squad_2
-cit_killers_merc_guard_squad_3
-merc_sim_squad_veteran = 1
-merc_sim_squad_novice = 1
-merc_sim_squad_advanced = 1
-
-![cit_killers_2]
-cit_killers_2_rat_mlr_squad
-merc_sim_squad_advanced = 0
-merc_sim_squad_veteran = 0
-
-![cit_killers_vs_bandits] ;spawns for more quests
-cit_bandit_guard_squad_1
-cit_bandit_guard_squad_2
-cit_bandit_guard_squad_3
-cit_killers_guard_squad_1
-cit_killers_guard_squad_2
-merc_sim_squad_novice = 0
-
-![cit_bandits]
-;cit_bandits_poltergeist_squad
-
-![cit_bandits_2]
-simulation_zombie_3_6 = 0
-
-![cit_kanaliz1]
-;cit_kanaliz1_zombied_squad
-
-![cit_kanaliz2]
-cit_kanaliz2_zombied_squad
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/misc/mod_simulation_spawn_point_DS.ltx b/mods/Redone Collection_backup/gamedata/configs/misc/mod_simulation_spawn_point_DS.ltx
deleted file mode 100644
index 08bb6aad..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/misc/mod_simulation_spawn_point_DS.ltx
+++ /dev/null
@@ -1,13 +0,0 @@
-![ds2_domik_st]
-stalker_sim_squad_advanced = 0
-stalker_sim_squad_novice = 1
-dasc_tech_mlr_squad = 1
-dasc_trade_mlr_squad = 1
-
-![ds_kem2]
-ds_kem2_military_mlr_2_squad = 1
-ds_kem2_military_mlr_2_sniper = 1
-army_sim_squad_veteran = 0
-
-![ds_kem3]
-ds_kem3_bloodsucker_red = 1
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/misc/mod_simulation_spawn_point_ESC.ltx b/mods/Redone Collection_backup/gamedata/configs/misc/mod_simulation_spawn_point_ESC.ltx
deleted file mode 100644
index 7fa70d33..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/misc/mod_simulation_spawn_point_ESC.ltx
+++ /dev/null
@@ -1,37 +0,0 @@
-![esc_smart_terrain_1_11]
-;escape_novice_visiters_village2
-
-![esc_smart_terrain_2_12]
-stalker_sim_squad_advanced = 0
-stalker_sim_squad_novice = 1
-
-![esc_smart_terrain_2_14]
-;esc_smart_terrain_2_14_rat_mlr_squad = 0
-
-![esc_smart_terrain_4_9]
-;tunnel_rats_esc_smart_terrain_4_9 = 1
-
-![esc_smart_terrain_3_7]
-
-![esc_smart_terrain_3_16]
-kpp_army_mlr_esc_smart_terrain_3_16 = 1
-
-![esc_smart_terrain_5_2]
-karat_army_esc_smart_terrain_2_12 = 1
-
-![esc_smart_terrain_5_7]
-stalker_sim_squad_novice = 1
-stalker_sim_squad_advanced = 0
-escape_main_base_mlr_guards = 1
-;escape_main_base_mlr_guards2 = 0
-;ferma_stalker_esc_smart_terrain_5_7 = 0
-
-![esc_smart_terrain_5_9]
-fabr_rats_esc_smart_terrain_5_9
-
-![esc_smart_terrain_6_8]
-most_army_esc_smart_terrain_6_8
-
-![esc_smart_terrain_7_11]
-bandit_sim_squad_novice = 0
-atp_bandit_esc_smart_terrain_7_11
diff --git a/mods/Redone Collection_backup/gamedata/configs/misc/mod_simulation_spawn_point_GAR.ltx b/mods/Redone Collection_backup/gamedata/configs/misc/mod_simulation_spawn_point_GAR.ltx
deleted file mode 100644
index aa42a5c0..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/misc/mod_simulation_spawn_point_GAR.ltx
+++ /dev/null
@@ -1,16 +0,0 @@
-![gar_smart_terrain_3_5];mlr
-start_character_hangar_mlr_squad
-!start_visitirs_hangar_mlr_squad
-stalker_sim_squad_novice = 1
-
-![gar_smart_terrain_3_7]
-stalker_sim_squad_advanced = 1
-ecolog_sim_squad_advanced = 1
-
-![gar_smart_terrain_5_2]
-stalker_sim_dolg_post
-duty_sim_squad_advanced = 0
-duty_sim_squad_novice = 0
-
-![gar_smart_terrain_6_3];mlr
-stalker_gar_smart_terrain_6_3 = 0
diff --git a/mods/Redone Collection_backup/gamedata/configs/misc/mod_simulation_spawn_point_MAR.ltx b/mods/Redone Collection_backup/gamedata/configs/misc/mod_simulation_spawn_point_MAR.ltx
deleted file mode 100644
index f880456b..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/misc/mod_simulation_spawn_point_MAR.ltx
+++ /dev/null
@@ -1,52 +0,0 @@
-![mar_smart_terrain_3_3]
-mar_renegade_trader_squad
-mar_smart_terrain_3_3_renegade_squad
-renegade_guard_mar_smart_terrain_3_3
-renegade_sim_squad_advanced = 1
-renegade_sim_squad_novice = 1
-
-![mar_smart_terrain_4_5]
-mar_renegade_mechanic_squad
-mar_renegade_guard_patrol_squad
-mar_smart_terrain_4_5_renegade_squad
-
-![mar_smart_terrain_5_8]
-pump_csky_mar_smart_terrain_5_8
-csky_sim_squad_novice = 1
-csky_sim_squad_veteran = 0
-
-![mar_smart_terrain_5_12]
-camp_csky_mar_smart_terrain_5_12
-csky_sim_squad_advanced = 1
-csky_sim_squad_novice = 1
-
-![mar_smart_terrain_6_4]
-mar_rat_squad_smart_terrain_6_4_squad
-
-![mar_smart_terrain_6_11]
-csky_sim_squad_advanced = 0
-csky_sim_squad_novice = 0
-
-![mar_smart_terrain_8_11]
-ecolog_mar_smart_terrain_8_11
-renegade_sim_squad_advanced = 0
-renegade_sim_squad_novice = 0
-;renegade_sim_squad_veteran = 0
-
-![mar_smart_terrain_10_5]
-mar_smart_terrain_10_5_army_squad
-army_sim_squad_advanced = 1
-army_sim_squad_sniper = 1
-
-![mar_smart_terrain_11_11]
-renegade_sim_squad_advanced = 0
-renegade_sim_squad_novice = 0
-
-![mar_smart_terrain_12_2]
-mar_smart_terrain_12_2_army_squad
-csky_sim_squad_advanced = 0
-csky_sim_squad_novice = 0
-stalker_sim_squad_novice = 0
-
-![mar_smart_terrain_doc]
-mar_smart_terrain_doc_dog_squad = 0
diff --git a/mods/Redone Collection_backup/gamedata/configs/misc/mod_simulation_spawn_point_MIL.ltx b/mods/Redone Collection_backup/gamedata/configs/misc/mod_simulation_spawn_point_MIL.ltx
deleted file mode 100644
index 403be4e6..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/misc/mod_simulation_spawn_point_MIL.ltx
+++ /dev/null
@@ -1,46 +0,0 @@
-![mil_smart_terrain_2_2]
-mil_merc_terrain_2_2_outpost_squad
-mil_merc_terrain_2_2_outpost_squad2
-merc_sim_squad_advanced = 0
-merc_sim_squad_novice = 0
-merc_sim_squad_veteran = 0
-
-![mil_smart_terrain_2_10]
-freedom_sim_squad_novice = 0
-
-![mil_smart_terrain_2_4]
-bandit_sim_squad_advanced = 0
-
-![mil_smart_terrain_3_8]
-freedom_sim_squad_novice = 0
-
-![mil_smart_terrain_4_5]
-stalker_sim_squad_advanced = 0
-
-![mil_smart_terrain_4_8]
-freedom_sim_squad_veteran = 0
-
-![mil_smart_terrain_7_4]
-mil_duty_terrain_7_4_outpost_squad
-duty_sim_squad_novice = 1
-duty_sim_squad_veteran = 1
-
-![mil_smart_terrain_7_7]
-mil_freedom_barman_mlr_squad
-mil_7_7_protect_mlr_squad
-freedom_sim_squad_novice = 1
-freedom_sim_squad_advanced = 0
-
-![mil_smart_terrain_7_8]
-mil_freedom_smart_terrain_7_8_squad
-freedom_sim_squad_veteran = 0
-
-![mil_smart_terrain_7_10]
-mil_freedom_smart_terrain_7_10_squad
-freedom_sim_squad_novice = 1
-
-![mil_smart_terrain_7_12]
-mil_freedom_smart_terrain_7_12_squad
-freedom_sim_squad_veteran = 1
-
-
diff --git a/mods/Redone Collection_backup/gamedata/configs/misc/mod_simulation_spawn_point_POL.ltx b/mods/Redone Collection_backup/gamedata/configs/misc/mod_simulation_spawn_point_POL.ltx
deleted file mode 100644
index 96e89fbd..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/misc/mod_simulation_spawn_point_POL.ltx
+++ /dev/null
@@ -1,21 +0,0 @@
-![pol_smart_terrain_1_1]
-pol_smart_terrain_1_1_mlr_squad
-
-![pol_smart_terrain_1_3]
-pol_smart_terrain_1_2_mlr_squad
-pol_rats_mlr_squad
-
-![pol_smart_terrain_2_1]
-pol_renegade_guard1
-simulation_poltergeist_tele = 0
-
-![pol_smart_terrain_2_2]
-pol_renegade_squad2
-simulation_burer = 0
-
-
-
-
-
-
-
diff --git a/mods/Redone Collection_backup/gamedata/configs/misc/mod_simulation_spawn_point_ROS.ltx b/mods/Redone Collection_backup/gamedata/configs/misc/mod_simulation_spawn_point_ROS.ltx
deleted file mode 100644
index cd0f6f7b..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/misc/mod_simulation_spawn_point_ROS.ltx
+++ /dev/null
@@ -1,25 +0,0 @@
-![ros_smart_killers1]
-ros_merc_sniper_mlr_squad
-bandit_sim_squad_advanced = 0
-bandit_sim_squad_novice = 0
-
-![ros_smart_poltergeist2]
-simulation_zombie_3_6 = 0
-simulation_poltergeist_tele = 0
-simulation_snork = 0
-
-![ros_smart_stalker1]
-stalker_sim_squad_advanced = 0
-stalker_sim_squad_veteran = 0
-
-![ros_smart_stalker_killers1]
-ros_merc_guard_mlr_squad
-merc_sim_squad_advanced = 1
-merc_sim_squad_novice = 1
-merc_sim_squad_veteran = 0
-
-![ros_smart_monster4]
-simulation_zombie_3_6 = 0
-
-![ros_smart_monster5]
-simulation_zombie_3_6 = 0
diff --git a/mods/Redone Collection_backup/gamedata/configs/misc/mod_simulation_spawn_point_TRC.ltx b/mods/Redone Collection_backup/gamedata/configs/misc/mod_simulation_spawn_point_TRC.ltx
deleted file mode 100644
index cee37010..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/misc/mod_simulation_spawn_point_TRC.ltx
+++ /dev/null
@@ -1,18 +0,0 @@
-![trc_sim_13]
-trc_sim_13_zombie_squad
-
-![trc_sim_17]
-!freedom_sim_squad_veteran = 0
-
-![trc_sim_18]
-trucks_army_camp_guards
-army_sim_squad_advanced = 0
-army_sim_squad_veteran = 0
-
-![trc_sim_20];mlr
-trucks_cemetery_bandit_guards
-bandit_sim_squad_advanced = 1
-
-![trc_sim_4]
-army_sim_squad_advanced = 0
-
diff --git a/mods/Redone Collection_backup/gamedata/configs/misc/mod_simulation_spawn_point_VAL.ltx b/mods/Redone Collection_backup/gamedata/configs/misc/mod_simulation_spawn_point_VAL.ltx
deleted file mode 100644
index c7e52b56..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/misc/mod_simulation_spawn_point_VAL.ltx
+++ /dev/null
@@ -1,37 +0,0 @@
-![val_smart_terrain_1_2]
-val_smart_terrain_1_2_military_mlr_squad
-val_smart_terrain_1_2_military_mlr_2_squad
-army_sim_squad_advanced = 0
-army_sim_squad_sniper = 0
-army_sim_squad_veteran = 0
-
-![val_smart_terrain_4_0]
-stalker_south_pig_farm
-stalker_sim_squad_advanced = 0
-stalker_sim_squad_novice = 0
-
-![val_smart_terrain_7_3]
-bandit_novice_visiters_camp
-bandit_novice_visiters_2_camp
-bandit_barman_mlr_squad
-
-![val_smart_terrain_7_4]
-bandit_novice_visiters_base
-bandit_novice_visiters_2_base
-bandit_sim_squad_advanced = 0
-bandit_sim_squad_veteran = 0
-
-![val_smart_terrain_7_5]
-guards_boss_bandit_in_main_base
-bandit_guards_in_main_base
-bandit_sim_squad_novice = 0
-bandit_sim_squad_veteran = 0
-
-![val_smart_terrain_6_4]
-;val_smart_terrain_6_4_rat_mlr_squad
-
-![val_smart_terrain_8_6]
-guards_bandit_main_entrance
-
-![val_smart_terrain_9_4]
-bandit_sim_squad_novice = 0
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/misc/mod_simulation_spawn_point_YAN.ltx b/mods/Redone Collection_backup/gamedata/configs/misc/mod_simulation_spawn_point_YAN.ltx
deleted file mode 100644
index 770b3f0c..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/misc/mod_simulation_spawn_point_YAN.ltx
+++ /dev/null
@@ -1,24 +0,0 @@
-![yan_smart_terrain_2_4]
-yan_zombied_x16_mlr_squad2
-
-![yan_smart_terrain_2_5]
-zombied_sim_squad_advanced = 0
-
-![yan_smart_terrain_3_4]
-yan_zombied_x16_mlr_squad3
-
-![yan_smart_terrain_3_6]
-ecolog_sim_squad_advanced = 0
-
-![yan_smart_terrain_4_5]
-simulation_snork_2_5 = 0
-
-![yan_smart_terrain_6_4];mlr
-yan_smart_terrain_6_4_squad
-ecolog_sim_squad_advanced = 1
-ecolog_sim_squad_novice = 1
-ecolog_sim_squad_veteran = 1
-
-![yan_smart_terrain_zombi_spawn]
-yan_zombied_x16_mlr_squad
-simulation_contr_3sn_3gzomb = 0
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/misc/sound/mod_script_sound_redone_AGR.ltx b/mods/Redone Collection_backup/gamedata/configs/misc/sound/mod_script_sound_redone_AGR.ltx
deleted file mode 100644
index 07ba48fc..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/misc/sound/mod_script_sound_redone_AGR.ltx
+++ /dev/null
@@ -1,30 +0,0 @@
-;![kovalsky_surge_phase_1] ;-- agr_blowout_siren
-;type = 3d ;actor
-;npc_prefix = false
-;path = characters_voice\scenario\agroprom\kovalsky_surge_phase_1
-;shuffle = rnd
-;idle = 3,5,100
-;levels = l03_agroprom
-
-;![agr_army_alarm] ;-- needs to be converted to the game engine.
-;type = 3d
-;path = ambient\siren_1 ;-- test sound
-;shuffle = rnd
-;idle = 0,0,100
-;levels = l03_agroprom
-
-;[agr_blowout_siren] ;-- added, change path, sound looped?!
-;type = 3d
-;path = ambient\blowout\blowout_siren_agr
-;shuffle = rnd
-;idle = 0,0,100
-;levels = l03_agroprom
-
-![kovalsky_surge_phase_1] ;-- agr_blowout_siren
-type = 3d
-actor_stereo = false
-npc_prefix = false
-path = characters_voice\scenario\agroprom\kovalsky_surge_phase_1
-shuffle = seq
-idle = 0,0,0
-levels = l03_agroprom
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/misc/sound/mod_script_sound_redone_BAR.ltx b/mods/Redone Collection_backup/gamedata/configs/misc/sound/mod_script_sound_redone_BAR.ltx
deleted file mode 100644
index 5a2f1c60..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/misc/sound/mod_script_sound_redone_BAR.ltx
+++ /dev/null
@@ -1,13 +0,0 @@
-[bar_blowout_siren_1]
-type = 3d
-path = ambient\blowout\blowout_siren_bar_1
-shuffle = loop
-idle = 5,15,100 ;3,5,100
-levels = l05_bar
-
-[bar_blowout_siren_2]
-type = 3d
-path = ambient\blowout\blowout_siren_bar_2
-shuffle = loop
-idle = 5,15,100 ;3,5,100
-levels = l05_bar
diff --git a/mods/Redone Collection_backup/gamedata/configs/misc/sound/mod_script_sound_redone_ESC.ltx b/mods/Redone Collection_backup/gamedata/configs/misc/sound/mod_script_sound_redone_ESC.ltx
deleted file mode 100644
index 6764e278..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/misc/sound/mod_script_sound_redone_ESC.ltx
+++ /dev/null
@@ -1,25 +0,0 @@
-![escape_sr_rupor_mlr_sound]
-type = 3d
-path = characters_voice\scenario\escape\megafon_
-shuffle = loop
-idle = 5,15,100
-
-![escape_sr_rupor_mlr_alarm]
-type = 3d
-path = characters_voice\scenario\escape\megafon_alarm_
-shuffle = rnd
-idle = 0,0,100
-
-[escape_blowout_siren]
-type = 3d
-path = ambient\blowout\blowout_siren_esc_1
-shuffle = loop
-idle = 5,15,100 ;3,5,100
-levels = l01_escape
-
-[escape_blowout_siren_1]
-type = 3d
-path = ambient\blowout\blowout_siren_esc_2
-shuffle = loop
-idle = 5,15,100 ;3,5,100
-levels = l01_escape
diff --git a/mods/Redone Collection_backup/gamedata/configs/misc/sound/mod_script_sound_redone_MAR.ltx b/mods/Redone Collection_backup/gamedata/configs/misc/sound/mod_script_sound_redone_MAR.ltx
deleted file mode 100644
index ba3196b3..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/misc/sound/mod_script_sound_redone_MAR.ltx
+++ /dev/null
@@ -1,5 +0,0 @@
-[mar_smart_terrain_base_radio_mlr]
-type = 3d
-path = mlr\marsh\marsh_radio_
-shuffle = loop
-idle = 5,15,100
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/misc/sound/mod_script_sound_redone_MIL.ltx b/mods/Redone Collection_backup/gamedata/configs/misc/sound/mod_script_sound_redone_MIL.ltx
deleted file mode 100644
index e501dddf..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/misc/sound/mod_script_sound_redone_MIL.ltx
+++ /dev/null
@@ -1,5 +0,0 @@
-![mil_freebase_mlr]
-type = 3d
-path = mlr\freedom\val_free_meg_music_
-shuffle = loop
-idle = 5,15,100
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/misc/sound/mod_script_sound_redone_ROS.ltx b/mods/Redone Collection_backup/gamedata/configs/misc/sound/mod_script_sound_redone_ROS.ltx
deleted file mode 100644
index 683a1a23..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/misc/sound/mod_script_sound_redone_ROS.ltx
+++ /dev/null
@@ -1,34 +0,0 @@
-[ros_climb_sound_1]
-type = 3d
-path = material\human\step\metal_plate1
-shuffle = rnd
-idle = 1,1,100
-levels = l06_rostok
-
-[ros_climb_sound_2]
-type = 3d
-path = material\human\step\metal_plate2
-shuffle = rnd
-idle = 1,1,100
-levels = l06_rostok
-
-[ros_climb_sound_3]
-type = 3d
-path = material\human\step\metal_plate3
-shuffle = rnd
-idle = 1,1,100
-levels = l06_rostok
-
-[ros_climb_sound_4]
-type = 3d
-path = material\human\step\metal_plate4
-shuffle = rnd
-idle = 1,1,100
-levels = l06_rostok
-
-;[ros_open_door]
-;type = 3d
-;path = device\door_start
-;shuffle = seq
-;idle = 5,15,100
-;levels = l06_rostok
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/misc/sound/mod_script_sound_redone_X16.ltx b/mods/Redone Collection_backup/gamedata/configs/misc/sound/mod_script_sound_redone_X16.ltx
deleted file mode 100644
index 18f6e181..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/misc/sound/mod_script_sound_redone_X16.ltx
+++ /dev/null
@@ -1,14 +0,0 @@
-![x16_brain_stop]
-type = 3d
-path = ambient\x16\x16_brain_stop
-levels = l08u_brainlab
-
-![x16_brain_death_d]
-type = looped
-path = ambient\x16\x16_brain_death
-levels = l08u_brainlab
-
-![x16_brain_run]
-type = looped
-path = ambient\x16\x16_brain_run_2
-levels = l08u_brainlab
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/misc/sound/mod_script_sound_redone_YAN.ltx b/mods/Redone Collection_backup/gamedata/configs/misc/sound/mod_script_sound_redone_YAN.ltx
deleted file mode 100644
index e05379fe..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/misc/sound/mod_script_sound_redone_YAN.ltx
+++ /dev/null
@@ -1,20 +0,0 @@
-[yan_sci_tech_sounds]
-type = looped ;3d
-path = ambient\background\yantar\device_hum_0
-shuffle = loop
-idle = 3,5,100
-levels = l08_yantar
-
-[yan_blowout_siren]
-type = 3d
-path = ambient\blowout\blowout_siren_yan_1
-shuffle = loop
-idle = 5,15,100 ;3,5,100
-levels = l08_yantar
-
-[yan_blowout_siren_1]
-type = 3d
-path = ambient\blowout\blowout_siren_yan_2
-shuffle = loop
-idle = 5,15,100 ;3,5,100
-levels = l08_yantar
diff --git a/mods/Redone Collection_backup/gamedata/configs/misc/spawn_object/mil_smart_terrain_3_8_object.ltx b/mods/Redone Collection_backup/gamedata/configs/misc/spawn_object/mil_smart_terrain_3_8_object.ltx
deleted file mode 100644
index 4957c07d..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/misc/spawn_object/mil_smart_terrain_3_8_object.ltx
+++ /dev/null
@@ -1,6 +0,0 @@
-[dynamic_object_configs]
-smart = mil_smart_terrain_3_8
-condlist_0 = true
-
-[exclusive]
-psy field 1 = mil_smart_terrain_3_8_psy_field | 111.1950302124, -12.346420288086, 424.95971679688 | 0,0,0 | condlist_0
diff --git a/mods/Redone Collection_backup/gamedata/configs/misc/spawn_object/ros_smart_killers1_object.ltx b/mods/Redone Collection_backup/gamedata/configs/misc/spawn_object/ros_smart_killers1_object.ltx
deleted file mode 100644
index e56f8b90..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/misc/spawn_object/ros_smart_killers1_object.ltx
+++ /dev/null
@@ -1,16 +0,0 @@
-[dynamic_object_configs]
-smart = ros_smart_killers1
-condlist_0 = true
-
-[exclusive]
-door_1 = ros_valley_door_1 | -137.60,2.25,123.15 | 0,0,180 | condlist_0
-door_2 = ros_valley_door_2 | -137.60,2.50,123.25 | 0,0,180 | condlist_0
-Wall_1 = ros_valley_wall_1 | -111.42,-0.00,103.95 | 0,0,0 | condlist_0
-Wall_2 = ros_valley_wall_2 | -111.42,-0.00,102.25 | 0,90,0 | condlist_0
-Wall_3 = ros_valley_wall_3 | -111.42,-0.00,103.85 | 0,90,0 | condlist_0
-box_1 = ros_valley_box_1 | -91.18,0.02,134.81 | 0,12,0 | condlist_0
-box_2 = ros_valley_box_2 | -91.19,0.02,133.61 | 0,-6,0 | condlist_0
-box_3 = ros_valley_box_3 | -91.13,0.83,134.25 | 0,-2,0 | condlist_0
-
-
-
diff --git a/mods/Redone Collection_backup/gamedata/configs/misc/spawn_object/ros_smart_snork1_objects.ltx b/mods/Redone Collection_backup/gamedata/configs/misc/spawn_object/ros_smart_snork1_objects.ltx
deleted file mode 100644
index 6ae8a805..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/misc/spawn_object/ros_smart_snork1_objects.ltx
+++ /dev/null
@@ -1,23 +0,0 @@
-[dynamic_object_configs]
-smart = ros_smart_snork1
-condlist_0 = true
-
-[exclusive]
-door_1 = ros_roof_door_1 | -187.39,17.69,75.23 | 0,-30,0 | condlist_0
-door_2 = ros_roof_door_2 | -172.27,-0.00,60.22 | 0,-30,0 | condlist_0
-Wall_1 = ros_valley_wall_4 | -138.08,-0.00,62.00 | 0,60,0 | condlist_0
-Wall_2 = ros_valley_wall_5 | -138.80,-0.00,60.84 | 0,60,0 | condlist_0
-Wall_3 = ros_valley_wall_6 | -139.66,-0.00,59.61 | 0,60,0 | condlist_0
-misc_1 = ros_valley_misc_1 | -157.39,-0.00,85.60 | 90,86,0 | condlist_0
-misc_2 = ros_valley_misc_2 | -168.93,-0.00,79.90 | 0,79,0 | condlist_0
-misc_3 = ros_valley_misc_3 | -181.20,-0.00,24.92 | 0,23,0 | condlist_0
-misc_4 = ros_valley_misc_4 | -157.39,-0.00,60.53 | 0,-43,0 | condlist_0
-misc_5 = ros_valley_misc_5 | -166.94,0.02,64.27 | 90,-38,0 | condlist_0
-misc_6 = ros_valley_misc_6 | -161.65,0.02,41.62 | 90,99,0 | condlist_0
-misc_7 = ros_valley_misc_7 | -155.36,0.02,57.29 | 90,2,0 | condlist_0
-misc_8 = ros_valley_misc_8 | -171.58,0.02,48.33 | 90,-2,0 | condlist_0
-box_4 = ros_valley_box_4 | -179.46,-0.00,65.74 | 0,32,0 | condlist_0
-box_5 = ros_valley_box_5 | -155.88,-0.00,51.54 | 0,8,0 | condlist_0
-box_6 = ros_valley_box_6 | -155.25,-0.00,52.54 | 0,-8,0 | condlist_0
-
-
diff --git a/mods/Redone Collection_backup/gamedata/configs/misc/spawn_object/ros_smart_stalker_killers1_objects.ltx b/mods/Redone Collection_backup/gamedata/configs/misc/spawn_object/ros_smart_stalker_killers1_objects.ltx
deleted file mode 100644
index e3150d78..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/misc/spawn_object/ros_smart_stalker_killers1_objects.ltx
+++ /dev/null
@@ -1,38 +0,0 @@
-[dynamic_object_configs]
-smart = ros_smart_stalker_killers1
-condlist_0 = true
-
-[exclusive]
-climb_1 = ros_climb_action_1.1 | -212.93,1.55,9.42 | 0,-30,0 | condlist_0
-climb_2 = ros_climb_action_1.2 | -210.93,1.50,9.22 | 0,-30,0 | condlist_0
-climb_3 = ros_climb_action_1.3 | -211.93,1.85,9.32 | 7,-30,90 | condlist_0
-climb_4 = ros_climb_action_2.1 | -211.58,9.66,9.35 | 0,-30,0 | condlist_0
-climb_5 = ros_climb_action_2.2 | -212.09,9.66,9.56 | 0,-30,0 | condlist_0
-climb_6 = ros_climb_action_2.3 | -212.24,8.83,9.40 | 90,-23,0 | condlist_0
-Wall_7 = ros_valley_wall_7 | -201.44,-0.00,-29.80 | 0,60,0 | condlist_0
-Wall_8 = ros_valley_wall_8 | -207.95,-0.00,-40.44 | 0,60,0 | condlist_0
-Wall_9 = ros_valley_wall_9 | -208.64,-0.00,-41.58 | 0,60,0 | condlist_0
-Wall_10 = ros_valley_wall_10 | -209.25,-0.00,-42.56 | 0,60,0 | condlist_0
-Wall_11 = ros_valley_wall_11 | -209.89,-0.00,-43.61 | 0,60,0 | condlist_0
-Wall_12 = ros_valley_wall_12 | -210.46,-0.00,-44.56 | 0,60,0 | condlist_0
-Wall_13 = ros_valley_wall_13 | -200.87,-0.00,-29.07 | 0,60,0 | condlist_0
-Wall_14 = ros_valley_wall_14 | -202.19,-0.00,-31.01 | 0,60,0 | condlist_0
-Wall_15 = ros_valley_wall_15 | -202.94,-0.00,-32.25 | 0,60,0 | condlist_0
-Wall_16 = ros_valley_wall_16 | -203.64,-0.00,-33.39 | 0,60,0 | condlist_0
-Wall_17 = ros_valley_wall_17 | -204.39,-0.00,-34.63 | 0,60,0 | condlist_0
-Wall_18 = ros_valley_wall_18 | -205.03,-0.00,-35.68 | 0,60,0 | condlist_0
-Wall_19 = ros_valley_wall_19 | -205.81,-0.00,-36.94 | 0,60,0 | condlist_0
-Wall_20 = ros_valley_wall_20 | -206.48,-0.00,-38.05 | 0,60,0 | condlist_0
-Wall_21 = ros_valley_wall_21 | -207.20,-0.00,-39.22 | 0,60,0 | condlist_0
-Wall_22 = ros_valley_wall_22 | -199.25,-0.00,5.06 | 0,60,0 | condlist_0
-Wall_23 = ros_valley_wall_23 | -199.92,-0.00,3.94 | 0,60,0 | condlist_0
-Wall_24 = ros_valley_wall_24 | -201.49,-0.00,7.01 | 0,-23,0 | condlist_0
-Wall_25 = ros_valley_wall_25 | -214.03,0.00,10.77 | 0,65,0 | condlist_0
-Wall_26 = ros_valley_wall_26 | -215.11,8.17,8.09 | 0,58,0 | condlist_0
-Wall_27 = ros_valley_wall_27 | -225.93,8.17,-10.66 | 0,58,0 | condlist_0
-Wall_28 = ros_valley_wall_28 | -236.68,8.17,-29.30 | 0,58,0 | condlist_0
-box_7 = ros_valley_box_7 | -204.91,0.00,24.73 | 0,8,0 | condlist_0
-box_8 = ros_valley_box_8 | -204.09,0.00,24.31 | 0,-8,0 | condlist_0
-box_9 = ros_valley_box_9 | -211.69,0.00,-44.63 | 0,8,0 | condlist_0
-box_10 = ros_valley_box_10 | -181.83,0.00,52.04 | 0,-8,0 | condlist_0
-box_11 = ros_valley_box_11 | -204.37,0.77,24.888 | 0,-8,0 | condlist_0
diff --git a/mods/Redone Collection_backup/gamedata/configs/misc/spawn_object/yan_smart_terrain_2_4_object.ltx b/mods/Redone Collection_backup/gamedata/configs/misc/spawn_object/yan_smart_terrain_2_4_object.ltx
deleted file mode 100644
index 58e59ab2..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/misc/spawn_object/yan_smart_terrain_2_4_object.ltx
+++ /dev/null
@@ -1,20 +0,0 @@
-[dynamic_object_configs]
-smart = yan_smart_terrain_2_4
-condlist_0 = true
-
-[exclusive]
-box_1 = yan_street_box_1 | -42.30,0.34,79.52 | 0,10,0 | condlist_0
-box_2 = yan_street_box_2 | -42.36,0.34,78.22 | 0,20,0 | condlist_0
-box_3 = yan_street_box_3 | -42.20,0.34,76.73 | 0,-10,0 | condlist_0
-box_4 = yan_street_box_4 | -78.02,0.78,2.09 | 0,20,0 | condlist_0
-box_5 = yan_street_box_5 | -78.14,0.78,0.84 | 0,30,0 | condlist_0
-misc_1 = yan_street_misc_1 | -71.78,0.74,33.78 | 90,86,0 | condlist_0
-misc_2 = yan_street_misc_2 | -73.46,0.78,78.23 | 0,79,0 | condlist_0
-misc_3 = yan_street_misc_3 | -54.97,0.38,51.45 | 90,99,0 | condlist_0
-misc_4 = yan_street_misc_4 | -63.44,0.58,76.99 | 90,99,0 | condlist_0
-misc_5 = yan_street_misc_5 | -65.22,0.61,25.43 | 90,2,0 | condlist_0
-vehicles_1 = yan_street_veh_1 | -37.15,0.34,73.34 | 0,-99,0 | condlist_0
-vehicles_2 = yan_street_veh_2 | -37.13,0.34,69.48 | 0,-83,0 | condlist_0
-vehicles_3 = yan_street_veh_3 | -24.27,0.34,67.67 | 0,-42,0 | condlist_0
-;vehicles_4 = yan_street_veh_4 | -71.73,0.70,-4.31 | 0,145,0 | condlist_0
-
diff --git a/mods/Redone Collection_backup/gamedata/configs/misc/spawn_object/yan_smart_terrain_6_4_object.ltx b/mods/Redone Collection_backup/gamedata/configs/misc/spawn_object/yan_smart_terrain_6_4_object.ltx
deleted file mode 100644
index 66337bb0..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/misc/spawn_object/yan_smart_terrain_6_4_object.ltx
+++ /dev/null
@@ -1,8 +0,0 @@
-[dynamic_object_configs]
-smart = yan_smart_terrain_6_4
-condlist_0 = true
-
-[exclusive]
-rupor_1 = ecolog_yan_base_rupor | 24.72,-4.91,-263.82 | 0,-182,-90 | condlist_0
-sound_1 = ecolog_yan_base_sound | 28.11,-23.74,-273.46 | 0,0,0 | condlist_0
-
diff --git a/mods/Redone Collection_backup/gamedata/configs/misc/squad_descr/squad_descr_lostzone_ll_spawn.ltx b/mods/Redone Collection_backup/gamedata/configs/misc/squad_descr/squad_descr_lostzone_ll_spawn.ltx
deleted file mode 100644
index ca71effc..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/misc/squad_descr/squad_descr_lostzone_ll_spawn.ltx
+++ /dev/null
@@ -1,15 +0,0 @@
-;--Lost to the Zone: Living Legend
-
-![barrier_freedom_guardians_squad]:online_offline_group
-faction = freedom
-npc_random = sim_default_freedom_1, sim_default_freedom_2, sim_default_freedom_2, sim_default_freedom_3
-npc_in_squad = 2, 2
-target_smart = mil_smart_terrain_3_8
-
-![mil_smart_terrain_3_8_monolith_attackers]:online_offline_group
-faction = monolith
-npc_random = sim_default_monolith_1, sim_default_monolith_2, sim_default_monolith_3, sim_default_monolith_4
-npc_in_squad = 8, 8
-target_smart = mil_smart_terrain_3_8
-story_id = mil_smart_terrain_3_8_monolith_attackers_squad
-on_death = %+mil_smart_terrain_3_8_monolith_attackers_squad_death%
diff --git a/mods/Redone Collection_backup/gamedata/configs/misc/squad_descr/squad_descr_night_mutants_spawn.ltx b/mods/Redone Collection_backup/gamedata/configs/misc/squad_descr/squad_descr_night_mutants_spawn.ltx
deleted file mode 100644
index a55fc595..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/misc/squad_descr/squad_descr_night_mutants_spawn.ltx
+++ /dev/null
@@ -1,537 +0,0 @@
-;------------------------------------------------
-;----< Zombies >-----|
-
-[zombied_sim_squad_novice_night]:online_offline_group
-faction = monster_special
-npc_random = sim_default_zombied_1, sim_default_zombied_1, sim_default_zombied_1, sim_default_zombied_2
-npc_in_squad = 3, 4
-common = true
-
-[zombied_sim_squad_advanced_night]:online_offline_group
-faction = monster_special
-npc_random = sim_default_zombied_1, sim_default_zombied_2, sim_default_zombied_3
-npc_in_squad = 3, 4
-common = true
-
-[zombied_sim_squad_veteran_night]:online_offline_group
-faction = monster_special
-npc_random = sim_default_zombied_2, sim_default_zombied_3, sim_default_zombied_4
-npc_in_squad = 3, 4
-common = true
-
-[zombied_sim_squad_mix_night]:online_offline_group ;added
-faction = monster_special
-npc_random = sim_default_zombied_1, sim_default_zombied_2, sim_default_zombied_3, sim_default_zombied_4
-npc_in_squad = 3, 4
-common = true
-
-[simulation_zombie_night]:online_offline_group
-faction = monster_special
-npc_random = zombie_weak, zombie_normal, zombie_strong
-npc_in_squad = 3, 4
-common = true
-
-[simulation_zombie_3_6_night]:online_offline_group
-faction = monster_special
-npc_random = zombie_weak, zombie_normal, zombie_strong
-npc_in_squad = 4, 6
-common = true
-
-[simulation_mix_zombie_night]:online_offline_group ;added
-faction = monster_special
-npc_random = zombie_weak, zombie_normal, zombie_strong
-npc_in_squad = 3, 4
-common = true
-
-[simulation_zombie_blind_night]:online_offline_group ;added
-faction = monster_special
-npc_random = zombie_blind
-npc_in_squad = 2, 3
-common = true
-
-[simulation_zombie_blind_3zomb_night]:online_offline_group ;added
-faction = monster_special
-npc = zombie_blind, sim_default_zombied_2, sim_default_zombied_3, sim_default_zombied_4
-npc_in_squad = 4
-common = true
-
-[simulation_zombie_blind_3zomb_civ_night]:online_offline_group ;added
-faction = monster_special
-npc = zombie_blind, zombie_weak, zombie_normal, zombie_strong
-npc_in_squad = 4
-common = true
-
-;------------------------------------------------
-;----< Tushkano and Rats>-----|
-
-[simulation_tushkano_night]:online_offline_group
-faction = monster_special
-npc_random = tushkano_normal, tushkano_normal_a, tushkano_normal_b, tushkano_normal_c, tushkano_weak, tushkano_weak_a, tushkano_weak_b, tushkano_weak_c, tushkano_strong, tushkano_strong_a, tushkano_strong_b, tushkano_strong_c
-npc_in_squad = 3, 4
-common = true
-
-[simulation_tushkano_7_10_night]:online_offline_group
-faction = monster_special
-npc_random = tushkano_normal, tushkano_normal_a, tushkano_normal_b, tushkano_normal_c, tushkano_weak, tushkano_weak_a, tushkano_weak_b, tushkano_weak_c, tushkano_strong, tushkano_strong_a, tushkano_strong_b, tushkano_strong_c
-npc_in_squad = 7, 10
-common = true
-
-[simulation_rat_night]:online_offline_group
-faction = monster_special
-npc_random = rat_weak, rat_normal, rat_strong, rat_wolf, rat_weak, rat_weak, rat_normal, rat_normal, rat_weak, rat_weak, rat_normal, rat_normal, rat_weak, rat_weak, rat_normal, rat_normal, rat_weak, rat_weak
-npc_in_squad = 5, 7
-common = true
-
-[simulation_rats_night]:online_offline_group
-faction = monster_special
-npc_random = rat_weak, rat_normal, rat_strong, rat_wolf, rat_weak, rat_weak
-npc_in_squad = 7, 9
-common = true
-
-[simulation_rats_7_10_night]:online_offline_group
-faction = monster_special
-npc_random = rat_weak, rat_normal, rat_weak, rat_wolf, rat_weak, rat_weak
-npc_in_squad = 9, 12
-common = true
-
-;------------------------------------------------
-;----< Flesh and Boars >-----|
-
-[simulation_boar_night]:online_offline_group
-faction = monster_special
-npc_random = boar_normal, boar_normal, boar_normal, boar_strong, boar_01a_weak, boar_02a_weak, boar_02a_strong, boar_01a_hard, boar_02a_hard
-npc_in_squad = 1, 3
-common = true
-
-[simulation_boar_3_5_night]:online_offline_group
-faction = monster_special
-npc_random = boar_normal, boar_normal, boar_normal, boar_strong, boar_01a_weak, boar_02a_weak, boar_02a_strong, boar_01a_hard, boar_02a_hard
-npc_in_squad = 3, 4
-common = true
-
-[simulation_flesh_night]:online_offline_group
-faction = monster_special
-npc_random = flesh_01a_weak, flesh_01a_normal, flesh_01a_strong, flesh_02a_weak, flesh_02a_normal, flesh_02a_strong, flesh_03a_normal, flesh_03a_strong
-npc_in_squad = 2, 3
-common = true
-
-[simulation_mix_boar_flesh_night]:online_offline_group
-faction = monster_special
-npc_random = flesh_01a_weak, flesh_01a_normal, flesh_01a_strong, flesh_02a_weak, flesh_02a_normal, flesh_02a_strong, flesh_03a_normal, flesh_03a_strong, boar_normal, boar_normal, boar_normal, boar_strong, boar_01a_weak, boar_02a_weak, boar_02a_strong, boar_01a_hard, boar_02a_hard
-npc_in_squad = 2, 3
-common = true
-
-;------------------------------------------------
-;----< Dogs >-----|
-
-[simulation_dog_night]:online_offline_group
-faction = monster_special
-npc_random = dog_normal_red, dog_normal_white, dog_normal_brown, dog_normal_bulterier, dog_weak_red, dog_weak_white, dog_weak_brown, dog_weak_bulterier, dog_strong_red, dog_strong_white, dog_strong_brown, dog_strong_bulterier, dog_strong_black
-npc_in_squad = 2, 4
-common = true
-
-[simulation_dog_5_7_night]:online_offline_group
-faction = monster_special
-npc_random = dog_normal_red, dog_normal_white, dog_normal_brown, dog_normal_bulterier, dog_weak_red, dog_weak_white, dog_weak_brown, dog_weak_bulterier, dog_strong_red, dog_strong_white, dog_strong_brown, dog_strong_bulterier, dog_strong_black
-npc_in_squad = 3, 5
-common = true
-
-[simulation_mix_dogs_night]:online_offline_group
-faction = monster_special
-npc_random = dog_normal_brown, pseudodog_grey_weak, pseudodog_normal, pseudodog_strong, pseudodog_grey_strong, dog_normal_red, dog_normal_white, dog_normal_brown, dog_normal_bulterier, dog_weak_red, dog_weak_white, dog_weak_brown, dog_weak_bulterier, dog_strong_red, dog_strong_white, dog_strong_brown, dog_strong_bulterier, dog_strong_black, dog_weak_bulterier, dog_weak_brown, dog_weak_brown
-npc_in_squad = 2, 4
-common = true
-
-[simulation_pseudodog_night]:online_offline_group
-faction = monster_special
-npc_random = pseudodog_grey_weak, pseudodog_grey_weak, pseudodog_normal, pseudodog_strong, pseudodog_grey_strong
-npc_in_squad = 1, 2
-common = true
-
-;------------------------------------------------
-;----< Cat >-----|
-
-[simulation_cat_night]:online_offline_group
-faction = monster_special
-npc_random = cat_weak_a, cat_weak_b, cat_weak_c, cat_weak_d, cat_weak_e, cat_normal_a, cat_normal_b, cat_normal_c, cat_normal_d, cat_normal_e, cat_strong_a, cat_strong_b, cat_strong_c, cat_strong_d, cat_strong_e
-npc_in_squad = 1, 3
-common = true
-
-[simulation_cat_3_5_night]:online_offline_group
-faction = monster_special
-npc_random = cat_weak_a, cat_weak_b, cat_weak_c, cat_weak_d, cat_weak_e, cat_normal_a, cat_normal_b, cat_normal_c, cat_normal_d, cat_normal_e, cat_strong_a, cat_strong_b, cat_strong_c, cat_strong_d, cat_strong_e
-npc_in_squad = 3, 4
-common = true
-
-;------------------------------------------------
-;----< Fracture/Izlom >-----|
-
-[simulation_fracture_night]:online_offline_group
-faction = monster_special
-npc_random = fracture_normal, fracture_weak, fracture_strong, fracture_2, fracture_3
-npc_in_squad = 1, 2
-common = true
-
-;------------------------------------------------
-;----< Snork >-----|
-
-[simulation_snork_night]:online_offline_group
-faction = monster_special
-npc_random = snork_weak, snork_weak2, snork_weak3, snork_weak4, snork_normal, snork_normal2, snork_normal3, snork_normal4, snork_strong, snork_strong2, snork_strong3, snork_strong4
-npc_in_squad = 2
-common = true
-
-[simulation_snork_2_3_night]:online_offline_group ;added
-faction = monster_special
-npc_random = snork_weak, snork_weak2, snork_weak3, snork_weak4, snork_normal, snork_normal2, snork_normal3, snork_normal4, snork_strong, snork_strong2, snork_strong3, snork_strong4
-npc_in_squad = 2, 3
-common = true
-
-[simulation_snork_2_5_night]:online_offline_group
-faction = monster_special
-npc_random = snork_weak, snork_weak2, snork_weak3, snork_weak4, snork_normal, snork_normal2, snork_normal3, snork_normal4, snork_strong, snork_strong2, snork_strong3, snork_strong4
-npc_in_squad = 2, 4
-common = true
-
-;------------------------------------------------
-;----< Lurker >-----|
-[simulation_lurker_blue_night]:online_offline_group
-faction = monster_special
-npc_random = lurker_1_weak, lurker_1_normal, lurker_1_strong
-npc_in_squad = 1, 2
-common = true
-
-[simulation_lurker_brown_night]:online_offline_group
-faction = monster_special
-npc_random = lurker_2_weak, lurker_2_normal, lurker_2_strong
-npc_in_squad = 1, 2
-common = true
-
-[simulation_lurker_black_night]:online_offline_group
-faction = monster_special
-npc_random = lurker_3_weak, lurker_3_normal, lurker_3_strong
-npc_in_squad = 1, 2
-common = true
-
-[simulation_lurker_night]:online_offline_group
-faction = monster_special
-npc_random = lurker_1_weak, lurker_1_normal, lurker_1_strong, lurker_2_weak, lurker_2_normal, lurker_2_strong, lurker_3_weak, lurker_3_normal, lurker_3_strong
-npc_in_squad = 1, 2
-common = true
-
-[simulation_lurker_1_2_night]:online_offline_group
-faction = monster_special
-npc_random = lurker_1_weak, lurker_1_normal, lurker_1_strong, lurker_2_weak, lurker_2_normal, lurker_2_strong, lurker_3_weak, lurker_3_normal, lurker_3_strong
-npc_in_squad = 2
-common = true
-
-;------------------------------------------------
-;----< Bloodsucker >-----|
-
-[simulation_bloodsucker_night]:online_offline_group
-faction = monster_special
-npc_random = bloodsucker_red_weak, bloodsucker_green_weak, bloodsucker_black_weak, bloodsucker_red_normal, bloodsucker_green_normal, bloodsucker_black_normal, bloodsucker_red_strong, bloodsucker_green_strong, bloodsucker_black_strong ;, bloodsucker_strong_big
-npc_in_squad = 1
-common = true
-
-[simulation_bloodsucker_green_night]:online_offline_group
-faction = monster_special
-npc_random = bloodsucker_green_weak, bloodsucker_green_normal, bloodsucker_green_normal, bloodsucker_green_normal, bloodsucker_green_normal, bloodsucker_green_strong ;, bloodsucker_strong_big
-npc_in_squad = 1
-common = true
-
-[simulation_bloodsucker_red_night]:online_offline_group
-faction = monster_special
-npc_random = bloodsucker_red_weak, bloodsucker_red_normal, bloodsucker_red_normal, bloodsucker_red_normal, bloodsucker_red_normal, bloodsucker_red_strong ;, bloodsucker_strong_big
-npc_in_squad = 1
-common = true
-
-[simulation_bloodsucker_black_night]:online_offline_group
-faction = monster_special
-npc_random = bloodsucker_black_weak, bloodsucker_black_normal, bloodsucker_black_normal, bloodsucker_black_normal, bloodsucker_black_normal, bloodsucker_black_strong ;, bloodsucker_strong_big
-npc_in_squad = 1
-common = true
-
-[simulation_bloodsucker_1_2_night]:online_offline_group
-faction = monster_special
-npc_random = bloodsucker_red_weak, bloodsucker_green_weak, bloodsucker_black_weak, bloodsucker_red_normal, bloodsucker_green_normal, bloodsucker_black_normal, bloodsucker_red_strong, bloodsucker_green_strong, bloodsucker_black_strong ;, bloodsucker_strong_big
-npc_in_squad = 1, 2
-common = true
-
-[simulation_bloodsucker_2weak_night]:online_offline_group
-faction = monster_special
-npc_random = bloodsucker_red_weak, bloodsucker_green_weak, bloodsucker_black_weak
-npc_in_squad = 2
-common = true
-
-;------------------------------------------------
-;----< Psy-sucker >-----|
-[simulation_psysucker_white_night]:online_offline_group
-faction = monster_special
-npc_random = psysucker_2_weak, psysucker_3_normal, psysucker_3_strong ;psysucker_1_weak, psysucker_1_normal, psysucker_1_strong
-npc_in_squad = 1
-common = true
-
-[simulation_psysucker_brown_night]:online_offline_group
-faction = monster_special
-npc_random = psysucker_2_weak, psysucker_2_normal, psysucker_2_strong
-npc_in_squad = 1
-common = true
-
-[simulation_psysucker_black_night]:online_offline_group
-faction = monster_special
-npc_random = psysucker_3_weak, psysucker_3_normal, psysucker_3_strong
-npc_in_squad = 1
-common = true
-
-[simulation_psysucker_night]:online_offline_group
-faction = monster_special
-npc_random = psysucker_2_weak, psysucker_2_normal, psysucker_2_strong, psysucker_3_weak, psysucker_3_normal, psysucker_3_strong
-npc_in_squad = 1
-common = true
-
-[simulation_psysucker_1_2_night]:online_offline_group
-faction = monster_special
-npc_random = psysucker_2_weak, psysucker_2_normal, psysucker_2_strong, psysucker_3_weak, psysucker_3_normal, psysucker_3_strong
-npc_in_squad = 1, 2
-common = true
-
-;------------------------------------------------
-;----< Psy-dog >-----|
-
-[simulation_psy_dog_night]:online_offline_group
-faction = monster_special
-npc_random = psy_dog_normal
-npc_in_squad = 1, 2
-common = true
-
-[simulation_psy_dog_squad_night]:online_offline_group
-faction = monster_special
-npc = psy_dog_normal, dog_normal_red, dog_normal_white, dog_normal_brown, dog_normal_bulterier
-common = true
-
-;------------------------------------------------
-;----< Karlik >-----|
-
-[simulation_karlik_night]:online_offline_group ;Added
-faction = monster_special
-npc_random = m_karlik_e
-npc_in_squad = 1
-common = true
-
-;------------------------------------------------
-;----< Burer >-----|
-
-[simulation_burer_night]:online_offline_group
-faction = monster_special
-npc_random = burer_normal, burer_normal2, burer_weak, burer_weak2
-npc_in_squad = 1
-common = true
-
-[simulation_burer_2_3_night]:online_offline_group
-faction = monster_special
-npc_random = burer_normal, burer_normal2, burer_weak, burer_weak2
-npc_in_squad = 2, 3
-common = true
-
-[simulation_burer_1_2_day_night]:online_offline_group
-faction = monster_special
-npc_random = burer_normal, burer_normal2, burer_weak, burer_weak2
-npc_in_squad = 1, 2
-common = true
-
-[simulation_bur_5rat_day_night]:online_offline_group
-faction = monster_special
-npc = burer_normal, tushkano_weak, tushkano_weak, tushkano_weak, tushkano_weak, tushkano_weak
-;npc = burer_normal, rat_weak, rat_weak, rat_weak, rat_weak, rat_weak
-npc_in_squad = 6
-common = true
-
-;------------------------------------------------
-;----< Controller >-----|
-
-[simulation_controller_night]:online_offline_group
-faction = monster_special
-npc_random = m_controller_normal, m_controller_normal2, m_controller_normal1111, m_controller_normal777, m_controller_normal888
-npc_in_squad = 1
-common = true
-
-[simulation_contr_5rat_3tush_night]:online_offline_group
-faction = monster_special
-npc = m_controller_normal, tushkano_weak, tushkano_weak, tushkano_weak, tushkano_weak, tushkano_weak, tushkano_weak, tushkano_weak, tushkano_weak
-;npc = rat_weak, rat_weak, rat_weak, rat_weak, rat_weak, tushkano_weak, tushkano_weak, tushkano_weak, m_controller_normal
-npc_in_squad = 9
-common = true
-
-[simulation_contr_5dog_night]:online_offline_group
-faction = monster_special
-npc = dog_weak_red, dog_weak_white, dog_weak_brown, dog_weak_bulterier, dog_strong_red, m_controller_normal
-npc_in_squad = 6
-common = true
-
-[simulation_contr_3dog_4tush_night]:online_offline_group
-faction = monster_special
-npc = dog_normal_red, dog_normal_brown, dog_normal_brown, tushkano_weak, tushkano_weak, tushkano_weak, tushkano_weak, m_controller_normal
-npc_in_squad = 8
-common = true
-
-[simulation_contr_3sn_3gzomb_night]:online_offline_group
-faction = monster_special
-npc = snork_weak3, zombie_weak, zombie_weak, zombie_normal, snork_weak, snork_weak2, m_controller_normal
-npc_in_squad = 7
-common = true
-
-[simulation_contr_6gzomb_night]:online_offline_group
-faction = monster_special
-npc = zombie_weak, zombie_weak, zombie_weak, zombie_normal, zombie_weak, zombie_normal, m_controller_normal
-npc_in_squad = 7
-common = true
-
-[simulation_contr_2sn_4zomb_night]:online_offline_group
-faction = monster_special
-npc = snork_weak, snork_weak2, sim_default_zombied_1, sim_default_zombied_1, sim_default_zombied_2, sim_default_zombied_3, m_controller_normal
-npc_in_squad = 7
-common = true
-
-[simulation_contr_4tush_3sn_night]:online_offline_group
-faction = monster_special
-npc = tushkano_normal, tushkano_normal, tushkano_normal, tushkano_normal, snork_weak, snork_weak, snork_strong, m_controller_normal
-npc_in_squad = 8
-common = true
-
-[simulation_contr_5zomb_weak_night]:online_offline_group
-faction = monster_special
-npc = sim_default_zombied_1, sim_default_zombied_1, sim_default_zombied_1, sim_default_zombied_1, sim_default_zombied_2, m_controller_normal
-npc_in_squad = 6
-common = true
-
-[simulation_contr_4zomb_norm_night]:online_offline_group
-faction = monster_special
-npc = sim_default_zombied_2, sim_default_zombied_2, sim_default_zombied_1, sim_default_zombied_3, m_controller_normal
-npc_in_squad = 5
-common = true
-
-[simulation_contr_4zomb_str_night]:online_offline_group
-faction = monster_special
-npc = sim_default_zombied_4, sim_default_zombied_4, sim_default_zombied_2, sim_default_zombied_3, m_controller_normal2
-npc_in_squad = 5
-common = true
-
-[simulation_contr_5sn_night]:online_offline_group
-faction = monster_special
-npc = snork_weak, snork_weak, snork_strong, snork_strong, snork_strong, m_controller_normal
-npc_in_squad = 6
-common = true
-
-;------------------------------------------------
-;----< Poltergeist >-----|
-; m_poltergeist_normal_black, m_poltergeist_normal_flame
-[simulation_poltergeist_tele_night]:online_offline_group
-faction = monster_special
-npc_random = m_poltergeist_normal_tele
-npc_in_squad = 1, 1
-common = true
-
-[simulation_poltergeist_flame_night]:online_offline_group
-faction = monster_special
-npc_random = m_poltergeist_normal_flame
-npc_in_squad = 1, 1
-common = true
-
-[simulation_poltergeist_black_night]:online_offline_group
-faction = monster_special
-npc_random = m_poltergeist_normal_black
-npc_in_squad = 1, 1
-common = true
-
-[simulation_poltergeist_night]:online_offline_group ;added
-faction = monster_special
-npc_random = m_poltergeist_normal_tele, m_poltergeist_normal_flame, m_poltergeist_normal_black
-npc_in_squad = 1, 1
-common = true
-
-;------------------------------------------------
-;----< Psy-Controller >-----|
-
-[simulation_controller_psy_night]:online_offline_group
-faction = monster_special
-npc_random = m_controller_psy
-npc_in_squad = 1
-common = true
-
-;------------------------------------------------
-;----< Chimera >-----|
-
-[simulation_chimera_night]:online_offline_group
-faction = monster_special
-npc_random = chimera_normal, chimera_weak, chimera_strong, chimera_normal2, chimera_normal3, chimera_strong2, chimera_strong3, chimera_strong4
-npc_in_squad = 1
-common = true
-
-[simulation_chimera_2weak_night]:online_offline_group
-faction = monster_special
-npc_random = chimera_weak
-npc_in_squad = 2
-common = true
-
-[simulation_chimera_zaton_night]:online_offline_group
-faction = monster_special
-npc_random = chimera_normal
-npc_in_squad = 1, 1
-target_smart = {=is_dark_night} nil, {~50} zat_sim_5, {~50} zat_sim_3, {~50} zat_sim_1, {~50} zat_sim_18, {~50} zat_sim_10, {~50} zat_sim_7, zat_sim_26
-common = true
-
-[simulation_chimera_pripyat_night]:online_offline_group
-faction = monster_special
-npc_random = chimera_normal
-npc_in_squad = 1, 1
-target_smart = {=is_dark_night} nil, pri_a17
-common = true
-
-[simulation_chimera_jupiter_night]:online_offline_group
-faction = monster_special
-npc_random = chimera_normal
-npc_in_squad = 1, 1
-common = true
-
-;------------------------------------------------
-;----< Giant >-----|
-
-[simulation_gigant_night]:online_offline_group
-faction = monster_special
-npc_random = gigant_normal, gigant_strong
-npc_in_squad = 1
-common = true
-
-[simulation_gigant_2weak_night]:online_offline_group
-faction = monster_special
-npc_random = gigant_weak
-npc_in_squad = 2
-common = true
-
-;------------------------------------------------
-;----< Borya >-----|
-
-[simulation_borya_night]:online_offline_group
-faction = monster_special
-npc_random = borya_normal
-npc_in_squad = 1, 3
-common = true
-
-;------------------------------------------------
-;----< Bibliotekar >-----|
-
-[simulation_bibliotekar_night]:online_offline_group
-faction = monster_special
-npc_random = bibliotekar_weak, bibliotekar_strong
-npc_in_squad = 1, 1
-common = true
-
-;------------------------------------------------
-;----< Poltergiest build >-----|
-
-[simulation_polter_build_night]:online_offline_group
-faction = monster_special
-npc_random = poltergeist_build
-npc_in_squad = 1, 2
-common = true
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/misc/squad_descr/squad_descr_spawn_point_AGR.ltx b/mods/Redone Collection_backup/gamedata/configs/misc/squad_descr/squad_descr_spawn_point_AGR.ltx
deleted file mode 100644
index d9dc3383..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/misc/squad_descr/squad_descr_spawn_point_AGR.ltx
+++ /dev/null
@@ -1,57 +0,0 @@
-![agr_1_6_guards_army_mlr_squad]:online_offline_group
-faction = army
-npc = sim_default_military_0, sim_default_military_0, sim_default_military_1, sim_default_military_2, sim_default_military_2
-!npc_in_squad = 6, 6
-target_smart = agr_smart_terrain_1_6
-story_id = agr_1_6_guards_army_mlr_squad
-
-[agr_1_6_guards_army_mlr_2_squad]:online_offline_group
-faction = army
-npc = sim_default_military_0, sim_default_military_1, sim_default_military_1, sim_default_military_2
-target_smart = agr_smart_terrain_1_6_near_1
-story_id = agr_1_6_guards_army_mlr_2_squad
-
-[agr_1_6_guards_army_mlr_3_squad]:online_offline_group
-faction = army
-npc = sim_default_military_0, sim_default_military_0, sim_default_military_1, sim_default_military_3, sim_default_military_4
-target_smart = agr_smart_terrain_1_6_near_2
-story_id = agr_1_6_guards_army_mlr_3_squad
-
-[agr_patrol_army_mlr_squad]:online_offline_group
-faction = army
-npc = sim_default_military_2, sim_default_military_2
-target_smart = agr_smart_terrain_1_6_near_1
-story_id = agr_patrol_army_mlr_squad
-
-;-------------------------------------------------------------------------
-
-[agr_smart_terrain_4_4_rat_mlr_squad]:online_offline_group
-faction = monster
-npc_random = rat_weak, rat_normal, rat_strong, rat_wolf, rat_weak, rat_weak, rat_normal, rat_normal, rat_weak, rat_weak, rat_normal, rat_normal, rat_weak, rat_weak, rat_normal, rat_normal, rat_weak, rat_weak
-npc_in_squad = 4, 6
-target_smart = agr_smart_terrain_4_4
-
-;-------------------------------------------------------------------------
-
-![agr_u_soldiers_squad]:online_offline_group
-faction = army
-npc = sim_default_military_2, sim_default_military_2, sim_default_military_3, sim_default_military_2, sim_default_military_2, sim_default_military_4, sim_default_military_0, sim_default_military_1
-target_smart = agr_u_soldiers
-!on_death = %+agr_u_soldiers_dead%
-story_id = agr_u_soldiers_squad
-
-[agr_u_bandits_soldiers_squad]:online_offline_group
-faction = army
-npc = sim_default_military_0, sim_default_military_1, sim_default_military_1, sim_default_military_2, sim_default_military_2, sim_default_military_2
-target_smart = agr_u_bandits
-story_id = agr_u_bandits_soldiers_squad
-
-[agr_u_monster_soldiers_squad]:online_offline_group
-faction = army
-npc = sim_default_military_0, sim_default_military_0
-spawn_point = agr_u_monsters_spawn_point
-target_smart = agr_u_monsters
-story_id = agr_u_monster_soldiers_squad
-
-
-
diff --git a/mods/Redone Collection_backup/gamedata/configs/misc/squad_descr/squad_descr_spawn_point_BAR.ltx b/mods/Redone Collection_backup/gamedata/configs/misc/squad_descr/squad_descr_spawn_point_BAR.ltx
deleted file mode 100644
index fde7db29..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/misc/squad_descr/squad_descr_spawn_point_BAR.ltx
+++ /dev/null
@@ -1,106 +0,0 @@
-![bar_dolg_general_squad]:online_offline_group
-faction = dolg
-npc = sim_default_duty_2, sim_default_duty_1, sim_default_duty_0, sim_default_duty_0
-npc_in_squad = 4
-target_smart = bar_dolg_general
-always_arrived = true
-
-![bar_dolg_bunker_squad]:online_offline_group
-faction = dolg
-npc_random = sim_default_duty_4, sim_default_duty_4, sim_default_duty_4, sim_default_duty_3, sim_default_duty_3, sim_default_duty_3
-npc_in_squad = 6, 6
-target_smart = bar_dolg_bunker
-always_arrived = true
-
-[bar_dolg_sick_stalker_squad]:online_offline_group
-faction = dolg
-npc = sim_default_duty_1
-npc_in_squad = 1
-target_smart = bar_dolg_general
-always_arrived = true
-
-[bar_duty_medic_stalker_squad]:online_offline_group
-faction = dolg
-npc = bodyguard_duty_medic_bar_general
-npc_in_squad = 1
-target_smart = bar_dolg_general
-always_arrived = true
-
-;------------------------------------------------------------------------
-
-[bar_freedom_general_squad]:online_offline_group
-faction = freedom
-npc = sim_default_freedom_0, sim_default_freedom_1, sim_default_freedom_2, sim_default_freedom_2, sim_default_freedom_2, sim_default_freedom_2
-target_smart = bar_dolg_general
-story_id = bar_freedom_general_squad
-always_arrived = true
-
-[bar_freedom_bunker_squad]:online_offline_group
-faction = freedom
-npc = sim_default_freedom_0, sim_default_freedom_1, sim_default_freedom_2, sim_default_freedom_2
-target_smart = bar_dolg_bunker
-story_id = bar_freedom_bunker_squad
-always_arrived = true
-
-[bar_freedom_security_squad]:online_offline_group
-faction = freedom
-npc = sim_default_freedom_1, sim_default_freedom_1, sim_default_freedom_1, sim_default_freedom_2, sim_default_freedom_2, sim_default_freedom_2, sim_default_freedom_2, sim_default_freedom_2, sim_default_freedom_3, sim_default_freedom_4
-target_smart = bar_zastava
-story_id = bar_freedom_security_squad
-always_arrived = true
-
-[bar_freedom_guard_squad]:online_offline_group
-faction = freedom
-npc = sim_default_freedom_1, sim_default_freedom_1, sim_default_freedom_1, sim_default_freedom_2, sim_default_freedom_2, sim_default_freedom_3
-target_smart = bar_zastava_2
-story_id = bar_freedom_guard_squad
-always_arrived = true
-
-[bar_freedom_visitors_squad]:online_offline_group
-faction = freedom
-npc = sim_default_freedom_0, sim_default_freedom_0, sim_default_freedom_1, sim_default_freedom_1
-target_smart = bar_visitors
-story_id = bar_freedom_visitors_squad
-always_arrived = true
-
-;------------------------------------------------------------------------
-
-[bar_mlr_1_visitors]:online_offline_group
-faction = stalker
-npc = sim_default_stalker_2
-npc_in_squad = 1
-target_smart = bar_visitors
-
-[bar_mlr_2_visitors]:online_offline_group
-faction = csky
-npc = sim_default_csky_2
-npc_in_squad = 1
-target_smart = bar_visitors
-
-[bar_mlr_3_visitors]:online_offline_group
-faction = ecolog
-npc = sim_default_ecolog_2
-npc_in_squad = 1
-target_smart = bar_visitors
-
-;------------------------------------------------------------------------
-
-[bar_bandit_zastava_dogs_lair_2_squad]:online_offline_group
-faction = bandit
-npc_random = sim_default_bandit_0, sim_default_bandit_0, sim_default_bandit_0, sim_default_bandit_1, sim_default_bandit_1, sim_default_bandit_2
-npc_in_squad = 3, 3
-target_smart = bar_zastava_dogs_lair_2
-
-;------------------------------------------------------------------------
-
-[bar_dolg_general_squad_rat_mlr_squad]:online_offline_group
-faction = monster
-npc_random = rat_weak, rat_normal, rat_strong, rat_wolf, rat_weak, rat_weak, rat_normal, rat_normal, rat_weak, rat_weak, rat_normal, rat_normal, rat_weak, rat_weak, rat_normal, rat_normal, rat_weak, rat_weak
-npc_in_squad = 2, 4
-target_smart = bar_dolg_general
-
-[bar_dolg_bunker_squad_rat_mlr_squad]:online_offline_group
-faction = monster
-npc_random = rat_weak, rat_normal, rat_strong, rat_wolf, rat_weak, rat_weak, rat_normal, rat_normal, rat_weak, rat_weak, rat_normal, rat_normal, rat_weak, rat_weak, rat_normal, rat_normal, rat_weak, rat_weak
-npc_in_squad = 2, 4
-target_smart = bar_dolg_bunker
diff --git a/mods/Redone Collection_backup/gamedata/configs/misc/squad_descr/squad_descr_spawn_point_CIT.ltx b/mods/Redone Collection_backup/gamedata/configs/misc/squad_descr/squad_descr_spawn_point_CIT.ltx
deleted file mode 100644
index 25013666..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/misc/squad_descr/squad_descr_spawn_point_CIT.ltx
+++ /dev/null
@@ -1,69 +0,0 @@
-
-[cit_bandit_guard_squad_1]:online_offline_group
-faction = bandit
-npc_random = sim_default_bandit_0, sim_default_bandit_1, sim_default_bandit_1, sim_default_bandit_2, sim_default_bandit_3
-npc_in_squad = 2, 2
-target_smart = cit_killers_vs_bandits
-
-[cit_bandit_guard_squad_2]:online_offline_group
-faction = bandit
-npc_random = sim_default_bandit_0, sim_default_bandit_1, sim_default_bandit_1, sim_default_bandit_2, sim_default_bandit_2
-npc_in_squad = 2, 2
-target_smart = cit_killers_vs_bandits
-
-[cit_bandit_guard_squad_3]:online_offline_group
-faction = bandit
-npc_random = sim_default_bandit_0, sim_default_bandit_1, sim_default_bandit_1, sim_default_bandit_2, sim_default_bandit_2
-npc_in_squad = 2, 2
-target_smart = cit_killers_vs_bandits
-
-;------------------------------------------------------------------------
-
-[cit_killers_guard_squad_1]:online_offline_group
-faction = killer
-npc_random = sim_default_killer_1, sim_default_killer_2, sim_default_killer_2, sim_default_killer_2, sim_default_killer_2, sim_default_killer_3
-npc_in_squad = 2, 2
-target_smart = cit_killers_vs_bandits
-always_arrived = true
-
-[cit_killers_guard_squad_2]:online_offline_group
-faction = killer
-npc_random = sim_default_killer_1, sim_default_killer_1, sim_default_killer_2, sim_default_killer_2, sim_default_killer_2, sim_default_killer_2
-npc_in_squad = 2, 2
-target_smart = cit_killers_vs_bandits
-always_arrived = true
-
-[cit_killers_merc_guard_squad_3]:online_offline_group
-faction = killer
-npc = sim_default_killer_3, sim_default_killer_3, sim_default_killer_3, sim_default_killer_3
-target_smart = cit_killers
-always_arrived = true
-
-;------------------------------------------------------------------------
-
-[cit_kanaliz1_zombied_squad]:online_offline_group
-faction = zombied
-npc_random = sim_default_zombied_1, sim_default_zombied_1, sim_default_zombied_2, sim_default_zombied_2, sim_default_zombied_2, sim_default_zombied_3, sim_default_zombied_4
-npc_in_squad = 3, 4
-target_smart = cit_kanaliz1
-
-[cit_kanaliz2_zombied_squad]:online_offline_group
-faction = zombied
-npc_random = sim_default_zombied_1, sim_default_zombied_1, sim_default_zombied_2, sim_default_zombied_2, sim_default_zombied_2, sim_default_zombied_3, sim_default_zombied_4
-npc_in_squad = 3, 4
-target_smart = cit_kanaliz2
-
-;------------------------------------------------------------------------
-
-[cit_bandits_poltergeist_squad]:online_offline_group
-faction = monster_special
-npc = m_poltergeist_normal_tele, m_poltergeist_normal_tele
-target_smart = cit_bandits
-
-;------------------------------------------------------------------------
-
-[cit_killers_2_rat_mlr_squad]:online_offline_group
-faction = monster
-npc_random = rat_weak, rat_normal, rat_strong, rat_wolf, rat_weak, rat_weak, rat_normal, rat_normal, rat_weak, rat_weak, rat_normal, rat_normal, rat_weak, rat_weak, rat_normal, rat_normal, rat_weak, rat_weak
-npc_in_squad = 2, 4
-target_smart = cit_killers_2
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/misc/squad_descr/squad_descr_spawn_point_DS.ltx b/mods/Redone Collection_backup/gamedata/configs/misc/squad_descr/squad_descr_spawn_point_DS.ltx
deleted file mode 100644
index 2697456b..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/misc/squad_descr/squad_descr_spawn_point_DS.ltx
+++ /dev/null
@@ -1,59 +0,0 @@
-[ds_ptr4_stalker_mlr_2_squad]:online_offline_group
-faction = stalker
-npc_random = sim_default_stalker_0, sim_default_stalker_1, sim_default_stalker_1, sim_default_stalker_2
-npc_in_squad = 1, 4
-target_smart = ds_ptr4
-
-[ds_ptr4_killer_mlr_2_squad]:online_offline_group
-faction = killer
-npc_random = sim_default_killer_1, sim_default_killer_1, sim_default_killer_1, sim_default_killer_2
-npc_in_squad = 2, 4
-target_smart = ds_ptr4
-
-[ds_ptr4_csky_mlr_2_squad]:online_offline_group
-faction = csky
-npc_random = sim_default_csky_0, sim_default_csky_1, sim_default_csky_1, sim_default_csky_2, sim_default_csky_2
-npc_in_squad = 2, 4
-target_smart = ds_ptr4
-
-[ds_ptr4_bandit_mlr_2_squad]:online_offline_group
-faction = bandit
-npc_random = sim_default_bandit_0, sim_default_bandit_1, sim_default_bandit_2
-npc_in_squad = 2, 3
-target_smart = ds_ptr4
-
-[ds_ptr4_renegade_mlr_2_squad]:online_offline_group
-faction = renegade
-npc_random = sim_default_renegade_0, sim_default_renegade_1, sim_default_renegade_2
-npc_in_squad = 2, 3
-target_smart = ds_ptr4
-
-[ds_ptr4_army_mlr_2_squad]:online_offline_group
-faction = army
-npc_random = sim_default_military_0, sim_default_military_1, sim_default_military_2
-npc_in_squad = 2, 3
-target_smart = ds_ptr4
-
-;------------------------------------------------------------------------
-
-[ds_kem2_military_mlr_2_squad]:online_offline_group
-faction = army
-npc_random = sim_default_military_0, sim_default_military_0, sim_default_military_1, sim_default_military_1, sim_default_military_2
-npc_in_squad = 4, 4
-target_smart = ds_kem2
-always_arrived = true
-
-[ds_kem2_military_mlr_2_sniper]:online_offline_group
-faction = army
-npc = sim_default_military_3_sniper, sim_default_military_3_sniper
-npc_in_squad = 2, 2
-target_smart = ds_kem2
-always_arrived = true
-
-;------------------------------------------------------------------------
-
-[ds_ds2_lager_st_isg_squad]:online_offline_group
-faction = isg
-npc = sim_default_isg_1, sim_default_isg_1, sim_default_isg_1, sim_default_isg_2, sim_default_isg_2
-target_smart = ds2_lager_st
-always_arrived = true
diff --git a/mods/Redone Collection_backup/gamedata/configs/misc/squad_descr/squad_descr_spawn_point_ESC.ltx b/mods/Redone Collection_backup/gamedata/configs/misc/squad_descr/squad_descr_spawn_point_ESC.ltx
deleted file mode 100644
index 7388d7ac..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/misc/squad_descr/squad_descr_spawn_point_ESC.ltx
+++ /dev/null
@@ -1,97 +0,0 @@
-![escape_novice_visiters_village]:online_offline_group
-faction = stalker
-npc = sim_default_stalker_0, sim_default_stalker_0, sim_default_stalker_0, sim_default_stalker_0
-npc_in_squad = 4, 4
-target_smart = esc_smart_terrain_2_12
-
-![escape_novice_visiters_village2]:online_offline_group
-faction = stalker
-npc = sim_default_stalker_0, sim_default_stalker_0, sim_default_stalker_0, sim_default_stalker_0
-npc_in_squad = 4, 4
-target_smart = esc_smart_terrain_2_12
-
-;------------------------------------------------------------------------
-
-![esc_smart_terrain_3_16_military_mlr_squad]:online_offline_group
-faction = army
-npc_random = sim_default_military_0, sim_default_military_0, sim_default_military_1, sim_default_military_1, sim_default_military_2, sim_default_military_2, sim_default_military_2, sim_default_military_2
-npc_in_squad = 4, 4
-target_smart = esc_smart_terrain_3_16
-always_arrived = true
-
-![esc_smart_terrain_3_16_military_mlr_patrol]:online_offline_group
-faction = army
-npc_random = sim_default_military_0, sim_default_military_1, sim_default_military_1, sim_default_military_2
-npc_in_squad = 4, 4
-target_smart = esc_smart_terrain_3_16
-always_arrived = true
-
-![karat_army_esc_smart_terrain_2_12]:online_offline_group
-faction = army
-npc = sim_default_military_1, sim_default_military_2, sim_default_military_2, sim_default_military_2, sim_default_military_2, sim_default_military_3, sim_default_military_3, sim_default_military_3, sim_default_military_3
-target_smart = esc_smart_terrain_5_2
-always_arrived = true
-
-![most_army_esc_smart_terrain_6_8]:online_offline_group
-faction = army
-npc = sim_default_military_1, sim_default_military_1, sim_default_military_2, sim_default_military_2, sim_default_military_2, sim_default_military_3
-npc_in_squad = 6, 6
-target_smart = esc_smart_terrain_6_8
-always_arrived = true
-
-[kpp_army_mlr_esc_smart_terrain_3_16]:online_offline_group
-faction = army
-npc = sim_default_military_0, sim_default_military_0, sim_default_military_0, sim_default_military_1, sim_default_military_2, sim_default_military_2
-npc_in_squad = 6, 6
-target_smart = esc_smart_terrain_3_16
-always_arrived = true
-
-;------------------------------------------------------------------------
-
-![atp_bandit_esc_smart_terrain_7_11]:online_offline_group
-faction = bandit
-npc = sim_default_bandit_0, sim_default_bandit_0, sim_default_bandit_0, sim_default_bandit_1, sim_default_bandit_1, sim_default_bandit_2, sim_default_bandit_2
-!npc_in_squad = 7, 7
-target_smart = esc_smart_terrain_7_11
-always_arrived = true
-
-[esc_bandit_smart_terrain_3_7_squad]:online_offline_group
-faction = bandit
-npc_random = sim_default_bandit_0, sim_default_bandit_0, sim_default_bandit_0, sim_default_bandit_1, sim_default_bandit_1, sim_default_bandit_2
-npc_in_squad = 2, 3
-target_smart = esc_smart_terrain_3_7
-
-;------------------------------------------------------------------------
-
-[esc_renegade_smart_terrain_3_7_squad]:online_offline_group
-faction = renegade
-npc_random = sim_default_renegade_0, sim_default_renegade_0, sim_default_renegade_0, sim_default_renegade_1, sim_default_renegade_1
-npc_in_squad = 2, 3
-target_smart = esc_smart_terrain_3_7
-
-;------------------------------------------------------------------------
-
-[esc_monster_smart_terrain_3_7_squad]:online_offline_group
-faction = monster_vegetarian
-npc_random = flesh_01a_weak, flesh_01a_normal, flesh_01a_strong, flesh_02a_weak, flesh_02a_normal, flesh_02a_strong, flesh_03a_normal, flesh_03a_strong, boar_normal, boar_normal, boar_normal, boar_strong, boar_01a_weak, boar_02a_weak, boar_02a_strong, boar_01a_hard, boar_02a_hard
-npc_in_squad = 2, 4
-target_smart = esc_smart_terrain_3_7
-
-[esc_monster_smart_terrain_3_7_squad2]:online_offline_group
-faction = monster_predatory_day
-npc_random = dog_normal_brown, pseudodog_grey_weak, pseudodog_normal, pseudodog_strong, pseudodog_grey_strong, dog_normal_red, dog_normal_white, dog_normal_brown, dog_normal_bulterier, dog_weak_red, dog_weak_white, dog_weak_brown, dog_weak_bulterier, dog_strong_red, dog_strong_white, dog_strong_brown, dog_strong_bulterier, dog_strong_black, dog_weak_bulterier, dog_weak_brown, dog_weak_brown
-npc_in_squad = 2, 4
-target_smart = esc_smart_terrain_3_7
-
-[esc_monster_smart_terrain_3_7_squad3]:online_offline_group
-faction = monster
-npc_random = cat_weak_a, cat_weak_b, cat_weak_c, cat_weak_d, cat_weak_e, cat_normal_a, cat_normal_b, cat_normal_c, cat_normal_d, cat_normal_e, cat_strong_a, cat_strong_b, cat_strong_c, cat_strong_d, cat_strong_e
-npc_in_squad = 2, 4
-target_smart = esc_smart_terrain_3_7
-
-[esc_smart_terrain_2_14_rat_mlr_squad]:online_offline_group
-faction = monster
-npc_random = rat_weak, rat_normal, rat_strong, rat_wolf, rat_weak, rat_weak, rat_normal, rat_normal, rat_weak, rat_weak, rat_normal, rat_normal, rat_weak, rat_weak, rat_normal, rat_normal, rat_weak, rat_weak
-npc_in_squad = 5, 7
-target_smart = esc_smart_terrain_2_14
-always_arrived = true
diff --git a/mods/Redone Collection_backup/gamedata/configs/misc/squad_descr/squad_descr_spawn_point_GAR.ltx b/mods/Redone Collection_backup/gamedata/configs/misc/squad_descr/squad_descr_spawn_point_GAR.ltx
deleted file mode 100644
index 55c4591c..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/misc/squad_descr/squad_descr_spawn_point_GAR.ltx
+++ /dev/null
@@ -1,42 +0,0 @@
-[start_character_hangar_mlr_squad]:online_offline_group
-faction = stalker
-npc = sim_default_stalker_3
-target_smart = gar_smart_terrain_3_5
-story_id = start_character_hangar_mlr_squad
-always_arrived = true
-
-![start_visitirs_hangar_mlr_squad]:online_offline_group
-faction = stalker
-npc = sim_default_stalker_1, sim_default_stalker_1
-target_smart = gar_smart_terrain_3_5
-always_arrived = true
-
-![start_depo_bandit_gar_smart_terrain_3_5]:online_offline_group
-faction = bandit
-npc = sim_default_bandit_0, sim_default_bandit_1, sim_default_bandit_1, sim_default_bandit_1, sim_default_bandit_2, sim_default_bandit_2
-target_smart = gar_smart_terrain_3_5
-always_arrived = true
-
-[start_depo_army_gar_smart_terrain_3_5]:online_offline_group
-faction = army
-npc = sim_default_military_0, sim_default_military_0, sim_default_military_1, sim_default_military_1, sim_default_military_2, sim_default_military_2
-target_smart = gar_smart_terrain_3_5
-always_arrived = true
-
-;------------------------------------------------------------------------
-
-![stalker_sim_dolg_post]:online_offline_group
-faction = dolg
-npc = sim_default_duty_2, sim_default_duty_1, sim_default_duty_1, sim_default_duty_3
-target_smart = gar_smart_terrain_5_2
-always_arrived = true
-
-;------------------------------------------------------------------------
-
-![stalker_gar_smart_terrain_6_3]:online_offline_group
-faction = stalker
-npc_random = sim_default_stalker_0, sim_default_stalker_0, sim_default_stalker_0, sim_default_stalker_1, sim_default_stalker_2
-npc_in_squad = 2, 2
-target_smart = gar_smart_terrain_6_3
-always_arrived = true
-
diff --git a/mods/Redone Collection_backup/gamedata/configs/misc/squad_descr/squad_descr_spawn_point_MAR.ltx b/mods/Redone Collection_backup/gamedata/configs/misc/squad_descr/squad_descr_spawn_point_MAR.ltx
deleted file mode 100644
index b8359c67..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/misc/squad_descr/squad_descr_spawn_point_MAR.ltx
+++ /dev/null
@@ -1,153 +0,0 @@
-![mar_smart_terrain_base_lager_squad]:online_offline_group
-faction = csky
-npc = sim_default_csky_0, sim_default_csky_0, sim_default_csky_1, sim_default_csky_1, sim_default_csky_2, sim_default_csky_2, sim_default_csky_3
-target_smart = mar_smart_terrain_base
-story_id = mar_smart_terrain_base_lager_squad
-always_arrived = true
-
-[camp_csky_mar_smart_terrain_5_12]:online_offline_group
-faction = csky
-npc_random = sim_default_csky_0, sim_default_csky_0, sim_default_csky_0, sim_default_csky_1, sim_default_csky_1, sim_default_csky_1, sim_default_csky_2
-npc_in_squad = 3, 3
-target_smart = mar_smart_terrain_5_12
-
-[pump_csky_mar_smart_terrain_5_8]:online_offline_group
-faction = csky
-npc_random = sim_default_csky_0, sim_default_csky_0, sim_default_csky_0, sim_default_csky_1, sim_default_csky_1, sim_default_csky_1, sim_default_csky_2
-npc_in_squad = 4, 4
-target_smart = mar_smart_terrain_5_8
-
-[mar_smart_terrain_3_3_csky_squad]:online_offline_group
-faction = csky
-npc_random = sim_default_csky_0, sim_default_csky_1, sim_default_csky_1, sim_default_csky_1, sim_default_csky_2, sim_default_csky_2
-npc_in_squad = 4, 4
-target_smart = mar_smart_terrain_3_3
-
-[mar_smart_terrain_4_5_csky_squad]:online_offline_group
-faction = csky
-npc_random = sim_default_csky_0, sim_default_csky_1, sim_default_csky_1, sim_default_csky_1, sim_default_csky_2, sim_default_csky_2
-npc_in_squad = 5, 5
-target_smart = mar_smart_terrain_4_5
-
-;------------------------------------------------------------------------
-
-[ecolog_mar_smart_terrain_8_11]:online_offline_group
-faction = ecolog
-npc_random = sim_default_ecolog_0,sim_default_ecolog_1, sim_default_ecolog_2
-npc_in_squad = 3, 3
-target_smart = mar_smart_terrain_8_11
-
-;------------------------------------------------------------------------
-
-[mar_smart_terrain_base_army_squad]:online_offline_group
-faction = army
-npc = sim_default_military_0, sim_default_military_1, sim_default_military_1, sim_default_military_2, sim_default_military_2, sim_default_military_3
-target_smart = mar_smart_terrain_base
-story_id = mar_smart_terrain_base_lager_squad
-always_arrived = true
-
-[camp_army_mar_smart_terrain_5_12]:online_offline_group
-faction = army
-npc_random = sim_default_military_0, sim_default_military_1, sim_default_military_1, sim_default_military_2, sim_default_military_2
-npc_in_squad = 5, 5
-target_smart = mar_smart_terrain_5_12
-
-[tower_army_mar_smart_terrain_6_11]:online_offline_group
-faction = army
-npc_random = sim_default_military_1, sim_default_military_2
-npc_in_squad = 3, 4
-target_smart = mar_smart_terrain_6_11
-
-[mar_smart_terrain_3_3_army_squad]:online_offline_group
-faction = army
-npc_random = sim_default_military_0, sim_default_military_1, sim_default_military_1, sim_default_military_2, sim_default_military_2
-npc_in_squad = 4, 4
-target_smart = mar_smart_terrain_3_3
-
-[mar_smart_terrain_4_5_army_squad]:online_offline_group
-faction = army
-npc_random = sim_default_military_0, sim_default_military_1, sim_default_military_1, sim_default_military_2, sim_default_military_2
-npc_in_squad = 5, 5
-target_smart = mar_smart_terrain_4_5
-
-[mar_smart_terrain_10_5_army_squad]:online_offline_group
-faction = army
-npc = sim_default_military_0, sim_default_military_0, sim_default_military_1
-target_smart = mar_smart_terrain_10_5
-story_id = mar_smart_terrain_10_5_army_squad
-
-[mar_smart_terrain_12_2_army_squad]:online_offline_group
-faction = army
-npc = sim_default_military_0, sim_default_military_0, sim_default_military_1, sim_default_military_1
-target_smart = mar_smart_terrain_12_2
-story_id = mar_smart_terrain_12_2_army_squad
-
-;------------------------------------------------------------------------
-
-[mar_smart_terrain_3_3_renegade_squad]:online_offline_group
-faction = renegade
-npc_random = sim_default_renegade_0, sim_default_renegade_0, sim_default_renegade_1, sim_default_renegade_1, sim_default_renegade_2
-npc_in_squad = 3, 3
-target_smart = mar_smart_terrain_3_3
-
-[mar_smart_terrain_4_5_renegade_squad]:online_offline_group
-faction = renegade
-npc_random = sim_default_renegade_0, sim_default_renegade_0,sim_default_renegade_1, sim_default_renegade_1
-npc_in_squad = 3, 3
-target_smart = mar_smart_terrain_4_5
-
-[renegade_guard_mar_smart_terrain_3_3]:online_offline_group
-faction = renegade
-npc = sim_default_renegade_1
-target_smart = mar_smart_terrain_3_3
-
-[mar_renegade_guard_patrol_squad]:online_offline_group
-faction = renegade
-npc_random = sim_default_renegade_0, sim_default_renegade_1, sim_default_renegade_0, sim_default_renegade_1, sim_default_renegade_2
-npc_in_squad = 3, 3
-target_smart = mar_smart_terrain_4_5
-
-[mar_smart_terrain_base_renegade_squad]:online_offline_group
-faction = renegade
-npc = sim_default_renegade_0, sim_default_renegade_1, sim_default_renegade_0, sim_default_renegade_1, sim_default_renegade_0, sim_default_renegade_1
-target_smart = mar_smart_terrain_base
-story_id = mar_smart_terrain_base_lager_squad
-always_arrived = true
-
-[camp_renegade_mar_smart_terrain_5_12]:online_offline_group
-faction = renegade
-npc_random = sim_default_renegade_0, sim_default_renegade_1, sim_default_renegade_0, sim_default_renegade_1, sim_default_renegade_2
-npc_in_squad = 5, 5
-target_smart = mar_smart_terrain_5_12
-
-[tower_renegade_mar_smart_terrain_6_11]:online_offline_group
-faction = renegade
-npc_random = sim_default_renegade_1, sim_default_renegade_2
-npc_in_squad = 3, 4
-target_smart = mar_smart_terrain_6_11
-
-[mar_renegade_trader_squad]:online_offline_group
-faction = renegade
-npc = mar_renegade_trader
-npc_in_squad = 1, 1
-always_arrived = true
-target_smart = mar_smart_terrain_3_3
-story_id = mar_renegade_trader_squad
-always_arrived = true
-
-[mar_renegade_mechanic_squad]:online_offline_group
-faction = renegade
-npc = mar_renegade_mechanic
-npc_in_squad = 1, 1
-target_smart = mar_smart_terrain_4_5
-story_id = mar_renegade_mechanic_squad
-always_arrived = true
-
-;------------------------------------------------------------------------
-
-[mar_rat_squad_smart_terrain_6_4_squad]:online_offline_group
-faction = monster_predatory_day
-npc_random = rat_weak, rat_normal, rat_strong, rat_wolf, rat_weak, rat_weak, rat_normal, rat_normal, rat_weak, rat_normal, rat_strong, rat_wolf, rat_weak, rat_weak, rat_normal, rat_normal, rat_wolf, rat_wolf, rat_wolf, rat_wolf, rat_normal, rat_normal, rat_normal
-npc_in_squad = 4, 6
-target_smart = mar_smart_terrain_6_4
-
diff --git a/mods/Redone Collection_backup/gamedata/configs/misc/squad_descr/squad_descr_spawn_point_MIL.ltx b/mods/Redone Collection_backup/gamedata/configs/misc/squad_descr/squad_descr_spawn_point_MIL.ltx
deleted file mode 100644
index 3e676f93..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/misc/squad_descr/squad_descr_spawn_point_MIL.ltx
+++ /dev/null
@@ -1,143 +0,0 @@
-![mil_7_7_protect_mlr_squad]:online_offline_group
-faction = freedom
-npc = sim_default_freedom_3, sim_default_freedom_3, sim_default_freedom_3, sim_default_freedom_3
-target_smart = mil_smart_terrain_7_7
-story_id = mil_7_7_protect_mlr_squad
-
-[mil_freedom_smart_terrain_7_8_squad]:online_offline_group
-faction = freedom
-npc = sim_default_freedom_1, sim_default_freedom_1, sim_default_freedom_2, sim_default_freedom_2, sim_default_freedom_2, sim_default_freedom_3
-target_smart = mil_smart_terrain_7_8
-story_id = mil_freedom_smart_terrain_7_8_squad
-
-[mil_freedom_smart_terrain_7_10_squad]:online_offline_group
-faction = freedom
-npc = sim_default_freedom_0, sim_default_freedom_0, sim_default_freedom_0, sim_default_freedom_1, sim_default_freedom_1
-target_smart = mil_smart_terrain_7_10
-story_id = mil_freedom_smart_terrain_7_10_squad
-
-[mil_freedom_smart_terrain_7_12_squad]:online_offline_group
-faction = freedom
-npc = sim_default_freedom_0, sim_default_freedom_0, sim_default_freedom_1, sim_default_freedom_1, sim_default_freedom_1
-target_smart = mil_smart_terrain_7_12
-story_id = mil_freedom_smart_terrain_7_12_squad
-
-[mil_freedom_smart_terrain_3_8_squad]:online_offline_group
-faction = freedom
-npc = sim_default_freedom_2, sim_default_freedom_2, sim_default_freedom_2, sim_default_freedom_2, sim_default_freedom_3
-target_smart = mil_smart_terrain_3_8
-story_id = mil_freedom_smart_terrain_3_8_squad
-
-[mil_freedom_terrain_7_4_outpost_squad]:online_offline_group
-faction = freedom
-npc = sim_default_freedom_0, sim_default_freedom_1, sim_default_freedom_2, sim_default_freedom_2
-target_smart = mil_smart_terrain_7_4
-
-;------------------------------------------------------------------------
-
-[mil_duty_terrain_7_4_outpost_squad]:online_offline_group
-faction = dolg
-npc = sim_default_duty_2, sim_default_duty_2, sim_default_duty_2, sim_default_duty_3
-target_smart = mil_smart_terrain_7_4
-
-;------------------------------------------------------------------------
-
-[mil_merc_terrain_2_2_outpost_squad]:online_offline_group
-faction = killer
-npc = sim_default_killer_2, sim_default_killer_3
-target_smart = mil_smart_terrain_2_2
-
-[mil_merc_terrain_2_2_outpost_squad2]:online_offline_group
-faction = killer
-npc = sim_default_killer_2, sim_default_killer_3
-target_smart = mil_smart_terrain_2_2
-
-;------------------------------------------------------------------------
-
-[mil_monolith_entrance_7_8_squad]:online_offline_group
-faction = monolith
-npc = sim_monolith_specnaz_rg6, sim_monolith_specnaz_rg6, sim_monolith_specnaz_rg6, sim_monolith_specnaz_rg6, sim_monolith_sniper, sim_monolith_sniper
-target_smart = mil_smart_terrain_7_8
-story_id = mil_monolith_entrance_7_8_squad
-
-[mil_monolith_warehouse_7_7_squad]:online_offline_group
-faction = monolith
-npc = sim_default_monolith_1, sim_default_monolith_2, sim_default_monolith_2, sim_default_monolith_3, sim_default_monolith_3, sim_default_monolith_4
-target_smart = mil_smart_terrain_7_7
-story_id = mil_monolith_warehouse_7_7_squad
-
-[mil_monolith_warehouse_7_10_squad]:online_offline_group
-faction = monolith
-npc = sim_default_monolith_1, sim_default_monolith_1, sim_default_monolith_2, sim_default_monolith_2, sim_default_monolith_2, sim_default_monolith_2
-target_smart = mil_smart_terrain_7_10
-story_id = mil_monolith_warehouse_7_10_squad
-
-[mil_monolith_warehouse_7_12_squad]:online_offline_group
-faction = monolith
-npc = sim_default_monolith_1, sim_default_monolith_1, sim_default_monolith_2
-target_smart = mil_smart_terrain_7_12
-story_id = mil_monolith_warehouse_7_12_squad
-
-;------------------------------------------------------------------------
-
-[mil_duty_entrance_7_8_squad]:online_offline_group
-faction = dolg
-npc = sim_default_duty_2, sim_default_duty_2, sim_default_duty_2, sim_default_duty_3
-target_smart = mil_smart_terrain_7_8
-story_id = mil_duty_entrance_7_8_squad
-
-[mil_duty_warehouse_7_7_squad]:online_offline_group
-faction = dolg
-npc = sim_default_duty_2, sim_default_duty_2, sim_default_duty_2, sim_default_duty_3, sim_default_monolith_2
-target_smart = mil_smart_terrain_7_7
-story_id = mil_duty_warehouse_7_7_squad
-
-[mil_duty_warehouse_7_10_squad]:online_offline_group
-faction = dolg
-npc = sim_default_duty_1, sim_default_duty_1, sim_default_duty_2
-target_smart = mil_smart_terrain_7_10
-story_id = mil_duty_warehouse_7_10_squad
-
-[mil_duty_warehouse_7_12_squad]:online_offline_group
-faction = dolg
-npc = sim_default_duty_1, sim_default_duty_1, sim_default_duty_2, sim_default_duty_2
-target_smart = mil_smart_terrain_7_12
-story_id = mil_duty_warehouse_7_12_squad
-
-[mil_duty_smart_terrain_3_8_squad]:online_offline_group
-faction = dolg
-npc = sim_default_duty_2, sim_default_duty_2, sim_default_duty_2, sim_default_duty_2, sim_default_duty_2, sim_default_duty_3
-target_smart = mil_smart_terrain_3_8
-story_id = mil_duty_smart_terrain_3_8_squad
-
-;------------------------------------------------------------------------
-
-[mil_army_entrance_7_8_squad]:online_offline_group
-faction = army
-npc = sim_default_military_2, sim_default_military_2, sim_default_military_2, sim_default_military_3
-target_smart = mil_smart_terrain_7_8
-story_id = mil_army_entrance_7_8_squad
-
-[mil_army_warehouse_7_7_squad]:online_offline_group
-faction = army
-npc = sim_default_military_0, sim_default_military_0, sim_default_military_1, sim_default_military_1, sim_default_military_2 ,sim_default_military_2, sim_default_military_2
-target_smart = mil_smart_terrain_7_7
-story_id = mil_army_warehouse_7_7_squad
-
-[mil_army_warehouse_7_10_squad]:online_offline_group
-faction = army
-npc = sim_default_military_0, sim_default_military_0, sim_default_military_1
-target_smart = mil_smart_terrain_7_10
-story_id = mil_army_warehouse_7_10_squad
-
-[mil_army_warehouse_7_12_squad]:online_offline_group
-faction = army
-npc = sim_default_military_0, sim_default_military_0, sim_default_military_0, sim_default_military_0, sim_default_military_1
-target_smart = mil_smart_terrain_7_12
-story_id = mil_army_warehouse_7_12_squad
-
-[mil_army_smart_terrain_3_8_squad]:online_offline_group
-faction = army
-npc = sim_default_military_2, sim_default_military_2, sim_default_military_2, sim_default_military_2, sim_default_military_3
-target_smart = mil_smart_terrain_3_8
-story_id = mil_army_warehouse_3_8_squad
diff --git a/mods/Redone Collection_backup/gamedata/configs/misc/squad_descr/squad_descr_spawn_point_POL.ltx b/mods/Redone Collection_backup/gamedata/configs/misc/squad_descr/squad_descr_spawn_point_POL.ltx
deleted file mode 100644
index 9b2b1dea..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/misc/squad_descr/squad_descr_spawn_point_POL.ltx
+++ /dev/null
@@ -1,123 +0,0 @@
-[pol_smart_terrain_1_1_mlr_squad]:online_offline_group
-faction = stalker
-npc = sim_default_stalker_1, sim_default_stalker_2
-npc_in_squad = 2, 2
-target_smart = pol_smart_terrain_1_1
-
-;------------------------------------------------------------------------
-
-[pol_smart_terrain_1_2_mlr_squad]:online_offline_group
-faction = bandit
-npc_random = sim_default_bandit_1,sim_default_bandit_1, sim_default_bandit_2, sim_default_bandit_0, sim_default_bandit_0
-npc_in_squad = 4, 4
-target_smart = pol_smart_terrain_1_2
-
-![pol_smart_terrain_1_3_squad]:online_offline_group
-faction = bandit
-npc = sim_default_bandit_0, sim_default_bandit_1, sim_default_bandit_2
-target_smart = pol_smart_terrain_1_3
-story_id= pol_smart_terrain_1_3_squad
-
-;------------------------------------------------------------------------
-
-[pol_renegade_squad]:online_offline_group
-faction = renegade
-npc_random = sim_default_renegade_0
-npc_in_squad = 1, 1
-target_smart = pol_smart_terrain_2_2
-
-[pol_renegade_squad2]:online_offline_group
-faction = renegade
-npc_random = sim_default_renegade_0
-npc_in_squad = 1, 1
-target_smart = pol_smart_terrain_2_2
-
-[pol_renegade_squad3]:online_offline_group
-faction = renegade
-npc_random = sim_default_renegade_0, sim_default_renegade_1
-npc_in_squad = 1, 1
-target_smart = pol_sim_1
-
-[pol_renegade_guard1]:online_offline_group
-faction = renegade
-npc = sim_default_renegade_0, sim_default_renegade_0, sim_default_renegade_0
-npc_in_squad = 3, 3
-target_smart = pol_smart_terrain_2_1
-
-[pol_renegade_guard2]:online_offline_group
-faction = renegade
-npc = sim_default_renegade_0
-npc_in_squad = 1, 1
-target_smart = pol_smart_terrain_2_1
-
-[pol_renegade_guard3]:online_offline_group
-faction = renegade
-npc = sim_default_renegade_0
-npc_in_squad = 1, 1
-target_smart = pol_smart_terrain_2_1
-
-;------------------------------------------------------------------------
-
-[pol_smart_terrain_2_2_isg_squad]:online_offline_group
-faction = isg
-npc_random = sim_default_isg_3, sim_default_isg_4
-npc_in_squad = 3, 4
-target_smart = pol_smart_terrain_2_2
-
-;------------------------------------------------------------------------
-
-[pol_snork_squad_1]:online_offline_group
-faction = monster_zombied_day
-npc_random = snork_normal, snork_normal2, snork_normal3, snork_normal4, snork_strong, snork_strong2, snork_strong3, snork_strong4
-npc_in_squad = 2, 4
-target_smart = pol_smart_terrain_1_3
-
-[pol_snork_squad_2]:online_offline_group
-faction = monster_zombied_day
-npc_random = snork_normal, snork_normal2, snork_normal3, snork_normal4, snork_strong, snork_strong2, snork_strong3, snork_strong4
-npc_in_squad = 4, 6
-target_smart = pol_smart_terrain_1_3
-
-[pol_zombie_squad_1]:online_offline_group
-faction = monster_zombied_day
-npc_random = zombie_normal, zombie_strong
-npc_in_squad = 8, 12
-target_smart = pol_smart_terrain_2_2
-
-[pol_zombie_squad_2]:online_offline_group
-faction = monster_zombied_day
-npc_random = zombie_normal, zombie_strong
-npc_in_squad = 6, 10
-target_smart = pol_smart_terrain_1_1
-
-[pol_zombie_squad_3]:online_offline_group
-faction = monster_zombied_day
-npc_random = zombie_normal, zombie_strong
-npc_in_squad = 8, 12
-target_smart = pol_smart_terrain_1_3
-
-[pol_zombie_squad_4]:online_offline_group
-faction = monster_zombied_day
-npc_random = zombie_normal, zombie_strong
-npc_in_squad = 6, 10
-target_smart = pol_smart_terrain_2_1
-
-[pol_zombied_squad_1]:online_offline_group ;-- test
-faction = zombied
-npc_random = sim_default_zombied_1, sim_default_zombied_2, sim_default_zombied_3, sim_default_zombied_4
-npc_in_squad = 3, 6
-target_smart = pol_smart_terrain_1_3
-
-[pol_zombied_squad_2]:online_offline_group ;-- test
-faction = zombied
-npc_random = sim_default_zombied_2, sim_default_zombied_3, sim_default_zombied_4
-npc_in_squad = 4, 8
-target_smart = pol_smart_terrain_1_3
-
-;------------------------------------------------------------------------
-
-[pol_rats_mlr_squad]:online_offline_group
-faction = monster
-npc_random = rat_weak, rat_normal, rat_strong, rat_wolf, rat_weak, rat_weak
-npc_in_squad = 2, 6
-target_smart = pol_smart_terrain_1_2
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/misc/squad_descr/squad_descr_spawn_point_ROS.ltx b/mods/Redone Collection_backup/gamedata/configs/misc/squad_descr/squad_descr_spawn_point_ROS.ltx
deleted file mode 100644
index 8707cf7f..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/misc/squad_descr/squad_descr_spawn_point_ROS.ltx
+++ /dev/null
@@ -1,11 +0,0 @@
-[ros_merc_guard_mlr_squad]:online_offline_group
-faction = killer
-npc_random = sim_default_killer_1, sim_default_killer_1, sim_default_killer_2, sim_default_killer_2, sim_default_killer_2
-npc_in_squad = 4, 4
-target_smart = ros_smart_stalker_killers1
-
-[ros_merc_sniper_mlr_squad]:online_offline_group
-faction = killer
-npc_random = sim_default_killer_1, sim_default_killer_1, sim_default_killer_2, sim_default_killer_2, sim_default_killer_2
-npc_in_squad = 3, 3
-target_smart = ros_smart_killers1
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/misc/squad_descr/squad_descr_spawn_point_TRC.ltx b/mods/Redone Collection_backup/gamedata/configs/misc/squad_descr/squad_descr_spawn_point_TRC.ltx
deleted file mode 100644
index 0234a0b9..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/misc/squad_descr/squad_descr_spawn_point_TRC.ltx
+++ /dev/null
@@ -1,19 +0,0 @@
-[trucks_cemetery_bandit_guards]:online_offline_group
-faction = bandit
-npc_random = sim_default_bandit_3, sim_default_bandit_4, sim_default_bandit_2, sim_default_bandit_2
-npc_in_squad = 4, 4
-target_smart = trc_sim_20
-always_arrived = true
-
-[trucks_army_camp_guards]:online_offline_group
-faction = army
-npc_random = sim_default_military_2, sim_default_military_2, sim_default_military_1, sim_default_military_1
-npc_in_squad = 4, 4
-target_smart = trc_sim_18
-
-[trc_sim_13_zombie_squad]:online_offline_group
-faction = monster_zombied_day
-npc_random = zombie_normal, zombie_strong,
-npc_in_squad = 8, 12
-target_smart = trc_sim_13
-always_arrived = true
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/misc/squad_descr/squad_descr_spawn_point_VAL.ltx b/mods/Redone Collection_backup/gamedata/configs/misc/squad_descr/squad_descr_spawn_point_VAL.ltx
deleted file mode 100644
index cea2cf87..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/misc/squad_descr/squad_descr_spawn_point_VAL.ltx
+++ /dev/null
@@ -1,102 +0,0 @@
-[bandit_novice_visiters_camp]:online_offline_group
-faction = bandit
-npc_random = sim_default_bandit_0, sim_default_bandit_0, sim_default_bandit_0, sim_default_bandit_1, sim_default_bandit_1, sim_default_bandit_2
-npc_in_squad = 2, 2
-target_smart = val_smart_terrain_7_3
-story_id = bandit_novice_visiters_camp
-always_arrived = true
-
-[bandit_novice_visiters_2_camp]:online_offline_group
-faction = bandit
-npc_random = sim_default_bandit_0, sim_default_bandit_0, sim_default_bandit_0, sim_default_bandit_1, sim_default_bandit_1, sim_default_bandit_2
-npc_in_squad = 2, 2
-target_smart = val_smart_terrain_7_3
-story_id = bandit_novice_visiters_2_camp
-always_arrived = true
-
-[bandit_novice_visiters_base]:online_offline_group
-faction = bandit
-npc_random = sim_default_bandit_0, sim_default_bandit_0, sim_default_bandit_0, sim_default_bandit_1, sim_default_bandit_1, sim_default_bandit_2
-npc_in_squad = 4, 4
-target_smart = val_smart_terrain_7_4
-story_id = bandit_novice_visiters_base
-always_arrived = true
-
-[bandit_novice_visiters_2_base]:online_offline_group
-faction = bandit
-npc_random = sim_default_bandit_0, sim_default_bandit_0, sim_default_bandit_0, sim_default_bandit_1, sim_default_bandit_1, sim_default_bandit_2
-npc_in_squad = 4, 4
-target_smart = val_smart_terrain_7_4
-story_id = bandit_novice_visiters_2_base
-always_arrived = true
-
-[bandit_guards_in_main_base]:online_offline_group
-faction = bandit
-npc = sim_default_bandit_2, sim_default_bandit_3
-target_smart = val_smart_terrain_7_5
-story_id = bandit_guards_in_main_base
-always_arrived = true
-
-![guards_boss_bandit_in_main_base]:online_offline_group
-faction = bandit
-npc = sim_default_bandit_4, sim_default_bandit_4, sim_default_bandit_4
-target_smart = val_smart_terrain_7_5
-story_id = guards_boss_bandit_in_main_base
-
-[guards_bandit_main_entrance]:online_offline_group
-faction = bandit
-npc = sim_default_bandit_2, sim_default_bandit_2
-target_smart = val_smart_terrain_8_6
-story_id = guards_bandit_main_entrance
-always_arrived = true
-
-[bandit_barman_mlr_squad]:online_offline_group
-faction = bandit
-npc = sim_default_bandit_barman
-target_smart = val_smart_terrain_7_3
-story_id = bandit_barman_squad
-
-;------------------------------------------------------------------------
-
-[val_smart_terrain_1_2_military_mlr_squad]:online_offline_group
-faction = army
-npc = sim_default_military_2, sim_default_military_3
-target_smart = val_smart_terrain_1_2
-story_id = val_smart_terrain_1_2_military_mlr_squad
-always_arrived = true
-
-[val_smart_terrain_1_2_military_mlr_2_squad]:online_offline_group
-faction = army
-npc = sim_default_military_3, sim_default_military_4
-target_smart = val_smart_terrain_1_2
-story_id = val_smart_terrain_1_2_military_mlr_2_squad
-always_arrived = true
-
-;------------------------------------------------------------------------
-
-[stalker_south_pig_farm]:online_offline_group
-faction = stalker
-npc = sim_default_stalker_0, sim_default_stalker_0, sim_default_stalker_1
-target_smart = val_smart_terrain_4_0
-story_id = stalker_south_pig_farm
-
-;------------------------------------------------------------------------
-
-[val_smart_terrain_1_2_rat_mlr_squad]:online_offline_group
-faction = monster
-npc_random = rat_weak, rat_normal, rat_strong, rat_wolf, rat_weak, rat_weak, rat_normal, rat_normal, rat_weak, rat_weak, rat_normal, rat_normal, rat_weak, rat_weak, rat_normal, rat_normal, rat_weak, rat_weak
-npc_in_squad = 2, 3
-target_smart = val_smart_terrain_1_2
-
-[val_smart_terrain_6_4_rat_mlr_squad]:online_offline_group
-faction = monster
-npc_random = rat_weak, rat_normal, rat_strong, rat_wolf, rat_weak, rat_weak, rat_normal, rat_normal, rat_weak, rat_weak, rat_normal, rat_normal, rat_weak, rat_weak, rat_normal, rat_normal, rat_weak, rat_weak
-npc_in_squad = 2, 3
-target_smart = val_smart_terrain_6_4
-
-[val_smart_terrain_7_8_rat_mlr_squad]:online_offline_group
-faction = monster
-npc_random = rat_weak, rat_normal, rat_strong, rat_wolf, rat_weak, rat_weak, rat_normal, rat_normal, rat_weak, rat_weak, rat_normal, rat_normal, rat_weak, rat_weak, rat_normal, rat_normal, rat_weak, rat_weak
-npc_in_squad = 2, 3
-target_smart = val_smart_terrain_7_8
-
diff --git a/mods/Redone Collection_backup/gamedata/configs/misc/squad_descr/squad_descr_spawn_point_X16.ltx b/mods/Redone Collection_backup/gamedata/configs/misc/squad_descr/squad_descr_spawn_point_X16.ltx
deleted file mode 100644
index 745cfc9f..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/misc/squad_descr/squad_descr_spawn_point_X16.ltx
+++ /dev/null
@@ -1,44 +0,0 @@
-[zombied_x162_st_poltergeist_squad]:online_offline_group
-faction = zombied
-npc_random = sim_default_zombied_2, sim_default_zombied_3, sim_default_zombied_3, sim_default_zombied_2, sim_default_zombied_4, sim_default_zombied_4
-npc_in_squad = 3, 3
-always_arrived = true
-target_smart = x162_st_poltergeist
-
-[zombied_x162_st_gigant_squad]:online_offline_group
-faction = zombied
-npc_random = sim_default_zombied_2, sim_default_zombied_2, sim_default_zombied_3, sim_default_zombied_2, sim_default_zombied_3
-npc_in_squad = 4, 4
-always_arrived = true
-target_smart = x162_st_gigant
-
-[zombied_x162_st_burer_squad]:online_offline_group
-faction = zombied
-npc_random = sim_default_zombied_2, sim_default_zombied_2, sim_default_zombied_3, sim_default_zombied_2, sim_default_zombied_3
-npc_in_squad = 3, 3
-always_arrived = true
-target_smart = x162_st_burer
-
-[ecolog_x162_st_poltergeist_squad]:online_offline_group
-faction = ecolog
-npc_random = sim_default_ecolog_dead, sim_default_ecolog_dead, sim_default_ecolog_dead, sim_default_ecolog_dead
-npc_in_squad = 2, 2
-always_arrived = true
-target_smart = x162_st_poltergeist
-
-[ecolog_x162_st_gigant_squad]:online_offline_group
-faction = ecolog
-npc_random = sim_default_ecolog_dead, sim_default_ecolog_dead, sim_default_ecolog_dead, sim_default_ecolog_dead
-npc_in_squad = 2, 2
-always_arrived = true
-target_smart = x162_st_gigant
-
-[isg_x162_st_burer_squad]:online_offline_group
-faction = isg
-npc_random = sim_default_isg_3, sim_default_isg_4, sim_default_isg_4
-npc_in_squad = 3, 3
-always_arrived = true
-target_smart = x162_st_burer
-
-
-
diff --git a/mods/Redone Collection_backup/gamedata/configs/misc/squad_descr/squad_descr_spawn_point_X18.ltx b/mods/Redone Collection_backup/gamedata/configs/misc/squad_descr/squad_descr_spawn_point_X18.ltx
deleted file mode 100644
index 6114964a..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/misc/squad_descr/squad_descr_spawn_point_X18.ltx
+++ /dev/null
@@ -1,16 +0,0 @@
-![dar_military_scout_squad]:online_offline_group
-faction = army
-!relationship = enemy
-!sympathy = 0
-npc = sim_default_military_4, sim_default_military_3, sim_default_military_3, sim_default_military_4
-target_smart = dar_military_scout
-story_id = dar_military_scout_squad
-on_death = %+dar_military_scout_squad_killed%
-
-[dar_military_spetsnaz_squad]:online_offline_group
-faction = army
-npc_random = sim_default_military_3, sim_default_military_4, sim_default_military_3, sim_default_military_4
-npc_in_squad = 3
-always_arrived = true
-target_smart = dar_control_poltergeist
-
diff --git a/mods/Redone Collection_backup/gamedata/configs/misc/squad_descr/squad_descr_spawn_point_YAN.ltx b/mods/Redone Collection_backup/gamedata/configs/misc/squad_descr/squad_descr_spawn_point_YAN.ltx
deleted file mode 100644
index 23fac836..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/misc/squad_descr/squad_descr_spawn_point_YAN.ltx
+++ /dev/null
@@ -1,132 +0,0 @@
-[yan_smart_terrain_6_4_squad]:online_offline_group
-faction = ecolog
-npc = sim_default_ecolog_1, sim_default_ecolog_2
-target_smart = yan_smart_terrain_6_4
-always_arrived = true
-
-[yan_ecolog_guard_mlr_squad]:online_offline_group
-faction = ecolog
-npc = sim_default_ecolog_1, sim_default_ecolog_2, sim_default_ecolog_2, sim_default_ecolog_2, sim_default_ecolog_3
-target_smart = yan_smart_terrain_2_4
-always_arrived = true
-
-[yan_ecolog_guard_mlr_squad2]:online_offline_group
-faction = ecolog
-npc = sim_default_ecolog_1, sim_default_ecolog_1, sim_default_ecolog_2, sim_default_ecolog_2, sim_default_ecolog_3
-target_smart = yan_smart_terrain_zombi_spawn
-always_arrived = true
-
-;------------------------------------------------------------------------
-
-[yan_army_spetsnaz_squad]:online_offline_group
-faction = army
-npc = sim_default_military_1, sim_default_military_1, sim_default_military_2, sim_default_military_2, sim_default_military_2, sim_default_military_3, sim_default_military_3, sim_default_military_4
-target_smart = yan_smart_terrain_3_6
-always_arrived = true
-
-[yan_army_spetsnaz_squad2]:online_offline_group
-faction = army
-npc = sim_default_military_1, sim_default_military_1, sim_default_military_2, sim_default_military_2, sim_default_military_2, sim_default_military_3, sim_default_military_3, sim_default_military_4
-target_smart = yan_smart_terrain_6_4
-always_arrived = true
-
-[yan_killer_special_team]:online_offline_group
-faction = killer
-npc = sim_default_killer_2, sim_default_killer_2, sim_default_killer_2, sim_default_killer_2, sim_default_killer_3, sim_default_killer_4
-target_smart = yan_smart_terrain_4_4
-always_arrived = true
-
-[yan_killer_special_team2]:online_offline_group
-faction = killer
-npc = sim_default_killer_2, sim_default_killer_2, sim_default_killer_2, sim_default_killer_2, sim_default_killer_3, sim_default_killer_4
-npc_in_squad = 4, 6
-target_smart = yan_smart_terrain_5_5
-always_arrived = true
-
-[yan_killer_special_team3]:online_offline_group
-faction = killer
-npc = sim_default_killer_2, sim_default_killer_2, sim_default_killer_2, sim_default_killer_2, sim_default_killer_2, sim_default_killer_3
-target_smart = yan_smart_terrain_4_5
-always_arrived = true
-
-;------------------------------------------------------------------------
-
-[yan_stalker_lab_squad]:online_offline_group
-faction = stalker
-npc_random = sim_default_stalker_0, sim_default_stalker_1, sim_default_stalker_1, sim_default_stalker_2, sim_default_stalker_2, sim_default_stalker_3
-npc_in_squad = 2, 3
-target_smart = yan_smart_terrain_2_5
-always_arrived = true
-
-[yan_bandit_lab_squad]:online_offline_group
-faction = bandit
-npc_random = sim_default_bandit_0, sim_default_bandit_1, sim_default_bandit_1, sim_default_bandit_1, sim_default_bandit_2, sim_default_bandit_2, sim_default_bandit_2, sim_default_bandit_3
-npc_in_squad = 3, 6
-target_smart = yan_smart_terrain_3_4
-always_arrived = true
-
-[yan_army_lab_squad]:online_offline_group
-faction = army
-npc_random = sim_default_military_0, sim_default_military_1, sim_default_military_1, sim_default_military_2, sim_default_military_2, sim_default_military_3
-npc_in_squad = 2, 4
-target_smart = yan_smart_terrain_2_5
-always_arrived = true
-
-[yan_killer_lab_squad]:online_offline_group
-faction = killer
-relationship = neutral
-npc_random = sim_default_killer_0, sim_default_killer_1, sim_default_killer_1, sim_default_killer_2, sim_default_killer_2, sim_default_killer_3, sim_default_killer_4
-npc_in_squad = 2, 4
-target_smart = yan_smart_terrain_2_4
-always_arrived = true
-
-[yan_duty_lab_squad]:online_offline_group
-faction = dolg
-npc_random = sim_default_duty_0, sim_default_duty_1, sim_default_duty_2, sim_default_duty_2, sim_default_duty_3
-npc_in_squad = 2, 4
-target_smart = yan_smart_terrain_2_4
-always_arrived = true
-
-[yan_freedom_lab_squad]:online_offline_group
-faction = freedom
-npc_random = sim_default_freedom_0, sim_default_freedom_1, sim_default_freedom_2, sim_default_freedom_2, sim_default_freedom_3
-npc_in_squad = 2, 4
-target_smart = yan_smart_terrain_zombi_spawn
-always_arrived = true
-
-[yan_ecolog_lab_squad]:online_offline_group
-faction = ecolog
-npc_random = sim_default_ecolog_1, sim_default_ecolog_1, sim_default_ecolog_2, sim_default_ecolog_2, sim_default_ecolog_3
-npc_in_squad = 3, 4
-target_smart = yan_smart_terrain_2_5
-always_arrived = true
-
-[yan_csky_lab_squad]:online_offline_group
-faction = csky
-npc_random = sim_default_csky_0, sim_default_csky_1, sim_default_csky_2, sim_default_csky_2, sim_default_csky_3
-npc_in_squad = 2, 4
-target_smart = yan_smart_terrain_3_4
-always_arrived = true
-
-;------------------------------------------------------------------------
-
-[yan_zombied_x16_mlr_squad]:online_offline_group
-faction = zombied
-npc_random = sim_default_zombied_1, sim_default_zombied_1, sim_default_zombied_2, sim_default_zombied_2, sim_default_zombied_3
-npc_in_squad = 3, 3
-target_smart = yan_smart_terrain_zombi_spawn
-always_arrived = true
-
-[yan_zombied_x16_mlr_squad2]:online_offline_group
-faction = zombied
-npc_random = sim_default_zombied_1, sim_default_zombied_1, sim_default_zombied_1, sim_default_zombied_1, sim_default_zombied_1
-npc_in_squad = 2, 2
-target_smart = yan_smart_terrain_2_4
-always_arrived = true
-
-[yan_zombied_x16_mlr_squad3]:online_offline_group
-faction = zombied
-npc_random = sim_default_zombied_1, sim_default_zombied_1, sim_default_zombied_1, sim_default_zombied_1, sim_default_zombied_1
-npc_in_squad = 2, 2
-target_smart = yan_smart_terrain_3_4
-always_arrived = true
diff --git a/mods/Redone Collection_backup/gamedata/configs/mod_sr_teleport_sections_BAR.ltx b/mods/Redone Collection_backup/gamedata/configs/mod_sr_teleport_sections_BAR.ltx
deleted file mode 100644
index 31649ae1..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/mod_sr_teleport_sections_BAR.ltx
+++ /dev/null
@@ -1,7 +0,0 @@
-![bar_space_restrictor_to_military_01]
-enable = false
-spot = level_changer_spot_mini
-
-![mil_space_restrictor_to_bar_1]
-enable = false
-spot = level_changer_spot_mini
diff --git a/mods/Redone Collection_backup/gamedata/configs/mod_sr_teleport_sections_CIT.ltx b/mods/Redone Collection_backup/gamedata/configs/mod_sr_teleport_sections_CIT.ltx
deleted file mode 100644
index d9b252c7..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/mod_sr_teleport_sections_CIT.ltx
+++ /dev/null
@@ -1,8 +0,0 @@
-![cit_space_restrictor_to_yantar]
-enable = false
-spot = level_changer_spot_mini
-
-![yan_space_restrictor_to_dead_city_1]
-enable = false
-spot = level_changer_spot_mini
-
diff --git a/mods/Redone Collection_backup/gamedata/configs/mod_sr_teleport_sections_ESC.ltx b/mods/Redone Collection_backup/gamedata/configs/mod_sr_teleport_sections_ESC.ltx
deleted file mode 100644
index b4df2ce0..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/mod_sr_teleport_sections_ESC.ltx
+++ /dev/null
@@ -1,15 +0,0 @@
-![esc_space_restrictor_to_garbage_1]
-enable = false
-spot = level_changer_spot_mini
-
-![esc_space_restrictor_to_garbage_2]
-enable = false
-spot = level_changer_spot_mini
-
-![gar_space_restrictor_to_escape_1]
-enable = false
-spot = level_changer_spot_mini
-
-![gar_space_restrictor_to_escape_2]
-enable = false
-spot = level_changer_spot_mini
diff --git a/mods/Redone Collection_backup/gamedata/configs/mod_sr_teleport_sections_MIL.ltx b/mods/Redone Collection_backup/gamedata/configs/mod_sr_teleport_sections_MIL.ltx
deleted file mode 100644
index 82d2860a..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/mod_sr_teleport_sections_MIL.ltx
+++ /dev/null
@@ -1,44 +0,0 @@
-![mil_space_restrictor_to_red_1]
-enable = false
-spot = level_changer_spot_mini
-
-![mil_space_restrictor_to_radar_1]
-spot = level_changer_up_right
-
-![mil_space_restrictor_to_dead_city_1]
-enable = false
-spot = level_changer_spot_mini
-
-;[mil_space_restrictor_to_tc]
-;enable = false
-;spot = level_changer_spot_mini
-
-![cit_space_restrictor_to_military]
-enable = false
-spot = level_changer_spot_mini
-
-![red_space_restrictor_to_military_1]
-enable = false
-spot = level_changer_spot_mini
-
-![red_space_restrictor_to_radar_1]
-enable = false
-spot = level_changer_spot_mini
-
-![rad_space_restrictor_to_red_forest]
-enable = false
-spot = level_changer_spot_mini
-
-;[tc_space_restrictor_to_military_1]
-;enable = false
-;spot = level_changer_spot_mini
-
-;[tc_space_restrictor_to_military_2]
-;enable = false
-;spot = level_changer_spot_mini
-
-;[tc_space_restrictor_to_military_3]
-;enable = false
-;spot = level_changer_spot_mini
-
-
diff --git a/mods/Redone Collection_backup/gamedata/configs/mod_sr_teleport_sections_POL.ltx b/mods/Redone Collection_backup/gamedata/configs/mod_sr_teleport_sections_POL.ltx
deleted file mode 100644
index 00445b82..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/mod_sr_teleport_sections_POL.ltx
+++ /dev/null
@@ -1,8 +0,0 @@
-![pol_space_restrictor_to_escape_1]
-enable = false
-spot = level_changer_spot_mini
-
-![esc_space_restrictor_to_pole_1]
-enable = false
-spot = level_changer_spot_mini
-
diff --git a/mods/Redone Collection_backup/gamedata/configs/mod_sr_teleport_sections_VAL.ltx b/mods/Redone Collection_backup/gamedata/configs/mod_sr_teleport_sections_VAL.ltx
deleted file mode 100644
index dad675ab..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/mod_sr_teleport_sections_VAL.ltx
+++ /dev/null
@@ -1,15 +0,0 @@
-![val_space_restrictor_to_garbage_1]
-enable = false
-spot = level_changer_spot_mini
-
-![val_space_restrictor_to_garbage_2]
-enable = false
-spot = level_changer_spot_mini
-
-![gar_space_restrictor_to_darkvalley_1]
-enable = false
-spot = level_changer_spot_mini
-
-![gar_space_restrictor_to_darkvalley_2]
-enable = false
-spot = level_changer_spot_mini
diff --git a/mods/Redone Collection_backup/gamedata/configs/mod_system_spawn_point_MAR.ltx b/mods/Redone Collection_backup/gamedata/configs/mod_system_spawn_point_MAR.ltx
deleted file mode 100644
index ab445022..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/mod_system_spawn_point_MAR.ltx
+++ /dev/null
@@ -1 +0,0 @@
-#include "creatures\spawn_sections_marsh_spawn_point.ltx"
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/mod_system_spawn_point_X16.ltx b/mods/Redone Collection_backup/gamedata/configs/mod_system_spawn_point_X16.ltx
deleted file mode 100644
index e6eb9986..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/mod_system_spawn_point_X16.ltx
+++ /dev/null
@@ -1,2 +0,0 @@
-#include "creatures\spawn_sections_labx16_spawn_point.ltx"
-#include "creatures\spawn_sections_yantar_spawn_point.ltx"
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/mod_system_spawn_point_X18.ltx b/mods/Redone Collection_backup/gamedata/configs/mod_system_spawn_point_X18.ltx
deleted file mode 100644
index b127b987..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/mod_system_spawn_point_X18.ltx
+++ /dev/null
@@ -1 +0,0 @@
-#include "creatures\spawn_sections_labx18_spawn_point.ltx"
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/plugins/;mod_new_game_setup_ROS.ltx b/mods/Redone Collection_backup/gamedata/configs/plugins/;mod_new_game_setup_ROS.ltx
deleted file mode 100644
index f1109cf6..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/plugins/;mod_new_game_setup_ROS.ltx
+++ /dev/null
@@ -1,7 +0,0 @@
-![remove_objects] ;do not use. Also delete lights at Bar and ESC
-;light_alarm_glass_0000
-;light_alarm_glass_0003
-;light_alarm_glass_0004
-;light_alarm_glass_0006
-;light_alarm_glass_0007
-;light_alarm_glass_0008
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/plugins/mod_dynamic_anomalies_DS.ltx b/mods/Redone Collection_backup/gamedata/configs/plugins/mod_dynamic_anomalies_DS.ltx
deleted file mode 100644
index c8a15302..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/plugins/mod_dynamic_anomalies_DS.ltx
+++ /dev/null
@@ -1,4 +0,0 @@
-![k01_darkscape]
- !ano_dsc_42 = chemical, 429.71731567383, -1.8115394115448, -371.16778564453, 918931, 1404
- !ano_dsc_43 = chemical, 430.38342285156, -1.8093948364258, -365.34536743164, 920078, 1404
- !ano_dsc_44 = chemical, 430.41537475586, -1.7958755493164, -361.078125, 920084, 1404
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/plugins/mod_dynamic_anomalies_ESC.ltx b/mods/Redone Collection_backup/gamedata/configs/plugins/mod_dynamic_anomalies_ESC.ltx
deleted file mode 100644
index b17adf28..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/plugins/mod_dynamic_anomalies_ESC.ltx
+++ /dev/null
@@ -1,21 +0,0 @@
-![l01_escape]
- !ano_esc_0 = gravitational, 17.394336700439, 15.890402793884, 664.333984375, 325647, 567
- !ano_esc_1 = electric, 16.90838432312, 13.750101089478, 645.50750732422, 324678, 410
- ;ano_esc_102 = electric, 353.21658325195, 14.934350013733, -29.440731048584, 619686, 370
- ;ano_esc_104 = electric, 360.93698120117, 14.938066482544, -34.537322998047, 621986, 370
- ;ano_esc_107 = electric, 347.67706298828, 15.098957061768, -33.032413482666, 617446, 621
- ;ano_esc_108 = electric, 363.38165283203, 14.933527946472, -42.13053894043, 622485, 370
- ;ano_esc_110 = electric, 371.09335327148, 20.946316719055, -42.225631713867, 623728, 370
- ;ano_esc_111 = electric, 350.76919555664, 20.918435096741, -28.366254806519, 618350, 621
- ;ano_esc_112 = electric, 357.43197631836, 18.893308639526, -37.717849731445, 621046, 370
- ;ano_esc_113 = electric, 366.36376953125, 19.936526298523, -38.863098144531, 623079, 370
- ;ano_esc_114 = electric, 369.87814331055, 18.236912536621, -45.690231323242, 623591, 370
- ;ano_esc_115 = electric, 361.81338500977, 20.013339996338, -41.715454101562, 622153, 370
- ;ano_esc_116 = electric, 358.23190307617, 19.9868516922, -39.258373260498, 621237, 370
- ;ano_esc_117 = electric, 354.18405151367, 18.908493995667, -36.053356170654, 619925, 370
- ;ano_esc_118 = electric, 354.5426940918, 20.168806648254, -28.844787597656, 619936, 370
- ;ano_esc_119 = electric, 357.6321105957, 20.212746810913, -34.094421386719, 621051, 370
- ;ano_esc_109 = electric, 367.34536743164, 14.929558753967, -38.927028656006, 623318, 370
- ;ano_esc_105 = electric, 362.48791503906, 14.984031677246, -40.222038269043, 622327, 370
- ;ano_esc_106 = electric, 370.05667114258, 14.978092193604, -40.198169708252, 623666, 370
- ;ano_esc_103 = electric, 356.25527954102, 15.888303756714, -36.900623321533, 620636, 370
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/plugins/mod_dynamic_anomalies_POL.ltx b/mods/Redone Collection_backup/gamedata/configs/plugins/mod_dynamic_anomalies_POL.ltx
deleted file mode 100644
index 262f04c8..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/plugins/mod_dynamic_anomalies_POL.ltx
+++ /dev/null
@@ -1,2 +0,0 @@
-![y04_pole]
- !ano_pol_35
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/plugins/mod_dynamic_anomalies_ROS.ltx b/mods/Redone Collection_backup/gamedata/configs/plugins/mod_dynamic_anomalies_ROS.ltx
deleted file mode 100644
index 60527a37..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/plugins/mod_dynamic_anomalies_ROS.ltx
+++ /dev/null
@@ -1,41 +0,0 @@
-![l06_rostok]
- ano_ros_63 = gravitational, -161.3055267334, -0.002201646566391, 48.760059356689, 25377, 1908
- ano_ros_64 = gravitational, -158.25860595703, -0.0015027523040771, 56.189792633057, 25377, 1908
- ano_ros_66 = gravitational, -168.89785766602, -0.0030859410762787, 54.516521453857, 25377, 1908
- ano_ros_67 = radioactive, -163.63726806641, -0.00087732076644897, 52.27965927124, 25377, 1908
- ano_ros_68 = chemical, -155.56665039062, 0.29411315917969, 80.926223754883, 25377, 1908
- ano_ros_69 = chemical, -154.25556945801, 0.09965255856514, 84.569267272949, 25377, 1908
- ano_ros_71 = thermal, -182.62310791016, -0.0011163353919983, 40.366508483887, 25377, 1908
- ano_ros_72 = thermal, -184.66575622559, -0.0023784041404724, 35.73189163208, 25377, 1908
- ano_ros_73 = thermal, -180.48937988281, -0.0046562254428864, 34.8095703125, 25377, 1908
- ano_ros_74 = thermal, -178.43943786621, -0.0021621137857437, 30.777183532715, 25377, 1908
- ano_ros_75 = thermal, -174.39161682129, -0.00010567903518677, 29.51441192627, 25377, 1908
- ano_ros_76 = thermal, -175.04580688477, -0.00018487870693207, 24.866413116455, 25377, 1908
- ano_ros_77 = thermal, -171.47622680664, -0.0003587007522583, 22.60669708252, 25377, 1908
- ano_ros_78 = thermal, -172.79882812532, -0.0025824904441833, 17.576650619507, 25377, 1908
- ano_ros_79 = thermal, -178.30107116699, -7.002055644989e-05, 18.065408706665, 25377, 1908
- ano_ros_81 = thermal, -179.49899291992, -0.00028195977210999, 13.813373565674, 25377, 1908
- ano_ros_82 = thermal, -183.74478149414, -0.00024449825286865, 11.809941291809, 25377, 1908
- ano_ros_83 = thermal, -185.39465332031, -0.0046873688697815, 16.391710281372, 25377, 1908
- ano_ros_84 = thermal, -189.64587402344, -0.0048295259475708, 18.243629455566, 25377, 1908
- ano_ros_85 = thermal, -187.56173706055, -0.00028896331787109, 21.857831954956, 25377, 1908
- ano_ros_86 = thermal, -187.80061340332, -0.0033606588840485, 26.730026245117, 25377, 1908
- ano_ros_87 = thermal, -192.21124267578, -0.00092019140720367, 24.20227432251, 25377, 1908
- ano_ros_88 = thermal, -187.70239257812, -0.00086730718612671, 3.3345000743866, 25377, 1908
- ano_ros_89 = thermal, -199.66918945312, -0.0038188099861145, -3.3506965637207, 24738, 1908
- ano_ros_100 = thermal, -196.65022277832, -0.0052649974822998, -13.183561325073, 24738, 1908
- ano_ros_101 = thermal, -206.28680419922, -0.002912163734436, -17.364234924316, 24738, 1908
- ano_ros_102 = thermal, -202.99934387207, -0.00026543438434601, -23.17338180542, 24738, 1908
- ano_ros_103 = thermal, -210.53144836426, -0.00023095309734344, -26.060640335083, 24384, 1908
- ano_ros_104 = thermal, -173.76370239258, -0.00047957897186279, 15.20398235321, 25377, 1908
- ano_ros_105 = thermal, -194.13003540039, -0.0020697414875031, 22.966623306274, 25377, 1908
- ano_ros_106 = thermal, -190.26966857910, -0.00043398141860962, 30.282733917236, 25377, 1908
- ano_ros_107 = thermal, -179.65838623047, -0.0012353509664536, 11.232748031616, 25377, 1908
- ano_ros_108 = thermal, -181.71868896484, -0.00027760863304138, 18.718341827393, 25377, 1908
- ano_ros_109 = thermal, -188.67903137207, -0.00048862397670746, 35.557014465332, 25377, 1908
- ano_ros_110 = thermal, -194.61724853516, -0.0035153031349182, 22.132669448853, 25377, 1908
- ano_ros_111 = thermal, -190.24580383301, -0.00033354759216309, 30.191970825195, 25377, 1908
- ano_ros_112 = thermal, -182.59356689453, -0.0027606934309006, 26.000076293945, 25377, 1908
- ano_ros_113 = radioactive, -167.48039245605, -0.0019214451313019, 73.26441192627, 25377, 1908
- ano_ros_114 = radioactive, -158.01057434082, -0.0053507536649704, 90.500900268555, 25377, 1908
- ano_ros_115 = radioactive, -146.17025756836, -0.0037648975849152, 111.64415740967, 25377, 1908
diff --git a/mods/Redone Collection_backup/gamedata/configs/plugins/mod_dynamic_anomalies_YAN.ltx b/mods/Redone Collection_backup/gamedata/configs/plugins/mod_dynamic_anomalies_YAN.ltx
deleted file mode 100644
index 95083fe5..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/plugins/mod_dynamic_anomalies_YAN.ltx
+++ /dev/null
@@ -1,5 +0,0 @@
-![l08_yantar]
- !ano_yan_9
- !ano_yan_20
- !ano_yan_37
- !ano_yan_38
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/plugins/mod_faction_profile_renegade_redone.ltx b/mods/Redone Collection_backup/gamedata/configs/plugins/mod_faction_profile_renegade_redone.ltx
deleted file mode 100644
index ac1472f2..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/plugins/mod_faction_profile_renegade_redone.ltx
+++ /dev/null
@@ -1,24 +0,0 @@
-![renegade]
-type = group
-color = 255,150,100,0
-territory = k00_marsh
-
-level_presence = k00_marsh,k01_darkscape,k02_trucks_cemetery,l01_escape,l03_agroprom,l02_garbage,l06_rostok,l07_military,l10_red_forest,jupiter,pripyat,zaton
-pda_topic = mission=1,chitchat=1,joke=1
-pda_topic_mission = bounty,guard,raid,hunt
-weapon = all
-
-leader =
-trader = mar_renegade_trader
-mechanic = mar_renegade_mechanic
-medic =
-barman =
-guide =
-
-leader_name =
-trader_name = mar_renegade_trader_name
-mechanic_name = mar_renegade_mechanic_name
-medic_name =
-barman_name =
-guide_name =
-
diff --git a/mods/Redone Collection_backup/gamedata/configs/plugins/mod_new_game_setup_AGR.ltx b/mods/Redone Collection_backup/gamedata/configs/plugins/mod_new_game_setup_AGR.ltx
deleted file mode 100644
index 93bdf039..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/plugins/mod_new_game_setup_AGR.ltx
+++ /dev/null
@@ -1,6 +0,0 @@
-![remove_objects]
-!agr_btr1
-;agr_btr2
-
-
-
diff --git a/mods/Redone Collection_backup/gamedata/configs/plugins/mod_new_game_setup_DS.ltx b/mods/Redone Collection_backup/gamedata/configs/plugins/mod_new_game_setup_DS.ltx
deleted file mode 100644
index 43051aab..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/plugins/mod_new_game_setup_DS.ltx
+++ /dev/null
@@ -1,6 +0,0 @@
-![remove_objects]
-;ds_awr_tiski_01
-;ds_awr_lamp_dasc_tech_mlr_01
-;ds_awr_lamp_dasc_tech_mlr_02
-;ds_awr_tiski_01
-;ds_awr_stol_1
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/plugins/mod_new_game_setup_ESC.ltx b/mods/Redone Collection_backup/gamedata/configs/plugins/mod_new_game_setup_ESC.ltx
deleted file mode 100644
index 8628265b..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/plugins/mod_new_game_setup_ESC.ltx
+++ /dev/null
@@ -1,79 +0,0 @@
-![remove_objects]
-!esc_zone_mine_field_soc
-!esc_zone_mine_field_soc_0000
-!esc_zone_mine_field_soc_0001
-!esc_zone_mine_field_soc_0002
-!esc_zone_mine_field_soc_0003
-!esc_zone_mine_field_soc_0004
-!esc_zone_mine_field_soc_0005
-!esc_zone_mine_field_soc_0006
-!esc_zone_mine_field_soc_0007
-!esc_zone_mine_field_soc_0008
-!esc_zone_mine_field_soc_0009
-!esc_zone_mine_field_soc_0010
-!esc_zone_mine_field_soc_0011
-!esc_zone_mine_field_soc_0012
-!esc_zone_mine_field_soc_0013
-!esc_zone_mine_field_soc_0014
-!esc_zone_mine_field_soc_0015
-!esc_zone_mine_field_soc_0016
-!esc_zone_mine_field_soc_0017
-!esc_zone_mine_field_soc_0018
-!esc_zone_mine_field_soc_0019
-!esc_zone_mine_field_soc_0020
-!esc_zone_mine_field_soc_0021
-!esc_zone_mine_field_soc_0022
-!esc_zone_mine_field_soc_0023
-!esc_zone_mine_field_soc_0024
-!esc_zone_mine_field_soc_0025
-!esc_zone_mine_field_soc_0026
-!esc_zone_mine_field_soc_0027
-!esc_zone_mine_field_soc_0028
-!esc_zone_mine_field_soc_0029
-!esc_zone_mine_field_soc_0030
-!esc_zone_mine_field_soc_0031
-!esc_zone_mine_field_soc_0032
-!esc_zone_mine_field_soc_0033
-!esc_zone_mine_field_soc_0034
-!esc_zone_mine_field_soc_0035
-!esc_zone_mine_field_soc_0036
-!esc_zone_mine_field_soc_0037
-!esc_zone_mine_field_soc_0038
-!esc_zone_mine_field_soc_0039
-!esc_zone_mine_field_soc_0040
-!esc_zone_mine_field_soc_0041
-!esc_zone_mine_field_soc_0042
-!esc_zone_mine_field_soc_0043
-!esc_zone_mine_field_soc_0044
-!esc_zone_mine_field_soc_0045
-!esc_zone_mine_field_soc_0046
-!esc_zone_mine_field_soc_0047
-!esc_zone_mine_field_soc_0048
-!esc_zone_mine_field_soc_0049
-!esc_zone_mine_field_soc_0050
-!esc_zone_mine_field_soc_0051
-!esc_zone_mine_field_soc_0052
-!esc_zone_mine_field_soc_0053
-!esc_zone_mine_field_soc_0054
-!esc_zone_mine_field_soc_0055
-!esc_zone_mine_field_soc_0056
-!esc_zone_mine_field_soc_0057
-!esc_zone_mine_field_soc_0058
-!esc_zone_mine_field_soc_0059
-!esc_zone_mine_field_soc_0060
-!esc_zone_mine_field_soc_0061
-!esc_zone_mine_field_soc_0062
-!esc_zone_mine_field_soc_0063
-!esc_zone_mine_field_soc_0064
-!esc_zone_mine_field_soc_0065
-
-;esc_zone_witches_galantine
-!esc_zone_witches_galantine_0000
-;esc_zone_witches_galantine_0001
-!esc_zone_witches_galantine_0002
-;esc_zone_witches_galantine_0003
-!esc_zone_witches_galantine_0004
-;esc_zone_witches_galantine_0005
-!esc_zone_witches_galantine_0006
-;esc_zone_witches_galantine_0007
-
diff --git a/mods/Redone Collection_backup/gamedata/configs/plugins/mod_new_game_setup_MIL.ltx b/mods/Redone Collection_backup/gamedata/configs/plugins/mod_new_game_setup_MIL.ltx
deleted file mode 100644
index 8613565d..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/plugins/mod_new_game_setup_MIL.ltx
+++ /dev/null
@@ -1,2 +0,0 @@
-![remove_objects]
-mil_physic_destroyable_object
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/agroprom/agr_endless_night_spawn_logic_1.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/agroprom/agr_endless_night_spawn_logic_1.ltx
deleted file mode 100644
index 2aad389e..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/agroprom/agr_endless_night_spawn_logic_1.ltx
+++ /dev/null
@@ -1,50 +0,0 @@
-[logic]
-active = ph_idle@wait_actor
-
-[ph_idle@wait_actor]
-on_info = {=actor_near_smart(agr_smart_terrain_4_6) =is_night} ph_idle@spawn_night_monster_1, {=actor_near_smart(agr_smart_terrain_4_6) =is_dark_night} ph_idle@spawn_dark_monster_1
-on_info2 = {=actor_near_smart(agr_smart_terrain_5_4) =is_night} ph_idle@spawn_night_monster_2, {=actor_near_smart(agr_smart_terrain_5_4) =is_dark_night} ph_idle@spawn_dark_monster_2
-on_info3 = {=actor_near_smart(agr_smart_terrain_5_7) =is_night} ph_idle@spawn_night_monster_3, {=actor_near_smart(agr_smart_terrain_5_7) =is_dark_night} ph_idle@spawn_dark_monster_3
-on_info4 = {=actor_near_smart(agr_smart_terrain_7_5) =is_night} ph_idle@spawn_night_monster_4, {=actor_near_smart(agr_smart_terrain_7_5) =is_dark_night} ph_idle@spawn_dark_monster_4
-
-[ph_idle@spawn_night_monster_1]
-on_info = {~10} %=create_squad(simulation_mix_zombie_night:agr_smart_terrain_4_6)% ph_idle@reset, {~10} %=create_squad(simulation_snork_night:agr_smart_terrain_4_6)% ph_idle@reset, {~10} %=create_squad(simulation_tushkano_night:agr_smart_terrain_4_6)% ph_idle@reset, {~10} %=create_squad(simulation_pseudodog_night:agr_smart_terrain_4_6)% ph_idle@reset, ph_idle@wait_reset
-
-[ph_idle@spawn_dark_monster_1]
-on_info = {~10} %=create_squad(simulation_psysucker_brown_night:agr_smart_terrain_4_6)% ph_idle@reset, {~10} %=create_squad(simulation_bloodsucker_red_night:agr_smart_terrain_4_6)% ph_idle@reset, {~10} %=create_squad(simulation_psy_dog_night:agr_smart_terrain_4_6)% ph_idle@reset, {~10} %=create_squad(simulation_pseudodog_night:agr_smart_terrain_4_6)% ph_idle@reset, ph_idle@wait_reset
-
-[ph_idle@reset]
-on_game_timer = 86400 | ph_idle@wait_actor
-
-[ph_idle@spawn_night_monster_2]
-on_info = {~10} %=create_squad(simulation_snork_night:agr_smart_terrain_5_4)% ph_idle@reset_2, {~10} %=create_squad(simulation_fracture_night:agr_smart_terrain_5_4)% ph_idle@reset_2, {~10} %=create_squad(simulation_zombie_3_6_night:agr_smart_terrain_5_4)% ph_idle@reset_2, {~10} %=create_squad(simulation_tushkano_night:agr_smart_terrain_5_4)% ph_idle@reset_2, ph_idle@wait_reset
-
-[ph_idle@spawn_dark_monster_2]
-on_info = {~10} %=create_squad(simulation_snork_2_5_night:agr_smart_terrain_5_4)% ph_idle@reset_2, {~10} %=create_squad(simulation_fracture_night:agr_smart_terrain_5_4)% ph_idle@reset_2, {~10} %=create_squad(simulation_psysucker_brown_night:agr_smart_terrain_5_4)% ph_idle@reset_2, {~10} %=create_squad(simulation_bloodsucker_red_night:agr_smart_terrain_5_4)% ph_idle@reset_2, ph_idle@wait_reset
-
-[ph_idle@reset_2]
-on_game_timer = 86400 | ph_idle@wait_actor
-
-[ph_idle@spawn_night_monster_3]
-on_info = {~10} %=create_squad(simulation_pseudodog_night:agr_smart_terrain_5_7)% ph_idle@reset_3, {~10} %=create_squad(simulation_dog_night:agr_smart_terrain_5_7)% ph_idle@reset_3, {~10} %=create_squad(simulation_karlik_night:agr_smart_terrain_5_7)% ph_idle@reset_3, {~10} %=create_squad(simulation_lurker_brown_night:agr_smart_terrain_5_7)% ph_idle@reset_3, ph_idle@wait_reset
-
-[ph_idle@spawn_dark_monster_3]
-on_info = {~10} %=create_squad(simulation_psysucker_white_night:agr_smart_terrain_5_7)% ph_idle@reset_3, {~10} %=create_squad(simulation_bloodsucker_night:agr_smart_terrain_5_7)% ph_idle@reset_3, {~10} %=create_squad(simulation_karlik_night:agr_smart_terrain_5_7)% ph_idle@reset_3, {~10} %=create_squad(simulation_lurker_brown_night:agr_smart_terrain_5_7)% ph_idle@reset_3, ph_idle@wait_reset
-
-[ph_idle@reset_3]
-on_game_timer = 86400 | ph_idle@wait_actor
-
-[ph_idle@spawn_night_monster_4]
-on_info = {~10} %=create_squad(simulation_zombie_blind_night:agr_smart_terrain_7_5)% ph_idle@reset_4, {~10} %=create_squad(simulation_cat_night:agr_smart_terrain_7_5)% ph_idle@reset_4, {~10} %=create_squad(simulation_psy_dog_night:agr_smart_terrain_7_5)% ph_idle@reset_4, {~10} %=create_squad(simulation_karlik_night:agr_smart_terrain_7_5)% ph_idle@reset_4, ph_idle@wait_reset
-
-[ph_idle@spawn_dark_monster_4]
-on_info = {~10} %=create_squad(simulation_psysucker_white_night:agr_smart_terrain_7_5)% ph_idle@reset_4, {~10} %=create_squad(simulation_bloodsucker_night:agr_smart_terrain_7_5)% ph_idle@reset_4, {~20} %=create_squad(simulation_psy_dog_night:agr_smart_terrain_7_5)% ph_idle@reset_4, {~20} %=create_squad(simulation_karlik_night:agr_smart_terrain_7_5)% ph_idle@reset_4, ph_idle@wait_reset
-
-[ph_idle@reset_4]
-on_game_timer = 86400 | ph_idle@wait_actor
-
-[ph_idle@wait_reset]
-on_game_timer = 580 | ph_idle@wait_actor
-
-[collide]
-ignore_static
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/agroprom/agr_endless_night_spawn_logic_2.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/agroprom/agr_endless_night_spawn_logic_2.ltx
deleted file mode 100644
index 44854661..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/agroprom/agr_endless_night_spawn_logic_2.ltx
+++ /dev/null
@@ -1,50 +0,0 @@
-[logic]
-active = ph_idle@wait_actor
-
-[ph_idle@wait_actor]
-on_info = {=actor_near_smart(agr_smart_terrain_5_2) =is_night} ph_idle@spawn_night_monster_1, {=actor_near_smart(agr_smart_terrain_5_2) =is_dark_night} ph_idle@spawn_dark_monster_1
-on_info2 = {=actor_near_smart(agr_smart_terrain_5_3) =is_night} ph_idle@spawn_night_monster_2, {=actor_near_smart(agr_smart_terrain_5_3) =is_dark_night} ph_idle@spawn_dark_monster_2
-on_info3 = {=actor_near_smart(agr_smart_terrain_4_4_near_1) =is_night} ph_idle@spawn_night_monster_3, {=actor_near_smart(agr_smart_terrain_4_4_near_1) =is_dark_night} ph_idle@spawn_dark_monster_3
-on_info4 = {=actor_near_smart(agr_smart_terrain_4_4_near_3) =is_night} ph_idle@spawn_night_monster_4, {=actor_near_smart(agr_smart_terrain_4_4_near_3) =is_dark_night} ph_idle@spawn_dark_monster_4
-
-[ph_idle@spawn_night_monster_1]
-on_info = {~10} %=create_squad(simulation_pseudodog_night:agr_smart_terrain_5_2)% ph_idle@reset, {~10} %=create_squad(simulation_dog_night:agr_smart_terrain_5_2)% ph_idle@reset, {~10} %=create_squad(simulation_tushkano_night:agr_smart_terrain_5_2)% ph_idle@reset, {~10} %=create_squad(simulation_boar_3_5_night:agr_smart_terrain_5_2)% ph_idle@reset, ph_idle@wait_reset
-
-[ph_idle@spawn_dark_monster_1]
-on_info = {~10} %=create_squad(simulation_psy_dog_night:agr_smart_terrain_5_2)% ph_idle@reset, {~10} %=create_squad(simulation_dog_night:agr_smart_terrain_5_2)% ph_idle@reset, {~20} %=create_squad(simulation_psysucker_brown_night:agr_smart_terrain_5_2)% ph_idle@reset, {~20} %=create_squad(simulation_bloodsucker_red_night:agr_smart_terrain_5_2)% ph_idle@reset, ph_idle@wait_reset
-
-[ph_idle@reset]
-on_game_timer = 86400 | ph_idle@wait_actor
-
-[ph_idle@spawn_night_monster_2]
-on_info = {~10} %=create_squad(simulation_tushkano_night:agr_smart_terrain_5_3)% ph_idle@reset_2, {~10} %=create_squad(simulation_fracture_night:agr_smart_terrain_5_3)% ph_idle@reset_2, {~10} %=create_squad(simulation_zombie_blind_night:agr_smart_terrain_5_3)% ph_idle@reset_2, {~10} %=create_squad(simulation_pseudodog_night:agr_smart_terrain_5_3)% ph_idle@reset_2, ph_idle@wait_reset
-
-[ph_idle@spawn_dark_monster_2]
-on_info = {~10} %=create_squad(simulation_bloodsucker_red_night:agr_smart_terrain_5_3)% ph_idle@reset_2, {~10} %=create_squad(simulation_lurker_blue_night:agr_smart_terrain_5_3)% ph_idle@reset_2, {~10} %=create_squad(simulation_zombie_blind_3zomb_civ_night:agr_smart_terrain_5_3)% ph_idle@reset_2, {~10} %=create_squad(simulation_pseudodog_night:agr_smart_terrain_5_3)% ph_idle@reset_2, ph_idle@wait_reset
-
-[ph_idle@reset_2]
-on_game_timer = 86400 | ph_idle@wait_actor
-
-[ph_idle@spawn_night_monster_3]
-on_info = {~10} %=create_squad(simulation_cat_night:agr_smart_terrain_4_4_near_1)% ph_idle@reset_3, {~10} %=create_squad(simulation_dog_night:agr_smart_terrain_4_4_near_1)% ph_idle@reset_3, {~10} %=create_squad(simulation_tushkano_night:agr_smart_terrain_4_4_near_1)% ph_idle@reset_3, {~10} %=create_squad(simulation_karlik_night:agr_smart_terrain_4_4_near_1)% ph_idle@reset_3, ph_idle@wait_reset
-
-[ph_idle@spawn_dark_monster_3]
-on_info = {~10} %=create_squad(simulation_psy_dog_night:agr_smart_terrain_4_4_near_1)% ph_idle@reset_3, {~10} %=create_squad(simulation_psysucker_white_night:agr_smart_terrain_4_4_near_1)% ph_idle@reset_3, {~10} %=create_squad(simulation_bloodsucker_night:agr_smart_terrain_4_4_near_1)% ph_idle@reset_3, {~10} %=create_squad(simulation_karlik_night:agr_smart_terrain_4_4_near_1)% ph_idle@reset_3, ph_idle@wait_reset
-
-[ph_idle@reset_3]
-on_game_timer = 86400 | ph_idle@wait_actor
-
-[ph_idle@spawn_night_monster_4]
-on_info = {~10} %=create_squad(simulation_mix_zombie_night:agr_smart_terrain_4_4_near_3)% ph_idle@reset_4, {~10} %=create_squad(simulation_dog_night:agr_smart_terrain_4_4_near_3)% ph_idle@reset_4, {~10} %=create_squad(simulation_cat_night:agr_smart_terrain_4_4_near_3)% ph_idle@reset_4, {~10} %=create_squad(simulation_snork_2_3_night:agr_smart_terrain_4_4_near_3)% ph_idle@reset_4, ph_idle@wait_reset
-
-[ph_idle@spawn_dark_monster_4]
-on_info = {~10} %=create_squad(simulation_lurker_blue_night:agr_smart_terrain_4_4_near_3)% ph_idle@reset_4, {~10} %=create_squad(simulation_karlik_night:agr_smart_terrain_4_4_near_3)% ph_idle@reset_4, {~10} %=create_squad(simulation_burer_night:agr_smart_terrain_4_4_near_3)% ph_idle@reset_4, {~10} %=create_squad(simulation_controller_night:agr_smart_terrain_4_4_near_3)% ph_idle@reset_4, ph_idle@wait_reset
-
-[ph_idle@reset_4]
-on_game_timer = 86400 | ph_idle@wait_actor
-
-[ph_idle@wait_reset]
-on_game_timer = 580 | ph_idle@wait_actor
-
-[collide]
-ignore_static
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/agroprom/agr_endless_night_spawn_logic_3.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/agroprom/agr_endless_night_spawn_logic_3.ltx
deleted file mode 100644
index 55d3a95b..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/agroprom/agr_endless_night_spawn_logic_3.ltx
+++ /dev/null
@@ -1,50 +0,0 @@
-[logic]
-active = ph_idle@wait_actor
-
-[ph_idle@wait_actor]
-on_info = {=actor_near_smart(agr_smart_terrain_1_2) =is_night} ph_idle@spawn_night_monster_1, {=actor_near_smart(agr_smart_terrain_1_2) =is_dark_night} ph_idle@spawn_night_monster_1
-on_info2 = {=actor_near_smart(agr_smart_terrain_1_3) =is_night} ph_idle@spawn_night_monster_2, {=actor_near_smart(agr_smart_terrain_1_3) =is_dark_night} ph_idle@spawn_night_monster_2
-on_info3 = {=actor_near_smart(agr_smart_terrain_2_2) =is_night} ph_idle@spawn_night_monster_3, {=actor_near_smart(agr_smart_terrain_2_2) =is_dark_night} ph_idle@spawn_night_monster_3
-on_info4 = {agr_smart_terrain_4_4_near_2) =is_night} ph_idle@spawn_night_monster_4, {=actor_near_smart(agr_smart_terrain_4_4_near_2) =is_dark_night} ph_idle@spawn_night_monster_4
-
-[ph_idle@spawn_night_monster_1]
-on_info = {~10} %=create_squad(simulation_zombie_blind_night:agr_smart_terrain_1_2)% ph_idle@reset, {~10} %=create_squad(simulation_fracture_night:agr_smart_terrain_1_2)% ph_idle@reset, {~10} %=create_squad(simulation_snork_night:agr_smart_terrain_1_2)% ph_idle@reset, {~10} %=create_squad(simulation_dog_night:agr_smart_terrain_1_2)% ph_idle@reset, ph_idle@wait_reset
-
-[ph_idle@spawn_dark_monster_1]
-on_info = {~10} %=create_squad(simulation_bloodsucker_night:agr_smart_terrain_1_2)% ph_idle@reset, {~10} %=create_squad(simulation_fracture_night:agr_smart_terrain_1_2)% ph_idle@reset, {~10} %=create_squad(simulation_zombie_blind_3zomb_civ_night:agr_smart_terrain_1_2)% ph_idle@reset, {~10} %=create_squad(simulation_lurker_blue_night:agr_smart_terrain_1_2)% ph_idle@reset, ph_idle@wait_reset
-
-[ph_idle@reset]
-on_game_timer = 86400 | ph_idle@wait_actor
-
-[ph_idle@spawn_night_monster_2]
-on_info = {~10} %=create_squad(simulation_snork_night:agr_smart_terrain_1_3)% ph_idle@reset_2, {~10} %=create_squad(simulation_fracture_night:agr_smart_terrain_1_3)% ph_idle@reset_2, {~10} %=create_squad(simulation_zombie_blind_night:agr_smart_terrain_1_3)% ph_idle@reset_2, {~10} %=create_squad(simulation_pseudodog_night:agr_smart_terrain_1_3)% ph_idle@reset_2, ph_idle@wait_reset
-
-[ph_idle@spawn_dark_monster_2]
-on_info = {~10} %=create_squad(simulation_bloodsucker_red_night:agr_smart_terrain_1_3)% ph_idle@reset_2, {~10} %=create_squad(simulation_fracture_night:agr_smart_terrain_1_3)% ph_idle@reset_2, {~10} %=create_squad(simulation_zombie_blind_3zomb_civ_night:agr_smart_terrain_1_3)% ph_idle@reset_2, {~10} %=create_squad(simulation_psysucker_brown_night:agr_smart_terrain_1_3)% ph_idle@reset_2, ph_idle@wait_reset
-
-[ph_idle@reset_2]
-on_game_timer = 86400 | ph_idle@wait_actor
-
-[ph_idle@spawn_night_monster_3]
-on_info = {~10} %=create_squad(simulation_tushkano_night:agr_smart_terrain_2_2)% ph_idle@reset_3, {~10} %=create_squad(simulation_zombie_blind_night:agr_smart_terrain_2_2)% ph_idle@reset_3, {~10} %=create_squad(simulation_boar_night:agr_smart_terrain_2_2)% ph_idle@reset_3, {~10} %=create_squad(simulation_cat_night:agr_smart_terrain_2_2)% ph_idle@reset_3, ph_idle@wait_reset
-
-[ph_idle@spawn_dark_monster_3]
-on_info = {~10} %=create_squad(simulation_psysucker_brown_night:agr_smart_terrain_2_2)% ph_idle@reset_3, {~10} %=create_squad(simulation_psy_dog_night:agr_smart_terrain_2_2)% ph_idle@reset_3, {~10} %=create_squad(simulation_burer_night:agr_smart_terrain_2_2)% ph_idle@reset_3, {~10} %=create_squad(simulation_karlik_night:agr_smart_terrain_2_2)% ph_idle@reset_3, ph_idle@wait_reset
-
-[ph_idle@reset_3]
-on_game_timer = 86400 | ph_idle@wait_actor
-
-[ph_idle@spawn_night_monster_4]
-on_info = {~10} %=create_squad(simulation_pseudodog_night:agr_smart_terrain_4_4_near_2)% ph_idle@reset_4, {~10} %=create_squad(simulation_fracture_night:agr_smart_terrain_4_4_near_2)% ph_idle@reset_4, {~10} %=create_squad(simulation_tushkano_night:agr_smart_terrain_4_4_near_2)% ph_idle@reset_4, {~10} %=create_squad(simulation_boar_night:agr_smart_terrain_4_4_near_2)% ph_idle@reset_4, ph_idle@wait_reset
-
-[ph_idle@spawn_dark_monster_4]
-on_info = {~10} %=create_squad(simulation_zombie_blind_3zomb_civ_night:agr_smart_terrain_4_4_near_2)% ph_idle@reset_4, {~10} %=create_squad(simulation_psysucker_white_night:agr_smart_terrain_4_4_near_2)% ph_idle@reset_4, {~10} %=create_squad(simulation_bloodsucker_night:agr_smart_terrain_4_4_near_2)% ph_idle@reset_4, {~10} %=create_squad(simulation_lurker_blue_night:agr_smart_terrain_4_4_near_2)% ph_idle@reset_4, ph_idle@wait_reset
-
-[ph_idle@reset_4]
-on_game_timer = 86400 | ph_idle@wait_actor
-
-[ph_idle@wait_reset]
-on_game_timer = 580 | ph_idle@wait_actor
-
-[collide]
-ignore_static
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/agroprom/mod_agr_army_megafone_redone.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/agroprom/mod_agr_army_megafone_redone.ltx
deleted file mode 100644
index bd198d12..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/agroprom/mod_agr_army_megafone_redone.ltx
+++ /dev/null
@@ -1,58 +0,0 @@
-![logic]
-!active = ph_idle@wait
-active = ph_idle@wait_for_actor
-
-[ph_idle@wait_for_actor]
-on_info = {=surge_started} ph_idle@surge, {+agr_military_colonel_kovalski_dead} ph_idle@nil, {=actor_in_zone(agr_army_base_zone)} ph_idle@check_conditions, {=actor_near_smart(agr_smart_terrain_1_6_near_1)} ph_idle@check_conditions, {=actor_near_smart(agr_smart_terrain_1_6_near_2)} ph_idle@check_conditions, ph_idle@start_humor
-
-[ph_idle@check_conditions]
-on_info = {=is_actor_enemy_to_faction(army)} ph_idle@alarm, ph_idle@start_humor
-
-[ph_idle@check_conditions_2]
-on_info = {=is_actor_enemy_to_faction(army)} ph_idle@alarm
-on_info2 = {=surge_started} ph_idle@surge
-on_game_timer = 800 | ph_idle@wait_for_actor
-
-![ph_idle@wait]
-!on_info = {=actor_in_zone(agr_army_base_zone)} ph_idle@start_humor
-!on_info2 = {=check_smart_alarm_status(agr_smart_terrain_1_6_near_1)} ph_idle@alarm
-!on_info3 = {=check_smart_alarm_status(agr_smart_terrain_1_6)} ph_idle@alarm
-!on_info4 = {=check_smart_alarm_status(agr_smart_terrain_1_6_near_2)} ph_idle@alarm
-
-![ph_idle@start_humor]
-on_info = %=play_sound(agr_army_comandir_megafon) +agr_military_colonel_kovalski_talk% ph_idle@sound_idle
-on_info2 = {=check_smart_alarm_status(agr_smart_terrain_1_6_near_1)} ph_idle@alarm
-on_info3 = {=check_smart_alarm_status(agr_smart_terrain_1_6)} ph_idle@alarm
-on_info4 = {=check_smart_alarm_status(agr_smart_terrain_1_6_near_2)} ph_idle@alarm
-on_info5 = {=check_smart_alarm_status(agr_smart_terrain_1_3)} ph_idle@alarm
-on_info6 = {=check_smart_alarm_status(agr_smart_terrain_4_6)} ph_idle@alarm
-on_info7 = {=surge_started} ph_idle@surge
-
-![ph_idle@alarm]
-on_info = %=play_sound(agr_army_alarm) -agr_military_colonel_kovalski_talk%
-on_timer = 33000 | ph_idle@wait_for_actor
-on_info2 = {!check_smart_alarm_status(agr_smart_terrain_1_6_near_1)} ph_idle@wait_for_actor
-on_info3 = {!check_smart_alarm_status(agr_smart_terrain_1_6)} ph_idle@wait_for_actor
-on_info4 = {!check_smart_alarm_status(agr_smart_terrain_1_6_near_2)} ph_idle@wait_for_actor
-on_info5 = {!check_smart_alarm_status(agr_smart_terrain_1_3)} ph_idle@wait_for_actor
-on_info6 = {!check_smart_alarm_status(agr_smart_terrain_4_6)} ph_idle@wait_for_actor
-on_info7 = {=surge_started} ph_idle@surge
-
-[ph_idle@sound_idle]
-on_info = {=surge_started} ph_idle@surge
-on_info2 = {+agr_military_colonel_kovalski_dead} ph_idle@nil
-on_info3 = {=actor_in_zone(agr_army_base_zone)} ph_idle@check_conditions_2, {=actor_near_smart(agr_smart_terrain_1_6_near_1)} ph_idle@check_conditions_2, {=actor_near_smart(agr_smart_terrain_1_6_near_2)} ph_idle@check_conditions_2
-on_game_timer = 800 | ph_idle@wait_for_actor
-
-[ph_idle@surge]
-on_info = %-agr_military_colonel_kovalski_talk =stop_sound%
-on_game_timer = 160 | ph_idle@surge_started
-
-[ph_idle@surge_started]
-on_info = %=play_sound(kovalsky_surge_phase_1)% ;-- agr_blowout_siren, quick fix, looped sound.
-on_signal = sound_end | ph_idle@surge_act_idle
-
-[ph_idle@surge_act_idle]
-on_game_timer = 460 | ph_idle@start_humor
-
-[ph_idle@nil]
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/agroprom/mod_agr_crow_spawner_redone.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/agroprom/mod_agr_crow_spawner_redone.ltx
deleted file mode 100644
index 7b388e70..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/agroprom/mod_agr_crow_spawner_redone.ltx
+++ /dev/null
@@ -1,19 +0,0 @@
-![logic]
-!active = sr_crow_spawner
-active = sr_idle@check_story
-
-[sr_idle@check_story]
-on_info = {-story_mode_disabled} sr_idle@check_actor, {+story_mode_disabled -yan_x16_complete_end} sr_idle@check_actor %+yan_kill_brain_done%
-
-[sr_idle@check_actor]
-on_info = {=actor_community(actor_monolith) -yan_x16_complete_end} sr_idle@check_helmet %+yan_kill_brain_done%, {=actor_community(actor_greh) -yan_x16_complete_end} sr_idle@check_helmet %+yan_kill_brain_done%, sr_idle@check_helmet
-
-[sr_idle@check_helmet]
-on_info = {=actor_has_item(good_psy_helmet)} sr_idle@check_spawner %+living_legend_psy_helmet%, {=actor_has_item(bad_psy_helmet)} sr_idle@check_spawner %+living_legend_psy_helmet%, sr_idle@check_spawner
-
-[sr_idle@check_spawner]
-on_info = sr_crow_spawner
-
-![sr_crow_spawner]
-max_crows_on_level = 5
-spawn_path = agr_crow_spawn_1, agr_crow_spawn_2, agr_crow_spawn_3, agr_crow_spawn_4, agr_crow_spawn_5
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/agroprom/mod_agr_smart_terrain_1_6_near_1_radio_redone.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/agroprom/mod_agr_smart_terrain_1_6_near_1_radio_redone.ltx
deleted file mode 100644
index 4412cf3f..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/agroprom/mod_agr_smart_terrain_1_6_near_1_radio_redone.ltx
+++ /dev/null
@@ -1,11 +0,0 @@
-![logic]
-active = ph_sound
-
-[ph_sound]
-snd = esc_sidorovich_radio
-looped = false
-min_idle = 300
-max_idle = 500
-random = true
-volume = {=surge_started}0, 1
-
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/agroprom/mod_agr_smart_terrain_1_6_near_1_smart_logic_redone.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/agroprom/mod_agr_smart_terrain_1_6_near_1_smart_logic_redone.ltx
deleted file mode 100644
index d2333bdf..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/agroprom/mod_agr_smart_terrain_1_6_near_1_smart_logic_redone.ltx
+++ /dev/null
@@ -1,95 +0,0 @@
-[logic@agr_smart_terrain_1_6_near_1_patrol_work_1]
-active = beh@agr_smart_terrain_1_6_near_1_patrol_work_1
-suitable = {=target_squad_name(agr_patrol_army_mlr_squad)} true
-prior = 200
-
-[logic@agr_smart_terrain_1_6_near_1_patrol_work_2]
-active = beh@agr_smart_terrain_1_6_near_1_patrol_work_2
-suitable = {=target_squad_name(agr_patrol_army_mlr_squad)} true
-prior = 200
-
-[beh@general_patrol]
-behavior_state = beh_move
-target = waypoint
-walk_dist = 100
-jog_dist = 220
-wait_anim = guard
-walk_anim = patrol
-jog_anim = assault
-run_anim = assault
-delay_anim = guard
-combat_ignore_cond = false
-combat_ignore_keep_when_attacked = false
-gather_items_enabled = false
-help_wounded_enabled = true
-corpse_detection_enabled = false
-invulnerable = false
-
-[beh@general_surge]
-behavior_state = beh_move
-target = waypoint
-walk_dist = 100
-jog_dist = 220
-walk_anim = rush
-jog_anim = rush
-run_anim = rush
-gather_items_enabled = false
-help_wounded_enabled = false
-corpse_detection_enabled = false
-invulnerable = {=is_warfare} false, {!actor_true_enemy} true, false
-
-[beh@agr_smart_terrain_1_6_near_1_patrol_work_1]:beh@general_patrol
-pt1 = 100, guard | pos: -67.554389953613, -1.6522723436356, -178.81480407715
-pt2 = 100, guard | pos: -34.639892578125, -1.6747641563416, -170.35836791992
-pt3 = 100, guard | pos: -0.11069346964359, 0.28407162427902, -153.95838928223
-pt4 = 100, guard | pos: 31.231035232544, 0.33903837203979, -143.92808532715
-pt5 = 100, guard | pos: 50.08670425415, 0.20060548186302, -140.1003112793
-pt6 = 100, guard | pos: 78.336517333984, 0.41799223423004, -119.35453033447
-pt7 = 100, guard | pos: 87.035820007324, 0.39919662475586, -91.530319213867
-pt8 = 100, guard | pos: 93.522369384766, 0.40386408567429, -68.310653686523
-pt9 = 35000, binocular | pos: 102.63137054443, 0.40859204530716, -39.647026062012 look: 103.21803283691, 0.41131514310837, -38.768424987793
-pt10 = 100, guard | pos: 87.078941345215, 0.4905424118042, -45.053207397461
-pt11 = 100, guard | pos: 46.684085845947, 0.49939036369324, -51.184837341309
-pt12 = 100, guard | pos: 10.739145278931, 0.49923449754715, -50.732387542725
-pt13 = 100, guard | pos: -21.652070999146, 0.49711525440216, -47.524513244629
-pt14 = 100, guard | pos: -57.737426757812, 0.36240267753601, -41.180976867676
-pt15 = 100, guard | pos: -96.74462890625, 0.45440995693207, -34.791328430176
-pt16 = 100, guard | pos: -138.09623718262, 0.34220695495605, -35.334255218506
-pt17 = 100, guard | pos: -169.80340576172, 0.0080493688583374, -45.173477172852
-pt18 = 100, guard | pos: -188.45465087891, 0.37623238563538, -77.177635192871
-pt19 = 100, guard | pos: -191.86056518555, 0.16077184677124, -119.08964538574
-path_end = loop
-on_info = {=surge_started} beh@agr_smart_terrain_1_6_near_1_surge_work_1
-
-[beh@agr_smart_terrain_1_6_near_1_patrol_work_2]:beh@general_patrol
-pt1 = 1500, guard | pos: -67.554389953613, -1.6522723436356, -178.81480407715
-pt2 = 100, guard | pos: -34.639892578125, -1.6747641563416, -170.35836791992
-pt3 = 100, guard | pos: -0.11069346964359, 0.28407162427902, -153.95838928223
-pt4 = 100, guard | pos: 31.231035232544, 0.33903837203979, -143.92808532715
-pt5 = 100, guard | pos: 50.08670425415, 0.20060548186302, -140.1003112793
-pt6 = 100, guard | pos: 78.336517333984, 0.41799223423004, -119.35453033447
-pt7 = 100, guard | pos: 87.035820007324, 0.39919662475586, -91.530319213867
-pt8 = 100, guard | pos: 93.522369384766, 0.40386408567429, -68.310653686523
-pt9 = 36000, guard | pos: 97.147041320801, 0.454216837883, -45.956203460693 look: 87.035820007324, 0.39919662475586, -91.530319213867
-pt10 = 100, guard | pos: 87.078941345215, 0.4905424118042, -45.053207397461
-pt11 = 100, guard | pos: 46.684085845947, 0.49939036369324, -51.184837341309
-pt12 = 100, guard | pos: 10.739145278931, 0.49923449754715, -50.732387542725
-pt13 = 100, guard | pos: -21.652070999146, 0.49711525440216, -47.524513244629
-pt14 = 100, guard | pos: -57.737426757812, 0.36240267753601, -41.180976867676
-pt15 = 100, guard | pos: -96.74462890625, 0.45440995693207, -34.791328430176
-pt16 = 100, guard | pos: -138.09623718262, 0.34220695495605, -35.334255218506
-pt17 = 100, guard | pos: -169.80340576172, 0.0080493688583374, -45.173477172852
-pt18 = 100, guard | pos: -188.45465087891, 0.37623238563538, -77.177635192871
-pt19 = 100, guard | pos: -191.86056518555, 0.16077184677124, -119.08964538574
-path_end = loop
-on_info = {=surge_started} beh@agr_smart_terrain_1_6_near_1_surge_work_2
-
-[beh@agr_smart_terrain_1_6_near_1_surge_work_1]:beh@general_surge
-pt1 = 1000, smoking_stand | pos: -163.51119995117, -0.20465818047523, -197.92788696289 look: -188.45465087891, 0.37623238563538, -77.177635192871
-on_info = {=surge_complete} beh@agr_smart_terrain_1_6_near_1_patrol_work_1
-
-[beh@agr_smart_terrain_1_6_near_1_surge_work_2]:beh@general_surge
-pt1 = 1000, idle | pos: -154.60098266602, -0.21979755163193, -184.5887298584 look: -188.45465087891, 0.37623238563538, -77.177635192871
-on_info = {=surge_complete} beh@agr_smart_terrain_1_6_near_1_patrol_work_2
-
-
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/agroprom/mod_agr_smart_terrain_1_6_near_2_smart_logic_redone.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/agroprom/mod_agr_smart_terrain_1_6_near_2_smart_logic_redone.ltx
deleted file mode 100644
index d7419604..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/agroprom/mod_agr_smart_terrain_1_6_near_2_smart_logic_redone.ltx
+++ /dev/null
@@ -1,5 +0,0 @@
-![logic@agr_military_colonel_kovalski]
-on_death = death_leader
-
-[death_leader]
-on_info = %+agr_military_colonel_kovalski_dead%
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/agroprom/smart/agr_smart_terrain_1_2.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/agroprom/smart/agr_smart_terrain_1_2.ltx
deleted file mode 100644
index aaab0419..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/agroprom/smart/agr_smart_terrain_1_2.ltx
+++ /dev/null
@@ -1,33 +0,0 @@
-[smart_terrain]
-squad_id = 1
-max_population = 1
-respawn_params = respawn@agr_smart_terrain_1_2
-respawn_only_smart = false
-respawn_idle = 172800
-respawn_radius = 50
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = nil
-;def_restr = nil
-;safe_restr = nil
-;spawn_point = nil
-
-[respawn@agr_smart_terrain_1_2] ;-- Type:
-spawn_all_hard_c_2_1
-spawn_all_worst_c_2_2
-
-
-[spawn_all_hard_c_2_1] ;-- Hard mutants - Rates of groups: ( 1 fracture + 2 snork + 1 psydog + 2 karlik)
-spawn_squads = simulation_fracture, simulation_fracture, simulation_snork_2_3, simulation_psy_dog, simulation_karlik, simulation_karlik
-spawn_num = {!actor_week_in_zone(4)} 1, {=actor_week_in_zone(4)} 0
-
-[spawn_all_worst_c_2_2] ;-- Worst mutants - Rates of groups: ( 1 fracture + 2 snork + 1 bloodsucker + 1 psysucker + 2 karlik )
-spawn_squads = simulation_fracture, simulation_fracture, simulation_snork_2_5, simulation_psy_dog_squad, simulation_karlik, simulation_karlik
-spawn_num = {=actor_week_in_zone(4)} 1, {!actor_week_in_zone(4)} 0
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-;[exclusive]
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/agroprom/smart/agr_smart_terrain_1_3.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/agroprom/smart/agr_smart_terrain_1_3.ltx
deleted file mode 100644
index c73b3053..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/agroprom/smart/agr_smart_terrain_1_3.ltx
+++ /dev/null
@@ -1,25 +0,0 @@
-[smart_terrain] ;-- Disabled spawn
-squad_id = 2
-max_population = 1
-;respawn_params = respawn@agr_smart_terrain_1_3
-;respawn_only_smart = false
-;respawn_idle = 86400
-;respawn_radius = 50
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = nil
-;def_restr = nil
-;safe_restr = nil
-;spawn_point = nil
-
-;[respawn@agr_smart_terrain_1_3] ;-- Type:
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-[exclusive]
-faction_base_defense_enemy1 = agroprom\agr_smart_terrain_1_3_smart_logic.ltx
-faction_base_defense_enemy2 = agroprom\agr_smart_terrain_1_3_smart_logic.ltx
-faction_base_defense_enemy3 = agroprom\agr_smart_terrain_1_3_smart_logic.ltx
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/agroprom/smart/agr_smart_terrain_1_6.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/agroprom/smart/agr_smart_terrain_1_6.ltx
deleted file mode 100644
index 93dc1d88..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/agroprom/smart/agr_smart_terrain_1_6.ltx
+++ /dev/null
@@ -1,81 +0,0 @@
-[smart_terrain]
-squad_id = 3
-max_population = 3
-respawn_params = respawn@agr_smart_terrain_1_6
-respawn_only_smart = false
-respawn_idle = 43200
-respawn_radius = 200
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = nil
-;def_restr = nil
-;safe_restr = nil
-;spawn_point = nil
-
-[respawn@agr_smart_terrain_1_6] ;-- Type: faction {army} = faction base\courtyard
-spawn_army@novice
-spawn_army@advanced
-spawn_army@veteran
-spawn_army_special
-
-
-[spawn_army@novice]
-spawn_squads = army_sim_squad_novice, army_sim_squad_novice, army_sim_squad_advanced
-spawn_num = {+agr_military_colonel_kovalski_dead} 2, 3
-
-[spawn_army@advanced]
-spawn_squads = army_sim_squad_advanced, army_sim_squad_advanced, army_sim_squad_novice
-spawn_num = {+agr_military_colonel_kovalski_dead} 1, 3
-
-[spawn_army@veteran]
-spawn_squads = army_sim_squad_veteran, army_sim_squad_advanced, army_sim_squad_advanced
-spawn_num = {+agr_military_colonel_kovalski_dead} 0, 2
-
-[spawn_army_special]
-spawn_squads = agr_1_6_guards_army_mlr_squad
-spawn_num = {!squad_name_exist(agr_1_6_guards_army_mlr_squad) -agr_military_colonel_kovalski_dead} 1, 0
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-[exclusive]
-agr_1_6_barman_army_mlr = agroprom\agr_1_6_barman_army_mlr.ltx
-agr_1_6_medic_army_mlr = agroprom\agr_1_6_medic_army_mlr.ltx
-agr_smart_terrain_1_6_army_trader = agroprom\agr_smart_terrain_1_6_smart_logic.ltx
-agr_smart_terrain_1_6_army_mechanic = agroprom\agr_smart_terrain_1_6_smart_logic.ltx
-
-agr_smart_terrain_1_6_minigunner_excl = agroprom\agr_smart_terrain_1_6_smart_logic.ltx
-
-agr_smart_terrain_1_6_camp_work_1 = agroprom\agr_smart_terrain_1_6_smart_logic.ltx
-agr_smart_terrain_1_6_camp_work_2 = agroprom\agr_smart_terrain_1_6_smart_logic.ltx
-agr_smart_terrain_1_6_camp_work_3 = agroprom\agr_smart_terrain_1_6_smart_logic.ltx
-agr_smart_terrain_1_6_camp_work_4 = agroprom\agr_smart_terrain_1_6_smart_logic.ltx
-agr_smart_terrain_1_6_camp_work_5 = agroprom\agr_smart_terrain_1_6_smart_logic.ltx
-agr_smart_terrain_1_6_camp_work_6 = agroprom\agr_smart_terrain_1_6_smart_logic.ltx
-agr_smart_terrain_1_6_camp_work_7 = agroprom\agr_smart_terrain_1_6_smart_logic.ltx
-agr_smart_terrain_1_6_camp_work_8 = agroprom\agr_smart_terrain_1_6_smart_logic.ltx
-agr_smart_terrain_1_6_camp_work_9 = agroprom\agr_smart_terrain_1_6_smart_logic.ltx
-agr_smart_terrain_1_6_camp_work_10 = agroprom\agr_smart_terrain_1_6_smart_logic.ltx
-agr_smart_terrain_1_6_camp_work_11 = agroprom\agr_smart_terrain_1_6_smart_logic.ltx
-agr_smart_terrain_1_6_camp_work_12 = agroprom\agr_smart_terrain_1_6_smart_logic.ltx
-agr_smart_terrain_1_6_camp_work_13 = agroprom\agr_smart_terrain_1_6_smart_logic.ltx
-agr_smart_terrain_1_6_camp_work_14 = agroprom\agr_smart_terrain_1_6_smart_logic.ltx
-agr_smart_terrain_1_6_camp_work_15 = agroprom\agr_smart_terrain_1_6_smart_logic.ltx
-agr_smart_terrain_1_6_camp_work_16 = agroprom\agr_smart_terrain_1_6_smart_logic.ltx
-agr_smart_terrain_1_6_camp_work_17 = agroprom\agr_smart_terrain_1_6_smart_logic.ltx
-agr_smart_terrain_1_6_camp_work_18 = agroprom\agr_smart_terrain_1_6_smart_logic.ltx
-agr_smart_terrain_1_6_camp_work_19 = agroprom\agr_smart_terrain_1_6_smart_logic.ltx
-agr_smart_terrain_1_6_camp_work_20 = agroprom\agr_smart_terrain_1_6_smart_logic.ltx
-agr_smart_terrain_1_6_camp_work_21 = agroprom\agr_smart_terrain_1_6_smart_logic.ltx
-agr_smart_terrain_1_6_camp_work_22 = agroprom\agr_smart_terrain_1_6_smart_logic.ltx
-agr_smart_terrain_1_6_camp_work_23 = agroprom\agr_smart_terrain_1_6_smart_logic.ltx
-agr_smart_terrain_1_6_camp_work_24 = agroprom\agr_smart_terrain_1_6_smart_logic.ltx
-
-faction_base_defense_enemy1 = agroprom\agr_smart_terrain_1_6_smart_logic.ltx
-faction_base_defense_enemy2 = agroprom\agr_smart_terrain_1_6_smart_logic.ltx
-faction_base_defense_enemy3 = agroprom\agr_smart_terrain_1_6_smart_logic.ltx
-faction_base_defense_enemy4 = agroprom\agr_smart_terrain_1_6_smart_logic.ltx
-faction_base_defense_enemy5 = agroprom\agr_smart_terrain_1_6_smart_logic.ltx
-faction_base_defense_enemy6 = agroprom\agr_smart_terrain_1_6_smart_logic.ltx
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/agroprom/smart/agr_smart_terrain_1_6_near_1.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/agroprom/smart/agr_smart_terrain_1_6_near_1.ltx
deleted file mode 100644
index 5ab374bb..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/agroprom/smart/agr_smart_terrain_1_6_near_1.ltx
+++ /dev/null
@@ -1,41 +0,0 @@
-[smart_terrain]
-squad_id = 4
-max_population = 2
-respawn_params = respawn@agr_smart_terrain_1_6_near_1_near_1
-respawn_only_smart = false
-respawn_idle = 86400
-respawn_radius = 200
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = nil
-;def_restr = nil
-;safe_restr = nil
-;spawn_point = nil
-
-[respawn@agr_smart_terrain_1_6_near_1_near_1] ;-- Type: faction {army} = faction base\north gate
-spawn_army_patrol
-spawn_army_special
-
-
-[spawn_army_patrol]
-spawn_squads = agr_patrol_army_mlr_squad
-spawn_num = {!squad_name_exist(agr_patrol_army_mlr_squad) -agr_military_colonel_kovalski_dead} 1, 0
-
-[spawn_army_special]
-spawn_squads = agr_1_6_guards_army_mlr_2_squad
-spawn_num = {!squad_name_exist(agr_1_6_guards_army_mlr_2_squad) -agr_military_colonel_kovalski_dead} 1, 0
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-[exclusive]
-agr_smart_terrain_1_6_near_1_camp_work_1 = agroprom\agr_smart_terrain_1_6_near_1_smart_logic.ltx
-agr_smart_terrain_1_6_near_1_camp_work_2 = agroprom\agr_smart_terrain_1_6_near_1_smart_logic.ltx
-agr_smart_terrain_1_6_near_1_camp_work_3 = agroprom\agr_smart_terrain_1_6_near_1_smart_logic.ltx
-agr_smart_terrain_1_6_near_1_camp_work_4 = agroprom\agr_smart_terrain_1_6_near_1_smart_logic.ltx
-agr_smart_terrain_1_6_near_1_camp_work_5 = agroprom\agr_smart_terrain_1_6_near_1_smart_logic.ltx
-
-agr_smart_terrain_1_6_near_1_patrol_work_1 = agroprom\agr_smart_terrain_1_6_near_1_smart_logic.ltx
-agr_smart_terrain_1_6_near_1_patrol_work_2 = agroprom\agr_smart_terrain_1_6_near_1_smart_logic.ltx
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/agroprom/smart/agr_smart_terrain_1_6_near_2.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/agroprom/smart/agr_smart_terrain_1_6_near_2.ltx
deleted file mode 100644
index 26a3705f..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/agroprom/smart/agr_smart_terrain_1_6_near_2.ltx
+++ /dev/null
@@ -1,40 +0,0 @@
-[smart_terrain]
-squad_id = 5
-max_population = 2
-respawn_params = respawn@agr_smart_terrain_1_6_near_2
-respawn_only_smart = false
-respawn_idle = 345600
-respawn_radius = 200
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = nil
-;def_restr = nil
-;safe_restr = nil
-;spawn_point = nil
-
-[respawn@agr_smart_terrain_1_6_near_2] ;-- Type: faction {army} = faction base\building
-spawn_army_special
-spawn_heli_strong
-spawn_heli_weak
-
-
-
-[spawn_army_special]
-spawn_squads = agr_1_6_guards_army_mlr_3_squad
-spawn_num = {!squad_name_exist(agr_1_6_guards_army_mlr_3_squad) -agr_military_colonel_kovalski_dead} 1, 0
-
-[spawn_heli_strong]
-spawn_helicopter = simulation_helicopter_strong
-spawn_num = {!down_to_earth_functor !heli_exist_on_level} 1,{-agr_military_colonel_kovalski_dead} 0
-
-[spawn_heli_weak]
-spawn_helicopter = simulation_helicopter_weak
-spawn_num = {=down_to_earth_functor !heli_exist_on_level} 1,{-agr_military_colonel_kovalski_dead} 0
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-[exclusive]
-agr_military_colonel_kovalski = agroprom\agr_smart_terrain_1_6_near_2_smart_logic.ltx
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/agroprom/smart/agr_smart_terrain_2_2.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/agroprom/smart/agr_smart_terrain_2_2.ltx
deleted file mode 100644
index a1309e73..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/agroprom/smart/agr_smart_terrain_2_2.ltx
+++ /dev/null
@@ -1,33 +0,0 @@
-[smart_terrain]
-squad_id = 6
-max_population = 2
-respawn_params = respawn@gar_smart_terrain_2_2
-respawn_only_smart = false
-respawn_idle = 86400
-respawn_radius = 50
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = nil
-;def_restr = nil
-;safe_restr = nil
-;spawn_point = nil
-
-[respawn@gar_smart_terrain_2_2] ;-- Type: c_1_1 + c_1_2 edited
-spawn_all_weak_c_1_1
-spawn_all_normal_c_1_2
-
-
-[spawn_all_weak_c_1_1] ;-- Weak mutants - Rates of groups: ( 2 tushkano + 2 dogs + 1 cats + 1 flesh )
-spawn_squads = simulation_tushkano, simulation_tushkano, simulation_dog, simulation_mix_dogs, simulation_cat, simulation_flesh
-spawn_num = {!actor_week_in_zone(1)} 1, {=actor_week_in_zone(1)} 0
-
-[spawn_all_normal_c_1_2];-- Normal mutants - Rates of groups: ( 2 dogs + 1 cats + 3 fleshes/boars )
-spawn_squads = simulation_mix_dogs, simulation_mix_dogs, simulation_cat_3_5, simulation_mix_boar_flesh, simulation_flesh, simulation_boar
-spawn_num = {=actor_week_in_zone(1)} 1, {!actor_week_in_zone(1)} 0
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-;[exclusive]
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/agroprom/smart/agr_smart_terrain_4_4.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/agroprom/smart/agr_smart_terrain_4_4.ltx
deleted file mode 100644
index 6e347749..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/agroprom/smart/agr_smart_terrain_4_4.ltx
+++ /dev/null
@@ -1,29 +0,0 @@
-[smart_terrain] ;-- Disabled spawn
-squad_id = 7
-max_population = 1
-;respawn_params = respawn@agr_smart_terrain_4_4
-;respawn_only_smart = false
-;respawn_idle = 86400
-;respawn_radius = 50
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = nil
-;def_restr = nil
-;safe_restr = nil
-;spawn_point = nil
-
-;[respawn@agr_smart_terrain_4_4] ;-- Type: faction {army} = factory occupied\factory deserted
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-[exclusive]
-agr_smart_terrain_4_4_camp_work_1 = agroprom\agr_smart_terrain_4_4_smart_logic.ltx
-agr_smart_terrain_4_4_camp_work_2 = agroprom\agr_smart_terrain_4_4_smart_logic.ltx
-agr_smart_terrain_4_4_camp_work_3 = agroprom\agr_smart_terrain_4_4_smart_logic.ltx
-agr_smart_terrain_4_4_camp_work_4 = agroprom\agr_smart_terrain_4_4_smart_logic.ltx
-agr_smart_terrain_4_4_camp_work_5 = agroprom\agr_smart_terrain_4_4_smart_logic.ltx
-
-
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/agroprom/smart/agr_smart_terrain_4_4_near_1.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/agroprom/smart/agr_smart_terrain_4_4_near_1.ltx
deleted file mode 100644
index 9f6594da..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/agroprom/smart/agr_smart_terrain_4_4_near_1.ltx
+++ /dev/null
@@ -1,28 +0,0 @@
-[smart_terrain] ;-- Disabled spawn
-squad_id = 8
-max_population = 1
-;respawn_params = respawn@agr_smart_terrain_4_4_near_1_near_1
-;respawn_only_smart = false
-;respawn_idle = 86400
-;respawn_radius = 50
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = nil
-;def_restr = nil
-;safe_restr = nil
-;spawn_point = nil
-
-;[respawn@agr_smart_terrain_4_4_near_1_near_1] ;-- Type: faction {army} = factory occupied\factory deserted
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-[exclusive]
-agr_smart_terrain_4_4_near_1_camp_work_1 = agroprom\agr_smart_terrain_4_4_near_1_smart_logic.ltx
-agr_smart_terrain_4_4_near_1_camp_work_2 = agroprom\agr_smart_terrain_4_4_near_1_smart_logic.ltx
-;agr_smart_terrain_4_4_near_1_camp_work_3 = agroprom\agr_smart_terrain_4_4_near_1_smart_logic.ltx
-;agr_smart_terrain_4_4_near_1_camp_work_4 = agroprom\agr_smart_terrain_4_4_near_1_smart_logic.ltx
-;agr_smart_terrain_4_4_near_1_camp_work_5 = agroprom\agr_smart_terrain_4_4_near_1_smart_logic.ltx
-
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/agroprom/smart/agr_smart_terrain_4_4_near_2.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/agroprom/smart/agr_smart_terrain_4_4_near_2.ltx
deleted file mode 100644
index 64cb6022..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/agroprom/smart/agr_smart_terrain_4_4_near_2.ltx
+++ /dev/null
@@ -1,27 +0,0 @@
-[smart_terrain] ;-- Disabled spawn
-squad_id = 9
-max_population = 1
-;respawn_params = respawn@agr_smart_terrain_4_4_near_2
-;respawn_only_smart = false
-;respawn_idle = 86400
-;respawn_radius = 50
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = nil
-;def_restr = nil
-;safe_restr = nil
-;spawn_point = nil
-
-;[respawn@agr_smart_terrain_4_4_near_2] ;-- Type: faction {army} = factory occupied\factory deserted
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-[exclusive]
-agr_smart_terrain_4_4_near_2_camp_work_1 = agroprom\agr_smart_terrain_4_4_near_2_smart_logic.ltx
-agr_smart_terrain_4_4_near_2_camp_work_2 = agroprom\agr_smart_terrain_4_4_near_2_smart_logic.ltx
-;agr_smart_terrain_4_4_near_2_camp_work_3 = agroprom\agr_smart_terrain_4_4_near_2_smart_logic.ltx
-;agr_smart_terrain_4_4_near_2_camp_work_4 = agroprom\agr_smart_terrain_4_4_near_2_smart_logic.ltx
-;agr_smart_terrain_4_4_near_2_camp_work_5 = agroprom\agr_smart_terrain_4_4_near_2_smart_logic.ltx
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/agroprom/smart/agr_smart_terrain_4_4_near_3.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/agroprom/smart/agr_smart_terrain_4_4_near_3.ltx
deleted file mode 100644
index a883efcb..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/agroprom/smart/agr_smart_terrain_4_4_near_3.ltx
+++ /dev/null
@@ -1,27 +0,0 @@
-[smart_terrain] ;-- Disabled spawn
-squad_id = 10
-max_population = 1
-;respawn_params = respawn@agr_smart_terrain_4_4_near_3
-;respawn_only_smart = false
-;respawn_idle = 86400
-;respawn_radius = 50
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = nil
-;def_restr = nil
-;safe_restr = nil
-;spawn_point = nil
-
-;[respawn@agr_smart_terrain_4_4_near_3] ;-- Type: faction {army} = factory occupied\factory deserted
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-[exclusive]
-agr_smart_terrain_4_4_near_3_camp_work_1 = agroprom\agr_smart_terrain_4_4_near_3_smart_logic.ltx
-agr_smart_terrain_4_4_near_3_camp_work_2 = agroprom\agr_smart_terrain_4_4_near_3_smart_logic.ltx
-;agr_smart_terrain_4_4_near_3_camp_work_3 = agroprom\agr_smart_terrain_4_4_near_3_smart_logic.ltx
-;agr_smart_terrain_4_4_near_3_camp_work_4 = agroprom\agr_smart_terrain_4_4_near_3_smart_logic.ltx
-;agr_smart_terrain_4_4_near_3_camp_work_5 = agroprom\agr_smart_terrain_4_4_near_3_smart_logic.ltx
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/agroprom/smart/agr_smart_terrain_4_6.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/agroprom/smart/agr_smart_terrain_4_6.ltx
deleted file mode 100644
index 0ddf9d23..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/agroprom/smart/agr_smart_terrain_4_6.ltx
+++ /dev/null
@@ -1,25 +0,0 @@
-[smart_terrain] ;-- Disabled spawn
-squad_id = 11
-max_population = 1
-;respawn_params = respawn@agr_smart_terrain_4_6
-;respawn_only_smart = false
-;respawn_idle = 86400
-;respawn_radius = 50
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = nil
-;def_restr = nil
-;safe_restr = nil
-;spawn_point = nil
-
-;[respawn@agr_smart_terrain_4_6] ;-- Type: faction {army} = campsite
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-[exclusive]
-faction_base_defense_enemy1 = agroprom\agr_smart_terrain_4_6_smart_logic.ltx
-faction_base_defense_enemy2 = agroprom\agr_smart_terrain_4_6_smart_logic.ltx
-faction_base_defense_enemy3 = agroprom\agr_smart_terrain_4_6_smart_logic.ltx
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/agroprom/smart/agr_smart_terrain_5_2.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/agroprom/smart/agr_smart_terrain_5_2.ltx
deleted file mode 100644
index 70245852..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/agroprom/smart/agr_smart_terrain_5_2.ltx
+++ /dev/null
@@ -1,34 +0,0 @@
-[smart_terrain]
-squad_id = 12
-max_population = 2
-respawn_params = respawn@agr_smart_terrain_5_2
-respawn_only_smart = false
-respawn_idle = 86400
-respawn_radius = 50
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = nil
-;def_restr = nil
-;safe_restr = nil
-;spawn_point = nil
-
-[respawn@agr_smart_terrain_5_2] ;-- Type:
-spawn_all_normal
-spawn_snork
-
-
-[spawn_all_normal] ;-- Normal mutants - Rates of groups:(1 tushkano + 2 dogs + 2 cats + 3 fleshes/boars)
-spawn_squads = simulation_tushkano, simulation_dog, simulation_mix_dogs, simulation_cat, simulation_cat, simulation_mix_boar_flesh, simulation_flesh, simulation_boar
-spawn_num = {~50} 1, 0
-
-[spawn_snork] ;-- Normal\Hard mutants - Rates of groups: ( 3 snork + 2 fracture )
-spawn_squads = simulation_snork_2_3, simulation_snork_2_3, simulation_snork_2_5, simulation_fracture, simulation_fracture
-spawn_num = 1
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-;[exclusive]
-
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/agroprom/smart/agr_smart_terrain_5_3.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/agroprom/smart/agr_smart_terrain_5_3.ltx
deleted file mode 100644
index 47780776..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/agroprom/smart/agr_smart_terrain_5_3.ltx
+++ /dev/null
@@ -1,34 +0,0 @@
-[smart_terrain]
-squad_id = 13
-max_population = 1
-respawn_params = respawn@agr_smart_terrain_5_3
-respawn_only_smart = false
-respawn_idle = 172800
-respawn_radius = 50
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = nil
-;def_restr = nil
-;safe_restr = nil
-;spawn_point = nil
-
-[respawn@agr_smart_terrain_5_3] ;-- Type: c_1_1 + c_1_2 edited
-spawn_all_weak_c_1_1
-spawn_all_normal_c_1_2
-
-
-[spawn_all_weak_c_1_1] ;-- Weak mutants - Rates of groups: ( 2 tushkano + 2 dogs + 1 cats + 1 flesh )
-spawn_squads = simulation_tushkano, simulation_tushkano, simulation_dog, simulation_mix_dogs, simulation_cat, simulation_flesh
-spawn_num = {!actor_week_in_zone(1)} 1, {=actor_week_in_zone(1)} 0
-
-[spawn_all_normal_c_1_2];-- Normal mutants - Rates of groups: ( 2 dogs + 1 cats + 3 fleshes/boars )
-spawn_squads = simulation_mix_dogs, simulation_mix_dogs, simulation_cat_3_5, simulation_mix_boar_flesh, simulation_flesh, simulation_boar
-spawn_num = {=actor_week_in_zone(1)} 1, {!actor_week_in_zone(1)} 0
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-;[exclusive]
-
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/agroprom/smart/agr_smart_terrain_5_4.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/agroprom/smart/agr_smart_terrain_5_4.ltx
deleted file mode 100644
index 33047b5c..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/agroprom/smart/agr_smart_terrain_5_4.ltx
+++ /dev/null
@@ -1,22 +0,0 @@
-[smart_terrain] ;-- Disabled spawn
-squad_id = 17
-max_population = 1
-;respawn_params = respawn@agr_smart_terrain_5_4
-;respawn_only_smart = false
-;respawn_idle = 86400
-;respawn_radius = 50
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = nil
-;def_restr = nil
-;safe_restr = nil
-;spawn_point = nil
-
-;[respawn@agr_smart_terrain_5_4] ;-- Type: faction {army} = checkpoint
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-;[exclusive]
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/agroprom/smart/agr_smart_terrain_5_7.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/agroprom/smart/agr_smart_terrain_5_7.ltx
deleted file mode 100644
index ef5cd47b..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/agroprom/smart/agr_smart_terrain_5_7.ltx
+++ /dev/null
@@ -1,34 +0,0 @@
-[smart_terrain]
-squad_id = 14
-max_population = 2
-respawn_params = respawn@agr_smart_terrain_5_7
-respawn_only_smart = false
-respawn_idle = 172800
-respawn_radius = 50
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = nil
-;def_restr = nil
-;safe_restr = nil
-;spawn_point = nil
-
-[respawn@agr_smart_terrain_5_7] ;-- Type:
-spawn_zombie
-spawn_snork
-
-
-[spawn_zombie] ;-- Weak mutants - Rates of groups: ( 3 zombie )
-spawn_squads = simulation_zombie_3_6, simulation_zombie_3_6, simulation_mix_zombie
-spawn_num = {+yan_kill_brain_done} 0, 1
-
-[spawn_snork] ;-- Hard mutants - Rates of groups: ( 3 snork + 1 fracture )
-spawn_squads = simulation_snork_2_3, simulation_snork_2_3, simulation_snork_2_5, simulation_fracture
-spawn_num = 1, 0 ;{~50}
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-;[exclusive]
-
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/agroprom/smart/agr_smart_terrain_6_4.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/agroprom/smart/agr_smart_terrain_6_4.ltx
deleted file mode 100644
index 21046fc7..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/agroprom/smart/agr_smart_terrain_6_4.ltx
+++ /dev/null
@@ -1,27 +0,0 @@
-[smart_terrain] ;-- Disabled spawn
-squad_id = 15
-max_population = 2
-;respawn_params = respawn@agr_smart_terrain_6_4
-;respawn_only_smart = false
-;respawn_idle = 86400
-;respawn_radius = 50
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = nil
-;def_restr = nil
-;safe_restr = nil
-;spawn_point = nil
-
-;[respawn@agr_smart_terrain_6_4] ;-- Type: hideout
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-[exclusive]
-agr_smart_terrain_6_4_camp_work_1 = agroprom\agr_smart_terrain_6_4_smart_logic.ltx
-agr_smart_terrain_6_4_camp_work_2 = agroprom\agr_smart_terrain_6_4_smart_logic.ltx
-agr_smart_terrain_6_4_camp_work_3 = agroprom\agr_smart_terrain_6_4_smart_logic.ltx
-agr_smart_terrain_6_4_camp_work_4 = agroprom\agr_smart_terrain_6_4_smart_logic.ltx
-agr_smart_terrain_6_4_camp_work_5 = agroprom\agr_smart_terrain_6_4_smart_logic.ltx
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/agroprom/smart/agr_smart_terrain_6_6.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/agroprom/smart/agr_smart_terrain_6_6.ltx
deleted file mode 100644
index e1679e36..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/agroprom/smart/agr_smart_terrain_6_6.ltx
+++ /dev/null
@@ -1,34 +0,0 @@
-[smart_terrain]
-squad_id = 17
-max_population = 1
-respawn_params = respawn@agr_smart_terrain_6_6
-respawn_only_smart = false
-respawn_idle = 86400
-respawn_radius = 50
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = nil
-;def_restr = nil
-;safe_restr = nil
-;spawn_point = nil
-
-[respawn@agr_smart_terrain_6_6] ;-- Type:
-spawn_zombie
-spawn_snork
-
-
-[spawn_zombie] ;-- Weak mutants - Rates of groups: ( 3 zombie )
-spawn_squads = simulation_zombie_3_6, simulation_zombie_3_6, simulation_mix_zombie,
-spawn_num = {+yan_kill_brain_done} 0, 1
-
-[spawn_snork] ;-- Normal\hard mutants - Rates of groups: ( 3 snork + 2 fracture )
-spawn_squads = simulation_snork, simulation_snork_2_3, simulation_snork_2_5, simulation_fracture, simulation_fracture
-spawn_num = 1
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-;[exclusive]
-
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/agroprom/smart/agr_smart_terrain_7_4.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/agroprom/smart/agr_smart_terrain_7_4.ltx
deleted file mode 100644
index 35621bb7..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/agroprom/smart/agr_smart_terrain_7_4.ltx
+++ /dev/null
@@ -1,22 +0,0 @@
-[smart_terrain] ;-- Disabled spawn
-squad_id = 17
-max_population = 1
-;respawn_params = respawn@agr_smart_terrain_7_4
-;respawn_only_smart = false
-;respawn_idle = 86400
-;respawn_radius = 50
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = nil
-;def_restr = nil
-;safe_restr = nil
-;spawn_point = nil
-
-;[respawn@agr_smart_terrain_7_4] ;-- Type: faction {army} = guardpost
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-;[exclusive]
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/agroprom/smart/agr_smart_terrain_7_5.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/agroprom/smart/agr_smart_terrain_7_5.ltx
deleted file mode 100644
index 7ece5081..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/agroprom/smart/agr_smart_terrain_7_5.ltx
+++ /dev/null
@@ -1,38 +0,0 @@
-[smart_terrain]
-squad_id = 16
-max_population = 1
-respawn_params = respawn@agr_smart_terrain_7_5
-respawn_only_smart = false
-respawn_idle = 259200
-respawn_radius = 50
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = nil
-;def_restr = nil
-;safe_restr = nil
-;spawn_point = nil
-
-[respawn@agr_smart_terrain_7_5] ;-- Type: c_2_1 + c_2_2 edited
-spawn_predatory_c_2_1
-spawn_predatory_c_2_2
-spawn_snork
-
-
-[spawn_predatory_c_2_1] ;-- Hard mutants - Rates of groups: ( 1 dogs + 3 lurker )
-spawn_squads = simulation_mix_dogs, simulation_lurker_blue, simulation_lurker_brown, simulation_lurker_black
-spawn_num = {!actor_week_in_zone(1)} 1, {=actor_week_in_zone(1)} 0
-
-[spawn_predatory_c_2_2] ;-- Hard mutants - Rates of groups: ( 1 dogs + 3 lurker + 1 psy dog )
-spawn_squads = simulation_mix_dogs, simulation_lurker_1_2, simulation_lurker_1_2, simulation_lurker_1_2, simulation_psy_dog_squad
-spawn_num = {=actor_week_in_zone(1)} 1, {!actor_week_in_zone(1)} 0
-
-[spawn_snork] ;-- Normal\Hard mutants - Rates of groups: ( 3 snork + 2 fracture )
-spawn_squads = simulation_snork_2_3, simulation_snork_2_3, simulation_snork_2_5, simulation_fracture, simulation_fracture
-spawn_num = 1
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-;[exclusive]
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/agroprom_underground/agr_u_soldiers_spawn_logic.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/agroprom_underground/agr_u_soldiers_spawn_logic.ltx
deleted file mode 100644
index 5200ee5b..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/agroprom_underground/agr_u_soldiers_spawn_logic.ltx
+++ /dev/null
@@ -1,101 +0,0 @@
-[walker@generic]
-gather_items_enabled = true
-help_wounded_enabled = true
-corpse_detection_enabled = true
-turn_on_campfire = false
-
-[logic@agr_u_soldiers_squad_1]
-active = walker@agr_u_soldiers_squad_1
-suitable = {=target_squad_name(agr_u_soldiers_squad)} true
-prior = 200
-
-[walker@agr_u_soldiers_squad_1]:walker@generic
-path_walk = walk1
-path_look = look1
-combat_ignore_cond = {=check_enemy_name(actor)} false, true
-danger = danger
-
-[logic@agr_u_soldiers_squad_2]
-active = walker@agr_u_soldiers_squad_2
-suitable = {=target_squad_name(agr_u_soldiers_squad)} true
-prior = 200
-on_death = death
-
-[walker@agr_u_soldiers_squad_2]:walker@generic
-path_walk = walk2
-path_look = look2
-combat_ignore_cond = {=check_enemy_name(actor)} false, true
-danger = danger
-
-[logic@agr_u_soldiers_squad_3]
-active = walker@agr_u_soldiers_squad_3
-suitable = {=target_squad_name(agr_u_soldiers_squad)} true
-prior = 200
-
-[walker@agr_u_soldiers_squad_3]:walker@generic
-path_walk = walk3
-path_look = look3
-combat_ignore_cond = {=check_enemy_name(actor)} false, true
-danger = danger
-
-[logic@agr_u_soldiers_squad_4]
-active = walker@agr_u_soldiers_squad_4
-suitable = {=target_squad_name(agr_u_soldiers_squad)} true
-prior = 200
-
-[walker@agr_u_soldiers_squad_4]:walker@generic
-path_walk = walk9
-;path_look = look9
-combat_ignore_cond = {=check_enemy_name(actor)} false, true
-danger = danger
-
-[logic@agr_u_soldiers_squad_5]
-active = walker@agr_u_soldiers_squad_5
-suitable = {=target_squad_name(agr_u_soldiers_squad)} true
-prior = 200
-
-[walker@agr_u_soldiers_squad_5]:walker@generic
-path_walk = walk5
-path_look = look5
-combat_ignore_cond = {=check_enemy_name(actor)} false, true
-danger = danger
-
-[logic@agr_u_soldiers_squad_6]
-active = walker@agr_u_soldiers_squad_6
-suitable = {=target_squad_name(agr_u_soldiers_squad)} true
-prior = 200
-
-[walker@agr_u_soldiers_squad_6]:walker@generic
-path_walk = walk11
-;path_look = look10
-combat_ignore_cond = {=check_enemy_name(actor)} false, true
-danger = danger
-
-[logic@agr_u_soldiers_squad_7]
-active = walker@agr_u_soldiers_squad_7
-suitable = {=target_squad_name(agr_u_soldiers_squad)} true
-prior = 200
-
-[walker@agr_u_soldiers_squad_7]:walker@generic
-path_walk = walk7
-path_look = look7
-combat_ignore_cond = {=check_enemy_name(actor)} false, true
-danger = danger
-
-[logic@agr_u_soldiers_squad_8]
-active = walker@agr_u_soldiers_squad_8
-suitable = {=target_squad_name(agr_u_soldiers_squad)} true
-prior = 200
-
-[walker@agr_u_soldiers_squad_8]:walker@generic
-path_walk = walk12
-;path_look = look8
-combat_ignore_cond = {=check_enemy_name(actor)} false, true
-danger = danger
-
-[danger]
-;danger_expiration_time = 60000
-danger_inertion_time_grenade = 90000
-danger_inertion_time_hit = 90000
-danger_inertion_time_sound = 90000
-danger_inertion_time_ricochet = 90000
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/agroprom_underground/mod_agr_blood_growl_redone.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/agroprom_underground/mod_agr_blood_growl_redone.ltx
deleted file mode 100644
index 92026271..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/agroprom_underground/mod_agr_blood_growl_redone.ltx
+++ /dev/null
@@ -1,14 +0,0 @@
-![logic]
-!active = sr_idle
-active = sr_idle@wait_actor
-
-[sr_idle@wait_actor]
-on_actor_in_zone = agr_blood_growl | sr_idle@spawn_mutants
-
-[sr_idle@spawn_mutants]
-on_info = sr_idle@timer %=create_squad(simulation_snork_2_5:agr_u_bloodsucker) =create_squad(simulation_snork:agr_u_bloodsucker_2)%
-
-[sr_idle@timer]
-
-
-
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/agroprom_underground/mod_agr_u_controller_rest_redone.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/agroprom_underground/mod_agr_u_controller_rest_redone.ltx
deleted file mode 100644
index cb66013c..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/agroprom_underground/mod_agr_u_controller_rest_redone.ltx
+++ /dev/null
@@ -1,12 +0,0 @@
-![logic]
-!active = sr_idle
-active = sr_idle@wait_actor
-
-[sr_idle@wait_actor]
-on_actor_in_zone = agr_u_controller_rest | sr_idle@spawn_mutants
-
-[sr_idle@spawn_mutants]
-on_info = sr_idle@timer %=create_squad(simulation_snork:agr_u_bloodsucker)%
-
-[sr_idle@timer]
-
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/agroprom_underground/mod_agr_u_zombie_rest_redone.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/agroprom_underground/mod_agr_u_zombie_rest_redone.ltx
deleted file mode 100644
index 819156bd..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/agroprom_underground/mod_agr_u_zombie_rest_redone.ltx
+++ /dev/null
@@ -1,16 +0,0 @@
-![logic]
-!active = sr_idle@nil
-active = sr_idle@spawn_zombie
-
-[sr_idle@spawn_zombie]
-on_game_timer = 5 | sr_idle@wait_actor %=create_squad(simulation_zombie_3_6:agr_u_bloodsucker_2)%
-
-[sr_idle@wait_actor]
-on_actor_in_zone = agr_u_zombie_rest | sr_idle@spawn_bloodsucker
-
-[sr_idle@spawn_bloodsucker]
-on_info = sr_idle@timer %=create_squad(agr_u_bloodsucker_3_squad:agr_u_bloodsucker) =play_snd_from_obj(396:monsters\bloodsucker\bloodsucker_script_attack_0)%
-
-[sr_idle@timer]
-
-
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/agroprom_underground/mod_agru_bloodsucker_spawn_redone.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/agroprom_underground/mod_agru_bloodsucker_spawn_redone.ltx
deleted file mode 100644
index c3286e09..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/agroprom_underground/mod_agru_bloodsucker_spawn_redone.ltx
+++ /dev/null
@@ -1,15 +0,0 @@
-![logic]
-!active = sr_idle@line_0
-active = sr_idle@spawn_snork
-
-[sr_idle@spawn_snork]
-on_game_timer = 5 | sr_idle@wait_actor % =create_squad(simulation_snork:agr_u_bloodsucker)%
-
-[sr_idle@wait_actor]
-on_actor_in_zone = agru_go_out_zone | sr_idle@spawn_snork_2
-
-[sr_idle@spawn_snork_2]
-on_info = sr_idle@timer %=create_squad(simulation_snork_2_3:agr_u_bloodsucker_2)%
-
-[sr_idle@timer]
-
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/agroprom_underground/mod_agru_poltergeist_end_spawns_redone.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/agroprom_underground/mod_agru_poltergeist_end_spawns_redone.ltx
deleted file mode 100644
index 588ed14a..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/agroprom_underground/mod_agru_poltergeist_end_spawns_redone.ltx
+++ /dev/null
@@ -1,13 +0,0 @@
-![logic]
-!active = sr_idle@line_0
-active = sr_idle@wait_actor
-
-[sr_idle@wait_actor]
-on_actor_in_zone = agru_spawn_polter_zone | sr_idle@spawn_mutants
-
-[sr_idle@spawn_mutants]
-on_info = sr_idle@timer %=create_squad(simulation_snork_2_5:agr_u_monsters) =create_squad(simulation_zombie_3_6:agr_u_monsters) =create_squad(simulation_zombie_blind:agr_u_monsters)%
-
-[sr_idle@timer]
-
-
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/agroprom_underground/mod_agru_poltergeists_spawns_redone.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/agroprom_underground/mod_agru_poltergeists_spawns_redone.ltx
deleted file mode 100644
index ac8d837d..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/agroprom_underground/mod_agru_poltergeists_spawns_redone.ltx
+++ /dev/null
@@ -1,18 +0,0 @@
-![logic]
-!active = active = sr_idle@line_0
-active = sr_idle@spawn_burer
-
-[sr_idle@spawn_burer]
-on_game_timer = 5 | sr_idle@wait_actor %=create_squad(simulation_burer:agr_u_monsters) =create_squad(simulation_karlik:agr_u_monsters) =create_squad(simulation_snork_2_5:agr_u_monsters)%
-
-[sr_idle@wait_actor]
-on_actor_in_zone = kat_gunslinger_cache_room | sr_idle@spawn_snork
-
-[sr_idle@spawn_snork]
-on_info = sr_idle@timer %=create_squad(simulation_snork_2_3:agr_u_bloodsucker_2)%
-
-[sr_idle@timer]
-on_game_timer = 20 | sr_idle@spawn_army
-
-[sr_idle@spawn_army]
-on_info = sr_idle@line_1 %=create_squad(agr_u_monster_soldiers_squad:agr_u_monsters) =create_squad(agr_u_bandits_soldiers_squad:agr_u_bandits)%
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/agroprom_underground/mod_agru_tushkanchiki_spawns_redone.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/agroprom_underground/mod_agru_tushkanchiki_spawns_redone.ltx
deleted file mode 100644
index 440637c8..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/agroprom_underground/mod_agru_tushkanchiki_spawns_redone.ltx
+++ /dev/null
@@ -1,23 +0,0 @@
-![logic]
-!active = sr_idle@line_0
-active = sr_idle@spawn_tushkanchik
-
-[sr_idle@spawn_tushkanchik]
-on_actor_in_zone = agru_go_out_zone | sr_idle@timer %=spawn_object(agru_tushkanchik_1:agru_tushkanchiks_spawn_1:0) =spawn_object(agru_tushkanchik_1:agru_tushkanchiks_spawn_2:0) =spawn_object(agru_tushkanchik_1:agru_tushkanchiks_spawn_3:0)%
-
-[sr_idle@timer]
-on_game_timer = 1 | sr_idle@spawn_tushkanchik_2
-
-[sr_idle@spawn_tushkanchik_2]
-on_game_timer = 1 | sr_idle@timer_2 %=spawn_object(agru_tushkanchik_2:agru_tushkanchiks_spawn_1:0) =spawn_object(agru_tushkanchik_1:agru_tushkanchiks_spawn_1:0) =spawn_object(agru_tushkanchik_1:agru_tushkanchiks_spawn_2:0) =spawn_object(agru_tushkanchik_1:agru_tushkanchiks_spawn_3:0)%
-
-[sr_idle@timer_2]
-on_game_timer = 1 | sr_idle@spawn_tushkanchik_3
-
-[sr_idle@spawn_tushkanchik_3]
-on_game_timer = 1 | sr_idle@timer_3 %=spawn_object(agru_tushkanchik_3:agru_tushkanchiks_spawn_3:0) =spawn_object(agru_tushkanchik_1:agru_tushkanchiks_spawn_1:0)%
-
-[sr_idle@timer_3]
-
-
-
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/agroprom_underground/mod_kat_gunslinger_cache_room_redone.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/agroprom_underground/mod_kat_gunslinger_cache_room_redone.ltx
deleted file mode 100644
index 14188684..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/agroprom_underground/mod_kat_gunslinger_cache_room_redone.ltx
+++ /dev/null
@@ -1,3 +0,0 @@
-![sr_idle]
-on_info = {=actor_has_item(strelok_notes) +living_legend_st +lttz_ll_visit_agro_ug_task} sr_idle@nil %=give_task(lttz_ll_visit_barkeep) +strelok_notes%
-on_info2 = {=actor_has_item(strelok_notes) +living_legend_alt +lttz_ll_visit_agro_ug_task} sr_idle@nil %=give_task(lttz_ll_visit_blackjack) +strelok_notes%
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/agroprom_underground/smart/agr_u_bandits.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/agroprom_underground/smart/agr_u_bandits.ltx
deleted file mode 100644
index 038855ef..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/agroprom_underground/smart/agr_u_bandits.ltx
+++ /dev/null
@@ -1,35 +0,0 @@
-[smart_terrain]
-squad_id = 1
-max_population = 2
-;respawn_params = respawn@agr_u_bandits
-;respawn_only_smart = false
-;respawn_idle = 259200
-;respawn_radius = 1000
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = nil
-;def_restr = nil
-;safe_restr = nil
-;spawn_point = nil
-
-;[respawn@agr_u_bandits] ;-- Type:
-;spawn_all_hard
-
-
-;[spawn_all_hard] ;-- Hard mutants - Rates of groups: ( 1 tushkano + 1 snork + 1 bloodsucker + 1 psysucker + 2 zombie )
-;spawn_squads = simulation_tushkano_7_10, simulation_snork_2_3, simulation_bloodsucker, simulation_psysucker, simulation_zombie_blind, simulation_zombie_blind_3zomb
-;spawn_num = {+strelok_notes ~20} 1, 0
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-[exclusive]
-agr_u_bandits_squad_1 = agroprom_underground\agr_u_bandits_logic.ltx
-agr_u_bandits_squad_2 = agroprom_underground\agr_u_bandits_logic.ltx
-agr_u_bandits_squad_3 = agroprom_underground\agr_u_bandits_logic.ltx
-agr_u_bandits_squad_4 = agroprom_underground\agr_u_bandits_logic.ltx
-agr_u_bandits_squad_5 = agroprom_underground\agr_u_bandits_logic.ltx
-agr_u_bandits_squad_6 = agroprom_underground\agr_u_bandits_logic.ltx
-agr_u_bandits_squad_7 = agroprom_underground\agr_u_bandits_logic.ltx
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/agroprom_underground/smart/agr_u_bloodsucker.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/agroprom_underground/smart/agr_u_bloodsucker.ltx
deleted file mode 100644
index 24be957c..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/agroprom_underground/smart/agr_u_bloodsucker.ltx
+++ /dev/null
@@ -1,29 +0,0 @@
-[smart_terrain]
-squad_id = 2
-max_population = 2
-respawn_params = respawn@agr_u_bloodsucker
-respawn_only_smart = false
-respawn_idle = 259200
-;respawn_radius = 1000
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = nil
-;def_restr = nil
-;safe_restr = nil
-spawn_point = agr_u_bloodsucker_home
-
-[respawn@agr_u_bloodsucker] ;-- Type:
-spawn_all_hard
-
-
-[spawn_all_hard] ;-- Hard mutants - Rates of groups: ( 1 snork + 1 bloodsucker + 1 psysucker )
-spawn_squads = simulation_snork_2_3, simulation_bloodsucker, simulation_psysucker
-spawn_num = {+strelok_notes} 1, 0
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-[exclusive]
-agr_u_bloodsucker_1 = agroprom_underground\agru_bloodsucker_1.ltx
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/agroprom_underground/smart/agr_u_bloodsucker_2.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/agroprom_underground/smart/agr_u_bloodsucker_2.ltx
deleted file mode 100644
index 538c004e..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/agroprom_underground/smart/agr_u_bloodsucker_2.ltx
+++ /dev/null
@@ -1,25 +0,0 @@
-[smart_terrain]
-squad_id = 3
-max_population = 2
-respawn_params = respawn@agr_u_bloodsucker_2
-respawn_only_smart = false
-respawn_idle = 259200
-respawn_radius = 1000
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = nil
-;def_restr = nil
-;safe_restr = nil
-spawn_point = agr_u_bloodsucker_2_walk
-
-[respawn@agr_u_bloodsucker_2] ;-- Type:
-spawn_all_hard
-
-
-[spawn_all_hard] ;-- Hard mutants - Rates of groups: ( 1 snork + 1 bloodsucker + 1 psysucker + 2 zombie + 1 karlik )
-spawn_squads = simulation_snork_2_5, simulation_bloodsucker, simulation_psysucker, simulation_zombie_blind, simulation_zombie_blind_3zomb, simulation_karlik
-spawn_num = {+strelok_notes} 1, 0
-
-
-[exclusive]
-agr_u_bloodsucker_2 = agroprom_underground\agru_bloodsucker.ltx
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/agroprom_underground/smart/agr_u_monsters.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/agroprom_underground/smart/agr_u_monsters.ltx
deleted file mode 100644
index dadbc8b7..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/agroprom_underground/smart/agr_u_monsters.ltx
+++ /dev/null
@@ -1,33 +0,0 @@
-[smart_terrain]
-squad_id = 4
-max_population = 4
-respawn_params = respawn@agr_u_monsters
-respawn_only_smart = false
-respawn_idle = 345600
-respawn_radius = 1000
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = nil
-;def_restr = nil
-;safe_restr = nil
-spawn_point = agr_u_monsters_spawn_point
-
-[respawn@agr_u_monsters] ;-- Type:
-spawn_all_worst
-
-
-[spawn_all_worst] ;-- Worst mutants - Rates of groups:( 1 bloodsucker + 1 psysucker + 1 burer + 2 controller )
-spawn_squads = simulation_bloodsucker_1_2, simulation_psysucker_1_2, simulation_bur_5rat_day, simulation_contr_3sn_3gzomb, simulation_contr_5rat_3tush
-spawn_num = {+strelok_notes} 1, 0
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-;[exclusive]
-;agr_u_monsters_controller = agroprom_underground\agru_controller_1.ltx
-;agru_poltergeist_squad_1 = agroprom_underground\agru_poltergeist_1.ltx
-;agru_poltergeist_squad_2 = agroprom_underground\agru_poltergeist_2.ltx
-;agru_poltergeist_squad_3 = agroprom_underground\agru_poltergeist_3.ltx
-;agru_poltergeist_squad_4 = agroprom_underground\agru_poltergeist_4.ltx
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/agroprom_underground/smart/agr_u_soldiers.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/agroprom_underground/smart/agr_u_soldiers.ltx
deleted file mode 100644
index 07472de8..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/agroprom_underground/smart/agr_u_soldiers.ltx
+++ /dev/null
@@ -1,39 +0,0 @@
-[smart_terrain]
-squad_id = 5
-max_population = 1
-respawn_params = respawn@agr_u_soldiers
-respawn_only_smart = false
-respawn_idle = 86400
-respawn_radius = 100
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = nil
-;def_restr = nil
-;safe_restr = nil
-;spawn_point = nil
-
-[respawn@agr_u_soldiers]
-spawn_army_special
-
-
-[spawn_army_special]
-spawn_squads = agr_u_soldiers_squad
-spawn_num = {!squad_name_exist(agr_u_soldiers_squad) -agr_military_colonel_kovalski_dead} 1, 0
-
-
-[exclusive]
-agr_u_soldiers_squad_1 = agroprom_underground\agr_u_soldiers_spawn_logic.ltx
-agr_u_soldiers_squad_2 = agroprom_underground\agr_u_soldiers_spawn_logic.ltx
-agr_u_soldiers_squad_3 = agroprom_underground\agr_u_soldiers_spawn_logic.ltx
-agr_u_soldiers_squad_4 = agroprom_underground\agr_u_soldiers_spawn_logic.ltx
-agr_u_soldiers_squad_5 = agroprom_underground\agr_u_soldiers_spawn_logic.ltx
-agr_u_soldiers_squad_6 = agroprom_underground\agr_u_soldiers_spawn_logic.ltx
-agr_u_soldiers_squad_7 = agroprom_underground\agr_u_soldiers_spawn_logic.ltx
-agr_u_soldiers_squad_8 = agroprom_underground\agr_u_soldiers_spawn_logic.ltx
-
-;agru_end_poltergeist_squad_1 = agroprom_underground\agru_end_poltergeist_1.ltx
-;agru_end_poltergeist_squad_2 = agroprom_underground\agru_end_poltergeist_2.ltx
-;agru_end_poltergeist_squad_3 = agroprom_underground\agru_end_poltergeist_3.ltx
-;agru_end_poltergeist_squad_4 = agroprom_underground\agru_end_poltergeist_4.ltx
-
-;agr_u_soldiers_controller = agroprom_underground\agr_u_soldiers_controller.ltx
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/bar/bar_endless_night_spawn_logic_1.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/bar/bar_endless_night_spawn_logic_1.ltx
deleted file mode 100644
index d2262843..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/bar/bar_endless_night_spawn_logic_1.ltx
+++ /dev/null
@@ -1,33 +0,0 @@
-[logic]
-active = ph_idle@check
-
-[ph_idle@check]
-on_info = {+bar_stalker_barman_dead +bar_dolg_leader_dead +bar_dolg_petrenko_dead} ph_idle@wait_actor
-
-[ph_idle@wait_actor]
-on_info = {=actor_near_smart(bar_zastava_dogs_lair) =is_night} ph_idle@spawn_night_monster_1, {=actor_near_smart(bar_zastava_dogs_lair) =is_dark_night} ph_idle@spawn_dark_monster_1
-on_info2 = {=actor_near_smart(bar_zastava) =is_night} ph_idle@spawn_night_monster_2, {=actor_near_smart(bar_zastava) =is_dark_night} ph_idle@spawn_dark_monster_2
-
-[ph_idle@spawn_night_monster_1]
-on_info = {~10} %=create_squad(simulation_mix_zombie_night:bar_zastava_dogs_lair)% ph_idle@reset, {~10} %=create_squad(simulation_snork_night:bar_zastava_dogs_lair)% ph_idle@reset, {~10} %=create_squad(simulation_fracture_night:bar_zastava_dogs_lair)% ph_idle@reset, {~10} %=create_squad(simulation_pseudodog_night:bar_zastava_dogs_lair)% ph_idle@reset, ph_idle@wait_reset
-
-[ph_idle@spawn_dark_monster_1]
-on_info = {~10} %=create_squad(simulation_zombie_blind_3zomb_civ_night:bar_zastava_dogs_lair)% ph_idle@reset, {~10} %=create_squad(simulation_snork_night:bar_zastava_dogs_lair)% ph_idle@reset, {~10} %=create_squad(simulation_bloodsucker_1_2_night:bar_zastava_dogs_lair)% ph_idle@reset, {~10} %=create_squad(simulation_bloodsucker_2weak_night:bar_zastava_dogs_lair)% ph_idle@reset, ph_idle@wait_reset
-
-[ph_idle@reset]
-on_game_timer = 86400 | ph_idle@wait_actor
-
-[ph_idle@spawn_night_monster_2]
-on_info = {~10} %=create_squad(simulation_snork_night:bar_zastava)% ph_idle@reset_2, {~10} %=create_squad(simulation_fracture_night:bar_zastava)% ph_idle@reset_2, {~10} %=create_squad(simulation_zombie_blind_night:bar_zastava)% ph_idle@reset_2, {~10} %=create_squad(simulation_pseudodog_night:bar_zastava)% ph_idle@reset_2, ph_idle@wait_reset
-
-[ph_idle@spawn_dark_monster_2]
-on_info = {~10} %=create_squad(simulation_bloodsucker_1_2_night:bar_zastava)% ph_idle@reset_2, {~10} %=create_squad(simulation_fracture_night:bar_zastava)% ph_idle@reset_2, {~10} %=create_squad(simulation_zombie_blind_3zomb_civ_night:bar_zastava)% ph_idle@reset_2, {~10} %=create_squad(simulation_bloodsucker_2weak_night:bar_zastava)% ph_idle@reset_2, ph_idle@wait_reset
-
-[ph_idle@reset_2]
-on_game_timer = 86400 | ph_idle@wait_actor
-
-[ph_idle@wait_reset]
-on_game_timer = 480 | ph_idle@wait_actor
-
-[collide]
-ignore_static
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/bar/bar_endless_night_spawn_logic_2.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/bar/bar_endless_night_spawn_logic_2.ltx
deleted file mode 100644
index 69a87d56..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/bar/bar_endless_night_spawn_logic_2.ltx
+++ /dev/null
@@ -1,33 +0,0 @@
-[logic]
-active = ph_idle@check
-
-[ph_idle@check]
-on_info = {+bar_stalker_barman_dead +bar_dolg_leader_dead +bar_dolg_petrenko_dead} ph_idle@wait_actor
-
-[ph_idle@wait_actor]
-on_info = {=actor_near_smart(bar_zastava_dogs_lair_2) =is_night} ph_idle@spawn_night_monster_1, {=actor_near_smart(bar_zastava_dogs_lair_2) =is_dark_night} ph_idle@spawn_dark_monster_1
-on_info2 = {=actor_near_smart(bar_zastava_2) =is_night} ph_idle@spawn_night_monster_2, {=actor_near_smart(bar_zastava_2) =is_dark_night} ph_idle@spawn_dark_monster_2
-
-[ph_idle@spawn_night_monster_1]
-on_info = {~10} %=create_squad(simulation_pseudodog_night:bar_zastava_dogs_lair_2)% ph_idle@reset, {~10} %=create_squad(simulation_dog_night:bar_zastava_dogs_lair_2)% ph_idle@reset, {~10} %=create_squad(simulation_tushkano_night:bar_zastava_dogs_lair_2)% ph_idle@reset, {~10} %=create_squad(simulation_mix_zombie_night:bar_zastava_dogs_lair_2)% ph_idle@reset, ph_idle@wait_reset
-
-[ph_idle@spawn_dark_monster_1]
-on_info = {~10} %=create_squad(simulation_pseudodog_night:bar_zastava_dogs_lair_2)% ph_idle@reset, {~10} %=create_squad(simulation_zombie_blind_3zomb_civ_night:bar_zastava_dogs_lair_2)% ph_idle@reset, {~10} %=create_squad(simulation_psysucker_night:bar_zastava_dogs_lair_2)% ph_idle@reset, {~10} %=create_squad(simulation_bloodsucker_2weak_night:bar_zastava_dogs_lair_2)% ph_idle@reset, ph_idle@wait_reset
-
-[ph_idle@reset]
-on_game_timer = 86400 | ph_idle@wait_actor
-
-[ph_idle@spawn_night_monster_2]
-on_info = {~10} %=create_squad(simulation_tushkano_night:bar_zastava_2)% ph_idle@reset_2, {~10} %=create_squad(simulation_dog_night:bar_zastava_2)% ph_idle@reset_2, {~10} %=create_squad(simulation_mix_zombie_night:bar_zastava_2)% ph_idle@reset_2, {~50} %=create_squad(simulation_pseudodog_night:bar_zastava_2)% ph_idle@reset_2, ph_idle@wait_reset
-
-[ph_idle@spawn_dark_monster_2]
-on_info = {~10} %=create_squad(simulation_psysucker_night:bar_zastava_2)% ph_idle@reset_2, {~10} %=create_squad(simulation_fracture_night:bar_zastava_2)% ph_idle@reset_2, {~10} %=create_squad(simulation_zombie_blind_3zomb_civ_night:bar_zastava_2)% ph_idle@reset_2, {~50} %=create_squad(simulation_bloodsucker_night:bar_zastava_2)% ph_idle@reset_2, ph_idle@wait_reset
-
-[ph_idle@reset_2]
-on_game_timer = 86400 | ph_idle@wait_actor
-
-[ph_idle@wait_reset]
-on_game_timer = 580 | ph_idle@wait_actor
-
-[collide]
-ignore_static
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/bar/bar_endless_night_spawn_logic_3.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/bar/bar_endless_night_spawn_logic_3.ltx
deleted file mode 100644
index 16b9b6d7..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/bar/bar_endless_night_spawn_logic_3.ltx
+++ /dev/null
@@ -1,33 +0,0 @@
-[logic]
-active = ph_idle@check
-
-[ph_idle@check]
-on_info = {+bar_stalker_barman_dead +bar_dolg_leader_dead +bar_dolg_petrenko_dead} ph_idle@wait_actor
-
-[ph_idle@wait_actor]
-on_info = {=actor_near_smart(bar_visitors) =is_night} ph_idle@spawn_night_monster_1, {=actor_near_smart(bar_visitors) =is_dark_night} ph_idle@spawn_dark_monster_1
-on_info2 = {=actor_near_smart(bar_dolg_general) =is_night} ph_idle@spawn_night_monster_2, {=actor_near_smart(bar_dolg_general) =is_dark_night} ph_idle@spawn_dark_monster_2
-
-[ph_idle@spawn_night_monster_1]
-on_info = {~10} %=create_squad(simulation_pseudodog_night:bar_visitors)% ph_idle@reset, {~10} %=create_squad(simulation_fracture_night:bar_visitors)% ph_idle@reset, {~10} %=create_squad(simulation_snork_night:bar_visitors)% ph_idle@reset, {~10} %=create_squad(simulation_zombie_blind_3zomb_civ_night:bar_visitors)% ph_idle@reset, ph_idle@wait_reset
-
-[ph_idle@spawn_dark_monster_1]
-on_info = {~10} %=create_squad(simulation_bloodsucker_night:bar_visitors)% ph_idle@reset, {~10} %=create_squad(simulation_zombie_blind_3zomb_civ_night:bar_visitors)% ph_idle@reset, {~10} %=create_squad(simulation_psysucker_night:bar_visitors)% ph_idle@reset, {~10} %=create_squad(simulation_bur_5rat_day_night:bar_visitors)% ph_idle@reset, ph_idle@wait_reset
-
-[ph_idle@reset]
-on_game_timer = 86400 | ph_idle@wait_actor
-
-[ph_idle@spawn_night_monster_2]
-on_info = {~10} %=create_squad(simulation_mix_zombie_night:bar_dolg_general)% ph_idle@reset_2, {~10} %=create_squad(simulation_fracture_night:bar_dolg_general)% ph_idle@reset_2, {~10} %=create_squad(simulation_zombie_blind_night:bar_dolg_general)% ph_idle@reset_2, {~10} %=create_squad(simulation_pseudodog_night:bar_dolg_general)% ph_idle@reset_2, ph_idle@wait_reset
-
-[ph_idle@spawn_dark_monster_2]
-on_info = {~10} %=create_squad(simulation_snork_night:bar_dolg_general)% ph_idle@reset_2, {~10} %=create_squad(simulation_fracture_night:bar_dolg_general)% ph_idle@reset_2, {~10} %=create_squad(simulation_bloodsucker_night:bar_dolg_general)% ph_idle@reset_2, {~10} %=create_squad(simulation_contr_5rat_3tush_night:bar_dolg_general)% ph_idle@reset_2, ph_idle@wait_reset
-
-[ph_idle@reset_2]
-on_game_timer = 86400 | ph_idle@wait_actor
-
-[ph_idle@wait_reset]
-on_game_timer = 580 | ph_idle@wait_actor
-
-[collide]
-ignore_static
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/bar/mod_bar_barman_redone.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/bar/mod_bar_barman_redone.ltx
deleted file mode 100644
index 13f93896..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/bar/mod_bar_barman_redone.ltx
+++ /dev/null
@@ -1,5 +0,0 @@
-![logic@bar_barman]
-on_death = death
-
-[death]
-on_info = %+bar_stalker_barman_dead%
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/bar/mod_bar_crow_spawner_redone.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/bar/mod_bar_crow_spawner_redone.ltx
deleted file mode 100644
index 3eaca5e2..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/bar/mod_bar_crow_spawner_redone.ltx
+++ /dev/null
@@ -1,27 +0,0 @@
-![logic]
-!active = sr_crow_spawner
-active = sr_idle@check_story
-
-[sr_idle@check_story]
-on_info = {-story_mode_disabled} sr_idle@check_actor, {+story_mode_disabled -yan_x16_complete_end} sr_idle@check_actor %+yan_kill_brain_done%
-
-[sr_idle@check_actor]
-on_info = {=actor_community(actor_monolith) -yan_x16_complete_end} sr_idle@check_helmet %+yan_kill_brain_done%, {=actor_community(actor_greh) -yan_x16_complete_end} sr_idle@check_helmet %+yan_kill_brain_done%, sr_idle@check_helmet
-
-[sr_idle@check_helmet]
-on_info = {=actor_has_item(good_psy_helmet)} sr_idle@check_spawner %+living_legend_psy_helmet%, {=actor_has_item(bad_psy_helmet)} sr_idle@check_spawner %+living_legend_psy_helmet%, sr_idle@check_spawner
-
-[sr_idle@check_spawner]
-on_info = sr_crow_spawner
-
-![sr_crow_spawner]
-max_crows_on_level = 4
-spawn_path = bar_crow_spawn_1, bar_crow_spawn_2, bar_crow_spawn_3, bar_crow_spawn_4, bar_crow_spawn_5
-
-on_info50 = {+bar_dolg_leader_dead +bar_dolg_petrenko_dead -bar_stalker_barman_dead -bar_spawn_complete =actor_community(actor_freedom)} sr_idle@spawn_1
-
-[sr_idle@spawn_1]:sr_crow_spawner
-on_game_timer = 43200 | sr_idle@spawn_end %=create_squad(bar_freedom_general_squad:bar_dolg_general) =create_squad(bar_freedom_bunker_squad:bar_dolg_bunker) =create_squad(bar_freedom_security_squad:bar_zastava) =create_squad(bar_freedom_guard_squad:bar_zastava_2) =create_squad(bar_freedom_visitors_squad:bar_visitors)%
-
-[sr_idle@spawn_end]:sr_crow_spawner
-on_info = sr_crow_spawner %+bar_spawn_complete%
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/bar/mod_bar_dolg_bunker_logic_redone.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/bar/mod_bar_dolg_bunker_logic_redone.ltx
deleted file mode 100644
index 886e1857..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/bar/mod_bar_dolg_bunker_logic_redone.ltx
+++ /dev/null
@@ -1,5 +0,0 @@
-![logic@bar_dolg_leader]
-on_death = death_leader
-
-[death_leader]
-on_info = %+bar_dolg_leader_dead%
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/bar/mod_bar_dolg_general_logic_redone.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/bar/mod_bar_dolg_general_logic_redone.ltx
deleted file mode 100644
index f891e039..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/bar/mod_bar_dolg_general_logic_redone.ltx
+++ /dev/null
@@ -1,23 +0,0 @@
-![logic@bar_dolg_general_animpoint_kamp1]
-suitable = {=npc_community(dolg) !surge_started} true, {=npc_community(freedom) !surge_started} true
-
-![logic@bar_dolg_general_animpoint_kamp2]
-suitable = {=npc_community(dolg) !surge_started} true, {=npc_community(freedom) !surge_started} true
-
-![logic@bar_dolg_general_animpoint_kamp3]
-suitable = {=npc_community(dolg) !surge_started} true, {=npc_community(freedom) !surge_started} true
-
-![logic@bar_dolg_general_animpoint_kamp4]
-suitable = {=npc_community(dolg) !surge_started} true, {=npc_community(freedom) !surge_started} true
-
-![logic@bar_dolg_general_petrenko]
-on_death = death_petrenko
-
-[death_petrenko]
-on_info = %+bar_dolg_petrenko_dead%
-
-![walker@zoneguard]
-on_actor_in_zone = bar_angar_warn_zone | {=squad_exist(bar_dolg_general_zoneguard_stalker_squad)} %=play_sound(bar_dolg_hangar_bridge_hello)%
-
-
-
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/bar/mod_bar_dolg_medic_logic_redone.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/bar/mod_bar_dolg_medic_logic_redone.ltx
deleted file mode 100644
index e725b487..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/bar/mod_bar_dolg_medic_logic_redone.ltx
+++ /dev/null
@@ -1,50 +0,0 @@
-![logic@bar_dolg_medic_bodyguard]
-suitable = {=check_npc_name(bodyguard_duty_medic_bar_general)} true
-active = beh@bar_dolg_medic_bodyguard_work_1
-prior = 200
-
-![logic@sick_duty_stalker_bar_general]
-suitable = {=npc_community(dolg)} true
-active = beh@sick_duty_stalker_bar_work_1
-prior = 200
-
-[beh@general_guard]
-behavior_state = beh_move
-target = waypoint
-walk_dist = 100
-jog_dist = 220
-walk_anim = patrol
-jog_anim = assault
-run_anim = assault
-delay_anim = guard
-combat_ignore_cond = false
-combat_ignore_keep_when_attacked = false
-gather_items_enabled = false
-help_wounded_enabled = false
-corpse_detection_enabled = false
-invulnerable = false
-meet = no_meet
-
-[beh@bar_dolg_medic_bodyguard_work_1]:beh@general_guard
-pt1 = 550000, guard | pos: 215.04228210449, -0.0024391263723373, 87.582168579102 look: 214.31143188477, -0.00078193843364716, 88.59651184082
-pt2 = 550000, guard | pos: 213.11221313477, -0.0014052391052246, 79.957397460938 look: 211.63789367676, 0.0025523006916046, 80.154670715332
-path_end = loop
-on_info = {=surge_started} beh@bar_dolg_medic_bodyguard_surge_work_1
-
-[beh@sick_duty_stalker_bar_work_1]:beh@general_guard
-pt1 = 550000, drunk_sit_ass | pos: 212.45147705078, 0.49908804893494, 100.85985565186 look: 214.05770874023, 0.51219016313553, 99.761573791504
-pt2 = 550000, drunk_sit_ass | pos: 229.58151245117, -5.4488806724548, 135.42195129395 look: 229.89572143555, -5.4484519958496, 134.61743164062
-pt3 = 550000, drunk_sit_ass | pos: 186.19718933105, 0.038859516382217, 124.56587219238 look: 186.40625, 0.03945255279541, 123.33502197266
-path_end = loop
-;on_actor_in_zone = bar_dolg_general_kill_zone | %=play_sound(sick_duty_phrases)%
-on_info = {=surge_started} beh@sick_duty_stalker_surge_work_1
-
-[beh@bar_dolg_medic_bodyguard_surge_work_1]:beh@general_guard
-pt1 = 88860000, smoking_stand | pos: 215.43209838867, -0.005574032664299, 94.977149963379 look: 214.63287353516, 0.49839854240417, 103.70713806152
-path_end = loop
-on_info = {=surge_complete} beh@bar_dolg_medic_bodyguard_work_1
-
-[beh@sick_duty_stalker_surge_work_1]:beh@general_guard
-pt1 = 88860000, drunk_sit_ass | pos: 212.45147705078, 0.49908804893494, 100.85985565186 look: 214.05770874023, 0.51219016313553, 99.761573791504
-path_end = loop
-on_info = {=surge_complete} beh@sick_duty_stalker_bar_work_1
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/bar/mod_bar_dolg_megafone_redone.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/bar/mod_bar_dolg_megafone_redone.ltx
deleted file mode 100644
index 54c8fbd5..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/bar/mod_bar_dolg_megafone_redone.ltx
+++ /dev/null
@@ -1,48 +0,0 @@
-![ph_idle@default]
-!on_info = %=play_sound(bar_dolg_speech)%
-on_info2 = {=is_day() -bar_dolg_leader_dead} %=play_sound(bar_dolg_speech)% ph_idle@sound_idle
-on_info3 = {+bar_arena_start} ph_idle@idle %=stop_sound%, {+bar_territory_nodolg_1_hit -bar_dolg_territory_1_hit_notify} ph_idle@1_hit %=stop_sound%, {+bar_territory_nodolg_2_hit -bar_dolg_territory_2_hit_notify} ph_idle@2_hit %=stop_sound%, {+bar_territory_nodolg_kill -bar_dolg_territory_kill_notify} ph_idle@kill %=stop_sound%, {=check_smart_alarm_status(bar_dolg_general)} ph_idle@alarm %=stop_sound%, {=check_smart_alarm_status(bar_dolg_bunker)} ph_idle@alarm %=stop_sound%, {=check_smart_alarm_status(bar_visitors)} ph_idle@alarm %=stop_sound%, {=check_smart_alarm_status(bar_zastava)} ph_idle@alarm %=stop_sound%, {=check_smart_alarm_status(bar_zastava_2)} ph_idle@alarm %=stop_sound%
-;on_info4 = {=actor_has_weapon} ph_idle@warn %=stop_sound%
-on_info5 = {=surge_started} ph_idle@surge %=stop_sound%
-
-[ph_idle@sound_idle]
-on_info = {+bar_arena_start_introduce} ph_idle@idle %=stop_sound%
-on_info2 = {+bar_territory_nodolg_1_hit -bar_dolg_territory_1_hit_notify} ph_idle@1_hit %=stop_sound%, {+bar_territory_nodolg_2_hit -bar_dolg_territory_2_hit_notify} ph_idle@2_hit %=stop_sound%, {+bar_territory_nodolg_kill -bar_dolg_territory_kill_notify} ph_idle@kill %=stop_sound%, {=check_smart_alarm_status(bar_dolg_general)} ph_idle@alarm %=stop_sound%, {=check_smart_alarm_status(bar_dolg_bunker)} ph_idle@alarm %=stop_sound%, {=check_smart_alarm_status(bar_visitors)} ph_idle@alarm %=stop_sound%, {=check_smart_alarm_status(bar_zastava)} ph_idle@alarm %=stop_sound%, {=check_smart_alarm_status(bar_zastava_2)} ph_idle@alarm %=stop_sound%
-;on_info3 = {=actor_has_weapon} ph_idle@warn %=stop_sound%
-on_info4 = {=surge_started} ph_idle@surge %=stop_sound%,
-on_game_timer = 750 | ph_idle@default
-
-![ph_idle@alarm]
-on_info = %=play_sound(bar_dolg_alarm)%
-on_info2 = {!check_smart_alarm_status(bar_dolg_bunker)} ph_idle@default
-on_info3 = {!check_smart_alarm_status(bar_dolg_general)} ph_idle@default
-on_info4 = {!check_smart_alarm_status(bar_visitors)} ph_idle@default
-on_info5 = {!check_smart_alarm_status(bar_zastava)} ph_idle@default
-on_info6 = {!check_smart_alarm_status(bar_zastava_2)} ph_idle@default
-on_info7 = {+bar_arena_start_introduce} ph_idle@idle
-on_info8 = {=surge_started} ph_idle@surge
-on_timer = 5000 | ph_idle@default
-
-;[ph_idle@warn]
-;on_info = %=play_sound(bar_dolg_warn)%
-;on_info2 = {!actor_has_weapon} ph_idle@default
-;on_info3 = {+bar_arena_start_introduce} ph_idle@idle
-;on_info4 = {=surge_started} ph_idle@surge
-;on_timer = 5000 | ph_idle@default
-
-[ph_idle@surge]
-on_game_timer = 100 | ph_idle@surge_started
-
-[ph_idle@surge_started]
-on_info = %=play_sound(bar_blowout_siren_1)%
-;on_info2 = {!surge_started} ph_idle@default
-on_game_timer = 370 | ph_idle@surge_siren_end
-
-[ph_idle@surge_siren_end]
-on_info = %=play_sound(bar_blowout_siren_2)%
-on_signal = sound_end | ph_idle@surge_act_idle
-
-[ph_idle@surge_act_idle]
-on_info = {+bar_arena_start_introduce} ph_idle@idle
-on_info2 = {=surge_started} ph_idle@surge
-on_game_timer = 1240 | ph_idle@default
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/bar/mod_bar_visitors_other_logic_redone.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/bar/mod_bar_visitors_other_logic_redone.ltx
deleted file mode 100644
index 91297920..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/bar/mod_bar_visitors_other_logic_redone.ltx
+++ /dev/null
@@ -1,30 +0,0 @@
-[logic@beh_bar_informator_mlr]
-suitable = {=check_npc_name(bar_informator_mlr)} true
-active = beh@bar_informator_mlr_work_1
-prior = 200
-
-![animpoint@base]
-on_info = {=is_night} beh@bar_informator_mlr_work_1
-
-[beh@general_work]
-behavior_state = beh_move
-target = waypoint
-walk_dist = 100
-jog_dist = 220
-walk_anim = patrol
-jog_anim = assault
-run_anim = assault
-delay_anim = guard
-gather_items_enabled = false
-help_wounded_enabled = false
-corpse_detection_enabled = false
-invulnerable = {=is_warfare} false, {!actor_true_enemy} true, false
-combat_ignore_cond = {=is_warfare} false, {=actor_true_enemy =check_enemy_name(actor)} false, true
-combat_ignore_keep_when_attacked = {=is_warfare} false, true
-meet = meet_inf
-
-[beh@bar_informator_mlr_work_1]:beh@general_work
-pt1 = 50000, smoking_stand | pos: 147.17349243164, 0.09841713309288, 86.409355163574 look: 145.56069946289, 0.099710553884506, 88.298324584961
-pt1 = 550000, ward | pos: 147.17349243164, 0.09841713309288, 86.409355163574 look: 145.56069946289, 0.099710553884506, 88.298324584961
-path_end = loop
-on_info = {!is_night} animpoint@base
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/bar/mod_bar_visitors_radio_redone.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/bar/mod_bar_visitors_radio_redone.ltx
deleted file mode 100644
index 058969f2..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/bar/mod_bar_visitors_radio_redone.ltx
+++ /dev/null
@@ -1,2 +0,0 @@
-![ph_sound]
-volume = {=surge_started}0, 1
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/bar/mod_bar_zastava_2_smart_redone.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/bar/mod_bar_zastava_2_smart_redone.ltx
deleted file mode 100644
index b58b8eb2..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/bar/mod_bar_zastava_2_smart_redone.ltx
+++ /dev/null
@@ -1,14 +0,0 @@
-![logic@duty2_guard1]
-suitable = {=npc_community(dolg) !surge_started} true, {=npc_community(freedom) !surge_started} true
-
-![logic@duty2_guard2]
-suitable = {=npc_community(dolg) !surge_started} true, {=npc_community(freedom) !surge_started} true
-
-![logic@duty2_guard3]
-suitable = {=npc_community(dolg) !surge_started} true, {=npc_community(freedom) !surge_started} true
-
-![logic@duty2_guard4]
-suitable = {=check_npc_name(bar_zastava_2_commander) =npc_in_zone(bar_zastava_restrictor_2) !surge_started} true, {=npc_community(freedom) =npc_in_zone(bar_zastava_restrictor_2) !surge_started} true
-
-![logic@duty2_guard5]
-suitable = {=npc_community(dolg) !surge_started} true, {=npc_community(freedom) !surge_started} true
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/bar/mod_bar_zastava_smart_redone.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/bar/mod_bar_zastava_smart_redone.ltx
deleted file mode 100644
index 606b5e0a..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/bar/mod_bar_zastava_smart_redone.ltx
+++ /dev/null
@@ -1,26 +0,0 @@
-![logic@duty_guard1]
-suitable = {=npc_community(dolg) !surge_started} true, {=npc_community(freedom) !surge_started} true
-
-![logic@duty_guard2]
-suitable = {=npc_community(dolg) !surge_started} true, {=npc_community(freedom) !surge_started} true
-
-![logic@duty_guard3]
-suitable = {=npc_community(dolg) !surge_started} true, {=npc_community(freedom) !surge_started} true
-
-![logic@duty_guard4]
-suitable = {=check_npc_name(bar_duty_security_squad_leader) !surge_started} true, {=npc_community(freedom) !surge_started} true
-
-![logic@duty_guard5]
-suitable = {=npc_community(dolg) !surge_started} true, {=npc_community(freedom) !surge_started} true
-
-![logic@duty_guard6]
-suitable = {=npc_community(dolg) !surge_started} true, {=npc_community(freedom) !surge_started} true
-
-![logic@duty_guard7]
-suitable = {=npc_community(dolg) !surge_started} true, {=npc_community(freedom) !surge_started} true
-
-![logic@duty_guard8]
-suitable = {=npc_community(dolg) !surge_started} true, {=npc_community(freedom) !surge_started} true
-
-![logic@duty_guard9]
-suitable = {=npc_community(dolg) !surge_started} true, {=npc_community(freedom) !surge_started} true
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/bar/smart/bar_dolg_bunker.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/bar/smart/bar_dolg_bunker.ltx
deleted file mode 100644
index 504af7d2..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/bar/smart/bar_dolg_bunker.ltx
+++ /dev/null
@@ -1,50 +0,0 @@
-[smart_terrain]
-squad_id = 1
-max_population = 2
-respawn_params = respawn@bar_dolg_bunker
-respawn_only_smart = false
-respawn_idle = 43200
-respawn_radius = 1000
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = nil
-;def_restr = nil
-;safe_restr = nil
-;spawn_point = nil
-
-[respawn@bar_dolg_bunker] ;-- Type: faction {dolg} = faction base\bunker
-;spawn_freedom_special
-;spawn_freedom_special_2
-;spawn_freedom_special_3
-spawn_deserted_base
-spawn_deserted_base_2
-
-
-;[spawn_freedom_special]
-;spawn_squads = bar_freedom_general_squad
-;spawn_num = {!squad_exist(bar_freedom_general_squad) =actor_community(actor_freedom) +bar_dolg_leader_dead +bar_dolg_petrenko_dead -bar_stalker_barman_dead} 1, 0
-
-;[spawn_freedom_special_2]
-;spawn_squads = bar_freedom_bunker_squad
-;spawn_num = {!squad_exist(bar_freedom_bunker_squad) =actor_community(actor_freedom) +bar_dolg_leader_dead +bar_dolg_petrenko_dead -bar_stalker_barman_dead} 1, 0
-
-;[spawn_freedom_special_3]
-;spawn_squads = bar_freedom_visitors_squad
-;spawn_num = {!squad_exist(bar_freedom_visitors_squad) =actor_community(actor_freedom) +bar_dolg_leader_dead +bar_dolg_petrenko_dead -bar_stalker_barman_dead} 1, 0
-
-
-[spawn_deserted_base]
-spawn_squads = bar_dolg_bunker_squad_rat_mlr_squad
-spawn_num = {!squad_name_exist(bar_dolg_bunker_squad_rat_mlr_squad) +bar_dolg_leader_dead +bar_dolg_petrenko_dead +bar_stalker_barman_dead} 1, 0
-
-[spawn_deserted_base_2]
-spawn_squads = bar_dolg_general_squad_rat_mlr_squad
-spawn_num = {!squad_name_exist(bar_dolg_general_squad_rat_mlr_squad) +bar_dolg_leader_dead +bar_dolg_petrenko_dead +bar_stalker_barman_dead} 1, 0
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-[exclusive]
-bar_dolg_leader = bar\bar_dolg_bunker_logic.ltx
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/bar/smart/bar_dolg_general.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/bar/smart/bar_dolg_general.ltx
deleted file mode 100644
index 7c976aac..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/bar/smart/bar_dolg_general.ltx
+++ /dev/null
@@ -1,74 +0,0 @@
-[smart_terrain]
-squad_id = 2
-max_population = 3
-respawn_params = respawn@bar_dolg_general
-respawn_only_smart = false
-respawn_idle = 43200
-respawn_radius = 50
-;arrive_dist = 0
-;smart_control = smart_control
-;att_restr = bar_dolg_territory
-;def_restr = bar_dolg_territory
-;safe_restr = bar_bar_entry_zone
-;spawn_point = nil
-
-[respawn@bar_dolg_general] ;-- Type: faction {dolg} = faction base\courtyard
-spawn_duty@novice
-spawn_duty@advanced
-spawn_duty@veteran
-spawn_duty_special
-spawn_duty_special_2
-spawn_duty_special_3
-spawn_duty_special_4
-
-
-[spawn_duty@novice]
-spawn_squads = duty_sim_squad_novice, duty_sim_squad_novice, duty_sim_squad_advanced
-spawn_num = {+bar_dolg_leader_dead +bar_dolg_petrenko_dead} 0, 2
-
-[spawn_duty@advanced]
-spawn_squads = duty_sim_squad_advanced, duty_sim_squad_advanced, duty_sim_squad_novice
-spawn_num = {+bar_dolg_leader_dead +bar_dolg_petrenko_dead} 0, 2
-
-[spawn_duty@veteran]
-spawn_squads = duty_sim_squad_veteran, duty_sim_squad_advanced, duty_sim_squad_novice
-spawn_num = {+bar_dolg_leader_dead +bar_dolg_petrenko_dead} 0, 2
-
-[spawn_duty_special]
-spawn_squads = bar_dolg_general_squad
-spawn_num = {!squad_name_exist(bar_dolg_general_squad) -bar_dolg_leader_dead} 1, 0 ;{-bar_dolg_petrenko_dead}
-
-[spawn_duty_special_2]
-spawn_squads = bar_dolg_bunker_squad
-spawn_num = {!squad_name_exist(bar_dolg_bunker_squad) -bar_dolg_leader_dead} 1, 0 ;{-bar_dolg_petrenko_dead}
-
-[spawn_duty_special_3]
-spawn_squads = bar_zastava_2_commander_squad
-spawn_num = {!squad_exist(bar_zastava_2_commander_squad) -bar_dolg_leader_dead} 1, 0 ;{-bar_dolg_petrenko_dead}
-
-[spawn_duty_special_4]
-spawn_squads = bar_duty_security_squad_leader_squad
-spawn_num = {!squad_exist(bar_duty_security_squad_leader_squad) -bar_dolg_leader_dead} 1, 0 ;{-bar_dolg_petrenko_dead}
-
-
-;[on_changing_level]
-
-;[smart_control]
-;noweap_zone = bar_dolg_territory
-;ignore_zone = bar_bar_entry_zone
-;alarm_start_sound = bar_dolg_warn
-;alarm_stop_sound = nil
-
-[exclusive]
-bar_dolg_medic = bar\bar_dolg_medic_logic.ltx
-bar_dolg_medic_bodyguard = bar\bar_dolg_medic_logic.ltx
-
-bar_dolg_general_petrenko = bar\bar_dolg_general_logic.ltx
-bar_dolg_general_zoneguard = bar\bar_dolg_general_logic.ltx
-
-bar_dolg_general_animpoint_kamp1 = bar\bar_dolg_general_logic.ltx
-bar_dolg_general_animpoint_kamp2 = bar\bar_dolg_general_logic.ltx
-bar_dolg_general_animpoint_kamp3 = bar\bar_dolg_general_logic.ltx
-bar_dolg_general_animpoint_kamp4 = bar\bar_dolg_general_logic.ltx
-
-;sick_duty_stalker_bar_general = bar\bar_dolg_medic_logic.ltx
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/bar/smart/bar_visitors.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/bar/smart/bar_visitors.ltx
deleted file mode 100644
index a7eb0bd0..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/bar/smart/bar_visitors.ltx
+++ /dev/null
@@ -1,100 +0,0 @@
-[smart_terrain]
-squad_id = 3
-max_population = 8
-min_population = 3
-respawn_params = respawn@bar_visitors
-respawn_only_smart = false
-respawn_idle = 86400
-respawn_radius = 50
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = nil
-;def_restr = nil
-;safe_restr = nil
-;spawn_point = nil
-
-[respawn@bar_visitors] ;-- Type: Bar 100
-spawn_stalker@novice
-spawn_ecolog@novice
-spawn_csky@novice
-
-
-[spawn_stalker@novice]
-spawn_squads = stalker_sim_squad_advanced_3_4, stalker_sim_squad_novice, stalker_sim_squad_advanced
-spawn_num = {+bar_stalker_barman_dead} 0, 1
-
-[spawn_ecolog@novice]
-spawn_squads = ecolog_sim_squad_novice, ecolog_sim_squad_novice, ecolog_sim_squad_advanced
-spawn_num = {+bar_stalker_barman_dead} 0, 1
-
-[spawn_csky@novice]
-spawn_squads = csky_sim_squad_novice, csky_sim_squad_novice, csky_sim_squad_advanced
-spawn_num = {+bar_stalker_barman_dead} 0, 1
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-[exclusive]
-bar_informator_mlr = bar\bar_visitors_other_logic.ltx
-guid_bar_stalker_navigator = bar\bar_visitors_other_logic.ltx
-bar_visitors_cardan_tech = bar\bar_visitors_cardan_logic.ltx
-
-bar_visitors_beh_trade_job_1 = bar\bar_visitors_logic.ltx
-bar_visitors_beh_tech_job_1 = bar\bar_visitors_cardan_logic.ltx
-
-bar_barman = bar\bar_barman.ltx
-bar_guard1 = bar\bar_guard1.ltx
-bar_guard2 = bar\bar_guard2.ltx
-
-bar_arena_manager = bar\bar_visitors_logic.ltx
-bar_arena_guard = bar\bar_visitors_logic.ltx
-
-bar_visitors_animp_01 = bar\bar_visitors_logic.ltx
-bar_visitors_animp_02 = bar\bar_visitors_logic.ltx
-bar_visitors_animp_03 = bar\bar_visitors_logic.ltx
-bar_visitors_animp_04 = bar\bar_visitors_logic.ltx
-bar_visitors_animp_05 = bar\bar_visitors_logic.ltx
-bar_visitors_animp_06 = bar\bar_visitors_logic.ltx
-bar_visitors_animp_07 = bar\bar_visitors_logic.ltx
-bar_visitors_animp_08 = bar\bar_visitors_logic.ltx
-bar_visitors_animp_09 = bar\bar_visitors_logic.ltx
-bar_visitors_animp_10 = bar\bar_visitors_logic.ltx
-bar_visitors_animp_11 = bar\bar_visitors_logic.ltx
-bar_visitors_animp_12 = bar\bar_visitors_logic.ltx
-bar_visitors_animp_13 = bar\bar_visitors_logic.ltx
-bar_visitors_animp_14 = bar\bar_visitors_logic.ltx
-bar_visitors_animp_15 = bar\bar_visitors_logic.ltx
-bar_visitors_animp_16 = bar\bar_visitors_logic.ltx
-bar_visitors_animp_17 = bar\bar_visitors_logic.ltx
-bar_visitors_animp_18 = bar\bar_visitors_logic.ltx
-bar_visitors_animp_19 = bar\bar_visitors_logic.ltx
-;bar_visitors_animp_20 = bar\bar_visitors_logic.ltx
-;bar_visitors_animp_21 = bar\bar_visitors_logic.ltx
-;bar_visitors_animp_22 = bar\bar_visitors_logic.ltx
-;bar_visitors_animp_23 = bar\bar_visitors_logic.ltx
-;bar_visitors_animp_24 = bar\bar_visitors_logic.ltx
-;bar_visitors_animp_25 = bar\bar_visitors_logic.ltx
-;bar_visitors_animp_26 = bar\bar_visitors_logic.ltx
-
-bar_visitors_animpoint_kamp1 = bar\bar_visitors_logic.ltx
-bar_visitors_animpoint_kamp2 = bar\bar_visitors_logic.ltx
-bar_visitors_animpoint_kamp3 = bar\bar_visitors_logic.ltx
-bar_visitors_animpoint_kamp4 = bar\bar_visitors_logic.ltx
-bar_visitors_animpoint_kamp5 = bar\bar_visitors_logic.ltx
-bar_visitors_animpoint_kamp6 = bar\bar_visitors_logic.ltx
-bar_visitors_animpoint_kamp7 = bar\bar_visitors_logic.ltx
-bar_visitors_animpoint_kamp8 = bar\bar_visitors_logic.ltx
-bar_visitors_animpoint_kamp9 = bar\bar_visitors_logic.ltx
-
-bar_visitors_animp_arena_1 = bar\bar_visitors_logic.ltx
-bar_visitors_animp_arena_2 = bar\bar_visitors_logic.ltx
-bar_visitors_animp_arena_3 = bar\bar_visitors_logic.ltx
-bar_visitors_animp_arena_4 = bar\bar_visitors_logic.ltx
-bar_visitors_animp_arena_5 = bar\bar_visitors_logic.ltx
-bar_visitors_animp_arena_6 = bar\bar_visitors_logic.ltx
-bar_visitors_animp_arena_7 = bar\bar_visitors_logic.ltx
-bar_visitors_animp_arena_8 = bar\bar_visitors_logic.ltx
-bar_visitors_animp_arena_9 = bar\bar_visitors_logic.ltx
-bar_visitors_animp_arena_10 = bar\bar_visitors_logic.ltx
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/bar/smart/bar_zastava.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/bar/smart/bar_zastava.ltx
deleted file mode 100644
index e579c7ea..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/bar/smart/bar_zastava.ltx
+++ /dev/null
@@ -1,64 +0,0 @@
-[smart_terrain]
-squad_id = 4
-max_population = 1
-respawn_params = respawn@bar_zastava
-respawn_only_smart = false
-respawn_idle = 43200
-respawn_radius = 1000
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = bar_dolg_territory
-;def_restr = bar_dolg_territory
-;safe_restr = nil
-;spawn_point = nil
-
-[respawn@bar_zastava] ;-- Type: checkpoint
-;spawn_duty@advanced
-;spawn_duty@veteran
-;spawn_duty_special
-;spawn_freedom_special
-spawn_deserted_base
-
-
-;[spawn_duty@advanced]
-;spawn_squads = duty_sim_squad_advanced, duty_sim_squad_advanced, duty_sim_squad_novice
-;spawn_num = {+bar_zastava_minigunner_dead +bar_zastava_duty_guard1_dead +bar_zastava_duty_guard2_dead +bar_zastava_duty_guard3_dead +bar_zastava_duty_guard4_dead +bar_zastava_duty_guard5_dead +bar_zastava_duty_guard6_dead +bar_zastava_duty_guard7_dead +bar_zastava_duty_guard8_dead +bar_zastava_duty_guard9_dead -bar_dolg_leader_dead} 1, 0 ;{-bar_dolg_petrenko_dead}
-
-;[spawn_duty@veteran]
-;spawn_squads = duty_sim_squad_veteran, duty_sim_squad_veteran, duty_sim_squad_advanced
-;spawn_num = {+bar_zastava_minigunner_dead +bar_zastava_duty_guard1_dead +bar_zastava_duty_guard2_dead +bar_zastava_duty_guard3_dead +bar_zastava_duty_guard4_dead +bar_zastava_duty_guard5_dead +bar_zastava_duty_guard6_dead +bar_zastava_duty_guard7_dead +bar_zastava_duty_guard8_dead +bar_zastava_duty_guard9_dead -bar_dolg_leader_dead} 1, 0 ;{-bar_dolg_petrenko_dead}
-
-;[spawn_duty_special]
-;spawn_squads = bar_duty_security_squad_leader_squad
-;spawn_num = {!squad_exist(bar_duty_security_squad_leader_squad) -bar_dolg_leader_dead} 1, 0 ;{-bar_dolg_petrenko_dead}
-
-;[spawn_freedom_special]
-;spawn_squads = bar_freedom_security_squad
-;spawn_num = {!squad_exist(bar_freedome_security_squad) =actor_community(actor_freedom) +bar_dolg_leader_dead +bar_dolg_petrenko_dead -bar_stalker_barman_dead} 1, 0
-
-
-[spawn_deserted_base] Normal mutants - Rates of groups: ( 1 dog + 3 snork + 1 fracture )
-spawn_squads = simulation_mix_dogs, simulation_snork, simulation_snork_2_3, simulation_snork_2_5, simulation_fracture
-spawn_num = {+bar_stalker_barman_dead +bar_dolg_leader_dead +bar_dolg_petrenko_dead} 1, 0
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-[exclusive]
-bar_zastava_minigunner_excl = bar\bar_zastava_smart.ltx
-
-faction_base_defense_enemy1 = bar\bar_zastava_smart.ltx
-faction_base_defense_enemy2 = bar\bar_zastava_smart.ltx
-faction_base_defense_enemy3 = bar\bar_zastava_smart.ltx
-
-duty_guard1 = bar\bar_zastava_smart.ltx
-duty_guard2 = bar\bar_zastava_smart.ltx
-duty_guard3 = bar\bar_zastava_smart.ltx
-duty_guard4 = bar\bar_zastava_smart.ltx
-duty_guard5 = bar\bar_zastava_smart.ltx
-duty_guard6 = bar\bar_zastava_smart.ltx
-duty_guard7 = bar\bar_zastava_smart.ltx
-duty_guard8 = bar\bar_zastava_smart.ltx
-duty_guard9 = bar\bar_zastava_smart.ltx
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/bar/smart/bar_zastava_2.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/bar/smart/bar_zastava_2.ltx
deleted file mode 100644
index 4d6ba379..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/bar/smart/bar_zastava_2.ltx
+++ /dev/null
@@ -1,60 +0,0 @@
-[smart_terrain]
-squad_id = 5
-max_population = 1
-respawn_params = respawn@bar_zastava_2
-respawn_only_smart = false
-respawn_idle = 43200
-respawn_radius = 1000
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = bar_dolg_territory
-;def_restr = bar_dolg_territory
-;safe_restr = nil
-;spawn_point = nil
-
-[respawn@bar_zastava_2] ;-- Type: checkpoint
-;spawn_duty@advanced
-;spawn_duty@veteran
-;spawn_duty_special
-;spawn_freedom_special
-spawn_deserted_base
-
-
-;[spawn_duty@advanced]
-;spawn_squads = duty_sim_squad_advanced, duty_sim_squad_advanced, duty_sim_squad_novice
-;spawn_num = {+bar_zastava_2_minigunner_dead +bar_zastava_2_duty2_guard1_dead +bar_zastava_2_duty2_guard2_dead +bar_zastava_2_duty2_guard3_dead +bar_zastava_2_duty2_guard4_dead +bar_zastava_2_duty2_guard5_dead +bar_dolg_leader_dead +bar_dolg_petrenko_dead} 1, 0
-
-;[spawn_duty@veteran]
-;spawn_squads = duty_sim_squad_advanced, duty_sim_squad_advanced, duty_sim_squad_veteran
-;spawn_num = {+bar_zastava_2_minigunner_dead +bar_zastava_2_duty2_guard1_dead +bar_zastava_2_duty2_guard2_dead +bar_zastava_2_duty2_guard3_dead +bar_zastava_2_duty2_guard4_dead +bar_zastava_2_duty2_guard5_dead +bar_dolg_leader_dead +bar_dolg_petrenko_dead} 1, 0
-
-;[spawn_duty_special]
-;spawn_squads = bar_zastava_2_commander_squad
-;spawn_num = {!squad_exist(bar_zastava_2_commander_squad) -bar_dolg_leader_dead} 1, 0 ;{-bar_dolg_petrenko_dead}
-
-;[spawn_freedom_special]
-;spawn_squads = bar_freedom_guard_squad
-;spawn_num = {!squad_exist(bar_freedom_guard_squad) =actor_community(actor_freedom) +bar_dolg_leader_dead +bar_dolg_petrenko_dead -bar_stalker_barman_dead} 1, 0
-
-
-[spawn_deserted_base] Normal mutants - Rates of groups: ( 1 dog + 3 snork + 1 fracture + 2 lurker )
-spawn_squads = simulation_mix_dogs, simulation_snork, simulation_snork_2_3, simulation_snork_2_5, simulation_fracture, simulation_lurker, simulation_lurker_1_2
-spawn_num = {+bar_stalker_barman_dead +bar_dolg_leader_dead +bar_dolg_petrenko_dead} 1, 0
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-[exclusive]
-bar_zastava_2_minigunner_excl = bar\bar_zastava_2_smart.ltx
-
-faction_base_defense_enemy1 = bar\bar_zastava_2_smart.ltx
-faction_base_defense_enemy2 = bar\bar_zastava_2_smart.ltx
-faction_base_defense_enemy3 = bar\bar_zastava_2_smart.ltx
-
-duty2_guard1 = bar\bar_zastava_2_smart.ltx
-duty2_guard2 = bar\bar_zastava_2_smart.ltx
-duty2_guard3 = bar\bar_zastava_2_smart.ltx
-duty2_guard4 = bar\bar_zastava_2_smart.ltx
-duty2_guard5 = bar\bar_zastava_2_smart.ltx
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/bar/smart/bar_zastava_dogs_lair.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/bar/smart/bar_zastava_dogs_lair.ltx
deleted file mode 100644
index 12cf3e49..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/bar/smart/bar_zastava_dogs_lair.ltx
+++ /dev/null
@@ -1,42 +0,0 @@
-[smart_terrain]
-squad_id = 6
-max_population = 1
-respawn_params = respawn@bar_zastava_dogs_lair
-respawn_only_smart = false
-respawn_idle = 345600
-respawn_radius = 50
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = nil
-;def_restr = nil
-;safe_restr = nil
-;spawn_point = nil
-
-[respawn@bar_zastava_dogs_lair]
-spawn_dogs
-spawn_snork
-spawn_deserted_base
-
-
-[spawn_dogs]
-spawn_squads = simulation_pseudodog, simulation_dog, simulation_mix_dogs, simulation_mix_dogs
-spawn_num = {~10} 1, 0
-
-[spawn_snork]
-spawn_squads = trx_bar_zastava_snork
-spawn_num = {=actor_week_in_zone(4) ~10} 1, 0
-
-
-[spawn_deserted_base] Normal mutants - Rates of groups: ( 1 tushkano + 2 dog + 1 pseudodog + 1 cat )
-spawn_squads = simulation_tushkano, simulation_dog_5_7, simulation_mix_dogs, simulation_pseudodog, simulation_cat
-spawn_num = {+bar_stalker_barman_dead +bar_dolg_leader_dead +bar_dolg_petrenko_dead} 1, 0
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-[exclusive]
-faction_base_defense_enemy1 = bar\bar_zastava_dogs_lair_smart_logic.ltx
-faction_base_defense_enemy2 = bar\bar_zastava_dogs_lair_smart_logic.ltx
-faction_base_defense_enemy3 = bar\bar_zastava_dogs_lair_smart_logic.ltx
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/bar/smart/bar_zastava_dogs_lair_2.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/bar/smart/bar_zastava_dogs_lair_2.ltx
deleted file mode 100644
index 7989bc1e..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/bar/smart/bar_zastava_dogs_lair_2.ltx
+++ /dev/null
@@ -1,42 +0,0 @@
-[smart_terrain]
-squad_id = 6
-max_population = 1
-respawn_params = respawn@bar_zastava_dogs_lair_2
-respawn_only_smart = false
-respawn_idle = 345600
-respawn_radius = 50
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = nil
-;def_restr = nil
-;safe_restr = nil
-;spawn_point = nil
-
-[respawn@bar_zastava_dogs_lair_2]
-spawn_dogs
-spawn_snork
-spawn_deserted_base
-
-
-[spawn_dogs]
-spawn_squads = simulation_pseudodog, simulation_dog, simulation_mix_dogs, simulation_mix_dogs
-spawn_num = {~10} 1, 0
-
-[spawn_snork]
-spawn_squads = trx_bar_zastava_2_snork
-spawn_num = {=actor_week_in_zone(4) ~10} 1, 0
-
-
-[spawn_deserted_base] Normal mutants - Rates of groups: ( 1 tushkano + 2 dog + 1 pseudodog + 1 cat )
-spawn_squads = simulation_tushkano, simulation_dog_5_7, simulation_mix_dogs, simulation_pseudodog, simulation_cat
-spawn_num = {+bar_stalker_barman_dead +bar_dolg_leader_dead +bar_dolg_petrenko_dead} 1, 0
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-[exclusive]
-faction_base_defense_enemy1 = bar\bar_zastava_dogs_lair_2_smart_logic.ltx
-faction_base_defense_enemy2 = bar\bar_zastava_dogs_lair_2_smart_logic.ltx
-faction_base_defense_enemy3 = bar\bar_zastava_dogs_lair_2_smart_logic.ltx
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/bar/smart_def/bar_dolg_bunker.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/bar/smart_def/bar_dolg_bunker.ltx
deleted file mode 100644
index 504af7d2..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/bar/smart_def/bar_dolg_bunker.ltx
+++ /dev/null
@@ -1,50 +0,0 @@
-[smart_terrain]
-squad_id = 1
-max_population = 2
-respawn_params = respawn@bar_dolg_bunker
-respawn_only_smart = false
-respawn_idle = 43200
-respawn_radius = 1000
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = nil
-;def_restr = nil
-;safe_restr = nil
-;spawn_point = nil
-
-[respawn@bar_dolg_bunker] ;-- Type: faction {dolg} = faction base\bunker
-;spawn_freedom_special
-;spawn_freedom_special_2
-;spawn_freedom_special_3
-spawn_deserted_base
-spawn_deserted_base_2
-
-
-;[spawn_freedom_special]
-;spawn_squads = bar_freedom_general_squad
-;spawn_num = {!squad_exist(bar_freedom_general_squad) =actor_community(actor_freedom) +bar_dolg_leader_dead +bar_dolg_petrenko_dead -bar_stalker_barman_dead} 1, 0
-
-;[spawn_freedom_special_2]
-;spawn_squads = bar_freedom_bunker_squad
-;spawn_num = {!squad_exist(bar_freedom_bunker_squad) =actor_community(actor_freedom) +bar_dolg_leader_dead +bar_dolg_petrenko_dead -bar_stalker_barman_dead} 1, 0
-
-;[spawn_freedom_special_3]
-;spawn_squads = bar_freedom_visitors_squad
-;spawn_num = {!squad_exist(bar_freedom_visitors_squad) =actor_community(actor_freedom) +bar_dolg_leader_dead +bar_dolg_petrenko_dead -bar_stalker_barman_dead} 1, 0
-
-
-[spawn_deserted_base]
-spawn_squads = bar_dolg_bunker_squad_rat_mlr_squad
-spawn_num = {!squad_name_exist(bar_dolg_bunker_squad_rat_mlr_squad) +bar_dolg_leader_dead +bar_dolg_petrenko_dead +bar_stalker_barman_dead} 1, 0
-
-[spawn_deserted_base_2]
-spawn_squads = bar_dolg_general_squad_rat_mlr_squad
-spawn_num = {!squad_name_exist(bar_dolg_general_squad_rat_mlr_squad) +bar_dolg_leader_dead +bar_dolg_petrenko_dead +bar_stalker_barman_dead} 1, 0
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-[exclusive]
-bar_dolg_leader = bar\bar_dolg_bunker_logic.ltx
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/bar/smart_def/bar_dolg_general.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/bar/smart_def/bar_dolg_general.ltx
deleted file mode 100644
index 7c976aac..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/bar/smart_def/bar_dolg_general.ltx
+++ /dev/null
@@ -1,74 +0,0 @@
-[smart_terrain]
-squad_id = 2
-max_population = 3
-respawn_params = respawn@bar_dolg_general
-respawn_only_smart = false
-respawn_idle = 43200
-respawn_radius = 50
-;arrive_dist = 0
-;smart_control = smart_control
-;att_restr = bar_dolg_territory
-;def_restr = bar_dolg_territory
-;safe_restr = bar_bar_entry_zone
-;spawn_point = nil
-
-[respawn@bar_dolg_general] ;-- Type: faction {dolg} = faction base\courtyard
-spawn_duty@novice
-spawn_duty@advanced
-spawn_duty@veteran
-spawn_duty_special
-spawn_duty_special_2
-spawn_duty_special_3
-spawn_duty_special_4
-
-
-[spawn_duty@novice]
-spawn_squads = duty_sim_squad_novice, duty_sim_squad_novice, duty_sim_squad_advanced
-spawn_num = {+bar_dolg_leader_dead +bar_dolg_petrenko_dead} 0, 2
-
-[spawn_duty@advanced]
-spawn_squads = duty_sim_squad_advanced, duty_sim_squad_advanced, duty_sim_squad_novice
-spawn_num = {+bar_dolg_leader_dead +bar_dolg_petrenko_dead} 0, 2
-
-[spawn_duty@veteran]
-spawn_squads = duty_sim_squad_veteran, duty_sim_squad_advanced, duty_sim_squad_novice
-spawn_num = {+bar_dolg_leader_dead +bar_dolg_petrenko_dead} 0, 2
-
-[spawn_duty_special]
-spawn_squads = bar_dolg_general_squad
-spawn_num = {!squad_name_exist(bar_dolg_general_squad) -bar_dolg_leader_dead} 1, 0 ;{-bar_dolg_petrenko_dead}
-
-[spawn_duty_special_2]
-spawn_squads = bar_dolg_bunker_squad
-spawn_num = {!squad_name_exist(bar_dolg_bunker_squad) -bar_dolg_leader_dead} 1, 0 ;{-bar_dolg_petrenko_dead}
-
-[spawn_duty_special_3]
-spawn_squads = bar_zastava_2_commander_squad
-spawn_num = {!squad_exist(bar_zastava_2_commander_squad) -bar_dolg_leader_dead} 1, 0 ;{-bar_dolg_petrenko_dead}
-
-[spawn_duty_special_4]
-spawn_squads = bar_duty_security_squad_leader_squad
-spawn_num = {!squad_exist(bar_duty_security_squad_leader_squad) -bar_dolg_leader_dead} 1, 0 ;{-bar_dolg_petrenko_dead}
-
-
-;[on_changing_level]
-
-;[smart_control]
-;noweap_zone = bar_dolg_territory
-;ignore_zone = bar_bar_entry_zone
-;alarm_start_sound = bar_dolg_warn
-;alarm_stop_sound = nil
-
-[exclusive]
-bar_dolg_medic = bar\bar_dolg_medic_logic.ltx
-bar_dolg_medic_bodyguard = bar\bar_dolg_medic_logic.ltx
-
-bar_dolg_general_petrenko = bar\bar_dolg_general_logic.ltx
-bar_dolg_general_zoneguard = bar\bar_dolg_general_logic.ltx
-
-bar_dolg_general_animpoint_kamp1 = bar\bar_dolg_general_logic.ltx
-bar_dolg_general_animpoint_kamp2 = bar\bar_dolg_general_logic.ltx
-bar_dolg_general_animpoint_kamp3 = bar\bar_dolg_general_logic.ltx
-bar_dolg_general_animpoint_kamp4 = bar\bar_dolg_general_logic.ltx
-
-;sick_duty_stalker_bar_general = bar\bar_dolg_medic_logic.ltx
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/bar/smart_def/bar_visitors.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/bar/smart_def/bar_visitors.ltx
deleted file mode 100644
index a7eb0bd0..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/bar/smart_def/bar_visitors.ltx
+++ /dev/null
@@ -1,100 +0,0 @@
-[smart_terrain]
-squad_id = 3
-max_population = 8
-min_population = 3
-respawn_params = respawn@bar_visitors
-respawn_only_smart = false
-respawn_idle = 86400
-respawn_radius = 50
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = nil
-;def_restr = nil
-;safe_restr = nil
-;spawn_point = nil
-
-[respawn@bar_visitors] ;-- Type: Bar 100
-spawn_stalker@novice
-spawn_ecolog@novice
-spawn_csky@novice
-
-
-[spawn_stalker@novice]
-spawn_squads = stalker_sim_squad_advanced_3_4, stalker_sim_squad_novice, stalker_sim_squad_advanced
-spawn_num = {+bar_stalker_barman_dead} 0, 1
-
-[spawn_ecolog@novice]
-spawn_squads = ecolog_sim_squad_novice, ecolog_sim_squad_novice, ecolog_sim_squad_advanced
-spawn_num = {+bar_stalker_barman_dead} 0, 1
-
-[spawn_csky@novice]
-spawn_squads = csky_sim_squad_novice, csky_sim_squad_novice, csky_sim_squad_advanced
-spawn_num = {+bar_stalker_barman_dead} 0, 1
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-[exclusive]
-bar_informator_mlr = bar\bar_visitors_other_logic.ltx
-guid_bar_stalker_navigator = bar\bar_visitors_other_logic.ltx
-bar_visitors_cardan_tech = bar\bar_visitors_cardan_logic.ltx
-
-bar_visitors_beh_trade_job_1 = bar\bar_visitors_logic.ltx
-bar_visitors_beh_tech_job_1 = bar\bar_visitors_cardan_logic.ltx
-
-bar_barman = bar\bar_barman.ltx
-bar_guard1 = bar\bar_guard1.ltx
-bar_guard2 = bar\bar_guard2.ltx
-
-bar_arena_manager = bar\bar_visitors_logic.ltx
-bar_arena_guard = bar\bar_visitors_logic.ltx
-
-bar_visitors_animp_01 = bar\bar_visitors_logic.ltx
-bar_visitors_animp_02 = bar\bar_visitors_logic.ltx
-bar_visitors_animp_03 = bar\bar_visitors_logic.ltx
-bar_visitors_animp_04 = bar\bar_visitors_logic.ltx
-bar_visitors_animp_05 = bar\bar_visitors_logic.ltx
-bar_visitors_animp_06 = bar\bar_visitors_logic.ltx
-bar_visitors_animp_07 = bar\bar_visitors_logic.ltx
-bar_visitors_animp_08 = bar\bar_visitors_logic.ltx
-bar_visitors_animp_09 = bar\bar_visitors_logic.ltx
-bar_visitors_animp_10 = bar\bar_visitors_logic.ltx
-bar_visitors_animp_11 = bar\bar_visitors_logic.ltx
-bar_visitors_animp_12 = bar\bar_visitors_logic.ltx
-bar_visitors_animp_13 = bar\bar_visitors_logic.ltx
-bar_visitors_animp_14 = bar\bar_visitors_logic.ltx
-bar_visitors_animp_15 = bar\bar_visitors_logic.ltx
-bar_visitors_animp_16 = bar\bar_visitors_logic.ltx
-bar_visitors_animp_17 = bar\bar_visitors_logic.ltx
-bar_visitors_animp_18 = bar\bar_visitors_logic.ltx
-bar_visitors_animp_19 = bar\bar_visitors_logic.ltx
-;bar_visitors_animp_20 = bar\bar_visitors_logic.ltx
-;bar_visitors_animp_21 = bar\bar_visitors_logic.ltx
-;bar_visitors_animp_22 = bar\bar_visitors_logic.ltx
-;bar_visitors_animp_23 = bar\bar_visitors_logic.ltx
-;bar_visitors_animp_24 = bar\bar_visitors_logic.ltx
-;bar_visitors_animp_25 = bar\bar_visitors_logic.ltx
-;bar_visitors_animp_26 = bar\bar_visitors_logic.ltx
-
-bar_visitors_animpoint_kamp1 = bar\bar_visitors_logic.ltx
-bar_visitors_animpoint_kamp2 = bar\bar_visitors_logic.ltx
-bar_visitors_animpoint_kamp3 = bar\bar_visitors_logic.ltx
-bar_visitors_animpoint_kamp4 = bar\bar_visitors_logic.ltx
-bar_visitors_animpoint_kamp5 = bar\bar_visitors_logic.ltx
-bar_visitors_animpoint_kamp6 = bar\bar_visitors_logic.ltx
-bar_visitors_animpoint_kamp7 = bar\bar_visitors_logic.ltx
-bar_visitors_animpoint_kamp8 = bar\bar_visitors_logic.ltx
-bar_visitors_animpoint_kamp9 = bar\bar_visitors_logic.ltx
-
-bar_visitors_animp_arena_1 = bar\bar_visitors_logic.ltx
-bar_visitors_animp_arena_2 = bar\bar_visitors_logic.ltx
-bar_visitors_animp_arena_3 = bar\bar_visitors_logic.ltx
-bar_visitors_animp_arena_4 = bar\bar_visitors_logic.ltx
-bar_visitors_animp_arena_5 = bar\bar_visitors_logic.ltx
-bar_visitors_animp_arena_6 = bar\bar_visitors_logic.ltx
-bar_visitors_animp_arena_7 = bar\bar_visitors_logic.ltx
-bar_visitors_animp_arena_8 = bar\bar_visitors_logic.ltx
-bar_visitors_animp_arena_9 = bar\bar_visitors_logic.ltx
-bar_visitors_animp_arena_10 = bar\bar_visitors_logic.ltx
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/bar/smart_def/bar_zastava.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/bar/smart_def/bar_zastava.ltx
deleted file mode 100644
index e579c7ea..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/bar/smart_def/bar_zastava.ltx
+++ /dev/null
@@ -1,64 +0,0 @@
-[smart_terrain]
-squad_id = 4
-max_population = 1
-respawn_params = respawn@bar_zastava
-respawn_only_smart = false
-respawn_idle = 43200
-respawn_radius = 1000
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = bar_dolg_territory
-;def_restr = bar_dolg_territory
-;safe_restr = nil
-;spawn_point = nil
-
-[respawn@bar_zastava] ;-- Type: checkpoint
-;spawn_duty@advanced
-;spawn_duty@veteran
-;spawn_duty_special
-;spawn_freedom_special
-spawn_deserted_base
-
-
-;[spawn_duty@advanced]
-;spawn_squads = duty_sim_squad_advanced, duty_sim_squad_advanced, duty_sim_squad_novice
-;spawn_num = {+bar_zastava_minigunner_dead +bar_zastava_duty_guard1_dead +bar_zastava_duty_guard2_dead +bar_zastava_duty_guard3_dead +bar_zastava_duty_guard4_dead +bar_zastava_duty_guard5_dead +bar_zastava_duty_guard6_dead +bar_zastava_duty_guard7_dead +bar_zastava_duty_guard8_dead +bar_zastava_duty_guard9_dead -bar_dolg_leader_dead} 1, 0 ;{-bar_dolg_petrenko_dead}
-
-;[spawn_duty@veteran]
-;spawn_squads = duty_sim_squad_veteran, duty_sim_squad_veteran, duty_sim_squad_advanced
-;spawn_num = {+bar_zastava_minigunner_dead +bar_zastava_duty_guard1_dead +bar_zastava_duty_guard2_dead +bar_zastava_duty_guard3_dead +bar_zastava_duty_guard4_dead +bar_zastava_duty_guard5_dead +bar_zastava_duty_guard6_dead +bar_zastava_duty_guard7_dead +bar_zastava_duty_guard8_dead +bar_zastava_duty_guard9_dead -bar_dolg_leader_dead} 1, 0 ;{-bar_dolg_petrenko_dead}
-
-;[spawn_duty_special]
-;spawn_squads = bar_duty_security_squad_leader_squad
-;spawn_num = {!squad_exist(bar_duty_security_squad_leader_squad) -bar_dolg_leader_dead} 1, 0 ;{-bar_dolg_petrenko_dead}
-
-;[spawn_freedom_special]
-;spawn_squads = bar_freedom_security_squad
-;spawn_num = {!squad_exist(bar_freedome_security_squad) =actor_community(actor_freedom) +bar_dolg_leader_dead +bar_dolg_petrenko_dead -bar_stalker_barman_dead} 1, 0
-
-
-[spawn_deserted_base] Normal mutants - Rates of groups: ( 1 dog + 3 snork + 1 fracture )
-spawn_squads = simulation_mix_dogs, simulation_snork, simulation_snork_2_3, simulation_snork_2_5, simulation_fracture
-spawn_num = {+bar_stalker_barman_dead +bar_dolg_leader_dead +bar_dolg_petrenko_dead} 1, 0
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-[exclusive]
-bar_zastava_minigunner_excl = bar\bar_zastava_smart.ltx
-
-faction_base_defense_enemy1 = bar\bar_zastava_smart.ltx
-faction_base_defense_enemy2 = bar\bar_zastava_smart.ltx
-faction_base_defense_enemy3 = bar\bar_zastava_smart.ltx
-
-duty_guard1 = bar\bar_zastava_smart.ltx
-duty_guard2 = bar\bar_zastava_smart.ltx
-duty_guard3 = bar\bar_zastava_smart.ltx
-duty_guard4 = bar\bar_zastava_smart.ltx
-duty_guard5 = bar\bar_zastava_smart.ltx
-duty_guard6 = bar\bar_zastava_smart.ltx
-duty_guard7 = bar\bar_zastava_smart.ltx
-duty_guard8 = bar\bar_zastava_smart.ltx
-duty_guard9 = bar\bar_zastava_smart.ltx
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/bar/smart_def/bar_zastava_2.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/bar/smart_def/bar_zastava_2.ltx
deleted file mode 100644
index 4d6ba379..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/bar/smart_def/bar_zastava_2.ltx
+++ /dev/null
@@ -1,60 +0,0 @@
-[smart_terrain]
-squad_id = 5
-max_population = 1
-respawn_params = respawn@bar_zastava_2
-respawn_only_smart = false
-respawn_idle = 43200
-respawn_radius = 1000
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = bar_dolg_territory
-;def_restr = bar_dolg_territory
-;safe_restr = nil
-;spawn_point = nil
-
-[respawn@bar_zastava_2] ;-- Type: checkpoint
-;spawn_duty@advanced
-;spawn_duty@veteran
-;spawn_duty_special
-;spawn_freedom_special
-spawn_deserted_base
-
-
-;[spawn_duty@advanced]
-;spawn_squads = duty_sim_squad_advanced, duty_sim_squad_advanced, duty_sim_squad_novice
-;spawn_num = {+bar_zastava_2_minigunner_dead +bar_zastava_2_duty2_guard1_dead +bar_zastava_2_duty2_guard2_dead +bar_zastava_2_duty2_guard3_dead +bar_zastava_2_duty2_guard4_dead +bar_zastava_2_duty2_guard5_dead +bar_dolg_leader_dead +bar_dolg_petrenko_dead} 1, 0
-
-;[spawn_duty@veteran]
-;spawn_squads = duty_sim_squad_advanced, duty_sim_squad_advanced, duty_sim_squad_veteran
-;spawn_num = {+bar_zastava_2_minigunner_dead +bar_zastava_2_duty2_guard1_dead +bar_zastava_2_duty2_guard2_dead +bar_zastava_2_duty2_guard3_dead +bar_zastava_2_duty2_guard4_dead +bar_zastava_2_duty2_guard5_dead +bar_dolg_leader_dead +bar_dolg_petrenko_dead} 1, 0
-
-;[spawn_duty_special]
-;spawn_squads = bar_zastava_2_commander_squad
-;spawn_num = {!squad_exist(bar_zastava_2_commander_squad) -bar_dolg_leader_dead} 1, 0 ;{-bar_dolg_petrenko_dead}
-
-;[spawn_freedom_special]
-;spawn_squads = bar_freedom_guard_squad
-;spawn_num = {!squad_exist(bar_freedom_guard_squad) =actor_community(actor_freedom) +bar_dolg_leader_dead +bar_dolg_petrenko_dead -bar_stalker_barman_dead} 1, 0
-
-
-[spawn_deserted_base] Normal mutants - Rates of groups: ( 1 dog + 3 snork + 1 fracture + 2 lurker )
-spawn_squads = simulation_mix_dogs, simulation_snork, simulation_snork_2_3, simulation_snork_2_5, simulation_fracture, simulation_lurker, simulation_lurker_1_2
-spawn_num = {+bar_stalker_barman_dead +bar_dolg_leader_dead +bar_dolg_petrenko_dead} 1, 0
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-[exclusive]
-bar_zastava_2_minigunner_excl = bar\bar_zastava_2_smart.ltx
-
-faction_base_defense_enemy1 = bar\bar_zastava_2_smart.ltx
-faction_base_defense_enemy2 = bar\bar_zastava_2_smart.ltx
-faction_base_defense_enemy3 = bar\bar_zastava_2_smart.ltx
-
-duty2_guard1 = bar\bar_zastava_2_smart.ltx
-duty2_guard2 = bar\bar_zastava_2_smart.ltx
-duty2_guard3 = bar\bar_zastava_2_smart.ltx
-duty2_guard4 = bar\bar_zastava_2_smart.ltx
-duty2_guard5 = bar\bar_zastava_2_smart.ltx
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/bar/smart_def/bar_zastava_dogs_lair.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/bar/smart_def/bar_zastava_dogs_lair.ltx
deleted file mode 100644
index 12cf3e49..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/bar/smart_def/bar_zastava_dogs_lair.ltx
+++ /dev/null
@@ -1,42 +0,0 @@
-[smart_terrain]
-squad_id = 6
-max_population = 1
-respawn_params = respawn@bar_zastava_dogs_lair
-respawn_only_smart = false
-respawn_idle = 345600
-respawn_radius = 50
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = nil
-;def_restr = nil
-;safe_restr = nil
-;spawn_point = nil
-
-[respawn@bar_zastava_dogs_lair]
-spawn_dogs
-spawn_snork
-spawn_deserted_base
-
-
-[spawn_dogs]
-spawn_squads = simulation_pseudodog, simulation_dog, simulation_mix_dogs, simulation_mix_dogs
-spawn_num = {~10} 1, 0
-
-[spawn_snork]
-spawn_squads = trx_bar_zastava_snork
-spawn_num = {=actor_week_in_zone(4) ~10} 1, 0
-
-
-[spawn_deserted_base] Normal mutants - Rates of groups: ( 1 tushkano + 2 dog + 1 pseudodog + 1 cat )
-spawn_squads = simulation_tushkano, simulation_dog_5_7, simulation_mix_dogs, simulation_pseudodog, simulation_cat
-spawn_num = {+bar_stalker_barman_dead +bar_dolg_leader_dead +bar_dolg_petrenko_dead} 1, 0
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-[exclusive]
-faction_base_defense_enemy1 = bar\bar_zastava_dogs_lair_smart_logic.ltx
-faction_base_defense_enemy2 = bar\bar_zastava_dogs_lair_smart_logic.ltx
-faction_base_defense_enemy3 = bar\bar_zastava_dogs_lair_smart_logic.ltx
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/bar/smart_def/bar_zastava_dogs_lair_2.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/bar/smart_def/bar_zastava_dogs_lair_2.ltx
deleted file mode 100644
index 7989bc1e..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/bar/smart_def/bar_zastava_dogs_lair_2.ltx
+++ /dev/null
@@ -1,42 +0,0 @@
-[smart_terrain]
-squad_id = 6
-max_population = 1
-respawn_params = respawn@bar_zastava_dogs_lair_2
-respawn_only_smart = false
-respawn_idle = 345600
-respawn_radius = 50
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = nil
-;def_restr = nil
-;safe_restr = nil
-;spawn_point = nil
-
-[respawn@bar_zastava_dogs_lair_2]
-spawn_dogs
-spawn_snork
-spawn_deserted_base
-
-
-[spawn_dogs]
-spawn_squads = simulation_pseudodog, simulation_dog, simulation_mix_dogs, simulation_mix_dogs
-spawn_num = {~10} 1, 0
-
-[spawn_snork]
-spawn_squads = trx_bar_zastava_2_snork
-spawn_num = {=actor_week_in_zone(4) ~10} 1, 0
-
-
-[spawn_deserted_base] Normal mutants - Rates of groups: ( 1 tushkano + 2 dog + 1 pseudodog + 1 cat )
-spawn_squads = simulation_tushkano, simulation_dog_5_7, simulation_mix_dogs, simulation_pseudodog, simulation_cat
-spawn_num = {+bar_stalker_barman_dead +bar_dolg_leader_dead +bar_dolg_petrenko_dead} 1, 0
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-[exclusive]
-faction_base_defense_enemy1 = bar\bar_zastava_dogs_lair_2_smart_logic.ltx
-faction_base_defense_enemy2 = bar\bar_zastava_dogs_lair_2_smart_logic.ltx
-faction_base_defense_enemy3 = bar\bar_zastava_dogs_lair_2_smart_logic.ltx
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/darkscape/ds_endless_night_spawn_logic_1.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/darkscape/ds_endless_night_spawn_logic_1.ltx
deleted file mode 100644
index 9cd451d2..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/darkscape/ds_endless_night_spawn_logic_1.ltx
+++ /dev/null
@@ -1,40 +0,0 @@
-[logic]
-active = ph_idle@wait_actor
-
-[ph_idle@wait_actor]
-on_info = {=actor_near_smart(ds2_st_dogs) =is_night} ph_idle@spawn_night_monster_1, {=actor_near_smart(ds2_st_dogs) =is_dark_night} ph_idle@spawn_dark_monster_1
-on_info2 = {=actor_near_smart(ds_grverfer2) =is_night} ph_idle@spawn_night_monster_2, {=actor_near_smart(ds_grverfer2) =is_dark_night} ph_idle@spawn_dark_monster_2
-on_info3 = {=actor_near_smart(ds_ptr2) =is_night} ph_idle@spawn_night_monster_3, {=actor_near_smart(ds_ptr2) =is_dark_night} ph_idle@spawn_dark_monster_3
-
-[ph_idle@spawn_night_monster_1]
-on_info = {~10} %=create_squad(simulation_boar_night:ds2_st_dogs)% ph_idle@reset, {~10} %=create_squad(simulation_tushkano_night:ds2_st_dogs)% ph_idle@reset, {~10} %=create_squad(simulation_mix_dogs_night:ds2_st_dogs)% ph_idle@reset, {~10} %=create_squad(simulation_pseudodog_night:ds2_st_dogs)% ph_idle@reset, ph_idle@wait_reset
-
-[ph_idle@spawn_dark_monster_1]
-on_info = {~10} %=create_squad(simulation_mix_zombie_night:ds2_st_dogs)% ph_idle@reset, {~10} %=create_squad(simulation_psysucker_white_night:ds2_st_dogs)% ph_idle@reset, {~10} %=create_squad(simulation_mix_dogs_night:ds2_st_dogs)% ph_idle@reset, {~10} %=create_squad(simulation_bloodsucker_green_night:ds2_st_dogs)% ph_idle@reset, ph_idle@wait_reset
-
-[ph_idle@reset]
-on_game_timer = 86400 | ph_idle@wait_actor
-
-[ph_idle@spawn_night_monster_2]
-on_info = {~10} %=create_squad(simulation_mix_dogs_night:ds_grverfer2)% ph_idle@reset_2, {~10} %=create_squad(simulation_cat_night:ds_grverfer2)% ph_idle@reset_2, {~10} %=create_squad(simulation_tushkano_night:ds_grverfer2)% ph_idle@reset_2, {~10} %=create_squad(simulation_pseudodog_night:ds_grverfer2)% ph_idle@reset_2, ph_idle@wait_reset
-
-[ph_idle@spawn_dark_monster_2]
-on_info = {~10} %=create_squad(simulation_mix_dogs_night:ds_grverfer2)% ph_idle@reset_2, {~10} %=create_squad(simulation_psysucker_white_night:ds_grverfer2)% ph_idle@reset_2, {~10} %=create_squad(simulation_bloodsucker_green_night:ds_grverfer2)% ph_idle@reset_2, {~10} %=create_squad(simulation_karlik_night:ds_grverfer2)% ph_idle@reset_2, ph_idle@wait_reset
-
-[ph_idle@reset_2]
-on_game_timer = 86400 | ph_idle@wait_actor
-
-[ph_idle@spawn_night_monster_3]
-on_info = {~10} %=create_squad(simulation_boar_night:ds_ptr2)% ph_idle@reset_3, {~10} %=create_squad(simulation_boar_3_5_night:ds_ptr2)% ph_idle@reset_3, {~10} %=create_squad(simulation_cat_night:ds_ptr2)% ph_idle@reset_3, {~10} %=create_squad(simulation_dog_night:ds_ptr2)% ph_idle@reset_3, ph_idle@wait_reset
-
-[ph_idle@spawn_dark_monster_3]
-on_info = {~10} %=create_squad(simulation_lurker_blue_night:ds_ptr2)% ph_idle@reset_3, {~10} %=create_squad(simulation_psysucker_white_night:ds_ptr2)% ph_idle@reset_3, {~10} %=create_squad(simulation_karlik_night:ds_ptr2)% ph_idle@reset_3, {~10} %=create_squad(simulation_bloodsucker_green_night:ds_ptr2)% ph_idle@reset_3, ph_idle@wait_reset
-
-[ph_idle@reset_3]
-on_game_timer = 86400 | ph_idle@wait_actor
-
-[ph_idle@wait_reset]
-on_game_timer = 580 | ph_idle@wait_actor
-
-[collide]
-ignore_static
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/darkscape/ds_endless_night_spawn_logic_2.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/darkscape/ds_endless_night_spawn_logic_2.ltx
deleted file mode 100644
index 3ea50b74..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/darkscape/ds_endless_night_spawn_logic_2.ltx
+++ /dev/null
@@ -1,40 +0,0 @@
-[logic]
-active = ph_idle@wait_actor
-
-[ph_idle@wait_actor]
-on_info = {=actor_near_smart(ds_boars_nest) =is_night} ph_idle@spawn_night_monster_1, {=actor_near_smart(ds_boars_nest) =is_dark_night} ph_idle@spawn_dark_monster_1
-on_info2 = {=actor_near_smart(ds2_st_hoofs) =is_night} ph_idle@spawn_night_monster_2, {=actor_near_smart(ds2_st_hoofs) =is_dark_night} ph_idle@spawn_dark_monster_2
-on_info3 = {=actor_near_smart(ds_deb1) =is_night} ph_idle@spawn_night_monster_3, {=actor_near_smart(ds_deb1) =is_dark_night} ph_idle@spawn_dark_monster_3
-
-[ph_idle@spawn_night_monster_1]
-on_info = {~10} %=create_squad(simulation_dog_night:ds_boars_nest)% ph_idle@reset, {~10} %=create_squad(simulation_cat_night:ds_boars_nest)% ph_idle@reset, {~10} %=create_squad(simulation_tushkano_night:ds_boars_nest)% ph_idle@reset, {~10} %=create_squad(simulation_boar_3_5_night:ds_boars_nest)% ph_idle@reset, ph_idle@wait_reset
-
-[ph_idle@spawn_dark_monster_1]
-on_info = {~10} %=create_squad(simulation_fracture_night:ds_boars_nest)% ph_idle@reset, {~10} %=create_squad(simulation_lurker_blue_night:ds_boars_nest)% ph_idle@reset, {~10} %=create_squad(simulation_tushkano_night:ds_boars_nest)% ph_idle@reset, {~10} %=create_squad(simulation_boar_3_5_night:ds_boars_nest)% ph_idle@reset, ph_idle@wait_reset
-
-[ph_idle@reset]
-on_game_timer = 86400 | ph_idle@wait_actor
-
-[ph_idle@spawn_night_monster_2]
-on_info = {~10} %=create_squad(simulation_tushkano_night:ds2_st_hoofs)% ph_idle@reset_2, {~10} %=create_squad(simulation_cat_night:ds2_st_hoofs)% ph_idle@reset_2, {~10} %=create_squad(simulation_dog_night:ds2_st_hoofs)% ph_idle@reset_2, {~10} %=create_squad(simulation_pseudodog_night:ds2_st_hoofs)% ph_idle@reset_2, ph_idle@wait_reset
-
-[ph_idle@spawn_dark_monster_2]
-on_info = {~10} %=create_squad(simulation_psy_dog_night:ds2_st_hoofs)% ph_idle@reset_2, {~10} %=create_squad(simulation_lurker_blue_night:ds2_st_hoofs)% ph_idle@reset_2, {~10} %=create_squad(simulation_dog_night:ds2_st_hoofs)% ph_idle@reset_2, {~10} %=create_squad(simulation_pseudodog_night:ds2_st_hoofs)% ph_idle@reset_2, ph_idle@wait_reset
-
-[ph_idle@reset_2]
-on_game_timer = 86400 | ph_idle@wait_actor
-
-[ph_idle@spawn_night_monster_3]
-on_info = {~10} %=create_squad(simulation_dog_5_7_night:ds_deb1)% ph_idle@reset_3, {~10} %=create_squad(simulation_flesh_night:ds_deb1)% ph_idle@reset_3, {~10} %=create_squad(simulation_mix_boar_flesh_night:ds_deb1)% ph_idle@reset_3, {~10} %=create_squad(simulation_karlik_night:ds_deb1)% ph_idle@reset_3, ph_idle@wait_reset
-
-[ph_idle@spawn_dark_monster_3]
-on_info = {~10} %=create_squad(simulation_psy_dog_night:ds_deb1)% ph_idle@reset_3, {~10} %=create_squad(simulation_psysucker_white_night:ds_deb1)% ph_idle@reset_3, {~10} %=create_squad(simulation_bloodsucker_night:ds_deb1)% ph_idle@reset_3, {~10} %=create_squad(simulation_karlik_night:ds_deb1)% ph_idle@reset_3, ph_idle@wait_reset
-
-[ph_idle@reset_3]
-on_game_timer = 86400 | ph_idle@wait_actor
-
-[ph_idle@wait_reset]
-on_game_timer = 580 | ph_idle@wait_actor
-
-[collide]
-ignore_static
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/darkscape/ds_endless_night_spawn_logic_3.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/darkscape/ds_endless_night_spawn_logic_3.ltx
deleted file mode 100644
index 5ff88a7e..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/darkscape/ds_endless_night_spawn_logic_3.ltx
+++ /dev/null
@@ -1,40 +0,0 @@
-[logic]
-active = ph_idle@wait_actor
-
-[ph_idle@wait_actor]
-on_info = {=actor_near_smart(ds_kem1) =is_night} ph_idle@spawn_night_monster_1, {=actor_near_smart(ds_kem1) =is_dark_night} ph_idle@spawn_dark_monster_1
-on_info2 = {=actor_near_smart(ds_kem3) =is_night} ph_idle@spawn_night_monster_2, {=actor_near_smart(ds_kem3) =is_dark_night} ph_idle@spawn_dark_monster_2
-on_info3 = {=actor_near_smart(ds_ptr3) =is_night} ph_idle@spawn_night_monster_3, {=actor_near_smart(ds_ptr3) =is_dark_night} ph_idle@spawn_dark_monster_3
-
-[ph_idle@spawn_night_monster_1]
-on_info = {~10} %=create_squad(simulation_tushkano_night:ds_kem1)% ph_idle@reset, {~10} %=create_squad(simulation_dog_night:ds_kem1)% ph_idle@reset, {~10} %=create_squad(simulation_pseudodog_night:ds_kem1)% ph_idle@reset, {~10} %=create_squad(simulation_flesh_night:ds_kem1)% ph_idle@reset, ph_idle@wait_reset
-
-[ph_idle@spawn_dark_monster_1]
-on_info = {~10} %=create_squad(simulation_bloodsucker_green_night:ds_kem1)% ph_idle@reset, {~10} %=create_squad(simulation_fracture_night:ds_kem1)% ph_idle@reset, {~10} %=create_squad(simulation_snork_night:ds_kem1)% ph_idle@reset, {~10} %=create_squad(simulation_lurker_blue_night:ds_kem1)% ph_idle@reset, ph_idle@wait_reset
-
-[ph_idle@reset]
-on_game_timer = 86400 | ph_idle@wait_actor
-
-[ph_idle@spawn_night_monster_2]
-on_info = {~10} %=create_squad(simulation_tushkano_night:ds_kem3)% ph_idle@reset_2, {~10} %=create_squad(simulation_pseudodog_night:ds_kem3)% ph_idle@reset_2, {~10} %=create_squad(simulation_zombie_blind_night:ds_kem3)% ph_idle@reset_2, {~10} %=create_squad(simulation_psy_dog_night:ds_kem3)% ph_idle@reset_2, ph_idle@wait_reset
-
-[ph_idle@spawn_dark_monster_2]
-on_info = {~10} %=create_squad(simulation_psysucker_white_night:ds_kem3)% ph_idle@reset_2, {~10} %=create_squad(simulation_bloodsucker_green_night:ds_kem3)% ph_idle@reset_2, {~10} %=create_squad(simulation_zombie_blind_3zomb_civ_night:ds_kem3)% ph_idle@reset_2, {~10} %=create_squad(simulation_pseudodog_night:ds_kem3)% ph_idle@reset_2, ph_idle@wait_reset
-
-[ph_idle@reset_2]
-on_game_timer = 86400 | ph_idle@wait_actor
-
-[ph_idle@spawn_night_monster_3]
-on_info = {~10} %=create_squad(simulation_tushkano_night:ds_ptr3)% ph_idle@reset_3, {~10} %=create_squad(simulation_mix_dogs_night:ds_ptr3)% ph_idle@reset_3, {~10} %=create_squad(simulation_boar_night:ds_ptr3)% ph_idle@reset_3, {~10} %=create_squad(simulation_cat_3_5_night:ds_ptr3)% ph_idle@reset_3, ph_idle@wait_reset
-
-[ph_idle@spawn_dark_monster_3]
-on_info = {~10} %=create_squad(simulation_bloodsucker_green_night:ds_ptr3)% ph_idle@reset_3, {~10} %=create_squad(simulation_lurker_blue_night:ds_ptr3)% ph_idle@reset_3, {~10} %=create_squad(simulation_boar_night:ds_ptr3)% ph_idle@reset_3, {~10} %=create_squad(simulation_psy_dog_night:ds_ptr3)% ph_idle@reset_3, ph_idle@wait_reset
-
-[ph_idle@reset_3]
-on_game_timer = 86400 | ph_idle@wait_actor
-
-[ph_idle@wait_reset]
-on_game_timer = 580 | ph_idle@wait_actor
-
-[collide]
-ignore_static
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/darkscape/ds_kem2_smart_logic.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/darkscape/ds_kem2_smart_logic.ltx
deleted file mode 100644
index 396d13e2..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/darkscape/ds_kem2_smart_logic.ltx
+++ /dev/null
@@ -1,79 +0,0 @@
-[logic@ds_kem2_smart_terrain_guard_work_1]
-active = beh@ds_kem2_smart_terrain_guard_work_1
-suitable = {!surge_started} true
-prior = 45
-
-[logic@ds_kem2_smart_terrain_guard_work_2]
-active = beh@ds_kem2_smart_terrain_guard_work_2
-suitable = {!surge_started} true
-prior = 45
-
-[logic@ds_kem2_smart_terrain_camp_work_1]
-active = beh@ds_kem2_smart_terrain_camp_work_1
-suitable = {!surge_started} true
-prior = 45
-
-[logic@ds_kem2_smart_terrain_camp_work_2]
-active = beh@ds_kem2_smart_terrain_camp_work_2
-suitable = {!surge_started} true
-prior = 45
-
-[logic@ds_kem2_smart_terrain_camp_work_3]
-active = beh@ds_kem2_smart_terrain_camp_work_3
-suitable = {!surge_started} true
-prior = 45
-
-[logic@ds_kem2_smart_terrain_camp_work_4]
-active = beh@ds_kem2_smart_terrain_camp_work_1
-suitable = {!surge_started} true
-prior = 45
-
-[logic@ds_kem2_smart_terrain_camp_work_5]
-active = beh@ds_kem2_smart_terrain_camp_work_1
-suitable = {!surge_started} true
-prior = 45
-
-[beh@general_work]
-behavior_state = beh_move
-target = waypoint
-walk_dist = 100
-jog_dist = 220
-walk_anim = patrol
-jog_anim = assault
-run_anim = assault
-delay_anim = guard
-combat_ignore_cond = false
-combat_ignore_keep_when_attacked = false
-turn_on_campfire = true
-gather_items_enabled = false
-help_wounded_enabled = true
-corpse_detection_enabled = true
-invulnerable = {!actor_true_enemy} true, false
-
-[beh@ds_kem2_smart_terrain_guard_work_1]:beh@general_work
-pt1 = 88860000, guard | pos: 423.52526855469, -2.0671410560608, -353.05349731445 look: 422.71884155273, -2.0660417079926, -353.03463745117
-path_end = loop
-
-[beh@ds_kem2_smart_terrain_guard_work_2]:beh@general_work
-pt1 = 88860000, guard | pos: 423.52526855469, -2.0671410560608, -353.05349731445 look: 422.71884155273, -2.0660417079926, -353.03463745117
-path_end = loop
-
-[beh@ds_kem2_smart_terrain_camp_work_1]:beh@general_work
-pt1 = 88860000, sit_ass | pos: 429.58721923828, -1.8103351593018, -359.88464355469 look: 429.60424804688, -1.8103456497192, -360.65832519531
-path_end = loop
-
-[beh@ds_kem2_smart_terrain_camp_work_2]:beh@general_work
-pt1 = 88860000, sit_ass | pos: 431.06314086914, -1.8100671768188, -365.35357666016 look: 430.01754760742, -1.810188293457, -365.34133911133
-path_end = loop
-
-[beh@ds_kem2_smart_terrain_camp_work_3]:beh@general_work
-pt1 = 88860000, sit_ass | pos: 431.12603759766, -1.810115814209, -367.07574462891 look: 429.98156738281, -1.810191988945, -367.05285644531
-path_end = loop
-
-[beh@ds_kem2_smart_terrain_camp_work_4]:beh@general_work
-pt1 = 88860000, sit_ass | pos: 429.7717590332, -1.8102136850357, -371.54592895508 look: 429.18688964844, -1.7809131145477, -370.4697265625
-path_end = loop
-
-[beh@ds_kem2_smart_terrain_camp_work_5]:beh@general_work
-pt1 = 88860000, sit_ass | pos: 426.1203918457, -1.8139481544495, -361.08941650391 look: 427.00616455078, -1.8097674846649, -361.07632446289
-path_end = loop
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/darkscape/ds_kem2_squad_logic.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/darkscape/ds_kem2_squad_logic.ltx
deleted file mode 100644
index f8eb9942..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/darkscape/ds_kem2_squad_logic.ltx
+++ /dev/null
@@ -1,176 +0,0 @@
-[logic@ds_kem2_squad_1]
-active = walker@ds_kem2_squad_1
-suitable = {=target_squad_name(ds_kem2_military_mlr_2_squad)} true
-prior = 200
-
-[walker@ds_kem2_squad_1]:walker@generic
-path_walk = walker_1_walk
-path_look = walker_1_look
-on_info = {=surge_started} beh@ds_kem2_military_mlr_2_surge_work_1
-meet = meet
-danger = danger
-
-[logic@ds_kem2_squad_2]
-active = walker@ds_kem2_squad_2
-suitable = {=target_squad_name(ds_kem2_military_mlr_2_squad)} true
-prior = 200
-
-[walker@ds_kem2_squad_2]:walker@generic
-path_walk = walker_2_walk
-path_look = walker_2_look
-on_info = {=surge_started} beh@ds_kem2_military_mlr_2_surge_work_2
-meet = meet
-danger = danger
-
-[logic@ds_kem2_squad_3]
-active = walker@ds_kem2_squad_3
-suitable = {=target_squad_name(ds_kem2_military_mlr_2_squad)} true
-prior = 200
-
-[walker@ds_kem2_squad_3]:walker@generic
-path_walk = walker_3_walk
-path_look = walker_3_look
-on_info = {=surge_started} beh@ds_kem2_military_mlr_2_surge_work_3
-meet = meet
-danger = danger
-
-[logic@ds_kem2_squad_4]
-active = walker@ds_kem2_squad_4
-suitable = {=target_squad_name(ds_kem2_military_mlr_2_squad)} true
-prior = 200
-
-[walker@ds_kem2_squad_4]:walker@generic
-path_walk = patrol_3_walk
-path_look = patrol_3_look
-on_info = {=surge_started} beh@ds_kem2_military_mlr_2_surge_work_4
-meet = meet
-danger = danger
-
-[logic@ds_kem2_sniper_1]
-active = beh@ds_kem2_military_mlr_2_sniper_1
-suitable = {=target_squad_name(ds_kem2_military_mlr_2_sniper)} true
-prior = 200
-
-[logic@ds_kem2_sniper_2]
-active = beh@ds_kem2_military_mlr_2_sniper_2
-suitable = {=target_squad_name(ds_kem2_military_mlr_2_sniper)} true
-prior = 200
-
-[walker@generic]
-gather_items_enabled = false
-help_wounded_enabled = true
-corpse_detection_enabled = true
-turn_on_campfire = true
-combat_ignore_cond = {=check_enemy_name(sim_default) =fighting_dist_ge(50)} true, false
-combat_ignore_keep_when_attacked = false
-meet = meet
-danger = danger
-
-[beh@general_guard]
-behavior_state = beh_move
-target = waypoint
-walk_dist = 100
-jog_dist = 220
-walk_anim = patrol
-jog_anim = assault
-run_anim = assault
-delay_anim = guard
-combat_ignore_cond = false
-combat_ignore_keep_when_attacked = false
-turn_on_campfire = true
-gather_items_enabled = false
-help_wounded_enabled = true
-corpse_detection_enabled = true
-invulnerable = {!actor_true_enemy} true, false
-meet = meet
-danger = danger
-
-[beh@general_surge]
-behavior_state = beh_move
-target = waypoint
-walk_dist = 100
-jog_dist = 220
-walk_anim = rush
-jog_anim = rush
-run_anim = rush
-combat_ignore_cond = {=check_enemy_name(sim_default) =fighting_dist_ge(50)} true, false
-combat_ignore_keep_when_attacked = false
-gather_items_enabled = false
-help_wounded_enabled = false
-corpse_detection_enabled = false
-meet = meet
-danger = danger
-
-[meet]
-close_anim = nil
-close_victim = nil
-far_anim = nil
-far_victim = nil
-close_distance = 0
-far_distance = 0
-close_snd_distance = 3
-abuse = false
-use = {=actor_enemy} false, true
-allow_break = false
-meet_on_talking = true
-trade_enable = false
-
-[danger]
-danger_expiration_time = 90000
-danger_inertion_time_grenade = 90000
-danger_inertion_time_hit = 90000
-danger_inertion_time_sound = 90000
-danger_inertion_time_ricochet = 90000
-
-[beh@ds_kem2_military_mlr_2_squad_1]:beh@general_guard
-pt1 = 88860000, fold_arms | pos: look:
-path_end = loop
-on_info = {=surge_started} beh@ds_kem2_military_mlr_2_surge_work_1
-
-[beh@ds_kem2_military_mlr_2_squad_2]:beh@general_guard
-pt1 = 88860000, guard | pos: look:
-path_end = loop
-on_info = {=surge_started} beh@ds_kem2_military_mlr_2_surge_work_2
-
-[beh@ds_kem2_military_mlr_2_squad_3]:beh@general_guard
-pt1 = 88860000, guard | pos: look:
-on_info = {=surge_started} beh@ds_kem2_military_mlr_2_surge_work_3
-
-[beh@ds_kem2_military_mlr_2_squad_4]:beh@general_guard
-pt1 = 88860000, guard | pos: look:
-path_end = loop
-on_info = {=surge_started} beh@ds_kem2_military_mlr_2_surge_work_4
-
-[beh@ds_kem2_military_mlr_2_sniper_1]:beh@general_guard
-pt1 = 88860000, hide | pos: 425.82708862305, -1.4545923471451, -371.61181640625 look: 422.65588378906, -2.0685701370239, -371.75402832031
-path_end = loop
-on_info = {=surge_started} beh@ds_kem2_military_mlr_2_surge_work_5
-
-[beh@ds_kem2_military_mlr_2_sniper_2]:beh@general_guard
-pt1 = 88860000, guard | pos: 425.44036865234, -1.8094553947449, -366.69326782227 look: 422.88067626953, -2.0674715042114, -366.32406616211
-path_end = loop
-on_info = {=surge_started} beh@ds_kem2_military_mlr_2_surge_work_6
-
-[beh@ds_kem2_military_mlr_2_surge_work_1]:beh@general_surge
-pt1 = 15000, hide | pos: 426.69250488281, -1.8105762004852, -369.59625244141 look: 426.69250488281, -1.8105762004852, -369.59625244141
-on_info = {=surge_complete} beh@ds_kem2_military_mlr_2_squad_1
-
-[beh@ds_kem2_military_mlr_2_surge_work_2]:beh@general_surge
-pt1 = 15000, caution | pos: 426.90667724609, -1.8104662895203, -366.4560546875 look: 426.90667724609, -1.8104662895203, -366.4560546875
-on_info = {=surge_complete} beh@ds_kem2_military_mlr_2_squad_2
-
-[beh@ds_kem2_military_mlr_2_surge_work_3]:beh@general_surge
-pt1 = 15000, hide | pos: 427.71258544922, -1.8130663633347, -361.57656860352 look: 427.71258544922, -1.8130663633347, -361.57656860352
-on_info = {=surge_complete} beh@ds_kem2_military_mlr_2_squad_3
-
-[beh@ds_kem2_military_mlr_2_surge_work_4]:beh@general_surge
-pt1 = 15000, caution | pos: 428.19927978516, -1.8103235960007, -371.45910644531 look: 428.19927978516, -1.8103235960007, -371.45910644531
-on_info = {=surge_complete} beh@ds_kem2_military_mlr_2_squad_4
-
-[beh@ds_kem2_military_mlr_2_surge_work_5]:beh@general_surge
-pt1 = 15000, hide | pos: 425.81708862305, -1.4545923471451, -371.61181640625 look: 422.65588378906, -2.0685701370239, -371.75402832031
-on_info = {=surge_complete} beh@ds_kem2_military_mlr_2_sniper_1
-
-[beh@ds_kem2_military_mlr_2_surge_work_6]:beh@general_surge
-pt1 = 15000, caution | pos: 425.44036865234, -1.8094553947449, -366.69326782227 look: 422.88067626953, -2.0674715042114, -366.32406616211
-on_info = {=surge_complete} beh@ds_kem2_military_mlr_2_sniper_2
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/darkscape/mod_dar_crow_spawner_redone.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/darkscape/mod_dar_crow_spawner_redone.ltx
deleted file mode 100644
index 92863c1d..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/darkscape/mod_dar_crow_spawner_redone.ltx
+++ /dev/null
@@ -1,21 +0,0 @@
-![logic]
-!active = sr_crow_spawner
-active = sr_idle@check_story
-
-[sr_idle@check_story]
-on_info = {-story_mode_disabled} sr_idle@check_actor, {+story_mode_disabled -yan_x16_complete_end} sr_idle@check_actor %+yan_kill_brain_done%
-
-[sr_idle@check_actor]
-on_info = {=actor_community(actor_monolith) -yan_x16_complete_end} sr_idle@check_helmet %+yan_kill_brain_done%, {=actor_community(actor_greh) -yan_x16_complete_end} sr_idle@check_helmet %+yan_kill_brain_done%, sr_idle@check_helmet
-
-[sr_idle@check_helmet]
-on_info = {=actor_has_item(good_psy_helmet)} sr_idle@check_spawner %+living_legend_psy_helmet%, {=actor_has_item(bad_psy_helmet)} sr_idle@check_spawner %+living_legend_psy_helmet%, sr_idle@check_spawner
-
-[sr_idle@check_spawner]
-on_info = sr_crow_spawner
-
-![sr_crow_spawner]
-max_crows_on_level = 5
-spawn_path = dar_crow_spawn_1, dar_crow_spawn_2, dar_crow_spawn_3, dar_crow_spawn_4, dar_crow_spawn_5
-
-
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/darkscape/smart/ds2_domik_st.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/darkscape/smart/ds2_domik_st.ltx
deleted file mode 100644
index 20503fe8..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/darkscape/smart/ds2_domik_st.ltx
+++ /dev/null
@@ -1,36 +0,0 @@
-[smart_terrain]
-squad_id = 1
-max_population = 1
-respawn_params = respawn@ds2_domik_st
-respawn_only_smart = false
-respawn_idle = 86400
-respawn_radius = 50
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = nil
-;def_restr = nil
-;safe_restr = nil
-;spawn_point = nil
-
-faction_controlled = stalker, csky, ecolog, dolg, killer, bandit, renegade, isg
-default_faction = stalker
-faction_respawn_num = {+lttz_hb_spawned_ds_isg_leader_squad -lttz_hb_removed_ds_isg_leader_squad} 0, 2
-
-;[respawn@ds2_domik_st] ;-- Type:
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-[exclusive]
-dasc_tech_mlr = darkscape\ds2_domik_st_smart_logic.ltx
-dasc_trade_mlr = darkscape\ds2_domik_st_smart_logic.ltx
-
-ds_domik_isg_leader = darkscape\ds_domik_isg_leader.ltx
-
-ds2_domik_st_camp_work_1 = darkscape\ds2_domik_st_smart_logic.ltx
-ds2_domik_st_camp_work_2 = darkscape\ds2_domik_st_smart_logic.ltx
-ds2_domik_st_camp_work_3 = darkscape\ds2_domik_st_smart_logic.ltx
-ds2_domik_st_camp_work_4 = darkscape\ds2_domik_st_smart_logic.ltx
-ds2_domik_st_camp_work_5 = darkscape\ds2_domik_st_smart_logic.ltx
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/darkscape/smart/ds2_lager_st.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/darkscape/smart/ds2_lager_st.ltx
deleted file mode 100644
index 870850ab..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/darkscape/smart/ds2_lager_st.ltx
+++ /dev/null
@@ -1,48 +0,0 @@
-[smart_terrain]
-squad_id = 15
-max_population = 2
-respawn_params = respawn@ds2_lager_st
-respawn_only_smart = false
-respawn_idle = 86400
-respawn_radius = 50
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = nil
-;def_restr = nil
-;safe_restr = nil
-;spawn_point = nil
-
-[respawn@ds2_lager_st] ;-- Type: faction { bandit, killer, renegade, ISG } = hideout
-spawn_bandit@novice
-spawn_killer@advanced
-spawn_renegade@advanced
-spawn_isg_special
-
-
-[spawn_bandit@novice]
-spawn_squads = bandit_sim_squad_novice, bandit_sim_squad_novice, bandit_sim_squad_advanced
-spawn_num = {!squad_name_exist(ds_ds2_lager_st_isg_squad)} 1, 0
-
-[spawn_killer@advanced]
-spawn_squads = merc_sim_squad_advanced, merc_sim_squad_novice, merc_sim_squad_novice
-spawn_num = {!squad_name_exist(ds_ds2_lager_st_isg_squad)} 1, 0
-
-[spawn_renegade@advanced]
-spawn_squads = renegade_sim_squad_advanced, renegade_sim_squad_novice, renegade_sim_squad_novice
-spawn_num = {!squad_name_exist(ds_ds2_lager_st_isg_squad)} 1, 0
-
-[spawn_isg_special]
-spawn_squads = isg_sim_squad_novice, isg_sim_squad_novice, isg_sim_squad_advanced
-spawn_num = {!squad_name_exist(ds_ds2_lager_st_isg_squad) +isg_entered_the_zone} 1, 0
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-[exclusive]
-ds2_lager_st_camp_work_1 = darkscape\ds2_lager_st_smart_logic.ltx
-ds2_lager_st_camp_work_2 = darkscape\ds2_lager_st_smart_logic.ltx
-ds2_lager_st_camp_work_3 = darkscape\ds2_lager_st_smart_logic.ltx
-ds2_lager_st_camp_work_4 = darkscape\ds2_lager_st_smart_logic.ltx
-ds2_lager_st_camp_work_5 = darkscape\ds2_lager_st_smart_logic.ltx
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/darkscape/smart/ds2_st_dogs.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/darkscape/smart/ds2_st_dogs.ltx
deleted file mode 100644
index 00385be7..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/darkscape/smart/ds2_st_dogs.ltx
+++ /dev/null
@@ -1,33 +0,0 @@
-[smart_terrain]
-squad_id = 16
-max_population = 2
-respawn_params = respawn@ds_st_dogs
-respawn_only_smart = false
-respawn_idle = 86400
-respawn_radius = 50
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = nil
-;def_restr = nil
-;safe_restr = nil
-;spawn_point = nil
-
-[respawn@ds_st_dogs] ;-- Type:
-spawn_all_normal
-spawn_mutants_rare
-
-
-[spawn_all_normal] ;-- Normal mutants - Rates of groups: ( 1 cat + 4 fleshes/boars )
-spawn_squads = simulation_cat_3_5, simulation_boar_3_5, simulation_mix_boar_flesh, simulation_flesh, simulation_boar
-spawn_num = 2
-
-[spawn_mutants_rare] ;-- Rare mutants - Rates of groups: ( 1 karlik )
-spawn_squads = simulation_karlik
-spawn_num = {~10} 1, 0
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-;[exclusive]
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/darkscape/smart/ds2_st_hoofs.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/darkscape/smart/ds2_st_hoofs.ltx
deleted file mode 100644
index 72bec9e9..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/darkscape/smart/ds2_st_hoofs.ltx
+++ /dev/null
@@ -1,34 +0,0 @@
-[smart_terrain]
-squad_id = 17
-max_population = 1
-respawn_params = respawn@ds2_st_hoofs
-respawn_only_smart = false
-respawn_idle = 86400
-respawn_radius = 50
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = nil
-;def_restr = nil
-;safe_restr = nil
-;spawn_point = nil
-
-[respawn@ds2_st_hoofs] ;-- Type: c_1_1 + c_1_2 edited
-spawn_all_weak_c_1_1
-spawn_all_normal_c_1_2
-
-
-[spawn_all_weak_c_1_1] ;-- Weak mutants - Rates of groups: ( 2 tushkano + 2 dogs + 1 cats + 1 flesh )
-spawn_squads = simulation_tushkano, simulation_tushkano, simulation_dog, simulation_mix_dogs, simulation_cat, simulation_flesh
-spawn_num = {!actor_week_in_zone(1)} 1, {=actor_week_in_zone(1)} 0
-
-[spawn_all_normal_c_1_2];-- Normal mutants - Rates of groups: ( 2 dogs + 1 cats + 3 fleshes/boars )
-spawn_squads = simulation_dog_5_7, simulation_mix_dogs, simulation_cat_3_5, simulation_mix_boar_flesh, simulation_flesh, simulation_boar
-spawn_num = {=actor_week_in_zone(1)} 1, {!actor_week_in_zone(1)} 0
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-;[exclusive]
-
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/darkscape/smart/ds_boars_nest.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/darkscape/smart/ds_boars_nest.ltx
deleted file mode 100644
index a8d1e31b..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/darkscape/smart/ds_boars_nest.ltx
+++ /dev/null
@@ -1,22 +0,0 @@
-[smart_terrain] ;-- Disabled spawn
-squad_id = 2
-max_population = 1
-;respawn_params = respawn@ds_boars_nest
-;respawn_only_smart = false
-;respawn_idle = 86400
-;respawn_radius = 50
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = nil
-;def_restr = nil
-;safe_restr = nil
-;spawn_point = nil
-
-;[respawn@ds_boars_nest] ;-- Type:
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-;[exclusive]
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/darkscape/smart/ds_deb1.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/darkscape/smart/ds_deb1.ltx
deleted file mode 100644
index f18f4707..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/darkscape/smart/ds_deb1.ltx
+++ /dev/null
@@ -1,33 +0,0 @@
-[smart_terrain]
-squad_id = 3
-max_population = 1
-respawn_params = respawn@ds_deb1
-respawn_only_smart = false
-respawn_idle = 86400
-respawn_radius = 50
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = nil
-;def_restr = nil
-;safe_restr = nil
-;spawn_point = nil
-
-[respawn@ds_deb1] ;-- Type: c_1_1 + c_1_2 edited
-spawn_all_weak_c_1_1
-spawn_all_normal_c_1_2
-
-
-[spawn_all_weak_c_1_1] ;-- Weak mutants - Rates of groups: ( 2 tushkano + 2 dogs + 1 cats + 1 flesh )
-spawn_squads = simulation_tushkano, simulation_tushkano, simulation_dog, simulation_mix_dogs, simulation_cat, simulation_flesh
-spawn_num = {!actor_week_in_zone(1)} 1, {=actor_week_in_zone(1)} 0
-
-[spawn_all_normal_c_1_2];-- Normal mutants - Rates of groups: ( 2 dogs + 1 cats + 3 fleshes/boars )
-spawn_squads = simulation_dog_5_7, simulation_mix_dogs, simulation_cat_3_5, simulation_mix_boar_flesh, simulation_flesh, simulation_boar
-spawn_num = {=actor_week_in_zone(1)} 1, {!actor_week_in_zone(1)} 0
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-;[exclusive]
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/darkscape/smart/ds_grverfer2.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/darkscape/smart/ds_grverfer2.ltx
deleted file mode 100644
index 3d9bb03c..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/darkscape/smart/ds_grverfer2.ltx
+++ /dev/null
@@ -1,24 +0,0 @@
-[smart_terrain] ;-- Disabled spawn
-squad_id = 5
-max_population = 1
-;respawn_params = respawn@ds_grverfer2
-;respawn_only_smart = false
-;respawn_idle = 86400
-;respawn_radius = 50
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = nil
-;def_restr = nil
-;safe_restr = nil
-;spawn_point = nil
-
-;[respawn@ds_grverfer2] ;-- Type:
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-;[exclusive]
-
-
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/darkscape/smart/ds_kem1.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/darkscape/smart/ds_kem1.ltx
deleted file mode 100644
index 66f125ec..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/darkscape/smart/ds_kem1.ltx
+++ /dev/null
@@ -1,33 +0,0 @@
-[smart_terrain]
-squad_id = 6
-max_population = 1
-respawn_params = respawn@ds_kem1
-respawn_only_smart = false
-respawn_idle = 172800
-respawn_radius = 50
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = nil
-;def_restr = nil
-;safe_restr = nil
-;spawn_point = nil
-
-[respawn@ds_kem1] ;-- Type:
-spawn_all_normal
-spawn_lurker
-
-
-[spawn_all_normal] ;-- Normal mutants - Rates of groups: ( 1 tushkano + 2 dogs + 3 fleshes/boars )
-spawn_squads = simulation_tushkano, simulation_dog, simulation_mix_dogs, simulation_mix_boar_flesh, simulation_flesh, simulation_boar
-spawn_num = 1
-
-[spawn_lurker] ;-- Hard mutants - Rates of groups: ( 2 lurker )
-spawn_squads = simulation_lurker, simulation_lurker_brown
-spawn_num = {~50} 1, 0
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-;[exclusive]
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/darkscape/smart/ds_kem2.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/darkscape/smart/ds_kem2.ltx
deleted file mode 100644
index ec4ee702..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/darkscape/smart/ds_kem2.ltx
+++ /dev/null
@@ -1,50 +0,0 @@
-[smart_terrain]
-squad_id = 7
-max_population = 1
-respawn_params = respawn@ds_kem2
-respawn_only_smart = false
-respawn_idle = 259200
-respawn_radius = 50
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = nil
-;def_restr = nil
-;safe_restr = nil
-;spawn_point = nil
-
-
-[respawn@ds_kem2] ;-- Type: faction {army} = checkpoint
-spawn_army_special
-;spawn_army_special_2
-
-[spawn_army_special]
-spawn_squads = ds_kem2_military_mlr_2_squad
-spawn_num = {!squad_name_exist(ds_kem2_military_mlr_2_squad)} 1, 0
-
-;[spawn_army_special_2]
-;spawn_squads = ds_kem2_military_mlr_2_sniper
-;spawn_num = {!squad_name_exist(ds_kem2_military_mlr_2_sniper)} 1, 0
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-[exclusive]
-ds_kem2_squad_1 = darkscape\ds_kem2_squad_logic.ltx
-ds_kem2_squad_2 = darkscape\ds_kem2_squad_logic.ltx
-ds_kem2_squad_3 = darkscape\ds_kem2_squad_logic.ltx
-;ds_kem2_squad_4 = darkscape\ds_kem2_squad_logic.ltx
-
-ds_kem2_sniper_1 = darkscape\ds_kem2_squad_logic.ltx
-ds_kem2_sniper_2 = darkscape\ds_kem2_squad_logic.ltx
-
-;ds_kem2_smart_terrain_guard_work_1 = darkscape\ds_kem2_smart_logic.ltx
-;ds_kem2_smart_terrain_guard_work_2 = darkscape\ds_kem2_smart_logic.ltx
-
-ds_kem2_smart_terrain_camp_work_1 = darkscape\ds_kem2_smart_logic.ltx
-ds_kem2_smart_terrain_camp_work_2 = darkscape\ds_kem2_smart_logic.ltx
-ds_kem2_smart_terrain_camp_work_3 = darkscape\ds_kem2_smart_logic.ltx
-ds_kem2_smart_terrain_camp_work_4 = darkscape\ds_kem2_smart_logic.ltx
-ds_kem2_smart_terrain_camp_work_5 = darkscape\ds_kem2_smart_logic.ltx
-
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/darkscape/smart/ds_kem3.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/darkscape/smart/ds_kem3.ltx
deleted file mode 100644
index c6d297e0..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/darkscape/smart/ds_kem3.ltx
+++ /dev/null
@@ -1,33 +0,0 @@
-[smart_terrain]
-squad_id = 8
-max_population = 2
-respawn_params = respawn@ds_kem3
-respawn_only_smart = false
-respawn_idle = 345600
-respawn_radius = 50
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = nil
-;def_restr = nil
-;safe_restr = nil
-;spawn_point = nil
-
-[respawn@ds_kem3] ;-- Type:
-spawn_heli_strong
-spawn_heli_weak
-
-
-[spawn_heli_strong]
-spawn_helicopter = simulation_helicopter_strong
-spawn_num = {!down_to_earth_functor !heli_exist_on_level} 1, 0
-
-[spawn_heli_weak]
-spawn_helicopter = simulation_helicopter_weak
-spawn_num = {=down_to_earth_functor !heli_exist_on_level} 1, 0
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-;[exclusive]
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/darkscape/smart/ds_ptr.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/darkscape/smart/ds_ptr.ltx
deleted file mode 100644
index 8e3f1f32..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/darkscape/smart/ds_ptr.ltx
+++ /dev/null
@@ -1,28 +0,0 @@
-[smart_terrain]
-squad_id = 10
-max_population = 2
-respawn_params = respawn@ds_ptr
-respawn_idle = 86400
-respawn_radius = 50
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = nil
-;def_restr = nil
-;safe_restr = nil
-;spawn_point = nil
-
-faction_controlled = killer, bandit, renegade, army
-default_faction = bandit
-faction_respawn_num = 1
-
-;[respawn@ds_ptr] ;-- Type:
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-;[exclusive]
-
-
-
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/darkscape/smart/ds_ptr2.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/darkscape/smart/ds_ptr2.ltx
deleted file mode 100644
index d17ced2c..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/darkscape/smart/ds_ptr2.ltx
+++ /dev/null
@@ -1,33 +0,0 @@
-[smart_terrain]
-squad_id = 11
-max_population = 2
-respawn_params = respawn@ds_ptr2
-respawn_only_smart = false
-respawn_idle = 259200
-respawn_radius = 50
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = nil
-;def_restr = nil
-;safe_restr = nil
-;spawn_point = nil
-
-[respawn@ds_ptr2] ;-- Type:
-spawn_predatory_c_2_1
-spawn_predatory_c_2_2
-
-
-[spawn_predatory_c_2_1] ;-- Normal\hard mutants - Rates of groups: ( 1 lurker + 1 pseudodog + 1 dogs )
-spawn_squads = simulation_pseudodog, simulation_mix_dogs, simulation_lurker, simulation_mix_dogs
-spawn_num = {!actor_week_in_zone(1)} 1, {=actor_week_in_zone(1)} 0
-
-[spawn_predatory_c_2_2] ;-- Hard mutants - Rates of groups: ( 3 lurker + 1 pseudodog + 1 dogs )
-spawn_squads = simulation_lurker_blue, simulation_lurker_black, simulation_lurker_1_2, simulation_pseudodog, simulation_mix_dogs
-spawn_num = {=actor_week_in_zone(1)} 1, {!actor_week_in_zone(1)} 0
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-;[exclusive]
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/darkscape/smart/ds_ptr3.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/darkscape/smart/ds_ptr3.ltx
deleted file mode 100644
index a968856a..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/darkscape/smart/ds_ptr3.ltx
+++ /dev/null
@@ -1,29 +0,0 @@
-[smart_terrain]
-squad_id = 12
-max_population = 2
-respawn_params = respawn@ds_ptr3
-respawn_only_smart = false
-respawn_idle = 172800
-respawn_radius = 50
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = nil
-;def_restr = nil
-;safe_restr = nil
-;spawn_point = nil
-
-[respawn@ds_ptr3] ;-- Type:
-spawn_lurker
-
-
-[spawn_lurker] ;-- Hard mutants - Rates of groups: ( 2 lurker )
-spawn_squads = simulation_lurker, simulation_lurker_blue
-spawn_num = 1
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-;[exclusive]
-
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/darkscape/smart/ds_ptr4.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/darkscape/smart/ds_ptr4.ltx
deleted file mode 100644
index b3053cf8..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/darkscape/smart/ds_ptr4.ltx
+++ /dev/null
@@ -1,43 +0,0 @@
-[smart_terrain]
-squad_id = 13
-max_population = 2
-respawn_params = respawn@ds_ptr4
-respawn_only_smart = true
-respawn_idle = 259200
-respawn_radius = 50
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = nil
-;def_restr = nil
-;safe_restr = nil
-;spawn_point = nil
-
-[respawn@ds_ptr4] ;-- Type: random stalker spawn
-spawn_army_squad
-spawn_bandit_squad
-spawn_killer_squad
-spawn_renegade_squad
-
-
-[spawn_army_squad]
-spawn_squads = ds_ptr4_army_mlr_2_squad
-spawn_num = {!squad_name_exist(ds_ptr4_army_mlr_2_squad) !squad_name_exist(ds_ptr4_bandit_mlr_2_squad) !squad_name_exist(ds_ptr4_killer_mlr_2_squad) !squad_name_exist(ds_ptr4_renegade_mlr_2_squad) =actor_week_in_zone(1)} 1, 0
-
-[spawn_bandit_squad]
-spawn_squads = ds_ptr4_bandit_mlr_2_squad
-spawn_num = {!squad_name_exist(ds_ptr4_army_mlr_2_squad) !squad_name_exist(ds_ptr4_bandit_mlr_2_squad) !squad_name_exist(ds_ptr4_killer_mlr_2_squad) !squad_name_exist(ds_ptr4_renegade_mlr_2_squad)} 1, 0
-
-[spawn_killer_squad]
-spawn_squads = ds_ptr4_killer_mlr_2_squad
-spawn_num = {!squad_name_exist(ds_ptr4_army_mlr_2_squad) !squad_name_exist(ds_ptr4_bandit_mlr_2_squad) !squad_name_exist(ds_ptr4_killer_mlr_2_squad) !squad_name_exist(ds_ptr4_renegade_mlr_2_squad) =actor_week_in_zone(2)} 1, 0
-
-[spawn_renegade_squad]
-spawn_squads = ds_ptr4_renegade_mlr_2_squad
-spawn_num = {!squad_name_exist(ds_ptr4_army_mlr_2_squad) !squad_name_exist(ds_ptr4_bandit_mlr_2_squad) !squad_name_exist(ds_ptr4_killer_mlr_2_squad) !squad_name_exist(ds_ptr4_renegade_mlr_2_squad)} 1, 0
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-;[exclusive]
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/darkvalley/mod_val_crow_spawner_redone.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/darkvalley/mod_val_crow_spawner_redone.ltx
deleted file mode 100644
index b3e5aa56..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/darkvalley/mod_val_crow_spawner_redone.ltx
+++ /dev/null
@@ -1,19 +0,0 @@
-![logic]
-!active = sr_crow_spawner
-active = sr_idle@check_story
-
-[sr_idle@check_story]
-on_info = {-story_mode_disabled} sr_idle@check_actor, {+story_mode_disabled -yan_x16_complete_end} sr_idle@check_actor %+yan_kill_brain_done%
-
-[sr_idle@check_actor]
-on_info = {=actor_community(actor_monolith) -yan_x16_complete_end} sr_idle@check_helmet %+yan_kill_brain_done%, {=actor_community(actor_greh) -yan_x16_complete_end} sr_idle@check_helmet %+yan_kill_brain_done%, sr_idle@check_helmet
-
-[sr_idle@check_helmet]
-on_info = {=actor_has_item(good_psy_helmet)} sr_idle@check_spawner %+living_legend_psy_helmet%, {=actor_has_item(bad_psy_helmet)} sr_idle@check_spawner %+living_legend_psy_helmet%, sr_idle@check_spawner
-
-[sr_idle@check_spawner]
-on_info = sr_crow_spawner
-
-![sr_crow_spawner]
-max_crows_on_level = 4
-spawn_path = val_crow_spawn_1, val_crow_spawn_2, val_crow_spawn_3, val_crow_spawn_4, val_crow_spawn_5
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/darkvalley/mod_val_smart_terrain_7_3_radio_redone.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/darkvalley/mod_val_smart_terrain_7_3_radio_redone.ltx
deleted file mode 100644
index 058969f2..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/darkvalley/mod_val_smart_terrain_7_3_radio_redone.ltx
+++ /dev/null
@@ -1,2 +0,0 @@
-![ph_sound]
-volume = {=surge_started}0, 1
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/darkvalley/mod_val_smart_terrain_7_3_smart_logic_redone.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/darkvalley/mod_val_smart_terrain_7_3_smart_logic_redone.ltx
deleted file mode 100644
index 77675b64..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/darkvalley/mod_val_smart_terrain_7_3_smart_logic_redone.ltx
+++ /dev/null
@@ -1,70 +0,0 @@
-[logic@val_smart_terrain_7_3_bandit_barman]
-suitable = {=check_npc_name(sim_default_bandit_barman)} true, {=check_npc_barman} true
-active = beh@val_smart_terrain_7_3_beh_barman_work
-prior = 200
-can_select_weapon = true
-dont_keep_items = true
-level_spot = barman
-trade = items\trade\trade_generic_barman.ltx
-
-[beh@general_barman]
-behavior_state = beh_move
-target = waypoint
-walk_dist = 100
-jog_dist = 220
-reach_distance = 10
-wait_anim = guard
-walk_anim = patrol
-jog_anim = assault
-run_anim = assault
-delay_anim = guard
-combat_ignore_cond = false
-combat_ignore_keep_when_attacked = false
-gather_items_enabled = false
-help_wounded_enabled = true
-corpse_detection_enabled = false
-invulnerable = {!actor_true_enemy} true, false
-meet = meet@barman
-
-[beh@general_surge]
-behavior_state = beh_move
-target = waypoint
-walk_dist = 100
-jog_dist = 220
-walk_anim = rush
-jog_anim = rush
-run_anim = rush
-gather_items_enabled = false
-help_wounded_enabled = false
-corpse_detection_enabled = false
-invulnerable = {!actor_true_enemy} true, false
-
-[meet@barman]
-close_anim = nil
-close_victim = nil
-far_anim = nil
-far_victim = nil
-close_distance = 0
-far_distance = 0
-close_snd_distance = 3
-abuse = false
-use = {=actor_enemy} false, true
-allow_break = false
-meet_on_talking = false
-trade_enable = false
-
-[beh@val_smart_terrain_7_3_beh_barman_work]:beh@general_barman
-pt1 = 88860000, fold_arms | pos: 38.53352355957, 0.03549325466156, 41.456050872803 look: 38.337184906006, 0.029632717370987, 40.466979980469
-path_end = loop
-on_info = {=surge_started} beh@val_smart_terrain_7_3_beh_barman_surge_work
-on_info2 = {=is_night} beh@val_smart_terrain_7_3_beh_barman_sleeper_work
-
-[beh@val_smart_terrain_7_3_beh_barman_surge_work]:beh@general_surge
-pt1 = 88860000, smoking_stand | pos: 15.318681716919, 0.086453795433044, 32.67654800415 look: 16.157444000244, 0.086408019065857, 32.87963104248
-path_end = loop
-on_info = {=surge_complete} beh@val_smart_terrain_7_3_beh_barman_work
-
-[beh@val_smart_terrain_7_3_beh_barman_sleeper_work]:beh@general_barman
-pt1 = 88860000, drunk_sit_ass | pos: 17.960680007935, 0.16824585199356, 26.692844390869 look: 18.187705993652, 0.077889263629913, 27.502815246582
-path_end = loop
-on_info = {!is_night} beh@val_smart_terrain_7_3_beh_barman_work
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/darkvalley/mod_val_smart_terrain_7_5_bandit_boss_sultan_redone.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/darkvalley/mod_val_smart_terrain_7_5_bandit_boss_sultan_redone.ltx
deleted file mode 100644
index 8a2e5e57..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/darkvalley/mod_val_smart_terrain_7_5_bandit_boss_sultan_redone.ltx
+++ /dev/null
@@ -1,50 +0,0 @@
-[logic@val_smart_terrain_7_5_bandit_bodyguard1]
-suitable = {=target_squad_name(guards_boss_bandit_in_main_base)} true
-active = beh@val_smart_terrain_7_5_bandit_bodyguard_work_1
-prior = 200
-
-[logic@val_smart_terrain_7_5_bandit_bodyguard2]
-suitable = {=target_squad_name(guards_boss_bandit_in_main_base)} true
-active = beh@val_smart_terrain_7_5_bandit_bodyguard_work_2
-prior = 200
-
-[logic@val_smart_terrain_7_5_bandit_bodyguard3]
-suitable = {=target_squad_name(guards_boss_bandit_in_main_base)} true
-active = beh@val_smart_terrain_7_5_bandit_bodyguard_work_3
-prior = 200
-
-![logic@zat_b7_bandit_boss_sultan]
-on_death = death_leader
-
-[death_leader]
-on_info = %+zat_b5_sultan_dead%
-
-[beh@general_guard]
-behavior_state = beh_move
-target = waypoint
-walk_dist = 100
-jog_dist = 220
-reach_distance = 10
-wait_anim = guard
-walk_anim = patrol
-jog_anim = assault
-run_anim = assault
-delay_anim = guard
-combat_ignore_cond = false
-combat_ignore_keep_when_attacked = false
-gather_items_enabled = false
-help_wounded_enabled = true
-corpse_detection_enabled = false
-invulnerable = {!actor_true_enemy} true, false
-
-[beh@val_smart_terrain_7_5_bandit_bodyguard_work_1]:beh@general_guard
-pt1 = 88860000, guard | pos: 28.893632888794, 4.5425424575806, -86.448852539062 look: 28.24019241333, 4.5424118041992, -85.476989746094
-path_end = loop
-
-[beh@val_smart_terrain_7_5_bandit_bodyguard_work_2]:beh@general_guard
-pt1 = 88860000, guard | pos: 12.844927787781, 4.5411801338196, -81.435401916504 look: 13.999754905701, 4.5381903648376, -81.606719970703
-path_end = loop
-
-[beh@val_smart_terrain_7_5_bandit_bodyguard_work_3]:beh@general_guard
-pt1 = 88860000, guard | pos: 19.433670043945, 4.5424356460571, -89.39916229248 look: 19.44554901123, 4.5423579216003, -89.845153808594
-path_end = loop
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/darkvalley/smart/val_smart_terrain_1_2.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/darkvalley/smart/val_smart_terrain_1_2.ltx
deleted file mode 100644
index 95fcf012..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/darkvalley/smart/val_smart_terrain_1_2.ltx
+++ /dev/null
@@ -1,38 +0,0 @@
-[smart_terrain]
-squad_id = 1
-max_population = 2
-respawn_params = respawn@val_smart_terrain_1_2
-respawn_only_smart = false
-respawn_idle = 172800
-respawn_radius = 50
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = nil
-;def_restr = nil
-;safe_restr = nil
-;spawn_point = nil
-
-[respawn@val_smart_terrain_1_2]
-spawn_army@novice
-spawn_army@advanced
-
-
-[spawn_army@novice]
-spawn_squads = army_sim_squad_novice, army_sim_squad_novice, army_sim_squad_advanced
-spawn_num = {+dar_control_poltergeist_killed} 0, 1
-
-[spawn_army@advanced]
-spawn_squads = army_sim_squad_advanced, army_sim_squad_novice, army_sim_squad_novice
-spawn_num = {+dar_control_poltergeist_killed} 0, 1
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-;[exclusive]
-
-
-
-
-
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/darkvalley/smart/val_smart_terrain_3_0.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/darkvalley/smart/val_smart_terrain_3_0.ltx
deleted file mode 100644
index 4920e869..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/darkvalley/smart/val_smart_terrain_3_0.ltx
+++ /dev/null
@@ -1,33 +0,0 @@
-[smart_terrain]
-squad_id = 2
-max_population = 1
-respawn_params = respawn@val_smart_terrain_3_0
-respawn_only_smart = false
-respawn_idle = 86400
-respawn_radius = 50
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = nil
-;def_restr = nil
-;safe_restr = nil
-;spawn_point = nil
-
-[respawn@val_smart_terrain_3_0] ;-- Type: c_1_1 + c_1_2 edited
-spawn_all_weak_c_1_1
-spawn_all_normal_c_1_2
-
-
-[spawn_all_weak_c_1_1] ;-- Weak mutants - Rates of groups: ( 2 tushkano + 2 dogs + 1 cats + 1 flesh )
-spawn_squads = simulation_tushkano, simulation_tushkano, simulation_dog, simulation_mix_dogs, simulation_cat, simulation_flesh
-spawn_num = {!actor_week_in_zone(1)} 1, {=actor_week_in_zone(1)} 0
-
-[spawn_all_normal_c_1_2];-- Normal mutants - Rates of groups: ( 2 dogs + 1 cats + 3 fleshes/boars )
-spawn_squads = simulation_mix_dogs, simulation_mix_dogs, simulation_cat_3_5, simulation_mix_boar_flesh, simulation_flesh, simulation_boar
-spawn_num = {=actor_week_in_zone(1)} 1, {!actor_week_in_zone(1)} 0
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-;[exclusive]
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/darkvalley/smart/val_smart_terrain_4_0.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/darkvalley/smart/val_smart_terrain_4_0.ltx
deleted file mode 100644
index 85b58839..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/darkvalley/smart/val_smart_terrain_4_0.ltx
+++ /dev/null
@@ -1,31 +0,0 @@
-[smart_terrain]
-squad_id = 3
-max_population = 1
-respawn_params = respawn@val_smart_terrain_4_0
-respawn_only_smart = false
-respawn_idle = 86400
-respawn_radius = 50
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = nil
-;def_restr = nil
-;safe_restr = nil
-;spawn_point = nil
-
-faction_controlled = stalker, bandit, killer, dolg, renegade
-default_faction = stalker
-faction_respawn_num = 1
-
-;[respawn@val_smart_terrain_4_0] ;-- Type:
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-[exclusive]
-val_smart_terrain_4_0_camp_work_1 = darkvalley\val_smart_terrain_4_0_smart_logic.ltx
-val_smart_terrain_4_0_camp_work_2 = darkvalley\val_smart_terrain_4_0_smart_logic.ltx
-val_smart_terrain_4_0_camp_work_3 = darkvalley\val_smart_terrain_4_0_smart_logic.ltx
-val_smart_terrain_4_0_camp_work_4 = darkvalley\val_smart_terrain_4_0_smart_logic.ltx
-val_smart_terrain_4_0_camp_work_5 = darkvalley\val_smart_terrain_4_0_smart_logic.ltx
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/darkvalley/smart/val_smart_terrain_5_10.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/darkvalley/smart/val_smart_terrain_5_10.ltx
deleted file mode 100644
index a3046df8..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/darkvalley/smart/val_smart_terrain_5_10.ltx
+++ /dev/null
@@ -1,33 +0,0 @@
-[smart_terrain]
-squad_id = 4
-max_population = 1
-respawn_params = respawn@val_smart_terrain_5_10
-respawn_only_smart = false
-respawn_idle = 172800
-respawn_radius = 50
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = nil
-;def_restr = nil
-;safe_restr = nil
-;spawn_point = nil
-
-[respawn@val_smart_terrain_5_10] ;-- Type: c_1_1 + c_1_2 edited
-spawn_all_weak_c_1_1
-spawn_all_normal_c_1_2
-
-
-[spawn_all_weak_c_1_1] ;-- Weak mutants - Rates of groups: ( 2 tushkano + 2 dogs + 1 cats + 1 flesh )
-spawn_squads = simulation_tushkano, simulation_tushkano, simulation_dog, simulation_mix_dogs, simulation_cat, simulation_flesh
-spawn_num = {!actor_week_in_zone(1)} 1, {=actor_week_in_zone(1)} 0
-
-[spawn_all_normal_c_1_2];-- Normal mutants - Rates of groups: ( 2 dogs + 1 cats + 3 fleshes/boars )
-spawn_squads = simulation_mix_dogs, simulation_mix_dogs, simulation_cat, simulation_mix_boar_flesh, simulation_flesh, simulation_boar
-spawn_num = {=actor_week_in_zone(1)} 1, {!actor_week_in_zone(1)} 0
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-;[exclusive]
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/darkvalley/smart/val_smart_terrain_5_7.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/darkvalley/smart/val_smart_terrain_5_7.ltx
deleted file mode 100644
index 7e6b65e3..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/darkvalley/smart/val_smart_terrain_5_7.ltx
+++ /dev/null
@@ -1,22 +0,0 @@
-[smart_terrain] ;-- Disabled spawn
-squad_id = 15
-max_population = 1
-;respawn_params = respawn@val_smart_terrain_5_7
-;respawn_only_smart = false
-;respawn_idle = 86400
-;respawn_radius = 50
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = nil
-;def_restr = nil
-;safe_restr = nil
-;spawn_point = nil
-
-;[respawn@val_smart_terrain_5_7] ;-- Type:
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-;[exclusive]
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/darkvalley/smart/val_smart_terrain_5_8.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/darkvalley/smart/val_smart_terrain_5_8.ltx
deleted file mode 100644
index f88b02de..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/darkvalley/smart/val_smart_terrain_5_8.ltx
+++ /dev/null
@@ -1,22 +0,0 @@
-[smart_terrain] ;-- Disabled spawn
-squad_id = 16
-max_population = 1
-;respawn_params = respawn@val_smart_terrain_5_8
-;respawn_only_smart = false
-;respawn_idle = 86400
-;respawn_radius = 50
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = nil
-;def_restr = nil
-;safe_restr = nil
-;spawn_point = nil
-
-;[respawn@val_smart_terrain_5_8] ;-- Type:
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-;[exclusive]
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/darkvalley/smart/val_smart_terrain_6_4.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/darkvalley/smart/val_smart_terrain_6_4.ltx
deleted file mode 100644
index 179c5ff0..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/darkvalley/smart/val_smart_terrain_6_4.ltx
+++ /dev/null
@@ -1,25 +0,0 @@
-[smart_terrain] ;-- Disabled spawn
-squad_id = 5
-max_population = 1
-;respawn_params = respawn@val_smart_terrain_6_4
-;respawn_only_smart = false
-;respawn_idle = 86400
-;respawn_radius = 50
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = nil
-;def_restr = nil
-;safe_restr = nil
-;spawn_point = nil
-
-;[respawn@val_smart_terrain_6_4] ;-- Type:
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-[exclusive]
-faction_base_defense_enemy1 = darkvalley\val_smart_terrain_6_4_smart_logic.ltx
-faction_base_defense_enemy2 = darkvalley\val_smart_terrain_6_4_smart_logic.ltx
-faction_base_defense_enemy3 = darkvalley\val_smart_terrain_6_4_smart_logic.ltx
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/darkvalley/smart/val_smart_terrain_6_5.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/darkvalley/smart/val_smart_terrain_6_5.ltx
deleted file mode 100644
index 831b6de3..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/darkvalley/smart/val_smart_terrain_6_5.ltx
+++ /dev/null
@@ -1,22 +0,0 @@
-[smart_terrain] ;-- Disabled spawn
-squad_id = 6
-max_population = 1
-;respawn_params = respawn@val_smart_terrain_6_5
-;respawn_only_smart = false
-;respawn_idle = 86400
-;respawn_radius = 50
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = nil
-;def_restr = nil
-;safe_restr = nil
-;spawn_point = nil
-
-;[respawn@val_smart_terrain_6_5] ;-- Type:
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-;[exclusive]
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/darkvalley/smart/val_smart_terrain_7_11.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/darkvalley/smart/val_smart_terrain_7_11.ltx
deleted file mode 100644
index 2bc43e53..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/darkvalley/smart/val_smart_terrain_7_11.ltx
+++ /dev/null
@@ -1,22 +0,0 @@
-[smart_terrain]
-squad_id = 17
-max_population = 1
-;respawn_params = respawn@val_smart_terrain_7_11
-;respawn_only_smart = false
-;respawn_idle = 86400
-;respawn_radius = 50
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = nil
-;def_restr = nil
-;safe_restr = nil
-;spawn_point = nil
-
-;[respawn@val_smart_terrain_7_11] ;--
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-;[exclusive]
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/darkvalley/smart/val_smart_terrain_7_3.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/darkvalley/smart/val_smart_terrain_7_3.ltx
deleted file mode 100644
index 9076e701..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/darkvalley/smart/val_smart_terrain_7_3.ltx
+++ /dev/null
@@ -1,43 +0,0 @@
-[smart_terrain]
-squad_id = 7
-max_population = 4
-respawn_params = respawn@val_smart_terrain_7_3
-respawn_only_smart = false
-respawn_idle = 86400
-respawn_radius = 50
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = nil
-;def_restr = nil
-;safe_restr = nil
-;spawn_point = nil
-
-[respawn@val_smart_terrain_7_3] ;-- Type: faction {bandit} = faction base\north
-spawn_bandit_special
-spawn_bandit_special_2
-
-
-[spawn_bandit_special]
-spawn_squads = bandit_novice_visiters_camp
-spawn_num = {!squad_name_exist(bandit_novice_visiters_camp) -zat_b5_sultan_dead} 1, 0
-
-[spawn_bandit_special_2]
-spawn_squads = bandit_novice_visiters_2_camp
-spawn_num = {!squad_name_exist(bandit_novice_visiters_2_camp) -zat_b5_sultan_dead} 1, 0
-
-
-[on_changing_level]
-on_info = {+zat_b5_sultan_dead} %=remove_squad(val_smart_terrain_7_3_bandit_mechanic_stalker_squad) =remove_squad(bandit_barman_mlr_squad) =remove_squad(bandit_novice_visiters_camp) =remove_squad(bandit_novice_visiters_2_camp)%
-
-;[smart_control]
-
-[exclusive]
-val_smart_terrain_7_3_bandit_mechanic = darkvalley\val_smart_terrain_7_3_smart_logic.ltx
-val_smart_terrain_7_3_bandit_barman = darkvalley\val_smart_terrain_7_3_smart_logic.ltx
-
-val_smart_terrain_7_3_beh_tech_job_1 = darkvalley\val_smart_terrain_7_3_smart_logic.ltx
-val_smart_terrain_7_3_camp_work_1 = darkvalley\val_smart_terrain_7_3_smart_logic.ltx
-val_smart_terrain_7_3_camp_work_2 = darkvalley\val_smart_terrain_7_3_smart_logic.ltx
-val_smart_terrain_7_3_camp_work_3 = darkvalley\val_smart_terrain_7_3_smart_logic.ltx
-val_smart_terrain_7_3_camp_work_4 = darkvalley\val_smart_terrain_7_3_smart_logic.ltx
-val_smart_terrain_7_3_camp_work_5 = darkvalley\val_smart_terrain_7_3_smart_logic.ltx
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/darkvalley/smart/val_smart_terrain_7_4.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/darkvalley/smart/val_smart_terrain_7_4.ltx
deleted file mode 100644
index ae065c66..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/darkvalley/smart/val_smart_terrain_7_4.ltx
+++ /dev/null
@@ -1,38 +0,0 @@
-[smart_terrain]
-squad_id = 8
-max_population = 2
-respawn_params = respawn@val_smart_terrain_7_4
-respawn_only_smart = false
-respawn_idle = 86400
-respawn_radius = 1000
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = nil
-;def_restr = nil
-;safe_restr = nil
-;spawn_point = nil
-
-[respawn@val_smart_terrain_7_4] ;-- Type: faction {bandit} =faction base\center
-spawn_deserted_base
-
-
-[spawn_deserted_base] ;-- Normal mutants - Rates of groups:( 1 tushkano + 2 dogs + 1 pseudodog + 1 cats )
-spawn_squads = simulation_tushkano, simulation_dog_5_7, simulation_mix_dogs, simulation_pseudodog, simulation_cat
-spawn_num = {+zat_b5_sultan_dead} 4, 0
-
-
-[on_changing_level]
-on_info = {+zat_b5_sultan_dead} %=remove_squad(bandit_novice_visiters_base) =remove_squad(bandit_novice_visiters_2_base) =remove_squad(val_smart_terrain_7_4_bandit_trader_stalker_squad)%
-
-;[smart_control]
-
-[exclusive]
-val_smart_terrain_7_4_bandit_trader = darkvalley\val_smart_terrain_7_4_smart_logic.ltx
-val_smart_terrain_7_4_beh_trade_job_1 = darkvalley\val_smart_terrain_7_4_smart_logic.ltx
-
-faction_base_defense_enemy1 = darkvalley\val_smart_terrain_7_4_smart_logic.ltx
-faction_base_defense_enemy2 = darkvalley\val_smart_terrain_7_4_smart_logic.ltx
-faction_base_defense_enemy3 = darkvalley\val_smart_terrain_7_4_smart_logic.ltx
-faction_base_defense_enemy4 = darkvalley\val_smart_terrain_7_4_smart_logic.ltx
-faction_base_defense_enemy5 = darkvalley\val_smart_terrain_7_4_smart_logic.ltx
-faction_base_defense_enemy6 = darkvalley\val_smart_terrain_7_4_smart_logic.ltx
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/darkvalley/smart/val_smart_terrain_7_5.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/darkvalley/smart/val_smart_terrain_7_5.ltx
deleted file mode 100644
index 0938dea5..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/darkvalley/smart/val_smart_terrain_7_5.ltx
+++ /dev/null
@@ -1,68 +0,0 @@
-[smart_terrain]
-squad_id = 9
-max_population = 1
-respawn_params = respawn@val_smart_terrain_7_5
-respawn_only_smart = false
-respawn_idle = 43200
-respawn_radius = 50
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = nil
-;def_restr = nil
-;safe_restr = nil
-;spawn_point = nil
-
-[respawn@val_smart_terrain_7_5] ;-- Type: faction {bandit} = faction base\south
-spawn_bandit@novice
-spawn_bandit@advanced
-spawn_bandit@veteran
-spawn_bandit_special
-spawn_bandit_special_2
-spawn_bandit_special_3
-
-
-[spawn_bandit@novice]
-spawn_squads = bandit_sim_squad_novice, bandit_sim_squad_novice, bandit_sim_squad_advanced
-spawn_num = {+zat_b5_sultan_dead} 0, 4
-
-[spawn_bandit@advanced]
-spawn_squads = bandit_sim_squad_advanced, bandit_sim_squad_novice, bandit_sim_squad_novice
-spawn_num = {+zat_b5_sultan_dead} 0, 4
-
-[spawn_bandit@veteran]
-spawn_squads = bandit_sim_squad_veteran, bandit_sim_squad_advanced, bandit_sim_squad_advanced
-spawn_num = {+zat_b5_sultan_dead} 0, 1
-
-[spawn_bandit_special]
-spawn_squads = bandit_novice_visiters_base
-spawn_num = {!squad_name_exist(bandit_novice_visiters_base) -zat_b5_sultan_dead} 1, 0
-
-[spawn_bandit_special_2]
-spawn_squads = bandit_novice_visiters_2_base
-spawn_num = {!squad_name_exist(bandit_novice_visiters_2_base) -zat_b5_sultan_dead} 1, 0
-
-[spawn_bandit_special_3]
-spawn_squads = guards_boss_bandit_in_main_base
-spawn_num = {!squad_name_exist(guards_boss_bandit_in_main_base) -zat_b5_sultan_dead} 1, 0
-
-
-[on_changing_level]
-on_info = {+zat_b5_sultan_dead} %=remove_squad(bandit_main_base_medic_mlr_squad) =remove_squad(guid_dv_mal_mlr_squad) =remove_squad(bandit_guards_in_main_base) =remove_squad(guards_boss_bandit_in_main_base)%
-
-;[smart_control]
-
-[exclusive]
-guid_dv_mal_mlr = darkvalley\guid_dv_mal_mlr.ltx
-bandit_main_base_medic_mlr = darkvalley\bandit_main_base_medic_mlr.ltx
-
-zat_b7_bandit_boss_sultan = darkvalley\val_smart_terrain_7_5_bandit_boss_sultan.ltx
-
-val_smart_terrain_7_5_camp_work_1 = darkvalley\val_smart_terrain_7_5_smart_logic.ltx
-val_smart_terrain_7_5_camp_work_2 = darkvalley\val_smart_terrain_7_5_smart_logic.ltx
-val_smart_terrain_7_5_camp_work_3 = darkvalley\val_smart_terrain_7_5_smart_logic.ltx
-val_smart_terrain_7_5_camp_work_4 = darkvalley\val_smart_terrain_7_5_smart_logic.ltx
-val_smart_terrain_7_5_camp_work_5 = darkvalley\val_smart_terrain_7_5_smart_logic.ltx
-
-val_smart_terrain_7_5_bandit_bodyguard1 = darkvalley\val_smart_terrain_7_5_bandit_boss_sultan.ltx
-val_smart_terrain_7_5_bandit_bodyguard2 = darkvalley\val_smart_terrain_7_5_bandit_boss_sultan.ltx
-val_smart_terrain_7_5_bandit_bodyguard3 = darkvalley\val_smart_terrain_7_5_bandit_boss_sultan.ltx
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/darkvalley/smart/val_smart_terrain_7_8.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/darkvalley/smart/val_smart_terrain_7_8.ltx
deleted file mode 100644
index 1ab270b7..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/darkvalley/smart/val_smart_terrain_7_8.ltx
+++ /dev/null
@@ -1,28 +0,0 @@
-[smart_terrain]
-squad_id = 10
-max_population = 1
-respawn_params = respawn@val_smart_terrain_7_8
-respawn_only_smart = false
-respawn_idle = 172800
-respawn_radius = 50
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = nil
-;def_restr = nil
-;safe_restr = nil
-;spawn_point = nil
-
-[respawn@val_smart_terrain_7_8] ;-- Type:
-spawn_tushkano
-
-
-[spawn_tushkano] ;-- Weak mutants - Rates of groups: ( 3 tushkano )
-spawn_squads = simulation_tushkano, simulation_tushkano, simulation_tushkano_7_10
-spawn_num = 1
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-;[exclusive]
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/darkvalley/smart/val_smart_terrain_8_6.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/darkvalley/smart/val_smart_terrain_8_6.ltx
deleted file mode 100644
index 08b2886e..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/darkvalley/smart/val_smart_terrain_8_6.ltx
+++ /dev/null
@@ -1,28 +0,0 @@
-[smart_terrain] ;-- Disabled
-squad_id = 11
-max_population = 1
-;respawn_params = respawn@val_smart_terrain_8_6
-;respawn_only_smart = false
-;respawn_idle = 86400
-;respawn_radius = 50
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = nil
-;def_restr = nil
-;safe_restr = nil
-;spawn_point = nil
-
-;[respawn@val_smart_terrain_8_6]
-;spawn_bandit
-
-
-;[spawn_bandit]
-;spawn_squads = bandit_sim_squad_novice, bandit_sim_squad_advanced
-;spawn_num = 1
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-;[exclusive]
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/darkvalley/smart/val_smart_terrain_8_7.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/darkvalley/smart/val_smart_terrain_8_7.ltx
deleted file mode 100644
index cfdc5b7b..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/darkvalley/smart/val_smart_terrain_8_7.ltx
+++ /dev/null
@@ -1,24 +0,0 @@
-[smart_terrain] ;-- Disabled spawn
-squad_id = 12
-;max_population = 1
-;respawn_params = respawn@val_smart_terrain_8_7
-;respawn_only_smart = false
-;respawn_idle = 86400
-;respawn_radius = 50
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = nil
-;def_restr = nil
-;safe_restr = nil
-;spawn_point = nil
-
-;[respawn@val_smart_terrain_8_7] ;-- Type:
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-;[exclusive]
-
-
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/darkvalley/smart/val_smart_terrain_8_9.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/darkvalley/smart/val_smart_terrain_8_9.ltx
deleted file mode 100644
index 444026a4..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/darkvalley/smart/val_smart_terrain_8_9.ltx
+++ /dev/null
@@ -1,28 +0,0 @@
-[smart_terrain]
-squad_id = 13
-max_population = 1
-respawn_params = respawn@val_smart_terrain_8_9
-respawn_only_smart = false
-respawn_idle = 172800
-respawn_radius = 50
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = nil
-;def_restr = nil
-;safe_restr = nil
-;spawn_point = nil
-
-[respawn@val_smart_terrain_8_9] ;-- Type:
-spawn_tushkano
-
-
-[spawn_tushkano] ;-- Weak mutants - Rates of groups: ( 3 tushkano )
-spawn_squads = simulation_tushkano, simulation_tushkano, simulation_tushkano_7_10
-spawn_num = 1
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-;[exclusive]
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/darkvalley/smart/val_smart_terrain_9_10.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/darkvalley/smart/val_smart_terrain_9_10.ltx
deleted file mode 100644
index 290c2f30..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/darkvalley/smart/val_smart_terrain_9_10.ltx
+++ /dev/null
@@ -1,34 +0,0 @@
-[smart_terrain]
-squad_id = 14
-max_population = 1
-respawn_params = respawn@agr_smart_terrain_1_2
-respawn_only_smart = false
-respawn_idle = 172800
-respawn_radius = 50
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = nil
-;def_restr = nil
-;safe_restr = nil
-;spawn_point = nil
-
-[respawn@agr_smart_terrain_1_2] ;-- Type: c_2_1 + c_2_2
-spawn_all_hard_c_2_1
-spawn_all_worst_c_2_2
-
-
-[spawn_all_hard_c_2_1] ;-- Hard mutants - Rates of groups: ( 1 fracture + 2 snork + 1 psydog + 2 karlik)
-spawn_squads = simulation_fracture, simulation_fracture, simulation_snork_2_3, simulation_psy_dog, simulation_karlik, simulation_karlik
-spawn_num = {!actor_week_in_zone(4)} 1, {=actor_week_in_zone(4)} 0
-
-[spawn_all_worst_c_2_2] ;-- Worst mutants - Rates of groups: ( 1 fracture + 2 snork + 1 bloodsucker + 1 psysucker + 1 karlik + 1 burer )
-spawn_squads = simulation_fracture, simulation_fracture, simulation_snork_2_5, simulation_psy_dog_squad, simulation_karlik, simulation_karlik
-spawn_num = {=actor_week_in_zone(4)} 1, {!actor_week_in_zone(4)} 0
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-;[exclusive]
-
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/darkvalley/smart/val_smart_terrain_9_2.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/darkvalley/smart/val_smart_terrain_9_2.ltx
deleted file mode 100644
index e808f755..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/darkvalley/smart/val_smart_terrain_9_2.ltx
+++ /dev/null
@@ -1,36 +0,0 @@
-[smart_terrain]
-squad_id = 15
-max_population = 1
-respawn_params = respawn@val_smart_terrain_9_2
-respawn_only_smart = false
-respawn_idle = 86400
-respawn_radius = 500
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = nil
-;def_restr = nil
-;safe_restr = nil
-;spawn_point = nil
-
-[respawn@val_smart_terrain_9_2] ;-- Type: c_1_1 + c_1_2 edited
-spawn_all_weak_c_1_1
-spawn_all_normal_c_1_2
-
-
-[spawn_all_weak_c_1_1] ;-- Weak mutants - Rates of groups: ( 1 tushkano + 2 dogs + 2 flesh )
-spawn_squads = simulation_tushkano, simulation_dog, simulation_mix_dogs, simulation_flesh, simulation_flesh
-spawn_num = {!actor_week_in_zone(1)} 1, {=actor_week_in_zone(1)} 0
-
-[spawn_all_normal_c_1_2];-- Normal mutants - Rates of groups: ( 2 dogs + 1 cats + 3 fleshes/boars )
-spawn_squads = simulation_mix_dogs, simulation_mix_dogs, simulation_cat, simulation_mix_boar_flesh, simulation_flesh, simulation_boar
-spawn_num = {=actor_week_in_zone(1)} 1, {!actor_week_in_zone(1)} 0
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-[exclusive]
-faction_base_defense_enemy1 = darkvalley\val_smart_terrain_9_2_smart_logic.ltx
-faction_base_defense_enemy2 = darkvalley\val_smart_terrain_9_2_smart_logic.ltx
-faction_base_defense_enemy3 = darkvalley\val_smart_terrain_9_2_smart_logic.ltx
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/darkvalley/smart/val_smart_terrain_9_4.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/darkvalley/smart/val_smart_terrain_9_4.ltx
deleted file mode 100644
index 4921de92..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/darkvalley/smart/val_smart_terrain_9_4.ltx
+++ /dev/null
@@ -1,33 +0,0 @@
-[smart_terrain]
-squad_id = 16
-max_population = 2
-respawn_params = respawn@val_smart_terrain_9_4
-respawn_only_smart = false
-respawn_idle = 86400
-respawn_radius = 1000
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = nil
-;def_restr = nil
-;safe_restr = nil
-;spawn_point = nil
-
-[respawn@val_smart_terrain_9_4] ;-- Type: faction {renegade} = safezone
-spawn_renegade@novice
-spawn_renegade@advanced
-
-
-[spawn_renegade@novice]
-spawn_squads = renegade_sim_squad_novice, renegade_sim_squad_novice, renegade_sim_squad_advanced
-spawn_num = {+zat_b5_sultan_dead -mar_renegade_trader_dead} 4, 1
-
-[spawn_renegade@advanced]
-spawn_squads = renegade_sim_squad_advanced, renegade_sim_squad_novice, renegade_sim_squad_novice
-spawn_num = {+zat_b5_sultan_dead -mar_renegade_trader_dead} 4, 1
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-;[exclusive]
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/darkvalley/smart/val_smart_terrain_9_6.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/darkvalley/smart/val_smart_terrain_9_6.ltx
deleted file mode 100644
index ff7dde83..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/darkvalley/smart/val_smart_terrain_9_6.ltx
+++ /dev/null
@@ -1,28 +0,0 @@
-[smart_terrain]
-squad_id = 17
-max_population = 1
-respawn_params = respawn@val_smart_terrain_9_6
-respawn_only_smart = false
-respawn_idle = 86400
-respawn_radius = 50
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = nil
-;def_restr = nil
-;safe_restr = nil
-;spawn_point = nil
-
-[respawn@val_smart_terrain_9_6] ;-- Type:
-spawn_tushkano
-
-
-[spawn_tushkano] ;-- Weak mutants - Rates of groups: ( 3 tushkano )
-spawn_squads = simulation_tushkano, simulation_tushkano, simulation_tushkano_7_10
-spawn_num = 1
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-;[exclusive]
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/darkvalley/val_endless_night_spawn_logic_1.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/darkvalley/val_endless_night_spawn_logic_1.ltx
deleted file mode 100644
index 59ca8c03..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/darkvalley/val_endless_night_spawn_logic_1.ltx
+++ /dev/null
@@ -1,51 +0,0 @@
-[logic]
-active = ph_idle@wait_actor
-
-[ph_idle@wait_actor]
-on_info = {=actor_near_smart(val_smart_terrain_3_0) =is_night} ph_idle@spawn_night_monster_1, {=actor_near_smart(val_smart_terrain_3_0) =is_dark_night} ph_idle@spawn_dark_monster_1
-on_info2 = {=actor_near_smart(val_smart_terrain_7_11) =is_night} ph_idle@spawn_night_monster_2, {=actor_near_smart(val_smart_terrain_7_11) =is_dark_night} ph_idle@spawn_dark_monster_2
-on_info3 = {=actor_near_smart(val_smart_terrain_8_9) =is_night} ph_idle@spawn_night_monster_3, {=actor_near_smart(val_smart_terrain_8_9) =is_dark_night} ph_idle@spawn_dark_monster_3
-on_info4 = {=actor_near_smart(val_smart_terrain_9_10) =is_night} ph_idle@spawn_night_monster_4, {=actor_near_smart(val_smart_terrain_9_10) =is_dark_night} ph_idle@spawn_dark_monster_4
-
-[ph_idle@spawn_night_monster_1]
-on_info = {~10 } %=create_squad(simulation_tushkano_night:val_smart_terrain_3_0)% ph_idle@reset, {~10} %=create_squad(simulation_boar_night:val_smart_terrain_3_0)% ph_idle@reset, {~10} %=create_squad(simulation_dog_night:val_smart_terrain_3_0)% ph_idle@reset, {~10} %=create_squad(simulation_cat_night:val_smart_terrain_3_0)% ph_idle@reset, ph_idle@wait_reset
-
-[ph_idle@spawn_dark_monster_1]
-on_info = {~10} %=create_squad(simulation_zombie_blind_3zomb_civ_night:val_smart_terrain_3_0)% ph_idle@reset, {~10} %=create_squad(simulation_snork_night:val_smart_terrain_3_0)% ph_idle@reset, {~10} %=create_squad(simulation_tushkano_night:val_smart_terrain_3_0)% ph_idle@reset, {~10} %=create_squad(simulation_pseudodog_night:val_smart_terrain_3_0)% ph_idle@reset, ph_idle@wait_reset
-
-[ph_idle@reset]
-on_game_timer = 86400 | ph_idle@wait_actor
-
-[ph_idle@spawn_night_monster_2]
-on_info = {~10} %=create_squad(simulation_tushkano_night:val_smart_terrain_7_11)% ph_idle@reset_2, {~10} %=create_squad(simulation_dog_night:val_smart_terrain_7_11)% ph_idle@reset_2, {~10} %=create_squad(simulation_flesh_night:val_smart_terrain_7_11)% ph_idle@reset_2, {~10} %=create_squad(simulation_pseudodog_night:val_smart_terrain_7_11)% ph_idle@reset_2, ph_idle@wait_reset
-
-[ph_idle@spawn_dark_monster_2]
-on_info = {~10} %=create_squad(simulation_snork_night:val_smart_terrain_7_11)% ph_idle@reset_2, {~10} %=create_squad(simulation_fracture_night:val_smart_terrain_7_11)
-% ph_idle@reset_2, {~10} %=create_squad(simulation_zombie_3_6_night:val_smart_terrain_7_11)% ph_idle@reset_2, {~10} %=create_squad(simulation_pseudodog_night:val_smart_terrain_7_11)% ph_idle@reset_2, ph_idle@wait_reset
-
-[ph_idle@reset_2]
-on_game_timer = 86400 | ph_idle@wait_actor
-
-[ph_idle@spawn_night_monster_3]
-on_info = {~10} %=create_squad(simulation_zombie_blind_3zomb_civ_night:val_smart_terrain_8_9)% ph_idle@reset_3, {~10} %=create_squad(simulation_dog_night:val_smart_terrain_8_9)% ph_idle@reset_3, {~10} %=create_squad(simulation_karlik_night:val_smart_terrain_8_9)% ph_idle@reset_3, {~10} %=create_squad(simulation_boar_night:val_smart_terrain_8_9)% ph_idle@reset_3, ph_idle@wait_reset
-
-[ph_idle@spawn_dark_monster_3]
-on_info = {~10} %=create_squad(simulation_psysucker_white_night:val_smart_terrain_8_9)% ph_idle@reset_3, {~10} %=create_squad(simulation_bloodsucker_night:val_smart_terrain_8_9)% ph_idle@reset_3, {~10} %=create_squad(simulation_karlik_night:val_smart_terrain_8_9)% ph_idle@reset_3, {~10} %=create_squad(simulation_lurker_brown_night:val_smart_terrain_8_9)% ph_idle@reset_3, ph_idle@wait_reset
-
-[ph_idle@reset_3]
-on_game_timer = 86400 | ph_idle@wait_actor
-
-[ph_idle@spawn_night_monster_4]
-on_info = {~10} %=create_squad(simulation_psy_dog_night:val_smart_terrain_9_10)% ph_idle@reset_4, {~10} %=create_squad(simulation_flesh_night:val_smart_terrain_9_10)% ph_idle@reset_4, {~10} %=create_squad(simulation_dog_night:val_smart_terrain_9_10)% ph_idle@reset_4, {~10} %=create_squad(simulation_cat_night:val_smart_terrain_9_10)% ph_idle@reset_4, ph_idle@wait_reset
-
-[ph_idle@spawn_dark_monster_4]
-on_info = {~10} %=create_squad(simulation_psysucker_white_night:val_smart_terrain_9_10)% ph_idle@reset_4, {~10} %=create_squad(simulation_bloodsucker_night:val_smart_terrain_9_10)% ph_idle@reset_4, {~10} %=create_squad(simulation_chimera_night:val_smart_terrain_9_10)% ph_idle@reset_4, {~10} %=create_squad(simulation_gigant_night:val_smart_terrain_9_10)% ph_idle@reset_4, ph_idle@wait_reset
-
-[ph_idle@reset_4]
-on_game_timer = 86400 | ph_idle@wait_actor
-
-[ph_idle@wait_reset]
-on_game_timer = 580 | ph_idle@wait_actor
-
-[collide]
-ignore_static
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/darkvalley/val_endless_night_spawn_logic_2.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/darkvalley/val_endless_night_spawn_logic_2.ltx
deleted file mode 100644
index edfcdb1d..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/darkvalley/val_endless_night_spawn_logic_2.ltx
+++ /dev/null
@@ -1,50 +0,0 @@
-[logic]
-active = ph_idle@wait_actor
-
-[ph_idle@wait_actor]
-on_info = {=actor_near_smart(val_smart_terrain_5_7) =is_night} ph_idle@spawn_night_monster_1, {=actor_near_smart(val_smart_terrain_5_7) =is_dark_night} ph_idle@spawn_dark_monster_1
-on_info2 = {=actor_near_smart(val_smart_terrain_5_8) =is_night} ph_idle@spawn_night_monster_2, {=actor_near_smart(val_smart_terrain_5_8) =is_dark_night} ph_idle@spawn_dark_monster_2
-on_info3 = {=actor_near_smart(val_smart_terrain_7_8) =is_night} ph_idle@spawn_night_monster_3, {=actor_near_smart(val_smart_terrain_7_8) =is_dark_night} ph_idle@spawn_dark_monster_3
-on_info4 = {=actor_near_smart(val_smart_terrain_5_10) =is_night} ph_idle@spawn_night_monster_4, {=actor_near_smart(val_smart_terrain_5_10) =is_dark_night} ph_idle@spawn_dark_monster_4
-
-[ph_idle@spawn_night_monster_1]
-on_info = {~10} %=create_squad(simulation_cat_night:val_smart_terrain_5_7)% ph_idle@reset, {~10} %=create_squad(simulation_dog_night:val_smart_terrain_5_7)% ph_idle@reset, {~10} %=create_squad(simulation_zombie_blind_3zomb_civ_night:val_smart_terrain_5_7)% ph_idle@reset, {~10} %=create_squad(simulation_boar_3_5_night:val_smart_terrain_5_7)% ph_idle@reset, ph_idle@wait_reset
-
-[ph_idle@spawn_dark_monster_1]
-on_info = {~10} %=create_squad(simulation_pseudodog_night:val_smart_terrain_5_7)% ph_idle@reset, {~10} %=create_squad(simulation_dog_night:val_smart_terrain_5_7)% ph_idle@reset, {~10} %=create_squad(simulation_tushkano_night:val_smart_terrain_5_7)% ph_idle@reset, {~10} %=create_squad(simulation_boar_3_5_night:val_smart_terrain_5_7)% ph_idle@reset, ph_idle@wait_reset
-
-[ph_idle@reset]
-on_game_timer = 86400 | ph_idle@wait_actor
-
-[ph_idle@spawn_night_monster_2]
-on_info = {~10} %=create_squad(simulation_psysucker_white_night:val_smart_terrain_5_8)% ph_idle@reset_2, {~10} %=create_squad(simulation_cat_night:val_smart_terrain_5_8)% ph_idle@reset_2, {~10} %=create_squad(simulation_zombie_3_6_night:val_smart_terrain_5_8)%, {~10} %=create_squad(simulation_pseudodog_night:val_smart_terrain_5_8)% ph_idle@reset_2, ph_idle@wait_reset
-
-[ph_idle@spawn_dark_monster_2]
-on_info = {~10} %=create_squad(simulation_bloodsucker_green_night:val_smart_terrain_5_8)% ph_idle@reset_2, {~10} %=create_squad(simulation_fracture_night:val_smart_terrain_5_8)% ph_idle@reset_2, {~10} %=create_squad(simulation_lurker_night:val_smart_terrain_5_8)% ph_idle@reset_2, {~10} %=create_squad(simulation_zombie_blind_3zomb_civ_night:val_smart_terrain_5_8)% ph_idle@reset_2, ph_idle@wait_reset
-
-[ph_idle@reset_2]
-on_game_timer = 86400 | ph_idle@wait_actor
-
-[ph_idle@spawn_night_monster_3]
-on_info = {~10} %=create_squad(simulation_snork_night:val_smart_terrain_7_8)% ph_idle@reset_3, {~10} %=create_squad(simulation_cat_night:val_smart_terrain_7_8)% ph_idle@reset_3, {~10} %=create_squad(simulation_tushkano_night:val_smart_terrain_7_8)% ph_idle@reset_3, {~10} %=create_squad(simulation_mix_zombie_night:val_smart_terrain_7_8)% ph_idle@reset_3, ph_idle@wait_reset
-
-[ph_idle@spawn_dark_monster_3]
-on_info = {~10} %=create_squad(simulation_psy_dog_night:val_smart_terrain_7_8)% ph_idle@reset_3, {~10} %=create_squad(simulation_psysucker_white_night:val_smart_terrain_7_8)% ph_idle@reset_3, {~10} %=create_squad(simulation_bloodsucker_night:val_smart_terrain_7_8)% ph_idle@reset_3, {~10} %=create_squad(simulation_karlik_night:val_smart_terrain_7_8)% ph_idle@reset_3, ph_idle@wait_reset
-
-[ph_idle@reset_3]
-on_game_timer = 86400 | ph_idle@wait_actor
-
-[ph_idle@spawn_night_monster_4]
-on_info = {~10} %=create_squad(simulation_snork_night:val_smart_terrain_5_10)% ph_idle@reset_4, {~10} %=create_squad(simulation_dog_night:val_smart_terrain_5_10)% ph_idle@reset_4, {~10} %=create_squad(simulation_cat_night:val_smart_terrain_5_10)% ph_idle@reset_4, {~10} %=create_squad(simulation_boar_night:val_smart_terrain_5_10)% ph_idle@reset_4, ph_idle@wait_reset
-
-[ph_idle@spawn_dark_monster_4]
-on_info = {~10} %=create_squad(simulation_lurker_blue_night:val_smart_terrain_5_10)% ph_idle@reset_4, {~10} %=create_squad(simulation_dog_night:val_smart_terrain_5_10)% ph_idle@reset_4, {~10} %=create_squad(simulation_psysucker_white_night:val_smart_terrain_5_10)% ph_idle@reset_4, {~10} %=create_squad(simulation_bloodsucker_night:val_smart_terrain_5_10)% ph_idle@reset_4, ph_idle@wait_reset
-
-[ph_idle@reset_4]
-on_game_timer = 86400 | ph_idle@wait_actor
-
-[ph_idle@wait_reset]
-on_game_timer = 580 | ph_idle@wait_actor
-
-[collide]
-ignore_static
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/darkvalley/val_endless_night_spawn_logic_3.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/darkvalley/val_endless_night_spawn_logic_3.ltx
deleted file mode 100644
index e4094a79..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/darkvalley/val_endless_night_spawn_logic_3.ltx
+++ /dev/null
@@ -1,50 +0,0 @@
-[logic]
-active = ph_idle@wait_actor
-
-[ph_idle@wait_actor]
-on_info = {=actor_near_smart(val_smart_terrain_6_4) =is_night} ph_idle@spawn_night_monster_1, {=actor_near_smart(val_smart_terrain_6_4) =is_dark_night} ph_idle@spawn_dark_monster_1
-on_info2 = {=actor_near_smart(val_smart_terrain_6_5) =is_night} ph_idle@spawn_night_monster_2, {=actor_near_smart(val_smart_terrain_6_5) =is_dark_night} ph_idle@spawn_dark_monster_2
-on_info3 = {=actor_near_smart(val_smart_terrain_8_7) =is_night} ph_idle@spawn_night_monster_3, {=actor_near_smart(val_smart_terrain_8_7) =is_dark_night} ph_idle@spawn_dark_monster_3
-on_info4 = {=actor_near_smart(val_smart_terrain_9_2) =is_night} ph_idle@spawn_night_monster_4, {=actor_near_smart(val_smart_terrain_9_2) =is_dark_night} ph_idle@spawn_dark_monster_4
-
-[ph_idle@spawn_night_monster_1]
-on_info = {~10} %=create_squad(simulation_tushkano_night:val_smart_terrain_6_4)% ph_idle@reset, {~10} %=create_squad(simulation_boar_night:val_smart_terrain_6_4)% ph_idle@reset, {~10} %=create_squad(simulation_snork_night:val_smart_terrain_6_4)% ph_idle@reset, {~10} %=create_squad(simulation_dog_night:val_smart_terrain_6_4)% ph_idle@reset, ph_idle@wait_reset
-
-[ph_idle@spawn_dark_monster_1]
-on_info = {~10} %=create_squad(simulation_bloodsucker_green_night:val_smart_terrain_6_4)% ph_idle@reset, {~10} %=create_squad(simulation_fracture_night:val_smart_terrain_6_4)% ph_idle@reset, {~10} %=create_squad(simulation_snork_night:val_smart_terrain_6_4)% ph_idle@reset, {~10} %=create_squad(simulation_lurker_blue_night:val_smart_terrain_6_4)% ph_idle@reset, ph_idle@wait_reset
-
-[ph_idle@reset]
-on_game_timer = 86400 | ph_idle@wait_actor
-
-[ph_idle@spawn_night_monster_2]
-on_info = {~10} %=create_squad(simulation_zombie_blind_3zomb_civ_night:val_smart_terrain_6_5)% ph_idle@reset_2, {~10} %=create_squad(simulation_dog_night:val_smart_terrain_6_5)% ph_idle@reset_2, {~10} %=create_squad(simulation_zombie_blind_night:val_smart_terrain_6_5)% ph_idle@reset_2, {~10} %=create_squad(simulation_pseudodog_night:val_smart_terrain_6_5)% ph_idle@reset_2, ph_idle@wait_reset
-
-[ph_idle@spawn_dark_monster_2]
-on_info = {~10} %=create_squad(simulation_snork_night:val_smart_terrain_6_5)% ph_idle@reset_2, {~10} %=create_squad(simulation_fracture_night:val_smart_terrain_6_5)% ph_idle@reset_2, {~10} %=create_squad(simulation_psysucker_white_night)% ph_idle@reset_2, {~10} %=create_squad(simulation_bloodsucker_green_night:val_smart_terrain_6_5)% ph_idle@reset_2, ph_idle@wait_reset
-
-[ph_idle@reset_2]
-on_game_timer = 86400 | ph_idle@wait_actor
-
-[ph_idle@spawn_night_monster_3]
-on_info = {~10} %=create_squad(simulation_tushkano_night:val_smart_terrain_8_7)% ph_idle@reset_3, {~10} %=create_squad(simulation_dog_night:val_smart_terrain_8_7)% ph_idle@reset_3, {~10} %=create_squad(simulation_boar_night:val_smart_terrain_8_7)% ph_idle@reset_3, {~10} %=create_squad(simulation_cat_night:val_smart_terrain_8_7)% ph_idle@reset_3, ph_idle@wait_reset
-
-[ph_idle@spawn_dark_monster_3]
-on_info = {~10} %=create_squad(simulation_zombie_blind_3zomb_civ_night:val_smart_terrain_8_7)% ph_idle@reset_3, {~10} %=create_squad(simulation_karlik_night:val_smart_terrain_8_7)% ph_idle@reset_3, {~10} %=create_squad(simulation_psysucker_white_night:val_smart_terrain_8_7)% ph_idle@reset_3, {~10} %=create_squad(simulation_bloodsucker_green_night:val_smart_terrain_8_7)% ph_idle@reset_3, ph_idle@wait_reset
-
-[ph_idle@reset_3]
-on_game_timer = 86400 | ph_idle@wait_actor
-
-[ph_idle@spawn_night_monster_4]
-on_info = {~10} %=create_squad(simulation_tushkano_night:val_smart_terrain_9_2)% ph_idle@reset_4, {~10} %=create_squad(simulation_fracture_night:val_smart_terrain_9_2)% ph_idle@reset_4, {~10} %=create_squad(simulation_dog_night:val_smart_terrain_9_2)% ph_idle@reset_4, {~10} %=create_squad(simulation_lurker_blue_night:val_smart_terrain_9_2)% ph_idle@reset_4, ph_idle@wait_reset
-
-[ph_idle@spawn_dark_monster_4]
-on_info = {~10} %=create_squad(simulation_pseudodog_night:val_smart_terrain_9_2)% ph_idle@reset_4, {~10} %=create_squad(simulation_fracture_night:val_smart_terrain_9_2)% ph_idle@reset_4, {~10} %=create_squad(simulation_bloodsucker_green_night:val_smart_terrain_9_2)% ph_idle@reset_4, {~10} %=create_squad(simulation_psysucker_white_night:val_smart_terrain_9_2)% ph_idle@reset_4, ph_idle@wait_reset
-
-[ph_idle@reset_4]
-on_game_timer = 86400 | ph_idle@wait_actor
-
-[ph_idle@wait_reset]
-on_game_timer = 580 | ph_idle@wait_actor
-
-[collide]
-ignore_static
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/dead_city/cit_bandits_spawn_logic.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/dead_city/cit_bandits_spawn_logic.ltx
deleted file mode 100644
index 74f4a8a8..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/dead_city/cit_bandits_spawn_logic.ltx
+++ /dev/null
@@ -1,18 +0,0 @@
-[logic@cit_bandits_poltergeist]
-active = mob_home@1
-suitable = {=target_squad_name(cit_bandits_poltergeist_squad)} true
-monster_job = true
-prior = 200
-
-
-[mob_home@1]
-;path_home = home
-home_min_radius = 1
-home_max_radius = 2
-out_restr = cit_smart_house_of_culture_spot
-
-[mob_home@2]
-;path_home = home
-home_min_radius = 1
-home_max_radius = 2
-out_restr = cit_bandits_base_zone
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/dead_city/cit_endless_night_spawn_logic_1.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/dead_city/cit_endless_night_spawn_logic_1.ltx
deleted file mode 100644
index 382218b5..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/dead_city/cit_endless_night_spawn_logic_1.ltx
+++ /dev/null
@@ -1,30 +0,0 @@
-[logic]
-active = ph_idle@wait_actor
-
-[ph_idle@wait_actor]
-on_info = {=actor_near_smart(zombie_smart_ds_mlr_1) =is_night} ph_idle@spawn_night_monster_1, {=actor_near_smart(zombie_smart_ds_mlr_1) =is_dark_night} ph_idle@spawn_dark_monster_1
-on_info2 = {=actor_near_smart(cit_bandits_2) =is_night} ph_idle@spawn_night_monster_2, {=actor_near_smart(cit_bandits_2) =is_dark_night} ph_idle@spawn_dark_monster_2
-
-[ph_idle@spawn_night_monster_1]
-on_info = {~10} %=create_squad(simulation_tushkano_night:zombie_smart_ds_mlr_1)% ph_idle@reset, {~10} %=create_squad(simulation_snork_night:zombie_smart_ds_mlr_1)% ph_idle@reset, {~10} %=create_squad(simulation_dog_night:zombie_smart_ds_mlr_1)% ph_idle@reset, {~10} %=create_squad(simulation_pseudodog_night:zombie_smart_ds_mlr_1)% ph_idle@reset, ph_idle@wait_reset
-
-[ph_idle@spawn_dark_monster_1]
-on_info = {~10} %=create_squad(simulation_mix_zombie_night:zombie_smart_ds_mlr_1)% ph_idle@reset, {~10} %=create_squad(simulation_snork_night:zombie_smart_ds_mlr_1)% ph_idle@reset, {~10} %=create_squad(simulation_bloodsucker_red_night:zombie_smart_ds_mlr_1)% ph_idle@reset, {~10} %=create_squad(simulation_psysucker_brown_night:zombie_smart_ds_mlr_1)% ph_idle@reset, ph_idle@wait_reset
-
-[ph_idle@reset]
-on_game_timer = 86400 | ph_idle@wait_actor
-
-[ph_idle@spawn_night_monster_2]
-on_info = {~10} %=create_squad(simulation_cat_night:cit_bandits_2)% ph_idle@reset_2, {~10} %=create_squad(simulation_dog_night:cit_bandits_2)% ph_idle@reset_2, {~10} %=create_squad(simulation_zombie_blind_night:cit_bandits_2)% ph_idle@reset_2, {~10} %=create_squad(simulation_snork_night:cit_bandits_2)% ph_idle@reset_2, ph_idle@wait_reset
-
-[ph_idle@spawn_dark_monster_2]
-on_info = {~10} %=create_squad(simulation_bloodsucker_red_night:cit_bandits_2)% ph_idle@reset_2, {~10} %=create_squad(simulation_fracture_night:cit_bandits_2)% ph_idle@reset_2, {~10} %=create_squad(simulation_zombie_blind_3zomb_civ_night:cit_bandits_2)% ph_idle@reset_2, {~10} %=create_squad(simulation_psysucker_brown_night:cit_bandits_2)% ph_idle@reset_2, ph_idle@wait_reset
-
-[ph_idle@reset_2]
-on_game_timer = 86400 | ph_idle@wait_actor
-
-[ph_idle@wait_reset]
-on_game_timer = 580 | ph_idle@wait_actor
-
-[collide]
-ignore_static
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/dead_city/cit_endless_night_spawn_logic_2.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/dead_city/cit_endless_night_spawn_logic_2.ltx
deleted file mode 100644
index dae95d9b..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/dead_city/cit_endless_night_spawn_logic_2.ltx
+++ /dev/null
@@ -1,30 +0,0 @@
-[logic]
-active = ph_idle@wait_actor
-
-[ph_idle@wait_actor]
-on_info = {=actor_near_smart(zombie_smart_ds_mlr_2) =is_night} ph_idle@spawn_night_monster_1, {=actor_near_smart(zombie_smart_ds_mlr_2) =is_dark_night} ph_idle@spawn_dark_monster_1
-on_info2 = {=actor_near_smart(cit_killers_2) =is_night} ph_idle@spawn_night_monster_2, {=actor_near_smart(cit_killers_2) =is_dark_night} ph_idle@spawn_dark_monster_2
-
-[ph_idle@spawn_night_monster_1]
-on_info = {~10} %=create_squad(simulation_tushkano_night:zombie_smart_ds_mlr_2)% ph_idle@reset, {~10} %=create_squad(simulation_cat_night:zombie_smart_ds_mlr_2)% ph_idle@reset, {~10} %=create_squad(simulation_bloodsucker_red_night:zombie_smart_ds_mlr_2)% ph_idle@reset, {~10} %=create_squad(simulation_dog_night:zombie_smart_ds_mlr_2)% ph_idle@reset, ph_idle@wait_reset
-
-[ph_idle@spawn_dark_monster_1]
-on_info = {~10} %=create_squad(simulation_bloodsucker_red_night:zombie_smart_ds_mlr_2)% ph_idle@reset, {~10} %=create_squad(simulation_psysucker_brown_night:zombie_smart_ds_mlr_2)% ph_idle@reset, {~10} %=create_squad(simulation_tushkano_night:zombie_smart_ds_mlr_2)% ph_idle@reset, {~10} %=create_squad(simulation_karlik_night:zombie_smart_ds_mlr_2)% ph_idle@reset, ph_idle@wait_reset
-
-[ph_idle@reset]
-on_game_timer = 86400 | ph_idle@wait_actor
-
-[ph_idle@spawn_night_monster_2]
-on_info = {~10} %=create_squad(simulation_tushkano_night:cit_killers_2)% ph_idle@reset_2, {~10} %=create_squad(simulation_dog_night:cit_killers_2)% ph_idle@reset_2, {~10} %=create_squad(simulation_zombie_blind_3zomb_civ_night:cit_killers_2)% ph_idle@reset_2, {~10} %=create_squad(simulation_pseudodog_night:cit_killers_2)% ph_idle@reset_2, ph_idle@wait_reset
-
-[ph_idle@spawn_dark_monster_2]
-on_info = {~10} %=create_squad(simulation_psysucker_brown_night:cit_killers_2)% ph_idle@reset_2, {~10} %=create_squad(simulation_fracture_night:cit_killers_2)% ph_idle@reset_2, {~10} %=create_squad(simulation_bloodsucker_red_night:cit_killers_2)% ph_idle@reset_2, {~10} %=create_squad(simulation_karlik_night:cit_killers_2)% ph_idle@reset_2, ph_idle@wait_reset
-
-[ph_idle@reset_2]
-on_game_timer = 86400 | ph_idle@wait_actor
-
-[ph_idle@wait_reset]
-on_game_timer = 580 | ph_idle@wait_actor
-
-[collide]
-ignore_static
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/dead_city/cit_endless_night_spawn_logic_3.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/dead_city/cit_endless_night_spawn_logic_3.ltx
deleted file mode 100644
index 3dcef9cb..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/dead_city/cit_endless_night_spawn_logic_3.ltx
+++ /dev/null
@@ -1,30 +0,0 @@
-[logic]
-active = ph_idle@wait_actor
-
-[ph_idle@wait_actor]
-on_info = {=actor_near_smart(cit_kanaliz1) =is_night} ph_idle@spawn_night_monster_1, {=actor_near_smart(cit_kanaliz1) =is_dark_night} ph_idle@spawn_dark_monster_1
-on_info2 = {=actor_near_smart(cit_kanaliz2) =is_night} ph_idle@spawn_night_monster_2, {=actor_near_smart(cit_kanaliz2) =is_dark_night} ph_idle@spawn_dark_monster_2
-
-[ph_idle@spawn_night_monster_1]
-on_info = {~10} %=create_squad(simulation_dog_night:cit_kanaliz1)% ph_idle@reset, {~10} %=create_squad(simulation_boar_night:cit_kanaliz1)% ph_idle@reset, {~10} %=create_squad(simulation_tushkano_night:cit_kanaliz1)% ph_idle@reset, {~10} %=create_squad(simulation_lurker_blue_night:cit_kanaliz1)% ph_idle@reset, ph_idle@wait_reset
-
-[ph_idle@spawn_dark_monster_1]
-on_info = {~10} %=create_squad(simulation_chimera_2weak_night:cit_kanaliz1)% ph_idle@reset, {~10} %=create_squad(simulation_fracture_night:cit_kanaliz1)% ph_idle@reset, {~10} %=create_squad(simulation_gigant_night:cit_kanaliz1)% ph_idle@reset, {~10} %=create_squad(simulation_lurker_blue_night:cit_kanaliz1)% ph_idle@reset, ph_idle@wait_reset
-
-[ph_idle@reset]
-on_game_timer = 86400 | ph_idle@wait_actor
-
-[ph_idle@spawn_night_monster_2]
-on_info = {~10} %=create_squad(simulation_cat_night:cit_kanaliz2)% ph_idle@reset_2, {~10} %=create_squad(simulation_mix_boar_flesh_night:cit_kanaliz2)% ph_idle@reset_2, {~10} %=create_squad(simulation_zombie_blind_night:cit_kanaliz2)% ph_idle@reset_2, {~10} %=create_squad(simulation_pseudodog_night:cit_kanaliz2)% ph_idle@reset_2, ph_idle@wait_reset
-
-[ph_idle@spawn_dark_monster_2]
-on_info = {~10} %=create_squad(simulation_chimera_2weak_night:cit_kanaliz2)% ph_idle@reset_2, {~10} %=create_squad(simulation_fracture_night:cit_kanaliz2)% ph_idle@reset_2, {~10} %=create_squad(simulation_gigant_night:cit_kanaliz2)% ph_idle@reset_2, {~10} %=create_squad(simulation_lurker_brown_night:cit_kanaliz2)% ph_idle@reset_2, ph_idle@wait_reset
-
-[ph_idle@reset_2]
-on_game_timer = 86400 | ph_idle@wait_actor
-
-[ph_idle@wait_reset]
-on_game_timer = 580 | ph_idle@wait_actor
-
-[collide]
-ignore_static
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/dead_city/mod_cit_crow_spawner_redone.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/dead_city/mod_cit_crow_spawner_redone.ltx
deleted file mode 100644
index 7735e234..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/dead_city/mod_cit_crow_spawner_redone.ltx
+++ /dev/null
@@ -1,21 +0,0 @@
-![logic]
-!active = sr_crow_spawner
-active = sr_idle@check_story
-
-[sr_idle@check_story]
-on_info = {-story_mode_disabled} sr_idle@check_actor, {+story_mode_disabled -yan_x16_complete_end} sr_idle@check_actor %+yan_kill_brain_done%
-
-[sr_idle@check_actor]
-on_info = {=actor_community(actor_monolith) -yan_x16_complete_end} sr_idle@check_helmet %+yan_kill_brain_done%, {=actor_community(actor_greh) -yan_x16_complete_end} sr_idle@check_helmet %+yan_kill_brain_done%, sr_idle@check_helmet
-
-[sr_idle@check_helmet]
-on_info = {=actor_has_item(good_psy_helmet)} sr_idle@check_spawner %+living_legend_psy_helmet%, {=actor_has_item(bad_psy_helmet)} sr_idle@check_spawner %+living_legend_psy_helmet%, sr_idle@check_spawner
-
-[sr_idle@check_spawner]
-on_info = sr_crow_spawner
-
-![sr_crow_spawner]
-max_crows_on_level = 4
-spawn_path = cit_crow_spawn_1, cit_crow_spawn_2, cit_crow_spawn_3, cit_crow_spawn_4, cit_crow_spawn_5
-
-
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/dead_city/mod_cit_killers_merc_barman_mlr_logic_redone.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/dead_city/mod_cit_killers_merc_barman_mlr_logic_redone.ltx
deleted file mode 100644
index d7d0b3b8..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/dead_city/mod_cit_killers_merc_barman_mlr_logic_redone.ltx
+++ /dev/null
@@ -1,5 +0,0 @@
-![logic@cit_killers_merc_barman_mlr]
-on_death = death_aslan
-
-[death_aslan]
-on_info = %+cit_killers_aslan_dead%
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/dead_city/mod_cit_killers_smart_logic_redone.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/dead_city/mod_cit_killers_smart_logic_redone.ltx
deleted file mode 100644
index 3ee0792a..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/dead_city/mod_cit_killers_smart_logic_redone.ltx
+++ /dev/null
@@ -1,5 +0,0 @@
-![logic@cit_killers_merc_trader]
-on_death = death_dushman
-
-[death_dushman]
-on_info = %+cit_killers_dushman_dead%
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/dead_city/mod_deadcity_radio_redone.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/dead_city/mod_deadcity_radio_redone.ltx
deleted file mode 100644
index 058969f2..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/dead_city/mod_deadcity_radio_redone.ltx
+++ /dev/null
@@ -1,2 +0,0 @@
-![ph_sound]
-volume = {=surge_started}0, 1
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/dead_city/smart/cit_bandits.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/dead_city/smart/cit_bandits.ltx
deleted file mode 100644
index f89b45d5..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/dead_city/smart/cit_bandits.ltx
+++ /dev/null
@@ -1,50 +0,0 @@
-[smart_terrain]
-squad_id = 1
-max_population = 3
-respawn_params = respawn@cit_bandits
-respawn_only_smart = false
-respawn_idle = 259200
-respawn_radius = 50
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = nil
-;def_restr = nil
-;safe_restr = nil
-;spawn_point = nil
-
-[respawn@cit_bandits] ;-- Type:
-spawn_deserted_base
-
-
-[spawn_deserted_base]
-spawn_squads = monolith_sim_squad_veteran, monolith_sim_squad_advanced, monolith_sim_squad_novice
-spawn_num = {+cit_killers_aslan_dead +cit_killers_dushman_dead} 1, 0
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-[exclusive]
-cit_bandits_poltergeist = dead_city\cit_bandits_spawn_logic.ltx
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/dead_city/smart/cit_bandits_2.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/dead_city/smart/cit_bandits_2.ltx
deleted file mode 100644
index 3a68b82e..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/dead_city/smart/cit_bandits_2.ltx
+++ /dev/null
@@ -1,32 +0,0 @@
-[smart_terrain]
-squad_id = 5
-max_population = 3
-respawn_params = respawn@cit_bandits_2
-respawn_only_smart = false
-respawn_idle = 259200
-respawn_radius = 50
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = nil
-;def_restr = nil
-;safe_restr = nil
-;spawn_point = nil
-
-[respawn@cit_bandits_2] ;-- Type:
-spawn_deserted_base
-
-
-[spawn_deserted_base]
-spawn_squads = monolith_sim_squad_veteran, monolith_sim_squad_advanced, monolith_sim_squad_novice
-spawn_num = {+cit_killers_aslan_dead +cit_killers_dushman_dead} 1, 0
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-;[exclusive]
-
-
-
-
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/dead_city/smart/cit_kanaliz1.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/dead_city/smart/cit_kanaliz1.ltx
deleted file mode 100644
index 24ee3d45..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/dead_city/smart/cit_kanaliz1.ltx
+++ /dev/null
@@ -1,37 +0,0 @@
-[smart_terrain]
-squad_id = 2
-max_population = 1
-respawn_params = respawn@cit_kanaliz1
-respawn_only_smart = false
-respawn_idle = 86400
-respawn_radius = 50
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = nil
-;def_restr = nil
-;safe_restr = nil
-;spawn_point = nil
-
-[respawn@cit_kanaliz1] ;-- Type: c_1_1 + c_1_2 edited
-spawn_all_weak_c_1_1
-spawn_all_normal_c_1_2
-;spawn_zombied_special
-
-[spawn_all_weak_c_1_1] ;-- Normal mutants - Rates of groups: ( 1 tushkano + 2 dogs + 1 cats + 1 flesh )
-spawn_squads = simulation_tushkano, simulation_dog, simulation_mix_dogs, simulation_cat, simulation_flesh
-spawn_num = {!actor_week_in_zone(1)} 2, {=actor_week_in_zone(1)} 0 ;!squad_name_exist(cit_kanaliz1_zombied_squad)
-
-[spawn_all_normal_c_1_2] ;-- Normal mutants - Rates of groups: ( 2 dogs + 1 pseudodog + 1 cats + 3 fleshes/boars )
-spawn_squads = simulation_mix_dogs, simulation_mix_dogs, simulation_pseudodog, simulation_cat, simulation_mix_boar_flesh, simulation_flesh, simulation_boar
-spawn_num = {=actor_week_in_zone(1)} 2, {!actor_week_in_zone(1)} 0 ;!squad_name_exist(cit_kanaliz1_zombied_squad)
-
-;[spawn_zombied_special]
-;spawn_squads = cit_kanaliz1_zombied_squad
-;spawn_num = {!squad_name_exist(cit_kanaliz1_zombied_squad) -yan_kill_brain_done ~20} 1, 0
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-;[exclusive]
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/dead_city/smart/cit_kanaliz2.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/dead_city/smart/cit_kanaliz2.ltx
deleted file mode 100644
index 653045ef..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/dead_city/smart/cit_kanaliz2.ltx
+++ /dev/null
@@ -1,39 +0,0 @@
-[smart_terrain]
-squad_id = 3
-max_population = 1
-respawn_params = respawn@cit_kanaliz2
-respawn_only_smart = false
-respawn_idle = 172800
-respawn_radius = 50
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = nil
-;def_restr = nil
-;safe_restr = nil
-;spawn_point = nil
-
-[respawn@cit_kanaliz2] ;-- Type: faction {zombied} = mhee...
-spawn_all_weak_c_1_1
-spawn_all_normal_c_1_2
-spawn_zombied_special
-
-[spawn_all_weak_c_1_1] ;-- Normal mutants - Rates of groups: ( 1 tushkano + 2 dogs + 1 cats + 1 flesh )
-spawn_squads = simulation_tushkano, simulation_dog, simulation_mix_dogs, simulation_cat, simulation_flesh
-spawn_num = {!actor_week_in_zone(1) !squad_name_exist(cit_kanaliz2_zombied_squad)} 2, {=actor_week_in_zone(1)!squad_name_exist(cit_kanaliz2_zombied_squad)} 0, 0
-
-[spawn_all_normal_c_1_2] ;-- Normal mutants - Rates of groups: ( 2 dogs + 1 pseudodog + 1 cats + 3 fleshes/boars )
-spawn_squads = simulation_mix_dogs, simulation_mix_dogs, simulation_pseudodog, simulation_cat, simulation_mix_boar_flesh, simulation_flesh, simulation_boar
-spawn_num = {=actor_week_in_zone(1) !squad_name_exist(cit_kanaliz2_zombied_squad)} 2, {!actor_week_in_zone(1) !squad_name_exist(cit_kanaliz2_zombied_squad)} 0, 0
-
-[spawn_zombied_special]
-spawn_squads = cit_kanaliz2_zombied_squad
-spawn_num = {!squad_name_exist(cit_kanaliz2_zombied_squad) -yan_kill_brain_done ~20} 1, 0
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-;[exclusive]
-
-
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/dead_city/smart/cit_killers.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/dead_city/smart/cit_killers.ltx
deleted file mode 100644
index 0d780577..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/dead_city/smart/cit_killers.ltx
+++ /dev/null
@@ -1,81 +0,0 @@
-[smart_terrain]
-squad_id = 4
-max_population = 4
-respawn_params = respawn@cit_killers
-respawn_only_smart = false
-respawn_idle = 43200
-respawn_radius = 50
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = nil
-def_restr = cit_killers_base_zone
-;safe_restr = nil
-;spawn_point = cit_killers_merc_trader_spawn
-
-[respawn@cit_killers] ;-- Type: faction {killer} = faction base
-spawn_killer@novice
-spawn_killer@advanced
-spawn_killer@veteran
-spawn_killer_special
-spawn_killer_special_2
-spawn_killer_special_3
-
-[spawn_killer@novice]
-spawn_squads = merc_sim_squad_novice, merc_sim_squad_novice, merc_sim_squad_advanced
-spawn_num = {+cit_killers_aslan_dead +cit_killers_dushman_dead} 1, 2
-
-[spawn_killer@advanced]
-spawn_squads = merc_sim_squad_advanced, merc_sim_squad_advanced, merc_sim_squad_novice
-spawn_num = {+cit_killers_aslan_dead +cit_killers_dushman_dead} 1, 2
-
-[spawn_killer@veteran]
-spawn_squads = merc_sim_squad_veteran, merc_sim_squad_advanced, merc_sim_squad_advanced
-spawn_num = {+cit_killers_aslan_dead +cit_killers_dushman_dead} 0, 2
-
-[spawn_killer_special]
-spawn_squads = cit_killers_merc_guard_squad_1
-spawn_num = {!squad_name_exist(cit_killers_merc_guard_squad_1) -cit_killers_aslan_dead} 1, 0 ;{-cit_killers_dushman_dead}
-
-[spawn_killer_special_2]
-spawn_squads = cit_killers_merc_guard_squad_2
-spawn_num = {!squad_name_exist(cit_killers_merc_guard_squad_2) -cit_killers_aslan_dead} 1, 0 ;{-cit_killers_dushman_dead}
-
-[spawn_killer_special_3]
-spawn_squads = cit_killers_merc_guard_squad_3
-spawn_num = {!squad_name_exist(cit_killers_merc_guard_squad_3) -cit_killers_aslan_dead} 1, 0 ;{-cit_killers_dushman_dead}
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-[exclusive]
-cit_killers_merc_trader = dead_city\cit_killers_smart_logic.ltx
-cit_killers_merc_mechanic = dead_city\cit_killers_smart_logic.ltx
-cit_killers_merc_barman_mlr = dead_city\cit_killers_merc_barman_mlr_logic.ltx
-cit_killers_merc_medic = dead_city\cit_killers_smart_logic.ltx
-
-ds_killer_guide_main_base = dead_city\ds_killer_guide_main_base_logic.ltx
-
-cit_killers_beh_trade_job_1 = dead_city\cit_killers_smart_logic.ltx
-cit_killers_beh_tech_job_1 = dead_city\cit_killers_smart_logic.ltx
-
-cit_killers_camp_work_1 = dead_city\cit_killers_smart_logic.ltx
-cit_killers_camp_work_2 = dead_city\cit_killers_smart_logic.ltx
-cit_killers_camp_work_3 = dead_city\cit_killers_smart_logic.ltx
-cit_killers_camp_work_4 = dead_city\cit_killers_smart_logic.ltx
-cit_killers_camp_work_5 = dead_city\cit_killers_smart_logic.ltx
-cit_killers_camp_work_6 = dead_city\cit_killers_smart_logic.ltx
-cit_killers_camp_work_7 = dead_city\cit_killers_smart_logic.ltx
-cit_killers_camp_work_8 = dead_city\cit_killers_smart_logic.ltx
-cit_killers_camp_work_9 = dead_city\cit_killers_smart_logic.ltx
-cit_killers_camp_work_10 = dead_city\cit_killers_smart_logic.ltx
-cit_killers_camp_work_11 = dead_city\cit_killers_smart_logic.ltx
-cit_killers_camp_work_12 = dead_city\cit_killers_smart_logic.ltx
-
-faction_base_defense_enemy1 = dead_city\cit_killers_smart_logic.ltx
-faction_base_defense_enemy2 = dead_city\cit_killers_smart_logic.ltx
-faction_base_defense_enemy3 = dead_city\cit_killers_smart_logic.ltx
-faction_base_defense_enemy4 = dead_city\cit_killers_smart_logic.ltx
-faction_base_defense_enemy5 = dead_city\cit_killers_smart_logic.ltx
-faction_base_defense_enemy6 = dead_city\cit_killers_smart_logic.ltx
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/dead_city/smart/cit_killers_2.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/dead_city/smart/cit_killers_2.ltx
deleted file mode 100644
index ffadcec6..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/dead_city/smart/cit_killers_2.ltx
+++ /dev/null
@@ -1,34 +0,0 @@
-[smart_terrain]
-squad_id = 6
-max_population = 3
-respawn_params = respawn@cit_killers_2
-respawn_only_smart = false
-respawn_idle = 259200
-respawn_radius = 50
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = nil
-;def_restr = nil
-;safe_restr = nil
-;spawn_point = nil
-
-[respawn@cit_killers_2] ;-- Type:
-spawn_deserted_base
-
-
-[spawn_deserted_base]
-spawn_squads = monolith_sim_squad_veteran, monolith_sim_squad_advanced, monolith_sim_squad_novice
-spawn_num = {+cit_killers_aslan_dead +cit_killers_dushman_dead} 1, 0
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-[exclusive]
-faction_base_defense_enemy1 = dead_city\cit_killers_2_smart_logic
-faction_base_defense_enemy2 = dead_city\cit_killers_2_smart_logic
-faction_base_defense_enemy3 = dead_city\cit_killers_2_smart_logic
-faction_base_defense_enemy4 = dead_city\cit_killers_2_smart_logic
-faction_base_defense_enemy5 = dead_city\cit_killers_2_smart_logic
-faction_base_defense_enemy6 = dead_city\cit_killers_2_smart_logic
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/dead_city/smart/cit_killers_vs_bandits.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/dead_city/smart/cit_killers_vs_bandits.ltx
deleted file mode 100644
index ce2ce108..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/dead_city/smart/cit_killers_vs_bandits.ltx
+++ /dev/null
@@ -1,49 +0,0 @@
-[smart_terrain] ;Spawns for more quests as merc.
-squad_id = 7
-max_population = 0 ;broken npc path finding
-respawn_params = respawn@cit_killers_vs_bandits
-respawn_only_smart = false
-respawn_idle = 86400
-respawn_radius = 50
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = nil
-;def_restr = nil
-;safe_restr = nil
-;spawn_point = nil
-
-[respawn@cit_killers_vs_bandits] ;-- Type: faction {killer\bandits} = barracks\safezone
-;spawn_bandit_special
-;spawn_bandit_special_2
-;spawn_bandit_special_3
-spawn_killer_special
-spawn_killer_special_2
-
-
-;[spawn_bandit_special]
-;spawn_squads = cit_bandit_guard_squad_1
-;spawn_num = {!squad_name_exist(cit_bandit_guard_squad_1)} 1, 0
-
-;[spawn_bandit_special_2]
-;spawn_squads = cit_bandit_guard_squad_2
-;spawn_num = {!squad_name_exist(cit_bandit_guard_squad_2)} 1, 0
-
-;[spawn_bandit_special_3]
-;spawn_squads = cit_bandit_guard_squad_3
-;spawn_num = {!squad_name_exist(cit_bandit_guard_squad_3)} 1, 0
-
-[spawn_killer_special]
-spawn_squads = cit_killers_guard_squad_1
-spawn_num = {!squad_name_exist(cit_killers_guard_squad_1) -cit_killers_aslan_dead -cit_killers_dushman_dead} 1, 0
-
-[spawn_killer_special_2]
-spawn_squads = cit_killers_guard_squad_2
-spawn_num = {!squad_name_exist(cit_killers_guard_squad_2) -cit_killers_aslan_dead -cit_killers_dushman_dead} 1, 0
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-;[exclusive]
-
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/dead_city/smart/zombie_smart_ds_mlr_1.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/dead_city/smart/zombie_smart_ds_mlr_1.ltx
deleted file mode 100644
index e4a668ee..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/dead_city/smart/zombie_smart_ds_mlr_1.ltx
+++ /dev/null
@@ -1,34 +0,0 @@
-[smart_terrain]
-squad_id = 25
-max_population = 1
-respawn_params = respawn@zombie_smart_ds_mlr_1
-respawn_only_smart = false
-respawn_idle = 172800
-respawn_radius = 50
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = nil
-;def_restr = nil
-;safe_restr = nil
-;spawn_point = nil
-
-[respawn@zombie_smart_ds_mlr_1] ;-- Type: faction {zombied} = mhee...
-spawn_zombie
-spawn_mutants
-
-
-[spawn_zombie] ;-- Weak mutants - Rates of groups: ( 3 zombie )
-spawn_squads = simulation_zombie, simulation_zombie_3_6, simulation_mix_zombie
-spawn_num = {+yan_kill_brain_done} 0, 2
-
-[spawn_mutants] ;-- Normal mutants - Rates of groups: ( 2 dogs + 1 pseudodog + 2 cat )
-spawn_squads = simulation_dog, simulation_mix_dogs, simulation_pseudodog, simulation_cat, simulation_cat_3_5
-spawn_num = {+yan_kill_brain_done} 1, 0
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-;[exclusive]
-
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/dead_city/smart/zombie_smart_ds_mlr_2.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/dead_city/smart/zombie_smart_ds_mlr_2.ltx
deleted file mode 100644
index 7f2c8429..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/dead_city/smart/zombie_smart_ds_mlr_2.ltx
+++ /dev/null
@@ -1,33 +0,0 @@
-[smart_terrain]
-squad_id = 26
-max_population = 1
-respawn_params = respawn@zombie_smart_ds_mlr_2
-respawn_only_smart = false
-respawn_idle = 172800
-respawn_radius = 50
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = nil
-;def_restr = nil
-;safe_restr = nil
-;spawn_point = nil
-
-[respawn@zombie_smart_ds_mlr_2] ;-- Type: faction {zombied} = mhee...
-spawn_zombie
-spawn_mutants
-
-
-[spawn_zombie] ;-- Weak mutants - Rates of groups: ( 3 zombie )
-spawn_squads = simulation_zombie, simulation_zombie_3_6, simulation_mix_zombie
-spawn_num = {+bar_deactivate_radar_done} 0, 2
-
-[spawn_mutants] ;-- Normal mutants - Rates of groups: ( 2 dogs + 1 pseudodog + 2 cat )
-spawn_squads = simulation_dog, simulation_mix_dogs, simulation_pseudodog, simulation_cat, simulation_cat_3_5
-spawn_num = {+bar_deactivate_radar_done} 1, 0
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-;[exclusive]
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/dead_city/smarts/zombie_smart_ds_mlr_1.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/dead_city/smarts/zombie_smart_ds_mlr_1.ltx
deleted file mode 100644
index e4a668ee..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/dead_city/smarts/zombie_smart_ds_mlr_1.ltx
+++ /dev/null
@@ -1,34 +0,0 @@
-[smart_terrain]
-squad_id = 25
-max_population = 1
-respawn_params = respawn@zombie_smart_ds_mlr_1
-respawn_only_smart = false
-respawn_idle = 172800
-respawn_radius = 50
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = nil
-;def_restr = nil
-;safe_restr = nil
-;spawn_point = nil
-
-[respawn@zombie_smart_ds_mlr_1] ;-- Type: faction {zombied} = mhee...
-spawn_zombie
-spawn_mutants
-
-
-[spawn_zombie] ;-- Weak mutants - Rates of groups: ( 3 zombie )
-spawn_squads = simulation_zombie, simulation_zombie_3_6, simulation_mix_zombie
-spawn_num = {+yan_kill_brain_done} 0, 2
-
-[spawn_mutants] ;-- Normal mutants - Rates of groups: ( 2 dogs + 1 pseudodog + 2 cat )
-spawn_squads = simulation_dog, simulation_mix_dogs, simulation_pseudodog, simulation_cat, simulation_cat_3_5
-spawn_num = {+yan_kill_brain_done} 1, 0
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-;[exclusive]
-
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/dead_city/smarts/zombie_smart_ds_mlr_2.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/dead_city/smarts/zombie_smart_ds_mlr_2.ltx
deleted file mode 100644
index 7f2c8429..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/dead_city/smarts/zombie_smart_ds_mlr_2.ltx
+++ /dev/null
@@ -1,33 +0,0 @@
-[smart_terrain]
-squad_id = 26
-max_population = 1
-respawn_params = respawn@zombie_smart_ds_mlr_2
-respawn_only_smart = false
-respawn_idle = 172800
-respawn_radius = 50
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = nil
-;def_restr = nil
-;safe_restr = nil
-;spawn_point = nil
-
-[respawn@zombie_smart_ds_mlr_2] ;-- Type: faction {zombied} = mhee...
-spawn_zombie
-spawn_mutants
-
-
-[spawn_zombie] ;-- Weak mutants - Rates of groups: ( 3 zombie )
-spawn_squads = simulation_zombie, simulation_zombie_3_6, simulation_mix_zombie
-spawn_num = {+bar_deactivate_radar_done} 0, 2
-
-[spawn_mutants] ;-- Normal mutants - Rates of groups: ( 2 dogs + 1 pseudodog + 2 cat )
-spawn_squads = simulation_dog, simulation_mix_dogs, simulation_pseudodog, simulation_cat, simulation_cat_3_5
-spawn_num = {+bar_deactivate_radar_done} 1, 0
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-;[exclusive]
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/escape/devushka.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/escape/devushka.ltx
deleted file mode 100644
index a9b5bed2..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/escape/devushka.ltx
+++ /dev/null
@@ -1,180 +0,0 @@
-[logic@devushka]
-suitable = {=target_squad_name(devushka_squad)} true
-prior = 140
-active = walker@devushka_walk_1
-level_spot = special
-
-[walker@devushka]
-combat_ignore_cond = false
-combat_ignore_keep_when_attacked = false
-reach_distance = 10
-gather_items_enabled = false
-help_wounded_enabled = false
-corpse_detection_enabled = false
-invulnerable = false
-
-[walker@devushka_walk_1]:walker@devushka
-path_walk = guard_2_walk
-path_look = guard_2_look
-on_info = {=surge_started} walker@surge_1
-on_info2 = {=is_night} walker@sleeper_1
-on_info3 = {=is_rain} walker@rain_1
-combat_ignore_cond = false
-combat_ignore_keep_when_attacked = false
-reach_distance = 5
-gather_items_enabled = false
-help_wounded_enabled = true
-corpse_detection_enabled = true
-invulnerable = false
-on_game_timer = 6500 | remark@smoking_stand_3
-
-[walker@devushka_walk_2]:walker@devushka
-path_walk = surge_hide_9_walk
-path_look = surge_hide_9_look
-on_info = {=surge_started} walker@surge_1
-on_info2 = {=is_night} walker@sleeper_1
-on_info3 = {=is_rain} walker@rain_1
-combat_ignore_cond = false
-combat_ignore_keep_when_attacked = false
-reach_distance = 5
-gather_items_enabled = false
-help_wounded_enabled = true
-corpse_detection_enabled = true
-invulnerable = false
-on_game_timer = 500 | remark@smoking_stand_1
-
-[walker@devushka_walk_3]:walker@devushka
-path_walk = surge_hide_11_walk
-path_look = surge_hide_11_look
-on_info = {=surge_started} walker@surge_1
-on_info2 = {=is_night} walker@sleeper_1
-on_info3 = {=is_rain} walker@rain_1
-combat_ignore_cond = false
-combat_ignore_keep_when_attacked = false
-reach_distance = 5
-gather_items_enabled = false
-help_wounded_enabled = true
-corpse_detection_enabled = true
-invulnerable = false
-on_game_timer = 150 | remark@smoking_stand_1
-
-[walker@devushka_home_1]:walker@devushka
-path_walk = hide_2_walk
-path_look = hide_1_look
-on_info = {=surge_started} walker@surge_1
-on_info2 = {=is_night} walker@sleeper_1
-combat_ignore_cond = false
-combat_ignore_keep_when_attacked = false
-reach_distance = 5
-gather_items_enabled = true
-help_wounded_enabled = true
-corpse_detection_enabled = true
-invulnerable = false
-on_game_timer = 8000 | remark@sit_ass
-
-[walker@devushka_home_2]:walker@devushka
-path_walk = hide_2_walk
-path_look = hide_1_look
-on_info = {=surge_started} walker@surge_1
-on_info2 = {=is_night} walker@sleeper_1
-combat_ignore_cond = false
-combat_ignore_keep_when_attacked = false
-reach_distance = 5
-gather_items_enabled = true
-help_wounded_enabled = true
-corpse_detection_enabled = true
-invulnerable = false
-on_game_timer = 1500 | remark@eat_bread
-
-[walker@devushka_home_3]:walker@devushka
-path_walk = hide_2_walk
-path_look = hide_1_look
-on_info = {=surge_started} walker@surge_1
-;on_info2 = {=is_night} walker@sleeper_1
-combat_ignore_cond = false
-combat_ignore_keep_when_attacked = false
-reach_distance = 5
-gather_items_enabled = true
-help_wounded_enabled = true
-corpse_detection_enabled = true
-invulnerable = false
-on_game_timer = 3500 | walker@sleeper_1
-
-[remark@sit_ass]:walker@devushka
-anim = sit_ass
-on_info = {=surge_started} walker@surge
-on_game_timer = 10500 | walker@devushka_walk_2
-
-[remark@eat_bread]:walker@devushka
-anim = eat_bread
-on_info = {=surge_started} walker@surge
-on_game_timer = 800 | remark@use_pda
-
-[remark@use_pda]:walker@devushka
-anim = use_pda
-on_info = {=surge_started} walker@surge
-on_game_timer = 500 | walker@devushka_walk_1
-
-[remark@smoking_stand_1]:walker@devushka
-anim = smoking_stand
-on_info = {=surge_started} walker@surge
-on_game_timer = 900 | walker@devushka_home_2
-
-[remark@smoking_stand_2]:walker@devushka
-anim = smoking_stand
-on_info = {=surge_started} walker@surge
-on_game_timer = 900 | sleeper@sleeper_2
-
-[remark@smoking_stand_3]:walker@devushka
-anim = smoking_stand
-on_info = {=surge_started} walker@surge
-on_game_timer = 900 | campfire_point@devushka
-
-[campfire_point@devushka]:walker@devushka
-smart = esc_smart_terrain_2_12
-use_camp = true
-anim = idle, guard
-on_game_timer = 10500 | walker@devushka_home_1
-
-[walker@rain_1]
-path_walk = hide_2_walk
-path_look = hide_1_look
-on_info = {!is_rain} walker@devushka_home_1
-combat_ignore_cond = false
-combat_ignore_keep_when_attacked = false
-gather_items_enabled = false
-help_wounded_enabled = false
-corpse_detection_enabled = false
-invulnerable = false
-
-[walker@surge_1]
-path_walk = hide_2_walk
-path_look = hide_1_look
-on_info = {!surge_started} walker@devushka_home_1
-gather_items_enabled = false
-help_wounded_enabled = false
-corpse_detection_enabled = false
-invulnerable = false
-
-[walker@sleeper_1]
-path_walk = guardermlr_2_walk
-path_look = guardermlr_2_look
-on_info = {=surge_started} walker@surge_1
-gather_items_enabled = false
-help_wounded_enabled = false
-corpse_detection_enabled = false
-invulnerable = false
-;on_info = {!is_night} walker@devushka_home_2
-on_game_timer = 12500 | remark@smoking_stand_2
-
-[sleeper@sleeper_2]
-combat_ignore_cond = false
-combat_ignore_keep_when_attacked = false
-gather_items_enabled = false
-help_wounded_enabled = false
-corpse_detection_enabled = false
-invulnerable = false
-path_main = hide_2_walk
-meet = no_meet
-on_info = {!is_night} remark@eat_bread
-
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/escape/esc_2_12_stalker_fanat.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/escape/esc_2_12_stalker_fanat.ltx
deleted file mode 100644
index 03bd267f..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/escape/esc_2_12_stalker_fanat.ltx
+++ /dev/null
@@ -1,147 +0,0 @@
-[logic@esc_2_12_stalker_fanat]
-suitable = {=target_squad_name(esc_2_12_stalker_fanat_squad)} true
-prior = 140
-active = walker@guarder_2
-level_spot = quest_npc
-;on_combat = combat
-
-;[combat]
-;combat_type = {=cond_scheme_cover()} cover, {=cond_scheme_camper()} camper
-
-[walker@fanat]
-combat_ignore_cond = {=is_warfare} false, {=actor_true_enemy =check_enemy_name(actor)} false, false
-combat_ignore_keep_when_attacked = {=is_warfare} false, true
-invulnerable = {=is_warfare} false, {!actor_true_enemy} true, false
-use_camp = false
-gather_items_enabled = false
-help_wounded_enabled = false
-corpse_detection_enabled = false
-
-[walker@guarder_2]
-path_walk = guardermlr_2_walk
-path_look = guardermlr_2_look
-on_info = {=surge_started} walker@surge_1
-on_info2 = {=is_night} sleeper@sleeper_1
-on_info3 = {=is_rain} walker@rain_1
-combat_ignore_cond = {=is_warfare} false, {=actor_true_enemy =check_enemy_name(actor)} false, false
-combat_ignore_keep_when_attacked = {=is_warfare} false, true
-invulnerable = {=is_warfare} false, {!actor_true_enemy} true, false
-reach_distance = 10
-gather_items_enabled = false
-help_wounded_enabled = false
-corpse_detection_enabled = false
-on_game_timer = 11500 | walker@patrol_walk_1
-
-[walker@patrol_walk_1]
-path_walk = surge_hide_8_walk
-path_look = surge_hide_10_look
-on_info = {=surge_started} walker@surge_1
-on_info2 = {=is_night} sleeper@sleeper_1
-on_info3 = {=is_rain} walker@rain_1
-combat_ignore_cond = {=is_warfare} false, {=actor_true_enemy =check_enemy_name(actor)} false, false
-combat_ignore_keep_when_attacked = {=is_warfare} false, true
-invulnerable = {=is_warfare} false, {!actor_true_enemy} true, false
-gather_items_enabled = false
-help_wounded_enabled = false
-corpse_detection_enabled = false
-on_game_timer = 3000 | remark@drink_vodka
-
-[walker@patrol_walk_2]
-path_walk = guardermlr_2_walk
-path_look = guardermlr_2_look
-on_info = {=surge_started} walker@surge_1
-on_info2 = {=is_night} sleeper@sleeper_1
-on_info3 = {=is_rain} walker@rain_1
-combat_ignore_cond = {=is_warfare} false, {=actor_true_enemy =check_enemy_name(actor)} false, false
-combat_ignore_keep_when_attacked = {=is_warfare} false, true
-invulnerable = {=is_warfare} false, {!actor_true_enemy} true, false
-gather_items_enabled = false
-help_wounded_enabled = false
-corpse_detection_enabled = false
-on_game_timer = 10500 | walker@fanat_home_1
-
-[walker@fanat_home_1]
-path_walk = surge_hide_8_walk
-path_look = surge_hide_10_look
-on_info = {=surge_started} walker@surge_1
-on_info2 = {=is_night} sleeper@sleeper_1
-on_info3 = {=is_rain} walker@rain_1
-combat_ignore_cond = {=is_warfare} false, {=actor_true_enemy =check_enemy_name(actor)} false, false
-combat_ignore_keep_when_attacked = {=is_warfare} false, true
-invulnerable = {=is_warfare} false, {!actor_true_enemy} true, false
-gather_items_enabled = false
-help_wounded_enabled = false
-corpse_detection_enabled = false
-on_game_timer = 450 | remark@fold_arms
-
-[walker@fanat_home_2]
-path_walk = surge_hide_8_walk
-path_look = surge_hide_10_look
-on_info = {=surge_started} walker@surge_1
-on_info2 = {=is_night} sleeper@sleeper_1
-on_info3 = {=is_rain} walker@rain_1
-combat_ignore_cond = {=is_warfare} false, {=actor_true_enemy =check_enemy_name(actor)} false, false
-combat_ignore_keep_when_attacked = {=is_warfare} false, true
-invulnerable = {=is_warfare} false, {!actor_true_enemy} true, false
-gather_items_enabled = false
-help_wounded_enabled = false
-corpse_detection_enabled = false
-on_game_timer = 11500 | remark@eat_bread
-
-[remark@drink_vodka]:walker@fanat
-anim = drink_vodka_stand
-on_info = {=surge_started} walker@surge_1
-on_info2 = {=is_night} sleeper@sleeper_1
-on_game_timer = 190 | walker@patrol_walk_2
-
-[remark@fold_arms]:walker@fanat
-anim = fold_arms
-on_info = {=surge_started} walker@surge_1
-on_info2 = {=is_night} sleeper@sleeper_1
-on_game_timer = 5500 | walker@fanat_home_2
-
-[remark@eat_bread]:walker@fanat
-anim = eat_bread
-on_info = {=surge_started} walker@surge_1
-on_info2 = {=is_night} sleeper@sleeper_1
-on_game_timer = 800 | remark@use_pda
-
-[remark@use_pda]:walker@fanat
-anim = use_pda
-on_info = {=surge_started} walker@surge_1
-on_info2 = {=is_night} sleeper@sleeper_1
-on_game_timer = 400 | walker@guarder_2
-
-[walker@rain_1]
-path_walk = surge_hide_8_walk
-path_look = surge_hide_10_look
-on_info = {=surge_started} walker@surge_1
-on_info2 = {=is_night} sleeper@sleeper_1
-on_info3 = {!is_rain} walker@guarder_2
-combat_ignore_cond = {=is_warfare} false, {=actor_true_enemy =check_enemy_name(actor)} false, false
-combat_ignore_keep_when_attacked = {=is_warfare} false, true
-invulnerable = {=is_warfare} false, {!actor_true_enemy} true, false
-gather_items_enabled = false
-help_wounded_enabled = false
-corpse_detection_enabled = false
-invulnerable = false
-
-[walker@surge_1]
-path_walk = surge_hide_8_walk
-path_look = surge_hide_10_look
-on_info = {!surge_started} walker@guarder_2
-gather_items_enabled = false
-help_wounded_enabled = false
-corpse_detection_enabled = false
-
-[sleeper@sleeper_1]
-combat_ignore_cond = {=is_warfare} false, {=actor_true_enemy =check_enemy_name(actor)} false, true
-combat_ignore_keep_when_attacked = {=is_warfare} false, false
-gather_items_enabled = false
-help_wounded_enabled = false
-corpse_detection_enabled = false
-invulnerable = {=is_warfare} false, {!actor_true_enemy} true, false
-path_main = fanat_sleeper
-meet = no_meet
-on_info = {!is_night} remark@eat_bread
-
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/escape/esc_2_12_stalker_wolf.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/escape/esc_2_12_stalker_wolf.ltx
deleted file mode 100644
index 6024a14a..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/escape/esc_2_12_stalker_wolf.ltx
+++ /dev/null
@@ -1,146 +0,0 @@
-[logic@esc_2_12_stalker_wolf]
-active = walker@guarder_1
-level_spot = quest_npc
-suitable = {=check_npc_name(esc_2_12_stalker_wolf)} true
-prior = 140
-
-[walker@wolf]
-combat_ignore_cond = {=is_warfare} false, {=actor_true_enemy =check_enemy_name(actor)} false, true
-combat_ignore_keep_when_attacked = {=is_warfare} false, true
-invulnerable = {=is_warfare} false, {!actor_true_enemy} true, false
-use_camp = false
-meet = meet@send_far
-gather_items_enabled = false
-help_wounded_enabled = false
-corpse_detection_enabled = false
-
-[walker@guarder_1]:walker@wolf
-path_walk = guarder_1_walk
-path_look = guarder_1_look
-on_info = {=surge_started} walker@hide_1
-on_info2 = {=is_night} sleeper@sleeper_1
-on_info3 = {=is_heavy_rain} walker@rain_1
-gather_items_enabled = false
-help_wounded_enabled = false
-corpse_detection_enabled = false
-combat_ignore_cond = {!is_enemy_actor_or_companion !enemy_in_zone(esc_2_12_stalker_wolf_kill_zone)} true, false
-combat_ignore_keep_when_attacked = false
-on_game_timer = 11500 | walker@patrol_walk_1
-
-[walker@guarder_2]:walker@wolf
-path_walk = guarder_1_walk
-path_look = guarder_1_look
-on_info = {=surge_started} walker@hide_1
-on_info2 = {=is_night} sleeper@sleeper_1
-on_info3 = {=is_heavy_rain} walker@rain_1
-gather_items_enabled = false
-help_wounded_enabled = false
-corpse_detection_enabled = false
-combat_ignore_cond = {!is_enemy_actor_or_companion !enemy_in_zone(esc_2_12_stalker_wolf_kill_zone)} true, false
-combat_ignore_keep_when_attacked = false
-on_game_timer = 11500 | walker@patrol_walk_3
-
-[walker@patrol_walk_1]:walker@wolf
-path_walk = nimble_sleeper
-path_look = surge_hide_1_walk
-on_info = {=surge_started} walker@hide_1
-on_info2 = {=is_night} sleeper@sleeper_1
-on_info3 = {=is_heavy_rain} walker@rain_1
-gather_items_enabled = false
-help_wounded_enabled = false
-corpse_detection_enabled = false
-combat_ignore_cond = {!is_enemy_actor_or_companion !enemy_in_zone(esc_2_12_stalker_wolf_kill_zone)} true, false
-combat_ignore_keep_when_attacked = false
-meet = meet@send_far
-on_game_timer = 300 | remark@fold_arms
-
-[walker@patrol_walk_2]:walker@wolf
-path_walk = surge_hide_1_walk
-path_look = surge_hide_1_look
-on_info = {=surge_started} walker@hide_1
-on_info2 = {=is_night} sleeper@sleeper_1
-on_info3 = {=is_heavy_rain} walker@rain_1
-gather_items_enabled = false
-help_wounded_enabled = false
-corpse_detection_enabled = false
-combat_ignore_cond = {!is_enemy_actor_or_companion !enemy_in_zone(esc_2_12_stalker_wolf_kill_zone)} true, false
-combat_ignore_keep_when_attacked = false
-meet = meet@send_far
-on_game_timer = 450 | remark@eat_bread
-
-[walker@patrol_walk_3]:walker@wolf
-path_walk = surge_hide_9_walk
-path_look = surge_hide_9_look
-on_info = {=surge_started} walker@hide_1
-on_info2 = {=is_night} sleeper@sleeper_1
-on_info3 = {=is_heavy_rain} walker@rain_1
-gather_items_enabled = false
-help_wounded_enabled = false
-corpse_detection_enabled = false
-combat_ignore_cond = {!is_enemy_actor_or_companion !enemy_in_zone(esc_2_12_stalker_wolf_kill_zone)} true, false
-combat_ignore_keep_when_attacked = false
-on_game_timer = 150 | remark@fold_arms
-
-[remark@fold_arms]:walker@wolf
-anim = fold_arms
-on_info = {=surge_started} walker@hide_1
-on_info2 = {=is_night} sleeper@sleeper_1
-on_game_timer = 2500 | walker@patrol_walk_2
-
-[remark@eat_bread]:walker@wolf
-anim = eat_bread
-on_info = {=surge_started} walker@hide_1
-on_info2 = {=is_night} sleeper@sleeper_1
-on_game_timer = 800 | remark@use_pda
-
-[remark@use_pda]:walker@wolf
-anim = use_pda
-on_info = {=surge_started} walker@hide_1
-on_info2 = {=is_night} sleeper@sleeper_1
-on_game_timer = 500 | walker@guarder_2
-
-[walker@rain_1]:walker@wolf
-path_walk = hide_1_walk
-path_look = hide_1_look
-on_info = {=surge_started} walker@hide_1
-on_info2 = {=is_night} sleeper@sleeper_1
-on_info3 = {!is_heavy_rain} walker@guarder_1
-gather_items_enabled = false
-help_wounded_enabled = false
-corpse_detection_enabled = false
-invulnerable = false
-
-[walker@hide_1]:walker@wolf
-path_walk = hide_1_walk
-path_look = hide_1_look
-on_info = {!surge_started} walker@guarder_1
-out_restr = esc_smart_terrain_2_12_surge_hide_a1
-gather_items_enabled = false
-help_wounded_enabled = false
-corpse_detection_enabled = false
-combat_ignore_cond = {!enemy_in_zone(esc_2_12_stalker_wolf_kill_zone)} true, false
-combat_ignore_keep_when_attacked = false
-
-[sleeper@sleeper_1]
-combat_ignore_cond = {=is_warfare} false, {=actor_true_enemy =check_enemy_name(actor)} false, true
-combat_ignore_keep_when_attacked = {=is_warfare} false, false
-gather_items_enabled = false
-help_wounded_enabled = false
-corpse_detection_enabled = false
-invulnerable = {=is_warfare} false, {!actor_true_enemy} true, false
-path_main = nimble_sleeper ;surge_hide_1_walk
-meet = no_meet
-on_info = {!is_night} remark@eat_bread
-
-[meet@send_far]
-close_anim = nil
-close_victim = nil
-far_anim = nil
-far_victim = nil
-close_snd_hello = nil
-close_snd_bye = nil
-use = {=actor_enemy} false, {=dist_to_actor_le(3)} true, false
-snd_on_use = {=is_wounded} nil, {=actor_enemy} nil, {=has_enemy} meet_use_no_fight, {=actor_has_weapon} meet_use_no_weapon, {!dist_to_actor_le(3)} nil, meet_use_no_talk_leader
-meet_on_talking = false
-trade_enable = false
-allow_break = false
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/escape/esc_3_16_military_mechan_logic.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/escape/esc_3_16_military_mechan_logic.ltx
deleted file mode 100644
index 084926ae..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/escape/esc_3_16_military_mechan_logic.ltx
+++ /dev/null
@@ -1,110 +0,0 @@
-[logic@army_south_mechan_mlr]
-suitable = {=check_npc_name(army_south_mechan_mlr)} true, {=check_npc_mechanic} true
-prior = 200
-active = walker@base_1
-can_select_weapon = {=is_warfare} true, false
-level_spot = mechanic
-trade = items\trade\trade_generic_mechanic.ltx
-dont_keep_items = true
-
-[walker@base_1]
-path_walk = south_mechan_1_walk
-path_look = south_mechan_1_look
-on_info = {=surge_started} walker@surge_1
-on_info2 = {=is_night} sleeper@sleeper_1
-on_info3 = {=is_heavy_rain} walker@rain_1
-on_info4 = {+awr_army_south_mechan_mlr_access} walker@mechan_mlr_access
-use_camp = false
-combat_ignore_cond = {=is_warfare} false, {=actor_true_enemy =check_enemy_name(actor)} false, true
-combat_ignore_keep_when_attacked = {=is_warfare} false, true
-invulnerable = {=is_warfare} false, {!actor_true_enemy} true, false
-gather_items_enabled = false
-help_wounded_enabled = false
-corpse_detection_enabled = false
-on_game_timer = 16050 | walker@base_2
-
-[walker@base_2]
-path_walk = south_mechan_hide_1_walk
-path_look = south_mechan_hide_1_look
-on_info = {=surge_started} walker@surge_1
-on_info2 = {=is_night} sleeper@sleeper_1
-on_info3 = {=is_heavy_rain} walker@rain_1
-use_camp = false
-combat_ignore_cond = {=is_warfare} false, {=actor_true_enemy =check_enemy_name(actor)} false, true
-combat_ignore_keep_when_attacked = {=is_warfare} false, true
-invulnerable = {=is_warfare} false, {!actor_true_enemy} true, false
-gather_items_enabled = false
-help_wounded_enabled = false
-corpse_detection_enabled = false
-on_game_timer = 15000 | remark@drink_vodka
-
-[remark@drink_vodka]:walker@base_2
-anim = animpoint_sit_ass_drink_vodka
-on_game_timer = 950 | walker@base_1
-
-[walker@rain_1]
-path_walk = south_mechan_hide_1_walk
-path_look = south_mechan_hide_1_look
-on_info = {!is_heavy_rain} walker@base_1
-gather_items_enabled = false
-help_wounded_enabled = false
-corpse_detection_enabled = false
-invulnerable = {=is_warfare} false, {!actor_true_enemy} true, false
-combat_ignore_cond = {=is_warfare} false, {=actor_true_enemy =check_enemy_name(actor)} false, true
-combat_ignore_keep_when_attacked = {=is_warfare} false, true
-use_camp = false
-
-[walker@surge_1]
-path_walk = south_mechan_hide_1_walk
-path_look = south_mechan_hide_1_look
-on_info = {!surge_started} walker@base_1
-gather_items_enabled = false
-help_wounded_enabled = false
-corpse_detection_enabled = false
-invulnerable = {=is_warfare} false, {!actor_true_enemy} true, false
-combat_ignore_cond = {=is_warfare} false, {=actor_true_enemy =check_enemy_name(actor)} false, true
-combat_ignore_keep_when_attacked = {=is_warfare} false, true
-use_camp = false
-meet = meet
-
-[sleeper@sleeper_1]
-combat_ignore_cond = {=is_warfare} false, {=actor_true_enemy =check_enemy_name(actor)} false, true
-combat_ignore_keep_when_attacked = {=is_warfare} false, true
-gather_items_enabled = false
-help_wounded_enabled = false
-corpse_detection_enabled = false
-invulnerable = {=is_warfare} false, {!actor_true_enemy} true, false
-path_main = south_mechan_sleeper
-meet = no_meet
-on_info = {!is_night} walker@base_1
-
-[walker@mechan_mlr_access]
-path_walk = esc_1_walk
-path_look = esc_1_look
-gather_items_enabled = false
-help_wounded_enabled = false
-on_game_timer = 25 | remark@drink
-corpse_detection_enabled = false
-invulnerable = {=is_warfare} false, {!actor_true_enemy} true, false
-combat_ignore_cond = {=is_warfare} false, {=actor_true_enemy =check_enemy_name(actor)} false, true
-combat_ignore_keep_when_attacked = {=is_warfare} false, true
-meet = no_meet
-
-[remark@drink]:walker@mechan_mlr_access
-anim = animpoint_sit_ass_drink_vodka
-meet = meet
-on_game_timer = 2000 | walker@base_1 %=awr_timer_msg_off%
-
-[meet]
-close_anim = nil
-close_victim = nil
-far_anim = nil
-far_victim = nil
-close_distance = 0
-far_distance = 0
-close_snd_distance = 3
-abuse = false
-use = {=actor_enemy} false, true
-allow_break = false
-meet_on_talking = false
-trade_enable = false
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/escape/esc_3_16_military_trader_logic.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/escape/esc_3_16_military_trader_logic.ltx
deleted file mode 100644
index 31cec1e7..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/escape/esc_3_16_military_trader_logic.ltx
+++ /dev/null
@@ -1,109 +0,0 @@
-[logic@esc_3_16_military_trader]
-suitable = {=check_npc_name(esc_3_16_military_trader)} true, {=check_npc_trader} true
-prior = 200
-active = walker@mil_1
-level_spot = trader
-can_select_weapon = {=is_warfare} true, false
-dont_keep_items = true
-trade = items\trade\trade_military_esc.ltx
-
-[walker@mil_1]
-path_walk = military_trader_1_walk
-path_look = military_trader_1_look
-on_info = {=is_night} sleeper@milit
-invulnerable = {=is_warfare} false, {!actor_true_enemy} true, false
-combat_ignore_cond = {=is_warfare} false, {=actor_true_enemy =check_enemy_name(actor)} false, true
-combat_ignore_keep_when_attacked = {=is_warfare} false, true
-gather_items_enabled = false
-help_wounded_enabled = false
-corpse_detection_enabled = false
-use_camp = false
-meet = meet
-on_game_timer = 15000 | walker@mil_2
-
-[walker@mil_2]
-path_walk = esc_1_walk
-path_look = south_mechan_1_look
-on_info = {=surge_started} walker@surge_1
-on_info2 = {=is_night} sleeper@milit
-on_info3 = {=is_heavy_rain} walker@rain_1
-invulnerable = {=is_warfare} false, {!actor_true_enemy} true, false
-combat_ignore_cond = {=is_warfare} false, {=actor_true_enemy =check_enemy_name(actor)} false, true
-combat_ignore_keep_when_attacked = {=is_warfare} false, true
-gather_items_enabled = false
-help_wounded_enabled = false
-corpse_detection_enabled = false
-use_camp = false
-meet = meet
-on_game_timer = 350 | beh@mil_3
-
-[walker@rain_1]
-path_walk = military_trader_1_walk
-path_look = military_trader_1_look
-on_info = {!is_heavy_rain} walker@mil_1
-gather_items_enabled = false
-help_wounded_enabled = false
-corpse_detection_enabled = false
-invulnerable = {=is_warfare} false, {!actor_true_enemy} true, false
-combat_ignore_cond = {=is_warfare} false, {=actor_true_enemy =check_enemy_name(actor)} false, true
-combat_ignore_keep_when_attacked = {=is_warfare} false, true
-use_camp = false
-meet = meet
-
-[walker@surge_1]
-path_walk = military_trader_1_walk
-path_look = military_trader_1_look
-on_info = {!surge_started} walker@mil_1
-gather_items_enabled = false
-help_wounded_enabled = false
-corpse_detection_enabled = false
-invulnerable = {=is_warfare} false, {!actor_true_enemy} true, false
-combat_ignore_cond = {=is_warfare} false, {=actor_true_enemy =check_enemy_name(actor)} false, true
-combat_ignore_keep_when_attacked = {=is_warfare} false, true
-use_camp = false
-meet = meet
-
-[sleeper@milit]
-combat_ignore_cond = {=is_warfare} false, {=actor_true_enemy =check_enemy_name(actor)} false, true
-combat_ignore_keep_when_attacked = {=is_warfare} false, true
-gather_items_enabled = false
-help_wounded_enabled = false
-corpse_detection_enabled = false
-invulnerable = {=is_warfare} false, {!actor_true_enemy} true, false
-path_main = military_trader_sleeper
-meet = no_meet
-on_info = {!is_night} walker@mil_1
-
-[meet]
-close_anim = nil
-close_victim = nil
-far_anim = nil
-far_victim = nil
-close_distance = 0
-far_distance = 0
-close_snd_distance = 3
-abuse = false
-use = {=actor_enemy} false, true
-allow_break = false
-meet_on_talking = false
-trade_enable = false ;{+zaim1} false, {+zaim2} false, {+zaim3} false, true
-
-[beh@general]
-target = waypoint
-walk_dist = 100
-jog_dist = 220
-walk_anim = walk
-jog_anim = rush
-run_anim = rush
-invulnerable = {=is_warfare} false, {!actor_true_enemy} true, false
-combat_ignore_cond = {=is_warfare} false, {=actor_true_enemy =check_enemy_name(actor)} false, true
-combat_ignore_keep_when_attacked = {=is_warfare} false, true
-gather_items_enabled = false
-help_wounded_enabled = false
-corpse_detection_enabled = false
-use_camp = false
-meet = meet
-
-[beh@mil_3]:beh@general
-pt1 = 15000, fold_arms | pos: -139.45146179199, -29.689914703369, -351.18307495117 look: -139.47183227539, -29.690269470215, -352.20761108398
-on_game_timer = 15000 | walker@mil_1
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/escape/esc_endless_night_spawn_logic_1.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/escape/esc_endless_night_spawn_logic_1.ltx
deleted file mode 100644
index 8a1d3f4e..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/escape/esc_endless_night_spawn_logic_1.ltx
+++ /dev/null
@@ -1,50 +0,0 @@
-[logic]
-active = ph_idle@wait_actor
-
-[ph_idle@wait_actor]
-on_info = {=actor_near_smart(esc_smart_terrain_1_11) =is_night} ph_idle@spawn_night_monster_1, {=actor_near_smart(esc_smart_terrain_1_11) =is_dark_night} ph_idle@spawn_night_monster_1
-on_info2 = {=actor_near_smart(esc_smart_terrain_4_9) =is_night} ph_idle@spawn_night_monster_2, {=actor_near_smart(esc_smart_terrain_4_9) =is_dark_night} ph_idle@spawn_night_monster_2
-on_info3 = {=actor_near_smart(esc_smart_terrain_4_11) =is_night} ph_idle@spawn_night_monster_3, {=actor_near_smart(esc_smart_terrain_4_11) =is_dark_night} ph_idle@spawn_night_monster_3
-on_info4 = {=actor_near_smart(esc_smart_terrain_5_12) =is_night} ph_idle@spawn_night_monster_4, {=actor_near_smart(esc_smart_terrain_5_12) =is_dark_night} ph_idle@spawn_night_monster_4
-
-[ph_idle@spawn_night_monster_1]
-on_info = {~10} %=create_squad(simulation_pseudodog_night:esc_smart_terrain_1_11)% ph_idle@reset, {~10} %=create_squad(simulation_dog_night:esc_smart_terrain_1_11)% ph_idle@reset, {~10} %=create_squad(simulation_tushkano_night:esc_smart_terrain_1_11)% ph_idle@reset, {~10} %=create_squad(simulation_cat_night:esc_smart_terrain_1_11)% ph_idle@reset, ph_idle@wait_reset
-
-;[ph_idle@spawn_dark_monster_1]
-on_info = {~10} %=create_squad(simulation_pseudodog_night:esc_smart_terrain_1_11)% ph_idle@reset, {~10} %=create_squad(simulation_dog_night:esc_smart_terrain_1_11)% ph_idle@reset, {~10} %=create_squad(simulation_tushkano_night:esc_smart_terrain_1_11)% ph_idle@reset, {~10} %=create_squad(simulation_cat_night:esc_smart_terrain_1_11)% ph_idle@reset, ph_idle@wait_reset
-
-[ph_idle@reset]
-on_game_timer = 86400 | ph_idle@wait_actor
-
-[ph_idle@spawn_night_monster_2]
-on_info = {~10} %=create_squad(simulation_snork_night:esc_smart_terrain_4_9)% ph_idle@reset_2, {~10} %=create_squad(simulation_fracture_night:esc_smart_terrain_4_9)% ph_idle@reset_2, {~10} %=create_squad(simulation_tushkano_night:esc_smart_terrain_4_9)% ph_idle@reset_2, {~10} %=create_squad(simulation_pseudodog_night:esc_smart_terrain_4_9)% ph_idle@reset_2, ph_idle@wait_reset
-
-;[ph_idle@spawn_dark_monster_2]
-on_info = {~10} %=create_squad(simulation_snork_night:esc_smart_terrain_4_9)% ph_idle@reset_2, {~10} %=create_squad(simulation_fracture_night:esc_smart_terrain_4_9)% ph_idle@reset_2, {~10} %=create_squad(simulation_tushkano_night:esc_smart_terrain_4_9)% ph_idle@reset_2, {~10} %=create_squad(simulation_pseudodog_night:esc_smart_terrain_4_9)% ph_idle@reset_2, ph_idle@wait_reset
-
-[ph_idle@reset_2]
-on_game_timer = 86400 | ph_idle@wait_actor
-
-[ph_idle@spawn_night_monster_3]
-on_info = {~10} %=create_squad(simulation_tushkano_night:esc_smart_terrain_4_11)% ph_idle@reset_3, {~10} %=create_squad(simulation_dog_night:esc_smart_terrain_4_11)% ph_idle@reset_3, {~10} %=create_squad(simulation_boar_night:esc_smart_terrain_4_11)% ph_idle@reset_3, {~10} %=create_squad(simulation_cat_night:esc_smart_terrain_4_11)% ph_idle@reset_3, ph_idle@wait_reset
-
-;[ph_idle@spawn_dark_monster_3]
-on_info = {~10} %=create_squad(simulation_tushkano_night:esc_smart_terrain_4_11)% ph_idle@reset_3, {~10} %=create_squad(simulation_dog_night:esc_smart_terrain_4_11)% ph_idle@reset_3, {~10} %=create_squad(simulation_boar_night:esc_smart_terrain_4_11)% ph_idle@reset_3, {~10} %=create_squad(simulation_cat_night:esc_smart_terrain_4_11)% ph_idle@reset_3, ph_idle@wait_reset
-
-[ph_idle@reset_3]
-on_game_timer = 86400 | ph_idle@wait_actor
-
-[ph_idle@spawn_night_monster_4]
-on_info = {~10} %=create_squad(simulation_cat_night:esc_smart_terrain_5_12)% ph_idle@reset_4, {~10} %=create_squad(simulation_dog_night:esc_smart_terrain_5_12)% ph_idle@reset_4, {~10} %=create_squad(simulation_tushkano_night:esc_smart_terrain_5_12)% ph_idle@reset_4, {~10} %=create_squad(simulation_boar_night:esc_smart_terrain_5_12)% ph_idle@reset_4, ph_idle@wait_reset
-
-;[ph_idle@spawn_dark_monster_4]
-on_info = {~10} %=create_squad(simulation_cat_night:esc_smart_terrain_5_12)% ph_idle@reset_4, {~10} %=create_squad(simulation_dog_night:esc_smart_terrain_5_12)% ph_idle@reset_4, {~10} %=create_squad(simulation_tushkano_night:esc_smart_terrain_5_12)% ph_idle@reset_4, {~10} %=create_squad(simulation_boar_night:esc_smart_terrain_5_12)% ph_idle@reset_4, ph_idle@wait_reset
-
-[ph_idle@reset_4]
-on_game_timer = 86400 | ph_idle@wait_actor
-
-[ph_idle@wait_reset]
-on_game_timer = 580 | ph_idle@wait_actor
-
-[collide]
-ignore_static
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/escape/esc_endless_night_spawn_logic_2.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/escape/esc_endless_night_spawn_logic_2.ltx
deleted file mode 100644
index cd708f10..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/escape/esc_endless_night_spawn_logic_2.ltx
+++ /dev/null
@@ -1,50 +0,0 @@
-[logic]
-active = ph_idle@wait_actor
-
-[ph_idle@wait_actor]
-on_info = {=actor_near_smart(esc_smart_terrain_8_9) =is_night} ph_idle@spawn_night_monster_1, {=actor_near_smart(esc_smart_terrain_8_9) =is_dark_night} ph_idle@spawn_night_monster_1
-on_info2 = {=actor_near_smart(esc_smart_terrain_8_10) =is_night} ph_idle@spawn_night_monster_2, {=actor_near_smart(esc_smart_terrain_8_10) =is_dark_night} ph_idle@spawn_night_monster_2
-on_info3 = {=actor_near_smart(esc_smart_terrain_9_7) =is_night} ph_idle@spawn_night_monster_3, {=actor_near_smart(esc_smart_terrain_9_7) =is_dark_night} ph_idle@spawn_night_monster_3
-on_info4 = {=actor_near_smart(esc_smart_terrain_9_10) =is_night} ph_idle@spawn_night_monster_4, {=actor_near_smart(esc_smart_terrain_9_10) =is_dark_night} ph_idle@spawn_night_monster_4
-
-[ph_idle@spawn_night_monster_1]
-on_info = {~10} %=create_squad(simulation_pseudodog_night:esc_smart_terrain_8_9)% ph_idle@reset, {~10} %=create_squad(simulation_dog_night:esc_smart_terrain_8_9)% ph_idle@reset, {~10} %=create_squad(simulation_tushkano_night:esc_smart_terrain_8_9)% ph_idle@reset, {~10} %=create_squad(simulation_cat_night:esc_smart_terrain_8_9)% ph_idle@reset, ph_idle@wait_reset
-
-;[ph_idle@spawn_dark_monster_1]
-on_info = {~10} %=create_squad(simulation_pseudodog_night:esc_smart_terrain_8_9)% ph_idle@reset, {~10} %=create_squad(simulation_dog_night:esc_smart_terrain_8_9)% ph_idle@reset, {~10} %=create_squad(simulation_tushkano_night:esc_smart_terrain_8_9)% ph_idle@reset, {~10} %=create_squad(simulation_cat_night:esc_smart_terrain_8_9)% ph_idle@reset, ph_idle@wait_reset
-
-[ph_idle@reset]
-on_game_timer = 86400 | ph_idle@wait_actor
-
-[ph_idle@spawn_night_monster_2]
-on_info = {~10} %=create_squad(simulation_snork_night:esc_smart_terrain_8_10)% ph_idle@reset_2, {~10} %=create_squad(simulation_fracture_night:esc_smart_terrain_8_10)% ph_idle@reset_2, {~10} %=create_squad(simulation_boar_night:esc_smart_terrain_8_10)% ph_idle@reset_2, {~10} %=create_squad(simulation_pseudodog_night:esc_smart_terrain_8_10)% ph_idle@reset_2, ph_idle@wait_reset
-
-;[ph_idle@spawn_dark_monster_2]
-on_info = {~10} %=create_squad(simulation_snork_night:esc_smart_terrain_8_10)% ph_idle@reset_2, {~10} %=create_squad(simulation_fracture_night:esc_smart_terrain_8_10)% ph_idle@reset_2, {~10} %=create_squad(simulation_boar_3_5_night:esc_smart_terrain_8_10)% ph_idle@reset_2, {~10} %=create_squad(simulation_pseudodog_night:esc_smart_terrain_8_10)% ph_idle@reset_2, ph_idle@wait_reset
-
-[ph_idle@reset_2]
-on_game_timer = 86400 | ph_idle@wait_actor
-
-[ph_idle@spawn_night_monster_3]
-on_info = {~10} %=create_squad(simulation_tushkano_night:esc_smart_terrain_9_7)% ph_idle@reset_3, {~10} %=create_squad(simulation_dog_night:esc_smart_terrain_9_7)% ph_idle@reset_3, {~10} %=create_squad(simulation_boar_night:esc_smart_terrain_9_7)% ph_idle@reset_3, {~10} %=create_squad(simulation_cat_night:esc_smart_terrain_9_7)% ph_idle@reset_3, ph_idle@wait_reset
-
-;[ph_idle@spawn_dark_monster_3]
-on_info = {~10} %=create_squad(simulation_tushkano_night:esc_smart_terrain_9_7)% ph_idle@reset_3, {~10} %=create_squad(simulation_dog_night:esc_smart_terrain_9_7)% ph_idle@reset_3, {~10} %=create_squad(simulation_boar_night:esc_smart_terrain_9_7)% ph_idle@reset_3, {~10} %=create_squad(simulation_cat_night:esc_smart_terrain_9_7)% ph_idle@reset_3, ph_idle@wait_reset
-
-[ph_idle@reset_3]
-on_game_timer = 86400 | ph_idle@wait_actor
-
-[ph_idle@spawn_night_monster_4]
-on_info = {~10} %=create_squad(simulation_lurker_blue_night:esc_smart_terrain_9_10)% ph_idle@reset_4, {~10} %=create_squad(simulation_dog_night:esc_smart_terrain_9_10)% ph_idle@reset_4, {~10} %=create_squad(simulation_tushkano_night:esc_smart_terrain_9_10)% ph_idle@reset_4, {~10} %=create_squad(simulation_boar_night:esc_smart_terrain_9_10)% ph_idle@reset_4, ph_idle@wait_reset
-
-;[ph_idle@spawn_dark_monster_4]
-on_info = {~10} %=create_squad(simulation_lurker_blue_night:esc_smart_terrain_9_10)% ph_idle@reset_4, {~10} %=create_squad(simulation_dog_night:esc_smart_terrain_9_10)% ph_idle@reset_4, {~10} %=create_squad(simulation_tushkano_night:esc_smart_terrain_9_10)% ph_idle@reset_4, {~10} %=create_squad(simulation_boar_night:esc_smart_terrain_9_10)% ph_idle@reset_4, ph_idle@wait_reset
-
-[ph_idle@reset_4]
-on_game_timer = 86400 | ph_idle@wait_actor
-
-[ph_idle@wait_reset]
-on_game_timer = 580 | ph_idle@wait_actor
-
-[collide]
-ignore_static
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/escape/esc_endless_night_spawn_logic_3.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/escape/esc_endless_night_spawn_logic_3.ltx
deleted file mode 100644
index 3b0a0ccb..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/escape/esc_endless_night_spawn_logic_3.ltx
+++ /dev/null
@@ -1,50 +0,0 @@
-[logic]
-active = ph_idle@wait_actor
-
-[ph_idle@wait_actor]
-on_info = {=actor_near_smart(esc_smart_terrain_3_7) =is_night} ph_idle@spawn_night_monster_1, {=actor_near_smart(esc_smart_terrain_3_7) =is_dark_night} ph_idle@spawn_night_monster_1
-on_info2 = {=actor_near_smart(esc_smart_terrain_5_4) =is_night} ph_idle@spawn_night_monster_2, {=actor_near_smart(esc_smart_terrain_5_4) =is_dark_night} ph_idle@spawn_night_monster_2
-on_info3 = {=actor_near_smart(esc_smart_terrain_5_6) =is_night} ph_idle@spawn_night_monster_3, {=actor_near_smart(esc_smart_terrain_5_6) =is_dark_night} ph_idle@spawn_night_monster_3
-on_info4 = {=actor_near_smart(esc_smart_terrain_6_6) =is_night} ph_idle@spawn_night_monster_4, {=actor_near_smart(esc_smart_terrain_6_6) =is_dark_night} ph_idle@spawn_night_monster_4
-
-[ph_idle@spawn_night_monster_1]
-on_info = {~10} %=create_squad(simulation_pseudodog_night:esc_smart_terrain_3_7)% ph_idle@reset, {~10} %=create_squad(simulation_dog_night:esc_smart_terrain_3_7)% ph_idle@reset, {~10} %=create_squad(simulation_tushkano_night:esc_smart_terrain_3_7)% ph_idle@reset, {~10} %=create_squad(simulation_cat_night:esc_smart_terrain_3_7)% ph_idle@reset, ph_idle@wait_reset
-
-;[ph_idle@spawn_dark_monster_1]
-on_info = {~10} %=create_squad(simulation_pseudodog_night:esc_smart_terrain_3_7)% ph_idle@reset, {~10} %=create_squad(simulation_dog_night:esc_smart_terrain_3_7)% ph_idle@reset, {~10} %=create_squad(simulation_tushkano_night:esc_smart_terrain_3_7)% ph_idle@reset, {~10} %=create_squad(simulation_cat_night:esc_smart_terrain_3_7)% ph_idle@reset, ph_idle@wait_reset
-
-[ph_idle@reset]
-on_game_timer = 86400 | ph_idle@wait_actor
-
-[ph_idle@spawn_night_monster_2]
-on_info = {~10} %=create_squad(simulation_snork_night:esc_smart_terrain_5_4)% ph_idle@reset_2, {~10} %=create_squad(simulation_fracture_night:esc_smart_terrain_5_4)% ph_idle@reset_2, {~10} %=create_squad(simulation_boar_night:esc_smart_terrain_5_4)% ph_idle@reset_2, {~10} %=create_squad(simulation_pseudodog_night:esc_smart_terrain_5_4)% ph_idle@reset_2, ph_idle@wait_reset
-
-;[ph_idle@spawn_dark_monster_2]
-on_info = {~10} %=create_squad(simulation_snork_night:esc_smart_terrain_5_4)% ph_idle@reset_2, {~10} %=create_squad(simulation_fracture_night:esc_smart_terrain_5_4)% ph_idle@reset_2, {~10} %=create_squad(simulation_boar_3_5_night:esc_smart_terrain_5_4)% ph_idle@reset_2, {~10} %=create_squad(simulation_pseudodog_night:esc_smart_terrain_5_4)% ph_idle@reset_2, ph_idle@wait_reset
-
-[ph_idle@reset_2]
-on_game_timer = 86400 | ph_idle@wait_actor
-
-[ph_idle@spawn_night_monster_3]
-on_info = {~10} %=create_squad(simulation_tushkano_night:esc_smart_terrain_5_6)% ph_idle@reset_3, {~10} %=create_squad(simulation_dog_night:esc_smart_terrain_5_6)% ph_idle@reset_3, {~10} %=create_squad(simulation_boar_night:esc_smart_terrain_5_6)% ph_idle@reset_3, {~10} %=create_squad(simulation_cat_night:esc_smart_terrain_5_6)% ph_idle@reset_3, ph_idle@wait_reset
-
-;[ph_idle@spawn_dark_monster_3]
-on_info = {~10} %=create_squad(simulation_tushkano_night:esc_smart_terrain_5_6)% ph_idle@reset_3, {~10} %=create_squad(simulation_dog_night:esc_smart_terrain_5_6)% ph_idle@reset_3, {~10} %=create_squad(simulation_boar_night:esc_smart_terrain_5_6)% ph_idle@reset_3, {~10} %=create_squad(simulation_cat_night:esc_smart_terrain_5_6)% ph_idle@reset_3, ph_idle@wait_reset
-
-[ph_idle@reset_3]
-on_game_timer = 86400 | ph_idle@wait_actor
-
-[ph_idle@spawn_night_monster_4]
-on_info = {~10} %=create_squad(simulation_cat_night:esc_smart_terrain_6_6)% ph_idle@reset_4, {~10} %=create_squad(simulation_dog_night:esc_smart_terrain_6_6)% ph_idle@reset_4, {~10} %=create_squad(simulation_tushkano_night:esc_smart_terrain_6_6)% ph_idle@reset_4, {~10} %=create_squad(simulation_boar_night:esc_smart_terrain_6_6)% ph_idle@reset_4, ph_idle@wait_reset
-
-;[ph_idle@spawn_dark_monster_4]
-on_info = {~10} %=create_squad(simulation_cat_night:esc_smart_terrain_6_6)% ph_idle@reset_4, {~10} %=create_squad(simulation_dog_night:esc_smart_terrain_6_6)% ph_idle@reset_4, {~10} %=create_squad(simulation_tushkano_night:esc_smart_terrain_6_6)% ph_idle@reset_4, {~10} %=create_squad(simulation_boar_night:esc_smart_terrain_6_6)% ph_idle@reset_4, ph_idle@wait_reset
-
-[ph_idle@reset_4]
-on_game_timer = 86400 | ph_idle@wait_actor
-
-[ph_idle@wait_reset]
-on_game_timer = 580 | ph_idle@wait_actor
-
-[collide]
-ignore_static
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/escape/esc_smart_terrain_3_7_squad_logic.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/escape/esc_smart_terrain_3_7_squad_logic.ltx
deleted file mode 100644
index 442c9211..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/escape/esc_smart_terrain_3_7_squad_logic.ltx
+++ /dev/null
@@ -1,105 +0,0 @@
-[logic@esc_smart_terrain_3_7_monster_work_1]
-active = beh@esc_smart_terrain_3_7_monster_work_1
-suitable = {=target_squad_name()} true
-prior = 200
-
-[logic@esc_smart_terrain_3_7_monster_work_2]
-active = beh@esc_smart_terrain_3_7_monster_work_2
-suitable = {=target_squad_name()} true
-prior = 200
-
-[logic@esc_smart_terrain_3_7_monster_work_3]
-active = beh@esc_smart_terrain_3_7_monster_work_3
-suitable = {=target_squad_name()} true
-prior = 200
-
-[logic@esc_smart_terrain_3_7_monster_work_4]
-active = beh@esc_smart_terrain_3_7_monster_work_4
-suitable = {=target_squad_name()} true
-prior = 200
-
-[logic@esc_smart_terrain_3_7_bandit_work_1]
-active = beh@esc_smart_terrain_3_7_bandit_work_1
-suitable = {!surge_started} true
-prior = 200
-
-[logic@esc_smart_terrain_3_7_bandit_work_2]
-active = beh@esc_smart_terrain_3_7_bandit_work_2
-suitable = {!surge_started} true
-prior = 200
-
-[logic@esc_smart_terrain_3_7_bandit_work_3]
-active = beh@esc_smart_terrain_3_7_bandit_work_3
-suitable = {!surge_started} true
-prior = 200
-
-[logic@esc_smart_terrain_3_7_renegade_work_1]
-active = beh@esc_smart_terrain_3_7_renegade_work_1
-suitable = {!surge_started} true
-prior = 200
-
-[logic@esc_smart_terrain_3_7_renegade_work_2]
-active = beh@esc_smart_terrain_3_7_renegade_work_2
-suitable = {!surge_started} true
-prior = 200
-
-[logic@esc_smart_terrain_3_7_renegade_work_3]
-active = beh@esc_smart_terrain_3_7_renegade_work_3
-suitable = {!surge_started} true
-prior = 200
-
-[beh@general_monster]
-behavior_state = beh_move
-target = waypoint
-
-[beh@general_guard]
-behavior_state = beh_move
-target = waypoint
-walk_dist = 90
-jog_dist = 150
-wait_anim = guard
-jog_anim = assault
-run_anim = assault
-delay_anim = guard
-use_camp = true
-turn_on_campfire = false
-
-[beh@esc_smart_terrain_3_7_monster_work_1]:beh@general_monster
-pt1 = 88860000,misc | pos:
-path_end = loop
-
-[beh@esc_smart_terrain_3_7_monster_work_2]:beh@general_monster
-pt1 = 88860000,misc | pos:
-path_end = loop
-
-[beh@esc_smart_terrain_3_7_monster_work_3]:beh@general_monster
-pt1 = 88860000,misc | pos:
-path_end = loop
-
-[beh@esc_smart_terrain_3_7_monster_work_4]:beh@general_monster
-pt1 = 88860000,misc | pos:
-path_end = loop
-
-[beh@esc_smart_terrain_3_7_bandit_work_1]:beh@general_guard
-pt1 = 88860000,guard | pos: -151.39683532715, -2.9083452224731, 312.47732543945 look: -151.65705871582, -3.0879528522491, 314.79708862305
-path_end = loop
-
-[beh@esc_smart_terrain_3_7_bandit_work_2]:beh@general_guard
-pt1 = 88860000,hide | pos: -158.66584777832, -1.4026627540588, 310.36944580078 look: -159.22314453125, -1.6401720046997, 311.83892822266
-path_end = loop
-
-[beh@esc_smart_terrain_3_7_bandit_work_3]:beh@general_guard
-pt1 = 88860000,guard | pos: -152.68740844727, -2.3553175926208, 303.92379760742 look: -152.31729125977, -2.3126533031464, 302.54901123047
-path_end = loop
-
-[beh@esc_smart_terrain_3_7_renegade_work_1]:beh@general_guard
-pt1 = 88860000,guard | pos: -151.39683532715, -2.9083452224731, 312.47732543945 look: -151.65705871582, -3.0879528522491, 314.79708862305
-path_end = loop
-
-[beh@esc_smart_terrain_3_7_renegade_work_2]:beh@general_guard
-pt1 = 88860000,hide | pos: -158.66584777832, -1.4026627540588, 310.36944580078 look: -159.22314453125, -1.6401720046997, 311.83892822266
-path_end = loop
-
-[beh@esc_smart_terrain_3_7_renegade_work_3]:beh@general_guard
-pt1 = 88860000,guard | pos: -152.68740844727, -2.3553175926208, 303.92379760742 look: -152.31729125977, -2.3126533031464, 302.54901123047
-path_end = loop
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/escape/esc_smart_terrain_5_2_squad_logic.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/escape/esc_smart_terrain_5_2_squad_logic.ltx
deleted file mode 100644
index 095e44a2..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/escape/esc_smart_terrain_5_2_squad_logic.ltx
+++ /dev/null
@@ -1,170 +0,0 @@
-[logic@esc_smart_terrain_5_2_squad_1]
-active = walker@karat_army_esc_smart_terrain_2_12_squad_1
-suitable = {=target_squad_name(karat_army_esc_smart_terrain_2_12) !surge_started} true
-prior = 200
-on_death = death@soldier_1
-
-[death@soldier_1]
-on_info = {=killed_by_actor =actor_community(actor_stalker)} %=dec_faction_goodwill_to_actor(stalker:25) =send_tip(st_honor_sidorovich_deal:stalker)%
-
-[walker@karat_army_esc_smart_terrain_2_12_squad_1]:walker@generic
-path_walk = guard_1_walk
-path_look = guard_1_look
-
-[logic@esc_smart_terrain_5_2_squad_2]
-active = walker@karat_army_esc_smart_terrain_2_12_squad_2
-suitable = {=target_squad_name(karat_army_esc_smart_terrain_2_12) !surge_started} true
-prior = 200
-on_death = death@soldier_2
-
-[death@soldier_2]
-on_info = {=killed_by_actor =actor_community(actor_stalker)} %=dec_faction_goodwill_to_actor(stalker:25) =send_tip(st_honor_sidorovich_deal:stalker)%
-
-[walker@karat_army_esc_smart_terrain_2_12_squad_2]:walker@generic
-path_walk = guard_2_walk
-path_look = guard_2_look
-meet = meet
-danger = danger
-
-[logic@esc_smart_terrain_5_2_squad_3]
-active = walker@karat_army_esc_smart_terrain_2_12_squad_3
-suitable = {=target_squad_name(karat_army_esc_smart_terrain_2_12) !surge_started} true
-prior = 200
-on_death = death@soldier_3
-
-[death@soldier_3]
-on_info = {=killed_by_actor =actor_community(actor_stalker)} %=dec_faction_goodwill_to_actor(stalker:25) =send_tip(st_honor_sidorovich_deal:stalker)%
-
-[walker@karat_army_esc_smart_terrain_2_12_squad_3]:walker@generic
-path_walk = walker_1_walk
-path_look = walker_1_look
-meet = meet
-danger = danger
-
-[logic@esc_smart_terrain_5_2_squad_4]
-active = beh@karat_army_esc_smart_terrain_2_12_squad_4
-suitable = {=target_squad_name(karat_army_esc_smart_terrain_2_12) !surge_started} true
-prior = 45
-on_death = death@soldier_4
-
-[death@soldier_4]
-on_info = {=killed_by_actor =actor_community(actor_stalker)} %=dec_faction_goodwill_to_actor(stalker:25) =send_tip(st_honor_sidorovich_deal:stalker)%
-
-[logic@esc_smart_terrain_5_2_squad_5]
-active = beh@karat_army_esc_smart_terrain_2_12_squad_5
-suitable = {=target_squad_name(karat_army_esc_smart_terrain_2_12) !surge_started} true
-prior = 200
-on_death = death@soldier_5
-
-[death@soldier_5]
-on_info = {=killed_by_actor =actor_community(actor_stalker)} %=dec_faction_goodwill_to_actor(stalker:25) =send_tip(st_honor_sidorovich_deal:stalker)%
-
-[logic@esc_smart_terrain_5_2_squad_6]
-active = beh@karat_army_esc_smart_terrain_2_12_squad_6
-suitable = {=target_squad_name(karat_army_esc_smart_terrain_2_12) !surge_started} true
-prior = 200
-on_death = death@soldier_6
-
-[death@soldier_6]
-on_info = {=killed_by_actor =actor_community(actor_stalker)} %=dec_faction_goodwill_to_actor(stalker:25) =send_tip(st_honor_sidorovich_deal:stalker)%
-
-[logic@esc_smart_terrain_5_2_squad_7]
-active = beh@karat_army_esc_smart_terrain_2_12_squad_7
-suitable = {=target_squad_name(karat_army_esc_smart_terrain_2_12) !surge_started}
-prior = 45
-on_death = death@soldier_7
-
-[death@soldier_7]
-on_info = {=killed_by_actor =actor_community(actor_stalker)} %=dec_faction_goodwill_to_actor(stalker:25) =send_tip(st_honor_sidorovich_deal:stalker)%
-
-[logic@esc_smart_terrain_5_2_squad_8]
-active = beh@karat_army_esc_smart_terrain_2_12_squad_8
-suitable = {=target_squad_name(karat_army_esc_smart_terrain_2_12) !surge_started}
-prior = 45
-on_death = death@soldier_8
-
-[death@soldier_8]
-on_info = {=killed_by_actor =actor_community(actor_stalker)} %=dec_faction_goodwill_to_actor(stalker:25) =send_tip(st_honor_sidorovich_deal:stalker)%
-
-[logic@esc_smart_terrain_5_2_squad_9]
-active = beh@karat_army_esc_smart_terrain_2_12_squad_9
-suitable = {=target_squad_name(karat_army_esc_smart_terrain_2_12) !surge_started}
-prior = 45
-on_death = death@soldier_9
-
-[death@soldier_9]
-on_info = {=killed_by_actor =actor_community(actor_stalker)} %=dec_faction_goodwill_to_actor(stalker:25) =send_tip(st_honor_sidorovich_deal:stalker)%
-
-[walker@generic]
-gather_items_enabled = false
-help_wounded_enabled = true
-corpse_detection_enabled = true
-turn_on_campfire = true
-combat_ignore_cond = {=check_enemy_name(sim_default) =fighting_dist_ge(50)} true, false
-combat_ignore_keep_when_attacked = false
-meet = meet
-danger = danger
-
-[beh@general_guard]
-behavior_state = beh_move
-target = waypoint
-walk_dist = 100
-jog_dist = 220
-walk_anim = patrol
-jog_anim = assault
-run_anim = assault
-delay_anim = guard
-combat_ignore_cond = false
-combat_ignore_keep_when_attacked = false
-turn_on_campfire = true
-gather_items_enabled = false
-help_wounded_enabled = true
-corpse_detection_enabled = true
-invulnerable = {!actor_true_enemy} true, false
-meet = meet
-danger = danger
-
-[meet]
-close_anim = nil
-close_victim = nil
-far_anim = nil
-far_victim = nil
-close_distance = 0
-far_distance = 0
-close_snd_distance = 3
-abuse = false
-use = {=actor_enemy} false, true
-allow_break = false
-meet_on_talking = true
-trade_enable = false
-
-[danger]
-danger_expiration_time = 30000
-danger_inertion_time_grenade = 90000
-danger_inertion_time_hit = 90000
-danger_inertion_time_sound = 90000
-danger_inertion_time_ricochet = 90000
-
-[beh@karat_army_esc_smart_terrain_2_12_squad_4]:beh@general_guard
-pt1 = 88860000, fold_arms | pos: 22.135007858276, 16.518793106079, 679.134765625 look: 21.459903717041, 16.518703460693, 679.12866210938
-path_end = loop
-
-[beh@karat_army_esc_smart_terrain_2_12_squad_5]:beh@general_guard
-pt1 = 88860000, guard | pos: 8.0143709182739, 16.572008132935, 686.26989746094 look: 8.4900608062744, 16.48752784729, 685.63330078125
-path_end = loop
-
-[beh@karat_army_esc_smart_terrain_2_12_squad_6]:beh@general_guard
-pt1 = 88860000, guard | pos: 12.111597061157, 15.46762752533, 657.26501464844 look: 12.632202148438, 15.332869529724, 656.07891845703
-path_end = loop
-
-[beh@karat_army_esc_smart_terrain_2_12_squad_7]:beh@general_guard
-pt1 = 88860000, guard | pos: 68.67569732666, 8.3970699310303, 609.76428222656 look: 68.536018371582, 8.2060842514038, 608.64208984375
-path_end = loop
-
-[beh@karat_army_esc_smart_terrain_2_12_squad_8]:beh@general_guard
-pt1 = 88860000, guard | pos: 74.100608825684, 8.9517211914062, 611.13305664062 look: 74.403991699219, 8.7994794845581, 610.07751464844
-path_end = loop
-
-[beh@karat_army_esc_smart_terrain_2_12_squad_9]:beh@general_guard
-pt1 = 88860000, sit_ass | pos: 68.257446289062, 9.0887355804443, 614.18585205078 look: 68.67569732666, 8.3970699310303, 609.76428222656
-path_end = loop
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/escape/esc_smart_terrain_6_8_squad_logic.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/escape/esc_smart_terrain_6_8_squad_logic.ltx
deleted file mode 100644
index 4e5773d1..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/escape/esc_smart_terrain_6_8_squad_logic.ltx
+++ /dev/null
@@ -1,171 +0,0 @@
-[logic@esc_smart_terrain_6_8_squad_1]
-active = walker@most_army_esc_smart_terrain_6_8_squad_1
-suitable = {=target_squad_name(most_army_esc_smart_terrain_6_8)} true
-prior = 200
-on_death = death@soldier_1
-
-[death@soldier_1]
-on_info = {=killed_by_actor =actor_community(actor_stalker)} %=dec_faction_goodwill_to_actor(stalker:25) =send_tip(st_honor_sidorovich_deal:stalker)%
-
-[walker@most_army_esc_smart_terrain_6_8_squad_1]:walker@generic
-path_walk = guard_1_walk
-path_look = guard_1_look
-on_info = {=surge_started} beh@esc_smart_terrain_6_8_surge_work_1
-meet = meet
-danger = danger
-
-[logic@esc_smart_terrain_6_8_squad_2]
-active = walker@most_army_esc_smart_terrain_6_8_squad_2
-suitable = {=target_squad_name(most_army_esc_smart_terrain_6_8)} true
-prior = 200
-on_death = death@soldier_2
-
-[death@soldier_2]
-on_info = {=killed_by_actor =actor_community(actor_stalker)} %=dec_faction_goodwill_to_actor(stalker:25) =send_tip(st_honor_sidorovich_deal:stalker)%
-
-[walker@most_army_esc_smart_terrain_6_8_squad_2]:walker@generic
-path_walk = guard_3_walk
-path_look = guard_3_look
-on_info = {=surge_started} beh@esc_smart_terrain_6_8_surge_work_2
-meet = meet
-danger = danger
-
-[logic@esc_smart_terrain_6_8_squad_3]
-active = walker@most_army_esc_smart_terrain_6_8_squad_3
-suitable = {=target_squad_name(most_army_esc_smart_terrain_6_8)} true
-prior = 200
-on_death = death@soldier_3
-
-[death@soldier_3]
-on_info = {=killed_by_actor =actor_community(actor_stalker)} %=dec_faction_goodwill_to_actor(stalker:25) =send_tip(st_honor_sidorovich_deal:stalker)%
-
-[walker@most_army_esc_smart_terrain_6_8_squad_3]:walker@generic
-path_walk = guard_4_walk
-path_look = guard_4_look
-on_info = {=surge_started} beh@esc_smart_terrain_6_8_surge_work_3
-meet = meet
-danger = danger
-
-[logic@esc_smart_terrain_6_8_squad_4]
-active = walker@most_army_esc_smart_terrain_6_8_squad_4
-suitable = {=target_squad_name(most_army_esc_smart_terrain_6_8)} true
-prior = 200
-on_death = death@soldier_4
-
-[death@soldier_4]
-on_info = {=killed_by_actor =actor_community(actor_stalker)} %=dec_faction_goodwill_to_actor(stalker:25) =send_tip(st_honor_sidorovich_deal:stalker)%
-
-[walker@most_army_esc_smart_terrain_6_8_squad_4]:walker@generic
-path_walk = guard_5_walk
-path_look = guard_5_look
-on_info = {=surge_started} beh@esc_smart_terrain_6_8_surge_work_4
-meet = meet
-danger = danger
-
-[logic@esc_smart_terrain_6_8_squad_5]
-active = walker@most_army_esc_smart_terrain_6_8_squad_5
-suitable = {=target_squad_name(most_army_esc_smart_terrain_6_8)} true
-prior = 200
-on_death = death@soldier_5
-
-[death@soldier_5]
-on_info = {=killed_by_actor =actor_community(actor_stalker)} %=dec_faction_goodwill_to_actor(stalker:25) =send_tip(st_honor_sidorovich_deal:stalker)%
-
-[walker@most_army_esc_smart_terrain_6_8_squad_5]:walker@generic
-path_walk = sniper_1_walk
-path_look = sniper_1_look
-sniper = false
-radius = 50
-on_info = {=surge_started} beh@esc_smart_terrain_6_8_surge_work_5
-meet = meet
-danger = danger
-
-[logic@esc_smart_terrain_6_8_squad_6]
-active = campfire_point@most_army_esc_smart_terrain_6_8_squad_6
-suitable = {=target_squad_name(most_army_esc_smart_terrain_6_8)} true
-prior = 200
-on_death = death@soldier_6
-
-[death@soldier_6]
-on_info = {=killed_by_actor =actor_community(actor_stalker)} %=dec_faction_goodwill_to_actor(stalker:25) =send_tip(st_honor_sidorovich_deal:stalker)%
-
-;[walker@most_army_esc_smart_terrain_6_8_squad_6]:walker@generic
-
-[campfire_point@most_army_esc_smart_terrain_6_8_squad_6]:walker@generic
-smart = esc_smart_terrain_6_8
-use_camp = true
-anim = idle, guard
-on_info = {=surge_started} beh@esc_smart_terrain_6_8_surge_work_6
-meet = meet
-danger = danger
-
-[walker@generic]
-gather_items_enabled = false
-help_wounded_enabled = true
-corpse_detection_enabled = true
-turn_on_campfire = true
-combat_ignore_cond = {=check_enemy_name(sim_default) =fighting_dist_ge(50)} true, false
-combat_ignore_keep_when_attacked = false
-meet = meet
-danger = danger
-
-[danger]
-danger_expiration_time = 30000
-danger_inertion_time_grenade = 90000
-danger_inertion_time_hit = 90000
-danger_inertion_time_sound = 90000
-danger_inertion_time_ricochet = 90000
-
-[meet]
-close_anim = nil
-close_victim = nil
-far_anim = nil
-far_victim = nil
-close_distance = 0
-far_distance = 0
-close_snd_distance = 3
-abuse = false
-use = {=actor_enemy} false, true
-allow_break = false
-meet_on_talking = true
-trade_enable = false
-
-[beh@general_surge]
-behavior_state = beh_move
-target = waypoint
-walk_dist = 100
-jog_dist = 220
-walk_anim = rush
-jog_anim = rush
-run_anim = rush
-combat_ignore_cond = {=check_enemy_name(sim_default) =fighting_dist_ge(50)} true, false
-combat_ignore_keep_when_attacked = false
-gather_items_enabled = false
-help_wounded_enabled = false
-corpse_detection_enabled = false
-meet = meet
-danger = danger
-
-[beh@esc_smart_terrain_6_8_surge_work_1]:beh@general_surge
-pt1 = 15000, binocular | pos: -0.82295793294907, 2.4562945365906, 64.287994384766 look: 0.40065768361092, 2.4561319351196, 64.198188781738
-on_info = {=surge_complete} walker@most_army_esc_smart_terrain_6_8_squad_1
-
-[beh@esc_smart_terrain_6_8_surge_work_2]:beh@general_surge
-pt1 = 15000, idle | pos: -4.0547852516174, 2.4539427757263, 60.8310546875 look: -2.8573482036591, 2.4570174217224, 61.621185302734
-on_info = {=surge_complete} walker@most_army_esc_smart_terrain_6_8_squad_2
-
-[beh@esc_smart_terrain_6_8_surge_work_3]:beh@general_surge
-pt1 = 15000, idle | pos: -12.217488288879, 2.4681160449982, 59.66955947876 look: -11.521687507629, 2.4658484458923, 60.82836151123
-on_info = {=surge_complete} walker@most_army_esc_smart_terrain_6_8_squad_3
-
-[beh@esc_smart_terrain_6_8_surge_work_4]:beh@general_surge
-pt1 = 15000, caution | pos: -13.456106185913, 2.4518508911133, 67.510528564453 look: -11.678283691406, 2.4584500789642, 68.847145080566
-on_info = {=surge_complete} walker@most_army_esc_smart_terrain_6_8_squad_4
-
-[beh@esc_smart_terrain_6_8_surge_work_5]:beh@general_surge
-pt1 = 15000, smoking_stand | pos: -25.056449890137, 2.4664018154144, 76.92618560791 look: -23.717769622803, 2.4734718799591, 77.984725952148
-on_info = {=surge_complete} walker@most_army_esc_smart_terrain_6_8_squad_5
-
-[beh@esc_smart_terrain_6_8_surge_work_6]:beh@general_surge
-pt1 = 15000, barricade | pos: -21.361507415771, 2.4643862247467, 89.158432006836 look: -19.97703742981, 2.4589288234711, 91.102867126465
-on_info = {=surge_complete} campfire_point@most_army_esc_smart_terrain_6_8_squad_6
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/escape/mod_esc_crow_spawner_redone.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/escape/mod_esc_crow_spawner_redone.ltx
deleted file mode 100644
index 37a550a9..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/escape/mod_esc_crow_spawner_redone.ltx
+++ /dev/null
@@ -1,19 +0,0 @@
-![logic]
-!active = sr_crow_spawner
-active = sr_idle@check_story
-
-[sr_idle@check_story]
-on_info = {-story_mode_disabled} sr_idle@check_actor, {+story_mode_disabled -yan_x16_complete_end} sr_idle@check_actor %+yan_kill_brain_done%
-
-[sr_idle@check_actor]
-on_info = {=actor_community(actor_monolith) -yan_x16_complete_end} sr_idle@check_helmet %+yan_kill_brain_done%, {=actor_community(actor_greh) -yan_x16_complete_end} sr_idle@check_helmet %+yan_kill_brain_done%, sr_idle@check_helmet
-
-[sr_idle@check_helmet]
-on_info = {=actor_has_item(good_psy_helmet)} sr_idle@check_spawner %+living_legend_psy_helmet%, {=actor_has_item(bad_psy_helmet)} sr_idle@check_spawner %+living_legend_psy_helmet%, sr_idle@check_spawner
-
-[sr_idle@check_spawner]
-on_info = sr_crow_spawner
-
-![sr_crow_spawner]
-max_crows_on_level = 5
-spawn_path = esc_crow_spawn_1, esc_crow_spawn_2, esc_crow_spawn_3, esc_crow_spawn_4, esc_crow_spawn_5
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/escape/mod_esc_smart_terrain_2_12_smart_logic_redone.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/escape/mod_esc_smart_terrain_2_12_smart_logic_redone.ltx
deleted file mode 100644
index 31b4da9f..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/escape/mod_esc_smart_terrain_2_12_smart_logic_redone.ltx
+++ /dev/null
@@ -1,26 +0,0 @@
-![logic@esc_smart_terrain_2_12_camp_work_19]
-active = beh@esc_smart_terrain_2_12_camp_work_19
-suitable = {!surge_started} true
-prior = 45
-
-[beh@general_work]
-behavior_state = beh_move
-target = waypoint
-walk_dist = 100
-jog_dist = 220
-walk_anim = patrol
-jog_anim = assault
-run_anim = assault
-delay_anim = guard
-combat_ignore_cond = false
-combat_ignore_keep_when_attacked = false
-turn_on_campfire = true
-gather_items_enabled = false
-help_wounded_enabled = true
-corpse_detection_enabled = true
-invulnerable = {!actor_true_enemy} true, false
-
-[beh@esc_smart_terrain_2_12_camp_work_19]:beh@general_work
-pt1 = 88860000, sit_ass | pos: -233.78042602539, -20.038074493408, -156.4732208252 look: -235.31875610352, -19.739292144775, -156.46011352539
-path_end = loop
-
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/escape/mod_esc_smart_terrain_3_16_smart_logic_redone.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/escape/mod_esc_smart_terrain_3_16_smart_logic_redone.ltx
deleted file mode 100644
index a3e24615..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/escape/mod_esc_smart_terrain_3_16_smart_logic_redone.ltx
+++ /dev/null
@@ -1,135 +0,0 @@
-![logic@esc_smart_terrain_3_16_camp_work_1]
-on_death = death@soldier_1
-
-[death@soldier_1]
-on_info = {=killed_by_actor =actor_community(actor_stalker)} %=dec_faction_goodwill_to_actor(stalker:25) =send_tip(st_honor_sidorovich_deal:stalker)%
-
-![logic@esc_smart_terrain_3_16_camp_work_2]
-on_death = death@soldier_2
-
-[death@soldier_2]
-on_info = {=killed_by_actor =actor_community(actor_stalker)} %=dec_faction_goodwill_to_actor(stalker:25) =send_tip(st_honor_sidorovich_deal:stalker)%
-
-![logic@esc_smart_terrain_3_16_camp_work_3]
-on_death = death@soldier_3
-
-[death@soldier_3]
-on_info = {=killed_by_actor =actor_community(actor_stalker)} %=dec_faction_goodwill_to_actor(stalker:25) =send_tip(st_honor_sidorovich_deal:stalker)%
-
-![logic@esc_smart_terrain_3_16_camp_work_4]
-on_death = death@soldier_4
-
-[death@soldier_4]
-on_info = {=killed_by_actor =actor_community(actor_stalker)} %=dec_faction_goodwill_to_actor(stalker:25) =send_tip(st_honor_sidorovich_deal:stalker)%
-
-![logic@esc_smart_terrain_3_16_camp_work_5]
-on_death = death@soldier_5
-
-[death@soldier_5]
-on_info = {=killed_by_actor =actor_community(actor_stalker)} %=dec_faction_goodwill_to_actor(stalker:25) =send_tip(st_honor_sidorovich_deal:stalker)%
-
-[logic@esc_smart_terrain_3_16_camp_work_6]
-active = beh@esc_smart_terrain_3_16_camp_work_6
-suitable = {!surge_started} true
-prior = 45
-on_death = death@soldier_6
-
-[death@soldier_6]
-on_info = {=killed_by_actor =actor_community(actor_stalker)} %=dec_faction_goodwill_to_actor(stalker:25) =send_tip(st_honor_sidorovich_deal:stalker)%
-
-[logic@esc_smart_terrain_3_16_camp_work_7]
-active = beh@esc_smart_terrain_3_16_camp_work_7
-suitable = {!surge_started} true
-prior = 45
-on_death = death@soldier_7
-
-[death@soldier_7]
-on_info = {=killed_by_actor =actor_community(actor_stalker)} %=dec_faction_goodwill_to_actor(stalker:25) =send_tip(st_honor_sidorovich_deal:stalker)%
-
-[logic@esc_smart_terrain_3_16_camp_work_8]
-active = beh@esc_smart_terrain_3_16_camp_work_8
-suitable = {!surge_started} true
-prior = 45
-on_death = death@soldier_8
-
-[death@soldier_8]
-on_info = {=killed_by_actor =actor_community(actor_stalker)} %=dec_faction_goodwill_to_actor(stalker:25) =send_tip(st_honor_sidorovich_deal:stalker)%
-
-[logic@esc_smart_terrain_3_16_camp_work_9]
-active = beh@esc_smart_terrain_3_16_camp_work_9
-suitable = {!surge_started} true
-prior = 45
-on_death = death@soldier_9
-
-[death@soldier_9]
-on_info = {=killed_by_actor =actor_community(actor_stalker)} %=dec_faction_goodwill_to_actor(stalker:25) =send_tip(st_honor_sidorovich_deal:stalker)%
-
-[logic@esc_smart_terrain_3_16_camp_work_10]
-active = beh@esc_smart_terrain_3_16_camp_work_10
-suitable = {!surge_started} true
-prior = 45
-on_death = death@soldier_10
-
-[death@soldier_10]
-on_info = {=killed_by_actor =actor_community(actor_stalker)} %=dec_faction_goodwill_to_actor(stalker:25) =send_tip(st_honor_sidorovich_deal:stalker)%
-
-[beh@general_work]
-behavior_state = beh_move
-target = waypoint
-walk_dist = 100
-jog_dist = 220
-walk_anim = patrol
-jog_anim = assault
-run_anim = assault
-delay_anim = guard
-combat_ignore_cond = false
-combat_ignore_keep_when_attacked = false
-turn_on_campfire = true
-gather_items_enabled = false
-help_wounded_enabled = true
-corpse_detection_enabled = true
-invulnerable = {!actor_true_enemy} true, false
-meet = meet
-danger = danger
-
-[meet]
-close_anim = nil
-close_victim = nil
-far_anim = nil
-far_victim = nil
-close_distance = 0
-far_distance = 0
-close_snd_distance = 3
-abuse = false
-use = {=actor_enemy} false, true
-allow_break = false
-meet_on_talking = true
-trade_enable = false
-
-[danger]
-danger_expiration_time = 30000
-danger_inertion_time_grenade = 90000
-danger_inertion_time_hit = 90000
-danger_inertion_time_sound = 90000
-danger_inertion_time_ricochet = 90000
-
-[beh@esc_smart_terrain_3_16_camp_work_6]:beh@general_work
-pt1 = 88860000, sit_ass | pos: -122.15475463867, -30.051349639893, -383.92443847656 look: -120.48983764648, -29.747680664062, -384.61486816406
-path_end = loop
-
-[beh@esc_smart_terrain_3_16_camp_work_7]:beh@general_work
-pt1 = 88860000, sit_ass | pos: -121.94188690186, -30.051347732544, -385.97399902344 look: -120.33186340332, -29.629438400269, -384.27127075195
-path_end = loop
-
-[beh@esc_smart_terrain_3_16_camp_work_8]:beh@general_work
-pt1 = 88860000, sit_ass | pos: -110.72119903564, -30.200836181641, -357.86309814453 look: -112.22673034668, -30.023263931274, -359.36572265625
-path_end = loop
-
-[beh@esc_smart_terrain_3_16_camp_work_9]:beh@general_work
-pt1 = 88860000, sit_ass | pos: -111.23129272461, -30.315315246582, -361.46115112305 look: -112.42178344727, -30.041728973389, -359.55014038086
-path_end = loop
-
-[beh@esc_smart_terrain_3_16_camp_work_10]:beh@general_work
-pt1 = 88860000, idle | pos: -114.02665710449, -30.389665603638, -360.05572509766 look: -112.38818359375, -30.020149230957, -359.41442871094
-path_end = loop
-
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/escape/mod_esc_smart_terrain_5_2_smart_logic_redone.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/escape/mod_esc_smart_terrain_5_2_smart_logic_redone.ltx
deleted file mode 100644
index 19e01628..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/escape/mod_esc_smart_terrain_5_2_smart_logic_redone.ltx
+++ /dev/null
@@ -1,108 +0,0 @@
-![logic@esc_smart_terrain_5_2_camp_work_1]
-on_death = death@soldier_1
-
-[death@soldier_1]
-on_info = {=killed_by_actor =actor_community(actor_stalker)} %=dec_faction_goodwill_to_actor(stalker:25) =send_tip(st_honor_sidorovich_deal:stalker)%
-
-![logic@esc_smart_terrain_5_2_camp_work_2]
-on_death = death@soldier_2
-
-[death@soldier_2]
-on_info = {=killed_by_actor =actor_community(actor_stalker)} %=dec_faction_goodwill_to_actor(stalker:25) =send_tip(st_honor_sidorovich_deal:stalker)%
-
-![logic@esc_smart_terrain_5_2_camp_work_3]
-on_death = death@soldier_3
-
-[death@soldier_3]
-on_info = {=killed_by_actor =actor_community(actor_stalker)} %=dec_faction_goodwill_to_actor(stalker:25) =send_tip(st_honor_sidorovich_deal:stalker)%
-
-![logic@esc_smart_terrain_5_2_camp_work_4]
-on_death = death@soldier_4
-
-[death@soldier_4]
-on_info = {=killed_by_actor =actor_community(actor_stalker)} %=dec_faction_goodwill_to_actor(stalker:25) =send_tip(st_honor_sidorovich_deal:stalker)%
-
-![logic@esc_smart_terrain_5_2_camp_work_5]
-on_death = death@soldier_5
-
-[death@soldier_5]
-on_info = {=killed_by_actor =actor_community(actor_stalker)} %=dec_faction_goodwill_to_actor(stalker:25) =send_tip(st_honor_sidorovich_deal:stalker)%
-
-[logic@esc_smart_terrain_5_2_camp_work_6]
-active = beh@esc_smart_terrain_5_2_camp_work_6
-suitable = {!surge_started} true
-prior = 45
-on_death = death@soldier_6
-
-[death@soldier_6]
-on_info = {=killed_by_actor =actor_community(actor_stalker)} %=dec_faction_goodwill_to_actor(stalker:25) =send_tip(st_honor_sidorovich_deal:stalker)%
-
-[logic@esc_smart_terrain_5_2_camp_work_7]
-active = beh@esc_smart_terrain_5_2_camp_work_7
-suitable = {!surge_started} true
-prior = 45
-on_death = death@soldier_7
-
-[death@soldier_7]
-on_info = {=killed_by_actor =actor_community(actor_stalker)} %=dec_faction_goodwill_to_actor(stalker:25) =send_tip(st_honor_sidorovich_deal:stalker)%
-
-[logic@esc_smart_terrain_5_2_camp_work_8]
-active = beh@esc_smart_terrain_5_2_camp_work_8
-suitable = {!surge_started} true
-prior = 45
-on_death = death@soldier_8
-
-[death@soldier_8]
-on_info = {=killed_by_actor =actor_community(actor_stalker)} %=dec_faction_goodwill_to_actor(stalker:25) =send_tip(st_honor_sidorovich_deal:stalker)%
-
-[beh@general_work]
-behavior_state = beh_move
-target = waypoint
-walk_dist = 100
-jog_dist = 220
-walk_anim = patrol
-jog_anim = assault
-run_anim = assault
-delay_anim = guard
-combat_ignore_cond = false
-combat_ignore_keep_when_attacked = false
-turn_on_campfire = true
-gather_items_enabled = false
-help_wounded_enabled = true
-corpse_detection_enabled = true
-invulnerable = {!actor_true_enemy} true, false
-meet = meet
-danger = danger
-
-[meet]
-close_anim = nil
-close_victim = nil
-far_anim = nil
-far_victim = nil
-close_distance = 0
-far_distance = 0
-close_snd_distance = 3
-abuse = false
-use = {=actor_enemy} false, true
-allow_break = false
-meet_on_talking = true
-trade_enable = false
-
-[danger]
-danger_expiration_time = 30000
-danger_inertion_time_grenade = 90000
-danger_inertion_time_hit = 90000
-danger_inertion_time_sound = 90000
-danger_inertion_time_ricochet = 90000
-
-[beh@esc_smart_terrain_5_2_camp_work_6]:beh@general_work
-pt1 = 88860000, sit_ass | pos: 31.437065124512, 16.653995513916, 678.78564453125 look: 30.823877334595, 16.531633377075, 677.45849609375
-path_end = loop
-
-[beh@esc_smart_terrain_5_2_camp_work_7]:beh@general_work
-pt1 = 88860000, sit_ass | pos: 32.804035186768, 16.517543792725, 677.14935302734 look: 30.935361862183, 16.531770706177, 677.63562011719
-path_end = loop
-
-[beh@esc_smart_terrain_5_2_camp_work_8]:beh@general_work
-pt1 = 88860000, sit_ass | pos: 31.633562088013, 16.601379394531, 674.22808837891 look: 31.474407196045, 16.516576766968, 675.52124023438
-path_end = loop
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/escape/mod_esc_smart_terrain_7_11_smart_logic_redone.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/escape/mod_esc_smart_terrain_7_11_smart_logic_redone.ltx
deleted file mode 100644
index 9e54822e..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/escape/mod_esc_smart_terrain_7_11_smart_logic_redone.ltx
+++ /dev/null
@@ -1,43 +0,0 @@
-[logic@esc_smart_terrain_7_11_camp_work_6]
-active = beh@esc_smart_terrain_7_11_camp_work_6
-suitable = {!surge_started} true
-prior = 45
-
-[logic@esc_smart_terrain_7_11_camp_work_7]
-active = beh@esc_smart_terrain_7_11_camp_work_7
-suitable = {!surge_started} true
-prior = 45
-
-[logic@esc_smart_terrain_7_11_camp_work_8]
-active = beh@esc_smart_terrain_7_11_camp_work_8
-suitable = {!surge_started} true
-prior = 45
-
-[beh@general_work]
-behavior_state = beh_move
-target = waypoint
-walk_dist = 100
-jog_dist = 220
-walk_anim = patrol
-jog_anim = assault
-run_anim = assault
-delay_anim = guard
-combat_ignore_cond = false
-combat_ignore_keep_when_attacked = false
-turn_on_campfire = true
-gather_items_enabled = false
-help_wounded_enabled = true
-corpse_detection_enabled = true
-invulnerable = {!actor_true_enemy} true, false
-
-[beh@esc_smart_terrain_7_11_camp_work_6]:beh@general_work
-pt1 = 88860000, sit_ass | pos: 130.14399719238, -7.6034712791443, 9.9611558914185 look: 128.20147705078, -7.5916266441345, 8.6504049301147
-path_end = loop
-
-[beh@esc_smart_terrain_7_11_camp_work_7]:beh@general_work
-pt1 = 88860000, sit_ass | pos: 127.1028213501, -7.6059575080872, 10.397469520569 look: 128.30569458008, -7.5973587036133, 8.5573883056641
-path_end = loop
-
-[beh@esc_smart_terrain_7_11_camp_work_8]:beh@general_work
-pt1 = 88860000, sit_ass | pos: 106.3256072998, -2.8580090999603, -0.36990475654602 look: 108.34425354004, -2.8497829437256, -0.24990943074226
-path_end = loop
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/escape/smart/esc_smart_terrain_1_11.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/escape/smart/esc_smart_terrain_1_11.ltx
deleted file mode 100644
index 76f7416a..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/escape/smart/esc_smart_terrain_1_11.ltx
+++ /dev/null
@@ -1,22 +0,0 @@
-[smart_terrain] ;-- Disabled spawn
-squad_id = 1
-max_population = 1
-;respawn_params = respawn@esc_smart_terrain_1_11
-;respawn_only_smart = false
-;respawn_idle = 86400
-;respawn_radius = 50
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = nil
-;def_restr = nil
-;safe_restr = nil
-;spawn_point = nil
-
-;[respawn@esc_smart_terrain_1_11] ;-- Type:
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-;[exclusive]
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/escape/smart/esc_smart_terrain_2_12.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/escape/smart/esc_smart_terrain_2_12.ltx
deleted file mode 100644
index 81e31e78..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/escape/smart/esc_smart_terrain_2_12.ltx
+++ /dev/null
@@ -1,71 +0,0 @@
-[smart_terrain]
-squad_id = 2
-max_population = 2
-respawn_params = respawn@esc_smart_terrain_2_12
-respawn_only_smart = false
-respawn_idle = 43200
-respawn_radius = 50
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = nil
-;def_restr = nil
-;safe_restr = nil
-;spawn_point = nil
-
-[respawn@esc_smart_terrain_2_12] ;-- Type: faction {stalker} = rookie villige
-spawn_stalker@novice
-spawn_stalker_special
-
-
-[spawn_stalker@novice]
-spawn_squads = stalker_sim_squad_novice, stalker_sim_squad_novice, stalker_sim_squad_advanced
-spawn_num = 1
-
-[spawn_stalker_special]
-spawn_squads = escape_novice_visiters_village
-spawn_num = {!squad_name_exist(escape_novice_visiters_village)} 1, 0
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-[exclusive]
-devushka = escape\devushka.ltx
-
-esc_2_12_stalker_fanat = escape\esc_2_12_stalker_fanat.ltx
-esc_2_12_stalker_wolf = escape\esc_2_12_stalker_wolf.ltx
-;esc_2_12_stalker_nimble = escape\esc_2_12_stalker_nimble.ltx
-
-guard_1 = escape\esc_smart_terrain_2_12_smart_logic.ltx
-;guard_2 = escape\esc_smart_terrain_2_12_smart_logic.ltx
-guard_3 = escape\esc_smart_terrain_2_12_smart_logic.ltx
-guard_4 = escape\esc_smart_terrain_2_12_smart_logic.ltx
-
-walker_1 = escape\esc_smart_terrain_2_12_smart_logic.ltx
-walker_2 = escape\esc_smart_terrain_2_12_smart_logic.ltx
-walker_3 = escape\esc_smart_terrain_2_12_smart_logic.ltx
-walker_4 = escape\esc_smart_terrain_2_12_smart_logic.ltx
-walker_5 = escape\esc_smart_terrain_2_12_smart_logic.ltx
-
-esc_smart_terrain_2_12_camp_work_1 = escape\esc_smart_terrain_2_12_smart_logic.ltx
-esc_smart_terrain_2_12_camp_work_2 = escape\esc_smart_terrain_2_12_smart_logic.ltx
-esc_smart_terrain_2_12_camp_work_3 = escape\esc_smart_terrain_2_12_smart_logic.ltx
-esc_smart_terrain_2_12_camp_work_4 = escape\esc_smart_terrain_2_12_smart_logic.ltx
-esc_smart_terrain_2_12_camp_work_5 = escape\esc_smart_terrain_2_12_smart_logic.ltx
-esc_smart_terrain_2_12_camp_work_6 = escape\esc_smart_terrain_2_12_smart_logic.ltx
-esc_smart_terrain_2_12_camp_work_7 = escape\esc_smart_terrain_2_12_smart_logic.ltx
-esc_smart_terrain_2_12_camp_work_8 = escape\esc_smart_terrain_2_12_smart_logic.ltx
-esc_smart_terrain_2_12_camp_work_9 = escape\esc_smart_terrain_2_12_smart_logic.ltx
-esc_smart_terrain_2_12_camp_work_19 = escape\esc_smart_terrain_2_12_smart_logic.ltx
-esc_smart_terrain_2_12_surge_work_1 = escape\esc_smart_terrain_2_12_smart_logic.ltx
-esc_smart_terrain_2_12_surge_work_2 = escape\esc_smart_terrain_2_12_smart_logic.ltx
-esc_smart_terrain_2_12_surge_work_3 = escape\esc_smart_terrain_2_12_smart_logic.ltx
-esc_smart_terrain_2_12_surge_work_4 = escape\esc_smart_terrain_2_12_smart_logic.ltx
-esc_smart_terrain_2_12_surge_work_5 = escape\esc_smart_terrain_2_12_smart_logic.ltx
-esc_smart_terrain_2_12_surge_work_6 = escape\esc_smart_terrain_2_12_smart_logic.ltx
-esc_smart_terrain_2_12_surge_work_7 = escape\esc_smart_terrain_2_12_smart_logic.ltx
-esc_smart_terrain_2_12_surge_work_8 = escape\esc_smart_terrain_2_12_smart_logic.ltx
-esc_smart_terrain_2_12_surge_work_9 = escape\esc_smart_terrain_2_12_smart_logic.ltx
-esc_smart_terrain_2_12_surge_work_10 = escape\esc_smart_terrain_2_12_smart_logic.ltx
-esc_smart_terrain_2_12_surge_work_11 = escape\esc_smart_terrain_2_12_smart_logic.ltx
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/escape/smart/esc_smart_terrain_2_14.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/escape/smart/esc_smart_terrain_2_14.ltx
deleted file mode 100644
index d6d88693..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/escape/smart/esc_smart_terrain_2_14.ltx
+++ /dev/null
@@ -1,28 +0,0 @@
-[smart_terrain]
-squad_id = 3
-max_population = 1
-respawn_params = respawn@esc_smart_terrain_2_14
-respawn_only_smart = true
-respawn_idle = 259200
-respawn_radius = 50
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = nil
-;def_restr = nil
-;safe_restr = nil
-;spawn_point = nil
-
-[respawn@esc_smart_terrain_2_14] ;-- Type:
-spawn_rat_special
-
-
-[spawn_rat_special] ;-- Weak mutants - Rates of groups: ( 1 rat )
-spawn_squads = esc_smart_terrain_2_14_rat_mlr_squad
-spawn_num = {!squad_name_exist(esc_smart_terrain_2_14_rat_mlr_squad)} 1, 0
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-;[exclusive]
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/escape/smart/esc_smart_terrain_3_16.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/escape/smart/esc_smart_terrain_3_16.ltx
deleted file mode 100644
index e35b0a62..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/escape/smart/esc_smart_terrain_3_16.ltx
+++ /dev/null
@@ -1,53 +0,0 @@
-[smart_terrain]
-squad_id = 4
-max_population = 2
-respawn_params = respawn@esc_smart_terrain_3_16
-respawn_only_smart = true
-respawn_idle = 172800
-respawn_radius = 1000
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = nil
-;def_restr = nil
-;safe_restr = nil
-;spawn_point = nil
-
-[respawn@esc_smart_terrain_3_16]
-spawn_army_special
-spawn_army_special_2
-spawn_army_special_3
-
-
-[spawn_army_special]
-spawn_squads = esc_smart_terrain_3_16_military_mlr_squad
-spawn_num = {!squad_name_exist(esc_smart_terrain_3_16_military_mlr_squad)} 1, 0
-
-[spawn_army_special_2]
-spawn_squads = esc_smart_terrain_3_16_military_mlr_patrol
-spawn_num = {!squad_name_exist(esc_smart_terrain_3_16_military_mlr_patrol)} 1, 0
-
-[spawn_army_special_3]
-spawn_squads = kpp_army_mlr_esc_smart_terrain_3_16
-spawn_num = {!squad_name_exist(kpp_army_mlr_esc_smart_terrain_3_16)} 1, 0
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-[exclusive]
-army_south_mechan_mlr = escape\esc_3_16_military_mechan_logic.ltx
-esc_3_16_military_trader = escape\esc_3_16_military_trader_logic.ltx
-
-esc_smart_terrain_3_16_minigunner_excl = escape\esc_smart_terrain_3_16_smart_logic.ltx
-
-esc_smart_terrain_3_16_camp_work_1 = escape\esc_smart_terrain_3_16_smart_logic.ltx
-esc_smart_terrain_3_16_camp_work_2 = escape\esc_smart_terrain_3_16_smart_logic.ltx
-esc_smart_terrain_3_16_camp_work_3 = escape\esc_smart_terrain_3_16_smart_logic.ltx
-esc_smart_terrain_3_16_camp_work_4 = escape\esc_smart_terrain_3_16_smart_logic.ltx
-esc_smart_terrain_3_16_camp_work_5 = escape\esc_smart_terrain_3_16_smart_logic.ltx
-esc_smart_terrain_3_16_camp_work_6 = escape\esc_smart_terrain_3_16_smart_logic.ltx
-esc_smart_terrain_3_16_camp_work_7 = escape\esc_smart_terrain_3_16_smart_logic.ltx
-esc_smart_terrain_3_16_camp_work_8 = escape\esc_smart_terrain_3_16_smart_logic.ltx
-esc_smart_terrain_3_16_camp_work_9 = escape\esc_smart_terrain_3_16_smart_logic.ltx
-esc_smart_terrain_3_16_camp_work_10 = escape\esc_smart_terrain_3_16_smart_logic.ltx
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/escape/smart/esc_smart_terrain_3_7.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/escape/smart/esc_smart_terrain_3_7.ltx
deleted file mode 100644
index 6c3618eb..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/escape/smart/esc_smart_terrain_3_7.ltx
+++ /dev/null
@@ -1,67 +0,0 @@
-[smart_terrain]
-squad_id = 5
-max_population = 1
-respawn_params = respawn@esc_smart_terrain_3_7
-respawn_only_smart = false
-respawn_idle = 172800
-respawn_radius = 50
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = nil
-;def_restr = nil
-;safe_restr = nil
-;spawn_point = nil
-
-[respawn@esc_smart_terrain_3_7] ;-- Type:
-spawn_all_weak
-;spawn_mutants_special
-;spawn_mutants_special_2
-;spawn_mutants_special_3
-;spawn_bandit_special
-;spawn_renegade_special
-
-
-[spawn_all_weak] ;-- Normal mutants - Rates of groups: ( 2 dogs + 2 fleshes/boars )
-spawn_squads = simulation_dog, simulation_mix_boar_flesh, simulation_flesh, simulation_boar
-spawn_num = {~20} 1, 0
-
-;[spawn_mutants_special] ;-- Normal mutants - Rates of groups: ( 1 fleshes/boars )
-;spawn_squads = esc_monster_smart_terrain_3_7_squad
-;spawn_num = {!squad_name_exist(esc_monster_smart_terrain_3_7_squad) !squad_name_exist(esc_monster_smart_terrain_3_7_squad2) !squad_name_exist(esc_monster_smart_terrain_3_7_squad3) ~10} 1, 0
-
-;[spawn_mutants_special_2] ;-- Normal mutants - Rates of groups: ( 1 dogs )
-;spawn_squads = esc_monster_smart_terrain_3_7_squad2
-;spawn_num = {!squad_name_exist(esc_monster_smart_terrain_3_7_squad) !squad_name_exist(esc_monster_smart_terrain_3_7_squad2) !squad_name_exist(esc_monster_smart_terrain_3_7_squad3) ~10} 1, 0
-
-;[spawn_mutants_special_3] ;-- Normal mutants - Rates of groups: ( 1 cats )
-;spawn_squads = esc_monster_smart_terrain_3_7_squad3
-;spawn_num = {!squad_name_exist(esc_monster_smart_terrain_3_7_squad) !squad_name_exist(esc_monster_smart_terrain_3_7_squad2) !squad_name_exist(esc_monster_smart_terrain_3_7_squad3) ~10} 1, 0
-
-;[spawn_bandit_special]
-;spawn_squads = esc_bandit_smart_terrain_3_7_squad
-;spawn_num = {!squad_name_exist(esc_bandit_smart_terrain_3_7_squad) !squad_name_exist(esc_renegade_smart_terrain_3_7_squad) ~10} 1, 0
-
-;[spawn_renegade_special]
-;spawn_squads = esc_renegade_smart_terrain_3_7_squad
-;spawn_num = {!squad_name_exist(esc_bandit_smart_terrain_3_7_squad) !squad_name_exist(esc_renegade_smart_terrain_3_7_squad) ~10} 1, 0
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-[exclusive]
-esc_smart_terrain_3_7_bandit_work_1 = escape\esc_smart_terrain_3_7_squad_logic.ltx
-esc_smart_terrain_3_7_bandit_work_2 = escape\esc_smart_terrain_3_7_squad_logic.ltx
-esc_smart_terrain_3_7_bandit_work_3 = escape\esc_smart_terrain_3_7_squad_logic.ltx
-
-;esc_smart_terrain_3_7_renegade_work_1 = escape\esc_smart_terrain_3_7_squad_logic.ltx
-;esc_smart_terrain_3_7_renegade_work_2 = escape\esc_smart_terrain_3_7_squad_logic.ltx
-;esc_smart_terrain_3_7_renegade_work_3 = escape\esc_smart_terrain_3_7_squad_logic.ltx
-
-;esc_smart_terrain_3_7_monster_work_1 = escape\esc_smart_terrain_3_7_squad_logic.ltx
-;esc_smart_terrain_3_7_monster_work_2 = escape\esc_smart_terrain_3_7_squad_logic.ltx
-;esc_smart_terrain_3_7_monster_work_3 = escape\esc_smart_terrain_3_7_squad_logic.ltx
-;esc_smart_terrain_3_7_monster_work_4 = escape\esc_smart_terrain_3_7_squad_logic.ltx
-
-
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/escape/smart/esc_smart_terrain_4_11.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/escape/smart/esc_smart_terrain_4_11.ltx
deleted file mode 100644
index 4dd289f6..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/escape/smart/esc_smart_terrain_4_11.ltx
+++ /dev/null
@@ -1,25 +0,0 @@
-[smart_terrain] ;-- Disabled spawn
-squad_id = 7
-;max_population = 1
-;respawn_params = respawn@esc_smart_terrain_4_11
-;respawn_only_smart = true
-;respawn_idle = 86400
-;respawn_radius = 50
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = nil
-;def_restr = nil
-;safe_restr = nil
-;spawn_point = nil
-
-;[respawn@esc_smart_terrain_4_11] ;-- Type:
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-[exclusive]
-faction_base_defense_enemy1 = escape\esc_smart_terrain_4_11_smart_logic.ltx
-faction_base_defense_enemy2 = escape\esc_smart_terrain_4_11_smart_logic.ltx
-faction_base_defense_enemy3 = escape\esc_smart_terrain_4_11_smart_logic.ltx
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/escape/smart/esc_smart_terrain_4_13.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/escape/smart/esc_smart_terrain_4_13.ltx
deleted file mode 100644
index 022d3521..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/escape/smart/esc_smart_terrain_4_13.ltx
+++ /dev/null
@@ -1,33 +0,0 @@
-[smart_terrain]
-squad_id = 8
-max_population = 1
-respawn_params = respawn@esc_smart_terrain_4_13
-respawn_only_smart = true
-respawn_idle = 345600
-respawn_radius = 50
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = nil
-;def_restr = nil
-;safe_restr = nil
-;spawn_point = nil
-
-[respawn@esc_smart_terrain_4_13] ;-- Type:
-spawn_heli_strong
-spawn_heli_weak
-
-
-[spawn_heli_strong]
-spawn_helicopter = simulation_helicopter_strong
-spawn_num = {!down_to_earth_functor !heli_exist_on_level} 1, 0
-
-[spawn_heli_weak]
-spawn_helicopter = simulation_helicopter_weak
-spawn_num = {=down_to_earth_functor !heli_exist_on_level} 1, 0
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-;[exclusive]
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/escape/smart/esc_smart_terrain_4_9.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/escape/smart/esc_smart_terrain_4_9.ltx
deleted file mode 100644
index da1e396e..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/escape/smart/esc_smart_terrain_4_9.ltx
+++ /dev/null
@@ -1,28 +0,0 @@
-[smart_terrain]
-squad_id = 10
-max_population = 1
-respawn_params = respawn@esc_smart_terrain_4_9
-respawn_only_smart = false
-respawn_idle = 259200
-respawn_radius = 50
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = nil
-;def_restr = nil
-;safe_restr = nil
-;spawn_point = nil
-
-[respawn@esc_smart_terrain_4_9] ;-- Type:
-spawn_tushkano
-
-
-[spawn_tushkano] ;-- Weak mutants - Rates of groups: ( 1 tushkano )
-spawn_squads = simulation_tushkano
-spawn_num = {~20} 1, 0
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-;[exclusive]
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/escape/smart/esc_smart_terrain_5_12.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/escape/smart/esc_smart_terrain_5_12.ltx
deleted file mode 100644
index 12115b84..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/escape/smart/esc_smart_terrain_5_12.ltx
+++ /dev/null
@@ -1,28 +0,0 @@
-[smart_terrain]
-squad_id = 11
-max_population = 1
-respawn_params = respawn@esc_smart_terrain_5_12
-respawn_only_smart = true
-respawn_idle = 172800
-respawn_radius = 50
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = nil
-;def_restr = nil
-;safe_restr = nil
-;spawn_point = nil
-
-[respawn@esc_smart_terrain_5_12] ;--
-spawn_all_weak
-
-
-[spawn_all_weak] ;-- Weak mutants - Rates of groups:(1 tushkano + 2 dogs + 2 fleshes/boars)
-spawn_squads = simulation_tushkano, simulation_dog, simulation_mix_dogs, simulation_mix_boar_flesh, simulation_flesh
-spawn_num = {~10} 1, 0
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-;[exclusive]
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/escape/smart/esc_smart_terrain_5_2.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/escape/smart/esc_smart_terrain_5_2.ltx
deleted file mode 100644
index f346ac90..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/escape/smart/esc_smart_terrain_5_2.ltx
+++ /dev/null
@@ -1,52 +0,0 @@
-[smart_terrain]
-squad_id = 12
-max_population = 1
-;min_population = 1
-respawn_params = respawn@esc_smart_terrain_5_2
-respawn_only_smart = false
-respawn_idle = 259200
-respawn_radius = 1000
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = nil
-;def_restr = nil
-;safe_restr = nil
-;spawn_point = nil
-
-[respawn@esc_smart_terrain_5_2] ;-- Type: faction {army} = outpost\checkpoint
-spawn_army_novice
-spawn_army_special
-
-
-[spawn_army_novice]
-spawn_squads = army_sim_squad_novice, army_sim_squad_novice, army_sim_squad_novice
-spawn_num = 1
-
-[spawn_army_special]
-spawn_squads = karat_army_esc_smart_terrain_2_12
-spawn_num = {!squad_name_exist(karat_army_esc_smart_terrain_2_12)} 1, 0
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-[exclusive]]
-esc_smart_terrain_5_2_squad_1 = escape\esc_smart_terrain_5_2_squad_logic.ltx
-esc_smart_terrain_5_2_squad_2 = escape\esc_smart_terrain_5_2_squad_logic.ltx
-esc_smart_terrain_5_2_squad_3 = escape\esc_smart_terrain_5_2_squad_logic.ltx
-esc_smart_terrain_5_2_squad_4 = escape\esc_smart_terrain_5_2_squad_logic.ltx
-esc_smart_terrain_5_2_squad_5 = escape\esc_smart_terrain_5_2_squad_logic.ltx
-esc_smart_terrain_5_2_squad_6 = escape\esc_smart_terrain_5_2_squad_logic.ltx
-esc_smart_terrain_5_2_squad_7 = escape\esc_smart_terrain_5_2_squad_logic.ltx
-esc_smart_terrain_5_2_squad_8 = escape\esc_smart_terrain_5_2_squad_logic.ltx
-esc_smart_terrain_5_2_squad_9 = escape\esc_smart_terrain_5_2_squad_logic.ltx
-
-esc_smart_terrain_5_2_camp_work_1 = escape\esc_smart_terrain_5_2_smart_logic.ltx
-esc_smart_terrain_5_2_camp_work_2 = escape\esc_smart_terrain_5_2_smart_logic.ltx
-esc_smart_terrain_5_2_camp_work_3 = escape\esc_smart_terrain_5_2_smart_logic.ltx
-esc_smart_terrain_5_2_camp_work_4 = escape\esc_smart_terrain_5_2_smart_logic.ltx
-esc_smart_terrain_5_2_camp_work_5 = escape\esc_smart_terrain_5_2_smart_logic.ltx
-esc_smart_terrain_5_2_camp_work_6 = escape\esc_smart_terrain_5_2_smart_logic.ltx
-esc_smart_terrain_5_2_camp_work_7 = escape\esc_smart_terrain_5_2_smart_logic.ltx
-esc_smart_terrain_5_2_camp_work_8 = escape\esc_smart_terrain_5_2_smart_logic.ltx
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/escape/smart/esc_smart_terrain_5_4.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/escape/smart/esc_smart_terrain_5_4.ltx
deleted file mode 100644
index 5e50f7f9..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/escape/smart/esc_smart_terrain_5_4.ltx
+++ /dev/null
@@ -1,33 +0,0 @@
-[smart_terrain]
-squad_id = 13
-max_population = 1
-respawn_params = respawn@esc_smart_terrain_5_4
-respawn_only_smart = false
-respawn_idle = 172800
-respawn_radius = 50
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = nil
-;def_restr = nil
-;safe_restr = nil
-;spawn_point = nil
-
-[respawn@esc_smart_terrain_5_4] ;-- Type: c_1_1 + c_1_2
-spawn_all_weak_c_1_1
-spawn_all_normal_c_1_2
-
-
-[spawn_all_weak_c_1_1] ;-- Normal mutants - Rates of groups: ( 2 dogs + 1 flesh + 1 boar )
-spawn_squads = simulation_dog, simulation_mix_dogs, simulation_flesh, simulation_boar
-spawn_num = {!actor_week_in_zone(1)} 1, {=actor_week_in_zone(1)} 0
-
-[spawn_all_normal_c_1_2];-- Normal mutants - Rates of groups: ( 2 dogs + 2 fleshes/boars )
-spawn_squads = simulation_dog_5_7, simulation_mix_dogs, simulation_boar_3_5, simulation_mix_boar_flesh
-spawn_num = {=actor_week_in_zone(1)} 1, {!actor_week_in_zone(1)} 0
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-;[exclusive]
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/escape/smart/esc_smart_terrain_5_6.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/escape/smart/esc_smart_terrain_5_6.ltx
deleted file mode 100644
index 139986a5..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/escape/smart/esc_smart_terrain_5_6.ltx
+++ /dev/null
@@ -1,22 +0,0 @@
-[smart_terrain] ;-- Disabled spawn
-squad_id = 14
-max_population = 1
-;respawn_params = respawn@esc_smart_terrain_5_6
-;respawn_only_smart = false
-;respawn_idle = 86400
-;respawn_radius = 50
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = nil
-;def_restr = nil
-;safe_restr = nil
-;spawn_point = nil
-
-;[respawn@esc_smart_terrain_5_6] ;-- Type:
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-;[exclusive]
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/escape/smart/esc_smart_terrain_5_7.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/escape/smart/esc_smart_terrain_5_7.ltx
deleted file mode 100644
index ed6aa100..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/escape/smart/esc_smart_terrain_5_7.ltx
+++ /dev/null
@@ -1,62 +0,0 @@
-[smart_terrain]
-squad_id = 15
-max_population = 2
-respawn_params = respawn@esc_smart_terrain_5_7
-respawn_only_smart = false
-respawn_idle = 43200
-respawn_radius = 50
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = nil
-;def_restr = nil
-;safe_restr = nil
-;spawn_point = nil
-
-[respawn@esc_smart_terrain_5_7] ;-- Type: faction {stalker\csky} = outpost\safezone
-spawn_stalker@novice
-spawn_stalker@advanced
-spawn_csky@novice
-spawn_csky@advanced
-spawn_stalker_special
-
-
-[spawn_stalker@novice]
-spawn_squads = stalker_sim_squad_novice, stalker_sim_squad_novice, stalker_sim_squad_advanced
-spawn_num = 2
-
-[spawn_stalker@advanced]
-spawn_squads = stalker_sim_squad_novice, stalker_sim_squad_novice, stalker_sim_squad_advanced
-spawn_num = 2
-
-[spawn_csky@novice]
-spawn_squads = csky_sim_squad_novice, csky_sim_squad_novice, csky_sim_squad_advanced
-spawn_num = {-csky_stalker_leader_dead ~50} 1, 0
-
-[spawn_csky@advanced]
-spawn_squads = csky_sim_squad_advanced, csky_sim_squad_advanced, csky_sim_squad_novice
-spawn_num = {+csky_stalker_leader_dead} 4, 0
-
-[spawn_stalker_special]
-spawn_squads = escape_main_base_mlr_guards
-spawn_num = {!squad_name_exist(escape_main_base_mlr_guards)} 1, 0
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-[exclusive]
-esc_main_base_trader_mlr = escape\esc_smart_terrain_5_7_smart_logic.ltx
-esc_smart_terrain_5_7_loner_mechanic = escape\esc_smart_terrain_5_7_smart_logic.ltx
-
-esc_smart_terrain_5_7_beh_tech_job_1 = escape\esc_smart_terrain_5_7_smart_logic.ltx
-esc_smart_terrain_5_7_beh_trade_job_1 = escape\esc_smart_terrain_5_7_smart_logic.ltx
-
-esc_smart_terrain_5_7_camp_work_1 = escape\esc_smart_terrain_5_7_smart_logic.ltx
-esc_smart_terrain_5_7_camp_work_2 = escape\esc_smart_terrain_5_7_smart_logic.ltx
-esc_smart_terrain_5_7_camp_work_3 = escape\esc_smart_terrain_5_7_smart_logic.ltx
-esc_smart_terrain_5_7_camp_work_4 = escape\esc_smart_terrain_5_7_smart_logic.ltx
-esc_smart_terrain_5_7_camp_work_5 = escape\esc_smart_terrain_5_7_smart_logic.ltx
-esc_smart_terrain_5_7_camp_work_6 = escape\esc_smart_terrain_5_7_smart_logic.ltx
-esc_smart_terrain_5_7_camp_work_7 = escape\esc_smart_terrain_5_7_smart_logic.ltx
-esc_smart_terrain_5_7_camp_work_8 = escape\esc_smart_terrain_5_7_smart_logic.ltx
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/escape/smart/esc_smart_terrain_5_9.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/escape/smart/esc_smart_terrain_5_9.ltx
deleted file mode 100644
index 6477e3f9..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/escape/smart/esc_smart_terrain_5_9.ltx
+++ /dev/null
@@ -1,27 +0,0 @@
-[smart_terrain] ;-- Disabled spawn
-squad_id = 16
-max_population = 1
-;respawn_params = respawn@esc_smart_terrain_5_9
-;respawn_only_smart = false
-;respawn_idle = 86400
-;respawn_radius = 50
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = nil
-;def_restr = nil
-;safe_restr = nil
-;spawn_point = nil
-
-;[respawn@esc_smart_terrain_5_9] ;-- Type:
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-[exclusive]
-esc_smart_terrain_5_9_camp_work_1 = escape\esc_smart_terrain_5_9_smart_logic.ltx
-esc_smart_terrain_5_9_camp_work_2 = escape\esc_smart_terrain_5_9_smart_logic.ltx
-esc_smart_terrain_5_9_camp_work_3 = escape\esc_smart_terrain_5_9_smart_logic.ltx
-esc_smart_terrain_5_9_camp_work_4 = escape\esc_smart_terrain_5_9_smart_logic.ltx
-esc_smart_terrain_5_9_camp_work_5 = escape\esc_smart_terrain_5_9_smart_logic.ltx
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/escape/smart/esc_smart_terrain_6_6.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/escape/smart/esc_smart_terrain_6_6.ltx
deleted file mode 100644
index 13d3e087..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/escape/smart/esc_smart_terrain_6_6.ltx
+++ /dev/null
@@ -1,22 +0,0 @@
-[smart_terrain] ;-- Disabled spawn
-squad_id = 17
-;max_population = 1
-;respawn_params = respawn@esc_smart_terrain_5_12
-;respawn_only_smart = false
-;respawn_idle = 86400
-;respawn_radius = 50
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = nil
-;def_restr = nil
-;safe_restr = nil
-;spawn_point = nil
-
-;[respawn@esc_smart_terrain_5_12] ;-- Type:
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-;[exclusive]
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/escape/smart/esc_smart_terrain_6_8.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/escape/smart/esc_smart_terrain_6_8.ltx
deleted file mode 100644
index 0ddbeced..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/escape/smart/esc_smart_terrain_6_8.ltx
+++ /dev/null
@@ -1,34 +0,0 @@
-[smart_terrain]
-squad_id = 18
-max_population = 1
-respawn_params = respawn@esc_smart_terrain_6_8
-respawn_only_smart = true
-respawn_idle = 259200
-respawn_radius = 1000
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = nil
-;def_restr = nil
-;safe_restr = nil
-;spawn_point = nil
-
-[respawn@esc_smart_terrain_6_8] ;-- Type: faction {army} = bridge checkpoint
-spawn_army_special
-
-
-[spawn_army_special]
-spawn_squads = most_army_esc_smart_terrain_6_8
-spawn_num = {!squad_name_exist(most_army_esc_smart_terrain_6_8)} 1, 0
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-[exclusive]
-esc_smart_terrain_6_8_squad_1 = escape\esc_smart_terrain_6_8_squad_logic.ltx
-esc_smart_terrain_6_8_squad_2 = escape\esc_smart_terrain_6_8_squad_logic.ltx
-esc_smart_terrain_6_8_squad_3 = escape\esc_smart_terrain_6_8_squad_logic.ltx
-esc_smart_terrain_6_8_squad_4 = escape\esc_smart_terrain_6_8_squad_logic.ltx
-esc_smart_terrain_6_8_squad_5 = escape\esc_smart_terrain_6_8_squad_logic.ltx
-esc_smart_terrain_6_8_squad_6 = escape\esc_smart_terrain_6_8_squad_logic.ltx
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/escape/smart/esc_smart_terrain_7_11.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/escape/smart/esc_smart_terrain_7_11.ltx
deleted file mode 100644
index d1df253a..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/escape/smart/esc_smart_terrain_7_11.ltx
+++ /dev/null
@@ -1,30 +0,0 @@
-[smart_terrain]
-squad_id = 19
-max_population = 2
-;respawn_params = respawn@esc_smart_terrain_7_11
-;respawn_only_smart = false
-;respawn_idle = 86400
-;respawn_radius = 50
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = nil
-;def_restr = nil
-;safe_restr = nil
-;spawn_point = nil
-
-;[respawn@esc_smart_terrain_7_11] ;-- Type: faction {bandit} = raiding camp
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-[exclusive]
-esc_smart_terrain_7_11_camp_work_1 = escape\esc_smart_terrain_7_11_smart_logic.ltx
-esc_smart_terrain_7_11_camp_work_2 = escape\esc_smart_terrain_7_11_smart_logic.ltx
-esc_smart_terrain_7_11_camp_work_3 = escape\esc_smart_terrain_7_11_smart_logic.ltx
-esc_smart_terrain_7_11_camp_work_4 = escape\esc_smart_terrain_7_11_smart_logic.ltx
-esc_smart_terrain_7_11_camp_work_5 = escape\esc_smart_terrain_7_11_smart_logic.ltx
-esc_smart_terrain_7_11_camp_work_6 = escape\esc_smart_terrain_7_11_smart_logic.ltx
-esc_smart_terrain_7_11_camp_work_7 = escape\esc_smart_terrain_7_11_smart_logic.ltx
-esc_smart_terrain_7_11_camp_work_8 = escape\esc_smart_terrain_7_11_smart_logic.ltx
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/escape/smart/esc_smart_terrain_8_10.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/escape/smart/esc_smart_terrain_8_10.ltx
deleted file mode 100644
index 68a407e3..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/escape/smart/esc_smart_terrain_8_10.ltx
+++ /dev/null
@@ -1,34 +0,0 @@
-[smart_terrain]
-squad_id = 20
-max_population = 1
-min_population = 1
-respawn_params = respawn@esc_smart_terrain_8_10
-respawn_only_smart = false ;true
-respawn_idle = 172800
-respawn_radius = 50
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = nil
-;def_restr = nil
-;safe_restr = nil
-;spawn_point = nil
-
-[respawn@esc_smart_terrain_8_10] ;-- Type: c_1_1+ c_1_2 edited
-spawn_all_weak_c_1_1
-spawn_all_normal_c_1_2
-
-
-[spawn_all_weak_c_1_1] ;-- Weak mutants - Rates of groups: ( 2 tushkano + 2 dogs + 1 flesh )
-spawn_squads = simulation_tushkano, simulation_tushkano, simulation_dog, simulation_mix_dogs, simulation_flesh
-spawn_num = {!actor_week_in_zone(1)} 1, {=actor_week_in_zone(1)} 0
-
-[spawn_all_normal_c_1_2];-- Normal mutants - Rates of groups: ( 2 dogs + 1 cats + 3 fleshes/boars )
-spawn_squads = simulation_mix_dogs, simulation_mix_dogs, simulation_cat_3_5, simulation_mix_boar_flesh, simulation_flesh, simulation_boar
-spawn_num = {=actor_week_in_zone(1)} 1, {!actor_week_in_zone(1)} 0
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-;[exclusive]
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/escape/smart/esc_smart_terrain_8_9.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/escape/smart/esc_smart_terrain_8_9.ltx
deleted file mode 100644
index 230942a6..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/escape/smart/esc_smart_terrain_8_9.ltx
+++ /dev/null
@@ -1,34 +0,0 @@
-[smart_terrain]
-squad_id = 21
-max_population = 1
-min_population = 1
-respawn_params = respawn@esc_smart_terrain_8_9
-respawn_only_smart = false
-respawn_idle = 172800
-respawn_radius = 50
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = nil
-;def_restr = nil
-;safe_restr = nil
-;spawn_point = nil
-
-[respawn@esc_smart_terrain_8_9] ;-- Type: c_1_1+ c_1_2 edited
-spawn_all_weak_c_1_1
-spawn_all_normal_c_1_2
-
-
-[spawn_all_weak_c_1_1] ;-- Weak mutants - Rates of groups: ( 2 dogs + 3 fleshes/boars )
-spawn_squads = simulation_dog, simulation_dog_5_7, simulation_mix_boar_flesh, simulation_flesh, simulation_boar
-spawn_num = {!actor_week_in_zone(1)} 1, {=actor_week_in_zone(1)} 0
-
-[spawn_all_normal_c_1_2] ;-- Normal mutants - Rates of groups: ( 2 dogs + 1 pseudodog + 2 fleshes/boars )
-spawn_squads = simulation_dog_5_7, simulation_mix_dogs, simulation_pseudodog, simulation_boar_3_5, simulation_mix_boar_flesh
-spawn_num = {=actor_week_in_zone(1)} 1, {!actor_week_in_zone(1)} 0
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-;[exclusive]
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/escape/smart/esc_smart_terrain_9_10.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/escape/smart/esc_smart_terrain_9_10.ltx
deleted file mode 100644
index 691ea5ff..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/escape/smart/esc_smart_terrain_9_10.ltx
+++ /dev/null
@@ -1,28 +0,0 @@
-[smart_terrain]
-squad_id = 23
-max_population = 1
-respawn_params = respawn@esc_smart_terrain_9_10
-respawn_only_smart = false
-respawn_idle = 345600
-respawn_radius = 50
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = nil
-;def_restr = nil
-;safe_restr = nil
-;spawn_point = nil
-
-[respawn@esc_smart_terrain_9_10] ;-- Type:
-spawn_lurker
-
-[spawn_lurker] ;-- Hard mutants - Rates of groups: ( 1 lurker )
-spawn_squads = simulation_lurker_blue
-spawn_num = {~10} 1, 0
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-;[exclusive]
-
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/escape/smart/esc_smart_terrain_9_7.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/escape/smart/esc_smart_terrain_9_7.ltx
deleted file mode 100644
index 58a3d66a..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/escape/smart/esc_smart_terrain_9_7.ltx
+++ /dev/null
@@ -1,34 +0,0 @@
-[smart_terrain]
-squad_id = 22
-max_population = 1
-min_population = 1
-respawn_params = respawn@esc_smart_terrain_9_7
-respawn_only_smart = false
-respawn_idle = 86400
-respawn_radius = 50
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = nil
-;def_restr = nil
-;safe_restr = nil
-;spawn_point = nil
-
-[respawn@esc_smart_terrain_9_7] ;-- Type: c_1_1+ c_1_2 edited
-spawn_all_weak_c_1_1
-spawn_all_normal_c_1_2
-
-
-[spawn_all_weak_c_1_1] ;-- Weak mutants - Rates of groups: ( 2 dogs + 3 fleshes/boars )
-spawn_squads = simulation_dog, simulation_dog_5_7, simulation_mix_boar_flesh, simulation_flesh, simulation_boar
-spawn_num = {!actor_week_in_zone(1)} 1, {=actor_week_in_zone(1)} 0
-
-[spawn_all_normal_c_1_2] ;-- Normal mutants - Rates of groups: ( 2 dogs + 1 pseudodog + 2 fleshes/boars )
-spawn_squads = simulation_dog_5_7, simulation_mix_dogs, simulation_pseudodog, simulation_boar_3_5, simulation_mix_boar_flesh
-spawn_num = {=actor_week_in_zone(1)} 1, {!actor_week_in_zone(1)} 0
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-;[exclusive]
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/garbage/baraholka_trader_day_logic.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/garbage/baraholka_trader_day_logic.ltx
deleted file mode 100644
index b665efa1..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/garbage/baraholka_trader_day_logic.ltx
+++ /dev/null
@@ -1,23 +0,0 @@
-[logic@trader_day]
-suitable = {=check_npc_name(baraholka_trader_night) =is_day} true
-prior = 200
-active = sleeper@sleeper_1
-can_select_weapon = true
-level_spot = quest_npc
-dont_keep_items = true
-on_death = death
-
-[death]
-on_info = %+gar_baraholka_yurko_dead%
-
-[sleeper@sleeper_1]
-combat_ignore_cond = {=is_warfare} false, {=actor_true_enemy =check_enemy_name(actor)} false, true
-combat_ignore_keep_when_attacked = {=is_warfare} false, true
-gather_items_enabled = false
-help_wounded_enabled = false
-corpse_detection_enabled = false
-invulnerable = {=is_warfare} false, {!actor_true_enemy} true, false
-path_main = trader_night_sleeper
-meet = no_meet
-;on_info = {-zat_b7_bandit_boss_sultan_task_3_begin !is_day} walker@base
-;on_info2 = {+zat_b7_bandit_boss_sultan_task_3_begin} walker@base
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/garbage/baraholka_trader_night_logic.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/garbage/baraholka_trader_night_logic.ltx
deleted file mode 100644
index fed32400..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/garbage/baraholka_trader_night_logic.ltx
+++ /dev/null
@@ -1,39 +0,0 @@
-[logic@trader_night]
-suitable = {=check_npc_name(baraholka_trader_night) !is_day} true
-trade = items\trade\trade_stalker_flea_market_night.ltx
-prior = 200
-active = walker@base
-can_select_weapon = true
-level_spot = trader
-dont_keep_items = true
-on_death = death
-
-[death]
-on_info = %+gar_baraholka_yurko_dead%
-
-[walker@base]
-path_walk = trader_1_walk
-path_look = trader_1_look
-;on_info2 = {=surge_started} walker@surge
-;on_info = {-zat_b7_bandit_boss_sultan_task_3_begin =is_day} sleeper@sleeper_1
-gather_items_enabled = false
-help_wounded_enabled = false
-corpse_detection_enabled = false
-combat_ignore_cond = {=is_warfare} false, {=actor_true_enemy =check_enemy_name(actor)} false, true
-combat_ignore_keep_when_attacked = {=is_warfare} false, true
-invulnerable = {=is_warfare} false, {!actor_true_enemy} true, false
-meet = meet
-
-[meet]
-close_anim = nil
-close_victim = nil
-far_anim = nil
-far_victim = nil
-close_distance = 0
-far_distance = 0
-close_snd_distance = 3
-abuse = false
-use = {=actor_enemy} false, true
-allow_break = false
-meet_on_talking = false
-trade_enable = false
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/garbage/gar_endless_night_spawn_logic_1.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/garbage/gar_endless_night_spawn_logic_1.ltx
deleted file mode 100644
index b15cbbc9..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/garbage/gar_endless_night_spawn_logic_1.ltx
+++ /dev/null
@@ -1,50 +0,0 @@
-[logic]
-active = ph_idle@wait_actor
-
-[ph_idle@wait_actor]
-on_info = {=actor_near_smart(gar_smart_terrain_1_5) =is_night} ph_idle@spawn_night_monster_1, {=actor_near_smart(gar_smart_terrain_1_5) =is_dark_night} ph_idle@spawn_dark_monster_1
-on_info2 = {=actor_near_smart(gar_smart_terrain_1_7) =is_night} ph_idle@spawn_night_monster_2, {=actor_near_smart(gar_smart_terrain_1_7) =is_dark_night} ph_idle@spawn_dark_monster_2
-on_info3 = {=actor_near_smart(gar_smart_terrain_2_4) =is_night} ph_idle@spawn_night_monster_3, {=actor_near_smart(gar_smart_terrain_2_4) =is_dark_night} ph_idle@spawn_dark_monster_3
-on_info4 = {=actor_near_smart(gar_smart_terrain_6_7) =is_night} ph_idle@spawn_night_monster_4, {=actor_near_smart(gar_smart_terrain_6_7) =is_dark_night} ph_idle@spawn_dark_monster_4
-
-[ph_idle@spawn_night_monster_1]
-on_info = {~10} %=create_squad(simulation_tushkano_night:gar_smart_terrain_1_5)% ph_idle@reset, {~10} %=create_squad(simulation_snork_night:gar_smart_terrain_1_5)% ph_idle@reset, {~10} %=create_squad(simulation_boar_night:gar_smart_terrain_1_5)% ph_idle@reset, {~10} %=create_squad(simulation_pseudodog_night:gar_smart_terrain_1_5)% ph_idle@reset, ph_idle@wait_reset
-
-[ph_idle@spawn_dark_monster_1]
-on_info = {~10} %=create_squad(simulation_mix_zombie_night:gar_smart_terrain_1_5)% ph_idle@reset, {~10} %=create_squad(simulation_snork_night:gar_smart_terrain_1_5)% ph_idle@reset, {~10} %=create_squad(simulation_fracture_night:gar_smart_terrain_1_5)% ph_idle@reset, {~10} %=create_squad(simulation_karlik_night:gar_smart_terrain_1_5)% ph_idle@reset, ph_idle@wait_reset
-
-[ph_idle@reset]
-on_game_timer = 86400 | ph_idle@wait_actor
-
-[ph_idle@spawn_night_monster_2]
-on_info = {~10} %=create_squad(simulation_snork_night:gar_smart_terrain_1_7)% ph_idle@reset_2, {~10} %=create_squad(simulation_fracture_night:gar_smart_terrain_1_7)% ph_idle@reset_2, {~10} %=create_squad(simulation_zombie_blind_night:gar_smart_terrain_1_7)% ph_idle@reset_2, {~10} %=create_squad(simulation_pseudodog_night:gar_smart_terrain_1_7)% ph_idle@reset_2, ph_idle@wait_reset
-
-[ph_idle@spawn_dark_monster_2]
-on_info = {~10} %=create_squad(simulation_snork_night:gar_smart_terrain_1_7)% ph_idle@reset_2, {~10} %=create_squad(simulation_fracture_night:gar_smart_terrain_1_7)% ph_idle@reset_2, {~10} %=create_squad(simulation_zombie_blind_3zomb_civ_night:gar_smart_terrain_1_7)% ph_idle@reset_2, {~10} %=create_squad(simulation_lurker_blue_night:gar_smart_terrain_1_7)% ph_idle@reset_2, ph_idle@wait_reset
-
-[ph_idle@reset_2]
-on_game_timer = 86400 | ph_idle@wait_actor
-
-[ph_idle@spawn_night_monster_3]
-on_info = {~10} %=create_squad(simulation_tushkano_night:gar_smart_terrain_2_4)% ph_idle@reset_3, {~10} %=create_squad(simulation_pseudodog_night:gar_smart_terrain_2_4)% ph_idle@reset_3, {~10} %=create_squad(simulation_cat_night:gar_smart_terrain_2_4)% ph_idle@reset_3, {~10} %=create_squad(simulation_dog_night:gar_smart_terrain_2_4)% ph_idle@reset_3, ph_idle@wait_reset
-
-[ph_idle@spawn_dark_monster_3]
-on_info = {~10} %=create_squad(simulation_bloodsucker_green_night:gar_smart_terrain_2_4)% ph_idle@reset_3, {~10} %=create_squad(simulation_pseudodog_night:gar_smart_terrain_2_4)% ph_idle@reset_3, {~10} %=create_squad(simulation_lurker_blue_night:gar_smart_terrain_2_4)% ph_idle@reset_3, {~10} %=create_squad(simulation_psysucker_white_night:gar_smart_terrain_2_4)% ph_idle@reset_3, ph_idle@wait_reset
-
-[ph_idle@reset_3]
-on_game_timer = 86400 | ph_idle@wait_actor
-
-[ph_idle@spawn_night_monster_4]
-on_info = {~10} %=create_squad(simulation_cat_night:gar_smart_terrain_6_7)% ph_idle@reset_4, {~10} %=create_squad(simulation_dog_night:gar_smart_terrain_6_7)% ph_idle@reset_4, {~10} %=create_squad(simulation_tushkano_night:gar_smart_terrain_6_7)% ph_idle@reset_4, {~10} %=create_squad(simulation_boar_night:gar_smart_terrain_6_7)% ph_idle@reset_4, ph_idle@wait_reset
-
-[ph_idle@spawn_dark_monster_4]
-on_info = {~10} %=create_squad(simulation_karlik_night:gar_smart_terrain_6_7)% ph_idle@reset_4, {~10} %=create_squad(simulation_psysucker_white_night:gar_smart_terrain_6_7)% ph_idle@reset_4, {~10} %=create_squad(simulation_bloodsucker_green_night:gar_smart_terrain_6_7)% ph_idle@reset_4, {~10} %=create_squad(simulation_lurker_blue_night:gar_smart_terrain_6_7)% ph_idle@reset_4, ph_idle@wait_reset
-
-[ph_idle@reset_4]
-on_game_timer = 86400 | ph_idle@wait_actor
-
-[ph_idle@wait_reset]
-on_game_timer = 580 | ph_idle@wait_actor
-
-[collide]
-ignore_static
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/garbage/gar_endless_night_spawn_logic_2.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/garbage/gar_endless_night_spawn_logic_2.ltx
deleted file mode 100644
index 287fc52a..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/garbage/gar_endless_night_spawn_logic_2.ltx
+++ /dev/null
@@ -1,50 +0,0 @@
-[logic]
-active = ph_idle@wait_actor
-
-[ph_idle@wait_actor]
-on_info = {=actor_near_smart(gar_smart_terrain_5_5) =is_night} ph_idle@spawn_night_monster_1, {=actor_near_smart(gar_smart_terrain_5_5) =is_dark_night} ph_idle@spawn_dark_monster_1
-on_info2 = {=actor_near_smart(gar_smart_terrain_5_6) =is_night} ph_idle@spawn_night_monster_2, {=actor_near_smart(gar_smart_terrain_5_6) =is_dark_night} ph_idle@spawn_dark_monster_2
-on_info3 = {=actor_near_smart(gar_smart_terrain_6_6) =is_night} ph_idle@spawn_night_monster_3, {=actor_near_smart(gar_smart_terrain_6_6) =is_dark_night} ph_idle@spawn_dark_monster_3
-on_info4 = {=actor_near_smart(gar_smart_terrain_7_4) =is_night} ph_idle@spawn_night_monster_4, {=actor_near_smart(gar_smart_terrain_7_4) =is_dark_night} ph_idle@spawn_dark_monster_4
-
-[ph_idle@spawn_night_monster_1]
-on_info = {~10} %=create_squad(simulation_cat_night:gar_smart_terrain_5_5)% ph_idle@reset, {~10} %=create_squad(simulation_dog_night:gar_smart_terrain_5_5)% ph_idle@reset, {~10} %=create_squad(simulation_tushkano_night:gar_smart_terrain_5_5)% ph_idle@reset, {~10} %=create_squad(simulation_boar_3_5_night:gar_smart_terrain_5_5)% ph_idle@reset, ph_idle@wait_reset
-
-[ph_idle@spawn_dark_monster_1]
-on_info = {~10} %=create_squad(simulation_pseudodog_night:gar_smart_terrain_5_5)% ph_idle@reset, {~10} %=create_squad(simulation_dog_night:gar_smart_terrain_5_5)% ph_idle@reset, {~10} %=create_squad(simulation_tushkano_night:gar_smart_terrain_5_5)% ph_idle@reset, {~10} %=create_squad(simulation_boar_3_5_night:gar_smart_terrain_5_5)% ph_idle@reset, ph_idle@wait_reset
-
-[ph_idle@reset]
-on_game_timer = 86400 | ph_idle@wait_actor
-
-[ph_idle@spawn_night_monster_2]
-on_info = {~10} %=create_squad(simulation_tushkano_night:gar_smart_terrain_5_6)% ph_idle@reset_2, {~10} %=create_squad(simulation_cat_night:gar_smart_terrain_5_6)% ph_idle@reset_2, {~10} %=create_squad(simulation_boar_night:gar_smart_terrain_5_6)% ph_idle@reset_2, {~10} %=create_squad(simulation_pseudodog_night:gar_smart_terrain_5_6)% ph_idle@reset_2, ph_idle@wait_reset
-
-[ph_idle@spawn_dark_monster_2]
-on_info = {~10} %=create_squad(simulation_tushkano_night:gar_smart_terrain_5_6)% ph_idle@reset_2, {~10} %=create_squad(simulation_fracture_night:gar_smart_terrain_5_6)% ph_idle@reset_2, {~10} %=create_squad(simulation_zombie_blind_night:gar_smart_terrain_5_6)% ph_idle@reset_2, {~10} %=create_squad(simulation_psy_dog_night:gar_smart_terrain_5_6)% ph_idle@reset_2, ph_idle@wait_reset
-
-[ph_idle@reset_2]
-on_game_timer = 86400 | ph_idle@wait_actor
-
-[ph_idle@spawn_night_monster_3]
-on_info = {~10} %=create_squad(simulation_cat_night:gar_smart_terrain_6_6)% ph_idle@reset_3, {~10} %=create_squad(simulation_psysucker_white_night:gar_smart_terrain_6_6)% ph_idle@reset_3, {~10} %=create_squad(simulation_bloodsucker_night:gar_smart_terrain_6_6)% ph_idle@reset_3, {~10} %=create_squad(simulation_karlik_night:gar_smart_terrain_6_6)% ph_idle@reset_3, ph_idle@wait_reset
-
-[ph_idle@spawn_dark_monster_3]
-on_info = {~10} %=create_squad(simulation_psy_dog_night:gar_smart_terrain_6_6)% ph_idle@reset_3, {~10} %=create_squad(simulation_psysucker_white_night:gar_smart_terrain_6_6)% ph_idle@reset_3, {~10} %=create_squad(simulation_bloodsucker_night:gar_smart_terrain_6_6)% ph_idle@reset_3, {~10} %=create_squad(simulation_karlik_night:gar_smart_terrain_6_6)% ph_idle@reset_3, ph_idle@wait_reset
-
-[ph_idle@reset_3]
-on_game_timer = 86400 | ph_idle@wait_actor
-
-[ph_idle@spawn_night_monster_4]
-on_info = {~10} %=create_squad(simulation_lurker_blue_night:gar_smart_terrain_7_4)% ph_idle@reset_4, {~10} %=create_squad(simulation_dog_night:gar_smart_terrain_7_4)% ph_idle@reset_4, {~10} %=create_squad(simulation_tushkano_night:gar_smart_terrain_7_4)% ph_idle@reset_4, {~10} %=create_squad(simulation_boar_night:gar_smart_terrain_7_4)% ph_idle@reset_4, ph_idle@wait_reset
-
-[ph_idle@spawn_dark_monster_4]
-on_info = {~10} %=create_squad(simulation_psy_dog_night:gar_smart_terrain_7_4)% ph_idle@reset_4, {~10} %=create_squad(simulation_dog_night:gar_smart_terrain_7_4)% ph_idle@reset_4, {~10} %=create_squad(simulation_tushkano_night:gar_smart_terrain_7_4)% ph_idle@reset_4, {~10} %=create_squad(simulation_karlik_night:gar_smart_terrain_7_4)% ph_idle@reset_4, ph_idle@wait_reset
-
-[ph_idle@reset_4]
-on_game_timer = 86400 | ph_idle@wait_actor
-
-[ph_idle@wait_reset]
-on_game_timer = 580 | ph_idle@wait_actor
-
-[collide]
-ignore_static
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/garbage/gar_endless_night_spawn_logic_3.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/garbage/gar_endless_night_spawn_logic_3.ltx
deleted file mode 100644
index 1add4c9d..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/garbage/gar_endless_night_spawn_logic_3.ltx
+++ /dev/null
@@ -1,50 +0,0 @@
-[logic]
-active = ph_idle@wait_actor
-
-[ph_idle@wait_actor]
-on_info = {=actor_near_smart(gar_smart_terrain_4_2) =is_night} ph_idle@spawn_night_monster_1, {=actor_near_smart(gar_smart_terrain_4_2) =is_dark_night} ph_idle@spawn_dark_monster_1
-on_info2 = {=actor_near_smart(gar_smart_terrain_6_1) =is_night} ph_idle@spawn_night_monster_2, {=actor_near_smart(gar_smart_terrain_6_1) =is_dark_night} ph_idle@spawn_dark_monster_2
-on_info3 = {=actor_near_smart(gar_smart_terrain_8_3) =is_night} ph_idle@spawn_night_monster_3, {=actor_near_smart(gar_smart_terrain_8_3) =is_dark_night} ph_idle@spawn_dark_monster_3
-on_info4 = {=actor_near_smart(gar_smart_terrain_8_5) =is_night} ph_idle@spawn_night_monster_4, {=actor_near_smart(gar_smart_terrain_8_5) =is_dark_night} ph_idle@spawn_dark_monster_4
-
-[ph_idle@spawn_night_monster_1]
-on_info = {~10} %=create_squad(simulation_bloodsucker_green_night:gar_smart_terrain_4_2)% ph_idle@reset, {~10} %=create_squad(simulation_fracture_night:gar_smart_terrain_4_2)% ph_idle@reset, {~10} %=create_squad(simulation_snork_night:gar_smart_terrain_4_2)% ph_idle@reset, {~10} %=create_squad(simulation_cat_night:gar_smart_terrain_4_2)% ph_idle@reset, ph_idle@wait_reset
-
-[ph_idle@spawn_dark_monster_1]
-on_info = {~10} %=create_squad(simulation_bloodsucker_green_night:gar_smart_terrain_4_2)% ph_idle@reset, {~10} %=create_squad(simulation_fracture_night:gar_smart_terrain_4_2)% ph_idle@reset, {~10} %=create_squad(simulation_snork_night:gar_smart_terrain_4_2)% ph_idle@reset, {~10} %=create_squad(simulation_lurker_blue_night:gar_smart_terrain_4_2)% ph_idle@reset, ph_idle@wait_reset
-
-[ph_idle@reset]
-on_game_timer = 86400 | ph_idle@wait_actor
-
-[ph_idle@spawn_night_monster_2]
-on_info = {~10} %=create_squad(simulation_dog_night:gar_smart_terrain_6_1)% ph_idle@reset_2, {~10} %=create_squad(simulation_psysucker_white_night:gar_smart_terrain_6_1)% ph_idle@reset_2, {~10} %=create_squad(simulation_bloodsucker_green_night:gar_smart_terrain_6_1)% ph_idle@reset_2, {~10} %=create_squad(simulation_pseudodog_night:gar_smart_terrain_6_1)% ph_idle@reset_2, ph_idle@wait_reset
-
-[ph_idle@spawn_dark_monster_2]
-on_info = {~10} %=create_squad(simulation_snork_night:gar_smart_terrain_6_1)% ph_idle@reset_2, {~10} %=create_squad(simulation_fracture_night:gar_smart_terrain_6_1)% ph_idle@reset_2, {~10} %=create_squad(simulation_psy_dog_night:gar_smart_terrain_6_1)% ph_idle@reset_2, {~10} %=create_squad(simulation_bloodsucker_green_night:gar_smart_terrain_6_1)% ph_idle@reset_2, ph_idle@wait_reset
-
-[ph_idle@reset_2]
-on_game_timer = 86400 | ph_idle@wait_actor
-
-[ph_idle@spawn_night_monster_3]
-on_info = {~10} %=create_squad(simulation_tushkano_night:gar_smart_terrain_8_3)% ph_idle@reset_3, {~10} %=create_squad(simulation_dog_night:gar_smart_terrain_8_3)% ph_idle@reset_3, {~10} %=create_squad(simulation_boar_night:gar_smart_terrain_8_3)% ph_idle@reset_3, {~10} %=create_squad(simulation_cat_night:gar_smart_terrain_8_3)% ph_idle@reset_3, ph_idle@wait_reset
-
-[ph_idle@spawn_dark_monster_3]
-on_info = {~10} %=create_squad(simulation_zombie_blind_3zomb_civ_night:gar_smart_terrain_8_3)% ph_idle@reset_3, {~10} %=create_squad(simulation_psysucker_white_night:gar_smart_terrain_8_3)% ph_idle@reset_3, {~10} %=create_squad(simulation_boar_night:gar_smart_terrain_8_3)% ph_idle@reset_3, {~10} %=create_squad(simulation_cat_night:gar_smart_terrain_8_3)% ph_idle@reset_3, ph_idle@wait_reset
-
-[ph_idle@reset_3]
-on_game_timer = 86400 | ph_idle@wait_actor
-
-[ph_idle@spawn_night_monster_4]
-on_info = {~10} %=create_squad(simulation_pseudodog_night:gar_smart_terrain_8_5)% ph_idle@reset_4, {~10} %=create_squad(simulation_fracture_night:gar_smart_terrain_8_5)% ph_idle@reset_4, {~10} %=create_squad(simulation_bloodsucker_green_night:gar_smart_terrain_8_5)% ph_idle@reset_4, {~10} %=create_squad(simulation_lurker_blue_night:gar_smart_terrain_8_5)% ph_idle@reset_4, ph_idle@wait_reset
-
-[ph_idle@spawn_dark_monster_4]
-on_info = {~10} %=create_squad(simulation_pseudodog_night:gar_smart_terrain_8_5)% ph_idle@reset_4, {~10} %=create_squad(simulation_psysucker_white_night:gar_smart_terrain_8_5)% ph_idle@reset_4, {~10} %=create_squad(simulation_bloodsucker_green_night:gar_smart_terrain_8_5)% ph_idle@reset_4, {~10} %=create_squad(simulation_lurker_blue_night:gar_smart_terrain_8_5)% ph_idle@reset_4, ph_idle@wait_reset
-
-[ph_idle@reset_4]
-on_game_timer = 86400 | ph_idle@wait_actor
-
-[ph_idle@wait_reset]
-on_game_timer = 580 | ph_idle@wait_actor
-
-[collide]
-ignore_static
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/garbage/mod_gar_crow_spawner_redone.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/garbage/mod_gar_crow_spawner_redone.ltx
deleted file mode 100644
index eacec88f..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/garbage/mod_gar_crow_spawner_redone.ltx
+++ /dev/null
@@ -1,19 +0,0 @@
-![logic]
-!active = sr_crow_spawner
-active = sr_idle@check_story
-
-[sr_idle@check_story]
-on_info = {-story_mode_disabled} sr_idle@check_actor, {+story_mode_disabled -yan_x16_complete_end} sr_idle@check_actor %+yan_kill_brain_done%
-
-[sr_idle@check_actor]
-on_info = {=actor_community(actor_monolith) -yan_x16_complete_end} sr_idle@check_helmet %+yan_kill_brain_done%, {=actor_community(actor_greh) -yan_x16_complete_end} sr_idle@check_helmet %+yan_kill_brain_done%, sr_idle@check_helmet
-
-[sr_idle@check_helmet]
-on_info = {=actor_has_item(good_psy_helmet)} sr_idle@check_spawner %+living_legend_psy_helmet%, {=actor_has_item(bad_psy_helmet)} sr_idle@check_spawner %+living_legend_psy_helmet%, sr_idle@check_spawner
-
-[sr_idle@check_spawner]
-on_info = sr_crow_spawner
-
-![sr_crow_spawner]
-max_crows_on_level = 5
-spawn_path = gar_crow_spawn_1, gar_crow_spawn_2, gar_crow_spawn_3, gar_crow_spawn_4, gar_crow_spawn_5
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/garbage/mod_gar_smart_terrain_3_5_smart_logic_redone.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/garbage/mod_gar_smart_terrain_3_5_smart_logic_redone.ltx
deleted file mode 100644
index 50dcbad1..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/garbage/mod_gar_smart_terrain_3_5_smart_logic_redone.ltx
+++ /dev/null
@@ -1,37 +0,0 @@
-![logic@gar_smart_terrain_3_5_camp_work_9]
-active = animpoint@gar_smart_terrain_3_5_animpoint_mlr_4
-prior = 65
-
-[logic@hangar_gar_character_logic]
-suitable = {=check_npc_name(sim_default_stalker_3)} true
-active = animpoint@sit
-prior = 200
-on_death = death
-
-[death]
-on_info = %+gar_hangar_character_dead%
-
-![animpoint@sit]
-cover_name = gar_smart_cover_mlr_tech_angar
-reach_movement = walk_noweap
-avail_animations = animpoint_sit_normal
-use_camp = false
-meet = meet@character
-combat_ignore_cond = {=is_warfare} false, {=actor_true_enemy =check_enemy_name(actor)} false, true
-combat_ignore_keep_when_attacked = {=is_warfare} false, true
-invulnerable = {=is_warfare} false, {!actor_true_enemy} true, false
-reach_distance = 10
-gather_items_enabled = false
-help_wounded_enabled = false
-corpse_detection_enabled = false
-
-[meet@character]
-close_anim = nil
-close_victim = nil
-far_anim = nil
-far_victim = nil
-close_distance = 0
-far_distance = 0
-close_snd_distance = 3
-use = {=actor_enemy} false, true
-trade_enable = false
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/garbage/mod_gar_smart_terrain_5_2_smart_logic_redone.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/garbage/mod_gar_smart_terrain_5_2_smart_logic_redone.ltx
deleted file mode 100644
index 92a4ef17..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/garbage/mod_gar_smart_terrain_5_2_smart_logic_redone.ltx
+++ /dev/null
@@ -1,75 +0,0 @@
-[logic@gar_smart_terrain_5_2_guard_work_1]
-active = beh@gar_smart_terrain_5_2_guard_work_1
-suitable = {=target_squad_name(stalker_sim_dolg_post)} true
-prior = 200
-
-[logic@gar_smart_terrain_5_2_guard_work_2]
-active = beh@gar_smart_terrain_5_2_guard_work_2
-suitable = {=target_squad_name(stalker_sim_dolg_post)} true
-prior = 200
-
-[logic@gar_smart_terrain_5_2_guard_work_3]
-active = beh@gar_smart_terrain_5_2_guard_work_3
-suitable = {=target_squad_name(stalker_sim_dolg_post)} true
-prior = 200
-
-[beh@general_guard]
-behavior_state = beh_move
-target = waypoint
-walk_dist = 100
-jog_dist = 220
-wait_anim = guard
-walk_anim = patrol
-jog_anim = assault
-run_anim = assault
-delay_anim = guard
-combat_ignore_cond = false
-combat_ignore_keep_when_attacked = false
-gather_items_enabled = false
-help_wounded_enabled = true
-corpse_detection_enabled = false
-invulnerable = false
-
-[beh@general_surge]
-behavior_state = beh_move
-target = waypoint
-walk_dist = 100
-jog_dist = 220
-walk_anim = rush
-jog_anim = rush
-run_anim = rush
-gather_items_enabled = false
-help_wounded_enabled = false
-corpse_detection_enabled = false
-invulnerable = {=is_warfare} false, {!actor_true_enemy} true, false
-
-[beh@gar_smart_terrain_5_2_guard_work_1]:beh@general_guard
-pt1 = 88860000, guard | pos: 27.316558837891, 0.39998286962509, 200.11589050293 look: 27.004856109619, 0.40251207351685, 199.12585449219
-path_end = loop
-on_info = {=surge_started} beh@gar_smart_terrain_5_2_surge_work_1
-
-[beh@gar_smart_terrain_5_2_guard_work_2]:beh@general_guard
-pt1 = 88860000, guard | pos: 24.931638717651, 0.39881062507629, 238.67102050781 look: 23.962772369385, 0.39802825450897, 238.87631225586
-path_end = loop
-on_info = {=surge_started} beh@gar_smart_terrain_5_2_surge_work_2
-
-[beh@gar_smart_terrain_5_2_guard_work_3]:beh@general_guard
-pt1 = 88860000, guard | pos: 27.532020568848, 0.39941847324371, 238.3621673584 look: 28.915735244751, 0.42033135890961, 236.85572814941
-path_end = loop
-on_info = {=surge_started} beh@gar_smart_terrain_5_2_surge_work_3
-
-[beh@gar_smart_terrain_5_2_surge_work_1]:beh@general_surge
-pt1 = 88860000, guard | pos: 44.686729431152, 0.91298007965088, 244.04870605469 look: 44.464752197266, 0.91293454170227, 243.44853210449
-path_end = loop
-on_info = {=surge_complete} beh@gar_smart_terrain_5_2_guard_work_1
-
-[beh@gar_smart_terrain_5_2_surge_work_2]:beh@general_surge
-pt1 = 88860000, guard | pos: 44.632553100586, 0.91204476356506, 241.4719543457 look: 43.678031921387, 0.91305804252625, 240.873046875
-path_end = loop
-on_info = {=surge_complete} beh@gar_smart_terrain_5_2_guard_work_2
-
-[beh@gar_smart_terrain_5_2_surge_work_3]:beh@general_surge
-pt1 = 88860000, hide | pos: 39.454650878906, 0.91193068027496, 235.47171020508 look: 39.566371917725, 0.91323459148407, 234.66983032227
-path_end = loop
-on_info = {=surge_complete} beh@gar_smart_terrain_5_2_guard_work_3
-
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/garbage/mod_trader_baraholka_logic_redone.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/garbage/mod_trader_baraholka_logic_redone.ltx
deleted file mode 100644
index 67ff9279..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/garbage/mod_trader_baraholka_logic_redone.ltx
+++ /dev/null
@@ -1,5 +0,0 @@
-![logic@trader_baraholka]
-on_death = death
-
-[death]
-on_info = %+gar_baraholka_syoma_dead%
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/garbage/smart/gar_smart_terrain_1_5.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/garbage/smart/gar_smart_terrain_1_5.ltx
deleted file mode 100644
index 81be548a..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/garbage/smart/gar_smart_terrain_1_5.ltx
+++ /dev/null
@@ -1,23 +0,0 @@
-[smart_terrain] ;-- Disabled spawn
-squad_id = 1
-max_population = 1
-;respawn_params = respawn@gar_smart_terrain_1_5
-;respawn_only_smart = false
-;respawn_idle = 86400
-;respawn_radius = 50
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = nil
-;def_restr = nil
-;safe_restr = nil
-;spawn_point = nil
-
-;[respawn@gar_smart_terrain_1_5] ;-- Type:
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-;[exclusive]
-
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/garbage/smart/gar_smart_terrain_1_7.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/garbage/smart/gar_smart_terrain_1_7.ltx
deleted file mode 100644
index d17bdd4b..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/garbage/smart/gar_smart_terrain_1_7.ltx
+++ /dev/null
@@ -1,33 +0,0 @@
-[smart_terrain]
-squad_id = 2
-max_population = 2
-respawn_params = respawn@gar_smart_terrain_1_7
-respawn_only_smart = false
-respawn_idle = 86400
-respawn_radius = 50
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = nil
-;def_restr = nil
-;safe_restr = nil
-;spawn_point = nil
-
-[respawn@gar_smart_terrain_1_7] ;-- Type:
-spawn_all_weak
-spawn_zombie
-
-
-[spawn_all_weak] ;-- Normal mutants - Rates of groups: ( 1 tushkano + 3 dogs + 1 cat)
-spawn_squads = simulation_tushkano, simulation_dog, simulation_mix_dogs, simulation_mix_dogs, simulation_cat
-spawn_num = {~20} 1, 0
-
-[spawn_zombie] ;-- Weak mutants - Rates of groups: ( 3 zombie )
-spawn_squads = simulation_zombie, simulation_zombie_3_6, simulation_mix_zombie
-spawn_num = {+yan_kill_brain_done} 0, 1
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-;[exclusive]
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/garbage/smart/gar_smart_terrain_2_4.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/garbage/smart/gar_smart_terrain_2_4.ltx
deleted file mode 100644
index af316ba8..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/garbage/smart/gar_smart_terrain_2_4.ltx
+++ /dev/null
@@ -1,22 +0,0 @@
-[smart_terrain] ;-- Disabled spawn
-squad_id = 3
-max_population = 1
-;respawn_params = respawn@gar_smart_terrain_2_4
-;respawn_only_smart = false
-;respawn_idle = 86400
-;respawn_radius = 50
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = nil
-;def_restr = nil
-;safe_restr = nil
-;spawn_point = nil
-
-;[respawn@gar_smart_terrain_2_4] ;-- Type:
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-;[exclusive]
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/garbage/smart/gar_smart_terrain_3_5.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/garbage/smart/gar_smart_terrain_3_5.ltx
deleted file mode 100644
index a4fba1cf..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/garbage/smart/gar_smart_terrain_3_5.ltx
+++ /dev/null
@@ -1,63 +0,0 @@
-[smart_terrain]
-squad_id = 5
-max_population = 2
-;min_population = 1
-respawn_params = respawn@gar_smart_terrain_3_5
-respawn_only_smart = false
-respawn_idle = 86400
-respawn_radius = 50
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = nil
-;def_restr = nil
-;safe_restr = nil
-;spawn_point = nil
-
-[respawn@gar_smart_terrain_3_5] ;-- Type: faction {stalker\bandit\army} = trade hangar
-spawn_stalker_special
-spawn_bandit_special
-spawn_bandit_special_2
-spawn_army_special
-spawn_army_special_2
-
-
-[spawn_stalker_special]
-spawn_squads = start_visitirs_hangar_mlr_squad
-spawn_num = {!squad_exist(start_visitirs_hangar_mlr_squad) -gar_hangar_character_dead} 1, 0
-
-[spawn_bandit_special]
-spawn_squads = start_depo_bandit_gar_smart_terrain_3_5
-spawn_num = {!squad_exist(start_depo_bandit_gar_smart_terrain_3_5) =actor_community(actor_bandit) +gar_hangar_character_dead} 1, 0
-
-[spawn_bandit_special_2]
-spawn_squads = start_depo_bandit_gar_smart_terrain_3_5
-spawn_num = {!squad_exist(start_depo_bandit_gar_smart_terrain_3_5) =actor_community(actor_renegade) +gar_hangar_character_dead} 1, 0
-
-[spawn_army_special]
-spawn_squads = start_depo_army_gar_smart_terrain_3_5
-spawn_num = {!squad_exist(start_depo_army_gar_smart_terrain_3_5) =actor_community(actor_army) +gar_hangar_character_dead} 1, 0
-
-[spawn_army_special_2]
-spawn_squads = start_depo_army_gar_smart_terrain_3_5
-spawn_num = {!squad_exist(start_depo_army_gar_smart_terrain_3_5) =actor_community(actor_killer) +gar_hangar_character_dead} 1, 0
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-[exclusive]
-;hunter_gar_mec_logic = garbage\gar_smart_terrain_3_5_smart_logic.ltx
-hunter_gar_trader_logic = garbage\gar_smart_terrain_3_5_smart_logic.ltx
-hangar_gar_character_logic = garbage\gar_smart_terrain_3_5_smart_logic.ltx
-
-gar_smart_terrain_3_5_beh_trade_1 = garbage\gar_smart_terrain_3_5_smart_logic.ltx
-gar_smart_terrain_3_5_camp_work_2 = garbage\gar_smart_terrain_3_5_smart_logic.ltx
-gar_smart_terrain_3_5_camp_work_3 = garbage\gar_smart_terrain_3_5_smart_logic.ltx
-gar_smart_terrain_3_5_camp_work_4 = garbage\gar_smart_terrain_3_5_smart_logic.ltx
-gar_smart_terrain_3_5_camp_work_5 = garbage\gar_smart_terrain_3_5_smart_logic.ltx
-gar_smart_terrain_3_5_camp_work_6 = garbage\gar_smart_terrain_3_5_smart_logic.ltx
-gar_smart_terrain_3_5_camp_work_9 = garbage\gar_smart_terrain_3_5_smart_logic.ltx
-gar_smart_terrain_3_5_camp_work_10 = garbage\gar_smart_terrain_3_5_smart_logic.ltx
-gar_smart_terrain_3_5_camp_work_11 = garbage\gar_smart_terrain_3_5_smart_logic.ltx
-gar_smart_terrain_3_5_camp_work_12 = garbage\gar_smart_terrain_3_5_smart_logic.ltx
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/garbage/smart/gar_smart_terrain_3_7.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/garbage/smart/gar_smart_terrain_3_7.ltx
deleted file mode 100644
index d5bc5aec..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/garbage/smart/gar_smart_terrain_3_7.ltx
+++ /dev/null
@@ -1,22 +0,0 @@
-[smart_terrain]
-squad_id = 6
-max_population = 3
-;respawn_params = respawn@gar_smart_terrain_3_7
-;respawn_only_smart = false
-;respawn_idle = 86400
-;respawn_radius = 50
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = nil
-;def_restr = nil
-;safe_restr = nil
-;spawn_point = nil
-
-;[respawn@gar_smart_terrain_3_7] ;-- Type: faction {army} = guardsite
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-;[exclusive]
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/garbage/smart/gar_smart_terrain_4_2.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/garbage/smart/gar_smart_terrain_4_2.ltx
deleted file mode 100644
index 2797e949..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/garbage/smart/gar_smart_terrain_4_2.ltx
+++ /dev/null
@@ -1,33 +0,0 @@
-[smart_terrain]
-squad_id = 7
-max_population = 2
-respawn_params = respawn@gar_smart_terrain_4_2
-respawn_only_smart = false
-respawn_idle = 86400
-respawn_radius = 50
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = nil
-;def_restr = nil
-;safe_restr = nil
-;spawn_point = nil
-
-[respawn@gar_smart_terrain_4_2] ;-- Type:
-spawn_fracture
-spawn_zombie
-
-
-[spawn_fracture] ;-- Hard mutants - Rates of groups: ( 2 fracture )
-spawn_squads = simulation_fracture, simulation_fracture
-spawn_num = {~20} 1, 0
-
-[spawn_zombie] ;-- Weak mutants - Rates of groups: ( 3 zombie )
-spawn_squads = simulation_zombie, simulation_zombie_3_6, simulation_mix_zombie
-spawn_num = {+yan_kill_brain_done} 0, 1
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-;[exclusive]
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/garbage/smart/gar_smart_terrain_4_5.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/garbage/smart/gar_smart_terrain_4_5.ltx
deleted file mode 100644
index 6bdc9abf..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/garbage/smart/gar_smart_terrain_4_5.ltx
+++ /dev/null
@@ -1,24 +0,0 @@
-[smart_terrain] ;-- Disabled spawn
-squad_id = 8
-max_population = 1
-;respawn_params = respawn@gar_smart_terrain_4_5
-;respawn_only_smart = false
-;respawn_idle = 86400
-;respawn_radius = 50
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = nil
-;def_restr = nil
-;safe_restr = nil
-;spawn_point = nil
-
-;[respawn@gar_smart_terrain_4_5] ;-- Type:
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-[exclusive]
-gar_smart_terrain_4_5_camp_work_1 = garbage\gar_smart_terrain_4_5_smart_logic.ltx
-gar_smart_terrain_4_5_camp_work_2 = garbage\gar_smart_terrain_4_5_smart_logic.ltx
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/garbage/smart/gar_smart_terrain_5_2.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/garbage/smart/gar_smart_terrain_5_2.ltx
deleted file mode 100644
index df2d6d7b..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/garbage/smart/gar_smart_terrain_5_2.ltx
+++ /dev/null
@@ -1,44 +0,0 @@
-[smart_terrain]
-squad_id = 9
-max_population = 2
-;min_population = 1
-respawn_params = respawn@gar_smart_terrain_5_2
-respawn_only_smart = false
-respawn_idle = 172800
-respawn_radius = 50
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = nil
-;def_restr = nil
-;safe_restr = nil
-;spawn_point = nil
-
-[respawn@gar_smart_terrain_5_2] ;-- Type: faction {duty} = checkpoint\camp
-spawn_duty@advanced
-spawn_duty_special
-
-
-[spawn_duty@advanced]
-spawn_squads = duty_sim_squad_novice, duty_sim_squad_novice, duty_sim_squad_advanced
-spawn_num = {+bar_dolg_leader_dead +bar_dolg_petrenko_dead} 0, 2
-
-[spawn_duty_special]
-spawn_squads = stalker_sim_dolg_post
-spawn_num = {!squad_name_exist(stalker_sim_dolg_post) -bar_dolg_leader_dead} 1, 0 ;{-bar_dolg_petrenko_dead}
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-[exclusive]
-gar_smart_terrain_5_2_camp_work_1 = garbage\gar_smart_terrain_5_2_smart_logic.ltx
-gar_smart_terrain_5_2_camp_work_2 = garbage\gar_smart_terrain_5_2_smart_logic.ltx
-gar_smart_terrain_5_2_camp_work_3 = garbage\gar_smart_terrain_5_2_smart_logic.ltx
-gar_smart_terrain_5_2_camp_work_4 = garbage\gar_smart_terrain_5_2_smart_logic.ltx
-gar_smart_terrain_5_2_camp_work_5 = garbage\gar_smart_terrain_5_2_smart_logic.ltx
-gar_smart_terrain_5_2_camp_work_6 = garbage\gar_smart_terrain_5_2_smart_logic.ltx
-
-;gar_smart_terrain_5_2_guard_work_1 = garbage\gar_smart_terrain_5_2_smart_logic.ltx
-gar_smart_terrain_5_2_guard_work_2 = garbage\gar_smart_terrain_5_2_smart_logic.ltx
-gar_smart_terrain_5_2_guard_work_3 = garbage\gar_smart_terrain_5_2_smart_logic.ltx
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/garbage/smart/gar_smart_terrain_5_4.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/garbage/smart/gar_smart_terrain_5_4.ltx
deleted file mode 100644
index 11c8af18..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/garbage/smart/gar_smart_terrain_5_4.ltx
+++ /dev/null
@@ -1,22 +0,0 @@
-[smart_terrain] ;-- Disabled spawn
-squad_id = 10
-;max_population = 1
-;respawn_params = respawn@gar_smart_terrain_5_4
-;respawn_only_smart = false
-;respawn_idle = 86400
-;respawn_radius = 50
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = nil
-;def_restr = nil
-;safe_restr = nil
-;spawn_point = nil
-
-;[respawn@gar_smart_terrain_5_4] ;-- Type:
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-;[exclusive]
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/garbage/smart/gar_smart_terrain_5_5.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/garbage/smart/gar_smart_terrain_5_5.ltx
deleted file mode 100644
index ab224678..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/garbage/smart/gar_smart_terrain_5_5.ltx
+++ /dev/null
@@ -1,35 +0,0 @@
-[smart_terrain]
-squad_id = 11
-max_population = 1
-respawn_params = respawn@gar_smart_terrain_5_5
-respawn_only_smart = false
-respawn_idle = 172800
-respawn_radius = 50
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = nil
-;def_restr = nil
-;safe_restr = nil
-;spawn_point = nil
-
-[respawn@gar_smart_terrain_5_5] ;-- Type: c_1_1 + c_1_2 edited
-spawn_all_weak_c_1_1
-spawn_all_normal_c_1_2
-
-
-[spawn_all_weak_c_1_1] ;-- Normal mutants - Rates of groups: ( 2 tushkano + 2 dogs + 1 cats )
-spawn_squads = simulation_tushkano, simulation_tushkano, simulation_dog, simulation_mix_dogs, simulation_cat
-spawn_num = {!actor_week_in_zone(1)} 1, {=actor_week_in_zone(1)} 0
-
-[spawn_all_normal_c_1_2];-- Normal mutants - Rates of groups: ( 2 dogs + 2 cats )
-spawn_squads = simulation_mix_dogs, simulation_mix_dogs, simulation_cat, simulation_cat_3_5
-spawn_num = {=actor_week_in_zone(1)} 1, {!actor_week_in_zone(1)} 0
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-;[exclusive]
-
-
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/garbage/smart/gar_smart_terrain_5_6.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/garbage/smart/gar_smart_terrain_5_6.ltx
deleted file mode 100644
index bc4b4fb2..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/garbage/smart/gar_smart_terrain_5_6.ltx
+++ /dev/null
@@ -1,29 +0,0 @@
-[smart_terrain]
-squad_id = 12
-max_population = 1
-respawn_params = respawn@gar_smart_terrain_5_6
-respawn_only_smart = false
-respawn_idle = 172800
-respawn_radius = 50
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = nil
-;def_restr = nil
-;safe_restr = nil
-;spawn_point = nil
-
-[respawn@gar_smart_terrain_5_6] ;-- Type: c_1_1 + c_1_2 edited
-spawn_all_weak_c_1_1
-spawn_all_normal_c_1_2
-
-
-[spawn_all_weak_c_1_1] ;-- Weak mutants - Rates of groups: ( 2 tushkano + 2 dogs + 1 cats + 1 flesh )
-spawn_squads = simulation_tushkano, simulation_tushkano, simulation_dog, simulation_mix_dogs, simulation_cat, simulation_flesh
-spawn_num = {!actor_week_in_zone(1)} 1, {=actor_week_in_zone(1)} 0
-
-[spawn_all_normal_c_1_2];-- Normal mutants - Rates of groups: ( 2 dogs + 1 pseudodog + 1 cats + 3 fleshes/boars )
-spawn_squads = simulation_mix_dogs, simulation_mix_dogs, simulation_pseudodog, simulation_cat_3_5, simulation_mix_boar_flesh, simulation_boar
-spawn_num = {=actor_week_in_zone(1)} 1, {!actor_week_in_zone(1)} 0
-
-
-;[exclusive]
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/garbage/smart/gar_smart_terrain_5_8.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/garbage/smart/gar_smart_terrain_5_8.ltx
deleted file mode 100644
index cc79410b..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/garbage/smart/gar_smart_terrain_5_8.ltx
+++ /dev/null
@@ -1,22 +0,0 @@
-[smart_terrain]
-squad_id = 22
-max_population = 2
-;respawn_params = respawn@gar_smart_terrain_5_8
-;respawn_only_smart = false
-;respawn_idle = 172800
-;respawn_radius = 50
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = nil
-;def_restr = nil
-;safe_restr = nil
-;spawn_point = nil
-
-;[respawn@gar_smart_terrain_5_8] ;-- Type: faction {army} = checkpoint\camp
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-;[exclusive]
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/garbage/smart/gar_smart_terrain_6_1.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/garbage/smart/gar_smart_terrain_6_1.ltx
deleted file mode 100644
index cf9cce56..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/garbage/smart/gar_smart_terrain_6_1.ltx
+++ /dev/null
@@ -1,34 +0,0 @@
-[smart_terrain]
-squad_id = 13
-max_population = 1
-respawn_params = respawn@gar_smart_terrain_6_1
-respawn_only_smart = false
-respawn_idle = 86400
-respawn_radius = 50
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = nil
-;def_restr = nil
-;safe_restr = nil
-;spawn_point = nil
-
-[respawn@gar_smart_terrain_6_1] ;-- Type:
-spawn_all_weak
-spawn_all_normal
-
-
-[spawn_all_weak] ;-- Normal mutants - Rates of groups:( 2 dogs + 1 cats + 1 fleshes/boars )
-spawn_squads = simulation_dog, simulation_mix_dogs, simulation_cat, simulation_mix_boar_flesh
-spawn_num = {~50} 1, 0
-
-[spawn_all_normal] ;-- Normal mutants - Rates of groups:( 2 dogs + 3 fleshes/boars )
-spawn_squads = simulation_dog_5_7, simulation_mix_dogs, simulation_mix_boar_flesh, simulation_flesh, simulation_boar
-spawn_num = {~50} 1, 0
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-;[exclusive]
-
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/garbage/smart/gar_smart_terrain_6_3.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/garbage/smart/gar_smart_terrain_6_3.ltx
deleted file mode 100644
index b74855d7..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/garbage/smart/gar_smart_terrain_6_3.ltx
+++ /dev/null
@@ -1,41 +0,0 @@
-[smart_terrain]
-squad_id = 14
-max_population = 2
-respawn_params = respawn@gar_smart_terrain_6_3
-respawn_only_smart = false
-respawn_idle = 172800
-respawn_radius = 50
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = nil
-;def_restr = nil
-;safe_restr = nil
-;spawn_point = nil
-
-[respawn@gar_smart_terrain_6_3] ;-- Type: faction {stalker} = tradepost
-;spawn_stalker@novice
-spawn_stalker_special
-
-
-;[spawn_stalker@novice]
-;spawn_squads = stalker_sim_squad_novice, stalker_sim_squad_novice, stalker_sim_squad_advanced
-;spawn_num = {+gar_baraholka_syoma_dead +gar_baraholka_yurko_dead} 0, 1
-
-[spawn_stalker_special]
-spawn_squads = stalker_gar_smart_terrain_6_3
-spawn_num = {!squad_exist(stalker_gar_smart_terrain_6_3) -gar_baraholka_syoma_dead -gar_baraholka_yurko_dead} 1, 0
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-[exclusive]
-trader_baraholka_day = garbage\trader_baraholka_day_logic.ltx
-trader_baraholka_night = garbage\trader_baraholka_night_logic.ltx
-trader_day = garbage\baraholka_trader_day_logic.ltx
-trader_night = garbage\baraholka_trader_night_logic.ltx
-
-gar_smart_terrain_6_3_camp_work_1 = garbage\gar_smart_terrain_6_3_smart_logic.ltx
-
-;recruiter_bandit = garbage\baraholka_logic_recruiter_bandit.ltx
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/garbage/smart/gar_smart_terrain_6_6.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/garbage/smart/gar_smart_terrain_6_6.ltx
deleted file mode 100644
index 7fc71b46..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/garbage/smart/gar_smart_terrain_6_6.ltx
+++ /dev/null
@@ -1,38 +0,0 @@
-[smart_terrain]
-squad_id = 15
-max_population = 2
-respawn_params = respawn@gar_smart_terrain_6_6
-respawn_only_smart = false
-respawn_idle = 172800
-respawn_radius = 50
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = nil
-;def_restr = nil
-;safe_restr = nil
-;spawn_point = nil
-
-[respawn@gar_smart_terrain_6_6] ;-- Type: c_1_1 + c_1_2 edited
-spawn_all_weak_c_1_1
-spawn_all_normal_c_1_2
-spawn_mutants_rare
-
-
-[spawn_all_weak_c_1_1] ;-- Weak mutants - Rates of groups: ( 2 tushkano + 2 dogs + 1 cats + 1 flesh )
-spawn_squads = simulation_tushkano, simulation_tushkano, simulation_dog, simulation_mix_dogs, simulation_cat, simulation_flesh
-spawn_num = {!actor_week_in_zone(1)} 1, {=actor_week_in_zone(1)} 0
-
-[spawn_all_normal_c_1_2];-- Normal mutants - Rates of groups: ( 2 dogs + 1 cats + 3 fleshes/boars )
-spawn_squads = simulation_mix_dogs, simulation_mix_dogs, simulation_cat_3_5, simulation_mix_boar_flesh, simulation_flesh, simulation_boar
-spawn_num = {=actor_week_in_zone(1)} 1, {!actor_week_in_zone(1)} 0
-
-[spawn_mutants_rare] ;-- Rare mutants - Rates of groups: ( 1 karlik )
-spawn_squads = simulation_karlik, simulation_karlik, simulation_fracture
-spawn_num = {~10} 1, 0
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-;[exclusive]
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/garbage/smart/gar_smart_terrain_6_7.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/garbage/smart/gar_smart_terrain_6_7.ltx
deleted file mode 100644
index ee5f22bc..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/garbage/smart/gar_smart_terrain_6_7.ltx
+++ /dev/null
@@ -1,25 +0,0 @@
-[smart_terrain] ;-- Disabled spawn
-squad_id = 16
-max_population = 1
-;respawn_params = respawn@gar_smart_terrain_6_7
-;respawn_only_smart = false
-;respawn_idle = 86400
-;respawn_radius = 50
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = nil
-;def_restr = nil
-;safe_restr = nil
-;spawn_point = nil
-
-;[respawn@gar_smart_terrain_6_7] ;-- Type:
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-;[exclusive]
-
-
-
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/garbage/smart/gar_smart_terrain_7_4.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/garbage/smart/gar_smart_terrain_7_4.ltx
deleted file mode 100644
index 17c49c70..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/garbage/smart/gar_smart_terrain_7_4.ltx
+++ /dev/null
@@ -1,34 +0,0 @@
-[smart_terrain]
-squad_id = 18
-max_population = 1
-respawn_params = respawn@gar_smart_terrain_7_4
-respawn_only_smart = false
-respawn_idle = 172800
-respawn_radius = 50
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = nil
-;def_restr = nil
-;safe_restr = nil
-;spawn_point = nil
-
-[respawn@gar_smart_terrain_7_4] ;-- Type: c_1_1 + c_1_2 edited
-spawn_all_weak_c_1_1
-spawn_all_normal_c_1_2
-
-
-[spawn_all_weak_c_1_1] ;-- Weak mutants - Rates of groups: ( 2 tushkano + 2 dogs + 1 cats + 1 flesh )
-spawn_squads = simulation_tushkano, simulation_tushkano, simulation_dog, simulation_mix_dogs, simulation_cat, simulation_flesh
-spawn_num = {!actor_week_in_zone(1)} 1, {=actor_week_in_zone(1)} 0
-
-[spawn_all_normal_c_1_2];-- Normal mutants - Rates of groups: ( 2 dogs + 1 pseudodog + 1 cats + 3 fleshes/boars )
-spawn_squads = simulation_mix_dogs, simulation_mix_dogs, simulation_pseudodog, simulation_cat_3_5, simulation_mix_boar_flesh, simulation_boar
-spawn_num = {=actor_week_in_zone(1)} 1, {!actor_week_in_zone(1)} 0
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-;[exclusive]
-
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/garbage/smart/gar_smart_terrain_8_3.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/garbage/smart/gar_smart_terrain_8_3.ltx
deleted file mode 100644
index 103141ff..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/garbage/smart/gar_smart_terrain_8_3.ltx
+++ /dev/null
@@ -1,28 +0,0 @@
-[smart_terrain]
-squad_id = 28
-max_population = 2
-respawn_params = respawn@gar_smart_terrain_8_3
-respawn_only_smart = false
-respawn_idle = 86400
-respawn_radius = 50
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = nil
-;def_restr = nil
-;safe_restr = nil
-;spawn_point = nil
-
-[respawn@gar_smart_terrain_8_3]
-spawn_all_normal
-
-
-[spawn_all_normal] ;-- Normal mutants - Rates of groups: ( 2 dogs + 1 cats + 3 fleshes/boars )
-spawn_squads = simulation_mix_dogs, simulation_mix_dogs, simulation_cat_3_5, simulation_mix_boar_flesh, simulation_flesh, simulation_boar
-spawn_num = 1
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-;[exclusive]
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/garbage/smart/gar_smart_terrain_8_5.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/garbage/smart/gar_smart_terrain_8_5.ltx
deleted file mode 100644
index ccf1ad1e..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/garbage/smart/gar_smart_terrain_8_5.ltx
+++ /dev/null
@@ -1,32 +0,0 @@
-[smart_terrain]
-squad_id = 19
-max_population = 1
-respawn_params = respawn@gar_smart_terrain_8_5
-respawn_only_smart = false
-respawn_idle = 259200
-respawn_radius = 50
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = nil
-;def_restr = nil
-;safe_restr = nil
-;spawn_point = nil
-
-[respawn@gar_smart_terrain_8_5] ;-- Type:
-spawn_fracture
-spawn_lurker
-
-[spawn_fracture] ;-- Hard mutants - Rates of groups: ( 2 fracture )
-spawn_squads = simulation_fracture, simulation_fracture
-spawn_num = {~20} 1, 0
-
-[spawn_lurker] ;-- Hard mutants - Rates of groups: ( 2 lurker )
-spawn_squads = simulation_lurker, simulation_lurker_blue
-spawn_num = {~50} 1, 0
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-;[exclusive]
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/garbage/trader_baraholka_day_logic.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/garbage/trader_baraholka_day_logic.ltx
deleted file mode 100644
index ce714444..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/garbage/trader_baraholka_day_logic.ltx
+++ /dev/null
@@ -1,39 +0,0 @@
-[logic@trader_baraholka_day]
-suitable = {=check_npc_name(baraholka_trader) =is_day} true
-trade = items\trade\trade_stalker_flea_market.ltx
-prior = 200
-active = animpoint@baraholka_1
-can_select_weapon = true
-level_spot = trader
-dont_keep_items = true
-on_death = death
-
-[death]
-on_info = %+gar_baraholka_syoma_dead%
-
-[animpoint@baraholka_1]
-cover_name = gar_cover_day_trader_baraholka
-avail_animations = animpoint_sit_ass
-use_camp = false
-meet = meet
-;on_info = {-zat_b7_bandit_boss_sultan_task_3_begin =is_night} sleeper@sleeper_1
-combat_ignore_cond = {=is_warfare} false, {=actor_true_enemy =check_enemy_name(actor)} false, true
-combat_ignore_keep_when_attacked = {=is_warfare} false, true
-invulnerable = {=is_warfare} false, {!actor_true_enemy} true, false
-gather_items_enabled = false
-help_wounded_enabled = false
-corpse_detection_enabled = false
-
-[meet]
-close_anim = nil
-close_victim = nil
-far_anim = nil
-far_victim = nil
-close_distance = 0
-far_distance = 0
-close_snd_distance = 3
-abuse = false
-use = {=actor_enemy} false, true
-allow_break = false
-meet_on_talking = false
-trade_enable = false
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/garbage/trader_baraholka_night_logic.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/garbage/trader_baraholka_night_logic.ltx
deleted file mode 100644
index 86b1a0fc..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/garbage/trader_baraholka_night_logic.ltx
+++ /dev/null
@@ -1,23 +0,0 @@
-[logic@trader_baraholka_night]
-suitable = {=check_npc_name(baraholka_trader) !is_day} true
-prior = 200
-active = sleeper@sleeper_1
-can_select_weapon = true
-level_spot = quest_npc
-dont_keep_items = true
-on_death = death
-
-[death]
-on_info = %+gar_baraholka_syoma_dead%
-
-[sleeper@sleeper_1]
-combat_ignore_cond = {=is_warfare} false, {=actor_true_enemy =check_enemy_name(actor)} false, true
-combat_ignore_keep_when_attacked = {=is_warfare} false, true
-gather_items_enabled = false
-help_wounded_enabled = false
-corpse_detection_enabled = false
-invulnerable = {=is_warfare} false, {!actor_true_enemy} true, false
-path_main = trader_day_sleeper
-meet = no_meet
-;on_info = {-zat_b7_bandit_boss_sultan_task_3_begin !is_night} animpoint@baraholka_1
-;on_info2 = {+zat_b7_bandit_boss_sultan_task_3_begin} walker@base
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/labx16/mod_brain_system_message_redone.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/labx16/mod_brain_system_message_redone.ltx
deleted file mode 100644
index e49d04e3..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/labx16/mod_brain_system_message_redone.ltx
+++ /dev/null
@@ -1,6 +0,0 @@
-![sr_idle@check_story]
-on_info = {=actor_community(actor_monolith)} sr_idle@nil, {=actor_community(actor_greh)} sr_idle@nil, {+story_mode_disabled} sr_idle@nil, sr_idle@system_idle
-
-![sr_idle@primary_off]
-on_info = %=stop_sound_looped =play_sound(x16_brain_stop)%
-on_timer = 1000 | sr_idle@primary_idle ;%=run_cam_effector(radar_stop:2506:false)%
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/labx16/mod_x16_generator_sound_1_redone.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/labx16/mod_x16_generator_sound_1_redone.ltx
deleted file mode 100644
index 93d07b9c..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/labx16/mod_x16_generator_sound_1_redone.ltx
+++ /dev/null
@@ -1,11 +0,0 @@
-![sr_idle@on]
-on_info = {-yan_labx16_switcher_1_off} %=play_sound_looped(x16_engine1_run)%
-on_info2 = {+yan_labx16_switcher_1_off} sr_idle@off %=play_sound(x16_engine1_stop)%
-
-![sr_idle@off]
-on_game_timer = 5 | %=stop_sound_looped%
-on_game_timer2 = 100 | sr_idle@reactivate
-
-[sr_idle@reactivate]
-on_info = {-yan_labx16_switcher_1_off} %=play_sound_looped(x16_engine1_run)%
-on_info2 = {+yan_labx16_switcher_1_off} sr_idle@off %=play_sound(x16_engine1_stop)%
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/labx16/mod_x16_generator_sound_2_redone.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/labx16/mod_x16_generator_sound_2_redone.ltx
deleted file mode 100644
index 4b203482..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/labx16/mod_x16_generator_sound_2_redone.ltx
+++ /dev/null
@@ -1,11 +0,0 @@
-![sr_idle@on]
-on_info = {-yan_labx16_switcher_2_off} %=play_sound_looped(x16_engine1_run)%
-on_info2 = {+yan_labx16_switcher_2_off} sr_idle@off %=play_sound(x16_engine1_stop)%
-
-![sr_idle@off]
-on_game_timer = 5 | %=stop_sound_looped%
-on_game_timer2 = 100 | sr_idle@reactivate
-
-[sr_idle@reactivate]
-on_info = {-yan_labx16_switcher_2_off} %=play_sound_looped(x16_engine1_run)%
-on_info2 = {+yan_labx16_switcher_2_off} sr_idle@off %=play_sound(x16_engine1_stop)%
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/labx16/mod_x16_generator_sound_3_redone.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/labx16/mod_x16_generator_sound_3_redone.ltx
deleted file mode 100644
index 80d3ca7a..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/labx16/mod_x16_generator_sound_3_redone.ltx
+++ /dev/null
@@ -1,11 +0,0 @@
-![sr_idle@on]
-on_info = {-yan_labx16_switcher_3_off} %=play_sound_looped(x16_engine2_run)%
-on_info2 = {+yan_labx16_switcher_3_off} sr_idle@off %=play_sound(x16_engine2_stop)%
-
-![sr_idle@off]
-on_game_timer = 5 | %=stop_sound_looped%
-on_game_timer2 = 100 | sr_idle@reactivate
-
-[sr_idle@reactivate]
-on_info = {-yan_labx16_switcher_3_off} %=play_sound_looped(x16_engine2_run)%
-on_info2 = {+yan_labx16_switcher_3_off} sr_idle@off %=play_sound(x16_engine2_stop)%
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/labx16/mod_x16_pult_sound_1_redone.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/labx16/mod_x16_pult_sound_1_redone.ltx
deleted file mode 100644
index 31a04848..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/labx16/mod_x16_pult_sound_1_redone.ltx
+++ /dev/null
@@ -1,3 +0,0 @@
-![sr_idle@on]
-on_info = {-yan_labx16_switcher_1_off} %=play_sound_looped(x16_hum_2)%
-on_info2 = {+yan_labx16_switcher_1_off} %=play_sound_looped(x16_hum_2)%
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/labx16/mod_x16_pult_sound_2_redone.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/labx16/mod_x16_pult_sound_2_redone.ltx
deleted file mode 100644
index 24cef55f..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/labx16/mod_x16_pult_sound_2_redone.ltx
+++ /dev/null
@@ -1,3 +0,0 @@
-![sr_idle@on]
-on_info = {-yan_labx16_switcher_2_off} %=play_sound_looped(x16_hum_2)%
-on_info2 = {+yan_labx16_switcher_2_off} %=play_sound_looped(x16_hum_2)%
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/labx16/mod_x16_pult_sound_3_redone.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/labx16/mod_x16_pult_sound_3_redone.ltx
deleted file mode 100644
index 81ece9f1..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/labx16/mod_x16_pult_sound_3_redone.ltx
+++ /dev/null
@@ -1,3 +0,0 @@
-![sr_idle@on]
-on_info = {-yan_labx16_switcher_3_off} %=play_sound_looped(x16_hum_2)%
-on_info2 = {+yan_labx16_switcher_3_off} %=play_sound_looped(x16_hum_2)%
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/labx16/mod_x16_spawner_redone.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/labx16/mod_x16_spawner_redone.ltx
deleted file mode 100644
index 70c71a6f..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/labx16/mod_x16_spawner_redone.ltx
+++ /dev/null
@@ -1,39 +0,0 @@
-![logic]
-active = ;sr_idle@spawner
-active = sr_idle@check_1
-
-[sr_idle@check_1]
-on_info = {=actor_community(actor_monolith)} sr_idle@mspawner_1, {=actor_community(actor_greh)} sr_idle@mspawner_1, sr_idle@spawner_1
-
-[sr_idle@spawner_1]
-on_info = sr_idle@check_2 %=create_squad(zombied_x162_st_poltergeist_squad:x162_st_poltergeist) =spawn_object(labx16_snork_5:x16_zombied_1_walk:0) =spawn_object(labx16_snork_6:x16_zombied_4_walk:0) =spawn_object(labx16_zombie_1:x16_zombied_master_1_walk:0) =spawn_object(labx16_zombie_2:x16_zombied_master_2_walk:0) =spawn_object(labx16_zombie_8:x16_zombied_1_walk:0) =spawn_object(labx16_zombie_11:x16_zombied_4_walk:0) =spawn_object(labx16_zombie_12:x16_zombied_4_walk:0) =spawn_object(labx16_zombie_13:x16_zombied_5_walk:0) =spawn_object(labx16_zombie_18:x16_zombied_4_walk:0) =spawn_object(labx16_zombie_6:x16_zombied_1_walk:0) =spawn_object(labx16_zombie_7:x16_zombied_1_walk:0) =spawn_object(main_story_3_lab_x16_documents:x16_ghost_deadway)%
-
-[sr_idle@mspawner_1]
-on_info = sr_idle@check_2 %=spawn_object(labx16_ecolog_2a:x16_snork_home_2:0) =spawn_object(labx16_ecolog_1:x16_zombied_master_1_walk:0) =spawn_object(labx16_ecolog_2:x16_zombied_master_2_walk:0) =spawn_object(labx16_ecolog_8:x16_zombied_1_walk:0) =spawn_object(labx16_ecolog_11:x16_zombied_4_walk:0) =spawn_object(labx16_ecolog_12:x16_zombied_4_walk:0) =spawn_object(labx16_ecolog_13:x16_zombied_5_walk:0) =spawn_object(labx16_ecolog_18:x16_zombied_4_walk:0) =spawn_object(labx16_ecolog_19:x16_zombied_5_walk:0) =spawn_object(labx16_ecolog_6:x16_zombied_1_walk:0) =spawn_object(labx16_ecolog_7:x16_zombied_1_walk:0)%
-
-[sr_idle@check_2]
-on_info = {=actor_community(actor_monolith)} sr_idle@mspawner_2, {=actor_community(actor_greh)} sr_idle@mspawner_2, sr_idle@spawner_2
-
-[sr_idle@spawner_2]
-on_actor_in_zone = floor_3_space_restrictor | sr_idle@nil %=spawn_object(labx16_snork_5:x16_zombied_7_walk:0) =spawn_object(labx16_snork_7:x16_zombied_7_walk:0) =spawn_object(labx16_snork_8:x16_zombied_7_walk:0)%
-
-[sr_idle@mspawner_2]
-on_actor_in_zone = floor_3_space_restrictor | sr_idle@mwait %=spawn_object(labx16_ecolog_16:x16_zombied_7_walk:0) =spawn_object(labx16_ecolog_17:x16_zombied_7_walk:0)%
-
-[sr_idle@mwait]
-on_info = {+mil_attack_start} sr_idle@mspawner_3
-
-[sr_idle@mspawner_3]
-on_game_timer = 180 | sr_idle@mlab_on %+yantar_attack_start =spawn_object(labx16_ecolog_7a:x16_controller_home_1:0) =spawn_object(labx16_ecolog_8a:x16_controller_home_1:0) =spawn_object(labx16_ecolog_controller:x16_controller_home_1:0)% ;=spawn_object(labx16_ecolog_16:x16_zombied_7_walk:0) =spawn_object(labx16_ecolog_17:x16_zombied_7_walk:0)
-
-[sr_idle@mlab_on]
-on_info = {-yan_labx16_switcher_primary_off -yan_kill_brain_done} sr_idle@mend
-
-[sr_idle@mend]
-on_game_timer = 3500 | sr_idle@nil %=spawn_object(labx16_snork_2:x16_snork_home_2:0) =spawn_object(labx16_zombie_1:x16_zombied_master_1_walk:0) =spawn_object(labx16_zombie_2:x16_zombied_master_2_walk:0) =spawn_object(labx16_zombie_8:x16_zombied_1_walk:0) =spawn_object(labx16_zombie_11:x16_zombied_4_walk:0) =spawn_object(labx16_zombie_12:x16_zombied_4_walk:0) =spawn_object(labx16_zombie_13:x16_zombied_5_walk:0) =spawn_object(labx16_zombie_18:x16_zombied_4_walk:0) =spawn_object(labx16_zombie_19:x16_zombied_5_walk:0) =spawn_object(labx16_zombie_3:yan_zombied_walk_zasada_1:0) =spawn_object(labx16_zombie_4:yan_zombied_walk_zasada_1:0) =spawn_object(labx16_zombie_5:yan_zombied_walk_zasada_1:0) =spawn_object(labx16_snork_3:yan_zombies_attack_camp_1:0)%
-
-![sr_idle@nil]
-on_info = {=actor_community(actor_monolith)} sr_idle@mspawner_1
-on_info2 = {=actor_community(actor_greh)} sr_idle@mspawner_1
-
-
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/labx16/mod_x16_timer_restrictor_redone.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/labx16/mod_x16_timer_restrictor_redone.ltx
deleted file mode 100644
index 40776439..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/labx16/mod_x16_timer_restrictor_redone.ltx
+++ /dev/null
@@ -1,17 +0,0 @@
-![sr_idle]
-on_actor_inside = {+yan_labx16_switcher_primary_off} sr_idle@nil, {=actor_has_item(good_psy_helmet)} sr_idle@nil, {=actor_community(actor_monolith) =actor_community(actor_greh)} sr_idle@nil %=kill_actor%
-on_info = {=actor_community(actor_monolith)} sr_idle@on, {=actor_community(actor_greh)} sr_idle@on
-
-[sr_idle@on]
-on_info = {+mil_attack_start} sr_timer@1
-
-[sr_timer@1]
-type = dec
-start_value = 220000
-on_value = 0 | sr_idle@nil %=kill_actor%
-;on_actor_outside = sr_idle %=kill_actor%
-on_info = {-yan_kill_brain_done} sr_idle@nil
-string = st_helmet_countdown
-
-![sr_idle@nil]
-
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/labx16/mod_yan_controller_respawn_01_0000_redone.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/labx16/mod_yan_controller_respawn_01_0000_redone.ltx
deleted file mode 100644
index 12d0b5ce..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/labx16/mod_yan_controller_respawn_01_0000_redone.ltx
+++ /dev/null
@@ -1,16 +0,0 @@
-![logic]
-active =; sr_idle
-active = sr_idle@check
-
-[sr_idle@check]
-on_info = {=actor_community(actor_monolith)} sr_idle@mspawn, {=actor_community(actor_greh)} sr_idle@mspawn, sr_idle@spawn
-
-[sr_idle@spawn]
-on_actor_inside = {-brain_snork_respawn_01} sr_idle@nil %+brain_snork_respawn_01 =create_squad(zombied_x162_st_poltergeist_squad:x162_st_poltergeist)%
-
-[sr_idle@mspawn]
-on_actor_inside = {-brain_snork_respawn_01} sr_idle@nil %+brain_snork_respawn_01 =create_squad(ecolog_x162_st_poltergeist_squad:x162_st_poltergeist)%
-
-
-
-
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/labx16/mod_yan_controller_respawn_01_redone.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/labx16/mod_yan_controller_respawn_01_redone.ltx
deleted file mode 100644
index 3a7b43aa..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/labx16/mod_yan_controller_respawn_01_redone.ltx
+++ /dev/null
@@ -1,13 +0,0 @@
-![logic]
-active = ;sr_idle
-active = sr_idle@check
-
-[sr_idle@check]
-on_info = {=actor_community(actor_monolith)} sr_idle@mspawn, {=actor_community(actor_greh)} sr_idle@mspawn, sr_idle
-
-![sr_idle]
-on_actor_inside = {-yan_controller_respawn_01} sr_idle@nil %+yan_controller_respawn_01 =spawn_object(labx16_controller:x16_controller_home_1:0)%
-
-[sr_idle@mspawn]
-on_actor_inside = {-yan_controller_respawn_01} sr_idle@nil %+yan_controller_respawn_01 =spawn_object(labx16_ecolog_controller:x16_controller_home_1:0)%
-
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/labx16/mod_yan_labx16_switcher1_redone.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/labx16/mod_yan_labx16_switcher1_redone.ltx
deleted file mode 100644
index fc34c1fa..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/labx16/mod_yan_labx16_switcher1_redone.ltx
+++ /dev/null
@@ -1,56 +0,0 @@
-![logic]
-!active = ph_button@active
-active = ph_idle@check_switcher_1
-
-[ph_idle@check_switcher_1]
-on_info = {-yan_labx16_switcher_primary_off} ph_button@active, {+yan_labx16_switcher_primary_off} ph_button@deactivate
-
-![ph_button@active]
-!on_info = {+yan_labx16_switcher_1_off} ph_idle@nil
-on_info2 = {=actor_community(actor_monolith)} ph_button@mdeactive, {=actor_community(actor_greh)} ph_button@mdeactive
-anim_blend = true
-anim = lab_primary_switcher_idle
-tooltip = pas_b400_tip_switcher
-on_press = ph_button@deactivate %+yan_labx16_switcher_1_off =turn_off(yan_labx16switcher_lamp1) =turn_off(yan_labx16switcher_primary_1_red) =turn_on(yan_labx16switcher_primary_1_green) =play_sound(x16_switch_1) =spawn_object(labx16_zombie_9:x16_zombied_7_walk:0) =yan_gluk%
-
-![ph_button@deactivate]
-on_info = {=actor_community(actor_monolith)} ph_button@mdeactive, {=actor_community(actor_greh)} ph_button@mdeactive
-anim_blend = true
-anim = lab_primary_switcher_off
-tooltip = pas_b400_tip_switcher
-on_press = ph_button@reactivate %-yan_labx16_switcher_1_off =play_sound(switch_2) =turn_on(yan_labx16switcher_lamp1) =turn_on(yan_labx16switcher_primary_1_red) =turn_off(yan_labx16switcher_primary_1_green)%
-!on_timer = 500 | ph_idle@nil %+yan_labx16_switcher_1_off =turn_off(yan_labx16switcher_lamp1) =turn_off(yan_labx16switcher_primary_1_red) =turn_on(yan_labx16switcher_primary_1_green) =play_sound(x16_switch_1) =spawn_object(labx16_zombie_9:x16_zombied_7_walk:0)%
-
-[ph_button@reactivate]
-anim_blend = true
-anim = lab_primary_switcher_idle
-tooltip = pas_b400_tip_switcher
-on_press = ph_button@deactivate %+yan_labx16_switcher_1_off =play_sound(x16_switch_1) =turn_off(yan_labx16switcher_lamp1) =turn_off(yan_labx16switcher_primary_1_red) =turn_on(yan_labx16switcher_primary_1_green)%
-
-[ph_button@mdeactive]
-anim_blend = true
-anim = lab_primary_switcher_off
-tooltip = pas_b400_tip_switcher
-on_press = ph_button@midle %-yan_labx16_switcher_1_off =play_sound(system_message_2)%
-
-[ph_button@midle]
-on_info = {+yan_labx16_switcher_primary_try} ph_button@mreboot
-anim = lab_primary_switcher_off
-tooltip = pas_b400_tip_switcher
-
-[ph_button@mreboot]
-anim_blend = true
-anim = lab_primary_switcher_off
-tooltip = pas_b400_tip_switcher
-on_press = ph_button@mreactivate %+yan_labx16_switcher_1_off =play_sound(switch_2) =spawn_object(labx16_ecolog_9:x16_zombied_7_walk:0)%
-
-[ph_button@mreactivate]
-on_info = {+yantar_attack_start} ph_button@mactive %=spawn_object(labx16_ecolog_9:x16_zombied_7_walk:0)%
-anim = lab_primary_switcher_idle
-tooltip = pas_b400_tip_switcher
-
-[ph_button@mactive]
-on_info = {+yantar_attack_start} ph_idle@nil %=turn_on(yan_labx16switcher_lamp1) =turn_on(yan_labx16switcher_primary_1_red) =turn_off(yan_labx16switcher_primary_1_green)%
-anim_blend = true
-anim = lab_primary_switcher_idle
-tooltip = pas_b400_tip_switcher
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/labx16/mod_yan_labx16_switcher2_redone.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/labx16/mod_yan_labx16_switcher2_redone.ltx
deleted file mode 100644
index abb68840..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/labx16/mod_yan_labx16_switcher2_redone.ltx
+++ /dev/null
@@ -1,66 +0,0 @@
-![logic]
-!active = ph_button@active
-active = ph_idle@check_switcher_2
-
-[ph_idle@check_switcher_2]
-on_info = {-yan_labx16_switcher_primary_off} ph_button@active, {+yan_labx16_switcher_primary_off} ph_button@deactivate
-
-![ph_button@active]
-!on_info = {+yan_labx16_switcher_2_off} ph_idle@nil
-on_info2 = {=actor_community(actor_monolith)} ph_button@mdeactive, {=actor_community(actor_greh)} ph_button@mdeactive
-anim_blend = true
-anim = lab_primary_switcher_idle
-tooltip = pas_b400_tip_switcher
-on_press = ph_button@deactivate %+yan_labx16_switcher_2_off =turn_off(yan_labx16switcher_lamp2) =turn_off(yan_labx16switcher_primary_2_red) =turn_on(yan_labx16switcher_primary_2_green) =play_sound(x16_switch_1) =spawn_object(labx16_zombie_10:x16_zombied_7_walk:0)%
-
-![ph_button@deactivate]
-on_info = {=actor_community(actor_monolith)} ph_button@mdeactive, {=actor_community(actor_greh)} ph_button@mdeactive
-anim_blend = true
-anim = lab_primary_switcher_off
-tooltip = pas_b400_tip_switcher
-on_press = ph_button@reactivate %-yan_labx16_switcher_2_off =play_sound(switch_2) =turn_on(yan_labx16switcher_lamp2) =turn_on(yan_labx16switcher_primary_2_red) =turn_off(yan_labx16switcher_primary_2_green) =spawn_object(labx16_zombie_10:x16_zombied_7_walk:0)%
-!on_timer = 500 | ph_idle@nil %+yan_labx16_switcher_2_off =turn_off(yan_labx16switcher_lamp2) =turn_off(yan_labx16switcher_primary_2_red) =turn_on(yan_labx16switcher_primary_2_green) =play_sound(x16_switch_1) =spawn_object(labx16_zombie_10:x16_zombied_7_walk:0)%
-
-
-[ph_button@reactivate]
-anim_blend = true
-anim = lab_primary_switcher_idle
-tooltip = pas_b400_tip_switcher
-on_press = ph_button@deactivate %+yan_labx16_switcher_2_off =play_sound(x16_switch_1) =turn_off(yan_labx16switcher_lamp2) =turn_off(yan_labx16switcher_primary_2_red) =turn_on(yan_labx16switcher_primary_2_green)%
-
-[ph_button@mdeactive]
-anim_blend = true
-anim = lab_primary_switcher_off
-tooltip = pas_b400_tip_switcher
-on_press = ph_button@midle %-yan_labx16_switcher_2_off =turn_off(yan_labx16switcher_lamp2) =turn_off(yan_labx16switcher_primary_2_red) =turn_on(yan_labx16switcher_primary_2_green) =play_sound(system_message_3)%
-
-[ph_button@midle]
-on_info = {+yan_labx16_switcher_primary_try} ph_button@mreboot
-anim = lab_primary_switcher_off
-tooltip = pas_b400_tip_switcher
-
-[ph_button@mreboot]
-anim_blend = true
-anim = lab_primary_switcher_off
-tooltip = pas_b400_tip_switcher
-on_press = ph_button@mreactivate %+yan_labx16_switcher_2_off =play_sound(switch_2) =spawn_object(labx16_ecolog_10:x16_zombied_7_walk:0)%
-
-[ph_button@mreactivate]
-on_info = {+yantar_attack_start} ph_button@mactive %=spawn_object(labx16_ecolog_10:x16_zombied_7_walk:0)%
-anim = lab_primary_switcher_idle
-tooltip = pas_b400_tip_switcher
-
-[ph_button@mactive]
-on_info = {+yantar_attack_start} ph_idle@mfx_1 %=turn_on(yan_labx16switcher_lamp2) =turn_on(yan_labx16switcher_primary_2_red) =turn_off(yan_labx16switcher_primary_2_green)%
-anim_blend = true
-anim = lab_primary_switcher_idle
-tooltip = pas_b400_tip_switcher
-
-[ph_idle@mfx_1]
-on_timer = 24000 | ph_idle@mfx_2 %=yan_gluk%
-[ph_idle@mfx_2]
-on_timer = 15000 | ph_idle@mfx_3 %=yan_gluk%
-[ph_idle@mfx_3]
-on_timer = 24000 | ph_idle@nil %=yan_gluk%
-
-
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/labx16/mod_yan_labx16_switcher3_redone.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/labx16/mod_yan_labx16_switcher3_redone.ltx
deleted file mode 100644
index ef89694d..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/labx16/mod_yan_labx16_switcher3_redone.ltx
+++ /dev/null
@@ -1,99 +0,0 @@
-![logic]
-!active = ph_button@active
-active = ph_idle@check_switcher_3
-
-[ph_idle@check_switcher_3]
-on_info = {-yan_labx16_switcher_primary_off} ph_button@active, {+yan_labx16_switcher_primary_off} ph_button@deactivate
-
-![ph_button@active]
-!on_info = {+yan_labx16_switcher_3_off} ph_idle@nil
-on_info2 = {=actor_community(actor_monolith)} ph_button@mdeactive, {=actor_community(actor_greh)} ph_button@mdeactive
-anim_blend = true
-anim = lab_primary_switcher_idle
-tooltip = pas_b400_tip_switcher
-on_press = ph_button@deactivate %+yan_labx16_switcher_3_off =turn_off(yan_labx16switcher_lamp3) =turn_off(yan_labx16switcher_primary_3_red) =turn_on(yan_labx16switcher_primary_3_green) =play_sound(x16_switch_1) =spawn_object(labx16_zombie_14:x16_zombied_7_walk:0) =spawn_object(labx16_zombie_15:x16_zombied_7_walk:0) =yan_gluk%
-
-![ph_button@deactivate]
-on_info = {=actor_community(actor_monolith)} ph_button@mdeactive, {=actor_community(actor_greh)} ph_button@mdeactive
-anim_blend = true
-anim = lab_primary_switcher_off
-tooltip = pas_b400_tip_switcher
-on_press = ph_button@reactivate %-yan_labx16_switcher_3_off =play_sound(switch_2) =turn_on(yan_labx16switcher_lamp3) =turn_on(yan_labx16switcher_primary_3_red) =turn_off(yan_labx16switcher_primary_3_green)%
-!on_timer = 500 | ph_idle@nil %+yan_labx16_switcher_3_off =turn_off(yan_labx16switcher_lamp3) =turn_off(yan_labx16switcher_primary_3_red) =turn_on(yan_labx16switcher_primary_3_green) =play_sound(x16_switch_1) =spawn_object(labx16_zombie_14:x16_zombied_7_walk:0) =spawn_object(labx16_zombie_15:x16_zombied_7_walk:0)%
-
-[ph_button@reactivate]
-anim_blend = true
-anim = lab_primary_switcher_idle
-tooltip = pas_b400_tip_switcher
-on_press = ph_button@deactivate %+yan_labx16_switcher_3_off =play_sound(x16_switch_1) =turn_off(yan_labx16switcher_lamp3) =turn_off(yan_labx16switcher_primary_3_red) =turn_on(yan_labx16switcher_primary_3_green)%
-
-[ph_button@mdeactive]
-anim_blend = true
-anim = lab_primary_switcher_off
-tooltip = pas_b400_tip_switcher
-on_press = ph_button@midle %-yan_labx16_switcher_3_off =turn_off(yan_labx16switcher_lamp3) =turn_off(yan_labx16switcher_primary_3_red) =turn_on(yan_labx16switcher_primary_3_green) =play_sound(system_message_4)%
-
-[ph_button@midle]
-on_info = {+yan_labx16_switcher_primary_try} ph_button@mreboot
-anim = lab_primary_switcher_off
-tooltip = pas_b400_tip_switcher
-
-[ph_button@mreboot]
-anim_blend = true
-anim = lab_primary_switcher_off
-tooltip = pas_b400_tip_switcher
-on_press = ph_button@mreactivate %+yan_labx16_switcher_3_off =play_sound(switch_2) =spawn_object(labx16_ecolog_15:x16_zombied_7_walk:0)%
-
-[ph_button@mreactivate]
-on_info = {+yantar_attack_start} ph_button@merror_mode %-yan_labx16_switcher_3_off%
-anim = lab_primary_switcher_idle
-tooltip = pas_b400_tip_switcher
-
-[ph_button@merror_mode]
-anim_blend = true
-anim = lab_primary_switcher_off
-tooltip = pas_b400_tip_switcher
-on_press = ph_button@mactive %+yan_labx16_switcher_3_off =play_sound(switch_2)%
-
-[ph_button@mactive]
-on_info = {+yantar_attack_start} ph_idle@mfx_1 %=spawn_object(labx16_ecolog_16:x16_zombied_7_walk:0) =spawn_object(labx16_ecolog_17:x16_zombied_7_walk:0) =turn_on(yan_labx16switcher_lamp3) =turn_on(yan_labx16switcher_primary_3_red) =turn_off(yan_labx16switcher_primary_3_green)%
-anim_blend = true
-anim = lab_primary_switcher_idle
-
-[ph_idle@mfx_1]
-on_info = {-yan_kill_brain_done} ph_idle@nil
-on_timer = 9000 | ph_idle@mfx_2 %=yan_gluk%
-[ph_idle@mfx_2]
-on_info = {-yan_kill_brain_done} ph_idle@nil
-on_timer = 9000 | ph_idle@mfx_3 %=yan_gluk%
-[ph_idle@mfx_3]
-on_info = {-yan_kill_brain_done} ph_idle@nil
-on_timer = 9000 | ph_idle@mfx_4 %=yan_gluk%
-[ph_idle@mfx_4]
-on_info = {-yan_kill_brain_done} ph_idle@nil
-on_timer = 9000 | ph_idle@mfx_5 %=yan_gluk%
-[ph_idle@mfx_5]
-on_info = {-yan_kill_brain_done} ph_idle@nil
-on_timer = 9000 | ph_idle@mfx_6 %=yan_gluk%
-[ph_idle@mfx_6]
-on_info = {-yan_kill_brain_done} ph_idle@nil
-on_timer = 9000 | ph_idle@mfx_7 %=yan_gluk%
-[ph_idle@mfx_7]
-on_info = {-yan_kill_brain_done} ph_idle@nil
-on_timer = 9000 | ph_idle@mfx_8 %=yan_gluk%
-[ph_idle@mfx_8]
-on_info = {-yan_kill_brain_done} ph_idle@nil
-on_timer = 9000 | ph_idle@mfx_9 %=yan_gluk%
-[ph_idle@mfx_9]
-on_info = {-yan_kill_brain_done} ph_idle@nil
-on_timer = 9000 | ph_idle@mfx_10 %=yan_gluk%
-[ph_idle@mfx_10]
-on_info = {-yan_kill_brain_done} ph_idle@nil
-on_timer = 9000 | ph_idle@mfx_11 %=yan_gluk%
-[ph_idle@mfx_11]
-on_info = {-yan_kill_brain_done} ph_idle@nil
-on_timer = 9000 | ph_idle@mfx_12 %=yan_gluk%
-[ph_idle@mfx_12]
-on_info = {-yan_kill_brain_done} ph_idle@nil
-on_timer = 9000 | ph_idle@mfx_13 %=yan_gluk%
-
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/labx16/mod_yan_labx16_switcher_primary_redone.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/labx16/mod_yan_labx16_switcher_primary_redone.ltx
deleted file mode 100644
index d3fc0850..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/labx16/mod_yan_labx16_switcher_primary_redone.ltx
+++ /dev/null
@@ -1,130 +0,0 @@
-![logic]
-active = ph_button@init
-
-![ph_button@init]
-!on_info = {+yan_labx16_switcher_primary_off} ph_idle@nil
-anim = lab_primary_switcher_idle
-on_timer = 1 | ph_button@active %=turn_on(yan_labx16switcher_primary_1_green) =turn_on(yan_labx16switcher_primary_2_green) =turn_on(yan_labx16switcher_primary_3_green)%
-
-![ph_button@active]
-!on_info = {+yan_labx16_switcher_primary_off} ph_idle@nil
-on_info2 = {=actor_community(actor_monolith)} ph_button@mdeactive, {=actor_community(actor_greh)} ph_button@mdeactive
-anim = lab_primary_switcher_idle
-tooltip = pas_b400_tip_switcher
-on_press = {+yan_labx16_switcher_1_off +yan_labx16_switcher_2_off +yan_labx16_switcher_3_off} ph_idle@check %+yan_labx16_switcher_primary_try%
-
-[ph_idle@check]
-on_info = {+yan_labx16_switcher_primary_try} ph_button@surge %=play_sound(system_message_1) =turn_off(yan_labx16switcher_primary_1_green) =turn_off(yan_labx16switcher_primary_2_green) =turn_off(yan_labx16switcher_primary_3_green)%
-
-[ph_button@surge]
-anim = lab_primary_switcher_idle
-tooltip = pas_b400_tip_switcher
-on_press = {+yan_labx16_switcher_1_off +yan_labx16_switcher_2_off +yan_labx16_switcher_3_off} ph_idle@idle %+yan_labx16_switcher_primary_off =play_sound(x16_switch_1)%
-
-[ph_idle@idle]
-on_info = ph_button@deactivate %+yantar_attack_start +yan_kill_brain_done +yan_x16_complete_end =create_squad(zombied_x162_st_burer_squad:x162_st_burer) =spawn_object(labx16_zombie_16:x16_zombied_7_walk:0) =spawn_object(labx16_zombie_17:x16_zombied_7_walk:0) =spawn_object(labx16_zombie_11:x16_zombied_4_walk:0) =spawn_object(labx16_zombie_12:x16_zombied_4_walk:0) =spawn_object(labx16_zombie_13:x16_zombied_5_walk:0) =spawn_object(labx16_zombie_18:x16_zombied_4_walk:0) =spawn_object(labx16_ecolog_1:x16_zombied_master_1_walk:0) =spawn_object(labx16_ecolog_2:x16_zombied_master_2_walk:0) =spawn_object(labx16_snork_7:x16_zombied_7_walk:0) =spawn_object(labx16_snork_8:x16_zombied_7_walk:0) =spawn_object(labx16_killer_dead:x16_ghost_deadway)% ;=play_sound(x16_brain_death_d)
-
-![ph_button@deactivate]
-on_info = {=actor_community(actor_monolith)} ph_button@mdeactive, {=actor_community(actor_greh)} ph_button@mdeactive
-anim = lab_primary_switcher_off
-tooltip = pas_b400_tip_switcher
-on_press = {-yan_labx16_switcher_1_off -yan_labx16_switcher_2_off -yan_labx16_switcher_3_off} ph_idle@on %-yan_labx16_switcher_primary_off =play_sound(switch_2)%
-!on_timer = 500 | ph_idle@nil %+yan_labx16_switcher_primary_off +yantar_attack_start =turn_off(yan_labx16switcher_primary_1_green) =turn_off(yan_labx16switcher_primary_2_green) =turn_off(yan_labx16switcher_primary_3_green) =play_sound(switch_2) =spawn_object(labx16_zombie_16:x16_zombied_7_walk:0) =spawn_object(labx16_zombie_17:x16_zombied_7_walk:0)% ;=play_sound(x16_brain_death)
-
-[ph_idle@on]
-on_info = {-yan_labx16_switcher_primary_off} ph_button@reactivate %-yan_kill_brain_done =turn_on(yan_labx16switcher_primary_1_green) =turn_on(yan_labx16switcher_primary_2_green) =turn_on(yan_labx16switcher_primary_3_green) =yan_gluk% ;=play_sound_looped(x16_brain_run)
-
-[ph_button@reactivate]
-anim_blend = true
-anim = lab_primary_switcher_idle
-tooltip = pas_b400_tip_switcher
-on_press = {+yan_labx16_switcher_1_off +yan_labx16_switcher_2_off +yan_labx16_switcher_3_off} ph_idle@check_2 %+yan_labx16_switcher_primary_try%
-
-[ph_idle@check_2]
-on_info = {+yan_labx16_switcher_primary_try} ph_button@surge_2 %=play_sound(system_message_1)%
-
-[ph_button@surge_2]
-anim = lab_primary_switcher_idle
-tooltip = pas_b400_tip_switcher
-on_press = {+yan_labx16_switcher_1_off +yan_labx16_switcher_2_off +yan_labx16_switcher_3_off} ph_idle@off %+yan_labx16_switcher_primary_off =turn_off(yan_labx16switcher_primary_1_green) =turn_off(yan_labx16switcher_primary_2_green) =turn_off(yan_labx16switcher_primary_3_green) =play_sound(x16_switch_1)%
-
-[ph_idle@off]
-on_info = {+yan_labx16_switcher_primary_off} ph_button@deactivate %+yan_labx16_switcher_primary_try +yan_kill_brain_done =yan_gluk% ;=play_sound(x16_brain_stop)
-
-[ph_button@mdeactive]
-anim = lab_primary_switcher_off
-tooltip = pas_b400_tip_switcher
-on_press = {-yan_labx16_switcher_1_off -yan_labx16_switcher_2_off -yan_labx16_switcher_3_off} ph_idle@mcheck %=play_sound(system_message_1) +yan_labx16_switcher_primary_try%
-
-[ph_idle@mcheck]
-on_info = {+yan_labx16_switcher_primary_try} ph_button@midle %=play_sound_looped(klaxon_1)%
-
-[ph_button@midle]
-on_info = {+yan_labx16_switcher_1_off +yan_labx16_switcher_2_off +yan_labx16_switcher_3_off} ph_button@mreactivate
-anim_blend = true
-anim = lab_primary_switcher_off
-tooltip = pas_b400_tip_switcher
-on_press = {-yan_labx16_switcher_1_off -yan_labx16_switcher_2_off -yan_labx16_switcher_3_off} ph_idle@mreboot %=stop_sound_looped%
-
-[ph_idle@mreboot]
-on_info = {+yan_labx16_switcher_primary_try} ph_button@mreactivate %=play_sound_looped(message_1) =play_sound_looped(klaxon_1)%
-
-[ph_button@mreactivate]
-anim = lab_primary_switcher_off
-tooltip = pas_b400_tip_switcher
-on_press = {+yan_labx16_switcher_1_off +yan_labx16_switcher_2_off +yan_labx16_switcher_3_off} ph_button@switcher_1 %-yan_labx16_switcher_primary_try =turn_on(yan_labx16switcher_primary_1_green) =turn_on(yan_labx16switcher_primary_2_green) =turn_on(yan_labx16switcher_primary_3_green)%
-
-[ph_button@switcher_1]
-on_info = {-yan_labx16_switcher_primary_try} ph_idle@msound_idle_1 %=play_sound(switch_2) =stop_sound_looped%
-anim = lab_primary_switcher_idle
-tooltip = pas_b400_tip_switcher
-
-[ph_idle@msound_idle_1]
-on_timer = 3500 | ph_idle@msound_1
-
-[ph_idle@msound_1]
-on_info = %=play_sound(x16_begin)%
-on_timer = 10000 | ph_idle@msound_2
-
-[ph_idle@msound_2]
-on_info = %=play_sound_looped(klaxon_1)%
-on_timer = 3600 | ph_idle@msound_idle_2
-
-[ph_idle@msound_idle_2]
-on_timer = 1000 | ph_idle@msound_3 %=stop_sound_looped =play_sound_looped(klaxon_2)%
-
-[ph_idle@msound_3]
-on_info = %=play_sound(system_message_2)%
-on_timer = 8000 | ph_idle@msound_4 %=yan_gluk%
-
-[ph_idle@msound_4]
-on_info = %=stop_sound_looped =play_sound_looped(klaxon_3)%
-on_timer = 50 | ph_idle@mrun_for_it %=turn_off (yan_labx16switcher_primary_1_green) =turn_off(yan_labx16switcher_primary_2_green) =turn_off(yan_labx16switcher_primary_3_green)% ;=play_sound(x16_brain_stop)
-
-[ph_idle@mrun_for_it]
-on_timer = 10 | ph_button@merror_mode %=play_sound_looped(message_2) =play_sound_looped(message_3) +mil_attack_start%
-
-[ph_button@merror_mode]
-anim = lab_primary_switcher_off
-tooltip = pas_b400_tip_switcher
-on_press = {+yan_labx16_switcher_1_off +yan_labx16_switcher_2_off +yan_labx16_switcher_3_off} ph_button@switcher_2 %-yan_labx16_switcher_primary_off =play_sound(x16_begin)%
-
-[ph_button@switcher_2]
-on_info = ph_idle@msound_idle_3 %=play_sound(x16_switch_1)%
-anim = lab_primary_switcher_idle
-tooltip = pas_b400_tip_switcher
-
-[ph_idle@msound_idle_3]
-on_info = ph_idle@msound_idle_4 %=stop_sound_looped =play_sound_looped(klaxon_3)%
-
-[ph_idle@msound_idle_4]
-on_timer = 9000 | ph_idle@msound_end
-
-[ph_idle@msound_end]
-on_timer = 5 | ph_button@mactive %=stop_sound_looped =turn_on(yan_labx16switcher_primary_1_green) =turn_on(yan_labx16switcher_primary_2_green) =turn_on(yan_labx16switcher_primary_3_green)%
-
-[ph_button@mactive]
-on_info = {-yan_labx16_switcher_primary_off} ph_idle@nil %-yan_kill_brain_done +yan_x16_complete_end% ;=play_sound_looped(x16_brain_run)
-anim_blend = true
-anim = lab_primary_switcher_idle
-tooltip = pas_b400_tip_switcher
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/labx16/mod_yan_zasada_restrictor_0000_redone.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/labx16/mod_yan_zasada_restrictor_0000_redone.ltx
deleted file mode 100644
index 80d7af17..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/labx16/mod_yan_zasada_restrictor_0000_redone.ltx
+++ /dev/null
@@ -1,15 +0,0 @@
-![logic]
-active = ;sr_idle
-active = sr_idle@check
-
-[sr_idle@check]
-on_info = {=actor_community(actor_monolith)} msr_idle, {=actor_community(actor_greh)} msr_idle, sr_idle
-
-![sr_idle]
-on_actor_inside = {-x16_zasada_3} sr_idle@nil %+x16_zasada_3 =spawn_object(labx16_zombie_3:yan_zombied_walk_zasada_1:0) =spawn_object(labx16_zombie_4:yan_zombied_walk_zasada_1:0) =spawn_object(labx16_snork_6:yan_zombied_walk_zasada_1:0)%
-
-[msr_idle]
-on_actor_inside = {-x16_zasada_3} sr_idle@nil %+x16_zasada_3 =spawn_object(labx16_ecolog_3:yan_zombied_walk_zasada_1:0) =spawn_object(labx16_ecolog_4:yan_zombied_walk_zasada_1:0)%
-
-![sr_idle@nil]
-
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/labx16/mod_yan_zasada_restrictor_0001_redone.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/labx16/mod_yan_zasada_restrictor_0001_redone.ltx
deleted file mode 100644
index f13accea..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/labx16/mod_yan_zasada_restrictor_0001_redone.ltx
+++ /dev/null
@@ -1,16 +0,0 @@
-![logic]
-active = ;sr_idle
-active = sr_idle@check
-
-[sr_idle@check]
-on_info = {=actor_community(actor_monolith)} sr_idle@mspawn, {=actor_community(actor_greh)} sr_idle@mspawn, sr_idle
-
-![sr_idle]
-on_actor_inside = {-x16_zasada_4} sr_idle@nil %+x16_zasada_4 =spawn_object(labx16_snork_5:yan_zombies_attack_camp_2:0) =spawn_object(labx16_snork_6:yan_zombies_attack_camp_2:0) =spawn_object(labx16_snork_3:yan_zombies_attack_camp_2:0) =spawn_object(labx16_snork_3:yan_zombies_attack_camp_2:0)% ;=play_sound(red_bloodsucker_growl)
-
-[sr_idle@mspawn]
-on_actor_inside = {-x16_zasada_4} sr_idle@nil %+x16_zasada_4 =spawn_object(labx16_ecolog_5a:yan_zombies_attack_camp_2:0) =spawn_object(labx16_ecolog_6a:yan_zombies_attack_camp_2:0)% ;=play_sound(red_bloodsucker_growl)
-
-![sr_idle@nil]
-on_game_timer = 8000 | sr_idle
-
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/labx16/mod_yan_zasada_restrictor_2_redone.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/labx16/mod_yan_zasada_restrictor_2_redone.ltx
deleted file mode 100644
index 57602cd3..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/labx16/mod_yan_zasada_restrictor_2_redone.ltx
+++ /dev/null
@@ -1,16 +0,0 @@
-![logic]
-active = ;sr_idle
-active = sr_idle@check
-
-[sr_idle@check]
-on_info = {=actor_community(actor_monolith)} sr_idle@mspawn, {=actor_community(actor_greh)} sr_idle@mspawn, sr_idle@spawn
-
-[sr_idle@spawn]
-on_actor_inside = {-x16_zasada_2} sr_idle@nil %+x16_zasada_2 =spawn_object(labx16_snork_1:x16_snork_home_8:0) =create_squad(zombied_x162_st_gigant_squad:x162_st_gigant)%
-
-[sr_idle@mspawn]
-on_actor_inside = {-x16_zasada_2} sr_idle@nil %+x16_zasada_2 =spawn_object(labx16_ecolog_1a:x16_snork_home_8:0) =create_squad(ecolog_x162_st_gigant_squad:x162_st_gigant)%
-
-![sr_idle@nil]
-on_game_timer = 8000 | sr_idle
-
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/labx16/mod_yan_zasada_restrictor_redone.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/labx16/mod_yan_zasada_restrictor_redone.ltx
deleted file mode 100644
index 8de7bafd..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/labx16/mod_yan_zasada_restrictor_redone.ltx
+++ /dev/null
@@ -1,15 +0,0 @@
-![logic]
-active = ;sr_idle
-active = sr_idle@check
-
-[sr_idle@check]
-on_info = {=actor_community(actor_monolith)} sr_idle@mspawn, {=actor_community(actor_greh)} sr_idle@mspawn, sr_idle
-
-![sr_idle]
-on_actor_inside = {-yan_test_info} sr_idle@nil %+yan_test_info =play_sound(x16_grate_fall) =spawn_object(labx16_snork_6:yan_zombies_attack_camp_1:0) =spawn_object(labx16_snork_3:yan_zombies_attack_camp_1:0) =spawn_object(labx16_snork_3:yan_zombies_attack_camp_1:0) =spawn_object(labx16_snork_5:yan_zombies_attack_camp_1:0) =spawn_object(labx16_snork_6:yan_zombies_attack_camp_1:0) =spawn_object(labx16_snork_3:brain_snork_jump_3:0)%
-
-[sr_idle@mspawn]
-on_actor_inside = {-yan_test_info} sr_idle@nil %+yan_test_info =play_sound(x16_grate_fall) =spawn_object(labx16_ecolog_6:yan_zombied_walk_zasada_1:0) =spawn_object(labx16_ecolog_3a:yan_zombies_attack_camp_1:0) =spawn_object(labx16_ecolog_4a:yan_zombied_walk_zasada_1:0)% ;(labx16_ecolog_4a:brain_snork_jump_3:0)
-
-![sr_idle@nil]
-on_game_timer = 8000 | sr_idle
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/labx16/mod_yantar_psi_radiotion_75_redone.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/labx16/mod_yantar_psi_radiotion_75_redone.ltx
deleted file mode 100644
index a117872b..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/labx16/mod_yantar_psi_radiotion_75_redone.ltx
+++ /dev/null
@@ -1,28 +0,0 @@
-![sr_psy_antenna@no_helmet]
-eff_intensity = 100
-hit_intensity = 100
-postprocess = psy_antenna_indoor.ppe
-on_info = {=actor_has_item(good_psy_helmet)} sr_psy_antenna@good_psy_helmet, {=actor_has_item(bad_psy_helmet)} sr_psy_antenna@bad_psy_helmet
-on_info2 = ;{=actor_community(actor_monolith)} sr_idle@nil, {+yantar_attack_start} sr_idle@nil
-on_info3 = {=actor_community(actor_monolith)} sr_idle@mnil, {=actor_community(actor_greh)} sr_idle@mnil, {+yan_labx16_switcher_primary_off} sr_idle@nil
-
-![sr_psy_antenna@bad_psy_helmet]
-eff_intensity = 75
-hit_intensity = 0.2
-postprocess = psy_antenna_indoor.ppe
-on_info = {=actor_has_item(good_psy_helmet)} sr_psy_antenna@good_psy_helmet, {=actor_has_item(bad_psy_helmet)}, sr_psy_antenna@no_helmet
-on_info2 = ;{=actor_community(actor_monolith)} sr_idle@nil, {+yantar_attack_start} sr_idle@nil
-on_info3 = {=actor_community(actor_monolith)} sr_idle@mnil, {=actor_community(actor_greh)} sr_idle@mnil, {+yan_labx16_switcher_primary_off} sr_idle@nil
-
-![sr_psy_antenna@good_psy_helmet]
-eff_intensity = 75
-hit_intensity = 0
-postprocess = psy_antenna_indoor.ppe
-on_info = {=actor_has_item(good_psy_helmet)}, {=actor_has_item(bad_psy_helmet)} sr_psy_antenna@bad_psy_helmet, sr_psy_antenna@no_helmet
-on_info2 = ;{=actor_community(actor_monolith)} sr_idle@nil, {+yantar_attack_start} sr_idle@nil
-on_info3 = {=actor_community(actor_monolith)} sr_idle@mnil, {=actor_community(actor_greh)} sr_idle@mnil, {+yan_labx16_switcher_primary_off} sr_idle@nil
-
-![sr_idle@nil]
-on_info = {-yan_labx16_switcher_primary_off} sr_psy_antenna@good_psy_helmet
-
-[sr_idle@mnil]
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/labx16/smart/x162_st_burer.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/labx16/smart/x162_st_burer.ltx
deleted file mode 100644
index 1ad04f2f..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/labx16/smart/x162_st_burer.ltx
+++ /dev/null
@@ -1,34 +0,0 @@
-[smart_terrain]
-squad_id = 1
-max_population = 1
-respawn_params = respawn@x162_st_burer
-respawn_only_smart = false
-respawn_idle = 345600
-respawn_radius = 500
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = nil
-;def_restr = nil
-;safe_restr = nil
-;spawn_point = nil
-
-[respawn@x162_st_burer] ;-- Type:
-spawn_x16_worst
-spawn_x16_isg
-
-
-[spawn_x16_worst] ;-- Worst mutants - Rates of groups:( 2 karlik + 3 burer + 3 controller )
-spawn_squads = simulation_karlik, simulation_karlik, simulation_burer, simulation_burer_1_2_day, simulation_bur_5rat_day, simulation_controller, simulation_contr_5sn, simulation_contr_4tush_3sn
-spawn_num = {=actor_community(actor_monolith)} 0,{=actor_community(actor_greh)} 0,{+yan_kill_brain_done} 1, 0
-
-[spawn_x16_isg]
-spawn_squads = isg_x162_st_burer_squad
-spawn_num = {=actor_community(actor_monolith)} 0,{=actor_community(actor_greh)} 0,{+yan_kill_brain_done +isg_entered_the_zone !squad_name_exist(isg_x162_st_burer_squad) ~10} 1, 0
-
-
-[on_changing_level]
-on_info = {+yan_controller_respawn_01} %=destroy_object(labx16_killer_dead)%
-
-;[smart_control]
-
-;[exclusive]
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/labx16/smart/x162_st_gigant.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/labx16/smart/x162_st_gigant.ltx
deleted file mode 100644
index 0288021c..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/labx16/smart/x162_st_gigant.ltx
+++ /dev/null
@@ -1,33 +0,0 @@
-[smart_terrain]
-squad_id = 2
-max_population = 2
-respawn_params = respawn@x162_st_gigant
-respawn_only_smart = false
-respawn_idle = 172800
-respawn_radius = 500
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = nil
-;def_restr = nil
-;safe_restr = nil
-;spawn_point = nil
-
-[respawn@x162_st_gigant] ;-- Type:
-spawn_x16_normal
-spawn_x16_ecolog
-
-
-[spawn_x16_normal] ;-- Hard mutants - Rates of groups:( 1 tushkano + 1 snork + 1 fracture + 1 zombie )
-spawn_squads = simulation_tushkano, simulation_snork, simulation_fracture, simulation_zombie_blind
-spawn_num = {=actor_community(actor_monolith)} 0,{=actor_community(actor_greh)} 0,{+yan_kill_brain_done} 1, 0
-
-[spawn_x16_ecolog]
-spawn_squads = ecolog_x162_st_gigant_squad
-spawn_num = {+yan_kill_brain_done !squad_name_exist(ecolog_x162_st_gigant_squad)} 1, 0
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-;[exclusive]
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/labx16/smart/x162_st_poltergeist.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/labx16/smart/x162_st_poltergeist.ltx
deleted file mode 100644
index ff6fdc55..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/labx16/smart/x162_st_poltergeist.ltx
+++ /dev/null
@@ -1,28 +0,0 @@
-[smart_terrain]
-squad_id = 4
-max_population = 2
-respawn_params = respawn@x162_st_poltergeist
-respawn_only_smart = false
-respawn_idle = 259200
-respawn_radius = 500
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = nil
-;def_restr = nil
-;safe_restr = nil
-;spawn_point = nil
-
-[respawn@x162_st_poltergeist] ;-- Type:
-spawn_x16_hard
-
-
-[spawn_x16_hard] ;-- Hard mutants - Rates of groups:( 2 bloodsucker + 2 psysucker + 2 zombie )
-spawn_squads = simulation_bloodsucker, simulation_bloodsucker_1_2, simulation_psysucker, simulation_psysucker_1_2, simulation_zombie_blind_3zomb, simulation_zombie_blind_3zomb_civ
-spawn_num = {=actor_community(actor_monolith)} 0,{=actor_community(actor_greh)} 0,{+yan_kill_brain_done} 1, 0
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-;[exclusive]
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/labx16/smart/x162_st_snork.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/labx16/smart/x162_st_snork.ltx
deleted file mode 100644
index f4559971..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/labx16/smart/x162_st_snork.ltx
+++ /dev/null
@@ -1,29 +0,0 @@
-[smart_terrain]
-squad_id = 3
-max_population = 1
-respawn_params = respawn@x162_st_snork
-respawn_only_smart = false ;true
-respawn_idle = 43200
-respawn_radius = 500
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = nil
-;def_restr = nil
-;safe_restr = nil
-;spawn_point = nil
-
-[respawn@x162_st_snork] ;-- Type:
-spawn_x16_normal
-
-
-[spawn_x16_normal] ;-- Normal mutants - Rates of groups:( 3 snork + 2 tushkano )
-spawn_squads = simulation_snork, simulation_snork_2_3, simulation_snork_2_5, simulation_tushkano, simulation_tushkano_7_10
-spawn_num = {=actor_community(actor_monolith)} 0,{=actor_community(actor_greh)} 0,{+yan_kill_brain_done} 1, 0
-
-
-[on_changing_level]
-on_info = %=script(redone_remove_labx16_object:clean_mess)%
-
-;[smart_control]
-
-;[exclusive]
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/labx16/x16_main_generator_sound.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/labx16/x16_main_generator_sound.ltx
deleted file mode 100644
index 08b94251..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/labx16/x16_main_generator_sound.ltx
+++ /dev/null
@@ -1,26 +0,0 @@
-[logic]
-active = sr_idle@check
-
-[sr_idle@check]
-on_info = {-yan_kill_brain_done} sr_idle@on
-on_info2 = {+yan_kill_brain_done} sr_idle@off
-
-[sr_idle@start]
-on_info = sr_idle@on %=stop_sound_looped%
-;on_info = %=play_sound(x16_begin)%
-;on_signal = sound_end | sr_idle@on
-
-[sr_idle@on]
-on_info = %=play_sound_looped(x16_brain_run)%
-on_info_2 = {+yan_kill_brain_done} sr_idle@stop
-
-[sr_idle@stop]
-on_info = sr_idle@off %=stop_sound_looped%
-;on_info = %=play_sound(x16_brain_stop)%
-;on_signal = sound_end | sr_idle@off
-
-[sr_idle@off]
-on_info = %=play_sound_looped(x16_brain_death_d)%
-on_info_2 = {-yan_kill_brain_done} sr_idle@start
-
-
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/labx18/;mod_dar_military_scout_logic_redone.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/labx18/;mod_dar_military_scout_logic_redone.ltx
deleted file mode 100644
index 1f0fff51..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/labx18/;mod_dar_military_scout_logic_redone.ltx
+++ /dev/null
@@ -1,24 +0,0 @@
-![camper@dar_military_scout_hide]:walker@generic
-!def_state_moving = assault
-!def_state_campering = hide_na
-!radius = 10
-combat_ignore_cond = {=check_enemy_name(actor)} false, true
-
-![camper@dar_military_scout_camper1]:walker@generic
-!def_state_moving = assault
-!def_state_campering = hide_na
-!radius = 10
-combat_ignore_cond = {=check_enemy_name(actor)} false, true
-
-![camper@dar_military_scout_camper2]:walker@generic
-!def_state_moving = assault
-!def_state_campering = hide_na
-!radius = 10
-combat_ignore_cond = {=check_enemy_name(actor)} false, true
-
-![camper@dar_military_scout_camper3]:walker@generic
-!def_state_moving = assault
-!def_state_campering = hide_na
-!radius = 10
-combat_ignore_cond = {=check_enemy_name(actor)} false, true
-
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/labx18/mod_dar_control_poltergeist_logic_redone.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/labx18/mod_dar_control_poltergeist_logic_redone.ltx
deleted file mode 100644
index 03969f05..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/labx18/mod_dar_control_poltergeist_logic_redone.ltx
+++ /dev/null
@@ -1,2 +0,0 @@
-![mob_death@com_center_poltergeist]
-on_info =%+dar_door3_free +dar_control_poltergeist_killed +dar_lx18_complete_end%
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/labx18/mod_dar_door3_redone.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/labx18/mod_dar_door3_redone.ltx
deleted file mode 100644
index 232a1c1c..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/labx18/mod_dar_door3_redone.ltx
+++ /dev/null
@@ -1,3 +0,0 @@
-![ph_door@open]
-on_info = {+dar_door3_closed} ph_door@holding, {+dar_door3_free} ph_door@open_free
-
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/labx18/mod_x18_poltergeist_door_closer_redone.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/labx18/mod_x18_poltergeist_door_closer_redone.ltx
deleted file mode 100644
index d6f2af82..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/labx18/mod_x18_poltergeist_door_closer_redone.ltx
+++ /dev/null
@@ -1,9 +0,0 @@
-![sr_idle@ready]
-on_actor_in_zone = dar_close_door_zone | sr_idle@wait_assault %+dar_door3_closed =create_squad(dar_control_poltergeist_squad:dar_control_poltergeist)%
-
-![sr_idle@wait_assault]
-on_info = {+dar_door3_free} sr_idle@wait_dream %=create_squad(dar_military_scout_squad:dar_military_scout)% ;=x18_gluk =run_cam_effector(radar_stop:2506:false) =create_squad(dar_military_spetsnaz_squad:dar_military_scout) ;-- not in use yet
-
-
-
-
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/labx18/mod_x18_spawn_corpses_redone.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/labx18/mod_x18_spawn_corpses_redone.ltx
deleted file mode 100644
index eedceb37..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/labx18/mod_x18_spawn_corpses_redone.ltx
+++ /dev/null
@@ -1,2 +0,0 @@
-![sr_idle@1]
-on_info = sr_idle@2 %=spawn_corpse(dar_corpse_3:dar_corpse_1_deadway) =spawn_corpse(dar_corpse_4:dar_corpse_2_deadway) =spawn_corpse(dar_corpse_kalugin:dar_corpse_kalugin_deadway) =spawn_corpse(dar_corpse_ecolog_guard:dar_corpse_ecolog_guard_deadway)%
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/labx18/smart/dar_angar.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/labx18/smart/dar_angar.ltx
deleted file mode 100644
index 7d87bd03..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/labx18/smart/dar_angar.ltx
+++ /dev/null
@@ -1,29 +0,0 @@
-[smart_terrain]
-squad_id = 1
-max_population = 2
-respawn_params = respawn@dar_angar
-respawn_only_smart = false
-respawn_idle = 345600
-respawn_radius = 200
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = nil
-;def_restr = nil
-;safe_restr = nil
-;spawn_point = nil
-
-[respawn@dar_angar] ;-- Type:
-spawn_lx18_worst
-
-
-[spawn_lx18_worst] ;-- Worst mutants - Rates of groups: ( 1 bloodsucker + 1 psysucker + 1 burer; 1 gigant )
-spawn_squads = simulation_bloodsucker_1_2, simulation_psysucker_1_2, simulation_bur_5rat_day, ;dar_angar_gigant_squad
-spawn_num = {+dar_control_poltergeist_killed} 1, 0
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-[exclusive]
-angar_gigant = labx18\dar_angar_gigant.ltx
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/labx18/smart/dar_control_poltergeist.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/labx18/smart/dar_control_poltergeist.ltx
deleted file mode 100644
index f0e6c658..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/labx18/smart/dar_control_poltergeist.ltx
+++ /dev/null
@@ -1,29 +0,0 @@
-[smart_terrain]
-squad_id = 2
-max_population = 2
-respawn_params = respawn@dar_control_poltergeist
-respawn_only_smart = false
-respawn_idle = 345600
-respawn_radius = 200
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = nil
-;def_restr = nil
-;safe_restr = nil
-;spawn_point = nil
-
-[respawn@dar_control_poltergeist]
-spawn_lx18_worst
-
-
-[spawn_lx18_worst] ;-- Worst mutants - Rates of groups: ( 1 bloodsucker + 1 psysucker + 1 burer + 2 controller )
-spawn_squads = simulation_bloodsucker_1_2, simulation_psysucker_1_2, simulation_bur_5rat_day, simulation_contr_5rat_3tush, simulation_contr_5sn
-spawn_num = {+dar_control_poltergeist_killed} 1, 0
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-[exclusive]
-com_center_poltergeist = labx18\dar_control_poltergeist_logic.ltx
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/labx18/smart/dar_military_scout.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/labx18/smart/dar_military_scout.ltx
deleted file mode 100644
index 4580e711..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/labx18/smart/dar_military_scout.ltx
+++ /dev/null
@@ -1,26 +0,0 @@
-[smart_terrain] ;-- Disabled spawn
-squad_id = 3
-;max_population = 0
-;respawn_params = respawn@dar_military_scout
-;respawn_only_smart = false
-;respawn_idle = 86400
-;respawn_radius = 50
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = nil
-;def_restr = nil
-;safe_restr = nil
-;spawn_point = nil
-
-;[respawn@dar_military_scout] ;-- Type:
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-[exclusive]
-dar_military_scout_hide = labx18\dar_military_scout_logic.ltx
-dar_military_scout_camper1 = labx18\dar_military_scout_logic.ltx
-dar_military_scout_camper2 = labx18\dar_military_scout_logic.ltx
-dar_military_scout_camper3 = labx18\dar_military_scout_logic.ltx
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/labx18/smart/dar_poltergeist_ring.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/labx18/smart/dar_poltergeist_ring.ltx
deleted file mode 100644
index 56c0242b..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/labx18/smart/dar_poltergeist_ring.ltx
+++ /dev/null
@@ -1,32 +0,0 @@
-[smart_terrain]
-squad_id = 4
-max_population = 2
-respawn_params = respawn@dar_poltergeist_ring
-respawn_only_smart = false
-respawn_idle = 259200
-respawn_radius = 200
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = nil
-;def_restr = nil
-;safe_restr = nil
-spawn_point = dar_poltergeist_ring_way
-
-[respawn@dar_poltergeist_ring] ;-- Type:
-spawn_lx18_hard
-
-
-[spawn_lx18_hard] ;-- Hard\normal mutants - Rates of groups: ( 2 polter + 2 ~bloodsucker ~psysucker ~karlik ~controller ~zombie ~burer )
-spawn_squads = dar_poltergeist_ring_squad_1, dar_poltergeist_ring_squad_2, dar_monster_ring_squad_1, dar_monster_ring_squad_2
-spawn_num = {+dar_control_poltergeist_killed} 2, 0
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-[exclusive]
-dar_poltergeist_ring_base = labx18\dar_poltergeist_ring_logic.ltx
-dar_poltergeist_ring_1_1 = labx18\dar_poltergeist_ring_logic.ltx
-dar_poltergeist_ring_1_2 = labx18\dar_poltergeist_ring_logic.ltx
-dar_poltergeist_ring_end = labx18\dar_poltergeist_ring_logic.ltx
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/labx18/smart/dar_poltergeist_tele.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/labx18/smart/dar_poltergeist_tele.ltx
deleted file mode 100644
index 1d2cdc2c..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/labx18/smart/dar_poltergeist_tele.ltx
+++ /dev/null
@@ -1,29 +0,0 @@
-[smart_terrain]
-squad_id = 5
-max_population = 1
-respawn_params = respawn@dar_poltergeist_tele
-respawn_only_smart = false
-respawn_idle = 259200
-respawn_radius = 200
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = nil
-;def_restr = nil
-;safe_restr = nil
-spawn_point = dar_poltergeist_tele
-
-[respawn@dar_poltergeist_tele] ;-- Type:
-spawn_lx18_rare
-
-
-[spawn_lx18_rare] ;-- Hard\normal mutants - Rates of groups: ( 3 polter )
-spawn_squads = simulation_poltergeist_black, dar_poltergeist_tele_squad
-spawn_num = {+dar_control_poltergeist_killed} 1, 0
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-[exclusive]
-dar_poltergeist_tele_logic = labx18\dar_poltergeist_tele_logic.ltx
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/labx18/smart/dar_poltergeist_tele_round.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/labx18/smart/dar_poltergeist_tele_round.ltx
deleted file mode 100644
index 2a2719af..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/labx18/smart/dar_poltergeist_tele_round.ltx
+++ /dev/null
@@ -1,29 +0,0 @@
-[smart_terrain]
-squad_id = 6
-max_population = 1
-respawn_params = respawn@dar_poltergeist_tele_round
-respawn_only_smart = false
-respawn_idle = 259200
-respawn_radius = 200
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = nil
-;def_restr = nil
-;safe_restr = nil
-spawn_point = dar_poltergeist_tele_round_home
-
-[respawn@dar_poltergeist_tele_round] ;-- Type:
-spawn_lx18_rare
-
-
-[spawn_lx18_rare] ;-- Hard\normal mutants - Rates of groups: ( 2 polter )
-spawn_squads = simulation_poltergeist_black, dar_poltergeist_tele_round_squad
-spawn_num = {+dar_control_poltergeist_killed} 1, 0
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-[exclusive]
-dar_poltergeist_tele_round_logic = labx18\dar_poltergeist_tele_round_logic.ltx
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/labx18/smart/dar_smart_snork.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/labx18/smart/dar_smart_snork.ltx
deleted file mode 100644
index b17513a3..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/labx18/smart/dar_smart_snork.ltx
+++ /dev/null
@@ -1,28 +0,0 @@
-[smart_terrain]
-squad_id = 7
-max_population = 2
-respawn_params = respawn@dar_smart_snork
-respawn_only_smart = false
-respawn_idle = 172800
-respawn_radius = 200
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = nil
-;def_restr = nil
-;safe_restr = nil
-;spawn_point = nil
-
-[respawn@dar_smart_snork] ;-- Type:
-spawn_lx18_normal
-
-
-[spawn_lx18_normal] ;-- Weak\Normal mutants - Rates of groups: ( 2 tushkano + 3 snork + 1 fracture )
-spawn_squads = simulation_tushkano, simulation_tushkano_7_10, simulation_snork, simulation_snork_2_3, simulation_snork_2_5, simulation_fracture
-spawn_num = {+dar_control_poltergeist_killed} 1, 0
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-;[exclusive]
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/marsh/mar_endless_night_spawn_logic_1.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/marsh/mar_endless_night_spawn_logic_1.ltx
deleted file mode 100644
index 7a0b2926..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/marsh/mar_endless_night_spawn_logic_1.ltx
+++ /dev/null
@@ -1,50 +0,0 @@
-[logic]
-active = ph_idle@wait_actor
-
-[ph_idle@wait_actor]
-on_info = {=actor_near_smart(mar_smart_terrain_3_7) =is_night} ph_idle@spawn_night_monster_1, {=actor_near_smart(mar_smart_terrain_3_7) =is_dark_night} ph_idle@spawn_dark_monster_1
-on_info2 = {=actor_near_smart(mar_smart_terrain_3_10) =is_night} ph_idle@spawn_night_monster_2, {=actor_near_smart(mar_smart_terrain_3_10) =is_dark_night} ph_idle@spawn_dark_monster_2
-on_info3 = {=actor_near_smart(mar_smart_terrain_4_7) =is_night} ph_idle@spawn_night_monster_3, {=actor_near_smart(mar_smart_terrain_4_7) =is_dark_night} ph_idle@spawn_dark_monster_3
-on_info4 = {=actor_near_smart(mar_smart_terrain_6_7) =is_night} ph_idle@spawn_night_monster_4, {=actor_near_smart(mar_smart_terrain_6_7) =is_dark_night} ph_idle@spawn_dark_monster_4
-
-[ph_idle@spawn_night_monster_1]
-on_info = {~10} %=create_squad(simulation_mix_zombie_night:mar_smart_terrain_3_7)% ph_idle@reset, {~10} %=create_squad(simulation_snork_night:mar_smart_terrain_3_7)% ph_idle@reset, {~10} %=create_squad(simulation_tushkano_night:mar_smart_terrain_3_7)% ph_idle@reset, {~10} %=create_squad(simulation_pseudodog_night:mar_smart_terrain_3_7)% ph_idle@reset, ph_idle@wait_reset
-
-[ph_idle@spawn_dark_monster_1]
-on_info = {~10} %=create_squad(simulation_zombie_blind_3zomb_civ_night:mar_smart_terrain_3_7)% ph_idle@reset, {~10} %=create_squad(simulation_snork_night:mar_smart_terrain_3_7)% ph_idle@reset, {~10} %=create_squad(simulation_bloodsucker_night:mar_smart_terrain_3_7)% ph_idle@reset, {~10} %=create_squad(simulation_psysucker_night:mar_smart_terrain_3_7)% ph_idle@reset, ph_idle@wait_reset
-
-[ph_idle@reset]
-on_game_timer = 86400 | ph_idle@wait_actor
-
-[ph_idle@spawn_night_monster_2]
-on_info = {~10} %=create_squad(simulation_cat_night:mar_smart_terrain_3_10)% ph_idle@reset_2, {~10} %=create_squad(simulation_fracture_night:mar_smart_terrain_3_10)% ph_idle@reset_2, {~10} %=create_squad(simulation_zombie_blind_night:mar_smart_terrain_3_10)% ph_idle@reset_2, {~10} %=create_squad(simulation_pseudodog_night:mar_smart_terrain_3_10)% ph_idle@reset_2, ph_idle@wait_reset
-
-[ph_idle@spawn_dark_monster_2]
-on_info = {~10} %=create_squad(simulation_snork_night:mar_smart_terrain_3_10)% ph_idle@reset_2, {~10} %=create_squad(simulation_psysucker_night:mar_smart_terrain_3_10)% ph_idle@reset_2, {~10} %=create_squad(simulation_karlik_night:mar_smart_terrain_3_10)% ph_idle@reset_2, {~10} %=create_squad(simulation_bloodsucker_night:mar_smart_terrain_3_10)% ph_idle@reset_2, ph_idle@wait_reset
-
-[ph_idle@reset_2]
-on_game_timer = 86400 | ph_idle@wait_actor
-
-[ph_idle@spawn_night_monster_3]
-on_info = {~10} %=create_squad(simulation_psysucker_white_night:mar_smart_terrain_4_7)% ph_idle@reset_3, {~10} %=create_squad(simulation_bloodsucker_night:mar_smart_terrain_4_7)% ph_idle@reset_3, {~10} %=create_squad(simulation_psy_dog_night:mar_smart_terrain_4_7)% ph_idle@reset_3, {~10} %=create_squad(simulation_dog_night:mar_smart_terrain_4_7)% ph_idle@reset_3, ph_idle@wait_reset
-
-[ph_idle@spawn_dark_monster_3]
-on_info = {~10} %=create_squad(simulation_psysucker_white_night:mar_smart_terrain_4_7)% ph_idle@reset_3, {~10} %=create_squad(simulation_bloodsucker_night:mar_smart_terrain_4_7)% ph_idle@reset_3, {~10} %=create_squad(simulation_chimera_night:mar_smart_terrain_4_7)% ph_idle@reset_3, {~10} %=create_squad(simulation_dog_night:mar_smart_terrain_4_7)% ph_idle@reset_3, ph_idle@wait_reset
-
-[ph_idle@reset_3]
-on_game_timer = 86400 | ph_idle@wait_actor
-
-[ph_idle@spawn_night_monster_4]
-on_info = {~10} %=create_squad(simulation_zombie_blind_3zomb_civ_night:mar_smart_terrain_6_7)% ph_idle@reset_4, {~10} %=create_squad(simulation_bloodsucker_night:mar_smart_terrain_6_7)% ph_idle@reset_4, {~10} %=create_squad(simulation_psy_dog_night:mar_smart_terrain_6_7)% ph_idle@reset_4, {~10} %=create_squad(simulation_boar_3_5_night:mar_smart_terrain_6_7)% ph_idle@reset_4, ph_idle@wait_reset
-
-[ph_idle@spawn_dark_monster_4]
-on_info = {~10} %=create_squad(simulation_psysucker_white_night:mar_smart_terrain_6_7)% ph_idle@reset_4, {~10} %=create_squad(simulation_bloodsucker_night:mar_smart_terrain_6_7)% ph_idle@reset_4, {~10} %=create_squad(simulation_psy_dog_night:mar_smart_terrain_6_7)% ph_idle@reset_4, {~10} %=create_squad(simulation_gigant_night:mar_smart_terrain_6_7)% ph_idle@reset_4, ph_idle@wait_reset
-
-[ph_idle@reset_4]
-on_game_timer = 86400 | ph_idle@wait_actor
-
-[ph_idle@wait_reset]
-on_game_timer = 580 | ph_idle@wait_actor
-
-[collide]
-ignore_static
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/marsh/mar_endless_night_spawn_logic_2.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/marsh/mar_endless_night_spawn_logic_2.ltx
deleted file mode 100644
index fca82528..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/marsh/mar_endless_night_spawn_logic_2.ltx
+++ /dev/null
@@ -1,50 +0,0 @@
-[logic]
-active = ph_idle@wait_actor
-
-[ph_idle@wait_actor]
-on_info = {=actor_near_smart(mar_smart_terrain_6_8) =is_night} ph_idle@spawn_night_monster_1, {=actor_near_smart(mar_smart_terrain_6_8) =is_dark_night} ph_idle@spawn_dark_monster_1
-on_info2 = {=actor_near_smart(mar_smart_terrain_6_10) =is_night} ph_idle@spawn_night_monster_2, {=actor_near_smart(mar_smart_terrain_6_10) =is_dark_night} ph_idle@spawn_dark_monster_2
-on_info3 = {=actor_near_smart(mar_smart_terrain_8_8) =is_night} ph_idle@spawn_night_monster_3, {=actor_near_smart(mar_smart_terrain_8_8) =is_dark_night} ph_idle@spawn_dark_monster_3
-on_info4 = {=actor_near_smart(mar_smart_terrain_8_9) =is_night} ph_idle@spawn_night_monster_4, {=actor_near_smart(mar_smart_terrain_8_9) =is_dark_night} ph_idle@spawn_dark_monster_4
-
-[ph_idle@spawn_night_monster_1]
-on_info = {~10} %=create_squad(simulation_pseudodog_night:mar_smart_terrain_6_8)% ph_idle@reset, {~10} %=create_squad(simulation_dog_night:mar_smart_terrain_6_8)% ph_idle@reset, {~10} %=create_squad(simulation_tushkano_night:mar_smart_terrain_6_8)% ph_idle@reset, {~10} %=create_squad(simulation_boar_3_5_night:mar_smart_terrain_6_8)% ph_idle@reset, ph_idle@wait_reset
-
-[ph_idle@spawn_dark_monster_1]
-on_info = {~10} %=create_squad(simulation_bloodsucker_night:mar_smart_terrain_6_8)% ph_idle@reset, {~10} %=create_squad(simulation_psysucker_night:mar_smart_terrain_6_8)% ph_idle@reset, {~10} %=create_squad(simulation_tushkano_night:mar_smart_terrain_6_8)% ph_idle@reset, {~10} %=create_squad(simulation_psy_dog_night:mar_smart_terrain_6_8)% ph_idle@reset, ph_idle@wait_reset
-
-[ph_idle@reset]
-on_game_timer = 86400 | ph_idle@wait_actor
-
-[ph_idle@spawn_night_monster_2]
-on_info = {~10} %=create_squad(simulation_tushkano_night:mar_smart_terrain_6_10)% ph_idle@reset_2, {~10} %=create_squad(simulation_fracture_night:mar_smart_terrain_6_10)% ph_idle@reset_2, {~10} %=create_squad(simulation_zombie_blind_night:mar_smart_terrain_6_10)% ph_idle@reset_2, {~10} %=create_squad(simulation_pseudodog_night:mar_smart_terrain_6_10)% ph_idle@reset_2, ph_idle@wait_reset
-
-[ph_idle@spawn_dark_monster_2]
-on_info = {~10} %=create_squad(simulation_bloodsucker_night:mar_smart_terrain_6_10)% ph_idle@reset_2, {~10} %=create_squad(simulation_psysucker_night:mar_smart_terrain_6_10)% ph_idle@reset_2, {~10} %=create_squad(simulation_zombie_blind_3zomb_civ_night:mar_smart_terrain_6_10)% ph_idle@reset_2, {~10} %=create_squad(simulation_psy_dog_night:mar_smart_terrain_6_10)% ph_idle@reset_2, ph_idle@wait_reset
-
-[ph_idle@reset_2]
-on_game_timer = 86400 | ph_idle@wait_actor
-
-[ph_idle@spawn_night_monster_3]
-on_info = {~10} %=create_squad(simulation_snork_night:mar_smart_terrain_8_8)% ph_idle@reset_3, {~10} %=create_squad(simulation_psysucker_white_night:mar_smart_terrain_8_8)% ph_idle@reset_3, {~10} %=create_squad(simulation_bloodsucker_night:mar_smart_terrain_8_8)% ph_idle@reset_3, {~10} %=create_squad(simulation_karlik_night:mar_smart_terrain_8_8)% ph_idle@reset_3, ph_idle@wait_reset
-
-[ph_idle@spawn_dark_monster_3]
-on_info = {~10} %=create_squad(simulation_psy_dog_night:mar_smart_terrain_8_8)% ph_idle@reset_3, {~10} %=create_squad(simulation_psysucker_white_night:mar_smart_terrain_8_8)% ph_idle@reset_3, {~10} %=create_squad(simulation_bloodsucker_night:mar_smart_terrain_8_8)% ph_idle@reset_3, {~10} %=create_squad(simulation_burer_night:mar_smart_terrain_8_8)% ph_idle@reset_3, ph_idle@wait_reset
-
-[ph_idle@reset_3]
-on_game_timer = 86400 | ph_idle@wait_actor
-
-[ph_idle@spawn_night_monster_4]
-on_info = {~10} %=create_squad(simulation_snork_night:mar_smart_terrain_8_9)% ph_idle@reset_4, {~10} %=create_squad(simulation_dog_night:mar_smart_terrain_8_9)% ph_idle@reset_4, {~10} %=create_squad(simulation_cat_night:mar_smart_terrain_8_9)% ph_idle@reset_4, {~10} %=create_squad(simulation_boar_night:mar_smart_terrain_8_9)% ph_idle@reset_4, ph_idle@wait_reset
-
-[ph_idle@spawn_dark_monster_4]
-on_info = {~10} %=create_squad(simulation_lurker_blue_night:mar_smart_terrain_8_9)% ph_idle@reset_4, {~10} %=create_squad(simulation_contr_5rat_3tush_night:mar_smart_terrain_8_9)% ph_idle@reset_4, {~10} %=create_squad(simulation_psysucker_night:mar_smart_terrain_8_9)% ph_idle@reset_4, {~10} %=create_squad(simulation_chimera_night:mar_smart_terrain_8_9)% ph_idle@reset_4, ph_idle@wait_reset
-
-[ph_idle@reset_4]
-on_game_timer = 86400 | ph_idle@wait_actor
-
-[ph_idle@wait_reset]
-on_game_timer = 580 | ph_idle@wait_actor
-
-[collide]
-ignore_static
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/marsh/mar_endless_night_spawn_logic_3.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/marsh/mar_endless_night_spawn_logic_3.ltx
deleted file mode 100644
index 61a98f3b..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/marsh/mar_endless_night_spawn_logic_3.ltx
+++ /dev/null
@@ -1,50 +0,0 @@
-[logic]
-active = ph_idle@wait_actor
-
-[ph_idle@wait_actor]
-on_info = {=actor_near_smart(mar_smart_terrain_7_7) =is_night} ph_idle@spawn_night_monster_1, {=actor_near_smart(mar_smart_terrain_7_7) =is_dark_night} ph_idle@spawn_dark_monster_1
-on_info2 = {=actor_near_smart(mar_smart_terrain_8_4) =is_night} ph_idle@spawn_night_monster_2, {=actor_near_smart(mar_smart_terrain_8_4) =is_dark_night} ph_idle@spawn_dark_monster_2
-on_info3 = {=actor_near_smart(mar_smart_terrain_10_7) =is_night} ph_idle@spawn_night_monster_3, {=actor_near_smart(mar_smart_terrain_10_7) =is_dark_night} ph_idle@spawn_dark_monster_3
-on_info4 = {=actor_near_smart(mar_smart_terrain_10_10) =is_night} ph_idle@spawn_night_monster_4, {=actor_near_smart(mar_smart_terrain_10_10) =is_dark_night} ph_idle@spawn_dark_monster_4
-
-[ph_idle@spawn_night_monster_1]
-on_info = {~10} %=create_squad(simulation_bloodsucker_night:mar_smart_terrain_7_7)% ph_idle@reset, {~10} %=create_squad(simulation_dog_night:mar_smart_terrain_7_7)% ph_idle@reset, {~10} %=create_squad(simulation_cat_night:mar_smart_terrain_7_7)% ph_idle@reset, {~10} %=create_squad(simulation_lurker_blue_night:mar_smart_terrain_7_7)% ph_idle@reset, ph_idle@wait_reset
-
-[ph_idle@spawn_dark_monster_1]
-on_info = {~10} %=create_squad(simulation_bloodsucker_night:mar_smart_terrain_7_7)% ph_idle@reset, {~10} %=create_squad(simulation_fracture_night:mar_smart_terrain_7_7)% ph_idle@reset, {~10} %=create_squad(simulation_chimera_night:mar_smart_terrain_7_7)% ph_idle@reset, {~10} %=create_squad(simulation_psysucker_night:mar_smart_terrain_7_7)% ph_idle@reset, ph_idle@wait_reset
-
-[ph_idle@reset]
-on_game_timer = 86400 | ph_idle@wait_actor
-
-[ph_idle@spawn_night_monster_2]
-on_info = {~10} %=create_squad(simulation_snork_night:mar_smart_terrain_8_4)% ph_idle@reset_2, {~10} %=create_squad(simulation_fracture_night:mar_smart_terrain_8_4)% ph_idle@reset_2, {~10} %=create_squad(simulation_zombie_blind_night:mar_smart_terrain_8_4)% ph_idle@reset_2, {~10} %=create_squad(simulation_pseudodog_night:mar_smart_terrain_8_4)% ph_idle@reset_2, ph_idle@wait_reset
-
-[ph_idle@spawn_dark_monster_2]
-on_info = {~10} %=create_squad(simulation_snork_night:mar_smart_terrain_8_4)% ph_idle@reset_2, {~10} %=create_squad(simulation_zombie_blind_3zomb_civ_night:mar_smart_terrain_8_4)% ph_idle@reset_2, {~10} %=create_squad(simulation_psysucker_night:mar_smart_terrain_8_4)% ph_idle@reset_2, {~10} %=create_squad(simulation_bloodsucker_night:mar_smart_terrain_8_4)% ph_idle@reset_2, ph_idle@wait_reset
-
-[ph_idle@reset_2]
-on_game_timer = 86400 | ph_idle@wait_actor
-
-[ph_idle@spawn_night_monster_3]
-on_info = {~10} %=create_squad(simulation_tushkano_night:mar_smart_terrain_10_7)% ph_idle@reset_3, {~10} %=create_squad(simulation_dog_night:mar_smart_terrain_10_7)% ph_idle@reset_3, {~10} %=create_squad(simulation_boar_night:mar_smart_terrain_10_7)% ph_idle@reset_3, {~10} %=create_squad(simulation_cat_night:mar_smart_terrain_10_7)% ph_idle@reset_3, ph_idle@wait_reset
-
-[ph_idle@spawn_dark_monster_3]
-on_info = {~10} %=create_squad(simulation_bloodsucker_night:mar_smart_terrain_10_7)% ph_idle@reset_3, {~10} %=create_squad(simulation_psysucker_night:mar_smart_terrain_10_7)% ph_idle@reset_3, {~10} %=create_squad(simulation_boar_night:mar_smart_terrain_10_7)% ph_idle@reset_3, {~10} %=create_squad(simulation_cat_night:mar_smart_terrain_10_7)% ph_idle@reset_3, ph_idle@wait_reset
-
-[ph_idle@reset_3]
-on_game_timer = 86400 | ph_idle@wait_actor
-
-[ph_idle@spawn_night_monster_4]
-on_info = {~10} %=create_squad(simulation_pseudodog_night:mar_smart_terrain_10_10)% ph_idle@reset_4, {~10} %=create_squad(simulation_fracture_night:mar_smart_terrain_10_10)% ph_idle@reset_4, {~10} %=create_squad(simulation_bloodsucker_night:mar_smart_terrain_10_10)% ph_idle@reset_4, {~10} %=create_squad(simulation_lurker_blue_night:mar_smart_terrain_10_10)% ph_idle@reset_4, ph_idle@wait_reset
-
-[ph_idle@spawn_dark_monster_4]
-on_info = {~10} %=create_squad(simulation_pseudodog_night:mar_smart_terrain_10_10)% ph_idle@reset_4, {~10} %=create_squad(simulation_fracture_night:mar_smart_terrain_10_10)% ph_idle@reset_4, {~10} %=create_squad(simulation_bloodsucker_night:mar_smart_terrain_10_10)% ph_idle@reset_4, {~10} %=create_squad(simulation_psysucker_night:mar_smart_terrain_10_10)% ph_idle@reset_4, ph_idle@wait_reset
-
-[ph_idle@reset_4]
-on_game_timer = 86400 | ph_idle@wait_actor
-
-[ph_idle@wait_reset]
-on_game_timer = 580 | ph_idle@wait_actor
-
-[collide]
-ignore_static
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/marsh/mod_mar_crow_spawner_redone.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/marsh/mod_mar_crow_spawner_redone.ltx
deleted file mode 100644
index b0f72d02..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/marsh/mod_mar_crow_spawner_redone.ltx
+++ /dev/null
@@ -1,19 +0,0 @@
-![logic]
-!active = sr_crow_spawner
-active = sr_idle@check_story
-
-[sr_idle@check_story]
-on_info = {-story_mode_disabled} sr_idle@check_actor, {+story_mode_disabled -yan_x16_complete_end} sr_idle@check_actor %+yan_kill_brain_done%
-
-[sr_idle@check_actor]
-on_info = {=actor_community(actor_monolith) -yan_x16_complete_end} sr_idle@check_helmet %+yan_kill_brain_done%, {=actor_community(actor_greh) -yan_x16_complete_end} sr_idle@check_helmet %+yan_kill_brain_done%, sr_idle@check_helmet
-
-[sr_idle@check_helmet]
-on_info = {=actor_has_item(good_psy_helmet)} sr_idle@check_spawner %+living_legend_psy_helmet%, {=actor_has_item(bad_psy_helmet)} sr_idle@check_spawner %+living_legend_psy_helmet%, sr_idle@check_spawner
-
-[sr_idle@check_spawner]
-on_info = sr_crow_spawner
-
-![sr_crow_spawner]
-max_crows_on_level = 5
-spawn_path = mar_crow_spawn_1, mar_crow_spawn_2, mar_crow_spawn_3, mar_crow_spawn_4, mar_crow_spawn_5
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/marsh/mod_mar_smart_terrain_11_3_smart_logic_redone.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/marsh/mod_mar_smart_terrain_11_3_smart_logic_redone.ltx
deleted file mode 100644
index eba96c33..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/marsh/mod_mar_smart_terrain_11_3_smart_logic_redone.ltx
+++ /dev/null
@@ -1,3 +0,0 @@
-![logic@mar_smart_terrain_11_3_collector_work]
-active = walker@mar_smart_terrain_11_3_collector_work
-suitable = {=npc_community(stalker)} true, {=npc_community(csky)} true, {=npc_community(ecolog)} true, {=npc_community(army)} true
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/marsh/mod_mar_smart_terrain_12_2_smart_logic_redone.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/marsh/mod_mar_smart_terrain_12_2_smart_logic_redone.ltx
deleted file mode 100644
index 30e2714a..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/marsh/mod_mar_smart_terrain_12_2_smart_logic_redone.ltx
+++ /dev/null
@@ -1,48 +0,0 @@
-![logic@mar_smart_terrain_12_2_collector_work]
-active = walker@mar_smart_terrain_12_2_collector_work
-suitable = {=npc_community(stalker)} true, {=npc_community(csky)} true, {=npc_community(ecolog)} true, {=npc_community(army)} true
-
-[logic@mar_smart_terrain_12_2_camp_work_6]
-active = beh@mar_smart_terrain_12_2_camp_work_6
-suitable = {!surge_started} true
-prior = 45
-
-[logic@mar_smart_terrain_12_2_camp_work_7]
-active = beh@mar_smart_terrain_12_2_camp_work_7
-suitable = {!surge_started} true
-prior = 45
-
-[logic@mar_smart_terrain_12_2_camp_work_8]
-active = beh@mar_smart_terrain_12_2_camp_work_8
-suitable = {!surge_started} true
-prior = 45
-
-[beh@general_work]
-behavior_state = beh_move
-target = waypoint
-walk_dist = 100
-jog_dist = 220
-walk_anim = patrol
-jog_anim = assault
-run_anim = assault
-delay_anim = guard
-combat_ignore_cond = false
-combat_ignore_keep_when_attacked = false
-turn_on_campfire = true
-gather_items_enabled = false
-help_wounded_enabled = true
-corpse_detection_enabled = true
-invulnerable = false
-
-[beh@mar_smart_terrain_12_2_camp_work_6]:beh@general_work
-pt1 = 88860000, sit_ass | pos: 582.88635253906, 3.0272789001465, 410.47271728516 look: 581.25933837891, 3.1870319843292, 411.89233398438
-path_end = loop
-
-[beh@mar_smart_terrain_12_2_camp_work_7]:beh@general_work
-pt1 = 88860000, sit_ass | pos: 580.630859375, 2.9817399978638, 410.10726928711 look: 581.27111816406, 3.1863985061646, 411.93655395508
-path_end = loop
-
-[beh@mar_smart_terrain_12_2_camp_work_8]:beh@general_work
-pt1 = 88860000, sit_ass | pos: 579.32287597656, 2.8790109157562, 412.45388793945 look: 581.46997070312, 3.2193348407745, 412.14294433594
-path_end = loop
-
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/marsh/mod_mar_smart_terrain_3_3_smart_logic_redone.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/marsh/mod_mar_smart_terrain_3_3_smart_logic_redone.ltx
deleted file mode 100644
index 9a8022c7..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/marsh/mod_mar_smart_terrain_3_3_smart_logic_redone.ltx
+++ /dev/null
@@ -1,92 +0,0 @@
-[logic@mar_smart_terrain_3_3_guard_work_1]
-active = beh@mar_smart_terrain_3_3_guard_work_1
-suitable = {=target_squad_name(renegade_guard_mar_smart_terrain_3_3)} true ;{!surge_started =npc_community(renegade)} true
-prior = 200
-
-[logic@mar_smart_terrain_3_3_trader_logic]
-suitable = {=check_npc_name(mar_renegade_trader)} true
-active = beh@mar_smart_terrain_3_3_trader_work_1
-prior = 200
-can_select_weapon = false
-dont_keep_items = true
-level_spot = trader
-trade = items\trade\trade_renegade.ltx
-on_death = death_trader
-
-[death_trader]
-on_info = %+mar_renegade_trader_dead%
-
-[beh@general_guard]
-behavior_state = beh_move
-target = waypoint
-walk_dist = 100
-jog_dist = 220
-walk_anim = patrol
-jog_anim = assault
-run_anim = assault
-delay_anim = guard
-combat_ignore_cond = false
-combat_ignore_keep_when_attacked = false
-gather_items_enabled = false
-help_wounded_enabled = true
-corpse_detection_enabled = false
-invulnerable = {!actor_true_enemy} true, false
-meet = meet
-
-[beh@general_surge]
-behavior_state = beh_move
-target = waypoint
-walk_dist = 100
-jog_dist = 220
-walk_anim = rush
-jog_anim = rush
-run_anim = rush
-gather_items_enabled = false
-help_wounded_enabled = false
-corpse_detection_enabled = false
-invulnerable = {!actor_true_enemy} true, false
-
-[meet]
-close_anim = nil
-close_victim = nil
-far_anim = nil
-far_victim = nil
-close_distance = 0
-far_distance = 0
-close_snd_distance = 3
-abuse = false
-;use = {=actor_enemy} false, true
-allow_break = false
-meet_on_talking = false
-trade_enable = false
-
-[beh@mar_smart_terrain_3_3_guard_work_1]:beh@general_guard
-pt1 = 88860000, guard | pos: -102.17450714111, 0.28349053859711, 334.62121582031 look: -103.18497467041, 0.29522895812988, 333.81231689453
-path_end = loop
-on_info = {=surge_started} beh@mar_smart_terrain_3_3_surge_work_1
-
-[beh@mar_smart_terrain_3_3_trader_work_1]:beh@general_guard
-pt1 = 88860000, fold_arms | pos: -166.23594665527, 1.2154817581177, 404.42706298828 look: -167.17866516113, 1.201287984848, 403.93496704102
-path_end = loop
-on_info = {=is_night} beh@mar_smart_terrain_3_3_trader_sleeper_work_1
-on_info2 = {=surge_started} beh@mar_smart_terrain_3_3_trader_surge_work_1
-
-[beh@mar_smart_terrain_3_3_surge_work_1]:beh@general_surge
-pt1 = 88860000, guard | pos: -66.679733276367, 0.23225954174995, 304.81878662109 look: -65.98218536377, 0.26270437240601, 304.23452758789
-path_end = loop
-on_info = {=surge_complete} beh@mar_smart_terrain_3_3_guard_work_1
-
-[beh@mar_smart_terrain_3_3_trader_surge_work_1]:beh@general_guard
-pt1 = 100, idle | pos: -181.83827209473, 1.240157365799, 408.89813232422 look: -181.83827209473, 1.240157365799, 408.89813232422
-pt2 = 100, idle | pos: -181.61006164551, 2.5379238128662, 414.4421081543 look: -181.61006164551, 2.5379238128662, 414.4421081543
-pt3 = 88860000, smoking_stand | pos: -179.36306762695, 2.496452331543, 418.27770996094 look: -178.08337402344, 2.3998425006866, 417.59329223633
-;path_end = loop
-on_info = {=surge_complete} beh@mar_smart_terrain_3_3_trader_work_1
-
-[beh@mar_smart_terrain_3_3_trader_sleeper_work_1]:beh@general_guard
-pt1 = 100, idle | pos: -181.83827209473, 1.240157365799, 408.89813232422 look: -181.83827209473, 1.240157365799, 408.89813232422
-pt2 = 100, idle | pos: -181.61006164551, 2.5379238128662, 414.4421081543 look: -181.61006164551, 2.5379238128662, 414.4421081543
-pt3 = 88860000, drunk_sit_ass | pos: -175.93263244629, 2.4545187950134, 420.1438293457 look: -175.91630554199, 2.4256129264832, 419.57049560547
-;path_end = loop
-on_info = {!is_night} beh@mar_smart_terrain_3_3_trader_work_1
-
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/marsh/mod_mar_smart_terrain_4_5_smart_logic_redone.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/marsh/mod_mar_smart_terrain_4_5_smart_logic_redone.ltx
deleted file mode 100644
index ba5aa700..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/marsh/mod_mar_smart_terrain_4_5_smart_logic_redone.ltx
+++ /dev/null
@@ -1,122 +0,0 @@
-[logic@mar_smart_terrain_4_5_guard_work_1]
-active = beh@mar_smart_terrain_4_5_guard_work_1
-suitable = {=target_squad_name(mar_renegade_guard_patrol)} true ;{!surge_started =npc_community(renegade)} true
-prior = 200
-
-[logic@mar_smart_terrain_4_5_guard_work_2]
-active = beh@mar_smart_terrain_4_5_guard_work_2
-suitable = {=target_squad_name(mar_renegade_guard_patrol)} true ;{!surge_started =npc_community(renegade)} true
-prior = 200
-
-[logic@mar_smart_terrain_4_5_guard_work_3]
-active = beh@mar_smart_terrain_4_5_guard_work_3
-suitable = {=target_squad_name(mar_renegade_guard_patrol)} true ;{!surge_started =npc_community(renegade)} true
-prior = 200
-
-[logic@mar_smart_terrain_4_5_mechanic_logic]
-suitable = {=check_npc_name(mar_renegade_mechanic)} true
-active = beh@mar_smart_terrain_4_5_mechanic_work_1
-prior = 200
-can_select_weapon = true
-dont_keep_items = true
-level_spot = mechanic
-trade = items\trade\trade_generic_mechanic.ltx
-on_death = death_mechanic
-
-[death_mechanic]
-on_info = %+mar_renegade_mechanic_dead%
-
-[beh@general_guard]
-behavior_state = beh_move
-target = waypoint
-walk_dist = 100
-jog_dist = 220
-walk_anim = patrol
-jog_anim = assault
-run_anim = assault
-delay_anim = guard
-combat_ignore_cond = false
-combat_ignore_keep_when_attacked = false
-gather_items_enabled = false
-help_wounded_enabled = true
-corpse_detection_enabled = false
-invulnerable = {!actor_true_enemy} true, false
-meet = meet
-
-[beh@general_surge]
-behavior_state = beh_move
-target = waypoint
-walk_dist = 100
-jog_dist = 220
-walk_anim = rush
-jog_anim = rush
-run_anim = rush
-gather_items_enabled = false
-help_wounded_enabled = false
-corpse_detection_enabled = false
-invulnerable = {!actor_true_enemy} true, false
-
-[meet]
-close_anim = nil
-close_victim = nil
-far_anim = nil
-far_victim = nil
-close_distance = 0
-far_distance = 0
-close_snd_distance = 3
-abuse = false
-;use = {=actor_enemy} false, true
-allow_break = false
-meet_on_talking = false
-trade_enable = false
-
-[beh@mar_smart_terrain_4_5_guard_work_1]:beh@general_guard
-pt1 = 88860000, guard | pos: -22.130926132202, 1.3520023822784, 302.73327636719 look: -20.949447631836, 1.4185507297516, 302.74871826172
-path_end = loop
-on_info = {=surge_started} beh@mar_smart_terrain_4_5_surge_work_1
-
-[beh@mar_smart_terrain_4_5_guard_work_2]:beh@general_guard
-pt1 = 88860000, guard | pos: -56.102127075195, 0.32276093959808, 255.72845458984 look: -56.189502716064, 0.28120201826096, 254.16116333008
-path_end = loop
-on_info = {=surge_started} beh@mar_smart_terrain_4_5_surge_work_2
-
-[beh@mar_smart_terrain_4_5_guard_work_3]:beh@general_guard
-pt1 = 30000, guard | pos: -52.357490539551, 0.46181523799896, 310.07559204102 look: -52.897644042969, 0.42069625854492, 311.70074462891
-pt2 = 30000, guard | pos: -33.12162399292, 0.99425029754639, 313.0598449707 look: -32.454566955566, 1.0350238084793, 314.18930053711
-pt3 = 30000, guard | pos: -34.121109008789, 1.1312124729156, 264.22564697266 look: -33.278354644775, 1.0799858570099, 263.03125, 126162
-pt4 = 50000, binocular | pos: -53.769592285156, 0.49783384799957, 256.45532226562 look: -53.50598526001, 0.43051421642303, 251.93171691895
-pt5 = 100000, smoking_stand | pos: -82.267395019531, 0.47735011577606, 292.60342407227 look: -80.736793518066, 0.55484676361084, 291.66186523438
-path_end = loop
-on_info = {=surge_started} beh@mar_smart_terrain_4_5_surge_work_3
-
-[beh@mar_smart_terrain_4_5_mechanic_work_1]:beh@general_guard
-pt1 = 88860000, idle | pos: -41.070526123047, 0.83952760696411, 299.06350708008 look: -42.211521148682, 0.85883629322052, 298.53637695312
-path_end = loop
-on_info = {=is_night} beh@mar_smart_terrain_4_5_mechanic_sleeper_work_1
-on_info2 = {=surge_started} beh@mar_smart_terrain_4_5_mechanic_surge_work_1
-
-[beh@mar_smart_terrain_4_5_surge_work_1]:beh@general_surge
-pt1 = 88860000, idle | pos: -64.608497619629, 0.4090513586998, 301.75866699219 look: -65.166435241699, 0.44713652133942, 300.01336669922
-path_end = loop
-on_info = {=surge_complete} beh@mar_smart_terrain_3_3_guard_work_1
-
-[beh@mar_smart_terrain_4_5_surge_work_2]:beh@general_surge
-pt1 = 1000, idle | pos: -42.187362670898, 1.048748254776, 276.03903198242 look: -42.929580688477, -1.3546957969666, 268.80407714844
-pt2 = 88860000, smoking_stand | pos: -43.331748962402, -1.1223545074463, 267.94931030273 look: -42.929580688477, -1.3546957969666, 268.80407714844
-;path_end = loop
-on_info = {=surge_complete} beh@mar_smart_terrain_4_5_guard_work_2
-
-[beh@mar_smart_terrain_4_5_surge_work_3]:beh@general_surge
-pt1 = 88860000, smoking_stand | pos: -67.112495422363, 0.26309049129486, 304.40640258789 look: -26.799217224121, 17.709882736206, 266.99923706055
-path_end = loop
-on_info = {=surge_complete} beh@mar_smart_terrain_4_5_guard_work_3
-
-[beh@mar_smart_terrain_4_5_mechanic_surge_work_1]:beh@general_guard
-pt1 = 88860000, guard | pos: -67.655487060547, 0.29054844379425, 303.61352539062 look: -66.823997497559, 0.2875799536705, 303.69750976562
-path_end = loop
-on_info = {=surge_complete} beh@mar_smart_terrain_4_5_mechanic_work_1
-
-[beh@mar_smart_terrain_4_5_mechanic_sleeper_work_1]:beh@general_guard
-pt1 = 88860000, sleep_sit | pos: -67.655487060547, 0.29054844379425, 303.61352539062 look: -66.823997497559, 0.2875799536705, 303.69750976562
-path_end = loop
-on_info = {!is_night} beh@mar_smart_terrain_4_5_mechanic_work_1
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/marsh/mod_mar_smart_terrain_base_radio_redone.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/marsh/mod_mar_smart_terrain_base_radio_redone.ltx
deleted file mode 100644
index c510a4da..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/marsh/mod_mar_smart_terrain_base_radio_redone.ltx
+++ /dev/null
@@ -1,17 +0,0 @@
-![logic]
-!active = ph_sound
-active = ph_idle@music
-
-[ph_idle@music]
-on_info = %=play_sound(mar_smart_terrain_base_radio_mlr)%
-on_info2 = {=is_night} ph_idle@night
-on_info3 = {=surge_started} ph_idle@surge
-
-[ph_idle@night]
-on_info = %=play_sound(no_sound_mlr)%
-on_info2 = {!is_night} ph_idle@music
-
-[ph_idle@surge]
-on_info = %=play_sound(broken_radio_mlr)%
-on_info2 = {!surge_started} ph_idle@music
-
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/marsh/mod_mar_smart_terrain_base_smart_logic_redone.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/marsh/mod_mar_smart_terrain_base_smart_logic_redone.ltx
deleted file mode 100644
index 7c52be0c..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/marsh/mod_mar_smart_terrain_base_smart_logic_redone.ltx
+++ /dev/null
@@ -1,21 +0,0 @@
-![logic@guard_1]
-suitable = {=target_squad_name(mar_smart_terrain_base_lager_squad) !surge_started} true, {=npc_community(army) !surge_started} true, {=npc_community(renegade) !surge_started} true
-
-![logic@guard_2]
-suitable = {=target_squad_name(mar_smart_terrain_base_lager_squad) !surge_started} true, {=npc_community(army) !surge_started} true, {=npc_community(renegade) !surge_started} true
-
-![logic@mar_base_animpoint_kamp1]
-suitable = {=target_squad_name(mar_smart_terrain_base_lager_squad) !surge_started} true, {=npc_community(army) !surge_started} true, {=npc_community(renegade) !surge_started} true
-
-![logic@mar_base_animpoint_kamp2]
-suitable = {=target_squad_name(mar_smart_terrain_base_lager_squad) !surge_started} true, {=npc_community(army) !surge_started} true, {=npc_community(renegade) !surge_started} true
-
-![logic@mar_base_animpoint_kamp3]
-suitable = {=target_squad_name(mar_smart_terrain_base_lager_squad) !surge_started} true, {=npc_community(army) !surge_started} true, {=npc_community(renegade) !surge_started} true
-
-![logic@mar_base_animpoint_kamp4]
-suitable = {=target_squad_name(mar_smart_terrain_base_lager_squad) !surge_started} true, {=npc_community(army) !surge_started} true, {=npc_community(renegade) !surge_started} true
-
-![logic@mar_smart_terrain_base_surge_def]
-suitable = {=target_squad_name(mar_smart_terrain_base_lager_squad) !surge_started} true, {=npc_community(army) !surge_started} true, {=npc_community(renegade) !surge_started} true
-
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/marsh/mod_mar_smart_terrain_base_stalker_guide_marsh_redone.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/marsh/mod_mar_smart_terrain_base_stalker_guide_marsh_redone.ltx
deleted file mode 100644
index 330ad772..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/marsh/mod_mar_smart_terrain_base_stalker_guide_marsh_redone.ltx
+++ /dev/null
@@ -1,5 +0,0 @@
-![logic@mar_smart_terrain_base_stalker_guide_marsh]
-on_death = death_leader
-
-[death_leader]
-on_info = %+csky_stalker_leader_dead%
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/marsh/smart/;mar_smart_terrain_doc.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/marsh/smart/;mar_smart_terrain_doc.ltx
deleted file mode 100644
index d5ad1546..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/marsh/smart/;mar_smart_terrain_doc.ltx
+++ /dev/null
@@ -1,6 +0,0 @@
-[smart_terrain] ;-- Disabled
-squad_id = 26
-max_population = 1
-
-
-;[exclusive]
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/marsh/smart/;mar_smart_terrain_doc_2.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/marsh/smart/;mar_smart_terrain_doc_2.ltx
deleted file mode 100644
index cf46ab63..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/marsh/smart/;mar_smart_terrain_doc_2.ltx
+++ /dev/null
@@ -1,6 +0,0 @@
-[smart_terrain] ;-- Disabled
-squad_id = 27
-max_population = 1
-
-
-;[exclusive]
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/marsh/smart/mar_smart_terrain_10_10.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/marsh/smart/mar_smart_terrain_10_10.ltx
deleted file mode 100644
index 90223710..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/marsh/smart/mar_smart_terrain_10_10.ltx
+++ /dev/null
@@ -1,23 +0,0 @@
-[smart_terrain] ;-- Disabled spawn
-squad_id = 1
-max_population = 2
-;respawn_params = respawn@mar_smart_terrain_10_10
-;respawn_only_smart = false
-;respawn_idle = 86400
-;respawn_radius = 50
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = nil
-;def_restr = nil
-;safe_restr = nil
-;spawn_point = nil
-
-;[respawn@mar_smart_terrain_10_10] ;-- Type:
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-[exclusive]
-mar_smart_terrain_10_10_collector_work = marsh\mar_smart_terrain_10_10_smart_logic.ltx
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/marsh/smart/mar_smart_terrain_10_5.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/marsh/smart/mar_smart_terrain_10_5.ltx
deleted file mode 100644
index 4894ae52..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/marsh/smart/mar_smart_terrain_10_5.ltx
+++ /dev/null
@@ -1,38 +0,0 @@
-[smart_terrain]
-squad_id = 2
-max_population = 2
-respawn_params = respawn@mar_smart_terrain_10_5
-respawn_only_smart = false
-respawn_idle = 172800
-respawn_radius = 50
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = nil
-;def_restr = nil
-;safe_restr = nil
-;spawn_point = nil
-
-faction_controlled = army, bandit, csky, renegade, stalker
-default_faction = army
-faction_respawn_num = 1
-
-;[respawn@mar_smart_terrain_10_5] ;-- Type: faction {army} = outpost
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-[exclusive]
-mar_smart_terrain_10_5_minigunner_excl = marsh\mar_smart_terrain_10_5_smart_logic.ltx
-
-mar_smart_terrain_10_5_camp_work_1 = marsh\mar_smart_terrain_10_5_smart_logic.ltx
-mar_smart_terrain_10_5_camp_work_2 = marsh\mar_smart_terrain_10_5_smart_logic.ltx
-mar_smart_terrain_10_5_camp_work_3 = marsh\mar_smart_terrain_10_5_smart_logic.ltx
-mar_smart_terrain_10_5_camp_work_4 = marsh\mar_smart_terrain_10_5_smart_logic.ltx
-mar_smart_terrain_10_5_camp_work_5 = marsh\mar_smart_terrain_10_5_smart_logic.ltx
-
-
-
-
-
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/marsh/smart/mar_smart_terrain_10_7.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/marsh/smart/mar_smart_terrain_10_7.ltx
deleted file mode 100644
index 4f1f3cd7..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/marsh/smart/mar_smart_terrain_10_7.ltx
+++ /dev/null
@@ -1,23 +0,0 @@
-[smart_terrain] ;-- Disabled spawn
-squad_id = 3
-max_population = 1
-;respawn_params = respawn@mar_smart_terrain_10_7
-;respawn_only_smart = false
-;respawn_idle = 86400
-;respawn_radius = 50
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = nil
-;def_restr = nil
-;safe_restr = nil
-;spawn_point = nil
-
-;[respawn@mar_smart_terrain_10_7] ;-- Type:
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-;[exclusive]
-
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/marsh/smart/mar_smart_terrain_11_11.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/marsh/smart/mar_smart_terrain_11_11.ltx
deleted file mode 100644
index 46c3d41c..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/marsh/smart/mar_smart_terrain_11_11.ltx
+++ /dev/null
@@ -1,31 +0,0 @@
-[smart_terrain]
-squad_id = 4
-max_population = 2
-respawn_params = respawn@mar_smart_terrain_11_11
-respawn_only_smart = false
-respawn_idle = 172800
-respawn_radius = 50
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = nil
-;def_restr = nil
-;safe_restr = nil
-;spawn_point = nil
-
-faction_controlled = bandit, csky, army, renegade
-default_faction = renegade
-faction_respawn_num = 1
-
-;[respawn@mar_smart_terrain_11_11] ;-- Type:
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-[exclusive]
-mar_smart_terrain_11_11_camp_work_1 = marsh\mar_smart_terrain_11_11_smart_logic.ltx
-mar_smart_terrain_11_11_camp_work_2 = marsh\mar_smart_terrain_11_11_smart_logic.ltx
-mar_smart_terrain_11_11_camp_work_3 = marsh\mar_smart_terrain_11_11_smart_logic.ltx
-mar_smart_terrain_11_11_camp_work_4 = marsh\mar_smart_terrain_11_11_smart_logic.ltx
-mar_smart_terrain_11_11_camp_work_5 = marsh\mar_smart_terrain_11_11_smart_logic.ltx
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/marsh/smart/mar_smart_terrain_11_3.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/marsh/smart/mar_smart_terrain_11_3.ltx
deleted file mode 100644
index 2d408c12..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/marsh/smart/mar_smart_terrain_11_3.ltx
+++ /dev/null
@@ -1,23 +0,0 @@
-[smart_terrain] ;-- Disabled spawn
-squad_id = 5
-max_population = 1
-;respawn_params = respawn@mar_smart_terrain_11_3
-;respawn_only_smart = false
-;respawn_idle = 86400
-;respawn_radius = 50
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = nil
-;def_restr = nil
-;safe_restr = nil
-;spawn_point = nil0
-
-;[respawn@mar_smart_terrain_11_3] ;-- Type:
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-[exclusive]
-mar_smart_terrain_11_3_collector_work = marsh\mar_smart_terrain_11_3_smart_logic.ltx
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/marsh/smart/mar_smart_terrain_12_2.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/marsh/smart/mar_smart_terrain_12_2.ltx
deleted file mode 100644
index accd384e..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/marsh/smart/mar_smart_terrain_12_2.ltx
+++ /dev/null
@@ -1,36 +0,0 @@
-[smart_terrain]
-squad_id = 6
-max_population = 2
-respawn_params = respawn@mar_smart_terrain_12_2
-respawn_only_smart = false
-respawn_idle = 172800
-respawn_radius = 50
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = nil
-;def_restr = nil
-;safe_restr = nil
-;spawn_point = nil
-
-faction_controlled = stalker, bandit, csky, army, renegade
-default_faction = army
-faction_respawn_num = 1
-
-;[respawn@mar_smart_terrain_11_11] ;-- Type:
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-[exclusive]
-mar_smart_terrain_12_2_collector_work = marsh\mar_smart_terrain_12_2_smart_logic.ltx
-
-mar_smart_terrain_12_2_camp_work_1 = marsh\mar_smart_terrain_12_2_smart_logic.ltx
-mar_smart_terrain_12_2_camp_work_2 = marsh\mar_smart_terrain_12_2_smart_logic.ltx
-mar_smart_terrain_12_2_camp_work_3 = marsh\mar_smart_terrain_12_2_smart_logic.ltx
-mar_smart_terrain_12_2_camp_work_4 = marsh\mar_smart_terrain_12_2_smart_logic.ltx
-mar_smart_terrain_12_2_camp_work_5 = marsh\mar_smart_terrain_12_2_smart_logic.ltx
-mar_smart_terrain_12_2_camp_work_6 = marsh\mar_smart_terrain_12_2_smart_logic.ltx
-mar_smart_terrain_12_2_camp_work_7 = marsh\mar_smart_terrain_12_2_smart_logic.ltx
-mar_smart_terrain_12_2_camp_work_8 = marsh\mar_smart_terrain_12_2_smart_logic.ltx
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/marsh/smart/mar_smart_terrain_3_10.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/marsh/smart/mar_smart_terrain_3_10.ltx
deleted file mode 100644
index 771284f8..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/marsh/smart/mar_smart_terrain_3_10.ltx
+++ /dev/null
@@ -1,33 +0,0 @@
-[smart_terrain]
-squad_id = 7
-max_population = 1
-respawn_params = respawn@mar_smart_terrain_3_10
-respawn_only_smart = false
-respawn_idle = 86400
-respawn_radius = 50
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = nil
-;def_restr = nil
-;safe_restr = nil
-;spawn_point = nil
-
-[respawn@mar_smart_terrain_3_10] ;-- Type:
-spawn_all_weak_c_1_1
-spawn_all_normal_c_1_2
-
-
-[spawn_all_weak_c_1_1] ;-- Weak mutants - Rates of groups: ( 2 tushkano + 2 dogs + 2 cats )
-spawn_squads = simulation_tushkano, simulation_tushkano, simulation_dog, simulation_mix_dogs, simulation_cat, simulation_cat
-spawn_num = {!actor_week_in_zone(1)} 1, {=actor_week_in_zone(1)} 0
-
-[spawn_all_normal_c_1_2] ;-- Normal mutants - Rates of groups: (2 dogs + 3 fleshes/boars + 2 lurker)
-spawn_squads = simulation_mix_dogs, simulation_mix_dogs, simulation_mix_boar_flesh, simulation_flesh, simulation_boar, simulation_lurker, simulation_lurker_blue
-spawn_num = {=actor_week_in_zone(1)} 1, {!actor_week_in_zone(1)} 0
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-;[exclusive]
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/marsh/smart/mar_smart_terrain_3_3.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/marsh/smart/mar_smart_terrain_3_3.ltx
deleted file mode 100644
index 941d03b9..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/marsh/smart/mar_smart_terrain_3_3.ltx
+++ /dev/null
@@ -1,76 +0,0 @@
-[smart_terrain]
-squad_id = 8
-max_population = 2
-respawn_params = respawn@mar_smart_terrain_3_3
-respawn_only_smart = false
-respawn_idle = 43200
-respawn_radius = 100
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = nil
-;def_restr = nil
-;safe_restr = nil
-;spawn_point = nil
-
-[respawn@mar_smart_terrain_3_3] ;-- Type: faction {renegade\bandit} = faction camp\safezone
-spawn_renegade@novice_c_4_1
-spawn_renegade@novice_c_4_2
-spawn_renegade@veteran_c_4_1
-spawn_renegade@veteran_c_4_2
-spawn_renegade_special
-spawn_renegade_special_2
-spawn_deserted_base
-spawn_deserted_base_2
-
-
-[spawn_renegade@novice_c_4_1]
-spawn_squads = renegade_sim_squad_novice, renegade_sim_squad_novice, renegade_sim_squad_advanced
-spawn_num = {!actor_week_in_zone(1)} 1,{=actor_week_in_zone(1)} 0
-
-[spawn_renegade@novice_c_4_2]
-spawn_squads = renegade_sim_squad_novice, renegade_sim_squad_novice, renegade_sim_squad_advanced
-spawn_num = {=actor_week_in_zone(1)} 2,{!actor_week_in_zone(1)} 0
-
-[spawn_renegade@veteran_c_4_1]
-spawn_squads = renegade_sim_squad_veteran, renegade_sim_squad_advanced, renegade_sim_squad_advanced
-spawn_num = {!actor_week_in_zone(3) -mar_renegade_trader_dead -mar_renegade_mechanic_dead} 1,{=actor_week_in_zone(3) -mar_renegade_trader_dead -mar_renegade_mechanic_dead} 0, 0
-
-[spawn_renegade@veteran_c_4_2]
-spawn_squads = renegade_sim_squad_veteran, renegade_sim_squad_veteran, renegade_sim_squad_advanced
-spawn_num = {=actor_week_in_zone(3) -mar_renegade_trader_dead -mar_renegade_mechanic_dead} 3,{!actor_week_in_zone(3) -mar_renegade_trader_dead -mar_renegade_mechanic_dead} 0, 0
-
-[spawn_renegade_special]
-spawn_squads = mar_smart_terrain_3_3_renegade_squad
-spawn_num = {!squad_name_exist(mar_smart_terrain_3_3_renegade_squad) -mar_renegade_trader_dead -mar_renegade_mechanic_dead} 1, 0
-
-[spawn_renegade_special_2]
-spawn_squads = renegade_guard_mar_smart_terrain_3_3
-spawn_num = {!squad_name_exist(renegade_guard_mar_smart_terrain_3_3) -mar_renegade_trader_dead -mar_renegade_mechanic_dead} 1, 0
-
-
-[spawn_deserted_base]
-spawn_squads = mar_smart_terrain_3_3_csky_squad
-spawn_num = {!squad_name_exist(mar_smart_terrain_3_3_csky_squad) !squad_name_exist(mar_smart_terrain_3_3_army_squad) -csky_stalker_leader_dead +mar_renegade_trader_dead +mar_renegade_mechanic_dead} 1, 0
-
-[spawn_deserted_base_2]
-spawn_squads = mar_smart_terrain_3_3_army_squad
-spawn_num = {!squad_name_exist(mar_smart_terrain_3_3_csky_squad) !squad_name_exist(mar_smart_terrain_3_3_army_squad) -agr_military_colonel_kovalski_dead +mar_renegade_trader_dead +mar_renegade_mechanic_dead} 1, 0
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-[exclusive]
-mar_smart_terrain_3_3_trader_logic = marsh\mar_smart_terrain_3_3_smart_logic.ltx
-
-mar_smart_terrain_3_3_camp_work_1 = marsh\mar_smart_terrain_3_3_smart_logic.ltx
-mar_smart_terrain_3_3_camp_work_2 = marsh\mar_smart_terrain_3_3_smart_logic.ltx
-mar_smart_terrain_3_3_camp_work_3 = marsh\mar_smart_terrain_3_3_smart_logic.ltx
-mar_smart_terrain_3_3_camp_work_4 = marsh\mar_smart_terrain_3_3_smart_logic.ltx
-mar_smart_terrain_3_3_camp_work_5 = marsh\mar_smart_terrain_3_3_smart_logic.ltx
-
-mar_smart_terrain_3_3_guard_work_1 = marsh\mar_smart_terrain_3_3_smart_logic.ltx
-;mar_smart_terrain_3_3_guard_work_2 = marsh\mar_smart_terrain_3_3_smart_logic.ltx
-;mar_smart_terrain_3_3_guard_work_3 = marsh\mar_smart_terrain_3_3_smart_logic.ltx
-;mar_smart_terrain_3_3_guard_work_4 = marsh\mar_smart_terrain_3_3_smart_logic.ltx
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/marsh/smart/mar_smart_terrain_3_7.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/marsh/smart/mar_smart_terrain_3_7.ltx
deleted file mode 100644
index 654ff457..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/marsh/smart/mar_smart_terrain_3_7.ltx
+++ /dev/null
@@ -1,34 +0,0 @@
-[smart_terrain]
-squad_id = 9
-max_population = 1
-respawn_params = respawn@mar_smart_terrain_3_7
-respawn_only_smart = false
-respawn_idle = 86400
-respawn_radius = 50
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = nil
-;def_restr = nil
-;safe_restr = nil
-;spawn_point = nil
-
-[respawn@mar_smart_terrain_3_7] ;-- Type: c_1_1 + c_1_2 edited
-spawn_all_weak_c_1_1
-spawn_all_normal_c_1_2
-
-
-[spawn_all_weak_c_1_1] ;-- Normal mutants - Rates of groups: ( 2 dogs + 1 cats + 1 fleshes/boars )
-spawn_squads = simulation_dog, simulation_mix_dogs, simulation_cat, simulation_flesh, simulation_boar
-spawn_num = {!actor_week_in_zone(1)} 1, {=actor_week_in_zone(1)} 0
-
-[spawn_all_normal_c_1_2];-- Normal mutants - Rates of groups: ( 2 dogs + 1 pseudodog + 1 cats + 3 fleshes/boars )
-spawn_squads = simulation_mix_dogs, simulation_mix_dogs, simulation_pseudodog, simulation_cat, simulation_mix_boar_flesh, simulation_flesh, simulation_boar
-spawn_num = {=actor_week_in_zone(1)} 1, {!actor_week_in_zone(1)} 0
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-;[exclusive]
-
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/marsh/smart/mar_smart_terrain_4_5.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/marsh/smart/mar_smart_terrain_4_5.ltx
deleted file mode 100644
index e0e6d78b..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/marsh/smart/mar_smart_terrain_4_5.ltx
+++ /dev/null
@@ -1,76 +0,0 @@
-[smart_terrain]
-squad_id = 10
-max_population = 2
-respawn_params = respawn@mar_smart_terrain_4_5
-respawn_only_smart = false
-respawn_idle = 43200
-respawn_radius = 100
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = nil
-;def_restr = nil
-;safe_restr = nil
-;spawn_point = nil
-
-[respawn@mar_smart_terrain_4_5] Type: faction {renegade} = guardpost
-spawn_renegade@novice_c_4_1
-spawn_renegade@novice_c_4_2
-spawn_renegade@advanced_c_4_1
-spawn_renegade@advanced_c_4_2
-spawn_renegade_special
-spawn_renegade_special_2
-spawn_deserted_base
-spawn_deserted_base_2
-
-
-[spawn_renegade@novice_c_4_1]
-spawn_squads = renegade_sim_squad_novice, renegade_sim_squad_novice, renegade_sim_squad_advanced
-spawn_num = {!actor_week_in_zone(1)} 1,{=actor_week_in_zone(1)} 0
-
-[spawn_renegade@novice_c_4_2]
-spawn_squads = renegade_sim_squad_novice, renegade_sim_squad_novice, renegade_sim_squad_advanced
-spawn_num = {=actor_week_in_zone(1)} 2,{!actor_week_in_zone(1)} 0
-
-[spawn_renegade@advanced_c_4_1]
-spawn_squads = renegade_sim_squad_advanced, renegade_sim_squad_advanced, renegade_sim_squad_novice
-spawn_num = {!actor_week_in_zone(2) -mar_renegade_trader_dead -mar_renegade_mechanic_dead} 1,{=actor_week_in_zone(2) -mar_renegade_trader_dead -mar_renegade_mechanic_dead} 0, 0
-
-[spawn_renegade@advanced_c_4_2]
-spawn_squads = renegade_sim_squad_advanced, renegade_sim_squad_advanced, renegade_sim_squad_novice
-spawn_num = {=actor_week_in_zone(2) -mar_renegade_trader_dead -mar_renegade_mechanic_dead} 2,{!actor_week_in_zone(2) -mar_renegade_trader_dead -mar_renegade_mechanic_dead} 0, 0
-
-[spawn_renegade_special]
-spawn_squads = mar_smart_terrain_4_5_renegade_squad
-spawn_num = {!squad_name_exist(mar_smart_terrain_4_5_renegade_squad) -mar_renegade_trader_dead -mar_renegade_mechanic_dead} 1, 0
-
-[spawn_renegade_special_2]
-spawn_squads = mar_renegade_guard_patrol_squad
-spawn_num = {!squad_name_exist(mar_renegade_guard_patrol_squad) -mar_renegade_trader_dead -mar_renegade_mechanic_dead} 1, 0
-
-
-[spawn_deserted_base]
-spawn_squads = mar_smart_terrain_4_5_csky_squad
-spawn_num = {=squad_name_exist(mar_smart_terrain_3_3_csky_squad) !squad_name_exist(mar_smart_terrain_4_5_csky_squad) -csky_stalker_leader_dead +mar_renegade_trader_dead +mar_renegade_mechanic_dead} 1, 0
-
-[spawn_deserted_base_2]
-spawn_squads = mar_smart_terrain_4_5_army_squad
-spawn_num = {=squad_name_exist(mar_smart_terrain_3_3_army_squad) !squad_name_exist(mar_smart_terrain_4_5_army_squad) -agr_military_colonel_kovalski_dead +mar_renegade_trader_dead +mar_renegade_mechanic_dead} 1, 0
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-[exclusive]
-mar_smart_terrain_4_5_mechanic_logic = marsh\mar_smart_terrain_4_5_smart_logic.ltx
-
-mar_smart_terrain_4_5_camp_work_1 = marsh\mar_smart_terrain_4_5_smart_logic.ltx
-mar_smart_terrain_4_5_camp_work_2 = marsh\mar_smart_terrain_4_5_smart_logic.ltx
-mar_smart_terrain_4_5_camp_work_3 = marsh\mar_smart_terrain_4_5_smart_logic.ltx
-mar_smart_terrain_4_5_camp_work_4 = marsh\mar_smart_terrain_4_5_smart_logic.ltx
-mar_smart_terrain_4_5_camp_work_5 = marsh\mar_smart_terrain_4_5_smart_logic.ltx
-
-mar_smart_terrain_4_5_guard_work_1 = marsh\mar_smart_terrain_4_5_smart_logic.ltx
-mar_smart_terrain_4_5_guard_work_2 = marsh\mar_smart_terrain_4_5_smart_logic.ltx
-mar_smart_terrain_4_5_guard_work_3 = marsh\mar_smart_terrain_4_5_smart_logic.ltx
-;mar_smart_terrain_3_3_guard_work_4 = marsh\mar_smart_terrain_4_5_smart_logic.ltx
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/marsh/smart/mar_smart_terrain_4_7.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/marsh/smart/mar_smart_terrain_4_7.ltx
deleted file mode 100644
index 6b626778..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/marsh/smart/mar_smart_terrain_4_7.ltx
+++ /dev/null
@@ -1,33 +0,0 @@
-[smart_terrain]
-squad_id = 11
-max_population = 1
-respawn_params = respawn@mar_smart_terrain_4_7
-respawn_only_smart = false
-respawn_idle = 86400
-respawn_radius = 50
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = nil
-;def_restr = nil
-;safe_restr = nil
-;spawn_point = nil
-
-[respawn@mar_smart_terrain_4_7] ;-- Type: c_1_1 + c_1_2 edited
-spawn_all_weak_c_1_1
-spawn_all_normal_c_1_2
-
-
-[spawn_all_weak_c_1_1] ;-- Weak mutants - Rates of groups: ( 2 tushkano + 2 dogs + 2 cats )
-spawn_squads = simulation_tushkano, simulation_tushkano, simulation_dog, simulation_mix_dogs, simulation_cat, simulation_cat
-spawn_num = {!actor_week_in_zone(1)} 1, {=actor_week_in_zone(1)} 0
-
-[spawn_all_normal_c_1_2] ;-- Normal mutants - Rates of groups: (2 dogs + 3 fleshes/boars + 2 lurker)
-spawn_squads = simulation_mix_dogs, simulation_mix_dogs, simulation_mix_boar_flesh, simulation_flesh, simulation_boar, simulation_lurker, simulation_lurker_blue
-spawn_num = {=actor_week_in_zone(1)} 1, {!actor_week_in_zone(1)} 0
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-;[exclusive]
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/marsh/smart/mar_smart_terrain_5_12.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/marsh/smart/mar_smart_terrain_5_12.ltx
deleted file mode 100644
index 247643dc..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/marsh/smart/mar_smart_terrain_5_12.ltx
+++ /dev/null
@@ -1,56 +0,0 @@
-[smart_terrain]
-squad_id = 12
-max_population = 2
-respawn_params = respawn@mar_smart_terrain_5_12
-respawn_only_smart = false
-respawn_idle = 86400
-respawn_radius = 100
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = nil
-;def_restr = nil
-;safe_restr = nil
-;spawn_point = nil
-
-[respawn@mar_smart_terrain_5_12] ;-- Type: faction {csky} = guard camp
-spawn_csky@advanced
-spawn_deserted_base
-spawn_deserted_base_2
-
-[spawn_csky@advanced]
-spawn_squads = csky_sim_squad_advanced, csky_sim_squad_advanced, csky_sim_squad_novice
-spawn_num = {-csky_stalker_leader_dead} 0, 2
-
-
-[spawn_deserted_base]
-spawn_squads = camp_army_mar_smart_terrain_5_12
-spawn_num = {=squad_name_exist(mar_smart_terrain_base_army_squad) !squad_name_exist(camp_army_mar_smart_terrain_5_12) -agr_military_colonel_kovalski_dead +csky_stalker_leader_dead} 1, 0
-
-[spawn_deserted_base_2]
-spawn_squads = camp_renegade_mar_smart_terrain_5_12
-spawn_num = {=squad_name_exist(mar_smart_terrain_base_renegade_squad) !squad_name_exist(camp_renegade_mar_smart_terrain_5_12) -mar_renegade_trader_dead +csky_stalker_leader_dead} 1, 0
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-[exclusive]
-mar_smart_terrain_5_12_camp_work_1 = marsh\mar_smart_terrain_5_12_smart_logic.ltx
-mar_smart_terrain_5_12_camp_work_2 = marsh\mar_smart_terrain_5_12_smart_logic.ltx
-mar_smart_terrain_5_12_camp_work_3 = marsh\mar_smart_terrain_5_12_smart_logic.ltx
-mar_smart_terrain_5_12_camp_work_4 = marsh\mar_smart_terrain_5_12_smart_logic.ltx
-mar_smart_terrain_5_12_camp_work_5 = marsh\mar_smart_terrain_5_12_smart_logic.ltx
-
-mar_smart_terrain_5_12_surge_work_1 = marsh\mar_smart_terrain_5_12_smart_logic.ltx
-mar_smart_terrain_5_12_surge_work_2 = marsh\mar_smart_terrain_5_12_smart_logic.ltx
-mar_smart_terrain_5_12_surge_work_3 = marsh\mar_smart_terrain_5_12_smart_logic.ltx
-mar_smart_terrain_5_12_surge_work_4 = marsh\mar_smart_terrain_5_12_smart_logic.ltx
-mar_smart_terrain_5_12_surge_work_5 = marsh\mar_smart_terrain_5_12_smart_logic.ltx
-mar_smart_terrain_5_12_surge_work_6 = marsh\mar_smart_terrain_5_12_smart_logic.ltx
-mar_smart_terrain_5_12_surge_work_7 = marsh\mar_smart_terrain_5_12_smart_logic.ltx
-mar_smart_terrain_5_12_surge_work_8 = marsh\mar_smart_terrain_5_12_smart_logic.ltx
-
-faction_base_defense_enemy1 = marsh\mar_smart_terrain_5_12_smart_logic.ltx
-faction_base_defense_enemy2 = marsh\mar_smart_terrain_5_12_smart_logic.ltx
-faction_base_defense_enemy3 = marsh\mar_smart_terrain_5_12_smart_logic.ltx
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/marsh/smart/mar_smart_terrain_5_8.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/marsh/smart/mar_smart_terrain_5_8.ltx
deleted file mode 100644
index 7d3fc755..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/marsh/smart/mar_smart_terrain_5_8.ltx
+++ /dev/null
@@ -1,26 +0,0 @@
-[smart_terrain]
-squad_id = 13
-max_population = 2
-respawn_params = respawn@mar_smart_terrain_5_8
-respawn_only_smart = false
-respawn_idle = 86400
-respawn_radius = 50
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = nil
-;def_restr = nil
-;safe_restr = nil
-;spawn_point = nil
-
-faction_controlled = bandit, csky, ecolog, renegade
-default_faction = csky
-faction_respawn_num = 1
-
-;[respawn@mar_smart_terrain_5_8] ;-- Type: faction {csky} = outpost
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-;[exclusive]
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/marsh/smart/mar_smart_terrain_6_10.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/marsh/smart/mar_smart_terrain_6_10.ltx
deleted file mode 100644
index f68d6560..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/marsh/smart/mar_smart_terrain_6_10.ltx
+++ /dev/null
@@ -1,23 +0,0 @@
-[smart_terrain] ;-- Disabled spawn
-squad_id = 14
-;max_population = 1
-;respawn_params = respawn@mar_smart_terrain_6_10
-;respawn_only_smart = false
-;respawn_idle = 86400
-;respawn_radius = 50
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = nil
-;def_restr = nil
-;safe_restr = nil
-;spawn_point = nil
-
-;[respawn@mar_smart_terrain_6_10] ;-- Type:
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-;[exclusive]
-
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/marsh/smart/mar_smart_terrain_6_11.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/marsh/smart/mar_smart_terrain_6_11.ltx
deleted file mode 100644
index b970fd72..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/marsh/smart/mar_smart_terrain_6_11.ltx
+++ /dev/null
@@ -1,40 +0,0 @@
-[smart_terrain]
-squad_id = 15
-max_population = 2
-respawn_params = respawn@mar_smart_terrain_6_11
-respawn_only_smart = false
-respawn_idle = 43200
-respawn_radius = 100
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = nil
-;def_restr = nil
-;safe_restr = nil
-;spawn_point = nil
-
-[respawn@mar_smart_terrain_6_11] ;-- Type: faction {csky} = guard tower
-spawn_csky_special
-spawn_deserted_base
-spawn_deserted_base_2
-
-
-[spawn_csky_special]
-spawn_squads = tower_csky_mar_smart_terrain_6_11
-spawn_num = {!squad_exist(tower_csky_mar_smart_terrain_6_11) -csky_stalker_leader_dead} 1, 0
-
-
-[spawn_deserted_base]
-spawn_squads = tower_army_mar_smart_terrain_6_11
-spawn_num = {=squad_name_exist(mar_smart_terrain_base_army_squad) !squad_name_exist(tower_army_mar_smart_terrain_6_11) -agr_military_colonel_kovalski_dead +csky_stalker_leader_dead} 1, 0
-
-[spawn_deserted_base_2]
-spawn_squads = tower_renegade_mar_smart_terrain_6_11
-spawn_num = {=squad_name_exist(mar_smart_terrain_base_renegade_squad) !squad_name_exist(tower_renegade_mar_smart_terrain_6_11) -mar_renegade_trader_dead +csky_stalker_leader_dead} 1, 0
-
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-;[exclusive]
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/marsh/smart/mar_smart_terrain_6_4.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/marsh/smart/mar_smart_terrain_6_4.ltx
deleted file mode 100644
index 302d1261..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/marsh/smart/mar_smart_terrain_6_4.ltx
+++ /dev/null
@@ -1,22 +0,0 @@
-[smart_terrain] ;-- Disabled spawn
-squad_id = 16
-;max_population = 1
-;respawn_params = respawn@mar_smart_terrain_4_5
-;respawn_only_smart = false
-;respawn_idle = 86400
-;respawn_radius = 50
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = nil
-;def_restr = nil
-;safe_restr = nil
-;spawn_point = nil
-
-;[respawn@mar_smart_terrain_4_5] ;-- Type:
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-;[exclusive]
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/marsh/smart/mar_smart_terrain_6_7.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/marsh/smart/mar_smart_terrain_6_7.ltx
deleted file mode 100644
index 5f0bafc4..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/marsh/smart/mar_smart_terrain_6_7.ltx
+++ /dev/null
@@ -1,33 +0,0 @@
-[smart_terrain]
-squad_id = 16
-max_population = 1
-respawn_params = respawn@mar_smart_terrain_6_7
-respawn_only_smart = false
-respawn_idle = 86400
-respawn_radius = 50
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = nil
-;def_restr = nil
-;safe_restr = nil
-;spawn_point = nil
-
-[respawn@mar_smart_terrain_6_7] ;-- Type: c_1_1 + c_1_2 edited
-spawn_all_weak_c_1_1
-spawn_all_normal_c_1_2
-
-
-[spawn_all_weak_c_1_1] ;-- Normal mutants - Rates of groups: ( 1 tushkano + 2 dogs + 1 pseudodog + 1 cats )
-spawn_squads = simulation_tushkano, simulation_dog, simulation_mix_dogs, simulation_pseudodog, simulation_cat
-spawn_num = {!actor_week_in_zone(1)} 1, {=actor_week_in_zone(1)} 0
-
-[spawn_all_normal_c_1_2];-- Normal mutants - Rates of groups: ( 1 tushkano + 2 dogs + 1 pseudodog + 1 cats )
-spawn_squads = simulation_tushkano, simulation_dog_5_7, simulation_mix_dogs, simulation_pseudodog, simulation_cat_3_5
-spawn_num = {=actor_week_in_zone(1)} 2, {!actor_week_in_zone(1)} 0
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-;[exclusive]
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/marsh/smart/mar_smart_terrain_6_8.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/marsh/smart/mar_smart_terrain_6_8.ltx
deleted file mode 100644
index b586c0e2..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/marsh/smart/mar_smart_terrain_6_8.ltx
+++ /dev/null
@@ -1,38 +0,0 @@
-[smart_terrain]
-squad_id = 18
-max_population = 1
-respawn_params = respawn@mar_smart_terrain_6_8
-respawn_only_smart = false
-respawn_idle = 172800
-respawn_radius = 50
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = nil
-;def_restr = nil
-;safe_restr = nil
-;spawn_point = nil
-
-[respawn@mar_smart_terrain_6_8] ;-- Type: c_1_1 + c_1_2 edited
-spawn_all_weak_c_1_1
-spawn_all_normal_c_1_2
-
-
-[spawn_all_weak_c_1_1] ;-- Normal mutants - Rates of groups: ( 2 dogs + 1 cats )
-spawn_squads = simulation_dog, simulation_mix_dogs, simulation_cat
-spawn_num = {!actor_week_in_zone(1)} 1, {=actor_week_in_zone(1)} 0
-
-[spawn_all_normal_c_1_2];-- Normal mutants - Rates of groups: ( 2 dogs + 1 pseudodog + 1 cats )
-spawn_squads = simulation_mix_dogs, simulation_mix_dogs, simulation_pseudodog, simulation_cat
-spawn_num = {=actor_week_in_zone(1)} 1, {!actor_week_in_zone(1)} 0
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-;[exclusive]
-
-
-
-
-
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/marsh/smart/mar_smart_terrain_7_3.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/marsh/smart/mar_smart_terrain_7_3.ltx
deleted file mode 100644
index 4d978088..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/marsh/smart/mar_smart_terrain_7_3.ltx
+++ /dev/null
@@ -1,33 +0,0 @@
-[smart_terrain]
-squad_id = 19
-max_population = 2
-respawn_params = respawn@mar_smart_terrain_7_3
-respawn_only_smart = false
-respawn_idle = 259200
-respawn_radius = 50
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = nil
-;def_restr = nil
-;safe_restr = nil
-;spawn_point = nil
-
-[respawn@mar_smart_terrain_7_3] ;-- Type:
-spawn_renegade_special
-;spawn_predatory@squad
-
-
-[spawn_renegade_special]
-spawn_squads = na_agro_renegade_mar_smart_terrain_7_3
-spawn_num = {!squad_exist(na_agro_renegade_mar_smart_terrain_7_3) -mar_renegade_trader_dead -mar_renegade_mechanic_dead} 1, 0
-
-;[spawn_predatory@squad] ;-- Hard mutants - Rates of groups: ( 1 bloodsucker )
-;spawn_squads = na_agro_blood_mar_smart_terrain_7_3
-;spawn_num = {!squad_exist(na_agro_blood_mar_smart_terrain_7_3)} 1, 0
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-;[exclusive]
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/marsh/smart/mar_smart_terrain_7_7.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/marsh/smart/mar_smart_terrain_7_7.ltx
deleted file mode 100644
index bb520dcf..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/marsh/smart/mar_smart_terrain_7_7.ltx
+++ /dev/null
@@ -1,32 +0,0 @@
-[smart_terrain]
-squad_id = 20
-max_population = 1
-respawn_params = respawn@mar_smart_terrain_7_7
-respawn_only_smart = false
-respawn_idle = 43200
-respawn_radius = 50
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = nil
-;def_restr = nil
-;safe_restr = nil
-;spawn_point = nil
-
-[respawn@mar_smart_terrain_7_7] ;-- Type:
-spawn_flesh_boar
-spawn_dogs
-
-[spawn_flesh_boar] ;-- Normal mutants - Rates of groups:( 2 dogs + 3 fleshes/boars )
-spawn_squads = simulation_boar_3_5, simulation_mix_boar_flesh, simulation_flesh, simulation_boar
-spawn_num = 1
-
-[spawn_dogs] ;-- Normal mutants - Rates of groups:( 2 dogs )
-spawn_squads = simulation_dog, simulation_dog_5_7
-spawn_num = {~50} 1, 0
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-;[exclusive]
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/marsh/smart/mar_smart_terrain_8_11.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/marsh/smart/mar_smart_terrain_8_11.ltx
deleted file mode 100644
index b402a156..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/marsh/smart/mar_smart_terrain_8_11.ltx
+++ /dev/null
@@ -1,38 +0,0 @@
-[smart_terrain]
-squad_id = 21
-max_population = 2
-respawn_params = respawn@mar_smart_terrain_8_11
-respawn_only_smart = false
-respawn_idle = 172800
-respawn_radius = 50
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = nil
-;def_restr = nil
-;safe_restr = nil
-;spawn_point = nil
-
-faction_controlled = csky, ecolog
-default_faction = ecolog
-faction_respawn_num = 1
-
-;[respawn@mar_smart_terrain_8_11] ;-- Type: faction {ecolog} = campsite
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-[exclusive]
-mar_smart_terrain_8_11_camp_work_1 = marsh\mar_smart_terrain_8_11_smart_logic.ltx
-mar_smart_terrain_8_11_camp_work_2 = marsh\mar_smart_terrain_8_11_smart_logic.ltx
-mar_smart_terrain_8_11_camp_work_3 = marsh\mar_smart_terrain_8_11_smart_logic.ltx
-mar_smart_terrain_8_11_camp_work_4 = marsh\mar_smart_terrain_8_11_smart_logic.ltx
-
-mar_smart_terrain_8_11_surge_work_1 = marsh\mar_smart_terrain_8_11_smart_logic.ltx
-mar_smart_terrain_8_11_surge_work_2 = marsh\mar_smart_terrain_8_11_smart_logic.ltx
-mar_smart_terrain_8_11_surge_work_3 = marsh\mar_smart_terrain_8_11_smart_logic.ltx
-mar_smart_terrain_8_11_surge_work_4 = marsh\mar_smart_terrain_8_11_smart_logic.ltx
-mar_smart_terrain_8_11_surge_work_5 = marsh\mar_smart_terrain_8_11_smart_logic.ltx
-mar_smart_terrain_8_11_surge_work_6 = marsh\mar_smart_terrain_8_11_smart_logic.ltx
-mar_smart_terrain_8_11_surge_work_7 = marsh\mar_smart_terrain_8_11_smart_logic.ltx
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/marsh/smart/mar_smart_terrain_8_4.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/marsh/smart/mar_smart_terrain_8_4.ltx
deleted file mode 100644
index 59f3d21c..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/marsh/smart/mar_smart_terrain_8_4.ltx
+++ /dev/null
@@ -1,28 +0,0 @@
-[smart_terrain]
-squad_id = 22
-max_population = 1
-respawn_params = respawn@mar_smart_terrain_8_4
-respawn_only_smart = false
-respawn_idle = 172800
-respawn_radius = 50
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = nil
-;def_restr = nil
-;safe_restr = nil
-;spawn_point = nil
-
-[respawn@mar_smart_terrain_8_4] ;-- Type:
-spawn_lurker
-
-
-[spawn_lurker] ;-- Hard mutants - Rates of groups: ( 2 lurker )
-spawn_squads = simulation_lurker, simulation_lurker_blue
-spawn_num = {~50} 1, 0
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-;[exclusive]
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/marsh/smart/mar_smart_terrain_8_8.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/marsh/smart/mar_smart_terrain_8_8.ltx
deleted file mode 100644
index 215a55f7..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/marsh/smart/mar_smart_terrain_8_8.ltx
+++ /dev/null
@@ -1,23 +0,0 @@
-[smart_terrain] ;-- Disabled spawn
-squad_id = 23
-max_population = 1
-;respawn_params = respawn@mar_smart_terrain_8_8
-;respawn_only_smart = false
-;respawn_idle = 86400
-;respawn_radius = 50
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = nil
-;def_restr = nil
-;safe_restr = nil
-;spawn_point = nil
-
-;[respawn@mar_smart_terrain_8_8] ;-- Type:
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-[exclusive]
-mar_smart_terrain_8_8_collector_work = marsh\mar_smart_terrain_8_8_smart_logic
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/marsh/smart/mar_smart_terrain_8_9.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/marsh/smart/mar_smart_terrain_8_9.ltx
deleted file mode 100644
index 229d88e0..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/marsh/smart/mar_smart_terrain_8_9.ltx
+++ /dev/null
@@ -1,33 +0,0 @@
-[smart_terrain]
-squad_id = 24
-max_population = 2
-respawn_params = respawn@mar_smart_terrain_8_9
-respawn_only_smart = false
-respawn_idle = 345600
-respawn_radius = 50
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = nil
-;def_restr = nil
-;safe_restr = nil
-;spawn_point = nil
-
-[respawn@mar_smart_terrain_8_9] ;-- Type:
-spawn_heli_strong
-spawn_heli_weak
-
-
-[spawn_heli_strong]
-spawn_helicopter = simulation_helicopter_strong
-spawn_num = {!down_to_earth_functor !heli_exist_on_level} 1, 0
-
-[spawn_heli_weak]
-spawn_helicopter = simulation_helicopter_weak
-spawn_num = {=down_to_earth_functor !heli_exist_on_level} 1, 0
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-;[exclusive]
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/marsh/smart/mar_smart_terrain_base.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/marsh/smart/mar_smart_terrain_base.ltx
deleted file mode 100644
index 91e1ae71..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/marsh/smart/mar_smart_terrain_base.ltx
+++ /dev/null
@@ -1,92 +0,0 @@
-[smart_terrain]
-squad_id = 25
-max_population = 4
-respawn_params = respawn@mar_smart_terrain_base
-respawn_only_smart = false
-respawn_idle = 43200
-respawn_radius = 100
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = nil
-;def_restr = nil
-;safe_restr = mar_smart_terrain_base_sr_no_assault
-;spawn_point = nil
-
-[respawn@mar_smart_terrain_base] ;-- Type: faction {csky\stalker} = faction base\safezone
-spawn_csky@novice
-spawn_csky@advanced
-spawn_csky@veteran
-spawn_csky_special
-spawn_deserted_base
-spawn_deserted_base_2
-
-
-[spawn_csky@novice]
-spawn_squads = csky_sim_squad_novice, csky_sim_squad_novice, csky_sim_squad_advanced
-spawn_num = {+csky_stalker_leader_dead} 0, 4
-
-[spawn_csky@advanced]
-spawn_squads = csky_sim_squad_advanced, csky_sim_squad_advanced, csky_sim_squad_novice
-spawn_num = {+csky_stalker_leader_dead} 0, 2
-
-[spawn_csky@veteran]
-spawn_squads = csky_sim_squad_veteran, csky_sim_squad_advanced, csky_sim_squad_advanced
-spawn_num = {+csky_stalker_leader_dead} 0, 2
-
-[spawn_csky_special]
-spawn_squads = mar_smart_terrain_base_lager_squad
-spawn_num = {!squad_name_exist(mar_smart_terrain_base_lager_squad) -csky_stalker_leader_dead} 1, 0
-
-
-[spawn_deserted_base]
-spawn_squads = mar_smart_terrain_base_army_squad
-spawn_num = {!squad_name_exist(mar_smart_terrain_base_army_squad) !squad_name_exist(mar_smart_terrain_base_renegade_squad) -agr_military_colonel_kovalski_dead +csky_stalker_leader_dead} 1, 0
-
-[spawn_deserted_base_2]
-spawn_squads = mar_smart_terrain_base_renegade_squad
-spawn_num = {!squad_name_exist(mar_smart_terrain_base_army_squad) !squad_name_exist(mar_smart_terrain_base_renegade_squad) -mar_renegade_trader_dead +csky_stalker_leader_dead} 1, 0
-
-
-:[on_changing_level]
-
-;[smart_control]
-
-[exclusive]
-mar_base_stalker_barmen = marsh\mar_base_stalker_barmen.ltx
-mar_base_owl_stalker_trader = marsh\mar_base_owl_stalker_trader.ltx
-mar_base_stalker_tech = marsh\mar_base_stalker_tech.ltx
-
-guid_marsh_mlr = marsh\guid_marsh_mlr.ltx
-dog_doctor = marsh\mar_smart_terrain_base_dog_doctor.ltx
-marsh_doctor = marsh\mar_smart_terrain_base_doctor.ltx
-real_marsh_doctor = marsh\mar_smart_terrain_base_real_marsh_doctor.ltx
-mar_smart_terrain_base_stalker_guide_marsh = marsh\mar_smart_terrain_base_stalker_guide_marsh.ltx
-
-guard_1 = marsh\mar_smart_terrain_base_smart_logic.ltx
-guard_2 = marsh\mar_smart_terrain_base_smart_logic.ltx
-
-mar_smart_terrain_base_beh_trade_job_1 = marsh\mar_base_owl_stalker_trader.ltx
-mar_smart_terrain_base_beh_tech_job_1 = marsh\mar_base_stalker_tech.ltx
-
-mar_base_animpoint_kamp1 = marsh\mar_smart_terrain_base_smart_logic.ltx
-mar_base_animpoint_kamp2 = marsh\mar_smart_terrain_base_smart_logic.ltx
-mar_base_animpoint_kamp3 = marsh\mar_smart_terrain_base_smart_logic.ltx
-mar_base_animpoint_kamp4 = marsh\mar_smart_terrain_base_smart_logic.ltx
-mar_base_animpoint_kamp5 = marsh\mar_smart_terrain_base_smart_logic.ltx
-mar_base_animpoint_kamp6 = marsh\mar_smart_terrain_base_smart_logic.ltx
-mar_base_animpoint_kamp7 = marsh\mar_smart_terrain_base_smart_logic.ltx
-mar_base_animpoint_kamp8 = marsh\mar_smart_terrain_base_smart_logic.ltx
-mar_base_animpoint_kamp9 = marsh\mar_smart_terrain_base_smart_logic.ltx
-mar_base_animpoint_kamp10 = marsh\mar_smart_terrain_base_smart_logic.ltx
-mar_base_animpoint_kamp11 = marsh\mar_smart_terrain_base_smart_logic.ltx
-
-mar_smart_terrain_base_surge_work_1 = marsh\mar_smart_terrain_base_smart_logic.ltx
-mar_smart_terrain_base_surge_work_2 = marsh\mar_smart_terrain_base_smart_logic.ltx
-mar_smart_terrain_base_surge_work_3 = marsh\mar_smart_terrain_base_smart_logic.ltx
-mar_smart_terrain_base_surge_work_4 = marsh\mar_smart_terrain_base_smart_logic.ltx
-mar_smart_terrain_base_surge_work_5 = marsh\mar_smart_terrain_base_smart_logic.ltx
-mar_smart_terrain_base_surge_work_6 = marsh\mar_smart_terrain_base_smart_logic.ltx
-
-faction_base_defense_enemy1 = marsh\mar_smart_terrain_base_smart_logic.ltx
-faction_base_defense_enemy2 = marsh\mar_smart_terrain_base_smart_logic.ltx
-faction_base_defense_enemy3 = marsh\mar_smart_terrain_base_smart_logic.ltx
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/military/mil_endless_night_spawn_logic_1.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/military/mil_endless_night_spawn_logic_1.ltx
deleted file mode 100644
index fd95fce0..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/military/mil_endless_night_spawn_logic_1.ltx
+++ /dev/null
@@ -1,30 +0,0 @@
-[logic]
-active = ph_idle@wait_actor
-
-[ph_idle@wait_actor]
-on_info = {=actor_near_smart(mil_smart_terrain_2_1) =is_night} ph_idle@spawn_night_monster_1, {=actor_near_smart(mil_smart_terrain_2_1) =is_dark_night} ph_idle@spawn_dark_monster_1
-on_info2 = {=actor_near_smart(mil_smart_terrain_4_3) =is_night} ph_idle@spawn_night_monster_2, {=actor_near_smart(mil_smart_terrain_4_3) =is_dark_night} ph_idle@spawn_dark_monster_2
-
-[ph_idle@spawn_night_monster_1]
-on_info = {~10} %=create_squad(simulation_mix_zombie_night:mil_smart_terrain_2_1)% ph_idle@reset, {~10} %=create_squad(simulation_snork_night:mil_smart_terrain_2_1)% ph_idle@reset, {~10} %=create_squad(simulation_tushkano_night:mil_smart_terrain_2_1)% ph_idle@reset, {~10} %=create_squad(simulation_bloodsucker_red_night:mil_smart_terrain_2_1)% ph_idle@reset, ph_idle@wait_reset
-
-[ph_idle@spawn_dark_monster_1]
-on_info = {~10} %=create_squad(simulation_zombie_blind_3zomb_civ_night:mil_smart_terrain_2_1)% ph_idle@reset, {~10} %=create_squad(simulation_fracture_night:mil_smart_terrain_2_1)% ph_idle@reset, {~10} %=create_squad(simulation_chimera_night:mil_smart_terrain_2_1)% ph_idle@reset, {~10} %=create_squad(simulation_bloodsucker_red_night:mil_smart_terrain_2_1)% ph_idle@reset, ph_idle@wait_reset
-
-[ph_idle@reset]
-on_game_timer = 86400 | ph_idle@wait_actor
-
-[ph_idle@spawn_night_monster_2]
-on_info = {~10} %=create_squad(simulation_snork_night:mil_smart_terrain_4_3)% ph_idle@reset_2, {~10} %=create_squad(simulation_fracture_night:mil_smart_terrain_4_3)% ph_idle@reset_2, {~10} %=create_squad(simulation_psysucker_brown_night:mil_smart_terrain_4_3)% ph_idle@reset_2, {~10} %=create_squad(simulation_bloodsucker_red_night:mil_smart_terrain_4_3)% ph_idle@reset_2, ph_idle@wait_reset
-
-[ph_idle@spawn_dark_monster_2]
-on_info = {~10} %=create_squad(simulation_snork_2_5_night:mil_smart_terrain_4_3)% ph_idle@reset_2, {~10} %=create_squad(simulation_chimera_night:mil_smart_terrain_4_3)% ph_idle@reset_2, {~10} %=create_squad(simulation_psysucker_brown_night:mil_smart_terrain_4_3)% ph_idle@reset_2, {~10} %=create_squad(simulation_bloodsucker_red_night:mil_smart_terrain_4_3)% ph_idle@reset_2, ph_idle@wait_reset
-
-[ph_idle@reset_2]
-on_game_timer = 86400 | ph_idle@wait_actor
-
-[ph_idle@wait_reset]
-on_game_timer = 580 | ph_idle@wait_actor
-
-[collide]
-ignore_static
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/military/mil_endless_night_spawn_logic_2.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/military/mil_endless_night_spawn_logic_2.ltx
deleted file mode 100644
index a45384ae..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/military/mil_endless_night_spawn_logic_2.ltx
+++ /dev/null
@@ -1,30 +0,0 @@
-[logic]
-active = ph_idle@wait_actor
-
-[ph_idle@wait_actor]
-on_info = {=actor_near_smart(mil_smart_terrain_2_6) =is_night} ph_idle@spawn_night_monster_1, {=actor_near_smart(mil_smart_terrain_2_6) =is_dark_night} ph_idle@spawn_dark_monster_1
-on_info2 = {=actor_near_smart(mil_smart_terrain_4_7) =is_night} ph_idle@spawn_night_monster_2, {=actor_near_smart(mil_smart_terrain_4_7) =is_dark_night} ph_idle@spawn_dark_monster_2
-
-[ph_idle@spawn_night_monster_1]
-on_info = {~10} %=create_squad(simulation_pseudodog_night:mil_smart_terrain_2_6)% ph_idle@reset, {~10} %=create_squad(simulation_dog_night:mil_smart_terrain_2_6)% ph_idle@reset, {~10} %=create_squad(simulation_karlik_night:mil_smart_terrain_2_6)% ph_idle@reset, {~10} %=create_squad(simulation_poltergeist_black_night:mil_smart_terrain_2_6)% ph_idle@reset, ph_idle@wait_reset
-
-[ph_idle@spawn_dark_monster_1]
-on_info = {~10} %=create_squad(simulation_psysucker_night:mil_smart_terrain_2_6)% ph_idle@reset, {~10} %=create_squad(simulation_bloodsucker_night:mil_smart_terrain_2_6)% ph_idle@reset, {~10} %=create_squad(simulation_snork_2_5_night:mil_smart_terrain_2_6)% ph_idle@reset, {~10} %=create_squad(simulation_poltergeist_black_night:mil_smart_terrain_2_6)% ph_idle@reset, ph_idle@wait_reset
-
-[ph_idle@reset]
-on_game_timer = 86400 | ph_idle@wait_actor
-
-[ph_idle@spawn_night_monster_2]
-on_info = {~10} %=create_squad(simulation_tushkano_night:mil_smart_terrain_4_7)% ph_idle@reset_2, {~10} %=create_squad(simulation_fracture_night:mil_smart_terrain_4_7)% ph_idle@reset_2, {~10} %=create_squad(simulation_zombie_blind_night:mil_smart_terrain_4_7)% ph_idle@reset_2, {~10} %=create_squad(simulation_pseudodog_night:mil_smart_terrain_4_7)% ph_idle@reset_2, ph_idle@wait_reset
-
-[ph_idle@spawn_dark_monster_2]
-on_info = {~10} %=create_squad(simulation_psy_dog_night:mil_smart_terrain_4_7)% ph_idle@reset_2, {~10} %=create_squad(simulation_bloodsucker_night:mil_smart_terrain_4_7)% ph_idle@reset_2, {~10} %=create_squad(simulation_zombie_blind_3zomb_civ_night:mil_smart_terrain_4_7)% ph_idle@reset_2, {~10} %=create_squad(simulation_psysucker_night:mil_smart_terrain_4_7)% ph_idle@reset_2, ph_idle@wait_reset
-
-[ph_idle@reset_2]
-on_game_timer = 86400 | ph_idle@wait_actor
-
-[ph_idle@wait_reset]
-on_game_timer = 580 | ph_idle@wait_actor
-
-[collide]
-ignore_static
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/military/mil_endless_night_spawn_logic_3.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/military/mil_endless_night_spawn_logic_3.ltx
deleted file mode 100644
index 5a4c2276..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/military/mil_endless_night_spawn_logic_3.ltx
+++ /dev/null
@@ -1,30 +0,0 @@
-[logic]
-active = ph_idle@wait_actor
-
-[ph_idle@wait_actor]
-on_info = {=actor_near_smart(mil_smart_terrain_4_2) =is_night} ph_idle@spawn_night_monster_1, {=actor_near_smart(mil_smart_terrain_4_2) =is_dark_night} ph_idle@spawn_dark_monster_1
-on_info2 = {=actor_near_smart(mil_smart_terrain_4_5) =is_night} ph_idle@spawn_night_monster_2, {=actor_near_smart(mil_smart_terrain_4_5) =is_dark_night} ph_idle@spawn_dark_monster_2
-
-[ph_idle@spawn_night_monster_1]
-on_info = {~10} %=create_squad(simulation_zombie_blind_3zomb_civ_night:mil_smart_terrain_4_2)% ph_idle@reset, {~10} %=create_squad(simulation_fracture_night:mil_smart_terrain_4_2)% ph_idle@reset, {~10} %=create_squad(simulation_mix_dogs_night:mil_smart_terrain_4_2)% ph_idle@reset, {~10} %=create_squad(simulation_cat_night:mil_smart_terrain_4_2)% ph_idle@reset, ph_idle@wait_reset
-
-[ph_idle@spawn_dark_monster_1]
-on_info = {~10} %=create_squad(simulation_bloodsucker_night:mil_smart_terrain_4_2)% ph_idle@reset, {~10} %=create_squad(simulation_fracture_night:mil_smart_terrain_4_2)% ph_idle@reset, {~10} %=create_squad(simulation_snork_night:mil_smart_terrain_4_2)% ph_idle@reset, {~10} %=create_squad(simulation_psysucker_night:mil_smart_terrain_4_2)% ph_idle@reset, ph_idle@wait_reset
-
-[ph_idle@reset]
-on_game_timer = 86400 | ph_idle@wait_actor
-
-[ph_idle@spawn_night_monster_2]
-on_info = {~10} %=create_squad(simulation_mix_dogs_night:mil_smart_terrain_4_5)% ph_idle@reset_2, {~10} %=create_squad(simulation_psysucker_night:mil_smart_terrain_4_5)% ph_idle@reset_2, {~10} %=create_squad(simulation_bloodsucker_night:mil_smart_terrain_4_5)% ph_idle@reset_2, {~10} %=create_squad(simulation_snork_night:mil_smart_terrain_4_5)% ph_idle@reset_2, ph_idle@wait_reset
-
-[ph_idle@spawn_dark_monster_2]
-on_info = {~10} %=create_squad(simulation_gigant_night:mil_smart_terrain_4_5)% ph_idle@reset_2, {~10} %=create_squad(simulation_bloodsucker_night:mil_smart_terrain_4_5)% ph_idle@reset_2, {~10} %=create_squad(simulation_psy_dog_night:mil_smart_terrain_4_5)% ph_idle@reset_2, {~10} %=create_squad(simulation_psysucker_night:mil_smart_terrain_4_5)% ph_idle@reset_2, ph_idle@wait_reset
-
-[ph_idle@reset_2]
-on_game_timer = 86400 | ph_idle@wait_actor
-
-[ph_idle@wait_reset]
-on_game_timer = 580 | ph_idle@wait_actor
-
-[collide]
-ignore_static
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/military/mod_mil_crow_spawner_redone.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/military/mod_mil_crow_spawner_redone.ltx
deleted file mode 100644
index 85434a52..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/military/mod_mil_crow_spawner_redone.ltx
+++ /dev/null
@@ -1,44 +0,0 @@
-![logic]
-!active = sr_crow_spawner
-active = sr_idle@check_story
-
-[sr_idle@check_story]
-on_info = {-story_mode_disabled} sr_idle@check_actor, {+story_mode_disabled -yan_x16_complete_end} sr_idle@check_actor %+yan_kill_brain_done%
-
-[sr_idle@check_actor]
-on_info = {=actor_community(actor_monolith) -yan_x16_complete_end} sr_idle@check_helmet %+yan_kill_brain_done%, {=actor_community(actor_greh) -yan_x16_complete_end} sr_idle@check_helmet %+yan_kill_brain_done%, sr_idle@check_helmet
-
-[sr_idle@check_helmet]
-on_info = {=actor_has_item(good_psy_helmet)} sr_idle@check_spawner %+living_legend_psy_helmet%, {=actor_has_item(bad_psy_helmet)} sr_idle@check_spawner %+living_legend_psy_helmet%, sr_idle@check_spawner
-
-[sr_idle@check_spawner]
-on_info = sr_crow_spawner
-
-![sr_crow_spawner]
-max_crows_on_level = 4
-spawn_path = mil_crow_spawn_1, mil_crow_spawn_2, mil_crow_spawn_3, mil_crow_spawn_4, mil_crow_spawn_5
-
-on_info50 = {+mil_freedom_leader_dead -mil_spawn_complete =actor_community(actor_stalker)} sr_idle@spawn_3
-on_info51 = {+mil_freedom_leader_dead -mil_spawn_complete =actor_community(actor_bandit)} sr_idle@spawn_3
-on_info52 = {+mil_freedom_leader_dead -mil_spawn_complete =actor_community(actor_csky)} sr_idle@spawn_3
-on_info53 = {+mil_freedom_leader_dead -mil_spawn_complete =actor_community(actor_ecolog)} sr_idle@spawn_3
-on_info54 = {+mil_freedom_leader_dead -mil_spawn_complete =actor_community(actor_freedom)} sr_idle@spawn_3
-on_info55 = {+mil_freedom_leader_dead -mil_spawn_complete =actor_community(actor_killer)} sr_idle@spawn_3
-on_info56 = {+mil_freedom_leader_dead -mil_spawn_complete =actor_community(actor_dolg)} sr_idle@spawn_1
-on_info57 = {+mil_freedom_leader_dead -mil_spawn_complete =actor_community(actor_army)} sr_idle@spawn_2
-on_info68 = {+mil_freedom_leader_dead -mil_spawn_complete =actor_community(actor_renegade)} sr_idle@spawn_3
-on_info59 = {+mil_freedom_leader_dead -mil_spawn_complete =actor_community(actor_monolith)} sr_idle@spawn_3
-on_info61 = {+mil_freedom_leader_dead -mil_spawn_complete =actor_community(actor_greh)} sr_idle@spawn_3
-on_info62 = {+mil_freedom_leader_dead -mil_spawn_complete =actor_community(actor_isg)} sr_idle@spawn_3
-
-[sr_idle@spawn_1]:sr_crow_spawner
-on_game_timer = 43200 | sr_idle@spawn_end %=create_squad(mil_duty_entrance_7_8_squad:mil_smart_terrain_7_4) =create_squad(mil_duty_warehouse_7_7_squad:mil_smart_terrain_7_4) =create_squad(mil_duty_warehouse_7_10_squad:mil_smart_terrain_7_4) =create_squad(mil_duty_warehouse_7_12_squad:mil_smart_terrain_7_4)%
-
-[sr_idle@spawn_2]:sr_crow_spawner
-on_game_timer = 43200 | sr_idle@spawn_end %=create_squad(mil_army_entrance_7_8_squad:mil_smart_terrain_7_4) =create_squad(mil_army_warehouse_7_7_squad:mil_smart_terrain_7_4) =create_squad(mil_army_warehouse_7_10_squad:mil_smart_terrain_7_4) =create_squad(mil_army_warehouse_7_12_squad:mil_smart_terrain_7_4)%
-
-[sr_idle@spawn_3]:sr_crow_spawner
-on_game_timer = 43200 | sr_idle@spawn_end %=create_squad(mil_monolith_entrance_7_8_squad:mil_smart_terrain_3_8) =create_squad(mil_monolith_warehouse_7_7_squad:mil_smart_terrain_3_8) =create_squad(mil_monolith_warehouse_7_10_squad:mil_smart_terrain_3_8) =create_squad(mil_monolith_warehouse_7_12_squad:mil_smart_terrain_3_8)%
-
-[sr_idle@spawn_end]:sr_crow_spawner
-on_info = sr_idle@check_spawner %+mil_spawn_complete%
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/military/mod_mil_freedom_mlr_characters_logic_redone.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/military/mod_mil_freedom_mlr_characters_logic_redone.ltx
deleted file mode 100644
index 07251e04..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/military/mod_mil_freedom_mlr_characters_logic_redone.ltx
+++ /dev/null
@@ -1,55 +0,0 @@
-![logic@mil_freedom_barman_mlr]
-suitable = {=check_npc_name(mil_freedom_barman_mlr)} true, {=check_npc_barman} true
-active = beh@mil_freedom_barman_work_1
-
-[beh@general_barman]
-behavior_state = beh_move
-target = waypoint
-walk_dist = 100
-jog_dist = 220
-walk_anim = patrol
-jog_anim = assault
-run_anim = assault
-delay_anim = guard
-reach_movement = walk_noweap
-reach_distance = 10
-invulnerable = {!actor_true_enemy} true, false
-combat_ignore_cond = {=actor_true_enemy =check_enemy_name(actor)} false, true
-combat_ignore_keep_when_attacked = false
-corpse_detection_enabled = false
-gather_items_enabled = false
-help_wounded_enabled = false
-use_camp = false
-meet = meet@barman
-
-[beh@general_surge]
-behavior_state = beh_move
-target = waypoint
-walk_dist = 100
-jog_dist = 220
-walk_anim = rush
-jog_anim = rush
-run_anim = rush
-invulnerable = {!actor_true_enemy} true, false
-combat_ignore_cond = {=actor_true_enemy =check_enemy_name(actor)} false, true
-combat_ignore_keep_when_attacked = false
-gather_items_enabled = false
-help_wounded_enabled = false
-corpse_detection_enabled = false
-meet = no_meet
-
-[beh@mil_freedom_barman_work_1]:beh@general_barman
-pt1 = 88860000, ward | pos: -60.11109161377, -6.7447609901428, -15.399458885193 look: -58.891841888428, -6.9009099006653, -16.175771713257
-path_end = loop
-on_info = {=is_night} beh@mil_freedom_barman_sleeper_work_1
-on_info2 = {=surge_started} beh@mil_freedom_barman_surge_work_1
-
-[beh@mil_freedom_barman_surge_work_1]:beh@general_surge
-pt1 = 88860000, guard | pos: -23.889720916748, -7.3642907142639, -26.99095916748 look: -23.86438369751, -7.3637666702271, -27.704570770264
-path_end = loop
-on_info = {=surge_complete} beh@mil_freedom_barman_work_1
-
-[beh@mil_freedom_barman_sleeper_work_1]:beh@general_barman
-pt1 = 88860000, sleep_sit | pos: -23.889720916748, -7.3642907142639, -26.99095916748 look: -23.86438369751, -7.3637666702271, -27.704570770264
-path_end = loop
-on_info = {!is_night} beh@mil_freedom_barman_work_1
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/military/mod_mil_smart_terrain_4_2_sleeper_bloodsuckers_redone.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/military/mod_mil_smart_terrain_4_2_sleeper_bloodsuckers_redone.ltx
deleted file mode 100644
index 95aeb957..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/military/mod_mil_smart_terrain_4_2_sleeper_bloodsuckers_redone.ltx
+++ /dev/null
@@ -1,12 +0,0 @@
-![mob_walker@sleep_1_night]
-home_max_radius = 55
-
-![mob_walker@sleep_2_night]
-home_max_radius = 55
-
-![mob_walker@sleep_3_night]
-home_max_radius = 55
-
-![mob_walker@sleep_4_night]
-home_max_radius = 55
-
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/military/mod_mil_smart_terrain_7_7_radio_redone.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/military/mod_mil_smart_terrain_7_7_radio_redone.ltx
deleted file mode 100644
index c10c20d3..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/military/mod_mil_smart_terrain_7_7_radio_redone.ltx
+++ /dev/null
@@ -1,14 +0,0 @@
-![sr_idle@music]
-on_info4 = {+mil_freedom_leader_dead} sr_idle@end %=stop_sound%
-
-![sr_idle@propaganda]
-on_info4 = {+mil_freedom_leader_dead} sr_idle@end %=stop_sound%
-
-![sr_idle@night]
-on_info3 = {+mil_freedom_leader_dead} sr_idle@end %=stop_sound%
-
-![sr_idle@surge]
-on_info3 = {+mil_freedom_leader_dead} sr_idle@end %=stop_sound%
-
-[sr_idle@end]
-on_info = %=play_sound(broken_radio_mlr)%
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/military/mod_mil_smart_terrain_7_7_smart_logic_redone.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/military/mod_mil_smart_terrain_7_7_smart_logic_redone.ltx
deleted file mode 100644
index 41242ad3..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/military/mod_mil_smart_terrain_7_7_smart_logic_redone.ltx
+++ /dev/null
@@ -1,5 +0,0 @@
-![logic@mil_smart_terrain_7_7_freedom_leader]
-on_death = death_leader
-
-[death_leader]
-on_info = %+mil_freedom_leader_dead%
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/military/smart/mil_smart_terrain_2_1.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/military/smart/mil_smart_terrain_2_1.ltx
deleted file mode 100644
index a46d83eb..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/military/smart/mil_smart_terrain_2_1.ltx
+++ /dev/null
@@ -1,52 +0,0 @@
-[smart_terrain]
-squad_id = 1
-max_population = 2
-respawn_params = respawn@mil_smart_terrain_4_3
-respawn_only_smart = false
-respawn_idle = 86400
-respawn_radius = 50
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = mil_space_restrictors_2_1_sr_attack
-;def_restr = mil_space_restrictors_2_1_sr_defense
-;safe_restr = nil
-;spawn_point = nil
-
-[respawn@mil_smart_terrain_4_3] ;-- Type: faction {zombied} = wahyy...
-spawn_zombied_squad
-spawn_zombie
-spawn_mutants
-
-
-[spawn_zombied_squad]
-spawn_squads = zombied_sim_squad_veteran, zombied_sim_squad_advanced, simulation_zombie_blind_3zomb
-spawn_num = {+bar_deactivate_radar_done } 0, 1
-
-[spawn_zombie] ;-- Weak\normal mutants - Rates of groups: ( 2 zombie )
-spawn_squads = simulation_zombie_3_6, simulation_mix_zombie
-spawn_num = {+yan_kill_brain_done +bar_deactivate_radar_done} 0, 1
-
-[spawn_mutants] ;-- Normal\hard mutants - Rates of groups: ( 1 tushkano + 2 dogs + 1 cat + 1 snork + 1 fracture + 1 psy dog + 1 lurker )
-spawn_squads = simulation_tushkano_7_10, simulation_dog_5_7, simulation_mix_dogs, simulation_cat_3_5, simulation_snork_2_3, simulation_fracture, simulation_psy_dog, simulation_lurker_1_2
-spawn_num = {+yan_kill_brain_done +bar_deactivate_radar_done} 1, 0
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-;[exclusive]
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/military/smart/mil_smart_terrain_2_10.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/military/smart/mil_smart_terrain_2_10.ltx
deleted file mode 100644
index e0053f40..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/military/smart/mil_smart_terrain_2_10.ltx
+++ /dev/null
@@ -1,27 +0,0 @@
-[smart_terrain]
-squad_id = 2
-max_population = 2
-;respawn_params = respawn@mil_smart_terrain_2_10
-respawn_only_smart = false
-respawn_idle = 86400
-respawn_radius = 50
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = mil_space_restrictors_2_10_sr_attack
-;def_restr = mil_space_restrictors_2_10_sr_defense
-;safe_restr = nil
-;spawn_point = nil
-
-faction_controlled = bandit, killer, dolg, freedom, monolith
-default_faction = freedom
-faction_respawn_num = 1
-
-
-;[respawn@mil_smart_terrain_2_10] ;-- Type:
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-;[exclusive]
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/military/smart/mil_smart_terrain_2_2.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/military/smart/mil_smart_terrain_2_2.ltx
deleted file mode 100644
index 41b8bc4f..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/military/smart/mil_smart_terrain_2_2.ltx
+++ /dev/null
@@ -1,38 +0,0 @@
-[smart_terrain]
-squad_id = 3
-max_population = 2
-respawn_params = respawn@mil_smart_terrain_2_2
-respawn_only_smart = false
-respawn_idle = 86400
-respawn_radius = 50
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = mil_space_restrictors_2_2_sr_attack
-;def_restr = mil_space_restrictors_2_2_sr_defense
-;safe_restr = nil
-;spawn_point = nil
-
-;faction_controlled = bandit, killer, dolg, freedom, monolith
-;default_faction = killer
-;faction_respawn_num = 1
-
-
-[respawn@mil_smart_terrain_2_2] ;-- Type: {faction: killer} = checkpoint
-spawn_killer_special
-spawn_killer_special_2
-
-
-[spawn_killer_special]
-spawn_squads = mil_merc_terrain_2_2_outpost_squad
-spawn_num = {!squad_name_exist(mil_merc_terrain_2_2_outpost_squad) -cit_killers_aslan_dead} 1, 0 ;{-cit_killers_dushman_dead}
-
-[spawn_killer_special_2]
-spawn_squads = mil_merc_terrain_2_2_outpost_squad2
-spawn_num = {!squad_name_exist(mil_merc_terrain_2_2_outpost_squad2) -cit_killers_aslan_dead} 1, 0 ;{-cit_killers_dushman_dead}
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-;[exclusive]
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/military/smart/mil_smart_terrain_2_4.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/military/smart/mil_smart_terrain_2_4.ltx
deleted file mode 100644
index dec3d178..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/military/smart/mil_smart_terrain_2_4.ltx
+++ /dev/null
@@ -1,22 +0,0 @@
-[smart_terrain] ;-- Disabled spawn
-squad_id = 4
-max_population = 1
-;respawn_params = respawn@mil_smart_terrain_2_4
-;respawn_only_smart = false
-;respawn_idle = 86400
-;respawn_radius = 50
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = mil_space_restrictors_2_4_sr_attack
-;def_restr = mil_space_restrictors_2_4_sr_defense
-;safe_restr = nil
-;spawn_point = nil
-
-;[respawn@mil_smart_terrain_2_4] ;-- Type:
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-;[exclusive]]
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/military/smart/mil_smart_terrain_2_6.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/military/smart/mil_smart_terrain_2_6.ltx
deleted file mode 100644
index 19358f5d..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/military/smart/mil_smart_terrain_2_6.ltx
+++ /dev/null
@@ -1,38 +0,0 @@
-[smart_terrain]
-squad_id = 5
-max_population = 2
-respawn_params = respawn@mil_smart_terrain_2_1
-respawn_only_smart = false
-respawn_idle = 86400
-respawn_radius = 50
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = mil_space_restrictors_2_6_sr_attack
-;def_restr = mil_space_restrictors_2_6_sr_defense
-;safe_restr = nil
-;spawn_point = nil
-
-[respawn@mil_smart_terrain_2_1] ;-- Type: faction {zombied} = nhoo...
-spawn_zombied_squad
-spawn_mutants
-spawn_mutants_rare
-
-
-[spawn_zombied_squad]
-spawn_squads = zombied_sim_squad_veteran, zombied_sim_squad_advanced
-spawn_num = {+bar_deactivate_radar_done} 0, 1
-
-[spawn_mutants] ;-- Normal\hard mutants - Rates of groups: ( 2 dogs + 1 cats + 3 fleshes/boars + 1 lurker )
-spawn_squads = simulation_dog_5_7, simulation_mix_dogs, simulation_cat_3_5, simulation_mix_boar_flesh, simulation_boar_3_5, simulation_lurker_1_2
-spawn_num = {+yan_kill_brain_done +bar_deactivate_radar_done} 1, 0
-
-[spawn_mutants_rare] ;-- Rare mutants - Rates of groups: ( 1 polter + 1 karlik )
-spawn_squads = simulation_poltergeist, simulation_karlik
-spawn_num = {~10} 1, 0
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-;[exclusive]
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/military/smart/mil_smart_terrain_3_8.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/military/smart/mil_smart_terrain_3_8.ltx
deleted file mode 100644
index 21428d5c..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/military/smart/mil_smart_terrain_3_8.ltx
+++ /dev/null
@@ -1,39 +0,0 @@
-[smart_terrain]
-squad_id = 6
-max_population = 2
-respawn_params = respawn@mil_smart_terrain_3_8
-respawn_only_smart = false
-respawn_idle = 86400
-respawn_radius = 50
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = mil_space_restrictors_3_8_sr_attack
-;def_restr = mil_space_restrictors_3_8_sr_defense
-;safe_restr = nil
-;spawn_point = nil
-
-[respawn@mil_smart_terrain_3_8] ;-- Type:
-spawn_freedom_special
-spawn_duty_special
-spawn_army_special
-
-
-[spawn_freedom_special]
-spawn_squads = mil_freedom_smart_terrain_3_8_squad
-spawn_num = {!squad_name_exist(mil_freedom_smart_terrain_3_8_squad) -mil_freedom_leader_dead} 1, 0
-
-[spawn_duty_special]
-spawn_squads = mil_duty_smart_terrain_3_8_squad
-spawn_num = {!squad_name_exist(mil_duty_smart_terrain_3_8_squad) =actor_community(actor_dolg) +mil_freedom_leader_dead} 1, 0
-
-[spawn_army_special]
-spawn_squads = mil_army_smart_terrain_3_8_squad
-spawn_num = {!squad_name_exist(mil_army_smart_terrain_3_8_squad) =actor_community(actor_army) +mil_freedom_leader_dead} 1, 0
-
-
-[on_changing_level]
-on_info = %=script(redone_xr_dynamic_object:dynamic_object:misc\spawn_object\mil_smart_terrain_3_8_object.ltx)%
-
-;[smart_control]
-
-;[exclusive]
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/military/smart/mil_smart_terrain_4_2.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/military/smart/mil_smart_terrain_4_2.ltx
deleted file mode 100644
index c605fa09..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/military/smart/mil_smart_terrain_4_2.ltx
+++ /dev/null
@@ -1,32 +0,0 @@
-[smart_terrain]
-squad_id = 7
-max_population = 2
-respawn_params = respawn@mil_smart_terrain_4_2
-respawn_only_smart = false
-respawn_idle = 259200
-respawn_radius = 50
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = mil_space_restrictors_4_2_sr_attack
-;def_restr = mil_space_restrictors_4_2_sr_defense
-;safe_restr = nil
-;spawn_point = nil
-
-[respawn@mil_smart_terrain_4_2] ;-- Type:
-spawn_bloodsucker
-
-
-[spawn_bloodsucker] ;-- Hard mutants - Rates of groups: ( bloodsucker )
-spawn_squads = mil_smart_terrain_4_2_bloodsuckers_sleepers
-spawn_num = {!squad_name_exist(mil_smart_terrain_4_2_bloodsuckers_sleepers) =actor_week_in_zone(1)} 1, 0
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-[exclusive]
-sleeper_bloodsucker_1 = military\mil_smart_terrain_4_2_sleeper_bloodsuckers.ltx
-sleeper_bloodsucker_2 = military\mil_smart_terrain_4_2_sleeper_bloodsuckers.ltx
-sleeper_bloodsucker_3 = military\mil_smart_terrain_4_2_sleeper_bloodsuckers.ltx
-sleeper_bloodsucker_4 = military\mil_smart_terrain_4_2_sleeper_bloodsuckers.ltx
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/military/smart/mil_smart_terrain_4_3.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/military/smart/mil_smart_terrain_4_3.ltx
deleted file mode 100644
index 63b97dec..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/military/smart/mil_smart_terrain_4_3.ltx
+++ /dev/null
@@ -1,36 +0,0 @@
-[smart_terrain]
-squad_id = 8
-max_population = 2
-respawn_params = respawn@mil_smart_terrain_2_1
-respawn_only_smart = false
-respawn_idle = 172800
-respawn_radius = 50
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = mil_space_restrictors_4_3_sr_attack
-;def_restr = mil_space_restrictors_4_3_sr_defense
-;safe_restr = nil
-;spawn_point = nil
-
-[respawn@mil_smart_terrain_2_1] ;-- Type: faction {zombied} = nhoo...
-spawn_zombie
-spawn_mutants
-
-
-[spawn_zombie]
-spawn_squads = simulation_zombie_3_6, simulation_mix_zombie
-spawn_num = {+yan_kill_brain_done +bar_deactivate_radar_done} 0, 1
-
-[spawn_mutants] ;-- Normal\hard mutants - Rates of groups: ( 1 tushkano + 2 dogs + 1 cats + 1 lurker )
-spawn_squads = simulation_tushkano, simulation_dog_5_7, simulation_mix_dogs, simulation_cat_3_5, simulation_lurker_1_2
-spawn_num = {+yan_kill_brain_done +bar_deactivate_radar_done} 1, 0
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-;[exclusive]
-
-
-
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/military/smart/mil_smart_terrain_4_5.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/military/smart/mil_smart_terrain_4_5.ltx
deleted file mode 100644
index 8c97f5ec..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/military/smart/mil_smart_terrain_4_5.ltx
+++ /dev/null
@@ -1,28 +0,0 @@
-[smart_terrain]
-squad_id = 9
-max_population = 2
-respawn_params = respawn@mil_smart_terrain_4_5
-respawn_only_smart = false
-respawn_idle = 259200
-respawn_radius = 50
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = mil_space_restrictors_4_5_sr_attack
-;def_restr = mil_space_restrictors_4_5_sr_defense
-;safe_restr = nil
-;spawn_point = nil
-
-[respawn@mil_smart_terrain_4_5] ;-- Type:
-spawn_tushkano
-
-
-[spawn_tushkano] ;-- Weak mutants - Rates of groups: ( 2 tushkano + 1 dogs + 1 cat )
-spawn_squads = simulation_tushkano, simulation_tushkano_7_10, simulation_mix_dogs, simulation_cat
-spawn_num = 1
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-;[exclusive]
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/military/smart/mil_smart_terrain_4_7.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/military/smart/mil_smart_terrain_4_7.ltx
deleted file mode 100644
index ae2287f5..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/military/smart/mil_smart_terrain_4_7.ltx
+++ /dev/null
@@ -1,35 +0,0 @@
-[smart_terrain]
-squad_id = 10
-max_population = 1
-respawn_params = respawn@mil_smart_terrain_4_7
-respawn_only_smart = true
-respawn_idle = 172800
-respawn_radius = 50
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = mil_space_restrictors_4_7_sr_attack
-;def_restr = mil_space_restrictors_4_7_sr_defense
-;safe_restr = nil
-;spawn_point = nil
-
-[respawn@mil_smart_terrain_4_7] ;-- Type:
-spawn_mutants
-
-
-[spawn_mutants] ;-- Normal\hard mutants - Rates of groups: ( 1 tushkano + 2 dogs + 1 cat + 1 snork + 1 fracture + 1 psy dog + 1 lurker )
-spawn_squads = simulation_tushkano_7_10, simulation_dog_5_7, simulation_mix_dogs, simulation_cat_3_5, simulation_snork_2_3, simulation_fracture, simulation_psy_dog, simulation_lurker_1_2
-spawn_num = {+yan_kill_brain_done +bar_deactivate_radar_done} 1, 0
-
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-[exclusive]
-faction_base_defense_enemy1 = military\mil_smart_terrain_4_7_smart_logic.ltx
-faction_base_defense_enemy2 = military\mil_smart_terrain_4_7_smart_logic.ltx
-faction_base_defense_enemy3 = military\mil_smart_terrain_4_7_smart_logic.ltx
-faction_base_defense_enemy4 = military\mil_smart_terrain_4_7_smart_logic.ltx
-faction_base_defense_enemy5 = military\mil_smart_terrain_4_7_smart_logic.ltx
-faction_base_defense_enemy6 = military\mil_smart_terrain_4_7_smart_logic.ltx
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/military/smart/mil_smart_terrain_4_8.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/military/smart/mil_smart_terrain_4_8.ltx
deleted file mode 100644
index 063159c5..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/military/smart/mil_smart_terrain_4_8.ltx
+++ /dev/null
@@ -1,29 +0,0 @@
-[smart_terrain]
-squad_id = 11
-max_population = 1
-respawn_params = respawn@mil_smart_terrain_4_8
-respawn_only_smart = false
-respawn_idle = 86400
-respawn_radius = 50
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = mil_space_restrictors_4_8_sr_attack
-;def_restr = mil_space_restrictors_4_8_sr_defense
-;safe_restr = nil
-;spawn_point = nil
-
-[respawn@mil_smart_terrain_4_8] ;-- Type: faction {stalker} = camp
-spawn_stalker@advanced
-
-
-[spawn_stalker@advanced]
-spawn_squads = stalker_sim_squad_advanced_3_4, stalker_sim_squad_veteran_3_4
-spawn_num = {+mil_freedom_leader_dead} 0, 1
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-[exclusive]
-stalker_gatekeeper = military\stalker_gatekeeper.ltx
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/military/smart/mil_smart_terrain_7_10.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/military/smart/mil_smart_terrain_7_10.ltx
deleted file mode 100644
index 871eaa5c..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/military/smart/mil_smart_terrain_7_10.ltx
+++ /dev/null
@@ -1,36 +0,0 @@
-[smart_terrain]
-squad_id = 12
-max_population = 4
-respawn_params = respawn@mil_smart_terrain_7_10
-respawn_only_smart = false
-respawn_idle = 86400
-respawn_radius = 500
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = mil_space_restrictors_7_10_sr_attack
-;def_restr = mil_space_restrictors_7_10_sr_defense
-;safe_restr = nil
-;spawn_point = nil
-
-[respawn@mil_smart_terrain_7_10] ;-- Type: faction {freedom} = west\main base
-spawn_deserted_base
-spawn_deserted_base_2
-
-
-[spawn_deserted_base]
-spawn_squads = duty_sim_squad_novice, duty_sim_squad_novice, duty_sim_squad_advanced
-spawn_num = {=actor_community(actor_dolg) +mil_freedom_leader_dead} 2, 0
-
-[spawn_deserted_base_2]
-spawn_squads = army_sim_squad_novice, army_sim_squad_novice, army_sim_squad_advanced
-spawn_num = {=actor_community(actor_army) +mil_freedom_leader_dead} 2, 0
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-[exclusive]
-mil_smart_terrain_7_10_freedom_trader = military\mil_smart_terrain_7_10_smart_logic.ltx
-mil_smart_terrain_7_10_beh_trade_job_1 = military\mil_smart_terrain_7_10_smart_logic.ltx
-
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/military/smart/mil_smart_terrain_7_12.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/military/smart/mil_smart_terrain_7_12.ltx
deleted file mode 100644
index 96c015d7..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/military/smart/mil_smart_terrain_7_12.ltx
+++ /dev/null
@@ -1,33 +0,0 @@
-[smart_terrain]
-squad_id = 13
-max_population = 3
-respawn_params = respawn@mil_smart_terrain_7_12
-respawn_only_smart = false
-respawn_idle = 86400
-respawn_radius = 500
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = nil
-;def_restr = nil
-;safe_restr = nil
-;spawn_point = nil
-
-[respawn@mil_smart_terrain_7_12] ;-- Type: faction {freedom} = barracks + faction {stalker, bandir, killer} = safezone
-spawn_deserted_base
-spawn_deserted_base_2
-
-
-[spawn_deserted_base]
-spawn_squads = monolith_sim_squad_advanced, monolith_sim_squad_advanced, monolith_sim_squad_novice
-spawn_num = {=actor_community(actor_monolith) +mil_freedom_leader_dead} 2, 0
-
-[spawn_deserted_base_2]
-spawn_squads = greh_sim_squad_advanced, greh_sim_squad_advanced, greh_sim_squad_novice
-spawn_num = {=actor_community(actor_greh) +mil_freedom_leader_dead} 2, 0
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-;[exclusive]
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/military/smart/mil_smart_terrain_7_4.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/military/smart/mil_smart_terrain_7_4.ltx
deleted file mode 100644
index 200d0d02..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/military/smart/mil_smart_terrain_7_4.ltx
+++ /dev/null
@@ -1,43 +0,0 @@
-[smart_terrain]
-squad_id = 14
-max_population = 2
-respawn_params = respawn@mil_smart_terrain_7_4
-respawn_only_smart = false
-respawn_idle = 86400
-respawn_radius = 100
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = mil_space_restrictors_7_4_sr_attack
-;def_restr = mil_space_restrictors_7_4_sr_defense
-;safe_restr = nil
-;spawn_point = nil
-
-[respawn@mil_smart_terrain_7_4] ;-- Type:
-;spawn_duty@novice
-;spawn_freedom@novice
-spawn_duty_special
-spawn_freedom_special
-
-
-;[spawn_duty@novice]
-;spawn_squads = duty_sim_squad_novice, duty_sim_squad_novice, duty_sim_squad_advanced
-;spawn_num = {+bar_dolg_leader_dead +bar_dolg_petrenko_dead} 0, 1
-
-;[spawn_freedom@novice]
-;spawn_squads = freedom_sim_squad_novice, freedom_sim_squad_novice, freedom_sim_squad_advanced
-;spawn_num = {+bar_dolg_leader_dead +bar_dolg_petrenko_dead -mil_freedom_leader_dead} 1, 0
-
-[spawn_duty_special]
-spawn_squads = mil_duty_terrain_7_4_outpost_squad
-spawn_num = {!squad_name_exist(mil_duty_terrain_7_4_outpost_squad) -bar_dolg_leader_dead} 1, 0 ;{-bar_dolg_petrenko_dead}
-
-[spawn_freedom_special]
-spawn_squads = mil_freedom_terrain_7_4_outpost_squad
-spawn_num = {!squad_name_exist(mil_freedom_terrain_7_4_outpost_squad) +bar_dolg_leader_dead +bar_dolg_petrenko_dead -mil_freedom_leader_dead} 1, 0
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-;[exclusive]
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/military/smart/mil_smart_terrain_7_7.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/military/smart/mil_smart_terrain_7_7.ltx
deleted file mode 100644
index 24aa5b69..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/military/smart/mil_smart_terrain_7_7.ltx
+++ /dev/null
@@ -1,91 +0,0 @@
-[smart_terrain]
-squad_id = 15
-max_population = 4
-respawn_params = respawn@mil_smart_terrain_7_7
-respawn_only_smart = false
-respawn_idle = 43200
-respawn_radius = 50
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = mil_space_restrictors_7_7_sr_attack
-;def_restr = mil_space_restrictors_7_7_sr_defense
-;safe_restr = nil
-;spawn_point = nil
-
-[respawn@mil_smart_terrain_7_7] ;-- Type: faction {freedom} = center\main base
-spawn_freedom@novice
-spawn_freedom@advanced
-spawn_freedom@veteran
-spawn_freedom_special
-spawn_freedom_special_2
-spawn_freedom_special_3
-spawn_freedom_special_4
-
-
-[spawn_freedom@novice]
-spawn_squads = freedom_sim_squad_novice, freedom_sim_squad_novice, freedom_sim_squad_advanced
-spawn_num = {+mil_freedom_leader_dead} 0, 2
-
-[spawn_freedom@advanced]
-spawn_squads = freedom_sim_squad_advanced, freedom_sim_squad_advanced, freedom_sim_squad_novice
-spawn_num = {+mil_freedom_leader_dead} 0, 2
-
-[spawn_freedom@veteran]
-spawn_squads = freedom_sim_squad_veteran, freedom_sim_squad_advanced, freedom_sim_squad_advanced
-spawn_num = {+mil_freedom_leader_dead} 0, 2
-
-[spawn_freedom_special]
-spawn_squads = mil_7_7_protect_mlr_squad
-spawn_num = {!squad_name_exist(mil_7_7_protect_mlr_squad) -mil_freedom_leader_dead} 1, 0
-
-[spawn_freedom_special_2]
-spawn_squads = mil_freedom_smart_terrain_7_8_squad
-spawn_num = {!squad_name_exist(mil_freedom_smart_terrain_7_8_squad) -mil_freedom_leader_dead} 1, 0
-
-[spawn_freedom_special_3]
-spawn_squads = mil_freedom_smart_terrain_7_10_squad
-spawn_num = {!squad_name_exist(mil_freedom_smart_terrain_7_10_squad) -mil_freedom_leader_dead} 1, 0
-
-[spawn_freedom_special_4]
-spawn_squads = mil_freedom_smart_terrain_7_12_squad
-spawn_num = {!squad_name_exist(mil_freedom_smart_terrain_7_12_squad) -mil_freedom_leader_dead} 1, 0
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-[exclusive]
-mil_freedom_guid = military\mil_freedom_mlr_characters_logic.ltx
-mil_freedom_medic = military\mil_freedom_mlr_characters_logic.ltx
-mil_freedom_barman_mlr = military\mil_freedom_mlr_characters_logic.ltx
-
-mil_smart_terrain_7_7_beh_tech_job_1 = military\mil_smart_terrain_7_7_smart_logic.ltx
-mil_smart_terrain_7_7_freedom_mechanic = military\mil_smart_terrain_7_7_smart_logic.ltx
-mil_smart_terrain_7_7_freedom_leader = military\mil_smart_terrain_7_7_smart_logic.ltx
-mil_smart_terrain_7_7_freedom_bodyguard1 = military\mil_smart_terrain_7_7_smart_logic.ltx
-mil_smart_terrain_7_7_freedom_bodyguard2 = military\mil_smart_terrain_7_7_smart_logic.ltx
-
-mil_smart_terrain_7_7_camp_work_1 = military\mil_smart_terrain_7_7_smart_logic_mlr.ltx
-mil_smart_terrain_7_7_camp_work_2 = military\mil_smart_terrain_7_7_smart_logic_mlr.ltx
-mil_smart_terrain_7_7_camp_work_3 = military\mil_smart_terrain_7_7_smart_logic_mlr.ltx
-mil_smart_terrain_7_7_camp_work_4 = military\mil_smart_terrain_7_7_smart_logic_mlr.ltx
-mil_smart_terrain_7_7_camp_work_5 = military\mil_smart_terrain_7_7_smart_logic_mlr.ltx
-mil_smart_terrain_7_7_camp_work_6 = military\mil_smart_terrain_7_7_smart_logic_mlr.ltx
-mil_smart_terrain_7_7_camp_work_8 = military\mil_smart_terrain_7_7_smart_logic_mlr.ltx
-mil_smart_terrain_7_7_camp_work_9 = military\mil_smart_terrain_7_7_smart_logic_mlr.ltx
-mil_smart_terrain_7_7_camp_work_10 = military\mil_smart_terrain_7_7_smart_logic_mlr.ltx
-mil_smart_terrain_7_7_camp_work_13 = military\mil_smart_terrain_7_7_smart_logic_mlr.ltx
-mil_smart_terrain_7_7_camp_work_15 = military\mil_smart_terrain_7_7_smart_logic_mlr.ltx
-mil_smart_terrain_7_7_camp_work_18 = military\mil_smart_terrain_7_7_smart_logic_mlr.ltx
-mil_smart_terrain_7_7_camp_work_19 = military\mil_smart_terrain_7_7_smart_logic_mlr.ltx
-mil_smart_terrain_7_7_camp_work_20 = military\mil_smart_terrain_7_7_smart_logic_mlr.ltx
-mil_smart_terrain_7_7_camp_work_21 = military\mil_smart_terrain_7_7_smart_logic_mlr.ltx
-
-faction_base_defense_enemy1 = military\mil_smart_terrain_7_7_smart_logic.ltx
-faction_base_defense_enemy2 = military\mil_smart_terrain_7_7_smart_logic.ltx
-faction_base_defense_enemy3 = military\mil_smart_terrain_7_7_smart_logic.ltx
-faction_base_defense_enemy4 = military\mil_smart_terrain_7_7_smart_logic.ltx
-faction_base_defense_enemy5 = military\mil_smart_terrain_7_7_smart_logic.ltx
-faction_base_defense_enemy6 = military\mil_smart_terrain_7_7_smart_logic.ltx
-
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/military/smart/mil_smart_terrain_7_8.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/military/smart/mil_smart_terrain_7_8.ltx
deleted file mode 100644
index 4452041a..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/military/smart/mil_smart_terrain_7_8.ltx
+++ /dev/null
@@ -1,22 +0,0 @@
-[smart_terrain]
-squad_id = 16
-max_population = 2
-;respawn_params = respawn@mil_smart_terrain_7_8
-;respawn_only_smart = false
-;respawn_idle = 200
-;respawn_radius = 50
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = mil_space_restrictors_7_8_sr_attack
-;def_restr = mil_space_restrictors_7_8_sr_defense
-;safe_restr = nil
-;spawn_point = nil
-
-;[respawn@mil_smart_terrain_7_8] ;-- Type: faction {freedom} = gateguard
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-;[exclusive]
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/military/smart/mil_smart_terrain_8_3.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/military/smart/mil_smart_terrain_8_3.ltx
deleted file mode 100644
index bafa5044..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/military/smart/mil_smart_terrain_8_3.ltx
+++ /dev/null
@@ -1,33 +0,0 @@
-[smart_terrain]
-squad_id = 17
-max_population = 1
-respawn_params = respawn@mil_smart_terrain_8_3
-respawn_only_smart = true
-respawn_idle = 172800
-respawn_radius = 1000
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = mil_space_restrictors_8_3_sr_attack
-;def_restr = mil_space_restrictors_8_3_sr_defense
-;safe_restr = nil
-;spawn_point = nil
-
-[respawn@mil_smart_terrain_8_3] ;-- Type: c_1_1 + c_1_2 edited
-spawn_all_weak_c_1_1
-spawn_all_normal_c_1_2
-
-
-[spawn_all_weak_c_1_1] ;-- Normal mutants - Rates of groups: ( 2 dogs + 1 cats + 2 fleshes/boars )
-spawn_squads = simulation_dog, simulation_mix_dogs, simulation_cat, simulation_flesh, simulation_boar
-spawn_num = {!actor_week_in_zone(1)} 1, {=actor_week_in_zone(1)} 0
-
-[spawn_all_normal_c_1_2];-- Normal mutants - Rates of groups: ( 2 dogs + 1 cats + 3 fleshes/boars )
-spawn_squads = simulation_dog_5_7, simulation_mix_dogs, simulation_cat_3_5, simulation_mix_boar_flesh, simulation_flesh, simulation_boar_3_5
-spawn_num = {=actor_week_in_zone(1)} 1, {!actor_week_in_zone(1)} 0
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-;[exclusive]
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/mlr/mod_escape_sr_rupor_mlr_redone.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/mlr/mod_escape_sr_rupor_mlr_redone.ltx
deleted file mode 100644
index 0e23e8a9..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/mlr/mod_escape_sr_rupor_mlr_redone.ltx
+++ /dev/null
@@ -1,32 +0,0 @@
-![ph_idle@wait]
-on_info = %=play_sound(escape_sr_rupor_mlr_sound)% ph_idle@sound_idle
-on_info2 = {=check_smart_alarm_status(esc_smart_terrain_3_16)} ph_idle@alarm
-on_info3 = {=surge_started} ph_idle@surge
-
-![ph_idle@alarm]
-on_info = %=play_sound(escape_sr_rupor_mlr_alarm)%
-on_info2 = {!check_smart_alarm_status(esc_smart_terrain_3_16)} ph_idle@wait
-on_info3 = {=surge_started} ph_idle@surge
-
-[ph_idle@sound_idle]
-on_info = {=surge_started} ph_idle@surge
-on_game_timer = 840 |ph_idle@wait
-
-[ph_idle@surge]
-on_info = %=stop_sound%
-on_game_timer = 100 | ph_idle@surge_started
-
-[ph_idle@surge_started]
-on_info = %=play_sound(escape_blowout_siren)%
-;on_info2 = {!surge_started} ph_idle@sound_idle
-on_game_timer = 370 | ph_idle@surge_siren_end
-
-[ph_idle@surge_siren_end]
-on_info = %=play_sound(escape_blowout_siren_1)%
-on_signal = sound_end | ph_idle@surge_act_idle
-
-[ph_idle@surge_act_idle]
-on_info = {=surge_started} ph_idle@surge
-on_game_timer = 1240 | ph_idle@sound_idle
-
-[ph_idle@nil]
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/pole/pol_smart_terrain_2_1_smart_logic.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/pole/pol_smart_terrain_2_1_smart_logic.ltx
deleted file mode 100644
index 07d597aa..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/pole/pol_smart_terrain_2_1_smart_logic.ltx
+++ /dev/null
@@ -1,42 +0,0 @@
-[logic@pol_smart_terrain_2_1_guard_work_1]
-active = beh@pol_smart_terrain_2_1_guard_work_1
-suitable = {=target_squad_name(pol_renegade_guard1)} true
-prior = 200
-
-[logic@pol_smart_terrain_2_1_guard_work_2]
-active = beh@pol_smart_terrain_2_1_guard_work_2
-suitable = {=target_squad_name(pol_renegade_guard1)} true
-prior = 200
-
-[logic@pol_smart_terrain_2_1_guard_work_3]
-active = beh@pol_smart_terrain_2_1_guard_work_3
-suitable = {=target_squad_name(pol_renegade_guard1)} true
-prior = 200
-
-[beh@general_guard]
-behavior_state = beh_move
-target = waypoint
-walk_dist = 100
-jog_dist = 220
-wait_anim = guard
-walk_anim = patrol
-jog_anim = assault
-run_anim = assault
-delay_anim = guard
-combat_ignore_cond = false
-combat_ignore_keep_when_attacked = false
-gather_items_enabled = false
-help_wounded_enabled = true
-corpse_detection_enabled = true
-invulnerable = false
-
-[beh@pol_smart_terrain_2_1_guard_work_1]:beh@general_guard
-pt1 = 100, guard | pos: -6.1126842498779, 0.45707225799561, 118.77732849121 look: -6.1126842498779, 0.45707225799561, 118.77732849121
-pt2 = 10000, guard | pos: -4.3642206192017, 0.3946173787117, 120.65453338623 look: -4.0511808395386, 0.39449846744537, 120.47067260742
-
-[beh@pol_smart_terrain_2_1_guard_work_2]:beh@general_guard
-pt1 = 10000, guard | pos: 17.915309906006, -0.0032001584768295, 109.66539001465 look: 17.415990829468, -0.0023594349622726, 110.29475402832
-
-[beh@pol_smart_terrain_2_1_guard_work_3]:beh@general_guard
-pt1 = 10000, guard | pos: 64.445945739746, -0.0026708245277405, 146.36608886719 look: 63.21178817749, -0.0003075897693634, 145.92973327637
-
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/pole/smart/pol_sim_1.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/pole/smart/pol_sim_1.ltx
deleted file mode 100644
index 9db62768..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/pole/smart/pol_sim_1.ltx
+++ /dev/null
@@ -1,35 +0,0 @@
-[smart_terrain]
-squad_id = 1
-max_population = 2
-respawn_params = respawn@pol_sim_1
-respawn_only_smart = false
-respawn_idle = 172800
-respawn_radius = 200
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = nil
-;def_restr = nil
-;safe_restr = nil
-;spawn_point = nil
-
-[respawn@pol_sim_1] ;-- Type:
-spawn_all_weak
-spawn_zombie
-
-
-[spawn_all_weak] ;-- Normal mutants - Rates of groups: ( 1 tushkano + 2 dogs + 1 cats + 3 fleshes/boars )
-spawn_squads = simulation_tushkano, simulation_mix_dogs, simulation_cat, simulation_mix_boar_flesh, simulation_flesh, simulation_boar
-spawn_num = {!squad_name_exist(pol_renegade_guard1) +yan_kill_brain_done ~40} 1, 0
-
-[spawn_zombie] ;-- Weak mutants - Rates of groups: ( 1 tushkano + 2 zombie )
-spawn_squads = simulation_tushkano, simulation_zombie_3_6, simulation_mix_zombie, pol_zombie_squad_1
-spawn_num = {!squad_name_exist(pol_renegade_guard1) -yan_kill_brain_done ~40} 1, 0
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-;[exclusive]
-;guard_1 = pole\pol_sim_1_smart_logic.ltx
-
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/pole/smart/pol_sim_2.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/pole/smart/pol_sim_2.ltx
deleted file mode 100644
index 224e0b90..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/pole/smart/pol_sim_2.ltx
+++ /dev/null
@@ -1,23 +0,0 @@
-[smart_terrain] ;-- does not exist
-squad_id = 2
-;squad_count = 1
-;max_population = 1
-;respawn_params = respawn@pol_sim_2
-;respawn_only_smart = false
-;respawn_idle = 86400
-;respawn_radius = 50
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = nil
-;def_restr = nil
-;safe_restr = nil
-;spawn_point = nil
-
-;[respawn@pol_sim_2] ;-- Type:
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-;[exclusive]
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/pole/smart/pol_smart_terrain_1_1.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/pole/smart/pol_smart_terrain_1_1.ltx
deleted file mode 100644
index edc33b0e..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/pole/smart/pol_smart_terrain_1_1.ltx
+++ /dev/null
@@ -1,31 +0,0 @@
-[smart_terrain]
-squad_id = 2
-max_population = 2
-respawn_params = respawn@pol_smart_terrain_1_1
-respawn_only_smart = false
-respawn_idle = 172800
-respawn_radius = 200
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = nil
-;def_restr = nil
-;safe_restr = nil
-;spawn_point = nil
-
-[respawn@pol_smart_terrain_1_1] ;-- Type:
-spawn_mutant_mix
-
-
-[spawn_mutant_mix] ;-- Normal mutants - Rates of groups:( 1 tushkano + 1 dogs + 1 cat + 1 fleshes/boars + 1 zombie )
-spawn_squads = simulation_tushkano, simulation_mix_dogs, simulation_cat, simulation_mix_boar_flesh, pol_zombie_squad_2
-spawn_num = {!squad_name_exist(pol_smart_terrain_1_1_mlr_squad)} 1, 0
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-;[exclusive]
-;guard_1 = pole\pol_smart_terrain_1_1_smart_logic.ltx
-;patrol_1 = pole\pol_smart_terrain_1_1_smart_logic.ltx
-
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/pole/smart/pol_smart_terrain_1_2.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/pole/smart/pol_smart_terrain_1_2.ltx
deleted file mode 100644
index d523caf6..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/pole/smart/pol_smart_terrain_1_2.ltx
+++ /dev/null
@@ -1,29 +0,0 @@
-[smart_terrain]
-squad_id = 3
-max_population = 2
-respawn_params = respawn@pol_smart_terrain_1_2
-respawn_only_smart = false
-respawn_idle = 259200
-respawn_radius = 200
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = nil
-;def_restr = nil
-;safe_restr = nil
-;spawn_point = nil
-
-[respawn@pol_smart_terrain_1_2] ;-- Type:
-spawn_mutant_mix
-
-
-[spawn_mutant_mix] ;-- Normal mutants - Rates of groups:( 2 dogs + 1 cats + 1 tushkano )
-spawn_squads = simulation_dog, simulation_dog_5_7, simulation_cat, simulation_tushkano
-spawn_num = {!squad_name_exist(pol_renegade_guard1)} 1, 0
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-;[exclusive]
-;guard_1 = pole\pol_smart_terrain_1_1_smart_logic.ltx
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/pole/smart/pol_smart_terrain_1_3.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/pole/smart/pol_smart_terrain_1_3.ltx
deleted file mode 100644
index 22373fa5..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/pole/smart/pol_smart_terrain_1_3.ltx
+++ /dev/null
@@ -1,29 +0,0 @@
-[smart_terrain]
-squad_id = 4
-max_population = 2
-respawn_params = respawn@pol_smart_terrain_1_3
-respawn_only_smart = false
-respawn_idle = 172800
-respawn_radius = 200
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = nil
-;def_restr = nil
-;safe_restr = nil
-;spawn_point = nil
-
-[respawn@pol_smart_terrain_1_3] ;-- Type:
-spawn_mutant_mix
-
-
-[spawn_mutant_mix] ;-- Normal mutants - Rates of groups:( 1 zombie + 2 dogs + 1 tushkano )
-spawn_squads = pol_zombie_squad_3, simulation_dog_5_7, simulation_mix_dogs, simulation_tushkano
-spawn_num = {!squad_name_exist(pol_smart_terrain_1_3_squad) ~40} 1, 0
-
-
-;[exclusive]
-;guard_1 = pole\pol_smart_terrain_1_3_smart_logic.ltx
-;patrol_1 = pole\pol_smart_terrain_1_3_smart_logic.ltx
-
-
-
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/pole/smart/pol_smart_terrain_2_1.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/pole/smart/pol_smart_terrain_2_1.ltx
deleted file mode 100644
index a9405cfb..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/pole/smart/pol_smart_terrain_2_1.ltx
+++ /dev/null
@@ -1,33 +0,0 @@
-[smart_terrain]
-squad_id = 5
-max_population = 2
-respawn_params = respawn@pol_smart_terrain_2_1
-respawn_only_smart = false
-respawn_idle = 259200
-respawn_radius = 200
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = nil
-;def_restr = nil
-;safe_restr = nil
-;spawn_point = nil
-
-[respawn@pol_smart_terrain_2_1] ;-- Type: faction {renegade} = outpost\camp
-spawn_zombie
-
-
-[spawn_zombie] ;-- Weak mutants - Rates of groups: ( 1 tushkano + 2 zombie )
-spawn_squads = pol_zombie_squad_4, simulation_mix_zombie, simulation_tushkano
-spawn_num = {!squad_name_exist(pol_renegade_guard1) -yan_kill_brain_done ~20} 1, 0
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-[exclusive]
-pol_smart_terrain_2_1_guard_work_1 = pole\pol_smart_terrain_2_1_smart_logic.ltx
-pol_smart_terrain_2_1_guard_work_2 = pole\pol_smart_terrain_2_1_smart_logic.ltx
-pol_smart_terrain_2_1_guard_work_3 = pole\pol_smart_terrain_2_1_smart_logic.ltx
-
-;patrol_1 = pole\pol_smart_terrain_2_1_smart_logic.ltx ;-- broken
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/pole/smart/pol_smart_terrain_2_2.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/pole/smart/pol_smart_terrain_2_2.ltx
deleted file mode 100644
index 25aea8f5..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/pole/smart/pol_smart_terrain_2_2.ltx
+++ /dev/null
@@ -1,39 +0,0 @@
-[smart_terrain]
-squad_id = 6
-max_population = 2
-respawn_params = respawn@pol_smart_terrain_2_2
-respawn_only_smart = false
-respawn_idle = 259200
-respawn_radius = 200
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = nil
-;def_restr = nil
-;safe_restr = nil
-;spawn_point = nil
-
-[respawn@pol_smart_terrain_2_2] ;-- Type: faction {renegade} = outpost\camp
-spawn_mutants_mix
-spawn_zombie
-spawn_isg_special
-
-
-[spawn_mutants_mix] ;-- Normal mutants - Rates of groups:( 1 dogs + 1 cats + 2 polter + 2 karlik )
-spawn_squads = simulation_mix_dogs, simulation_cat_3_5, simulation_poltergeist_tele, simulation_poltergeist_tele, simulation_karlik, simulation_karlik
-spawn_num = {!squad_name_exist(pol_renegade_guard1) +yan_kill_brain_done} 1, 0
-
-[spawn_zombie] ;-- Weak mutants - Rates of groups: ( 3 zombie )
-spawn_squads = pol_zombie_squad_1, simulation_zombie_3_6, simulation_mix_zombie
-spawn_num = {!squad_name_exist(pol_renegade_guard1) -yan_kill_brain_done ~20} 1, 0
-
-[spawn_isg_special]
-spawn_squads = pol_smart_terrain_2_2_isg_squad
-spawn_num = {!squad_name_exist(pol_renegade_guard1) +isg_entered_the_zone ~10} 1, 0
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-;[exclusive]
-;patrol_1 = pole\pol_smart_terrain_2_2_smart_logic.ltx
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/rostok/mod_ros_crow_spawner_redone.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/rostok/mod_ros_crow_spawner_redone.ltx
deleted file mode 100644
index dbb96cf3..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/rostok/mod_ros_crow_spawner_redone.ltx
+++ /dev/null
@@ -1,20 +0,0 @@
-![logic]
-!active = sr_crow_spawner
-active = sr_idle@check_story
-
-[sr_idle@check_story]
-on_info = {-story_mode_disabled} sr_idle@check_actor, {+story_mode_disabled -yan_x16_complete_end} sr_idle@check_actor %+yan_kill_brain_done%
-
-[sr_idle@check_actor]
-on_info = {=actor_community(actor_monolith) -yan_x16_complete_end} sr_idle@check_helmet %+yan_kill_brain_done%, {=actor_community(actor_greh) -yan_x16_complete_end} sr_idle@check_helmet %+yan_kill_brain_done%, sr_idle@check_helmet
-
-[sr_idle@check_helmet]
-on_info = {=actor_has_item(good_psy_helmet)} sr_idle@check_spawner %+living_legend_psy_helmet%, {=actor_has_item(bad_psy_helmet)} sr_idle@check_spawner %+living_legend_psy_helmet%, sr_idle@check_spawner
-
-[sr_idle@check_spawner]
-on_info = {+yan_kill_brain_done} sr_crow_spawner
-
-![sr_crow_spawner]
-max_crows_on_level = 5
-spawn_path = ros_crow_spawn_1, ros_crow_spawn_2, ros_crow_spawn_3, ros_crow_spawn_4, ros_crow_spawn_5
-on_info = {-yan_kill_brain_done} sr_crow_spawner
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/rostok/ros_climb_sound_logic.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/rostok/ros_climb_sound_logic.ltx
deleted file mode 100644
index c585de6e..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/rostok/ros_climb_sound_logic.ltx
+++ /dev/null
@@ -1,34 +0,0 @@
-[logic]
-active = ph_idle@wait_actor
-
-[ph_idle@base]
-nonscript_usable = true
-
-[ph_idle@wait_actor]:ph_idle@base
-tips = Climb:Ladder
-on_use = ph_idle@reset %+ros_climb_ladder%
-
-[ph_idle@reset]
-on_info = {+ladder_sound} ph_idle@ladder_sound_1 %-ros_climb_ladder%
-
-[ph_idle@ladder_sound_1]:ph_idle@base
-on_info = %=play_sound(ros_climb_sound_1)%
-on_signal = sound_end | ph_idle@ladder_sound_2
-
-[ph_idle@ladder_sound_2]:ph_idle@base
-on_info = %=play_sound(ros_climb_sound_2)%
-on_signal = sound_end | ph_idle@ladder_sound_3
-
-[ph_idle@ladder_sound_3]:ph_idle@base
-on_info = %=play_sound(ros_climb_sound_3)%
-on_signal = sound_end | ph_idle@ladder_sound_4
-
-[ph_idle@ladder_sound_4]:ph_idle@base
-on_info = %=play_sound(ros_climb_sound_4)%
-on_signal = sound_end | ph_idle@end
-
-[ph_idle@end]
-on_timer = 2000 | ph_idle@wait_actor
-
-[collide]
-ignore_static
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/rostok/ros_climb_transition_logic.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/rostok/ros_climb_transition_logic.ltx
deleted file mode 100644
index a3706b6c..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/rostok/ros_climb_transition_logic.ltx
+++ /dev/null
@@ -1,14 +0,0 @@
-[logic]
-active = ph_idle@teleport
-
-[ph_idle@teleport]
-on_info = {=dist_to_actor_le(3) +ros_climb_ladder} ph_idle@fade_in %=run_postprocess(fade_in) +ladder_sound =disable_ui%
-
-[ph_idle@fade_in]
-on_game_timer = 15 | ph_idle@wait %=script(redone_lc_ros_transition_local:teleport_actor) -ladder_sound =enable_ui%
-
-[ph_idle@wait]
-on_timer = 2000 | ph_idle@teleport
-
-[collide]
-ignore_static
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/rostok/ros_door_hidden_logic.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/rostok/ros_door_hidden_logic.ltx
deleted file mode 100644
index 61cd9837..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/rostok/ros_door_hidden_logic.ltx
+++ /dev/null
@@ -1,30 +0,0 @@
-[logic]
-active = ph_door@closed
-
-[ph_door@closed]
-locked = false
-closed = true
-;snd_open_start = trader_door_open_start
-;snd_close_start = trader_door_close_start
-;snd_close_stop = trader_door_close_stop
-on_use = ph_door@reset %+ros_hidden_door_open% ;%=play_sound(trader_door_open_start)%
-
-[ph_door@reset]
-on_info = ph_door@open %-ros_hidden_door_open%
-
-[ph_door@open]
-locked = false
-closed = true
-;snd_open_start = trader_door_open_start
-;snd_close_start = trader_door_close_start
-;snd_close_stop = trader_door_close_stop
-on_info = ph_door@close
-
-[ph_door@close]
-on_game_timer = 10 | ph_door@end ;%=play_sound(trader_door_close_start)%
-
-[ph_door@end]
-on_timer = 1000 | ph_door@closed
-
-[collide]
-ignore_static
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/rostok/ros_door_transition_logic.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/rostok/ros_door_transition_logic.ltx
deleted file mode 100644
index f12be2a5..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/rostok/ros_door_transition_logic.ltx
+++ /dev/null
@@ -1,14 +0,0 @@
-[logic]
-active = ph_idle@teleport
-
-[ph_idle@teleport]
-on_info = {=dist_to_actor_le(1) +ros_hidden_door_open} ph_idle@fade_in %=run_postprocess(fade_in) =play_sound(trader_door_open_start) =disable_ui%
-
-[ph_idle@fade_in]
-on_game_timer = 15 | ph_idle@wait %=script(redone_lc_ros_transition_local:teleport_actor) =play_sound(trader_door_close_start) =enable_ui%
-
-[ph_idle@wait]
-on_timer = 1000 | ph_idle@teleport
-
-[collide]
-ignore_static
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/rostok/ros_endless_night_spawn_logic_1.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/rostok/ros_endless_night_spawn_logic_1.ltx
deleted file mode 100644
index 6c2e2bc9..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/rostok/ros_endless_night_spawn_logic_1.ltx
+++ /dev/null
@@ -1,31 +0,0 @@
-[logic]
-active = ph_idle@wait_actor
-
-[ph_idle@wait_actor]
-on_info = {=actor_near_smart(ros_smart_poltergeist2) =is_night} ph_idle@spawn_night_monster_1, {=actor_near_smart(ros_smart_poltergeist2) =is_dark_night} ph_idle@spawn_dark_monster_1
-on_info2 = {=actor_near_smart(ros_smart_snork1) =is_night} ph_idle@spawn_night_monster_2, {=actor_near_smart(ros_smart_snork1) =is_dark_night} ph_idle@spawn_dark_monster_2
-
-[ph_idle@spawn_night_monster_1]
-on_info = {~10} %=create_squad(simulation_psysucker_white_night:ros_smart_poltergeist2)% ph_idle@reset, {~10} %=create_squad(simulation_snork_night:ros_smart_poltergeist2)% ph_idle@reset, {~10} %=create_squad(simulation_bloodsucker_night:ros_smart_poltergeist2)% ph_idle@reset, {~10} %=create_squad(simulation_pseudodog_night:ros_smart_poltergeist2)% ph_idle@reset, ph_idle@wait_reset
-
-[ph_idle@spawn_dark_monster_1]
-on_info = {~10} %=create_squad(simulation_psysucker_white_night:ros_smart_poltergeist2)% ph_idle@reset, {~10} %=create_squad(simulation_fracture_night:ros_smart_poltergeist2)% ph_idle@reset, {~10} %=create_squad(simulation_bloodsucker_night:ros_smart_poltergeist2)% ph_idle@reset, {~10} %=create_squad(simulation_psy_dog_night:ros_smart_poltergeist2)% ph_idle@reset, ph_idle@wait_reset
-
-[ph_idle@reset]
-on_game_timer = 86400 | ph_idle@wait_actor
-
-[ph_idle@spawn_night_monster_2]
-on_info = {~10} %=create_squad(simulation_snork_night:ros_smart_snork1)% ph_idle@reset_2, {~10} %=create_squad(simulation_fracture_night:ros_smart_snork1)% ph_idle@reset_2, {~10} %=create_squad(simulation_zombie_blind_night:ros_smart_snork1)% ph_idle@reset_2, {~10} %=create_squad(simulation_bloodsucker_red_night:ros_smart_snork1)% ph_idle@reset_2, ph_idle@wait_reset
-
-[ph_idle@spawn_dark_monster_2]
-on_info = {~10} %=create_squad(simulation_zombie_blind_3zomb_civ_night:ros_smart_snork1)% ph_idle@reset_2, {~10} %=create_squad(simulation_fracture_night:ros_smart_snork1)% ph_idle@reset_2, {~10} %=create_squad(simulation_psysucker_brown_night:ros_smart_snork1)% ph_idle@reset_2, {~10} %=create_squad(simulation_bloodsucker_red_night:ros_smart_snork1)% ph_idle@reset_2, ph_idle@wait_reset
-
-[ph_idle@reset_2]
-on_game_timer = 86400 | ph_idle@wait_actor
-
-
-[ph_idle@wait_reset]
-on_game_timer = 580 | ph_idle@wait_actor
-
-[collide]
-ignore_static
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/rostok/ros_endless_night_spawn_logic_2.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/rostok/ros_endless_night_spawn_logic_2.ltx
deleted file mode 100644
index 452a1ef1..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/rostok/ros_endless_night_spawn_logic_2.ltx
+++ /dev/null
@@ -1,20 +0,0 @@
-[logic]
-active = ph_idle@wait_actor
-
-[ph_idle@wait_actor]
-on_info = {=actor_near_smart(ros_smart_monster4) =is_night} ph_idle@spawn_night_monster_1, {=actor_near_smart(ros_smart_monster4) =is_dark_night} ph_idle@spawn_dark_monster_1
-
-[ph_idle@spawn_night_monster_1]
-on_info = {~10} %=create_squad(simulation_dog_night:ros_smart_monster4)% ph_idle@reset, {~10} %=create_squad(simulation_zombie_blind_3zomb_civ_night:ros_smart_monster4)% ph_idle@reset, {~10} %=create_squad(simulation_bloodsucker_red_night:ros_smart_monster4)% ph_idle@reset, {~10} %=create_squad(simulation_psysucker_brown_night:ros_smart_monster4)% ph_idle@reset, ph_idle@wait_reset
-
-[ph_idle@spawn_dark_monster_1]
-on_info = {~10} %=create_squad(simulation_mix_zombie_night:ros_smart_monster4)% ph_idle@reset, {~10} %=create_squad(simulation_snork_night:ros_smart_monster4)% ph_idle@reset, {~10} %=create_squad(simulation_bloodsucker_red_night:ros_smart_monster4)% ph_idle@reset, {~10} %=create_squad(simulation_psysucker_brown_night:ros_smart_monster4)% ph_idle@reset, ph_idle@wait_reset
-
-[ph_idle@reset]
-on_game_timer = 86400 | ph_idle@wait_actor
-
-[ph_idle@wait_reset]
-on_game_timer = 580 | ph_idle@wait_actor
-
-[collide]
-ignore_static
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/rostok/ros_endless_night_spawn_logic_3.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/rostok/ros_endless_night_spawn_logic_3.ltx
deleted file mode 100644
index 83536e48..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/rostok/ros_endless_night_spawn_logic_3.ltx
+++ /dev/null
@@ -1,20 +0,0 @@
-[logic]
-active = ph_idle@wait_actor
-
-[ph_idle@wait_actor]
-on_info = {=actor_near_smart(ros_smart_monster5) =is_night} ph_idle@spawn_night_monster_1, {=actor_near_smart(ros_smart_monster5) =is_dark_night} ph_idle@spawn_dark_monster_1
-
-[ph_idle@spawn_night_monster_1]
-on_info = {~10} %=create_squad(simulation_bloodsucker_red_night:ros_smart_monster5)% ph_idle@reset, {~10} %=create_squad(simulation_psysucker_brown_night:ros_smart_monster5)% ph_idle@reset, {~10} %=create_squad(simulation_poltergeist_black_night:ros_smart_monster5)% ph_idle@reset, {~10} %=create_squad(simulation_burer_night:ros_smart_monster5)% ph_idle@reset, ph_idle@wait_reset
-
-[ph_idle@spawn_dark_monster_1]
-on_info = {~10} %=create_squad(simulation_gigant_night:ros_smart_monster5)% ph_idle@reset, {~10} %=create_squad(simulation_chimera_night:ros_smart_monster5)% ph_idle@reset, {~10} %=create_squad(simulation_poltergeist_black_night:ros_smart_monster5)% ph_idle@reset, {~10} %=create_squad(simulation_burer_night:ros_smart_monster5)% ph_idle@reset, ph_idle@wait_reset
-
-[ph_idle@reset]
-on_game_timer = 86400 | ph_idle@wait_actor
-
-[ph_idle@wait_reset]
-on_game_timer = 580 | ph_idle@wait_actor
-
-[collide]
-ignore_static
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/rostok/ros_lc_transition_logic_hid.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/rostok/ros_lc_transition_logic_hid.ltx
deleted file mode 100644
index 1e6b18fe..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/rostok/ros_lc_transition_logic_hid.ltx
+++ /dev/null
@@ -1,14 +0,0 @@
-[logic]
-active = ph_idle@teleport
-
-[ph_idle@teleport]
-on_info = {=dist_to_actor_le(0.5)} ph_idle@fade_in %=run_postprocess(fade_in) =disable_ui%
-
-[ph_idle@fade_in]
-on_game_timer = 15 | ph_idle@wait %=script(redone_lc_ros_transition_local:teleport_actor) =enable_ui%
-
-[ph_idle@wait]
-on_timer = 5000 | ph_idle@teleport
-
-[collide]
-ignore_static
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/rostok/ros_smart_stalker_killers1_smart_logic.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/rostok/ros_smart_stalker_killers1_smart_logic.ltx
deleted file mode 100644
index d7d80f40..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/rostok/ros_smart_stalker_killers1_smart_logic.ltx
+++ /dev/null
@@ -1,92 +0,0 @@
-[logic@ros_smart_stalker_killers1_guard_work_1]
-active = beh@ros_smart_stalker_killers1_guard_work_1
-suitable = {!surge_started} true
-prior = 200
-
-[logic@ros_smart_stalker_killers1_guard_work_2]
-active = beh@ros_smart_stalker_killers1_guard_work_2
-suitable = {!surge_started} true
-prior = 200
-
-[logic@ros_smart_stalker_killers1_guard_work_3]
-active = beh@ros_smart_stalker_killers1_guard_work_3
-suitable = {!surge_started} true
-prior = 200
-
-[logic@ros_smart_stalker_killers1_guard_work_4]
-active = beh@ros_smart_stalker_killers1_guard_work_4
-suitable = {!surge_started} true
-prior = 200
-
-[logic@ros_smart_stalker_killers1_guard_work_5]
-active = beh@ros_smart_stalker_killers1_guard_work_5
-suitable = {!surge_started} true
-prior = 200
-
-[logic@ros_smart_stalker_killers1_camp_work_1]
-active = beh@ros_smart_stalker_killers1_camp_work_1
-suitable = {!surge_started} true
-prior = 45
-
-[logic@ros_smart_stalker_killers1_camp_work_2]
-active = beh@ros_smart_stalker_killers1_camp_work_2
-suitable = {!surge_started} true
-prior = 45
-
-[beh@general_guard]
-behavior_state = beh_move
-target = waypoint
-walk_dist = 100
-jog_dist = 220
-walk_anim = rush
-jog_anim = rush
-run_anim = rush
-delay_anim = guard
-gather_items_enabled = false
-help_wounded_enabled = false
-corpse_detection_enabled = false
-invulnerable = {!actor_true_enemy} true, false
-
-[beh@general_work]
-behavior_state = beh_move
-target = waypoint
-walk_dist = 90
-jog_dist = 150
-wait_anim = guard
-jog_anim = assault
-run_anim = assault
-delay_anim = guard
-use_camp = true
-turn_on_campfire = true
-gather_items_enabled = false
-help_wounded_enabled = true
-corpse_detection_enabled = true
-
-[beh@ros_smart_stalker_killers1_guard_work_1]:beh@general_guard
-pt1 = 88860000,hide | pos: -226.03277587891, 4.5571184158325, 53.652900695801 look: -225.60137939453, 4.9697222709656, 54.408302307129
-path_end = loop
-
-[beh@ros_smart_stalker_killers1_guard_work_2]:beh@general_guard
-pt1 = 88860000,hide | pos: -239.54244995117, 4.5597152709961, 61.015357971191 look: -239.04281616211, 4.8370161056519, 61.862991333008
-path_end = loop
-
-[beh@ros_smart_stalker_killers1_guard_work_3]:beh@general_guard
-pt1 = 88860000,hide | pos: -244.99716491699, 4.5565819740295, 55.532032012939 look: -245.32739257812, 4.5406951904297, 55.849632263184
-path_end = loop
-
-[beh@ros_smart_stalker_killers1_guard_work_4]:beh@general_guard
-pt1 = 88860000,guard | pos: look:
-path_end = loop
-
-[beh@ros_smart_stalker_killers1_guard_work_5]:beh@general_guard
-pt1 = 88860000,guard | pos: look:
-path_end = loop
-
-[beh@ros_smart_stalker_killers1_camp_work_1]:beh@general_work
-pt1 = 88860000,sit_ass | pos: -264.59246826172, -0.0015785992145538, 12.501624107361 look: -263.22497558594, 0.34754139184952, 14.234840393066
-path_end = loop
-
-[beh@ros_smart_stalker_killers1_camp_work_2]:beh@general_work
-pt1 = 88860000,sit_ass | pos: -264.58145141602, -0.007137805223465, 16.577444076538 look: -263.22497558594, 0.34754139184952, 14.234840393066
-path_end = loop
-
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/rostok/smart/ros_smart_killers1.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/rostok/smart/ros_smart_killers1.ltx
deleted file mode 100644
index 55761793..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/rostok/smart/ros_smart_killers1.ltx
+++ /dev/null
@@ -1,27 +0,0 @@
-[smart_terrain]
-squad_id = 2
-max_population = 2
-respawn_params = respawn@ros_smart_killers1
-respawn_only_smart = false
-respawn_idle = 172800
-respawn_radius = 50
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = nil
-;def_restr = nil
-;safe_restr = nil
-;spawn_point = nil
-
-faction_controlled = stalker, bandit, killer, dolg, army,
-default_faction = killer
-faction_respawn_num = 1
-
-;[respawn@ros_smart_killers1] ;-- Type:
-
-
-[on_changing_level]
-on_info = %=script(redone_xr_dynamic_object:dynamic_object:misc\spawn_object\ros_smart_killers1_object.ltx)%
-
-;[smart_control]
-
-;[exclusive]
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/rostok/smart/ros_smart_monster4.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/rostok/smart/ros_smart_monster4.ltx
deleted file mode 100644
index ac09cd00..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/rostok/smart/ros_smart_monster4.ltx
+++ /dev/null
@@ -1,33 +0,0 @@
-[smart_terrain]
-squad_id = 5
-max_population = 2
-respawn_params = respawn@ros_smart_monster4
-respawn_only_smart = false
-respawn_idle = 43200
-respawn_radius = 50
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = nil
-;def_restr = nil
-;safe_restr = nil
-;spawn_point = nil
-
-[respawn@ros_smart_monster4] ;-- Type: faction {zombied} = wahyy...
-spawn_zombie
-spawn_mutants
-
-
-[spawn_zombie] ;-- Weak\normal mutants - Rates of groups: ( 4 zombie )
-spawn_squads = simulation_zombie, simulation_zombie_3_6, simulation_mix_zombie, simulation_zombie_blind_3zomb_civ
-spawn_num = {+yan_kill_brain_done} 0, 1
-
-[spawn_mutants] ;-- Normal\hard mutants - Rates of groups: ( 1 tushkano + 2 dogs + 1 cat + 2 snork + 1 fracture + 1 psy dog + 1 lurker )
-spawn_squads = simulation_tushkano_7_10, simulation_dog_5_7, simulation_mix_dogs, simulation_cat_3_5, simulation_snork_2_3, simulation_snork_2_5, simulation_fracture, simulation_psy_dog, simulation_lurker_1_2
-spawn_num = {+yan_kill_brain_done} 1, 0
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-;[exclusive]
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/rostok/smart/ros_smart_monster5.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/rostok/smart/ros_smart_monster5.ltx
deleted file mode 100644
index fc7a6caf..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/rostok/smart/ros_smart_monster5.ltx
+++ /dev/null
@@ -1,38 +0,0 @@
-[smart_terrain]
-squad_id = 6
-max_population = 2
-respawn_params = respawn@ros_smart_monster5
-respawn_only_smart = false
-respawn_idle = 172800
-respawn_radius = 50
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = nil
-;def_restr = nil
-;safe_restr = nil
-;spawn_point = nil
-
-[respawn@ros_smart_monster5] ;-- Type: faction {zombied} = wahat...
-spawn_zombie
-spawn_mutants
-spawn_mutants_rare
-
-
-[spawn_zombie] ;-- Normal mutants - Rates of groups: ( 3 zombie + 1 zombied )
-spawn_squads = simulation_zombie_3_6, simulation_mix_zombie, zombied_sim_squad_mix
-spawn_num = {+yan_kill_brain_done} 0, 1
-
-[spawn_mutants] ;-- Normal mutants - Rates of groups: ( 1 tushkano + 1 dog + 2 snork + 1 fracture )
-spawn_squads = simulation_tushkano_7_10, simulation_mix_dogs, simulation_snork_2_3, simulation_snork_2_5, simulation_fracture
-spawn_num = {+yan_kill_brain_done} 1, 0
-
-[spawn_mutants_rare] ;-- Rare mutants - Rates of groups: ( 1 polter )
-spawn_squads = simulation_poltergeist_tele ;simulation_poltergeist_black
-spawn_num = {~20} 1, 0
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-;[exclusive]
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/rostok/smart/ros_smart_monster7.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/rostok/smart/ros_smart_monster7.ltx
deleted file mode 100644
index b97e8bdc..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/rostok/smart/ros_smart_monster7.ltx
+++ /dev/null
@@ -1,28 +0,0 @@
-[smart_terrain]
-squad_id = 8
-max_population = 1
-respawn_params = respawn@ros_smart_monster7
-respawn_only_smart = true
-respawn_idle = 345600
-respawn_radius = 50
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = nil
-;def_restr = nil
-;safe_restr = nil
-;spawn_point = nil
-
-[respawn@ros_smart_monster7] ;-- Type:
-spawn_all_normal
-
-
-[spawn_all_normal] ;-- Normal\hard mutants - Rates of groups: ( 1 tushkano + 2 dogs + 1 cat + 2 snork )
-spawn_squads = simulation_tushkano_7_10, simulation_dog_5_7, simulation_mix_dogs, simulation_cat_3_5, simulation_snork_2_3, simulation_snork_2_5
-spawn_num = {+yan_kill_brain_done ~50} 1, 0
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-;[exclusive]
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/rostok/smart/ros_smart_poltergeist2.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/rostok/smart/ros_smart_poltergeist2.ltx
deleted file mode 100644
index acd360a1..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/rostok/smart/ros_smart_poltergeist2.ltx
+++ /dev/null
@@ -1,33 +0,0 @@
-[smart_terrain]
-squad_id = 11
-max_population = 2
-respawn_params = respawn@ros_smart_poltergeist2
-respawn_only_smart = false
-respawn_idle = 259200
-respawn_radius = 50
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = nil
-;def_restr = nil
-;safe_restr = nil
-;spawn_point = nil
-
-[respawn@ros_smart_poltergeist2] ;-- Type:
-spawn_tushkano
-spawn_snork
-
-
-[spawn_tushkano] ;-- Weak mutants - Rates of groups: ( 2 tushkano )
-spawn_squads = simulation_tushkano, simulation_tushkano_7_10
-spawn_num = {~20} 1, 0
-
-[spawn_snork] ;-- Normal\hard mutants - Rates of groups: ( 3 snork )
-spawn_squads = simulation_snork, simulation_snork_2_3, simulation_snork_2_5
-spawn_num = {+yan_kill_brain_done} 1, 0
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-;[exclusive]
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/rostok/smart/ros_smart_snork1.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/rostok/smart/ros_smart_snork1.ltx
deleted file mode 100644
index f6bbf6be..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/rostok/smart/ros_smart_snork1.ltx
+++ /dev/null
@@ -1,35 +0,0 @@
-[smart_terrain]
-squad_id = 12
-max_population = 1
-respawn_params = respawn@ros_smart_snork1
-respawn_only_smart = false
-respawn_idle = 172800
-respawn_radius = 50
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = nil
-;def_restr = nil
-;safe_restr = nil
-;spawn_point = nil
-
-[respawn@ros_smart_snork1] ;-- Type:
-spawn_dogs
-spawn_snork
-
-
-[spawn_dogs] ;-- Normal\hard mutants - Rates of groups: ( 3 dogs )
-spawn_squads = simulation_dog, simulation_dog_5_7, simulation_mix_dogs
-spawn_num = 1
-
-[spawn_snork] ;-- Normal\hard mutants - Rates of groups: ( 3 snork + 1 fracture )
-spawn_squads = simulation_snork, simulation_snork_2_3, simulation_snork_2_5, simulation_fracture
-spawn_num = 1
-
-
-[on_changing_level]
-on_info = %=script(redone_xr_dynamic_object:dynamic_object:misc\spawn_object\ros_smart_snork1_objects.ltx)%
-
-;[smart_control]
-
-;[exclusive]
-
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/rostok/smart/ros_smart_stalker1.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/rostok/smart/ros_smart_stalker1.ltx
deleted file mode 100644
index 548714ab..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/rostok/smart/ros_smart_stalker1.ltx
+++ /dev/null
@@ -1,22 +0,0 @@
-[smart_terrain] ;-- Disabled spawn
-squad_id = 15
-;max_population = 1
-;respawn_params = respawn@ros_smart_stalker1
-;respawn_only_smart = false
-;respawn_idle = 86400
-;respawn_radius = 50
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = nil
-;def_restr = nil
-;safe_restr = nil
-;spawn_point = nil
-
-;[respawn@ros_smart_stalker1] ;-- Type:
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-;[exclusive]
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/rostok/smart/ros_smart_stalker_killers1.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/rostok/smart/ros_smart_stalker_killers1.ltx
deleted file mode 100644
index ccdb25b5..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/rostok/smart/ros_smart_stalker_killers1.ltx
+++ /dev/null
@@ -1,35 +0,0 @@
-[smart_terrain]
-squad_id = 14
-max_population = 2
-respawn_params = respawn@ros_smart_stalker_killers1
-respawn_only_smart = false
-respawn_idle = 172800
-respawn_radius = 50
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = nil
-;def_restr = nil
-;safe_restr = nil
-;spawn_point = nil
-
-faction_controlled = bandit, killer, dolg, army
-default_faction = killer
-faction_respawn_num = 1
-
-;[respawn@ros_smart_stalker_killers1] ;-- Type:
-
-
-[on_changing_level]
-on_info = %=script(redone_xr_dynamic_object:dynamic_object:misc\spawn_object\ros_smart_stalker_killers1_objects.ltx)%
-
-;[smart_control]
-
-[exclusive]
-ros_smart_stalker_killers1_guard_work_1 = rostok\ros_smart_stalker_killers1_smart_logic.ltx
-ros_smart_stalker_killers1_guard_work_2 = rostok\ros_smart_stalker_killers1_smart_logic.ltx
-ros_smart_stalker_killers1_guard_work_3 = rostok\ros_smart_stalker_killers1_smart_logic.ltx
-;ros_smart_stalker_killers1_guard_work_4 = rostok\ros_smart_stalker_killers1_smart_logic.ltx
-;ros_smart_stalker_killers1_guard_work_5 = rostok\ros_smart_stalker_killers1_smart_logic.ltx
-
-ros_smart_stalker_killers1_camp_work_1 = rostok\ros_smart_stalker_killers1_smart_logic.ltx
-;ros_smart_stalker_killers1_camp_work_2 = rostok\ros_smart_stalker_killers1_smart_logic.ltx
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/trucks_cemetery/mod_trc_crow_spawner_redone.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/trucks_cemetery/mod_trc_crow_spawner_redone.ltx
deleted file mode 100644
index ac4f85b6..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/trucks_cemetery/mod_trc_crow_spawner_redone.ltx
+++ /dev/null
@@ -1,19 +0,0 @@
-![logic]
-!active = sr_crow_spawner
-active = sr_idle@check_story
-
-[sr_idle@check_story]
-on_info = {-story_mode_disabled} sr_idle@check_actor, {+story_mode_disabled -yan_x16_complete_end} sr_idle@check_actor %+yan_kill_brain_done%
-
-[sr_idle@check_actor]
-on_info = {=actor_community(actor_monolith) -yan_x16_complete_end} sr_idle@check_helmet %+yan_kill_brain_done%, {=actor_community(actor_greh) -yan_x16_complete_end} sr_idle@check_helmet %+yan_kill_brain_done%, sr_idle@check_helmet
-
-[sr_idle@check_helmet]
-on_info = {=actor_has_item(good_psy_helmet)} sr_idle@check_spawner %+living_legend_psy_helmet%, {=actor_has_item(bad_psy_helmet)} sr_idle@check_spawner %+living_legend_psy_helmet%, sr_idle@check_spawner
-
-[sr_idle@check_spawner]
-on_info = sr_crow_spawner
-
-![sr_crow_spawner]
-max_crows_on_level = 5
-spawn_path = trc_crow_spawn_1, trc_crow_spawn_2, trc_crow_spawn_3, trc_crow_spawn_4, trc_crow_spawn_5
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/trucks_cemetery/smart/trc_sim_1.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/trucks_cemetery/smart/trc_sim_1.ltx
deleted file mode 100644
index 390eb5a5..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/trucks_cemetery/smart/trc_sim_1.ltx
+++ /dev/null
@@ -1,33 +0,0 @@
-[smart_terrain]
-squad_id = 1
-max_population = 1
-respawn_params = respawn@trc_sim_1
-respawn_only_smart = false
-respawn_idle = 172800
-respawn_radius = 50
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = nil
-;def_restr = nil
-;safe_restr = nil
-;spawn_point = nil
-
-[respawn@trc_sim_1] ;-- Type: faction {bandit, renegade} = campsite
-spawn_bandits@novice
-spawn_renegade@novice
-
-
-[spawn_bandits@novice]
-spawn_squads = bandit_sim_squad_novice, renegade_sim_squad_novice, renegade_sim_squad_advanced
-spawn_num = {+zat_b5_sultan_dead} 0, 2
-
-[spawn_renegade@novice]
-spawn_squads = renegade_sim_squad_novice, renegade_sim_squad_novice, renegade_sim_squad_advanced
-spawn_num = {+zat_b5_sultan_dead} 2, 0
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-;[exclusive]
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/trucks_cemetery/smart/trc_sim_10.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/trucks_cemetery/smart/trc_sim_10.ltx
deleted file mode 100644
index 1c23c5e6..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/trucks_cemetery/smart/trc_sim_10.ltx
+++ /dev/null
@@ -1,26 +0,0 @@
-[smart_terrain]
-squad_id = 10
-max_population = 2
-respawn_params = respawn@trc_sim_10
-respawn_only_smart = false
-respawn_idle = 86400
-respawn_radius = 50
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = nil
-;def_restr = nil
-;safe_restr = nil
-;spawn_point = nil
-
-faction_controlled = stalker, bandit, csky, ecolog, dolg
-default_faction = dolg
-faction_respawn_num = 1
-
-;[respawn@trc_sim_10] ;-- Type:
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-;[exclusive]
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/trucks_cemetery/smart/trc_sim_11.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/trucks_cemetery/smart/trc_sim_11.ltx
deleted file mode 100644
index 4d08094a..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/trucks_cemetery/smart/trc_sim_11.ltx
+++ /dev/null
@@ -1,23 +0,0 @@
-[smart_terrain] ;-- Disabled spawn
-squad_id = 11
-max_population = 1
-;respawn_params = respawn@trc_sim_14
-;respawn_only_smart = false
-;respawn_idle = 86400
-;respawn_radius = 50
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = nil
-;def_restr = nil
-;safe_restr = nil
-;spawn_point = nil
-
-;[respawn@trc_sim_14] ;-- Type:
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-;[exclusive]
-
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/trucks_cemetery/smart/trc_sim_12.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/trucks_cemetery/smart/trc_sim_12.ltx
deleted file mode 100644
index b63227f9..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/trucks_cemetery/smart/trc_sim_12.ltx
+++ /dev/null
@@ -1,33 +0,0 @@
-[smart_terrain]
-squad_id = 12
-max_population = 1
-respawn_params = respawn@trc_sim_12
-respawn_only_smart = false
-respawn_idle = 86400
-respawn_radius = 50
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = nil
-;def_restr = nil
-;safe_restr = nil
-;spawn_point = nil
-
-[respawn@trc_sim_12] ;-- Type: c_2_1 + c_2_2 edited
-spawn_predatory_c_2_1
-spawn_predatory_c_2_2
-
-
-[spawn_predatory_c_2_1] ;-- Hard mutants - Rates of groups: ( 1 dogs + 3 lurker + 1 psy dog )
-spawn_squads = simulation_mix_dogs, simulation_lurker_blue, simulation_lurker_brown, simulation_lurker_black, simulation_psy_dog
-spawn_num = {!actor_week_in_zone(4)} 1, {=actor_week_in_zone(4)} 0
-
-[spawn_predatory_c_2_2] ;-- Hard mutants - Rates of groups: ( 1 dogs + 2 lurker + 1 psy dog )
-spawn_squads = simulation_mix_dogs, simulation_lurker, simulation_lurker_1_2, simulation_psy_dog_squad
-spawn_num = {=actor_week_in_zone(4)} 1, {!actor_week_in_zone(4)} 0
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-;[exclusive]
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/trucks_cemetery/smart/trc_sim_13.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/trucks_cemetery/smart/trc_sim_13.ltx
deleted file mode 100644
index 89c7f81d..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/trucks_cemetery/smart/trc_sim_13.ltx
+++ /dev/null
@@ -1,33 +0,0 @@
-[smart_terrain]
-squad_id = 13
-max_population = 2
-respawn_params = respawn@trc_sim_13
-respawn_only_smart = false
-respawn_idle = 172800
-respawn_radius = 50
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = nil
-;def_restr = nil
-;safe_restr = nil
-;spawn_point = nil
-
-[respawn@trc_sim_13] ;-- Type:
-spawn_zombie
-spawn_snork
-
-
-[spawn_zombie] ;-- Weak mutants - Rates of groups: ( 3 zombie )
-spawn_squads = simulation_zombie, simulation_zombie_3_6, simulation_mix_zombie
-spawn_num = {+bar_deactivate_radar_done +yan_kill_brain_done} 0, 1
-
-[spawn_snork] ;-- Normal\hard mutants - Rates of groups: ( 2 snork + 2 fracture )
-spawn_squads = simulation_snork_2_3, simulation_snork_2_5, simulation_fracture, simulation_fracture
-spawn_num = {+bar_deactivate_radar_done +yan_kill_brain_done} 1, 0
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-;[exclusive]
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/trucks_cemetery/smart/trc_sim_14.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/trucks_cemetery/smart/trc_sim_14.ltx
deleted file mode 100644
index cc36c8b3..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/trucks_cemetery/smart/trc_sim_14.ltx
+++ /dev/null
@@ -1,28 +0,0 @@
-[smart_terrain]
-squad_id = 14
-max_population = 1
-respawn_params = respawn@trc_sim_14
-respawn_only_smart = false
-respawn_idle = 43200
-respawn_radius = 50
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = nil
-;def_restr = nil
-;safe_restr = nil
-;spawn_point = nil
-
-[respawn@trc_sim_14] ;-- Type:
-spawn_tushkano
-
-
-[spawn_tushkano] ;-- Weak mutants - Rates of groups: ( 2 tushkano )
-spawn_squads = simulation_tushkano, simulation_tushkano_7_10
-spawn_num = 2
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-;[exclusive]
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/trucks_cemetery/smart/trc_sim_15.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/trucks_cemetery/smart/trc_sim_15.ltx
deleted file mode 100644
index fe92d770..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/trucks_cemetery/smart/trc_sim_15.ltx
+++ /dev/null
@@ -1,33 +0,0 @@
-[smart_terrain]
-squad_id = 15
-max_population = 2
-respawn_params = respawn@trc_sim_15
-respawn_only_smart = false
-respawn_idle = 43200
-respawn_radius = 50
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = nil
-;def_restr = nil
-;safe_restr = nil
-;spawn_point = nil
-
-[respawn@trc_sim_15] ;-- Type:
-spawn_snork
-spawn_lurker
-
-
-[spawn_snork] ;-- Normal mutants - Rates of groups: ( 3 snork )
-spawn_squads = simulation_snork, simulation_snork_2_3, simulation_snork_2_5
-spawn_num = 2
-
-[spawn_lurker] ;-- Hard mutants - Rates of groups: ( 2 lurker )
-spawn_squads = simulation_lurker, simulation_lurker_blue
-spawn_num = {~50} 1, 0
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-;[exclusive]
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/trucks_cemetery/smart/trc_sim_16.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/trucks_cemetery/smart/trc_sim_16.ltx
deleted file mode 100644
index def23e0a..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/trucks_cemetery/smart/trc_sim_16.ltx
+++ /dev/null
@@ -1,33 +0,0 @@
-[smart_terrain]
-squad_id = 16
-max_population = 1
-respawn_params = respawn@trc_sim_16
-respawn_only_smart = false
-respawn_idle = 43200
-respawn_radius = 50
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = nil
-;def_restr = nil
-;safe_restr = nil
-;spawn_point = nil
-
-[respawn@trc_sim_16] ;-- Type: c_1_1 + c_1_2 edited
-spawn_all_weak_c_1_1
-spawn_all_normal_c_1_2
-
-
-[spawn_all_weak_c_1_1] ;-- Normal mutants - Rates of groups: ( 1 tushkano + 2 dogs + 1 pseudodog +1 cats )
-spawn_squads = simulation_tushkano, simulation_dog, simulation_mix_dogs, simulation_pseudodog, simulation_cat
-spawn_num = {!actor_week_in_zone(1)} 1, {=actor_week_in_zone(1)} 0
-
-[spawn_all_normal_c_1_2];-- Normal mutants - Rates of groups: ( 2 dogs + 1 pseudodog + 3 fleshes/boars )
-spawn_squads = simulation_dog, simulation_mix_dogs, simulation_pseudodog, simulation_mix_boar_flesh, simulation_flesh, simulation_boar_3_5
-spawn_num = {=actor_week_in_zone(1)} 1, {!actor_week_in_zone(1)} 0
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-;[exclusive]
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/trucks_cemetery/smart/trc_sim_17.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/trucks_cemetery/smart/trc_sim_17.ltx
deleted file mode 100644
index 1fc6fc68..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/trucks_cemetery/smart/trc_sim_17.ltx
+++ /dev/null
@@ -1,38 +0,0 @@
-[smart_terrain]
-squad_id = 17
-max_population = 1
-respawn_params = respawn@trc_sim_17
-respawn_only_smart = false
-respawn_idle = 86400
-respawn_radius = 50
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = nil
-;def_restr = nil
-;safe_restr = nil
-;spawn_point = nil
-
-[respawn@trc_sim_17] ;-- Type: faction {zombied} = wahyy...
-spawn_zombied_squad
-spawn_zombie
-spawn_snork
-
-
-[spawn_zombied_squad]
-spawn_squads = zombied_sim_squad_novice, zombied_sim_squad_novice, zombied_sim_squad_mix
-spawn_num = {+bar_deactivate_radar_done} 0, 1
-
-[spawn_zombie] ;-- Normal mutants - Rates of groups: ( 2 zombie )
-spawn_squads = simulation_zombie_blind_3zomb, simulation_zombie_blind_3zomb_civ
-spawn_num = {+bar_deactivate_radar_done +yan_kill_brain_done} 0, 1
-
-[spawn_snork] ;-- Normal\hard mutants - Rates of groups: ( 2 snork + 2 fracture )
-spawn_squads = simulation_snork_2_3, simulation_snork_2_5, simulation_fracture, simulation_fracture
-spawn_num = {+bar_deactivate_radar_done +yan_kill_brain_done} 1, 0
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-;[exclusive]
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/trucks_cemetery/smart/trc_sim_18.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/trucks_cemetery/smart/trc_sim_18.ltx
deleted file mode 100644
index 374bb2e6..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/trucks_cemetery/smart/trc_sim_18.ltx
+++ /dev/null
@@ -1,26 +0,0 @@
-[smart_terrain]
-squad_id = 18
-max_population = 2
-respawn_params = respawn@trc_sim_18
-respawn_only_smart = false
-respawn_idle = 86400
-respawn_radius = 50
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = nil
-;def_restr = nil
-;safe_restr = nil
-;spawn_point = nil
-
-faction_controlled = stalker, bandit, freedom, army, dolg, renegade
-default_faction = army
-faction_respawn_num = 1
-
-;[respawn@trc_sim_18] ;-- Type:
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-;[exclusive]
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/trucks_cemetery/smart/trc_sim_19.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/trucks_cemetery/smart/trc_sim_19.ltx
deleted file mode 100644
index 62905bd1..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/trucks_cemetery/smart/trc_sim_19.ltx
+++ /dev/null
@@ -1,33 +0,0 @@
-[smart_terrain]
-squad_id = 19
-max_population = 1
-respawn_params = respawn@trc_sim_19
-respawn_only_smart = false
-respawn_idle = 86400
-respawn_radius = 50
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = nil
-;def_restr = nil
-;safe_restr = nil
-;spawn_point = nil
-
-[respawn@trc_sim_19] ;-- Type: c_1_1 + c_1_2 edited
-spawn_all_weak_c_1_1
-spawn_all_normal_c_1_2
-
-
-[spawn_all_weak_c_1_1] ;-- Normal mutants - Rates of groups: ( 1 tushkano + 2 dogs + 1 pseudodog + 1 cats +1 flesh )
-spawn_squads = simulation_tushkano, simulation_dog, simulation_mix_dogs, simulation_pseudodog, simulation_cat, simulation_flesh
-spawn_num = {!actor_week_in_zone(1)} 1, {=actor_week_in_zone(1)} 0
-
-[spawn_all_normal_c_1_2];-- Normal mutants - Rates of groups: ( 2 dogs + 1 pseudodog + 3 fleshes/boars )
-spawn_squads = simulation_dog, simulation_mix_dogs, simulation_pseudodog, simulation_mix_boar_flesh, simulation_flesh, simulation_boar_3_5
-spawn_num = {=actor_week_in_zone(1)} 1, {!actor_week_in_zone(1)} 0
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-;[exclusive]
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/trucks_cemetery/smart/trc_sim_2.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/trucks_cemetery/smart/trc_sim_2.ltx
deleted file mode 100644
index 2e7b3f08..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/trucks_cemetery/smart/trc_sim_2.ltx
+++ /dev/null
@@ -1,23 +0,0 @@
-[smart_terrain] ;-- Disabled spawn
-squad_id = 2
-max_population = 1
-;respawn_params = respawn@trc_sim_2
-;respawn_only_smart = false
-;respawn_idle = 86400
-;respawn_radius = 50
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = nil
-;def_restr = nil
-;safe_restr = nil
-;spawn_point = nil
-
-;[respawn@trc_sim_2] ;-- Type:
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-;[exclusive]
-
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/trucks_cemetery/smart/trc_sim_20.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/trucks_cemetery/smart/trc_sim_20.ltx
deleted file mode 100644
index 25f1a5cc..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/trucks_cemetery/smart/trc_sim_20.ltx
+++ /dev/null
@@ -1,37 +0,0 @@
-[smart_terrain]
-squad_id = 20
-max_population = 1
-respawn_params = respawn@trc_sim_20
-respawn_only_smart = false
-respawn_idle = 43200
-respawn_radius = 50
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = nil
-;def_restr = nil
-;safe_restr = nil
-;spawn_point = nil
-
-[respawn@trc_sim_20] ;-- Type: faction {bandit, renegade} = outpost
-spawn_bandit@novice
-spawn_renegade@novice
-
-
-[spawn_bandit@novice]
-spawn_squads = bandit_sim_squad_novice, bandit_sim_squad_novice, bandit_sim_squad_advanced
-spawn_num = {+zat_b5_sultan_dead} 4, 2
-
-[spawn_renegade@novice]
-spawn_squads = renegade_sim_squad_novice, renegade_sim_squad_novice, renegade_sim_squad_advanced
-spawn_num = {+zat_b5_sultan_dead} 4, 2
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-[exclusive]
-trucks_cemetery_bandit_mechanic = trucks_cemetery\trucks_cemetery_bandit_mechanic_logic.ltx
-trucks_cemetery_bandit_trader = trucks_cemetery\trucks_cemetery_bandit_trader_logic.ltx
-
-
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/trucks_cemetery/smart/trc_sim_21.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/trucks_cemetery/smart/trc_sim_21.ltx
deleted file mode 100644
index 1c6bfd76..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/trucks_cemetery/smart/trc_sim_21.ltx
+++ /dev/null
@@ -1,33 +0,0 @@
-[smart_terrain]
-squad_id = 21
-max_population = 1
-respawn_params = respawn@trc_sim_21
-respawn_only_smart = false
-respawn_idle = 345600
-respawn_radius = 50
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = nil
-;def_restr = nil
-;safe_restr = nil
-;spawn_point = nil
-
-[respawn@trc_sim_21]
-spawn_gigant
-spawn_chimera
-
-
-[spawn_gigant] ;-- Hard mutants - Rates of groups: ( 1 gigant )
-spawn_squads = simulation_gigant
-spawn_num = {~10} 1, 0
-
-[spawn_chimera] ;-- Hard mutants - Rates of groups: ( 1 chimera )
-spawn_squads = simulation_chimera
-spawn_num = {~10} 1, 0
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-;[exclusive]
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/trucks_cemetery/smart/trc_sim_3.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/trucks_cemetery/smart/trc_sim_3.ltx
deleted file mode 100644
index 289aefa3..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/trucks_cemetery/smart/trc_sim_3.ltx
+++ /dev/null
@@ -1,22 +0,0 @@
-[smart_terrain] ;-- Disabled spawn
-squad_id = 3
-max_population = 1
-;respawn_params = respawn@trc_sim_3
-;respawn_only_smart = false
-;respawn_idle = 86400
-;respawn_radius = 50
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = nil
-;def_restr = nil
-;safe_restr = nil
-;spawn_point = nil
-
-;[respawn@trc_sim_3] ;-- Type:
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-;[exclusive]
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/trucks_cemetery/smart/trc_sim_4.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/trucks_cemetery/smart/trc_sim_4.ltx
deleted file mode 100644
index 3b954251..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/trucks_cemetery/smart/trc_sim_4.ltx
+++ /dev/null
@@ -1,33 +0,0 @@
-[smart_terrain]
-squad_id = 4
-max_population = 1
-respawn_params = respawn@trc_sim_4
-respawn_only_smart = false
-respawn_idle = 86400
-respawn_radius = 50
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = nil
-;def_restr = nil
-;safe_restr = nil
-;spawn_point = nil
-
-[respawn@trc_sim_4] ;-- Type: c_2_1 + c_2_2 edited
-spawn_predatory_c_2_1
-spawn_predatory_c_2_2
-
-
-[spawn_predatory_c_2_1] ;-- Hard mutants - Rates of groups: ( 1 dogs + 3 lurker + 1 psy dog )
-spawn_squads = simulation_mix_dogs, simulation_lurker_blue, simulation_lurker_brown, simulation_lurker_black, simulation_psy_dog
-spawn_num = {!actor_week_in_zone(4)} 1, {=actor_week_in_zone(4)} 0
-
-[spawn_predatory_c_2_2] ;-- Hard mutants - Rates of groups: ( 1 dogs + 2 lurker + 1 psy dog )
-spawn_squads = simulation_mix_dogs, simulation_lurker, simulation_lurker_1_2, simulation_psy_dog_squad
-spawn_num = {=actor_week_in_zone(4)} 1, {!actor_week_in_zone(4)} 0
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-;[exclusive]
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/trucks_cemetery/smart/trc_sim_5.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/trucks_cemetery/smart/trc_sim_5.ltx
deleted file mode 100644
index 447a08ac..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/trucks_cemetery/smart/trc_sim_5.ltx
+++ /dev/null
@@ -1,22 +0,0 @@
-[smart_terrain] ;-- Disabled spawn
-squad_id = 5
-max_population = 0
-;respawn_params = respawn@trc_sim_5
-;respawn_only_smart = false
-;respawn_idle = 86400
-;respawn_radius = 50
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = nil
-;def_restr = nil
-;safe_restr = nil
-;spawn_point = nil
-
-;[respawn@trc_sim_5] ;-- Type:
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-;[exclusive]
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/trucks_cemetery/smart/trc_sim_6.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/trucks_cemetery/smart/trc_sim_6.ltx
deleted file mode 100644
index abcb96cd..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/trucks_cemetery/smart/trc_sim_6.ltx
+++ /dev/null
@@ -1,22 +0,0 @@
-[smart_terrain] ;-- Disabled spawn
-squad_id = 6
-max_population = 1
-;respawn_params = respawn@trc_sim_6
-;respawn_only_smart = false
-;respawn_idle = 86400
-;respawn_radius = 50
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = nil
-;def_restr = nil
-;safe_restr = nil
-;spawn_point = nil
-
-;[respawn@trc_sim_6] ;-- Type:
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-;[exclusive]
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/trucks_cemetery/smart/trc_sim_7.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/trucks_cemetery/smart/trc_sim_7.ltx
deleted file mode 100644
index 3bc08d73..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/trucks_cemetery/smart/trc_sim_7.ltx
+++ /dev/null
@@ -1,33 +0,0 @@
-[smart_terrain]
-squad_id = 7
-max_population = 1
-respawn_params = respawn@trc_sim_7
-respawn_only_smart = false
-respawn_idle = 172800
-respawn_radius = 50
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = nil
-;def_restr = nil
-;safe_restr = nil
-;spawn_point = nil
-
-[respawn@trc_sim_7] ;-- Type:
-spawn_all_weak
-spawn_all_normal
-
-
-[spawn_all_weak] ;-- Weak mutants - Rates of groups:( 2 tushkano + 2 dogs + 2 cats )
-spawn_squads = simulation_tushkano, simulation_tushkano, simulation_dog, simulation_mix_dogs, simulation_cat, simulation_cat
-spawn_num = 1
-
-[spawn_all_normal] ;-- Normal mutants - Rates of groups: ( 2 dogs + 2 cats + 3 fleshes/boars )
-spawn_squads = simulation_dog, simulation_mix_dogs, simulation_cat, simulation_cat_3_5, simulation_mix_boar_flesh, simulation_flesh, simulation_boar_3_5
-spawn_num = 1
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-;[exclusive]
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/trucks_cemetery/smart/trc_sim_8.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/trucks_cemetery/smart/trc_sim_8.ltx
deleted file mode 100644
index 2491e7c0..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/trucks_cemetery/smart/trc_sim_8.ltx
+++ /dev/null
@@ -1,23 +0,0 @@
-[smart_terrain] ;-- Disabled spawn
-squad_id = 8
-max_population = 2
-;respawn_params = respawn@trc_sim_8
-;respawn_only_smart = false
-;respawn_idle = 86400
-;respawn_radius = 50
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = nil
-;def_restr = nil
-;safe_restr = nil
-;spawn_point = nil
-
-;[respawn@trc_sim_8] ;-- Type:
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-;[exclusive]
-
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/trucks_cemetery/smart/trc_sim_9.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/trucks_cemetery/smart/trc_sim_9.ltx
deleted file mode 100644
index 411bcc6e..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/trucks_cemetery/smart/trc_sim_9.ltx
+++ /dev/null
@@ -1,33 +0,0 @@
-[smart_terrain]
-squad_id = 9
-max_population = 1
-respawn_params = respawn@trc_sim_9
-;respawn_only_smart = false
-;respawn_idle = 259200
-;respawn_radius = 50
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = nil
-;def_restr = nil
-;safe_restr = nil
-;spawn_point = nil
-
-[respawn@trc_sim_9] ;-- Type: c_2_1 + c_2_2 edited
-spawn_predatory_c_2_1
-spawn_predatory_c_2_2
-
-
-[spawn_predatory_c_2_1] ;-- Hard mutants - Rates of groups: ( 1 dogs + 3 lurker + 1 psy dog )
-spawn_squads = simulation_mix_dogs, simulation_lurker_blue, simulation_lurker_brown, simulation_lurker_black, simulation_psy_dog
-spawn_num = {!actor_week_in_zone(4)} 1, {=actor_week_in_zone(4)} 0
-
-[spawn_predatory_c_2_2] ;-- Hard mutants - Rates of groups: ( 1 dogs + 2 lurker + 1 psy dog )
-spawn_squads = simulation_mix_dogs, simulation_lurker, simulation_lurker_1_2, simulation_psy_dog_squad
-spawn_num = {=actor_week_in_zone(4)} 1, {!actor_week_in_zone(4)} 0
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-;[exclusive]
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/trucks_cemetery/trc_endless_night_spawn_logic_1.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/trucks_cemetery/trc_endless_night_spawn_logic_1.ltx
deleted file mode 100644
index fe78d0a7..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/trucks_cemetery/trc_endless_night_spawn_logic_1.ltx
+++ /dev/null
@@ -1,50 +0,0 @@
-[logic]
-active = ph_idle@wait_actor
-
-[ph_idle@wait_actor]
-on_info = {=actor_near_smart(trc_sim_5) =is_night} ph_idle@spawn_night_monster_1, {=actor_near_smart(trc_sim_5) =is_dark_night} ph_idle@spawn_dark_monster_1
-on_info2 = {=actor_near_smart(trc_sim_9) =is_night} ph_idle@spawn_night_monster_2, {=actor_near_smart(trc_sim_9) =is_dark_night} ph_idle@spawn_dark_monster_2
-on_info3 = {=actor_near_smart(trc_sim_16) =is_night} ph_idle@spawn_night_monster_3, {=actor_near_smart(trc_sim_16) =is_dark_night} ph_idle@spawn_dark_monster_3
-on_info4 = {=actor_near_smart(trc_sim_19) =is_night} ph_idle@spawn_night_monster_4, {=actor_near_smart(trc_sim_19) =is_dark_night} ph_idle@spawn_dark_monster_4
-
-[ph_idle@spawn_night_monster_1]
-on_info = {~10} %=create_squad(simulation_zombie_blind_3zomb_civ_night:trc_sim_5)% ph_idle@reset, {~10} %=create_squad(simulation_snork_night:trc_sim_5)% ph_idle@reset, {~10} %=create_squad(simulation_boar_3_5_night:trc_sim_5)% ph_idle@reset, {~10} %=create_squad(simulation_pseudodog_night:trc_sim_5)% ph_idle@reset, ph_idle@wait_reset
-
-[ph_idle@spawn_dark_monster_1]
-on_info = {~10} %=create_squad(simulation_mix_zombie_night:trc_sim_5)% ph_idle@reset, {~10} %=create_squad(simulation_psysucker_1_2_night:trc_sim_5)% ph_idle@reset, {~10} %=create_squad(simulation_bloodsucker_1_2_night:trc_sim_5)% ph_idle@reset, {~10} %=create_squad(simulation_psy_dog_night:trc_sim_5)% ph_idle@reset, ph_idle@wait_reset
-
-[ph_idle@reset]
-on_game_timer = 86400 | ph_idle@wait_actor
-
-[ph_idle@spawn_night_monster_2]
-on_info = {~10} %=create_squad(simulation_dog_night:trc_sim_9)% ph_idle@reset_2, {~10} %=create_squad(simulation_cat_night:trc_sim_9)% ph_idle@reset_2, {~10} %=create_squad(simulation_boar_night:trc_sim_9)% ph_idle@reset_2, {~10} %=create_squad(simulation_pseudodog_night:trc_sim_9)% ph_idle@reset_2, ph_idle@wait_reset
-
-[ph_idle@spawn_dark_monster_2]
-on_info = {~10} %=create_squad(simulation_gigant_night:trc_sim_9)% ph_idle@reset_2, {~10} %=create_squad(simulation_fracture_night:trc_sim_9)% ph_idle@reset_2, {~10} %=create_squad(simulation_zombie_blind_3zomb_civ_night:trc_sim_9)% ph_idle@reset_2, {~10} %=create_squad(simulation_pseudodog_night:trc_sim_9)% ph_idle@reset_2, ph_idle@wait_reset
-
-[ph_idle@reset_2]
-on_game_timer = 86400 | ph_idle@wait_actor
-
-[ph_idle@spawn_night_monster_3]
-on_info = {~10} %=create_squad(simulation_dog_night:trc_sim_16)% ph_idle@reset_3, {~10} %=create_squad(simulation_cat_night:trc_sim_16)% ph_idle@reset_3, {~10} %=create_squad(simulation_karlik_night:trc_sim_16)% ph_idle@reset_3, {~10} %=create_squad(simulation_lurker_brown_night:trc_sim_16)% ph_idle@reset_3, ph_idle@wait_reset
-
-[ph_idle@spawn_dark_monster_3]
-on_info = {~10} %=create_squad(simulation_psysucker_white_night:trc_sim_16)% ph_idle@reset_3, {~10} %=create_squad(simulation_bloodsucker_night:trc_sim_16)% ph_idle@reset_3, {~10} %=create_squad(simulation_karlik_night:trc_sim_16)% ph_idle@reset_3, {~10} %=create_squad(simulation_lurker_brown_night:trc_sim_16)% ph_idle@reset_3, ph_idle@wait_reset
-
-[ph_idle@reset_3]
-on_game_timer = 86400 | ph_idle@wait_actor
-
-[ph_idle@spawn_night_monster_4]
-on_info = {~10} %=create_squad(simulation_mix_dogs_night:trc_sim_19)% ph_idle@reset_4, {~10} %=create_squad(simulation_cat_3_5_night:trc_sim_19)% ph_idle@reset_4, {~10} %=create_squad(simulation_psy_dog_night:trc_sim_19)% ph_idle@reset_4, {~10} %=create_squad(simulation_karlik_night:trc_sim_19)% ph_idle@reset_4, ph_idle@wait_reset
-
-[ph_idle@spawn_dark_monster_4]
-on_info = {~10} %=create_squad(simulation_psysucker_white_night:trc_sim_19)% ph_idle@reset_4, {~10} %=create_squad(simulation_bloodsucker_night:trc_sim_19)% ph_idle@reset_4, {~10} %=create_squad(simulation_psy_dog_night:trc_sim_19)% ph_idle@reset_4, {~10} %=create_squad(simulation_karlik_night:trc_sim_19)% ph_idle@reset_4, ph_idle@wait_reset
-
-[ph_idle@reset_4]
-on_game_timer = 86400 | ph_idle@wait_actor
-
-[ph_idle@wait_reset]
-on_game_timer = 580 | ph_idle@wait_actor
-
-[collide]
-ignore_static
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/trucks_cemetery/trc_endless_night_spawn_logic_2.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/trucks_cemetery/trc_endless_night_spawn_logic_2.ltx
deleted file mode 100644
index 323fec4d..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/trucks_cemetery/trc_endless_night_spawn_logic_2.ltx
+++ /dev/null
@@ -1,50 +0,0 @@
-[logic]
-active = ph_idle@wait_actor
-
-[ph_idle@wait_actor]
-on_info = {=actor_near_smart(trc_sim_11) =is_night} ph_idle@spawn_night_monster_1, {=actor_near_smart(trc_sim_11) =is_dark_night} ph_idle@spawn_dark_monster_1
-on_info2 = {=actor_near_smart(trc_sim_13) =is_night} ph_idle@spawn_night_monster_2, {=actor_near_smart(trc_sim_13) =is_dark_night} ph_idle@spawn_dark_monster_2
-on_info3 = {=actor_near_smart(trc_sim_14) =is_night} ph_idle@spawn_night_monster_3, {=actor_near_smart(trc_sim_14) =is_dark_night} ph_idle@spawn_dark_monster_3
-on_info4 = {=actor_near_smart(trc_sim_15) =is_night} ph_idle@spawn_night_monster_4, {=actor_near_smart(trc_sim_15) =is_dark_night} ph_idle@spawn_dark_monster_4
-
-[ph_idle@spawn_night_monster_1]
-on_info = {~10} %=create_squad(simulation_psy_dog_night:trc_sim_11)% ph_idle@reset, {~10} %=create_squad(simulation_dog_5_7_night:trc_sim_11)% ph_idle@reset, {~10} %=create_squad(simulation_cat_3_5_night:trc_sim_11)% ph_idle@reset, {~10} %=create_squad(simulation_lurker_brown_night:trc_sim_11)% ph_idle@reset, ph_idle@wait_reset
-
-[ph_idle@spawn_dark_monster_1]
-on_info = {~10} %=create_squad(simulation_chimera_2weak_night:trc_sim_11)% ph_idle@reset, {~10} %=create_squad(simulation_bloodsucker_night:trc_sim_11)% ph_idle@reset, {~10} %=create_squad(simulation_karlik_night:trc_sim_11)% ph_idle@reset, {~10} %=create_squad(simulation_lurker_brown_night:trc_sim_11)% ph_idle@reset, ph_idle@wait_reset
-
-[ph_idle@reset]
-on_game_timer = 86400 | ph_idle@wait_actor
-
-[ph_idle@spawn_night_monster_2]
-on_info = {~10} %=create_squad(simulation_tushkano_night:trc_sim_13)% ph_idle@reset_2, {~10} %=create_squad(simulation_fracture_night:trc_sim_13)% ph_idle@reset_2, {~10} %=create_squad(simulation_zombie_blind_night:trc_sim_13)% ph_idle@reset_2, {~10} %=create_squad(simulation_snork_2_3_night:trc_sim_13)% ph_idle@reset_2, ph_idle@wait_reset
-
-[ph_idle@spawn_dark_monster_2]
-on_info = {~10} %=create_squad(simulation_karlik_night:trc_sim_13)% ph_idle@reset_2, {~10} %=create_squad(simulation_fracture_night:trc_sim_13)% ph_idle@reset_2, {~10} %=create_squad(simulation_psysucker_night:trc_sim_13)% ph_idle@reset_2, {~10} %=create_squad(simulation_bloodsucker_night:trc_sim_13)% ph_idle@reset_2, ph_idle@wait_reset
-
-[ph_idle@reset_2]
-on_game_timer = 86400 | ph_idle@wait_actor
-
-[ph_idle@spawn_night_monster_3]
-on_info = {~10} %=create_squad(simulation_psy_dog_night:trc_sim_14)% ph_idle@reset_3, {~10} %=create_squad(simulation_psysucker_white_night:trc_sim_14)% ph_idle@reset_3, {~10} %=create_squad(simulation_bloodsucker_night:trc_sim_14)% ph_idle@reset_3, {~10} %=create_squad(simulation_snork_2_3_night:trc_sim_14)% ph_idle@reset_3, ph_idle@wait_reset
-
-[ph_idle@spawn_dark_monster_3]
-on_info = {~10} %=create_squad(simulation_contr_5zomb_weak_night:trc_sim_14)% ph_idle@reset_3, {~10} %=create_squad(simulation_bur_5rat_day_night:trc_sim_14)% ph_idle@reset_3, {~10} %=create_squad(simulation_bloodsucker_night:trc_sim_14)% ph_idle@reset_3, {~10} %=create_squad(simulation_snork_2_3_night:trc_sim_14)% ph_idle@reset_3, ph_idle@wait_reset
-
-[ph_idle@reset_3]
-on_game_timer = 86400 | ph_idle@wait_actor
-
-[ph_idle@spawn_night_monster_4]
-on_info = {~10} %=create_squad(simulation_lurker_brown_night:trc_sim_15)% ph_idle@reset_4, {~10} %=create_squad(simulation_chimera_night:trc_sim_15)% ph_idle@reset_4, {~10} %=create_squad(simulation_psy_dog_night:trc_sim_15)% ph_idle@reset_4, {~10} %=create_squad(simulation_snork_2_5_night:trc_sim_15)% ph_idle@reset_4, ph_idle@wait_reset
-
-[ph_idle@spawn_dark_monster_4]
-on_info = {~10} %=create_squad(simulation_lurker_brown_night:trc_sim_15)% ph_idle@reset_4, {~10} %=create_squad(simulation_chimera_night:trc_sim_15)% ph_idle@reset_4, {~10} %=create_squad(simulation_psysucker_night:trc_sim_15)% ph_idle@reset_4, {~10} %=create_squad(simulation_bloodsucker_night:trc_sim_15)% ph_idle@reset_4, ph_idle@wait_reset
-
-[ph_idle@reset_4]
-on_game_timer = 86400 | ph_idle@wait_actor
-
-[ph_idle@wait_reset]
-on_game_timer = 580 | ph_idle@wait_actor
-
-[collide]
-ignore_static
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/trucks_cemetery/trc_endless_night_spawn_logic_3.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/trucks_cemetery/trc_endless_night_spawn_logic_3.ltx
deleted file mode 100644
index 9c3161d2..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/trucks_cemetery/trc_endless_night_spawn_logic_3.ltx
+++ /dev/null
@@ -1,50 +0,0 @@
-[logic]
-active = ph_idle@wait_actor
-
-[ph_idle@wait_actor]
-on_info = {=actor_near_smart(trc_sim_10) =is_night} ph_idle@spawn_night_monster_1, {=actor_near_smart(trc_sim_10) =is_dark_night} ph_idle@spawn_dark_monster_1
-on_info2 = {=actor_near_smart(trc_sim_6) =is_night} ph_idle@spawn_night_monster_2, {=actor_near_smart(trc_sim_6) =is_dark_night} ph_idle@spawn_dark_monster_2
-on_info3 = {=actor_near_smart(trc_sim_8) =is_night} ph_idle@spawn_night_monster_3, {=actor_near_smart(trc_sim_8) =is_dark_night} ph_idle@spawn_dark_monster_3
-on_info4 = {=actor_near_smart(trc_sim_17) =is_night} ph_idle@spawn_night_monster_4, {=actor_near_smart(trc_sim_17) =is_dark_night} ph_idle@spawn_dark_monster_4
-
-[ph_idle@spawn_night_monster_1]
-on_info = {~10} %=create_squad(simulation_zombie_blind_3zomb_civ_night:trc_sim_10)% ph_idle@reset, {~10} %=create_squad(simulation_dog_night:trc_sim_10)% ph_idle@reset, {~10} %=create_squad(simulation_snork_night:trc_sim_10)% ph_idle@reset, {~10} %=create_squad(simulation_cat_night:trc_sim_10)% ph_idle@reset, ph_idle@wait_reset
-
-[ph_idle@spawn_dark_monster_1]
-on_info = {~10} %=create_squad(simulation_bloodsucker_night:trc_sim_10)% ph_idle@reset, {~10} %=create_squad(simulation_fracture_night:trc_sim_10)% ph_idle@reset, {~10} %=create_squad(simulation_psysucker_night:trc_sim_10)% ph_idle@reset, {~10} %=create_squad(simulation_lurker_blue_night:trc_sim_10)% ph_idle@reset, ph_idle@wait_reset
-
-[ph_idle@reset]
-on_game_timer = 86400 | ph_idle@wait_actor
-
-[ph_idle@spawn_night_monster_2]
-on_info = {~10} %=create_squad(simulation_snork_night:trc_sim_6)% ph_idle@reset_2, {~10} %=create_squad(simulation_fracture_night:trc_sim_6)% ph_idle@reset_2, {~10} %=create_squad(simulation_zombie_blind_night:trc_sim_6)% ph_idle@reset_2, {~10} %=create_squad(simulation_pseudodog_night:trc_sim_6)% ph_idle@reset_2, ph_idle@wait_reset
-
-[ph_idle@spawn_dark_monster_2]
-on_info = {~10} %=create_squad(simulation_bloodsucker_night:trc_sim_6)% ph_idle@reset_2, {~10} %=create_squad(simulation_psysucker_night:trc_sim_6)% ph_idle@reset_2, {~10} %=create_squad(simulation_zombie_blind_3zomb_civ_night:trc_sim_6)% ph_idle@reset_2, {~10} %=create_squad(simulation_psy_dog_night:trc_sim_6)% ph_idle@reset_2, ph_idle@wait_reset
-
-[ph_idle@reset_2]
-on_game_timer = 86400 | ph_idle@wait_actor
-
-[ph_idle@spawn_night_monster_3]
-on_info = {~10} %=create_squad(simulation_psy_dog_night:trc_sim_8)% ph_idle@reset_3, {~10} %=create_squad(simulation_psysucker_night:trc_sim_8)% ph_idle@reset_3, {~10} %=create_squad(simulation_snork_2_5_night:trc_sim_8)% ph_idle@reset_3, {~10} %=create_squad(simulation_bloodsucker_night:trc_sim_8)% ph_idle@reset_3, ph_idle@wait_reset
-
-[ph_idle@spawn_dark_monster_3]
-on_info = {~10} %=create_squad(simulation_gigant_night:trc_sim_8)% ph_idle@reset_3, {~10} %=create_squad(simulation_chimera_night:trc_sim_8)% ph_idle@reset_3, {~10} %=create_squad(simulation_snork_2_5_night:trc_sim_8)% ph_idle@reset_3, {~10} %=create_squad(simulation_bloodsucker_night:trc_sim_8)% ph_idle@reset_3, ph_idle@wait_reset
-
-[ph_idle@reset_3]
-on_game_timer = 86400 | ph_idle@wait_actor
-
-[ph_idle@spawn_night_monster_4]
-on_info = {~10} %=create_squad(simulation_pseudodog_night:trc_sim_17)% ph_idle@reset_4, {~10} %=create_squad(simulation_fracture_night:trc_sim_17)% ph_idle@reset_4, {~10} %=create_squad(simulation_bloodsucker_night:trc_sim_17)% ph_idle@reset_4, {~10} %=create_squad(simulation_lurker_blue_night:trc_sim_17)% ph_idle@reset_4, ph_idle@wait_reset
-
-[ph_idle@spawn_dark_monster_4]
-on_info = {~10} %=create_squad(simulation_psysucker_night:trc_sim_17)% ph_idle@reset_4, {~10} %=create_squad(simulation_contr_5rat_3tush_night:trc_sim_17)% ph_idle@reset_4, {~10} %=create_squad(simulation_bloodsucker_night:trc_sim_17)% ph_idle@reset_4, {~10} %=create_squad(simulation_bur_5rat_day_night:trc_sim_17)% ph_idle@reset_4, ph_idle@wait_reset
-
-[ph_idle@reset_4]
-on_game_timer = 86400 | ph_idle@wait_actor
-
-[ph_idle@wait_reset]
-on_game_timer = 580 | ph_idle@wait_actor
-
-[collide]
-ignore_static
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/yantar/mod_yan_crow_spawner_redone.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/yantar/mod_yan_crow_spawner_redone.ltx
deleted file mode 100644
index 9c507889..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/yantar/mod_yan_crow_spawner_redone.ltx
+++ /dev/null
@@ -1,46 +0,0 @@
-![logic]
-!active = sr_crow_spawner
-active = sr_idle@check_story
-
-[sr_idle@check_story]
-on_info = {-story_mode_disabled} sr_idle@check_actor, {+story_mode_disabled -yan_x16_complete_end} sr_idle@check_actor %+yan_kill_brain_done%
-
-[sr_idle@check_actor]
-on_info = {=actor_community(actor_monolith) -yan_x16_complete_end} sr_idle@check_helmet %+yan_kill_brain_done%, {=actor_community(actor_greh) -yan_x16_complete_end} sr_idle@check_helmet %+yan_kill_brain_done%, sr_idle@check_helmet
-
-[sr_idle@check_helmet]
-on_info = {=actor_has_item(good_psy_helmet)} sr_idle@check_spawner %+living_legend_psy_helmet%, {=actor_has_item(bad_psy_helmet)} sr_idle@check_spawner %+living_legend_psy_helmet%, sr_idle@check_spawner
-
-[sr_idle@check_spawner]
-on_info = {+yan_kill_brain_done} sr_crow_spawner
-on_info2 = {+yan_stalker_sakharov_dead +yan_ecolog_vasilyev_dead +yan_ecolog_semenov_dead +yan_ecolog_kruglov_dead -yan_spawn_complete} sr_idle@check_spawn_1_1
-
-[sr_idle@check_spawn_1_1]
-on_info = {-agr_military_colonel_kovalski_dead} sr_idle@spawn_1_1, sr_idle@spawn_2_1
-[sr_idle@check_spawn_2_1]
-on_info = {-cit_killers_aslan_dead -cit_killers_dushman_dead} sr_idle@spawn_2_1, sr_idle@spawn_end_1
-[sr_idle@spawn_1_1]
-on_game_timer = 43200 | sr_idle@check_spawn_2_1 %=create_squad(yan_army_spetsnaz_squad:yan_smart_terrain_3_6) =create_squad(yan_army_spetsnaz_squad2:yan_smart_terrain_6_4)%
-[sr_idle@spawn_2_1]
-on_game_timer = 86400 | sr_idle@spawn_end_1 %=create_squad(yan_killer_special_team:yan_smart_terrain_4_4) =create_squad(yan_killer_special_team:yan_smart_terrain_4_5) =create_squad(yan_killer_special_team2:yan_smart_terrain_5_5)%
-
-[sr_idle@spawn_end_1]
-on_info = sr_idle@check_spawner %+yan_spawn_complete%
-
-![sr_crow_spawner]
-max_crows_on_level = 5
-spawn_path = yan_crow_spawn_1, yan_crow_spawn_2, yan_crow_spawn_3, yan_crow_spawn_4, yan_crow_spawn_5
-on_info50 = {-yan_kill_brain_done} sr_idle@check_spawner
-on_info51 = {+yan_stalker_sakharov_dead +yan_ecolog_vasilyev_dead +yan_ecolog_semenov_dead +yan_ecolog_kruglov_dead -yan_spawn_complete} sr_idle@check_spawn_1_2
-
-[sr_idle@check_spawn_1_2]:sr_crow_spawner
-on_info = {-agr_military_colonel_kovalski_dead sr_idle@spawn_1_2, sr_idle@spawn_2_2
-[sr_idle@check_spawn_2_2]:sr_crow_spawner
-on_info = {-cit_killers_aslan_dead -cit_killers_dushman_dead} sr_idle@spawn_2_2, sr_idle@spawn_end_2
-[sr_idle@spawn_1_2]:sr_crow_spawner
-on_game_timer = 43200 | sr_idle@check_spawn_2_2 %=create_squad(yan_army_spetsnaz_squad:yan_smart_terrain_3_6) =create_squad(yan_army_spetsnaz_squad2:yan_smart_terrain_6_4)%
-[sr_idle@spawn_2_2]:sr_crow_spawner
-on_game_timer = 86400 | sr_idle@spawn_end_2_2 %=create_squad(yan_killer_special_team:yan_smart_terrain_4_4) =create_squad(yan_killer_special_team:yan_smart_terrain_4_5) =create_squad(yan_killer_special_team2:yan_smart_terrain_5_5)%
-
-[sr_idle@spawn_end_2]:sr_crow_spawner
-on_info = sr_idle@check_spawner %+yan_spawn_complete%
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/yantar/mod_yan_saharov_logic_redone.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/yantar/mod_yan_saharov_logic_redone.ltx
deleted file mode 100644
index c24b5717..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/yantar/mod_yan_saharov_logic_redone.ltx
+++ /dev/null
@@ -1,5 +0,0 @@
-![logic@yan_saharov]
-on_death = death_saharov
-
-[death_saharov]
-on_info = %+yan_stalker_sakharov_dead%
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/yantar/mod_yan_saharov_no_weapons.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/yantar/mod_yan_saharov_no_weapons.ltx
deleted file mode 100644
index 3a628e66..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/yantar/mod_yan_saharov_no_weapons.ltx
+++ /dev/null
@@ -1,2 +0,0 @@
-![logic@yan_saharov]
-can_select_weapon = false
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/yantar/mod_yan_scientist_bunker_door2_redone.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/yantar/mod_yan_scientist_bunker_door2_redone.ltx
deleted file mode 100644
index 66102be3..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/yantar/mod_yan_scientist_bunker_door2_redone.ltx
+++ /dev/null
@@ -1,12 +0,0 @@
-![ph_door@closed]
-on_use = ph_door@open %+yan_smart_terrain_6_4_outer_door_open%
-on_info1 = {+yan_smart_terrain_6_4_inner_door_open} ph_door@locked %-yan_smart_terrain_6_4_outer_door_open%
-
-![ph_door@open]
-on_use = ph_door@closed %-yan_smart_terrain_6_4_outer_door_open%
-on_info = {+yan_smart_terrain_6_4_inner_door_open} ph_door@closed %-yan_smart_terrain_6_4_outer_door_open%
-on_game_timer = 20 | ph_door@closed %-yan_smart_terrain_6_4_outer_door_open%
-
-![ph_door@locked]
-on_info1 = {-yan_smart_terrain_6_4_inner_door_open} ph_door@closed
-on_game_timer = 20 | ph_door@closed
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/yantar/mod_yan_scientist_bunker_door_redone.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/yantar/mod_yan_scientist_bunker_door_redone.ltx
deleted file mode 100644
index 8bb03cf5..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/yantar/mod_yan_scientist_bunker_door_redone.ltx
+++ /dev/null
@@ -1,12 +0,0 @@
-![ph_door@closed]
-on_use = ph_door@open %+yan_smart_terrain_6_4_inner_door_open%
-on_info1 = {+yan_smart_terrain_6_4_outer_door_open} ph_door@locked %-yan_smart_terrain_6_4_inner_door_open%
-
-![ph_door@open]
-on_use = ph_door@closed %-yan_smart_terrain_6_4_inner_door_open%
-on_info = {+yan_smart_terrain_6_4_outer_door_open} ph_door@closed %-yan_smart_terrain_6_4_inner_door_open%
-on_game_timer = 20 | ph_door@closed %-yan_smart_terrain_6_4_inner_door_open%
-
-![ph_door@locked]
-on_info1 = {-yan_smart_terrain_6_4_outer_door_open} ph_door@closed
-on_game_timer = 20 | ph_door@closed
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/yantar/mod_yan_scientists_logic_redone.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/yantar/mod_yan_scientists_logic_redone.ltx
deleted file mode 100644
index 65e6eed8..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/yantar/mod_yan_scientists_logic_redone.ltx
+++ /dev/null
@@ -1,104 +0,0 @@
-![logic@yan_kruglov]
-on_death = death_kruglov
-
-[death_kruglov]
-on_info = %+yan_ecolog_kruglov_dead%
-
-![walker@yan_kruglov]:walker@def
-on_info2 = {+yantar_tunnel_finish} campfire_point@kruglov
-
-[campfire_point@kruglov]:walker@def_lab
-smart = yan_smart_terrain_2_4
-use_camp = true
-anim = scaner_stand, guard
-on_info = {=surge_started} beh@surge_1
-on_info2 = {+mortal_sin} walker@yan_kruglov_sin
-
-[walker@yan_kruglov_sin]:walker@def
-path_walk = collector_1_walk
-path_look = collector_1_look
-on_info = {=surge_started} walker@hide_1
-on_info2 = {-mortal_sin} campfire_point@kruglov
-
-![logic@yan_semenov]
-on_death = death_semenov
-
-[death_semenov]
-on_info = %+yan_ecolog_semenov_dead%
-
-![logic@yan_vasiliev]
-on_death = death_vasiliev
-
-[death_vasiliev]
-on_info = %+yan_ecolog_vasilyev_dead%
-
-![walker@yan_vasiliev]:walker@def
-path_walk = collector_3_walk
-path_look = collector_3_look
-on_info2 = {+yantar_tunnel_finish} campfire_point@vasiliev
-
-[campfire_point@vasiliev]:walker@def_lab
-smart = yan_smart_terrain_3_4
-use_camp = true
-anim = probe_stand, guard
-on_info = {=surge_started} beh@surge_2
-on_info2 = {+mortal_sin} walker@yan_vasiliev_sin
-
-[walker@yan_vasiliev_sin]:walker@def
-path_walk = collector_3_walk
-path_look = collector_3_look
-on_info = {=surge_started} walker@hide_1
-on_info2 = {-mortal_sin} campfire_point@vasiliev
-
-![patrol@base]:walker@def
-on_info2 = {+yantar_tunnel_finish} campfire_point@yan_lab_guards
-
-[campfire_point@yan_lab_guards]:walker@def_lab
-smart = yan_smart_terrain_3_4
-use_camp = false
-anim = idle, guard
-on_info = {=surge_started} beh@surge_3
-on_info2 = {+mortal_sin} patrol@base_sin
-
-[patrol@base_sin]:walker@def
-path_walk = patrol_base
-;commander = true
-formation = line
-meet = no_meet
-def_state_moving = patrol
-on_info = {=surge_started} walker@hide_4
-on_info2 = {-mortal_sin} campfire_point@yan_lab_guards
-
-[walker@def_lab]
-;combat_ignore_cond = {=actor_enemy =check_enemy_name(actor)} false, true
-;combat_ignore_keep_when_attacked = true
-gather_items_enabled = false
-help_wounded_enabled = true
-corpse_detection_enabled = false
-invulnerable = {=is_warfare} false, {!actor_true_enemy} true, false
-
-[beh@general]
-target = waypoint
-walk_dist = 100
-jog_dist = 220
-walk_anim = rush
-jog_anim = rush
-run_anim = rush
-gather_items_enabled = false
-help_wounded_enabled = false
-corpse_detection_enabled = false
-invulnerable = {=is_warfare} false, {!actor_true_enemy} true, false
-
-[beh@surge_1]:beh@general
-pt1 = 1500, idle | pos: -2.238817691803, 0.3178773522377, -6.5258741378784 look: -3.6336867809296, 0.31765586137772, 0.1618187725544
-on_info = {=surge_complete} walker@yan_kruglov
-
-[beh@surge_2]:beh@general
-pt1 = 150, idle | pos: 26.950548171997, 0.026626795530319, 5.3820586204529, 78402, 2234
-pt2 = 1500, idle | pos: 28.244895935059, 0.3146465420723, -11.436881065369 look: 24.818380355835, 0.31357181072235, -5.9259762763977
-on_info = {=surge_complete} walker@yan_vasiliev
-
-[beh@surge_3]:beh@general
-pt1 = 150, idle | pos: 27.782852172852, 0.034076303243637, 7.705039024353, 78773, 2234 look: 28.872228622437, 0.03869166970253, 5.879819393158
-pt2 = 1500, idle | pos: 21.94327545166, 0.31483441591263, -11.678646087646 look: 24.818380355835, 0.31357181072235, -5.9259762763977
-on_info = {=surge_complete} patrol@base
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/yantar/mod_yan_smart_terrain_6_4_ph_door_inner_redone.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/yantar/mod_yan_smart_terrain_6_4_ph_door_inner_redone.ltx
deleted file mode 100644
index d741f460..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/yantar/mod_yan_smart_terrain_6_4_ph_door_inner_redone.ltx
+++ /dev/null
@@ -1,39 +0,0 @@
-![ph_door@closed]
-on_use = ph_door@open %+yan_smart_terrain_6_4_inner_door_open%
-;on_info = {!check_smart_alarm_status(yan_smart_terrain_6_4:normal)} ph_door@locked_alarm
-on_info2 = {+yan_smart_terrain_6_4_outer_door_open} ph_door@locked %-yan_smart_terrain_6_4_inner_door_open%
-;on_info3 = {+yan_smart_terrain_6_4_forced_open} ph_door@surge %+yan_smart_terrain_6_4_inner_door_open%
-
-![ph_door@open]
-on_use = ph_door@closed %-yan_smart_terrain_6_4_inner_door_open%
-;on_info = {!check_smart_alarm_status(yan_smart_terrain_6_4:normal)} ph_door@locked %-yan_smart_terrain_6_4_inner_door_open%
-on_info2 = {!surge_started +yan_smart_terrain_6_4_outer_door_open} ph_door@locked %-yan_smart_terrain_6_4_inner_door_open%
-on_game_timer = 20 | ph_door@closed %-yan_smart_terrain_6_4_inner_door_open%
-
-![ph_door@locked]
-on_info = {-yan_smart_terrain_6_4_outer_door_open} ph_door@closed
-;on_info2 = {!check_smart_alarm_status(yan_smart_terrain_6_4:normal)} ph_door@locked_alarm
-;on_info3 = {+yan_smart_terrain_6_4_forced_open} ph_door@surge %+yan_smart_terrain_6_4_inner_door_open%
-on_game_timer = 20 | ph_door@closed
-
-![ph_door@locked_alarm]
-;on_info = {=check_smart_alarm_status(yan_smart_terrain_6_4:normal)} ph_door@closed
-;on_info2 = {=check_smart_alarm_status(yan_smart_terrain_6_4:alarm)} ph_door@locked_base_alarm
-
-![ph_door@locked_base_alarm]
-;on_info = {=check_smart_alarm_status(yan_smart_terrain_6_4:normal)} ph_door@closed
-;on_info2 = {=check_smart_alarm_status(yan_smart_terrain_6_4:danger)} ph_door@locked_alarm
-
-![ph_door@surge]
-;on_info = {!check_smart_alarm_status(yan_smart_terrain_6_4:normal)} ph_door@locked %-yan_smart_terrain_6_4_inner_door_open%
-;on_info2 = {-yan_smart_terrain_6_4_forced_open} ph_door@open
-
-
-
-
-
-
-
-
-
-
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/yantar/mod_yan_smart_terrain_6_4_ph_door_outer_redone.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/yantar/mod_yan_smart_terrain_6_4_ph_door_outer_redone.ltx
deleted file mode 100644
index 2064becc..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/yantar/mod_yan_smart_terrain_6_4_ph_door_outer_redone.ltx
+++ /dev/null
@@ -1,54 +0,0 @@
-![ph_door@closed]
-on_use = ph_door@open %+yan_smart_terrain_6_4_outer_door_open%
-;on_info = {!check_smart_alarm_status(yan_smart_terrain_6_4:normal)} ph_door@locked_alarm
-on_info2 = {+yan_smart_terrain_6_4_inner_door_open} ph_door@locked
-;on_info3 = {+yan_smart_terrain_6_4_forced_open} ph_door@surge %+yan_smart_terrain_6_4_outer_door_open%
-snd_open_start = trader_door_open_start
-snd_close_start = trader_door_close_start
-snd_close_stop = trader_door_close_stop
-
-![ph_door@open]
-on_use = ph_door@closed %-yan_smart_terrain_6_4_outer_door_open%
-;on_info = {!check_smart_alarm_status(yan_smart_terrain_6_4:normal)} ph_door@locked %-yan_smart_terrain_6_4_outer_door_open%
-;on_info2 = {+yan_smart_terrain_6_4_forced_open} ph_door@surge %+yan_smart_terrain_6_4_outer_door_open%
-on_game_timer = 20 | ph_door@closed %-yan_smart_terrain_6_4_outer_door_open%
-
-![ph_door@locked]
-on_info = {-yan_smart_terrain_6_4_inner_door_open} ph_door@closed
-;on_info2 = {!check_smart_alarm_status(yan_smart_terrain_6_4:normal)} ph_door@locked_alarm
-;on_info3 = {+yan_smart_terrain_6_4_forced_open} ph_door@surge %+yan_smart_terrain_6_4_outer_door_open%
-on_game_timer = 20 | ph_door@closed
-
-![ph_door@locked_alarm]
-;on_info = {=check_smart_alarm_status(yan_smart_terrain_6_4:normal)} ph_door@closed
-;on_info2 = {=check_smart_alarm_status(yan_smart_terrain_6_4:alarm)} ph_door@locked_base_alarm
-
-![ph_door@locked_base_alarm]
-;on_info = {=check_smart_alarm_status(yan_smart_terrain_6_4:normal)} ph_door@closed
-;on_info2 = {=check_smart_alarm_status(yan_smart_terrain_6_4:danger)} ph_door@locked_alarm
-
-![ph_door@surge]
-;on_info = {!check_smart_alarm_status(yan_smart_terrain_6_4:normal)} ph_door@locked %-yan_smart_terrain_6_4_outer_door_open%
-;on_info2 = {-yan_smart_terrain_6_4_forced_open} ph_door@closed %-yan_smart_terrain_6_4_outer_door_open%
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/yantar/mod_yan_smart_terrain_6_4_sr_light_redone.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/yantar/mod_yan_smart_terrain_6_4_sr_light_redone.ltx
deleted file mode 100644
index 67568c2e..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/yantar/mod_yan_smart_terrain_6_4_sr_light_redone.ltx
+++ /dev/null
@@ -1,14 +0,0 @@
-![logic]
-active = sr_light
-;active = sr_light_off
-
-;[sr_light_off]
-;light_on = false
-;on_info = {=is_night} sr_light_on
-
-;[sr_light_on]
-;light_on = true
-;on_info = {!is_night} sr_light_off
-
-![sr_light]
-light_on = true
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/yantar/mod_yan_smart_terrain_6_4_sr_steam_redone.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/yantar/mod_yan_smart_terrain_6_4_sr_steam_redone.ltx
deleted file mode 100644
index 56438722..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/yantar/mod_yan_smart_terrain_6_4_sr_steam_redone.ltx
+++ /dev/null
@@ -1,13 +0,0 @@
-![logic]
-active = sr_idle@wait
-
-![sr_idle@wait]
-on_info = {=surge_started} sr_idle@open_doors %+yan_smart_terrain_6_4_forced_open%
-
-![sr_idle@open_doors]
-on_info = {+yan_smart_terrain_6_4_forced_open =squads_in_zone_yan_smart_terrain_6_4} %-yan_smart_terrain_6_4_forced_open%
-
-![sr_idle@wait_out]
-on_game_timer2 = 300 | sr_idle@wait %-yan_smart_terrain_6_4_forced_open%
-
-
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/yantar/mod_yan_space_restrictor_0000_redone.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/yantar/mod_yan_space_restrictor_0000_redone.ltx
deleted file mode 100644
index a755f4d3..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/yantar/mod_yan_space_restrictor_0000_redone.ltx
+++ /dev/null
@@ -1,9 +0,0 @@
-![logic]
-active = ;sr_idle
-active = sr_idle@check
-
-[sr_idle@check]
-on_info = {=actor_community(actor_monolith)} sr_idle@mspawn, {=actor_community(actor_greh)} sr_idle@mspawn, sr_idle
-
-[sr_idle@mspawn]
-on_actor_inside = {-yan_tonnel_snork_spawn_1} sr_idle@nil %+yan_tonnel_snork_spawn_1 =spawn_object(yan_stalker_gigant_military:yan_gigant_walk:0)%
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/yantar/mod_yan_space_restrictor_0001_redone.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/yantar/mod_yan_space_restrictor_0001_redone.ltx
deleted file mode 100644
index 5fa81104..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/yantar/mod_yan_space_restrictor_0001_redone.ltx
+++ /dev/null
@@ -1,9 +0,0 @@
-![logic]
-active = ;sr_idle
-active = sr_idle@check
-
-[sr_idle@check]
-on_info = {=actor_community(actor_monolith)} sr_idle@mspawn, {=actor_community(actor_greh)} sr_idle@mspawn, sr_idle
-
-[sr_idle@mspawn]
-on_actor_inside = {-yan_tonnel_snork_spawn_3} sr_idle@nil %+yan_tonnel_snork_spawn_3 =spawn_object(yan_stalker_military_2:yan_gigant_walk:0)%
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/yantar/mod_yan_space_restrictor_0005_redone.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/yantar/mod_yan_space_restrictor_0005_redone.ltx
deleted file mode 100644
index 01da35f0..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/yantar/mod_yan_space_restrictor_0005_redone.ltx
+++ /dev/null
@@ -1,9 +0,0 @@
-![logic]
-active = ;sr_idle
-active = sr_idle@check
-
-[sr_idle@check]
-on_info = {=actor_community(actor_monolith)} sr_idle@mspawn, {=actor_community(actor_greh)} sr_idle@mspawn, sr_idle
-
-[sr_idle@mspawn]
-on_actor_inside = {-yan_giant_spawner_01} sr_idle@nil %+yan_giant_spawner_01%
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/yantar/mod_yan_space_restrictor_0006_redone.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/yantar/mod_yan_space_restrictor_0006_redone.ltx
deleted file mode 100644
index a4bdf9ac..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/yantar/mod_yan_space_restrictor_0006_redone.ltx
+++ /dev/null
@@ -1,9 +0,0 @@
-![logic]
-active = ;sr_idle
-active = sr_idle@check
-
-[sr_idle@check]
-on_info = {=actor_community(actor_monolith)} sr_idle@mspawn, {=actor_community(actor_greh)} sr_idle@mspawn, sr_idle
-
-[sr_idle@mspawn]
-on_actor_inside = {-yan_tonnel_snork_spawn_2} sr_idle@nil %+yan_tonnel_snork_spawn_2 =spawn_object(yan_stalker_military_4:yan_gigant_walk:0)%
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/yantar/mod_yan_tonnel_gigant_redone.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/yantar/mod_yan_tonnel_gigant_redone.ltx
deleted file mode 100644
index 3eb13ba0..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/yantar/mod_yan_tonnel_gigant_redone.ltx
+++ /dev/null
@@ -1,5 +0,0 @@
-![mob_walker]
-out_restr = yantar_tunnel_surge_hide
-
-![mob_walker@2]
-out_restr = yantar_tunnel_surge_hide
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/yantar/mod_yantar_psi_radiotion_30_redone.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/yantar/mod_yantar_psi_radiotion_30_redone.ltx
deleted file mode 100644
index 110aab7d..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/yantar/mod_yantar_psi_radiotion_30_redone.ltx
+++ /dev/null
@@ -1,25 +0,0 @@
-![sr_psy_antenna@no_helmet]
-eff_intensity = 30
-hit_intensity = 20
-on_info = {=actor_has_item(good_psy_helmet)} sr_psy_antenna@good_psy_helmet, {=actor_has_item(bad_psy_helmet)} sr_psy_antenna@bad_psy_helmet
-on_info2 = ;{=actor_community(actor_monolith)} sr_idle@nil, {+yantar_attack_start} sr_idle@nil, {+yan_labx16_switcher_primary_off} sr_idle@nil
-on_info3 = {=actor_community(actor_monolith)} sr_idle@mnil, {=actor_community(actor_greh)} sr_idle@mnil, {+yan_labx16_switcher_primary_off} sr_idle@nil
-
-![sr_psy_antenna@bad_psy_helmet]
-eff_intensity = 20
-hit_intensity = 0
-on_info = {=actor_has_item(good_psy_helmet)} sr_psy_antenna@good_psy_helmet, {=actor_has_item(bad_psy_helmet)}, sr_psy_antenna@no_helmet
-on_info2 = ;{=actor_community(actor_monolith)} sr_idle@nil, {+yantar_attack_start} sr_idle@nil, {+yan_labx16_switcher_primary_off} sr_idle@nil
-on_info3 = {=actor_community(actor_monolith)} sr_idle@mnil, {=actor_community(actor_greh)} sr_idle@mnil, {+yan_labx16_switcher_primary_off} sr_idle@nil
-
-![sr_psy_antenna@good_psy_helmet]
-eff_intensity = 10
-hit_intensity = 0
-on_info = {=actor_has_item(good_psy_helmet)}, {=actor_has_item(bad_psy_helmet)} sr_psy_antenna@bad_psy_helmet, sr_psy_antenna@no_helmet
-on_info2 = ;{=actor_community(actor_monolith)} sr_idle@nil, {+yantar_attack_start} sr_idle@nil, {+yan_labx16_switcher_primary_off} sr_idle@nil
-on_info3 = {=actor_community(actor_monolith)} sr_idle@mnil, {=actor_community(actor_greh)} sr_idle@mnil, {+yan_labx16_switcher_primary_off} sr_idle@nil
-
-![sr_idle@nil]
-on_info = {-yan_labx16_switcher_primary_off} sr_psy_antenna@no_helmet
-
-[sr_idle@mnil]
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/yantar/mod_yantar_psi_radiotion_55_redone.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/yantar/mod_yantar_psi_radiotion_55_redone.ltx
deleted file mode 100644
index 8c5ffd6a..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/yantar/mod_yantar_psi_radiotion_55_redone.ltx
+++ /dev/null
@@ -1,25 +0,0 @@
-![sr_psy_antenna@no_helmet]
-eff_intensity = 40
-hit_intensity = 20
-on_info = {=actor_has_item(good_psy_helmet)} sr_psy_antenna@good_psy_helmet, {=actor_has_item(bad_psy_helmet)} sr_psy_antenna@bad_psy_helmet
-on_info2 = ;{=actor_community(actor_monolith)} sr_idle@nil, {+yantar_attack_start} sr_idle@nil, {+yan_labx16_switcher_primary_off} sr_idle@nil
-on_info3 = {=actor_community(actor_monolith)} sr_idle@mnil, {=actor_community(actor_greh)} sr_idle@mnil, {+yan_labx16_switcher_primary_off} sr_idle@nil
-
-![sr_psy_antenna@bad_psy_helmet]
-eff_intensity = 20
-hit_intensity = 0
-on_info = {=actor_has_item(good_psy_helmet)} sr_psy_antenna@good_psy_helmet, {=actor_has_item(bad_psy_helmet)}, sr_psy_antenna@no_helmet
-on_info2 = ;{=actor_community(actor_monolith)} sr_idle@nil, {+yantar_attack_start} sr_idle@nil, {+yan_labx16_switcher_primary_off} sr_idle@nil
-on_info3 = {=actor_community(actor_monolith)} sr_idle@mnil, {=actor_community(actor_greh)} sr_idle@mnil, {+yan_labx16_switcher_primary_off} sr_idle@nil
-
-![sr_psy_antenna@good_psy_helmet]
-eff_intensity = 10
-hit_intensity = 0
-on_info = {=actor_has_item(good_psy_helmet)}, {=actor_has_item(bad_psy_helmet)} sr_psy_antenna@bad_psy_helmet, sr_psy_antenna@no_helmet
-on_info2 = ;{=actor_community(actor_monolith)} sr_idle@nil, {+yantar_attack_start} sr_idle@nil, {+yan_labx16_switcher_primary_off} sr_idle@nil
-on_info3 = {=actor_community(actor_monolith)} sr_idle@mnil, {=actor_community(actor_greh)} sr_idle@mnil, {+yan_labx16_switcher_primary_off} sr_idle@nil
-
-![sr_idle@nil]
-on_info = {-yan_labx16_switcher_primary_off} sr_psy_antenna@no_helmet
-
-[sr_idle@mnil]
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/yantar/mod_yantar_psi_radiotion_5_redone.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/yantar/mod_yantar_psi_radiotion_5_redone.ltx
deleted file mode 100644
index 4e9b6962..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/yantar/mod_yantar_psi_radiotion_5_redone.ltx
+++ /dev/null
@@ -1,25 +0,0 @@
-![sr_psy_antenna@no_helmet]
-eff_intensity = 30
-hit_intensity = 0
-on_info = {=actor_has_item(good_psy_helmet)} sr_psy_antenna@good_psy_helmet, {=actor_has_item(bad_psy_helmet)} sr_psy_antenna@bad_psy_helmet
-on_info2 = ;{=actor_community(actor_monolith)} sr_idle@nil, {+yantar_attack_start} sr_idle@nil, {+yan_labx16_switcher_primary_off} sr_idle@nil
-on_info3 = {=actor_community(actor_monolith)} sr_idle@mnil, {=actor_community(actor_greh)} sr_idle@mnil, {+yan_labx16_switcher_primary_off} sr_idle@nil
-
-![sr_psy_antenna@bad_psy_helmet]
-eff_intensity = 20
-hit_intensity = 0
-on_info = {=actor_has_item(good_psy_helmet)} sr_psy_antenna@good_psy_helmet, {=actor_has_item(bad_psy_helmet)}, sr_psy_antenna@no_helmet
-on_info2 = ;{=actor_community(actor_monolith)} sr_idle@nil, {+yantar_attack_start} sr_idle@nil, {+yan_labx16_switcher_primary_off} sr_idle@nil
-on_info3 = {=actor_community(actor_monolith)} sr_idle@mnil, {=actor_community(actor_greh)} sr_idle@mnil, {+yan_labx16_switcher_primary_off} sr_idle@nil
-
-![sr_psy_antenna@good_psy_helmet]
-eff_intensity = 10
-hit_intensity = 0
-on_info = {=actor_has_item(good_psy_helmet)}, {=actor_has_item(bad_psy_helmet)} sr_psy_antenna@bad_psy_helmet, sr_psy_antenna@no_helmet
-on_info2 = ;{=actor_community(actor_monolith)} sr_idle@nil, {+yantar_attack_start} sr_idle@nil, {+yan_labx16_switcher_primary_off} sr_idle@nil
-on_info3 = {=actor_community(actor_monolith)} sr_idle@mnil, {=actor_community(actor_greh)} sr_idle@mnil, {+yan_labx16_switcher_primary_off} sr_idle@nil
-
-![sr_idle@nil]
-on_info = {-yan_labx16_switcher_primary_off} sr_psy_antenna@no_helmet
-
-[sr_idle@mnil]
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/yantar/mod_yantar_tunnel_finish_redone.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/yantar/mod_yantar_tunnel_finish_redone.ltx
deleted file mode 100644
index bdaa0075..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/yantar/mod_yantar_tunnel_finish_redone.ltx
+++ /dev/null
@@ -1,7 +0,0 @@
-![sr_idle]
-on_actor_inside ={-story_mode_disabled +yantar_tunnel_start -yantar_tunnel_finish} sr_idle@spawn %+yantar_tunnel_finish =yan_saharov_message(3)%
-
-[sr_idle@spawn]
-on_info = sr_idle@nil %=create_squad(bandit_sim_squad_alpha:yan_smart_terrain_2_4) =create_squad(bandit_sim_squad_advanced:yan_smart_terrain_2_4)%
-
-
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/yantar/mod_yantar_tunnel_start_redone.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/yantar/mod_yantar_tunnel_start_redone.ltx
deleted file mode 100644
index 3915a908..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/yantar/mod_yantar_tunnel_start_redone.ltx
+++ /dev/null
@@ -1,12 +0,0 @@
-![logic]
-active = ;sr_idle
-active = sr_idle@check
-
-[sr_idle@check]
-on_info = {=actor_community(actor_monolith)} sr_idle@mspawn, {=actor_community(actor_greh)} sr_idle@mspawn, sr_idle
-
-![sr_idle]
-on_actor_inside = {-yantar_tunnel_start} sr_idle@nil %+yantar_tunnel_start =create_squad(yan_ecolog_guard_mlr_squad:yan_smart_terrain_3_6) =create_squad(yan_ecolog_guard_mlr_squad2:yan_smart_terrain_4_4) =spawn_object(yan_tonnel_snork_2:yan_tonnel_snorks_walk_3:0) =spawn_object(yan_tonnel_snork_4:yan_snork_tun_home_1:0) =spawn_object(yan_tonnel_zombied_1:yan_zombies_9_walk:0) =spawn_object(yan_tonnel_zombied_2:yan_zombies_9_walk:0) =spawn_object(yan_tonnel_zombied_3:yan_zombies_10_walk:0) =spawn_object(yan_tonnel_zombied_1:yan_zombies_9_walk:0) =spawn_object(yan_tonnel_zombied_2:yan_zombies_9_walk:0) =spawn_object(yan_tonnel_zombied_3:yan_zombies_10_walk:0)%
-
-[sr_idle@mspawn]
-on_actor_inside = {-yantar_tunnel_start} sr_idle@nil %+yantar_tunnel_start =spawn_object(yan_stalker_military_5:yan_gigant_walk:0) =spawn_object(yan_stalker_military_1:yan_gigant_walk:0) =spawn_object(yan_stalker_military_3:yan_gigant_walk:0) =spawn_object(yan_stalker_military_6:yan_gigant_walk:0)%
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/yantar/smart/yan_smart_terrain_1_6.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/yantar/smart/yan_smart_terrain_1_6.ltx
deleted file mode 100644
index 9c62748b..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/yantar/smart/yan_smart_terrain_1_6.ltx
+++ /dev/null
@@ -1,33 +0,0 @@
-[smart_terrain]
-squad_id = 1
-max_population = 2
-respawn_params = respawn@yan_smart_terrain_1_6
-respawn_only_smart = false
-respawn_idle = 259200
-respawn_radius = 50
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = nil
-;def_restr = nil
-;safe_restr = nil
-;spawn_point = nil
-
-[respawn@yan_smart_terrain_1_6] ;-- Type:
-spawn_mutants
-spawn_mutants_rare
-
-
-[spawn_mutants] ;-- Normal\hard mutants - Rates of groups: ( 1 tushkano + 2 snork + 2 fracture + psy dog )
-spawn_squads = simulation_tushkano_7_10, simulation_snork_2_3, simulation_snork_2_5, simulation_fracture, simulation_psy_dog
-spawn_num = {~20} 1, 0
-
-[spawn_mutants_rare] ;-- Rare mutants - Rates of groups: ( 1 karlik )
-spawn_squads = simulation_karlik
-spawn_num = {+yan_kill_brain_done ~10} 1, 0
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-;[exclusive]
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/yantar/smart/yan_smart_terrain_2_4.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/yantar/smart/yan_smart_terrain_2_4.ltx
deleted file mode 100644
index fefc56d7..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/yantar/smart/yan_smart_terrain_2_4.ltx
+++ /dev/null
@@ -1,39 +0,0 @@
-[smart_terrain]
-squad_id = 2
-max_population = 2
-respawn_params = respawn@yan_smart_terrain_2_4
-respawn_only_smart = false
-respawn_idle = 86400
-respawn_radius = 50
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = nil
-;def_restr = nil
-;safe_restr = nil
-;spawn_point = nil
-
-[respawn@yan_smart_terrain_2_4] ;-- Type: faction {zombied} = nhoo...
-spawn_zombies_mix
-;spawn_mutants
-spawn_ecolog_special
-
-
-[spawn_zombies_mix] ;-- Weak\normal mutants - Rates of groups: ( 2 zombie + 1 zombied )
-spawn_squads = simulation_zombie_3_6, simulation_mix_zombie, zombied_sim_squad_mix
-spawn_num = {+yan_kill_brain_done} 0, 1
-
-;[spawn_mutants] ;-- Normal\hard mutants - Rates of groups: ( 1 tushkano + 2 snork + 2 fracture + 1 dogs )
-;spawn_squads = simulation_tushkano_7_10, simulation_mix_dogs, simulation_snork_2_3, simulation_snork_2_5, simulation_fracture
-;spawn_num = {+yan_kill_brain_done ~20} 1, 0
-
-[spawn_ecolog_special]
-spawn_squads = yan_ecolog_guard_mlr_squad
-spawn_num = {+yan_kill_brain_done !squad_name_exist(yan_ecolog_guard_mlr_squad) -yan_stalker_sakharov_dead -yan_ecolog_vasilyev_dead -yan_ecolog_semenov_dead -yan_ecolog_kruglov_dead} 1, 0
-
-
-[on_changing_level]
-on_info = %=script(redone_xr_dynamic_object:dynamic_object:misc\spawn_object\yan_smart_terrain_2_4_object.ltx)%
-
-;[smart_control]
-
-;[exclusive]
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/yantar/smart/yan_smart_terrain_2_5.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/yantar/smart/yan_smart_terrain_2_5.ltx
deleted file mode 100644
index d1a22693..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/yantar/smart/yan_smart_terrain_2_5.ltx
+++ /dev/null
@@ -1,34 +0,0 @@
-[smart_terrain]
-squad_id = 3
-max_population = 1
-respawn_params = respawn@yan_smart_terrain_2_5
-respawn_only_smart = true
-respawn_idle = 345600
-respawn_radius = 50
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = nil
-;def_restr = nil
-;safe_restr = nil
-;spawn_point = nil
-
-[respawn@yan_smart_terrain_2_5] ;-- Type:
-spawn_mutants
-spawn_ecolog_special
-
-
-[spawn_mutants] ;-- Normal\hard mutants - Rates of groups: ( 1 tushkano + 2 snork + 1 dogs )
-spawn_squads = simulation_tushkano_7_10, simulation_mix_dogs, simulation_snork_2_3, simulation_snork_2_5
-spawn_num = {+yan_kill_brain_done ~20} 1, 0
-
-[spawn_ecolog_special]
-spawn_squads = yan_ecolog_lab_squad
-spawn_num = {+yan_kill_brain_done !squad_name_exist(yan_ecolog_lab_squad) -yan_stalker_sakharov_dead -yan_ecolog_vasilyev_dead -yan_ecolog_semenov_dead -yan_ecolog_kruglov_dead} 1, 0
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-;[exclusive]
-
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/yantar/smart/yan_smart_terrain_3_4.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/yantar/smart/yan_smart_terrain_3_4.ltx
deleted file mode 100644
index bd758804..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/yantar/smart/yan_smart_terrain_3_4.ltx
+++ /dev/null
@@ -1,43 +0,0 @@
-[smart_terrain]
-squad_id = 4
-max_population = 2
-respawn_params = respawn@yan_smart_terrain_3_4
-respawn_only_smart = false
-respawn_idle = 172800
-respawn_radius = 50
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = nil
-;def_restr = nil
-;safe_restr = nil
-;spawn_point = nil
-
-[respawn@yan_smart_terrain_3_4] ;-- Type: faction {zombied} = wahyy...
-spawn_zombies
-spawn_mutants
-spawn_stalkers_special
-spawn_stalkers_special_2
-
-
-[spawn_zombies] ;-- Weak\normal mutants - Rates of groups: ( 3 zombies )
-spawn_squads = simulation_zombie, simulation_zombie_3_6, simulation_mix_zombie
-spawn_num = {+yan_kill_brain_done} 0, 1
-
-[spawn_mutants] ;-- Normal mutants - Rates of groups: ( 1 tushkano + 2 snork + 1 fracture )
-spawn_squads = simulation_tushkano_7_10, simulation_snork_2_3, simulation_snork_2_5, simulation_fracture
-spawn_num = {+yan_kill_brain_done ~20} 1, 0
-
-[spawn_stalkers_special]
-spawn_squads = yan_bandit_lab_squad
-spawn_num = {+yan_kill_brain_done !squad_name_exist(yan_bandit_lab_squad) !squad_name_exist(yan_csky_lab_squad)} 1, 0
-
-[spawn_stalkers_special_2]
-spawn_squads = yan_csky_lab_squad
-spawn_num = {+yan_kill_brain_done !squad_name_exist(yan_bandit_lab_squad) !squad_name_exist(yan_csky_lab_squad)} 1, 0
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-;[exclusive]
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/yantar/smart/yan_smart_terrain_3_6.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/yantar/smart/yan_smart_terrain_3_6.ltx
deleted file mode 100644
index 5a70e983..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/yantar/smart/yan_smart_terrain_3_6.ltx
+++ /dev/null
@@ -1,33 +0,0 @@
-[smart_terrain]
-squad_id = 5
-max_population = 1
-respawn_params = respawn@yan_smart_terrain_3_6
-respawn_only_smart = false
-respawn_idle = 259200
-respawn_radius = 1000
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = nil
-;def_restr = nil
-;safe_restr = nil
-;spawn_point = nil
-
-[respawn@yan_smart_terrain_3_6] ;-- Type:
-spawn_deserted_base
-
-
-[spawn_deserted_base] ;-- Normal\hard mutants - Rates of groups: ( 1 tushkano + 2 dogs + 1 cat + 1 snork + 1 fracture )
-spawn_squads = simulation_tushkano_7_10, simulation_dog_5_7, simulation_mix_dogs, simulation_cat_3_5, simulation_snork_2_3, simulation_fracture
-spawn_num = {+yan_stalker_sakharov_dead +yan_ecolog_vasilyev_dead +yan_ecolog_semenov_dead +yan_ecolog_kruglov_dead} 1, 0
-
-;[spawn_deserted_base]
-;spawn_squads = yan_army_spetsnaz_squad
-;spawn_num = {+yan_stalker_sakharov_dead +yan_ecolog_vasilyev_dead +yan_ecolog_semenov_dead +yan_ecolog_kruglov_dead -agr_military_colonel_kovalski_dead !squad_name_exist(yan_army_spetsnaz_squad)} 1, 0
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-;[exclusive]
-
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/yantar/smart/yan_smart_terrain_4_2.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/yantar/smart/yan_smart_terrain_4_2.ltx
deleted file mode 100644
index 4a48e35f..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/yantar/smart/yan_smart_terrain_4_2.ltx
+++ /dev/null
@@ -1,39 +0,0 @@
-[smart_terrain]
-squad_id = 6
-max_population = 2
-respawn_params = respawn@yan_smart_terrain_4_2
-respawn_only_smart = false
-respawn_idle = 86400
-respawn_radius = 50
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = nil
-;def_restr = nil
-;safe_restr = nil
-;spawn_point = nil
-
-[respawn@yan_smart_terrain_4_2] ;-- Type: c_1_1 + c_1_2 edited
-spawn_all_weak_c_1_1
-spawn_all_normal_c_1_2
-spawn_lurker
-
-
-[spawn_all_weak_c_1_1] ;-- Weak mutants - Rates of groups: ( 2 tushkano + 2 dogs + 1 cats + 1 flesh )
-spawn_squads = simulation_tushkano, simulation_tushkano, simulation_dog, simulation_mix_dogs, simulation_cat, simulation_flesh
-spawn_num = {!actor_week_in_zone(1)} 1, {=actor_week_in_zone(1)} 0
-
-[spawn_all_normal_c_1_2] ;-- Normal mutants - Rates of groups: ( 2 dogs + 1 cats + 3 fleshes/boars )
-spawn_squads = simulation_mix_dogs, simulation_mix_dogs, simulation_cat, simulation_mix_boar_flesh, simulation_flesh, simulation_boar
-spawn_num = {=actor_week_in_zone(1)} 1, {!actor_week_in_zone(1)} 0
-
-[spawn_lurker] ;-- Hard mutants - Rates of groups: ( 2 lurker )
-spawn_squads = simulation_lurker, simulation_lurker_blue
-spawn_num = {~20} 1, 0
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-;[exclusive]
-
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/yantar/smart/yan_smart_terrain_4_4.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/yantar/smart/yan_smart_terrain_4_4.ltx
deleted file mode 100644
index f22ee3eb..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/yantar/smart/yan_smart_terrain_4_4.ltx
+++ /dev/null
@@ -1,38 +0,0 @@
-[smart_terrain]
-squad_id = 7
-max_population = 1
-respawn_params = respawn@yan_smart_terrain_4_4
-respawn_only_smart = false
-respawn_idle = 259200
-respawn_radius = 1000
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = nil
-;def_restr = nil
-;safe_restr = nil
-;spawn_point = nil
-
-[respawn@yan_smart_terrain_4_4] ;-- Type:
-spawn_deserted_base
-
-
-[spawn_deserted_base] ;-- Normal\hard mutants - Rates of groups: ( 1 tushkano + 2 dogs + 1 cat + 1 snork + 1 fracture )
-spawn_squads = simulation_tushkano_7_10, simulation_dog_5_7, simulation_mix_dogs, simulation_cat_3_5, simulation_snork_2_3, simulation_fracture
-spawn_num = {+yan_stalker_sakharov_dead +yan_ecolog_vasilyev_dead +yan_ecolog_semenov_dead +yan_ecolog_kruglov_dead} 1, 0
-
-;[spawn_deserted_base]
-;spawn_squads = yan_killer_special_team2
-;spawn_num = {+yan_stalker_sakharov_dead +yan_ecolog_vasilyev_dead +yan_ecolog_semenov_dead +yan_ecolog_kruglov_dead -cit_killers_aslan_dead -cit_killers_dushman_dead !squad_name_exist(yan_killer_special_team2)} 1, 0
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-[exclusive]
-yan_smart_terrain_4_4_zombie_wave_1 = yantar\yan_smart_terrain_4_4_smart_logic.ltx
-yan_smart_terrain_4_4_zombie_wave_2 = yantar\yan_smart_terrain_4_4_smart_logic.ltx
-yan_smart_terrain_4_4_zombie_wave_3 = yantar\yan_smart_terrain_4_4_smart_logic.ltx
-yan_smart_terrain_4_4_zombie_wave_4 = yantar\yan_smart_terrain_4_4_smart_logic.ltx
-yan_smart_terrain_4_4_zombie_wave_5 = yantar\yan_smart_terrain_4_4_smart_logic.ltx
-
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/yantar/smart/yan_smart_terrain_4_5.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/yantar/smart/yan_smart_terrain_4_5.ltx
deleted file mode 100644
index 7d6c025a..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/yantar/smart/yan_smart_terrain_4_5.ltx
+++ /dev/null
@@ -1,29 +0,0 @@
-[smart_terrain]
-squad_id = 8
-max_population = 1
-respawn_params = respawn@yan_smart_terrain_4_5
-respawn_only_smart = false
-respawn_idle = 259200
-respawn_radius = 1000
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = nil
-;def_restr = nil
-;safe_restr = nil
-;spawn_point = nil
-
-[respawn@yan_smart_terrain_4_5] ;-- Type:
-spawn_deserted_base
-
-
-[spawn_deserted_base] ;-- Normal\hard mutants - Rates of groups: ( 1 tushkano + 2 dogs + 1 cat + 1 snork + 1 fracture )
-spawn_squads = simulation_tushkano_7_10, simulation_dog_5_7, simulation_mix_dogs, simulation_cat_3_5, simulation_snork_2_3, simulation_fracture
-spawn_num = {+yan_stalker_sakharov_dead +yan_ecolog_vasilyev_dead +yan_ecolog_semenov_dead +yan_ecolog_kruglov_dead} 1, 0
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-;[exclusive]
-
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/yantar/smart/yan_smart_terrain_5_3.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/yantar/smart/yan_smart_terrain_5_3.ltx
deleted file mode 100644
index 3e3e437a..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/yantar/smart/yan_smart_terrain_5_3.ltx
+++ /dev/null
@@ -1,28 +0,0 @@
-[smart_terrain]
-squad_id = 9
-max_population = 2
-respawn_params = respawn@yan_smart_terrain_5_3
-respawn_only_smart = false
-respawn_idle = 259200
-respawn_radius = 50
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = nil
-;def_restr = nil
-;safe_restr = nil
-;spawn_point = nil
-
-[respawn@yan_smart_terrain_5_3] ;-- Type:
-spawn_deserted_base
-
-
-[spawn_deserted_base] ;-- Normal\hard mutants - Rates of groups: ( 1 tushkano + 2 dogs + 1 cat + 1 snork + 1 fracture )
-spawn_squads = simulation_tushkano_7_10, simulation_dog_5_7, simulation_mix_dogs, simulation_cat_3_5, simulation_snork_2_3, simulation_fracture
-spawn_num = {+yan_stalker_sakharov_dead +yan_ecolog_vasilyev_dead +yan_ecolog_semenov_dead +yan_ecolog_kruglov_dead} 1, 0
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-;[exclusive]
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/yantar/smart/yan_smart_terrain_5_5.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/yantar/smart/yan_smart_terrain_5_5.ltx
deleted file mode 100644
index ea10419f..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/yantar/smart/yan_smart_terrain_5_5.ltx
+++ /dev/null
@@ -1,37 +0,0 @@
-[smart_terrain]
-squad_id = 11
-max_population = 1
-respawn_params = respawn@yan_smart_terrain_5_5
-respawn_only_smart = false
-respawn_idle = 259200
-respawn_radius = 1000
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = nil
-;def_restr = nil
-;safe_restr = nil
-;spawn_point = nil
-
-[respawn@yan_smart_terrain_5_5] ;-- Type:
-spawn_deserted_base
-
-
-[spawn_deserted_base] ;-- Normal\hard mutants - Rates of groups: ( 1 tushkano + 2 dogs + 1 cat + 1 snork + 1 fracture )
-spawn_squads = simulation_tushkano_7_10, simulation_dog_5_7, simulation_mix_dogs, simulation_cat_3_5, simulation_snork_2_3, simulation_fracture
-spawn_num = {+yan_stalker_sakharov_dead +yan_ecolog_vasilyev_dead +yan_ecolog_semenov_dead +yan_ecolog_kruglov_dead} 1, 0
-
-;[spawn_deserted_base]
-;spawn_squads = yan_killer_special_team
-;spawn_num = {+yan_stalker_sakharov_dead +yan_ecolog_vasilyev_dead +yan_ecolog_semenov_dead +yan_ecolog_kruglov_dead -cit_killers_aslan_dead -cit_killers_dushman_dead !squad_name_exist(yan_killer_special_team)} 1, 0
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-[exclusive]
-yan_smart_terrain_5_5_zombie_wave_1 = yantar\yan_smart_terrain_5_5_smart_logic.ltx
-yan_smart_terrain_5_5_zombie_wave_2 = yantar\yan_smart_terrain_5_5_smart_logic.ltx
-yan_smart_terrain_5_5_zombie_wave_3 = yantar\yan_smart_terrain_5_5_smart_logic.ltx
-yan_smart_terrain_5_5_zombie_wave_4 = yantar\yan_smart_terrain_5_5_smart_logic.ltx
-yan_smart_terrain_5_5_zombie_wave_5 = yantar\yan_smart_terrain_5_5_smart_logic.ltx
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/yantar/smart/yan_smart_terrain_6_2.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/yantar/smart/yan_smart_terrain_6_2.ltx
deleted file mode 100644
index a3885de5..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/yantar/smart/yan_smart_terrain_6_2.ltx
+++ /dev/null
@@ -1,39 +0,0 @@
-[smart_terrain]
-squad_id = 12
-max_population = 1
-respawn_params = respawn@yan_smart_terrain_5_5
-respawn_only_smart = false
-respawn_idle = 259200
-respawn_radius = 50
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = nil
-;def_restr = nil
-;safe_restr = nil
-;spawn_point = nil
-
-[respawn@yan_smart_terrain_5_5] ;-- Type: c_1_1 + c_1_2 edited
-spawn_all_weak_c_1_1
-spawn_all_normal_c_1_2
-
-
-[spawn_all_weak_c_1_1] ;-- Weak mutants - Rates of groups: ( 1 tushkano + 2 dogs + 1 cats + 1 flesh )
-spawn_squads = simulation_tushkano, simulation_dog, simulation_mix_dogs, simulation_cat, simulation_flesh
-spawn_num = {!actor_week_in_zone(1)} 1, {=actor_week_in_zone(1)} 0
-
-[spawn_all_normal_c_1_2];-- Normal mutants - Rates of groups: ( 2 dogs + 1 cats + 3 fleshes/boars )
-spawn_squads = simulation_mix_dogs, simulation_mix_dogs, simulation_cat, simulation_mix_boar_flesh, simulation_flesh, simulation_boar
-spawn_num = {=actor_week_in_zone(1)} 1, {!actor_week_in_zone(1)} 0
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-[exclusive]
-yan_smart_terrain_6_2_zombie_wave_1 = yantar\yan_smart_terrain_6_2_smart_logic.ltx
-yan_smart_terrain_6_2_zombie_wave_2 = yantar\yan_smart_terrain_6_2_smart_logic.ltx
-yan_smart_terrain_6_2_zombie_wave_3 = yantar\yan_smart_terrain_6_2_smart_logic.ltx
-yan_smart_terrain_6_2_zombie_wave_4 = yantar\yan_smart_terrain_6_2_smart_logic.ltx
-yan_smart_terrain_6_2_zombie_wave_5 = yantar\yan_smart_terrain_6_2_smart_logic.ltx
-
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/yantar/smart/yan_smart_terrain_6_4.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/yantar/smart/yan_smart_terrain_6_4.ltx
deleted file mode 100644
index 6ec91675..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/yantar/smart/yan_smart_terrain_6_4.ltx
+++ /dev/null
@@ -1,75 +0,0 @@
-[smart_terrain]
-squad_id = 13
-max_population = 3
-respawn_params = respawn@yan_smart_terrain_6_4
-respawn_only_smart = false
-respawn_idle = 43200
-respawn_radius = 50
-;arrive_dist = 0
-;smart_control = smart_control
-;att_restr = yan_smart_terrain_6_4_att
-;def_restr = yan_smart_terrain_6_4_def
-;safe_restr = nil
-;spawn_point = nil
-
-[respawn@yan_smart_terrain_6_4] ;-- Type: faction {ecolog} = south\base
-spawn_ecolog@novice
-spawn_ecolog@advanced
-spawn_ecolog_special
-;spawn_deserted_base
-
-
-[spawn_ecolog@novice]
-spawn_squads = ecolog_sim_squad_novice, ecolog_sim_squad_advanced
-spawn_num = {+yan_stalker_sakharov_dead +yan_ecolog_vasilyev_dead +yan_ecolog_semenov_dead +yan_ecolog_kruglov_dead} 0, 2
-
-[spawn_ecolog@advanced]
-spawn_squads = ecolog_sim_squad_advanced, ecolog_sim_squad_veteran
-spawn_num = {+yan_stalker_sakharov_dead +yan_ecolog_vasilyev_dead +yan_ecolog_semenov_dead +yan_ecolog_kruglov_dead} 0, 2
-
-[spawn_ecolog_special]
-spawn_squads = ecolog_sim_squad_advanced_1e_1ls_1ss, ecolog_sim_squad_advanced_2e_2ls_1ss, ecolog_sim_squad_advanced_1e_2ls, ecolog_sim_squad_advanced_1e_2es
-spawn_num = {+yan_stalker_sakharov_dead +yan_ecolog_vasilyev_dead +yan_ecolog_semenov_dead +yan_ecolog_kruglov_dead} 0, 2
-
-;[spawn_deserted_base]
-;spawn_squads = yan_army_spetsnaz_squad2
-;spawn_num = {+yan_stalker_sakharov_dead +yan_ecolog_vasilyev_dead +yan_ecolog_semenov_dead +yan_ecolog_kruglov_dead -agr_military_colonel_kovalski_dead !squad_name_exist(yan_army_spetsnaz_squad2)} 1, 0
-
-
-[on_changing_level]
-on_info = %=script(redone_xr_dynamic_object:dynamic_object:misc\spawn_object\yan_smart_terrain_6_4_object.ltx)%
-
-;[smart_control]
-;noweap_zone = yan_space_restrictor_no_weapon_actor_base_cut2
-;ignore_zone = yan_smart_terrain_6_4_def
-;alarm_start_sound = nil
-;alarm_stop_sound = nil
-
-[exclusive]
-mechanic_army_yan_mlr = yantar\mechanic_army_yan_mlr_logic.ltx
-yan_povar_army_mlr = yantar\yan_povar_army_mlr.ltx
-yan_bunker_guards = yantar\yan_scientists.ltx
-
-yan_saharov = yantar\yan_saharov.ltx
-yan_kruglov = yantar\yan_scientists.ltx
-yan_semenov = yantar\yan_scientists.ltx
-yan_vasiliev = yantar\yan_scientists.ltx
-
-yan_smart_terrain_6_4_camp_work_1 = yantar\yan_smart_terrain_6_4_smart_logic.ltx
-yan_smart_terrain_6_4_camp_work_2 = yantar\yan_smart_terrain_6_4_smart_logic.ltx
-
-yan_smart_terrain_6_4_zombie_wave_1 = yantar\yan_smart_terrain_6_4_smart_logic.ltx
-yan_smart_terrain_6_4_zombie_wave_2 = yantar\yan_smart_terrain_6_4_smart_logic.ltx
-yan_smart_terrain_6_4_zombie_wave_3 = yantar\yan_smart_terrain_6_4_smart_logic.ltx
-yan_smart_terrain_6_4_zombie_wave_4 = yantar\yan_smart_terrain_6_4_smart_logic.ltx
-yan_smart_terrain_6_4_zombie_wave_5 = yantar\yan_smart_terrain_6_4_smart_logic.ltx
-yan_smart_terrain_6_4_zombie_wave_6 = yantar\yan_smart_terrain_6_4_smart_logic.ltx
-yan_smart_terrain_6_4_zombie_wave_7 = yantar\yan_smart_terrain_6_4_smart_logic.ltx
-yan_smart_terrain_6_4_zombie_wave_8 = yantar\yan_smart_terrain_6_4_smart_logic.ltx
-yan_smart_terrain_6_4_zombie_wave_9 = yantar\yan_smart_terrain_6_4_smart_logic.ltx
-yan_smart_terrain_6_4_zombie_wave_10 = yantar\yan_smart_terrain_6_4_smart_logic.ltx
-yan_smart_terrain_6_4_zombie_wave_11 = yantar\yan_smart_terrain_6_4_smart_logic.ltx
-yan_smart_terrain_6_4_zombie_wave_12 = yantar\yan_smart_terrain_6_4_smart_logic.ltx
-yan_smart_terrain_6_4_zombie_wave_13 = yantar\yan_smart_terrain_6_4_smart_logic.ltx
-yan_smart_terrain_6_4_zombie_wave_14 = yantar\yan_smart_terrain_6_4_smart_logic.ltx
-yan_smart_terrain_6_4_zombie_wave_15 = yantar\yan_smart_terrain_6_4_smart_logic.ltx
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/yantar/smart/yan_smart_terrain_snork_u.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/yantar/smart/yan_smart_terrain_snork_u.ltx
deleted file mode 100644
index 91ebae36..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/yantar/smart/yan_smart_terrain_snork_u.ltx
+++ /dev/null
@@ -1,33 +0,0 @@
-[smart_terrain]
-squad_id = 15
-max_population = 2
-respawn_params = respawn@yan_smart_terrain_snork_u
-respawn_only_smart = false
-respawn_idle = 172800
-respawn_radius = 50
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = nil
-;def_restr = nil
-;safe_restr = nil
-;spawn_point = nil
-
-[respawn@yan_smart_terrain_snork_u] ;-- Type:
-spawn_snork
-spawn_zombie
-
-
-[spawn_snork] ;-- Normal mutants - Rates of groups: ( 2 snork )
-spawn_squads = simulation_snork_2_3, simulation_snork_2_5
-spawn_num = {=actor_community(actor_monolith)} 0,{=actor_community(actor_greh)} 0,{+yan_kill_brain_done} 1, 0
-
-[spawn_zombie] ;-- Weak mutants - Rates of groups: ( 1 zombie + 1 zombied )
-spawn_squads = simulation_mix_zombie, zombied_sim_squad_mix
-spawn_num = {=actor_community(actor_monolith)} 0,{=actor_community(actor_greh)} 0,{+yan_kill_brain_done} 0, 1
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-;[exclusive]
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/yantar/smart/yan_smart_terrain_zombi_spawn.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/yantar/smart/yan_smart_terrain_zombi_spawn.ltx
deleted file mode 100644
index d3c30007..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/yantar/smart/yan_smart_terrain_zombi_spawn.ltx
+++ /dev/null
@@ -1,43 +0,0 @@
-[smart_terrain]
-squad_id = 14
-max_population = 2
-respawn_params = respawn@yan_smart_terrain_zombi_spawn
-respawn_only_smart = false
-respawn_idle = 172800
-respawn_radius = 50
-;arrive_dist = 0
-;smart_control = nil
-;att_restr = nil
-;def_restr = nil
-;safe_restr = nil
-;spawn_point = nil
-
-[respawn@yan_smart_terrain_zombi_spawn] ;-- Type: faction {zombied} = wahyy...
-spawn_zombied_squad
-spawn_zombie
-spawn_mutants
-spawn_ecolog_special
-
-
-[spawn_zombied_squad]
-spawn_squads = zombied_sim_squad_novice, zombied_sim_squad_advanced, zombied_sim_squad_mix
-spawn_num = {+yan_kill_brain_done} 0, 1
-
-[spawn_zombie] ;-- Weak\normal mutants - Rates of groups: ( 3 zombies )
-spawn_squads = simulation_zombie, simulation_zombie_3_6, simulation_mix_zombie
-spawn_num = {+yan_kill_brain_done} 0, 1
-
-[spawn_mutants] ;-- Normal\hard mutants - Rates of groups: ( 1 tushkano + 2 snork + 2 fracture )
-spawn_squads = simulation_tushkano_7_10, simulation_snork_2_3, simulation_snork_2_5, simulation_fracture, simulation_fracture
-spawn_num = {+yan_kill_brain_done} 1, 0
-
-[spawn_ecolog_special]
-spawn_squads = yan_ecolog_guard_mlr_squad2
-spawn_num = {+yan_kill_brain_done !squad_name_exist(yan_ecolog_guard_mlr_squad2) -yan_stalker_sakharov_dead -yan_ecolog_vasilyev_dead -yan_ecolog_semenov_dead +yan_ecolog_kruglov_dead} 1, 0
-
-
-;[on_changing_level]
-
-;[smart_control]
-
-;[exclusive]
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/yantar/yan_bunker_radio.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/yantar/yan_bunker_radio.ltx
deleted file mode 100644
index 492b6a22..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/yantar/yan_bunker_radio.ltx
+++ /dev/null
@@ -1,9 +0,0 @@
-[logic]
-active = ph_sound
-
-[ph_sound]
-snd = esc_sidorovich_radio
-looped = false
-min_idle = 300
-max_idle = 500
-random = true
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/yantar/yan_ecolog_bunker_rupor.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/yantar/yan_ecolog_bunker_rupor.ltx
deleted file mode 100644
index be806edd..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/yantar/yan_ecolog_bunker_rupor.ltx
+++ /dev/null
@@ -1,27 +0,0 @@
-[logic]
-active = ph_idle@sound_idle
-
-[ph_idle@sound_idle]
-on_info = {=surge_started} ph_idle@surge
-;on_info2 = {+yan_stalker_sakharov_dead} ph_idle@nil
-
-[ph_idle@surge]
-on_game_timer = 100 | ph_idle@surge_started
-
-[ph_idle@surge_started]
-on_info = %=play_sound(yan_blowout_siren)%
-;on_info2 = {!surge_started} ph_idle@sound_idle
-on_game_timer = 370 | ph_idle@surge_siren_end
-
-[ph_idle@surge_siren_end]
-on_info = %=play_sound(yan_blowout_siren_1)%
-on_signal = sound_end | ph_idle@surge_act_idle
-
-[ph_idle@surge_act_idle]
-on_info = {=surge_started} ph_idle@surge
-on_game_timer = 1240 | ph_idle@sound_idle
-
-[ph_idle@nil]
-
-[collide]
-ignore_static
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/yantar/yan_ecolog_bunker_sound.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/yantar/yan_ecolog_bunker_sound.ltx
deleted file mode 100644
index 9308a2a4..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/yantar/yan_ecolog_bunker_sound.ltx
+++ /dev/null
@@ -1,13 +0,0 @@
-[logic]
-active = ph_idle@play
-
-[ph_idle@play]
-on_info = %=play_sound_looped(yan_sci_tech_sounds)%
-on_info2 = {+yan_stalker_sakharov_dead} ph_idle@nil
-
-[ph_idle@nil]
-on_info = %=stop_sound_looped%
-
-[collide]
-ignore_static
-
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/yantar/yan_endless_night_spawn_logic_1.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/yantar/yan_endless_night_spawn_logic_1.ltx
deleted file mode 100644
index f307dd4a..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/yantar/yan_endless_night_spawn_logic_1.ltx
+++ /dev/null
@@ -1,20 +0,0 @@
-[logic]
-active = ph_idle@wait_actor
-
-[ph_idle@wait_actor]
-on_info = {=actor_near_smart(yan_smart_terrain_1_6) =is_night} ph_idle@spawn_night_monster_1, {=actor_near_smart(yan_smart_terrain_1_6) =is_dark_night} ph_idle@spawn_dark_monster_1
-
-[ph_idle@spawn_night_monster_1]
-on_info = {~10} %=create_squad(simulation_snork_night:yan_smart_terrain_1_6)% ph_idle@reset, {~10} %=create_squad(simulation_fracture_night:yan_smart_terrain_1_6)% ph_idle@reset, {~10} %=create_squad(simulation_bloodsucker_night:yan_smart_terrain_1_6)% ph_idle@reset, {~10} %=create_squad(simulation_pseudodog_night:yan_smart_terrain_1_6)% ph_idle@reset, ph_idle@wait_reset
-
-[ph_idle@spawn_dark_monster_1]
-on_info = {~10} %=create_squad(simulation_psysucker_white_night:yan_smart_terrain_1_6)% ph_idle@reset, {~10} %=create_squad(simulation_snork_night:yan_smart_terrain_1_6)% ph_idle@reset, {~10} %=create_squad(simulation_bloodsucker_night:yan_smart_terrain_1_6)% ph_idle@reset, {~10} %=create_squad(simulation_psysucker_night:yan_smart_terrain_1_6)% ph_idle@reset, ph_idle@wait_reset
-
-[ph_idle@reset]
-on_game_timer = 86400 | ph_idle@wait_actor
-
-[ph_idle@wait_reset]
-on_game_timer = 580 | ph_idle@wait_actor
-
-[collide]
-ignore_static
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/yantar/yan_endless_night_spawn_logic_2.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/yantar/yan_endless_night_spawn_logic_2.ltx
deleted file mode 100644
index de533b82..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/yantar/yan_endless_night_spawn_logic_2.ltx
+++ /dev/null
@@ -1,20 +0,0 @@
-[logic]
-active = ph_idle@wait_actor
-
-[ph_idle@wait_actor]
-on_info = {=actor_near_smart(yan_smart_terrain_4_2) =is_night} ph_idle@spawn_night_monster_1, {=actor_near_smart(yan_smart_terrain_4_2) =is_dark_night} ph_idle@spawn_dark_monster_1
-
-[ph_idle@spawn_night_monster_1]
-on_info = {~10} %=create_squad(simulation_snork_night:yan_smart_terrain_4_2)% ph_idle@reset, {~10} %=create_squad(simulation_fracture_night:yan_smart_terrain_4_2)% ph_idle@reset, {~10} %=create_squad(simulation_bloodsucker_red_night:yan_smart_terrain_4_2)% ph_idle@reset, {~10} %=create_squad(simulation_psysucker_brown_night:yan_smart_terrain_4_2)% ph_idle@reset, ph_idle@wait_reset
-
-[ph_idle@spawn_dark_monster_1]
-on_info = {~10} %=create_squad(simulation_chimera_night:yan_smart_terrain_4_2)% ph_idle@reset, {~10} %=create_squad(simulation_snork_night:yan_smart_terrain_4_2)% ph_idle@reset, {~10} %=create_squad(simulation_bloodsucker_red_night:yan_smart_terrain_4_2)% ph_idle@reset, {~10} %=create_squad(simulation_psysucker_brown_night:yan_smart_terrain_4_2)% ph_idle@reset, ph_idle@wait_reset
-
-[ph_idle@reset]
-on_game_timer = 86400 | ph_idle@wait_actor
-
-[ph_idle@wait_reset]
-on_game_timer = 580 | ph_idle@wait_actor
-
-[collide]
-ignore_static
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/yantar/yan_endless_night_spawn_logic_3.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/yantar/yan_endless_night_spawn_logic_3.ltx
deleted file mode 100644
index 94490a67..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/yantar/yan_endless_night_spawn_logic_3.ltx
+++ /dev/null
@@ -1,20 +0,0 @@
-[logic]
-active = ph_idle@wait_actor
-
-[ph_idle@wait_actor]
-on_info = {=actor_near_smart(yan_smart_terrain_6_2) =is_night} ph_idle@spawn_night_monster_1, {=actor_near_smart(yan_smart_terrain_6_2) =is_dark_night} ph_idle@spawn_dark_monster_1
-
-[ph_idle@spawn_night_monster_1]
-on_info = {~10} %=create_squad(simulation_mix_zombie_night:yan_smart_terrain_6_2)% ph_idle@reset, {~10} %=create_squad(simulation_snork_night:yan_smart_terrain_6_2)% ph_idle@reset, {~10} %=create_squad(simulation_lurker_brown_night:yan_smart_terrain_6_2)% ph_idle@reset, {~10} %=create_squad(simulation_pseudodog_night:yan_smart_terrain_6_2)% ph_idle@reset, ph_idle@wait_reset
-
-[ph_idle@spawn_dark_monster_1]
-on_info = {~10} %=create_squad(simulation_zombie_blind_3zomb_night:yan_smart_terrain_6_2)% ph_idle@reset, {~10} %=create_squad(simulation_snork_2_3_night:yan_smart_terrain_6_2)% ph_idle@reset, {~10} %=create_squad(simulation_bloodsucker_night:yan_smart_terrain_6_2)% ph_idle@reset, {~10} %=create_squad(simulation_psysucker_night:yan_smart_terrain_6_2)% ph_idle@reset, ph_idle@wait_reset
-
-[ph_idle@reset]
-on_game_timer = 86400 | ph_idle@wait_actor
-
-[ph_idle@wait_reset]
-on_game_timer = 580 | ph_idle@wait_actor
-
-[collide]
-ignore_static
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/yantar/yan_tonnel_military_1_logic.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/yantar/yan_tonnel_military_1_logic.ltx
deleted file mode 100644
index ead24d3a..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/yantar/yan_tonnel_military_1_logic.ltx
+++ /dev/null
@@ -1,7 +0,0 @@
-[logic]
-active = walker
-
-[walker]
-path_walk = yan_gigant_walk
-path_look = yan_gigant_look
-out_restr = yantar_tunnel_restrictor_3
diff --git a/mods/Redone Collection_backup/gamedata/configs/scripts/yantar/yan_tonnel_military_2_logic.ltx b/mods/Redone Collection_backup/gamedata/configs/scripts/yantar/yan_tonnel_military_2_logic.ltx
deleted file mode 100644
index 7ab0faf9..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/scripts/yantar/yan_tonnel_military_2_logic.ltx
+++ /dev/null
@@ -1,7 +0,0 @@
-[logic]
-active = walker@2
-
-[walker@2]
-path_walk = yan_gigant_walk2
-path_look = yan_gigant_look2
-out_restr = yantar_tunnel_restrictor_3
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/text/eng/st_characters_mar.xml b/mods/Redone Collection_backup/gamedata/configs/text/eng/st_characters_mar.xml
deleted file mode 100644
index 8df890ab..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/text/eng/st_characters_mar.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-
-
- Pasha
-
-
- Vladim
-
-
-
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/text/eng/ui_st_screen_esc.xml b/mods/Redone Collection_backup/gamedata/configs/text/eng/ui_st_screen_esc.xml
deleted file mode 100644
index e5127a56..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/text/eng/ui_st_screen_esc.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-
-
-
-
- -25 goodwill for dishonor Sidorovich deal with Military
-
-
-
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/text/rus/st_characters_mar.xml b/mods/Redone Collection_backup/gamedata/configs/text/rus/st_characters_mar.xml
deleted file mode 100644
index 1d6287b7..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/text/rus/st_characters_mar.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-
-
- Pasha
-
-
- Vadim
-
-
-
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/configs/text/rus/ui_st_screen_esc.xml b/mods/Redone Collection_backup/gamedata/configs/text/rus/ui_st_screen_esc.xml
deleted file mode 100644
index d82539e6..00000000
--- a/mods/Redone Collection_backup/gamedata/configs/text/rus/ui_st_screen_esc.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-
-
-
-
- -25 доброй воли за бесчестье Сидоровича сделка с Военными
-
-
-
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/scripts/game_achievements.script b/mods/Redone Collection_backup/gamedata/scripts/game_achievements.script
deleted file mode 100644
index 57df110a..00000000
--- a/mods/Redone Collection_backup/gamedata/scripts/game_achievements.script
+++ /dev/null
@@ -1,880 +0,0 @@
---------------------------------
------ Written by Darryl123 -----
---------------------------------
-
--------------------------
------ Miscellaneous -----
--------------------------
-
--- Check if achievements can be unlocked.
-function can_unlock()
- return (db.actor and db.actor.afterFirstUpdate)
-end
-
--- Counts how many achievements exist.
-local achievements_count = nil
-function get_achievements_count()
- -- Check if a count has already been made.
- if (achievements_count) then
- return achievements_count
- end
- -- Scan the achievements section for achievements.
- achievements_count = 0
- local line_count = ini_sys:line_count("achievements") or 0
- for i = 0, line_count - 1 do
- -- Check whether the achievement requires story mode.
- local junk1, section, junk2 = ini_sys:r_line("achievements", i, "", "")
-
- local ignore = ini_sys:r_bool_ex(section, "ignore", false)
- local story = ini_sys:r_bool_ex(section, "story", false)
- local ironman = ini_sys:r_bool_ex(section, "ironman", false)
- local warfare = ini_sys:r_bool_ex(section, "warfare", false)
-
- local is_story = (story and not has_alife_info("story_mode_disabled"))
- local is_ironman = (ironman and IsHardcoreMode())
- local is_warfare = (warfare and _G.WARFARE)
-
- if (not (story or ironman or warfare)) -- if achievement has no restricted mode
- or (is_story and not ironman) -- if achievement for story mode only
- or (is_story and is_ironman)
- or (is_warfare)
- then
- if (not ignore) then
- achievements_count = achievements_count + 1
- end
- end
- end
- return achievements_count
-end
-
--- Counts how many achievements are locked.
-function get_achievements_locked_count()
- return get_achievements_count() - get_achievements_unlocked_count()
-end
-
--- Counts how many achievements are unlocked.
-function get_achievements_unlocked_count()
- return game_statistics.get_actor_achievements_count()
-end
-
--- Checks whether an achievement is unlocked.
-function has_achievement(achievement)
- return game_statistics.has_actor_achievement(achievement)
-end
-
---------------------
------ Functors -----
---------------------
-
--- Bookworm Food
-function bookworm_food_functor()
- -- Check if it can be unlocked.
- if (not can_unlock()) then
- return false
- end
- -- Check if it is already unlocked.
- if (has_achievement("bookworm_food")) then
- return true
- end
- -- Unlock the achievement.
- if (bookworm_food_requirements()) then
- bookworm_food_rewards()
- return true
- end
-end
-
--- Completionist.
-function completionist_functor()
- -- Check if it can be unlocked.
- if (not can_unlock()) then
- return false
- end
- -- Check if it is already unlocked.
- if (has_achievement("completionist")) then
- return true
- end
- -- Unlock the achievement.
- if (completionist_requirements()) then
- completionist_rewards()
- return true
- end
-end
-
--- Down to Earth.
-function down_to_earth_functor()
- -- Check if it can be unlocked.
- if (not can_unlock()) then
- return false
- end
- -- Check if it is already unlocked.
- if (has_achievement("down_to_earth")) then
- return true
- end
- -- Unlock the achievement.
- if (down_to_earth_requirements()) then
- down_to_earth_rewards()
- return true
- end
-end
-
--- Duga Free.
-function duga_free_functor()
- -- Check if it can be unlocked.
- if (not can_unlock()) then
- return false
- end
- -- Check if it is already unlocked.
- if (has_achievement("duga_free")) then
- return true
- end
- -- Unlock the achievement.
- if (duga_free_requirements()) then
- duga_free_rewards()
- return true
- end
-end
-
--- Geologist.
-function geologist_functor()
- -- Check if it can be unlocked.
- if (not can_unlock()) then
- return false
- end
- -- Check if it is already unlocked.
- if (has_achievement("geologist")) then
- return true
- end
- -- Unlock the achievement.
- if (geologist_requirements()) then
- geologist_rewards()
- return true
- end
-end
-
--- Heavy Pockets.
-function heavy_pockets_functor()
- -- Check if it can be unlocked.
- if (not can_unlock()) then
- return false
- end
- -- Check if it is already unlocked.
- if (has_achievement("heavy_pockets")) then
- return true
- end
- -- Unlock the achievement.
- if (heavy_pockets_requirements()) then
- heavy_pockets_rewards()
- return true
- end
-end
-
--- Infopreneur.
-function infopreneur_functor()
- -- Check if it can be unlocked.
- if (not can_unlock()) then
- return false
- end
- -- Check if it is already unlocked.
- if (has_achievement("infopreneur")) then
- return true
- end
- -- Unlock the achievement.
- if (infopreneur_requirements()) then
- infopreneur_rewards()
- return true
- end
-end
-
--- Mechanized Warfare.
-function mechanized_warfare_functor()
- -- Check if it can be unlocked.
- if (not can_unlock()) then
- return false
- end
- -- Check if it is already unlocked.
- if (has_achievement("mechanized_warfare")) then
- return true
- end
- -- Unlock the achievement.
- if (mechanized_warfare_requirements()) then
- mechanized_warfare_rewards()
- return true
- end
-end
-
--- Patriarch.
-function patriarch_functor()
- -- Check if it can be unlocked.
- if (not can_unlock()) then
- return false
- end
- -- Check if it is already unlocked.
- if (has_achievement("patriarch")) then
- return true
- end
- -- Unlock the achievement.
- if (patriarch_requirements()) then
- patriarch_rewards()
- return true
- end
-end
-
--- Radiotherapy.
-function radiotherapy_functor()
- -- Check if it can be unlocked.
- if (not can_unlock()) then
- return false
- end
- -- Check if it is already unlocked.
- if (has_achievement("radiotherapy")) then
- return true
- end
- -- Unlock the achievement.
- if (radiotherapy_requirements()) then
- radiotherapy_rewards()
- return true
- end
-end
-
--- Rag and Bone.
-function rag_and_bone_functor()
- -- Check if it can be unlocked.
- if (not can_unlock()) then
- return false
- end
- -- Check if it is already unlocked.
- if (has_achievement("rag_and_bone")) then
- return true
- end
- -- Unlock the achievement.
- if (rag_and_bone_requirements()) then
- rag_and_bone_rewards()
- return true
- end
-end
-
--- Silver or Lead.
-function silver_or_lead_functor()
- -- Check if it can be unlocked.
- if (not can_unlock()) then
- return false
- end
- -- Check if it is already unlocked.
- if (has_achievement("silver_or_lead")) then
- return true
- end
- -- Unlock the achievement.
- if (silver_or_lead_requirements()) then
- silver_or_lead_rewards()
- return true
- end
-end
-
--- Tourist.
-function tourist_functor()
- -- Check if it can be unlocked.
- if (not can_unlock()) then
- return false
- end
- -- Check if it is already unlocked.
- if (has_achievement("tourist")) then
- return true
- end
- -- Unlock the achievement.
- if (has_alife_info("tourist_achievement_delay")) then
- tourist_rewards()
- return true
- end
- -- An infoportion delays the achievement.
- -- Without this it often unlocks during level transition.
- if (tourist_requirements()) then
- db.actor:give_info_portion("tourist_achievement_delay")
- return false
- end
-end
-
--- Well Dressed.
-function well_dressed_functor()
- -- Check if it can be unlocked.
- if (not can_unlock()) then
- return false
- end
- -- Check if it is already unlocked.
- if (has_achievement("well_dressed")) then
- return true
- end
- -- Unlock the achievement.
- if (well_dressed_requirements()) then
- well_dressed_rewards()
- return true
- end
-end
-
--- Wishful Thinking.
-function wishful_thinking_functor()
- -- Check if it can be unlocked.
- if (not can_unlock()) then
- return false
- end
- -- Check if it is already unlocked.
- if (has_achievement("wishful_thinking")) then
- return true
- end
- -- Unlock the achievement.
- if (wishful_thinking_requirements()) then
- wishful_thinking_rewards()
- return true
- end
-end
-
--- Infantile Pleasure.
-function infantile_pleasure_functor()
- -- Check if it can be unlocked.
- if (not can_unlock()) then
- return false
- end
- -- Check if it is already unlocked.
- if (has_achievement("infantile_pleasure")) then
- return true
- end
- -- Unlock the achievement.
- if (infantile_pleasure_requirements()) then
- infantile_pleasure_rewards()
- return true
- end
-end
-
--- Recycler.
-function recycler_functor()
- -- Check if it can be unlocked.
- if (not can_unlock()) then
- return false
- end
- -- Check if it is already unlocked.
- if (has_achievement("recycler")) then
- return true
- end
- -- Unlock the achievement.
- if (recycler_requirements()) then
- recycler_rewards()
- return true
- end
-end
-
--- Artificer Eagerness.
-function artificer_eagerness_functor()
- -- Check if it can be unlocked.
- if (not can_unlock()) then
- return false
- end
- -- Check if it is already unlocked.
- if (has_achievement("artificer_eagerness")) then
- return true
- end
- -- Unlock the achievement.
- if (artificer_eagerness_requirements()) then
- artificer_eagerness_rewards()
- return true
- end
-end
-
--- Unforeseen Guest.
-function unforeseen_guest_functor()
- -- Check if it can be unlocked.
- if (not can_unlock()) then
- return false
- end
- -- Check if it is already unlocked.
- if (has_achievement("unforeseen_guest")) then
- return true
- end
- -- Unlock the achievement.
- if (unforeseen_guest_requirements()) then
- unforeseen_guest_rewards()
- return true
- end
-end
-
--- Absolver.
-function absolver_functor()
- -- Check if it can be unlocked.
- if (not can_unlock()) then
- return false
- end
- -- Check if it is already unlocked.
- if (has_achievement("absolver")) then
- return true
- end
- -- Unlock the achievement.
- if (absolver_requirements()) then
- absolver_rewards()
- return true
- end
-end
-
--- Collaborator.
-function collaborator_functor()
- -- Check if it can be unlocked.
- if (not can_unlock()) then
- return false
- end
- -- Check if it is already unlocked.
- if (has_achievement("collaborator")) then
- return true
- end
- -- Unlock the achievement.
- if (collaborator_requirements()) then
- collaborator_rewards()
- return true
- end
-end
-
--- Iron Curtain.
-function iron_curtain_functor()
- -- Check if it can be unlocked.
- if (not can_unlock()) then
- return false
- end
- -- Check if it is already unlocked.
- if (has_achievement("iron_curtain")) then
- return true
- end
- -- Unlock the achievement.
- if (iron_curtain_requirements()) then
- iron_curtain_rewards()
- return true
- end
-end
-
--- Murky Spirit.
-function murky_spirit_functor()
- -- Check if it can be unlocked.
- if (not can_unlock()) then
- return false
- end
- -- Check if it is already unlocked.
- if (has_achievement("murky_spirit")) then
- return true
- end
- -- Unlock the achievement.
- if (murky_spirit_requirements()) then
- murky_spirit_rewards()
- return true
- end
-end
-
--- Invictus.
-function invictus_functor()
- -- Check if it can be unlocked.
- if (not can_unlock()) then
- return false
- end
- -- Check if it is already unlocked.
- if (has_achievement("invictus")) then
- return true
- end
- -- Unlock the achievement.
- if (invictus_requirements()) then
- invictus_rewards()
- return true
- end
-end
-
-------------------------
------ Requirements -----
-------------------------
-
--- Bookworm Food
--- Requires all encyclopedia articles be unlocked.
-function bookworm_food_requirements()
- return (
- (ui_pda_encyclopedia_tab.get_articles_locked_count() == 0)
- )
-end
-
-
--- Completionist.
--- Requires all available achievements to be unlocked.
-function completionist_requirements()
- return (
- (get_achievements_locked_count() <= 1)
- )
-end
-
--- Down to Earth.
--- Requires 3 helicopters killed, or just one with an RPG-7.
-function down_to_earth_requirements()
- return (
- (game_statistics.get_statistic_count("helicopters_downed") >= 3)
- or (game_statistics.get_statistic_count("helicopters_downed2") >= 1)
- )
-end
-
--- Duga Free.
--- Requires story mode, and that the Miracle Machine and Brain Scorcher are disabled.
-function duga_free_requirements()
- return (
- not (has_alife_info("story_mode_disabled"))
- and (has_alife_info("yan_labx16_switcher_primary_off"))
- and (has_alife_info("bar_deactivate_radar_done"))
- )
-end
-
--- Geologist.
--- Requires 50 artefacts be detected by the player.
-function geologist_requirements()
- return (
- (game_statistics.get_statistic_count("artefacts_detected") >= 50)
- )
-end
-
--- Heavy Pockets.
--- Requires player to possess 1,000,000 RU.
-function heavy_pockets_requirements()
- return (
- (db.actor:money() >= 1000000)
- )
-end
-
--- Infopreneur.
--- Requires player to deliver 50 PDAs.
-function infopreneur_requirements()
- return (
- (game_statistics.get_statistic_count("pdas_delivered") >= 50)
- )
-end
-
--- Mechanized Warfare.
--- Requires a mechanic to own all tools.
-function mechanized_warfare_requirements()
- return (
- (has_alife_info("agr_smart_terrain_1_6_army_mechanic_stalker_upgrade_tier_3"))
- or (has_alife_info("army_south_mechan_mlr_upgrade_tier_3"))
- or (has_alife_info("bar_visitors_stalker_mechanic_upgrade_tier_3"))
- or (has_alife_info("cit_killers_merc_mechanic_stalker_upgrade_tier_3"))
- or (has_alife_info("dasc_tech_mlr_upgrade_tier_3"))
- or (has_alife_info("val_smart_terrain_7_3_bandit_mechanic_stalker_upgrade_tier_3"))
- or (has_alife_info("esc_smart_terrain_5_7_loner_mechanic_stalker_upgrade_tier_3"))
- or (has_alife_info("jup_b217_stalker_tech_upgrade_tier_3"))
- or (has_alife_info("jup_cont_mech_bandit_upgrade_tier_3"))
- or (has_alife_info("mar_base_stalker_tech_upgrade_tier_3"))
- or (has_alife_info("mil_smart_terrain_7_7_freedom_mechanic_stalker_upgrade_tier_3"))
- or (has_alife_info("mechanic_monolith_jup_depo_upgrade_tier_3"))
- or (has_alife_info("mechanic_monolith_kbo_upgrade_tier_3"))
- or (has_alife_info("pri_monolith_monolith_mechanic_stalker_upgrade_tier_3"))
- or (has_alife_info("merc_pri_a18_mech_mlr_upgrade_tier_3"))
- or (has_alife_info("trucks_cemetery_bandit_mechanic_upgrade_tier_3"))
- or (has_alife_info("yan_ecolog_kruglov_upgrade_tier_3"))
- or (has_alife_info("zat_a2_stalker_mechanic_upgrade_tier_3"))
- or (has_alife_info("zat_stancia_mech_merc_upgrade_tier_3"))
- or (has_alife_info("mechanic_army_yan_mlr_upgrade_tier_3"))
- or (has_alife_info("jup_depo_isg_tech_upgrade_tier_3"))
- or (has_alife_info("sim_default_army_mechanic_upgrade_tier_3"))
- or (has_alife_info("sim_default_bandit_mechanic_upgrade_tier_3"))
- or (has_alife_info("sim_default_csky_mechanic_upgrade_tier_3"))
- or (has_alife_info("sim_default_dolg_mechanic_upgrade_tier_3"))
- or (has_alife_info("sim_default_ecolog_mechanic_upgrade_tier_3"))
- or (has_alife_info("sim_default_freedom_mechanic_upgrade_tier_3"))
- or (has_alife_info("sim_default_killer_mechanic_upgrade_tier_3"))
- or (has_alife_info("sim_default_monolith_mechanic_upgrade_tier_3"))
- or (has_alife_info("sim_default_stalker_mechanic_upgrade_tier_3"))
- or (has_alife_info("sim_default_renegade_mechanic_upgrade_tier_3"))
- or (has_alife_info("sim_default_greh_mechanic_upgrade_tier_3"))
- or (has_alife_info("sim_default_isg_mechanic_upgrade_tier_3"))
- )
-end
-
--- Patriarch.
--- Requires rank of 'Legend' be reached.
-function patriarch_requirements()
- return (
- (db.actor:character_rank() >= 50000)
- )
-end
-
--- Radiotherapy.
--- Requires 25 emissions and 25 psi-storms to be survived.
-function radiotherapy_requirements()
- return (
- (game_statistics.get_statistic_count("emissions") >= 25)
- and (game_statistics.get_statistic_count("psi_storms") >= 25)
- )
-end
-
--- Rag and Bone.
--- Requires 100 stashes be found and looted.
-function rag_and_bone_requirements()
- return (
- (game_statistics.get_statistic_count("stashes_found") >= 100)
- )
-end
-
--- Silver or Lead.
--- Requires player to kill 500 stalkers or have 50 surrender to you.
-function silver_or_lead_requirements()
- return (
- (game_statistics.get_statistic_count("killed_stalkers") >= 500)
- or (game_statistics.get_statistic_count("enemies_surrendered") >= 50)
- )
-end
-
--- Tourist.
--- Requires player to visit all levels.
-function tourist_requirements()
- return (
- (game_statistics.has_actor_visitied_all_levels())
- )
-end
-
--- Well Dressed.
--- Requires player to kill 500 mutants or field dress 250 mutant parts.
-function well_dressed_requirements()
- return (
- (game_statistics.get_statistic_count("killed_monsters") >= 500)
- or (game_statistics.get_statistic_count("field_dressings") >= 250)
- )
-end
-
--- Wishful Thinking.
--- Requires story mode, and for the player to finish Living Legend questlines.
-function wishful_thinking_requirements()
- return (
- not (has_alife_info("story_mode_disabled"))
- and (has_alife_info("living_legend_done"))
- )
-end
-
--- Infantile Pleasure
--- Requires player to smash 200 boxes
-function infantile_pleasure_requirements()
- return ((game_statistics.get_statistic_count("boxes_smashed") >= 200))
-end
-
--- Recycler
--- Requires player to disassemble 200 items
-function recycler_requirements()
- return ((game_statistics.get_statistic_count("items_disassembled") >= 200))
-end
-
--- Artificer Eagerness
--- Requires player to craft 50 items
-function artificer_eagerness_requirements()
- return ((game_statistics.get_statistic_count("items_crafted") >= 50))
-end
-
--- Unforeseen Guest
--- Requires player to stay disguised for 5 hours under stalkers watch
-function unforeseen_guest_requirements()
- return ((game_statistics.get_statistic_count("minutes_disguised") >= 5*60))
-end
-
--- Absolver.
--- Requires story mode, and for the player to finish Mortal Sin questlines.
-function absolver_requirements()
- return (
- not (has_alife_info("story_mode_disabled"))
- and (has_alife_info("mortal_sin_zone_hero"))
- )
-end
-
--- Collaborator.
--- Requires story mode, and for the player to finish Operation Afterglow questlines.
-function collaborator_requirements()
- return (
- not (has_alife_info("story_mode_disabled"))
- and (has_alife_info("operation_afterglow_complete"))
- )
-end
-
-
--- Iron Curtain.
--- Requires Warfare mode, and for the player's faction to take over the levels.
-function iron_curtain_requirements()
- return (
- IsWarfare() and (has_alife_info("warfare_actor_faction_domination"))
- )
-end
-
--- Murky Spirit.
--- Requires story mode, and for the player to finish Lost to the Zone questlines.
-function murky_spirit_requirements()
- return (
- not (has_alife_info("story_mode_disabled"))
- and (has_alife_info("operation_afterglow_complete"))
- and IsHardcoreMode()
- and not (has_alife_info("ironman_flag_off"))
- )
-end
-
--- Invictus.
--- Requires story mode, and for the player to finish Living Legend questlines.
-function invictus_requirements()
- return (
- not (has_alife_info("story_mode_disabled"))
- and (has_alife_info("operation_afterglow_complete"))
- and IsHardcoreMode()
- and not (has_alife_info("ironman_flag_off"))
- and not (has_alife_info("ironman_flag_died"))
- and (game_difficulties.get_game_factor("type") == 3)
- and (game_difficulties.get_eco_factor("type") == 3)
- and not (has_alife_info("diff_gameplay_flag_change"))
- and not (has_alife_info("diff_economy_flag_change"))
- and not (has_alife_info("debug_mode_flag_on"))
- )
-end
-
--------------------
------ Rewards -----
--------------------
-
--- Bookworm Food.
--- Future memory sticks become rare PDAs.
-function bookworm_food_rewards()
- SendScriptCallback("actor_on_achievement_earned","bookworm_food","st_achievement_15_unlock")
-end
-
--- Completionist.
-function completionist_rewards()
- SendScriptCallback("actor_on_achievement_earned","completionist","st_achievement_10_unlock")
-end
-
--- Down to Earth.
--- Weaker helicopters are respawned.
-function down_to_earth_rewards()
- SendScriptCallback("actor_on_achievement_earned","down_to_earth","st_achievement_12_unlock")
-end
-
--- Duga Free.
--- Yantar & Radar psi-fields disabled.
-function duga_free_rewards()
- SendScriptCallback("actor_on_achievement_earned","duga_free","st_achievement_4_unlock")
-end
-
--- Geologist.
--- Increased spawn chance of artefacts.
-function geologist_rewards()
- SendScriptCallback("actor_on_achievement_earned","geologist","st_achievement_13_unlock")
-end
-
--- Heavy Pockets.
--- Traders sell cheaper and rarer goods.
-function heavy_pockets_rewards()
- SendScriptCallback("actor_on_achievement_earned","heavy_pockets","st_achievement_1_unlock")
-end
-
--- Infopreneur.
--- Money received for delivering PDAs increased.
-function infopreneur_rewards()
- SendScriptCallback("actor_on_achievement_earned","infopreneur","st_achievement_3_unlock")
-end
-
--- Mechanized Warfare.
--- A mechanic can now fully upgrade equipment.
-function mechanized_warfare_rewards()
- SendScriptCallback("actor_on_achievement_earned","mechanized_warfare","st_achievement_7_unlock")
-end
-
--- Patriarch.
--- Larger sized squads can be recruited.
-function patriarch_rewards()
- SendScriptCallback("actor_on_achievement_earned","patriarch","st_achievement_14_unlock")
-end
-
--- Radiotherapy.
--- 25% chance of surviving emissions and psi-vortices.
-function radiotherapy_rewards()
- SendScriptCallback("actor_on_achievement_earned","radiotherapy","st_achievement_2_unlock")
-end
-
--- Rag and Bone.
--- Random chance of better loot in task reward stashes.
-function rag_and_bone_rewards()
- SendScriptCallback("actor_on_achievement_earned","rag_and_bone","st_achievement_9_unlock")
-end
-
--- Silver or Lead.
--- 33% chance of a second stash from surrendering stalkers.
-function silver_or_lead_rewards()
- SendScriptCallback("actor_on_achievement_earned","silver_or_lead","st_achievement_6_unlock")
-end
-
--- Tourist.
--- 3 "Tourist's stashes" are revealed.
-function tourist_rewards()
- for i=1,3 do
- treasure_manager.create_random_stash(nil, "Curious stash", nil)
- end
- db.actor:disable_info_portion("tourist_achievement_delay")
- SendScriptCallback("actor_on_achievement_earned","tourist","st_achievement_8_unlock")
-end
-
--- Well Dressed.
--- 20% chance of extra parts when field dressing mutants.
-function well_dressed_rewards()
- SendScriptCallback("actor_on_achievement_earned","well_dressed","st_achievement_5_unlock")
-end
-
--- Wishful Thinking.
--- Unlock "Renegades" faction
-function wishful_thinking_rewards()
- axr_main.config:w_value("unlocked_factions","renegade",true)
- axr_main.config:save()
- SendScriptCallback("actor_on_achievement_earned","wishful_thinking","st_achievement_11_unlock")
-end
-
--- Infantile Pleasure.
--- 25% chance of extra items found in boxes.
-function infantile_pleasure_rewards()
- SendScriptCallback("actor_on_achievement_earned","infantile_pleasure","st_achievement_16_unlock")
-end
-
--- Recycler.
--- 33% chance of extra part obtained from disassembling.
-function recycler_rewards()
- SendScriptCallback("actor_on_achievement_earned","recycler","st_achievement_17_unlock")
-end
-
--- Artificer Eagerness.
--- 1 less part used for crafting.
-function artificer_eagerness_rewards()
- SendScriptCallback("actor_on_achievement_earned","artificer_eagerness","st_achievement_18_unlock")
-end
-
--- Unforeseen Guest.
--- less suspicious spikes upon sudden actions.
-function unforeseen_guest_rewards()
- SendScriptCallback("actor_on_achievement_earned","unforeseen_guest","st_achievement_19_unlock")
-end
-
--- Absolver.
--- Unlock "Sin" faction
-function absolver_rewards()
- axr_main.config:w_value("unlocked_factions","greh",true)
- axr_main.config:save()
- SendScriptCallback("actor_on_achievement_earned","absolver","st_achievement_20_unlock")
-end
-
--- Collaborator.
--- Unlock "ISG" faction
-function collaborator_rewards()
- axr_main.config:w_value("unlocked_factions","isg",true)
- axr_main.config:save()
- SendScriptCallback("actor_on_achievement_earned","collaborator","st_achievement_21_unlock")
-end
-
--- Iron Curtain.
--- Reward 40,000 RU
-function iron_curtain_rewards()
- db.actor:give_money(40000)
- SendScriptCallback("actor_on_achievement_earned","iron_curtain","st_achievement_22_unlock")
-end
-
--- Murky Spirit.
-function murky_spirit_rewards()
- SendScriptCallback("actor_on_achievement_earned","murky_spirit","st_achievement_23_unlock")
-end
-
--- Invictus.
-function invictus_rewards()
- SendScriptCallback("actor_on_achievement_earned","invictus","st_achievement_24_unlock")
-end
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/scripts/game_statistics.script b/mods/Redone Collection_backup/gamedata/scripts/game_statistics.script
deleted file mode 100644
index 151c792a..00000000
--- a/mods/Redone Collection_backup/gamedata/scripts/game_statistics.script
+++ /dev/null
@@ -1,587 +0,0 @@
---------------------------------
------ Written by Darryl123 -----
---------------------------------
-
---[[
-
-- Modified by Tronex
-- 2019/4/29
-
-- NPC rank and rep progression by different stats
-
---]]
-
-------------------
------ Tables -----
-------------------
-
--- Achievements unlocked.
-actor_achievements = {
- ["bookworm_food"] = { unlocked = false, rank = 1000, rept = 0 },
- ["completionist"] = { unlocked = false, rank = 1000, rept = 0 },
- ["down_to_earth"] = { unlocked = false, rank = 1000, rept = 0 },
- ["duga_free"] = { unlocked = false, rank = 1000, rept = 0 },
- ["geologist"] = { unlocked = false, rank = 1000, rept = 0 },
- ["heavy_pockets"] = { unlocked = false, rank = 1000, rept = 0 },
- ["infopreneur"] = { unlocked = false, rank = 1000, rept = 0 },
- ["mechanized_warfare"] = { unlocked = false, rank = 1000, rept = 0 },
- ["patriarch"] = { unlocked = false, rank = 1000, rept = 0 },
- ["radiotherapy"] = { unlocked = false, rank = 1000, rept = 0 },
- ["rag_and_bone"] = { unlocked = false, rank = 1000, rept = 0 },
- ["silver_or_lead"] = { unlocked = false, rank = 1000, rept = 0 },
- ["tourist"] = { unlocked = false, rank = 1000, rept = 0 },
- ["well_dressed"] = { unlocked = false, rank = 1000, rept = 0 },
- ["wishful_thinking"] = { unlocked = false, rank = 1000, rept = 0 },
- ["infantile_pleasure"] = { unlocked = false, rank = 1000, rept = 0 },
- ["recycler"] = { unlocked = false, rank = 1000, rept = 0 },
- ["artificer_eagerness"] = { unlocked = false, rank = 1000, rept = 0 },
- ["unforeseen_guest"] = { unlocked = false, rank = 1000, rept = 0 },
- ["absolver"] = { unlocked = false, rank = 1000, rept = 0 },
- ["collaborator"] = { unlocked = false, rank = 1000, rept = 0 },
- ["iron_curtain"] = { unlocked = false, rank = 1000, rept = 0 },
- ["murky_spirit"] = { unlocked = false, rank = 1000, rept = 0 },
- ["invictus"] = { unlocked = false, rank = 1000, rept = 0 },
-}
-
--- Artefacts found and detected.
--- Should be empty by default.
-actor_artefacts = {
-}
-
--- Unlocked Anomaly maps. Should be empty by default.
-actor_anomaly_maps = {
-}
-
--- Miscellaneous data that requires recording.
-actor_miscellaneous = {
- ["actual_rank"] = 0,
- ["actual_rept"] = 0,
-}
-
--- Levels visited.
-actor_visited_levels = {
- ["jupiter"] = false,
- ["jupiter_underground"] = false,
- ["k00_marsh"] = false,
- ["k01_darkscape"] = false,
- ["k02_trucks_cemetery"] = false,
- ["l01_escape"] = false,
- ["l02_garbage"] = false,
- ["l03_agroprom"] = false,
- ["l03u_agr_underground"] = false,
- ["l04_darkvalley"] = false,
- ["l04u_labx18"] = false,
- ["l05_bar"] = false,
- ["l06_rostok"] = false,
- ["l07_military"] = false,
- ["l08_yantar"] = false,
- ["l08u_brainlab"] = false,
- ["l09_deadcity"] = false,
- ["l10_limansk"] = false,
- ["l10_radar"] = false,
- ["l10_red_forest"] = false,
- ["l10u_bunker"] = false,
- ["l11_hospital"] = false,
- ["l11_pripyat"] = false,
- ["l12_stancia"] = false,
- ["l12_stancia_2"] = false,
- ["l12u_control_monolith"] = false,
- ["l12u_sarcofag"] = false,
- ["l13_generators"] = false,
- ["l13u_warlab"] = false,
- ["labx8"] = false,
- ["pripyat"] = false,
- ["zaton"] = false,
- ["y04_pole"] = false,
-}
-
--- Smart terrains visited.
--- Should be empty by default.
-actor_visited_smarts = {
-}
-
--- Tracked player statistics and their rank and reputation rewards.
-actor_statistics = {
- ["arena_battles"] = { count = 0, rank = 7, rept = 8 },
- ["artefacts_detected"] = { count = 0, rank = 4, rept = 0 },
- ["artefacts_found"] = { count = 0, rank = 2, rept = 0 },
- ["articles"] = { count = 0, rank = 2, rept = 0 }, -- Counter is incremented but isn't used.
- ["boxes_smashed"] = { count = 0, rank = 1, rept = 0 },
- ["deaths"] = { count = 0, rank = 0, rept = 0 },
- ["donations"] = { count = 0, rank = 3, rept = 1 }, -- Actual points given depends on item condition.
- ["emissions"] = { count = 0, rank = 14, rept = 0 },
- ["enemies_surrendered"] = { count = 0, rank = 4, rept = 0 },
- ["field_dressings"] = { count = 0, rank = 1, rept = 0 },
- ["helicopters_downed"] = { count = 0, rank = 100, rept = 25 },
- ["helicopters_downed2"] = { count = 0, rank = 50, rept = 0 }, -- Bonus points for using explosives.
- ["killed_companions"] = { count = 0, rank = 0, rept = -75 },
- ["killed_monsters"] = { count = 0, rank = 2, rept = 0 },
- ["killed_prisoners"] = { count = 0, rank = 0, rept = -25 },
- ["killed_stalkers"] = { count = 0, rank = 0, rept = 0 }, -- Unused; see below and the "rank_kill_points" config section.
- ["killed_stalkers_e"] = { count = 0, rank = 0, rept = 2 }, -- Enemy relations.
- ["killed_stalkers_f"] = { count = 0, rank = 0, rept = -100 }, -- Friendly relations.
- ["killed_stalkers_n"] = { count = 0, rank = 0, rept = -75 }, -- Neutral relations.
- ["level_changes"] = { count = 0, rank = 0, rept = 0 },
- ["pdas_delivered"] = { count = 0, rank = 3, rept = 2 },
- ["psi_storms"] = { count = 0, rank = 7, rept = 0 },
- ["stashes_found"] = { count = 0, rank = 2, rept = 0 },
- ["tasks_cancelled"] = { count = 0, rank = 0, rept = -25 },
- ["tasks_completed"] = { count = 0, rank = 10, rept = 8 },
- ["tasks_failed"] = { count = 0, rank = 0, rept = -25 },
- ["wounded_helped"] = { count = 0, rank = 5, rept = 8 },
- -- new
- ["items_crafted"] = { count = 0, rank = 1, rept = 0 },
- ["items_disassembled"] = { count = 0, rank = 1, rept = 0 },
- ["self_repairs"] = { count = 0, rank = 1, rept = 0 },
- ["minutes_disguised"] = { count = 0, rank = 1, rept = 0 },
-}
-
--- Saved NPC statistics and their rank and reputation rewards.
-npc_statistics = {
- ["artefacts_found"] = { save = true, rank = 150, rept = 0 },
- ["boxes_smashed"] = { save = false, rank = 10, rept = 0 },
- ["field_dressings"] = { save = false, rank = 25, rept = 0 },
- ["helicopters_downed"] = { save = false, rank = 2500, rept = 50 },
- ["helicopters_downed2"] = { save = false, rank = 1000, rept = 50 },
- ["killed_monsters"] = { save = true, rank = 100, rept = 0 },
- ["killed_stalkers"] = { save = true, rank = 0, rept = 0 }, -- All
- ["killed_stalkers_e"] = { save = false, rank = 100, rept = 10 }, -- Enemy relations.
- ["killed_stalkers_f"] = { save = false, rank = 0, rept = -100 }, -- Friendly relations.
- ["killed_stalkers_n"] = { save = false, rank = 0, rept = -75 }, -- Neutral relations.
- ["corpse_looted"] = { save = true, rank = 10, rept = 0 },
- ["wounded_helped"] = { save = true, rank = 50, rept = 100 },
- ["items_sold"] = { save = true, rank = 10, rept = 0 },
-}
-
----------------------
------ Callbacks -----
----------------------
-
--- Called when actor takes an item.
-function actor_on_item_take(item)
- if not (item and IsArtefact(item)) then return end
-
- -- Hack to prevent player from exploting Artefacts Containers (gaining rank by recieving artefacts)
- if _G.ARTY_FROM_CONT then
- _G.ARTY_FROM_CONT = nil
- return
- end
-
- local artefact = item:get_artefact()
- local anomaly = bind_anomaly_zone.parent_zones_by_artefact_id[item:id()]
- -- Artefacts found counter incrementation.
- -- Checks to make sure artefact id hasn't already been logged.
- if (artefact) then
- artefact:FollowByPath("NULL", 0, vector():set(500,500,500))
- if not (actor_artefacts[item:id()]) then
- actor_artefacts[item:id()] = true
- increment_statistic("artefacts_found")
- else
- return
- end
- end
- -- Artefacts detected counter incrementation.
- -- Requires the artefact be associated with an anomaly.
- if (artefact and anomaly) then
- anomaly:on_artefact_take(item)
- increment_statistic("artefacts_detected")
- else
- bind_anomaly_zone.artefact_ways_by_id[item:id()] = nil
- end
-end
-
--- Called when an NPC is killed.
-function npc_on_death_callback(victim, killer)
- -- Return if the actor is not the killer.
- if not (killer and victim) then return end
- local id = killer:id()
- local killer_faction = character_community(killer)
- local victim_faction = character_community(victim)
- --if not (killer:id() == AC_ID) then return end
- -- Increment statistics based on faction relations.
-
- local stat
- if (xr_conditions.is_factions_friends(nil, nil, { killer_faction, victim_faction })) then
- stat = "killed_stalkers_f"
- elseif (xr_conditions.is_factions_enemies(nil, nil, { killer_faction, victim_faction })) then
- stat = "killed_stalkers_e"
- else
- stat = "killed_stalkers_n"
- end
-
- if (id == AC_ID) then
- increment_statistic("killed_stalkers")
- increment_statistic(stat)
- else
- increment_npc_statistic(killer,"killed_stalkers")
- increment_npc_statistic(killer,stat)
- end
-end
-
--- Called when an achievement is earned.
-function actor_on_achievement_earned(achievement, message)
- if (achievement and message) then
- news_manager.send_tip(db.actor, message, nil, achievement, nil, nil)
- if actor_achievements[achievement] then
- actor_achievements[achievement].unlocked = true
-
- if actor_achievements[achievement].rank then
- increment_rank( actor_achievements[achievement].rank )
- end
-
- if actor_achievements[achievement].rept then
- increment_reputation( actor_achievements[achievement].rept )
- end
- else
- actor_achievements[achievement] = {}
- actor_achievements[achievement].unlocked = true
- end
- end
-end
-
--- Called when the game is loaded.
-function on_game_load()
- if (not IsTestMode()) then
- actor_visited_levels[level.name()] = true
- end
-
- if DEV_DEBUG and (not has_alife_info("debug_mode_flag_on")) then
- give_info("debug_mode_flag_on")
- printf("~ Player used debug mode!")
- end
-end
-
--- Called when the game starts.
-function on_game_start()
- RegisterScriptCallback("actor_on_item_take", actor_on_item_take)
- RegisterScriptCallback("npc_on_death_callback", npc_on_death_callback)
- RegisterScriptCallback("actor_on_achievement_earned", actor_on_achievement_earned)
- RegisterScriptCallback("on_game_load", on_game_load)
- RegisterScriptCallback("on_level_changing", on_level_changing)
- RegisterScriptCallback("actor_on_interaction", actor_on_interaction)
- create_relations_tables()
-end
-
--- Called when changing levels.
-function on_level_changing()
- if (not IsTestMode()) then
- increment_statistic("level_changes")
- end
-end
-
------------------------
------ Incrementors ----
------------------------
-
--- Increments actor rank value.
--- Impose restrictions at double the minimum and maximum ranks' values.
-function increment_rank(value)
- db.actor:change_character_rank(value or 0)
- if (db.actor:character_rank() < 0) then db.actor:set_character_rank(0) end
- if (db.actor:character_rank() > 1000000000) then db.actor:set_character_rank(1000000000) end
- check_for_rank_change()
-end
-function increment_npc_rank(npc, value)
- if (not npc) then return end
- --npc:change_character_rank(value or 0)
- npc:set_character_rank(npc:character_rank() + (value or 0))
- if (npc:character_rank() < 0) then npc:set_character_rank(0) end
- if (npc:character_rank() > 1000000000) then npc:set_character_rank(1000000000) end
- --printf("/ NPC stats | +Rank = %s | id: %s - name: %s", npc:character_rank(), npc:id(), npc:character_name())
-end
-
--- Increments actor reputation value.
--- Impose restrictions at double the minimum and maximum reputations' values.
-function increment_reputation(value)
- -- Fix for arena causing reputation changes
- if has_alife_info("bar_arena_fight") then
- return
- end
-
- db.actor:change_character_reputation(value or 0)
- if (db.actor:character_reputation() < -4000) then db.actor:set_character_reputation(-4000) end
- if (db.actor:character_reputation() > 4000) then db.actor:set_character_reputation(4000) end
- check_for_reputation_change()
-end
-function increment_npc_reputation(npc,value)
- if (not npc) then return end
- --npc:change_character_reputation(value or 0)
- npc:set_character_reputation(npc:character_reputation() + (value or 0))
- if (npc:character_reputation() < -4000) then npc:set_character_reputation(-4000) end
- if (npc:character_reputation() > 4000) then npc:set_character_reputation(4000) end
- --printf("/ NPC stats | +Rep = %s | id: %s - name: %s", npc:character_reputation(), npc:id(), npc:character_name())
-end
-
--- Increments a statistic counter.
--- Also updates actor rank and reputation values.
-function increment_statistic(value, custom_rank, custom_rept)
- local statistic = value and actor_statistics[value] or nil
- if (statistic and statistic.count and statistic.rank and statistic.rept) then
- statistic.count = statistic.count + 1
- increment_rank(custom_rank or statistic.rank)
- increment_reputation(custom_rept or statistic.rept)
- end
-end
-function increment_npc_statistic(npc, value, custom_rank, custom_rept)
- local statistic = value and npc_statistics[value] or nil
- if (npc and IsStalker(npc) and npc:alive() and statistic and statistic.rank and statistic.rept) then
- if statistic.save then
- local se_npc = alife_object(npc:id())
- if se_npc then
- local m_data = alife_storage_manager.get_se_obj_state(se_npc,true)
- if (m_data) then
- m_data[value] = m_data[value] and m_data[value] + 1 or 1
- end
- end
- end
- increment_npc_rank(npc, custom_rank or statistic.rank)
- increment_npc_reputation(npc, custom_rept or statistic.rept)
- end
-end
-
--------------------------
------ Miscellaneous -----
--------------------------
-
--- Gets the count for unlocked achievements.
-function get_actor_achievements_count()
- local count = 0
- for k, v in pairs(actor_achievements) do
- if (v.unlocked == true) then
- count = count + 1
- end
- end
- return count
-end
-
--- Gets the count for visited levels.
-function get_actor_visited_levels_count()
- local count = 0
- for k, v in pairs(actor_visited_levels) do
- if (v == true) then
- count = count + 1
- end
- end
- return count
-end
-
--- Gets the count for visited smarts.
-function get_actor_visited_smarts_count()
- local count = 0
- for k, v in pairs(actor_visited_smarts) do
- if (v == true) then
- count = count + 1
- end
- end
- return count
-end
-
--- Gets the count value for a statistic.
-function get_statistic_count(value)
- local statistic = value and actor_statistics[value] or nil
- return (statistic and statistic.count) and statistic.count or 0
-end
-
--- Gets whether the actor has an achievement unlocked.
-function has_actor_achievement(value)
- local achievement = value and actor_achievements[value]
- return achievement and achievement.unlocked or false
-end
-
--- Gets whether the actor has visited all levels.
-function has_actor_visitied_all_levels()
- for k, v in pairs (actor_visited_levels) do
- if (v == false) then
- return false
- end
- end
- return true
-end
-
--- Gets whether the actor has visited a specific level.
-function has_actor_visited_level(value)
- return value and actor_visited_levels[value] or false
-end
-
--- Gets whether the actor has visited a specific smart.
-function has_actor_visited_smart(value)
- return value and actor_visited_smarts[value] or false
-end
-
--- Called when a smart terrain is visited.
-function actor_on_interaction(typ, obj, name)
- if (typ ~= "smarts") then
- return
- end
-
- actor_visited_smarts[name] = true
-end
-
------------------------------
------ Rank & Reputation -----
------------------------------
-
--- Creates the rank and reputation tables.
-local rank_table, rept_table
-function create_relations_tables()
- -- Check if the rank and reputation tables are initialised.
- if not (rank_table and rept_table) then
- -- Matches each rank and reputation to a value.
- local function parse_string(value)
- local result = {}
- for name in string.gmatch(value, "([%w_%-.\\]+)[%,%s]*") do
- result[#result + 1] = name
- end
- return result
- end
- -- Retrieve the rank and reputation values from configs.
- local ini = ini_file("creatures\\game_relations.ltx")
- local rank_table_temp = parse_string(ini:r_string_ex("game_relations", "rating"))
- local rept_table_temp = parse_string(ini:r_string_ex("game_relations", "reputation"))
- -- Fill the contents of the rank table.
- rank_table = {}
- for index = 2, #rank_table_temp, 2 do
- rank_table[#rank_table + 1] = tonumber(rank_table_temp[index])
- end
- -- Fill the contents of the reputation table.
- rept_table = {}
- for index = 2, #rept_table_temp, 2 do
- rept_table[#rept_table + 1] = tonumber(rept_table_temp[index])
- end
- end
-end
-
--- Checks for changes the actor's rank.
-function check_for_rank_change(suppress)
- local current_rank = db.actor:character_rank()
- local new_rank, old_rank = 0, 0
- for index = 1, #rank_table do
- if (current_rank <= rank_table[index]) then
- break
- end
- new_rank = new_rank + 1
- end
- for index = 1, #rank_table do
- if (actor_miscellaneous.actual_rank <= rank_table[index]) then
- break
- end
- old_rank = old_rank + 1
- end
- if (not suppress) then
- if (old_rank > new_rank) then
- news_manager.send_tip(db.actor, "st_rank_decreased", nil, "rank_change", nil, nil)
- elseif (new_rank > old_rank) then
- news_manager.send_tip(db.actor, "st_rank_increased", nil, "rank_change", nil, nil)
- end
- end
- actor_miscellaneous.actual_rank = current_rank
-end
-
--- Checks for changes to the actor's reputation.
-function check_for_reputation_change(suppress)
- local current_rept = db.actor:character_reputation()
- local new_rept, old_rept = 0, 0
- for index = 1, #rept_table do
- if (current_rept <= rept_table[index]) then
- break
- end
- new_rept = new_rept + 1
- end
- for index = 1, #rept_table do
- if (actor_miscellaneous.actual_rept <= rept_table[index]) then
- break
- end
- old_rept = old_rept + 1
- end
- if (not suppress) then
- if (old_rept > new_rept) then
- news_manager.send_tip(db.actor, "st_reputation_decreased", nil, "rep_change", nil, nil)
- elseif (new_rept > old_rept) then
- news_manager.send_tip(db.actor, "st_reputation_increased", nil, "rep_change", nil, nil)
- end
- end
- actor_miscellaneous.actual_rept = current_rept
-end
-
-----------------------------
------ Saving & Loading -----
-----------------------------
-
--- Loads the contents of the tables the regular way.
--- Unimplemented as Call of Chernobyl doesn't use this.
-function load(packet)
- if (USE_MARSHAL) then
- return
- end
-end
-
-
--- Loads the contents of the tables using MARSHAL.
-function load_state(data)
- -- If no saved data exists then return.
- if not (data.game_statistics) then
- return
- end
-
- -- See the comments in the save_state method as to how this works.
-
- actor_artefacts = data.game_statistics.actor_artefacts or actor_artefacts
- actor_anomaly_maps = data.game_statistics.actor_anomaly_maps or actor_anomaly_maps
- actor_miscellaneous = data.game_statistics.actor_miscellaneous or actor_miscellaneous
- actor_visited_levels = data.game_statistics.actor_visited_levels or actor_visited_levels
- actor_visited_smarts = data.game_statistics.actor_visited_smarts or actor_visited_smarts
-
- if (data.game_statistics.actor_achievements) then
- for k, v in pairs(data.game_statistics.actor_achievements) do
- if (actor_achievements[k]) then
- actor_achievements[k].unlocked = v
- end
- end
- end
-
- if (data.game_statistics.actor_statistics) then
- for k, v in pairs(data.game_statistics.actor_statistics) do
- if (actor_statistics[k]) then
- actor_statistics[k].count = v
- end
- end
- end
-end
-
--- Saves the contents of the tables the regular way.
--- Unimplemented as Call of Chernobyl doesn't use this.
-function save(packet)
- if (USE_MARSHAL) then
- return
- end
-end
-
--- Saves the contents of the tables using MARSHAL.
-function save_state(data)
- -- Create a table to store saved data.
- if (not data.game_statistics) then
- data.game_statistics = {}
- end
-
- -- Save tables as they are if they only record true/false values.
- data.game_statistics.actor_artefacts = actor_artefacts
- data.game_statistics.actor_anomaly_maps = actor_anomaly_maps
- data.game_statistics.actor_miscellaneous = actor_miscellaneous
- data.game_statistics.actor_visited_levels = actor_visited_levels
- data.game_statistics.actor_visited_smarts = actor_visited_smarts
-
- -- Couple of things to be noted here.
- -- Rank and reputation values are stored in these tables as well, and we really don't want to save those.
- -- If we did, it would mean any changes to their values in this script file would be ignored by existing saves.
- -- However, saving the data this way also prevents any potential nil value crashes if new statistics and such are added.
-
- data.game_statistics.actor_achievements = {}
- for k, v in pairs(actor_achievements) do
- data.game_statistics.actor_achievements[k] = v.unlocked
- end
-
- data.game_statistics.actor_statistics = {}
- for k, v in pairs(actor_statistics) do
- data.game_statistics.actor_statistics[k] = v.count
- end
-end
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/scripts/modxml_renegade_desc_dxml.script b/mods/Redone Collection_backup/gamedata/scripts/modxml_renegade_desc_dxml.script
deleted file mode 100644
index f2c3b990..00000000
--- a/mods/Redone Collection_backup/gamedata/scripts/modxml_renegade_desc_dxml.script
+++ /dev/null
@@ -1,83 +0,0 @@
-function on_xml_read()
- RegisterScriptCallback("on_xml_read", function(xml_file_name, xml_obj)
- local xml_to_change = [[gameplay\character_desc_marsh.xml]]
- if xml_file_name == xml_to_change then
- local renegade_trader_profile = [[
-
- mar_renegade_trader_name
- ui_inGame2_bandit_1
-
- Детальная No information is available.
- >mar_renegade_trader
- renegade
-
-
-
-
- [spawn] \n
- wpn_ak74u \n
- ammo_5.45x39_fmj = 1 \n
- wpn_hpsa \n
- ammo_9x19_fmj = 1 \n
-#include "gameplay\supplies\character_items_nd.xml"
-#include "gameplay\supplies\character_food.xml"
-#include "gameplay\supplies\character_drugs.xml"
-
-#include "gameplay\character_criticals.xml"
- stalker_terrain
- characters_voice\human\bandit_1\
- actors\stalker_renegade\stalker_renegade_1a_face_3
-
- val_smart_terrain_7_4_bandit_trader_stalker_start_dialog
- dm_init_trader
- drx_sl_task_completed_dialog
- dm_ordered_task_completed_dialog
- drx_sl_val_smart_terrain_7_4_bandit_trader_stalker_meet_dialog
- dm_ordered_task_dialog
- buy_route
- debt_register
- debt_pay_off
- actor_break_dialog
-
-
-
- mar_renegade_mechanic_name
- ui_inGame2_band_2_mask
- Детальная No information is available.
- mar_renegade_mechanic
- renegade
-
-
-
-
-
- [spawn] \n
- wpn_ak74u \n
- ammo_5.45x39_fmj = 1 \n
- wpn_hpsa \n
- ammo_9x19_fmj = 1 \n
-#include "gameplay\supplies\character_items_nd.xml"
-#include "gameplay\supplies\character_food.xml"
-#include "gameplay\supplies\character_drugs.xml"
-
-#include "gameplay\character_criticals.xml"
- stalker_terrain
- 1
- characters_voice\human\bandit_1\
- actors\stalker_renegade\stalker_renegade_leader
-
- val_smart_terrain_7_3_bandit_mechanic_stalker_start_dialog
- dm_init_trader
- dm_init_mechanic
- dm_ordered_task_completed_dialog
- dm_broker_dialog
- drx_sl_mechanic_task_dialog
- dm_tech_repair
- dm_encrypted_pda
- actor_break_dialog
-
- ]]
- xml_obj:insertFromXMLString(renegade_trader_profile)
- end
- end)
-end
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/scripts/modxml_renegade_info_awr_dxml.script b/mods/Redone Collection_backup/gamedata/scripts/modxml_renegade_info_awr_dxml.script
deleted file mode 100644
index 9ad80a3a..00000000
--- a/mods/Redone Collection_backup/gamedata/scripts/modxml_renegade_info_awr_dxml.script
+++ /dev/null
@@ -1,13 +0,0 @@
-function on_xml_read()
- RegisterScriptCallback("on_xml_read", function(xml_file_name, xml_obj)
- local xml_to_change = [[gameplay\info_awr.xml]]
- if xml_file_name == xml_to_change then
- local renegade_info_awr_profile = [[
-
-
-
- ]]
- xml_obj:insertFromXMLString(renegade_info_awr_profile)
- end
- end)
-end
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/scripts/modxml_renegade_info_mlr_dxml.script b/mods/Redone Collection_backup/gamedata/scripts/modxml_renegade_info_mlr_dxml.script
deleted file mode 100644
index d069a09c..00000000
--- a/mods/Redone Collection_backup/gamedata/scripts/modxml_renegade_info_mlr_dxml.script
+++ /dev/null
@@ -1,12 +0,0 @@
-function on_xml_read()
- RegisterScriptCallback("on_xml_read", function(xml_file_name, xml_obj)
- local xml_to_change = [[gameplay\info_mlr.xml]]
- if xml_file_name == xml_to_change then
- local renegade_info_mlr_profile = [[
-
-
- ]]
- xml_obj:insertFromXMLString(renegade_info_mlr_profile)
- end
- end)
-end
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/scripts/modxml_renegade_profile_mlr_dxml.script b/mods/Redone Collection_backup/gamedata/scripts/modxml_renegade_profile_mlr_dxml.script
deleted file mode 100644
index 5eaaccc1..00000000
--- a/mods/Redone Collection_backup/gamedata/scripts/modxml_renegade_profile_mlr_dxml.script
+++ /dev/null
@@ -1,19 +0,0 @@
-function on_xml_read()
- RegisterScriptCallback("on_xml_read", function(xml_file_name, xml_obj)
- local xml_to_change = [[gameplay\npc_profile_mlr.xml]]
- if xml_file_name == xml_to_change then
- local renegade_profile = [[
-
- mar_renegade_trader
- mar_renegade_trader
-
-
-
- mar_renegade_mechanic
- mar_renegade_mechanic
-
- ]]
- xml_obj:insertFromXMLString(renegade_profile)
- end
- end)
-end
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/scripts/redone_endless_agr_night_mutants.script b/mods/Redone Collection_backup/gamedata/scripts/redone_endless_agr_night_mutants.script
deleted file mode 100644
index 237555f4..00000000
--- a/mods/Redone Collection_backup/gamedata/scripts/redone_endless_agr_night_mutants.script
+++ /dev/null
@@ -1,30 +0,0 @@
-function actor_on_first_update()
- local pool = {
- ["agr_endless_night_spawn_01"] = {
- pos = vector():set(28.622802734375, 4.2881875038147, -124.99558258057),
- smart = "agr_smart_terrain_4_6",
- },
- ["agr_endless_night_spawn_02"] = {
- pos = vector():set(52.704040527344, 16.574716567993, 123.60317993164),
- smart = "agr_smart_terrain_5_2",
- },
- ["agr_endless_night_spawn_03"] = {
- pos = vector():set(-97.329170227051, 12.251251220703, 158.92121887207),
- smart = "agr_smart_terrain_2_2",
- }
- }
-
- for sec,v in pairs(pool) do
- local se = get_story_se_item(sec)
- if not (se) then
- local pos = v.pos
- local vid = level.vertex_id(pos)
- local gid = SIMBOARD.smarts_by_names[v.smart].m_game_vertex_id
- se = alife():create(sec,pos,vid,gid)
- end
- end
-end
-
-function on_game_start()
- RegisterScriptCallback("actor_on_first_update",actor_on_first_update)
-end
diff --git a/mods/Redone Collection_backup/gamedata/scripts/redone_endless_bar_night_mutants.script b/mods/Redone Collection_backup/gamedata/scripts/redone_endless_bar_night_mutants.script
deleted file mode 100644
index d105a552..00000000
--- a/mods/Redone Collection_backup/gamedata/scripts/redone_endless_bar_night_mutants.script
+++ /dev/null
@@ -1,30 +0,0 @@
-function actor_on_first_update()
- local pool = {
- ["bar_endless_night_spawn_01"] = {
- pos = vector():set(197.84326171875, 2.120393037796, -84.757629394531),
- smart = "bar_zastava_dogs_lair",
- },
- ["bar_endless_night_spawn_02"] = {
- pos = vector():set(42.580982208252, -0.0022871494293213, 207.98942565918),
- smart = "bar_zastava_dogs_lair_2",
- },
- ["bar_endless_night_spawn_03"] = {
- pos = vector():set(147.11489868164, -0.003469854593277, 64.117401123047),
- smart = "bar_visitors",
- }
- }
-
- for sec,v in pairs(pool) do
- local se = get_story_se_item(sec)
- if not (se) then
- local pos = v.pos
- local vid = level.vertex_id(pos)
- local gid = SIMBOARD.smarts_by_names[v.smart].m_game_vertex_id
- se = alife():create(sec,pos,vid,gid)
- end
- end
-end
-
-function on_game_start()
- RegisterScriptCallback("actor_on_first_update",actor_on_first_update)
-end
diff --git a/mods/Redone Collection_backup/gamedata/scripts/redone_endless_cit_night_mutants.script b/mods/Redone Collection_backup/gamedata/scripts/redone_endless_cit_night_mutants.script
deleted file mode 100644
index c1f7ee35..00000000
--- a/mods/Redone Collection_backup/gamedata/scripts/redone_endless_cit_night_mutants.script
+++ /dev/null
@@ -1,30 +0,0 @@
-function actor_on_first_update()
- local pool = {
- ["cit_endless_night_spawn_01"] = {
- pos = vector():set(-134.28648376465, -1.4032030105591, -330.41253662109),
- smart = "zombie_smart_ds_mlr_1",
- },
- ["cit_endless_night_spawn_02"] = {
- pos = vector():set(51.318702697754, 3.5220413208008, 68.45654296875),
- smart = "zombie_smart_ds_mlr_2",
- },
- ["cit_endless_night_spawn_03"] = {
- pos = vector():set(-221.71157836914, 9.9104175567627, -180.50151062012),
- smart = "cit_kanaliz1",
- }
- }
-
- for sec,v in pairs(pool) do
- local se = get_story_se_item(sec)
- if not (se) then
- local pos = v.pos
- local vid = level.vertex_id(pos)
- local gid = SIMBOARD.smarts_by_names[v.smart].m_game_vertex_id
- se = alife():create(sec,pos,vid,gid)
- end
- end
-end
-
-function on_game_start()
- RegisterScriptCallback("actor_on_first_update",actor_on_first_update)
-end
diff --git a/mods/Redone Collection_backup/gamedata/scripts/redone_endless_ds_night_mutants.script b/mods/Redone Collection_backup/gamedata/scripts/redone_endless_ds_night_mutants.script
deleted file mode 100644
index 324b2701..00000000
--- a/mods/Redone Collection_backup/gamedata/scripts/redone_endless_ds_night_mutants.script
+++ /dev/null
@@ -1,30 +0,0 @@
-function actor_on_first_update()
- local pool = {
- ["ds_endless_night_spawn_01"] = {
- pos = vector():set(-13.702819824219, -0.45751050114632, -327.75891113281),
- smart = "ds2_st_dogs",
- },
- ["ds_endless_night_spawn_02"] = {
- pos = vector():set(248.58453369141, -0.55253577232361, -86.308952331543),
- smart = "ds_boars_nest",
- },
- ["ds_endless_night_spawn_03"] = {
- pos = vector():set(207.64343261719, -2.2147569656372, 552.82995605469),
- smart = "ds_kem3",
- }
- }
-
- for sec,v in pairs(pool) do
- local se = get_story_se_item(sec)
- if not (se) then
- local pos = v.pos
- local vid = level.vertex_id(pos)
- local gid = SIMBOARD.smarts_by_names[v.smart].m_game_vertex_id
- se = alife():create(sec,pos,vid,gid)
- end
- end
-end
-
-function on_game_start()
- RegisterScriptCallback("actor_on_first_update",actor_on_first_update)
-end
diff --git a/mods/Redone Collection_backup/gamedata/scripts/redone_endless_esc_night_mutants.script b/mods/Redone Collection_backup/gamedata/scripts/redone_endless_esc_night_mutants.script
deleted file mode 100644
index 3f910a3a..00000000
--- a/mods/Redone Collection_backup/gamedata/scripts/redone_endless_esc_night_mutants.script
+++ /dev/null
@@ -1,30 +0,0 @@
-function actor_on_first_update()
- local pool = {
- ["esc_endless_night_spawn_01"] = {
- pos = vector():set(-86.41145324707, -4.1926307678223, -78.133041381836),
- smart = "esc_smart_terrain_4_11",
- },
- ["esc_endless_night_spawn_02"] = {
- pos = vector():set(312.53915405273, 3.3987352848053, 126.92022705078),
- smart = "esc_smart_terrain_8_9",
- },
- ["esc_endless_night_spawn_03"] = {
- pos = vector():set(129.46849060059, -0.71068423986435, 322.65246582031),
- smart = "esc_smart_terrain_6_6",
- }
- }
-
- for sec,v in pairs(pool) do
- local se = get_story_se_item(sec)
- if not (se) then
- local pos = v.pos
- local vid = level.vertex_id(pos)
- local gid = SIMBOARD.smarts_by_names[v.smart].m_game_vertex_id
- se = alife():create(sec,pos,vid,gid)
- end
- end
-end
-
-function on_game_start()
- RegisterScriptCallback("actor_on_first_update",actor_on_first_update)
-end
diff --git a/mods/Redone Collection_backup/gamedata/scripts/redone_endless_gar_night_mutants.script b/mods/Redone Collection_backup/gamedata/scripts/redone_endless_gar_night_mutants.script
deleted file mode 100644
index e388845a..00000000
--- a/mods/Redone Collection_backup/gamedata/scripts/redone_endless_gar_night_mutants.script
+++ /dev/null
@@ -1,30 +0,0 @@
-function actor_on_first_update()
- local pool = {
- ["gar_endless_night_spawn_01"] = {
- pos = vector():set(-210.73924255371, 0.29106289148331, -34.128147125244),
- smart = "gar_smart_terrain_1_5",
- },
- ["gar_endless_night_spawn_02"] = {
- pos = vector():set(197.09075927734, 1.3092757463455, -109.58041381836),
- smart = "gar_smart_terrain_6_6",
- },
- ["gar_endless_night_spawn_03"] = {
- pos = vector():set(270.46417236328, 0.50552141666412, 177.38319396973),
- smart = "gar_smart_terrain_8_3",
- }
- }
-
- for sec,v in pairs(pool) do
- local se = get_story_se_item(sec)
- if not (se) then
- local pos = v.pos
- local vid = level.vertex_id(pos)
- local gid = SIMBOARD.smarts_by_names[v.smart].m_game_vertex_id
- se = alife():create(sec,pos,vid,gid)
- end
- end
-end
-
-function on_game_start()
- RegisterScriptCallback("actor_on_first_update",actor_on_first_update)
-end
diff --git a/mods/Redone Collection_backup/gamedata/scripts/redone_endless_mar_night_mutants.script b/mods/Redone Collection_backup/gamedata/scripts/redone_endless_mar_night_mutants.script
deleted file mode 100644
index 9aba42f7..00000000
--- a/mods/Redone Collection_backup/gamedata/scripts/redone_endless_mar_night_mutants.script
+++ /dev/null
@@ -1,30 +0,0 @@
-function actor_on_first_update()
- local pool = {
- ["mar_endless_night_spawn_01"] = {
- pos = vector():set(-152.15197753906, 0.80081522464752, 86.731491088867),
- smart = "mar_smart_terrain_3_7",
- },
- ["mar_endless_night_spawn_02"] = {
- pos = vector():set(272.58688354492, 4.4342155456543, 55.053783416748),
- smart = "mar_smart_terrain_8_8",
- },
- ["mar_endless_night_spawn_03"] = {
- pos = vector():set(364.51748657227, 2.1262073516846, 115.86725616455),
- smart = "mar_smart_terrain_10_7",
- }
- }
-
- for sec,v in pairs(pool) do
- local se = get_story_se_item(sec)
- if not (se) then
- local pos = v.pos
- local vid = level.vertex_id(pos)
- local gid = SIMBOARD.smarts_by_names[v.smart].m_game_vertex_id
- se = alife():create(sec,pos,vid,gid)
- end
- end
-end
-
-function on_game_start()
- RegisterScriptCallback("actor_on_first_update",actor_on_first_update)
-end
diff --git a/mods/Redone Collection_backup/gamedata/scripts/redone_endless_mil_night_mutants.script b/mods/Redone Collection_backup/gamedata/scripts/redone_endless_mil_night_mutants.script
deleted file mode 100644
index b00db200..00000000
--- a/mods/Redone Collection_backup/gamedata/scripts/redone_endless_mil_night_mutants.script
+++ /dev/null
@@ -1,30 +0,0 @@
-function actor_on_first_update()
- local pool = {
- ["mil_endless_night_spawn_01"] = {
- pos = vector():set(238.30529785156, 1.3474156856537, 437.15505981445),
- smart = "mil_smart_terrain_2_1",
- },
- ["mil_endless_night_spawn_02"] = {
- pos = vector():set(38.137920379639, -13.218147277832, 333.01922607422),
- smart = "mil_smart_terrain_2_6",
- },
- ["mil_endless_night_spawn_03"] = {
- pos = vector():set(-364.98373413086, -15.18780040741, 203.99565124512),
- smart = "mil_smart_terrain_4_2",
- }
- }
-
- for sec,v in pairs(pool) do
- local se = get_story_se_item(sec)
- if not (se) then
- local pos = v.pos
- local vid = level.vertex_id(pos)
- local gid = SIMBOARD.smarts_by_names[v.smart].m_game_vertex_id
- se = alife():create(sec,pos,vid,gid)
- end
- end
-end
-
-function on_game_start()
- RegisterScriptCallback("actor_on_first_update",actor_on_first_update)
-end
diff --git a/mods/Redone Collection_backup/gamedata/scripts/redone_endless_ros_night_mutants.script b/mods/Redone Collection_backup/gamedata/scripts/redone_endless_ros_night_mutants.script
deleted file mode 100644
index a5f9bf4f..00000000
--- a/mods/Redone Collection_backup/gamedata/scripts/redone_endless_ros_night_mutants.script
+++ /dev/null
@@ -1,30 +0,0 @@
-function actor_on_first_update()
- local pool = {
- ["ros_endless_night_spawn_01"] = {
- pos = vector():set(-221.39151000977, 0.098205626010895, 115.52049255371),
- smart = "ros_smart_poltergeist2",
- },
- ["ros_endless_night_spawn_02"] = {
- pos = vector():set(-288.29718017578, -0.0036440342664719, 195.13694763184),
- smart = "ros_smart_monster4",
- },
- ["ros_endless_night_spawn_03"] = {
- pos = vector():set(-285.64953613281, 0.54708015918732, 115.35409545898),
- smart = "ros_smart_monster5",
- }
- }
-
- for sec,v in pairs(pool) do
- local se = get_story_se_item(sec)
- if not (se) then
- local pos = v.pos
- local vid = level.vertex_id(pos)
- local gid = SIMBOARD.smarts_by_names[v.smart].m_game_vertex_id
- se = alife():create(sec,pos,vid,gid)
- end
- end
-end
-
-function on_game_start()
- RegisterScriptCallback("actor_on_first_update",actor_on_first_update)
-end
diff --git a/mods/Redone Collection_backup/gamedata/scripts/redone_endless_trc_night_mutants.script b/mods/Redone Collection_backup/gamedata/scripts/redone_endless_trc_night_mutants.script
deleted file mode 100644
index a4f574f0..00000000
--- a/mods/Redone Collection_backup/gamedata/scripts/redone_endless_trc_night_mutants.script
+++ /dev/null
@@ -1,30 +0,0 @@
-function actor_on_first_update()
- local pool = {
- ["trc_endless_night_spawn_01"] = {
- pos = vector():set(138.85020446777, 3.9266076087952, -124.36943054199),
- smart = "trc_sim_5",
- },
- ["trc_endless_night_spawn_02"] = {
- pos = vector():set(198.9889831543, 10.085237503052, 163.07121276855),
- smart = "trc_sim_11",
- },
- ["trc_endless_night_spawn_03"] = {
- pos = vector():set(-52.121494293213, 13.674411773682, 285.16284179688),
- smart = "trc_sim_17",
- }
- }
-
- for sec,v in pairs(pool) do
- local se = get_story_se_item(sec)
- if not (se) then
- local pos = v.pos
- local vid = level.vertex_id(pos)
- local gid = SIMBOARD.smarts_by_names[v.smart].m_game_vertex_id
- se = alife():create(sec,pos,vid,gid)
- end
- end
-end
-
-function on_game_start()
- RegisterScriptCallback("actor_on_first_update",actor_on_first_update)
-end
diff --git a/mods/Redone Collection_backup/gamedata/scripts/redone_endless_val_night_mutants.script b/mods/Redone Collection_backup/gamedata/scripts/redone_endless_val_night_mutants.script
deleted file mode 100644
index 67fbdde9..00000000
--- a/mods/Redone Collection_backup/gamedata/scripts/redone_endless_val_night_mutants.script
+++ /dev/null
@@ -1,30 +0,0 @@
-function actor_on_first_update()
- local pool = {
- ["val_endless_night_spawn_01"] = {
- pos = vector():set(-58.37699508667, -0.39553779363632, -374.03778076172),
- smart = "val_smart_terrain_3_0",
- },
- ["val_endless_night_spawn_02"] = {
- pos = vector():set(-134.28462219238, -1.4056015014648, -330.41253662109),
- smart = "val_smart_terrain_5_8",
- },
- ["val_endless_night_spawn_03"] = {
- pos = vector():set(-47.002891540527, -3.0274252891541, -145.11131286621),
- smart = "val_smart_terrain_6_5",
- }
- }
-
- for sec,v in pairs(pool) do
- local se = get_story_se_item(sec)
- if not (se) then
- local pos = v.pos
- local vid = level.vertex_id(pos)
- local gid = SIMBOARD.smarts_by_names[v.smart].m_game_vertex_id
- se = alife():create(sec,pos,vid,gid)
- end
- end
-end
-
-function on_game_start()
- RegisterScriptCallback("actor_on_first_update",actor_on_first_update)
-end
diff --git a/mods/Redone Collection_backup/gamedata/scripts/redone_endless_yan_night_mutants.script b/mods/Redone Collection_backup/gamedata/scripts/redone_endless_yan_night_mutants.script
deleted file mode 100644
index bf760297..00000000
--- a/mods/Redone Collection_backup/gamedata/scripts/redone_endless_yan_night_mutants.script
+++ /dev/null
@@ -1,30 +0,0 @@
-function actor_on_first_update()
- local pool = {
- ["yan_endless_night_spawn_01"] = {
- pos = vector():set(161.0279083252, -0.71909606456757, 65.10375213623),
- smart = "yan_smart_terrain_1_6",
- },
- ["yan_endless_night_spawn_02"] = {
- pos = vector():set(-209.48184204102, 6.8956809043884, -161.16413879395),
- smart = "yan_smart_terrain_4_2",
- },
- ["yan_endless_night_spawn_03"] = {
- pos = vector():set(-161.47422790527, 6.5996909141541, -308.79528808594),
- smart = "yan_smart_terrain_6_2",
- }
- }
-
- for sec,v in pairs(pool) do
- local se = get_story_se_item(sec)
- if not (se) then
- local pos = v.pos
- local vid = level.vertex_id(pos)
- local gid = SIMBOARD.smarts_by_names[v.smart].m_game_vertex_id
- se = alife():create(sec,pos,vid,gid)
- end
- end
-end
-
-function on_game_start()
- RegisterScriptCallback("actor_on_first_update",actor_on_first_update)
-end
diff --git a/mods/Redone Collection_backup/gamedata/scripts/redone_lc_ros_transition_local.script b/mods/Redone Collection_backup/gamedata/scripts/redone_lc_ros_transition_local.script
deleted file mode 100644
index ee460dbd..00000000
--- a/mods/Redone Collection_backup/gamedata/scripts/redone_lc_ros_transition_local.script
+++ /dev/null
@@ -1,309 +0,0 @@
-function actor_on_first_update()
- local lc_pool = {
- ["lc_ros01_ros02"] = {
- pos = vector():set(-136.3947,-0.0025,122.3627),
- smart = "ros_smart_killers1",
- spot = "level_changer_spot_mini",
- hint = "space_restrictor_to_rostok_desc",
- },
- ["lc_ros01_ros02.1"] = {
- pos = vector():set(-135.5676,-0.000,122.1426),
- smart = "ros_smart_killers1",
- spot = "level_changer_spot_mini",
- hint = "space_restrictor_to_rostok_desc",
- },
- ["lc_ros01_ros02.2"] = {
- pos = vector():set(-137.3257,-0.0067,121.5680),
- smart = "ros_smart_killers1",
- spot = "level_changer_spot_mini",
- hint = "space_restrictor_to_rostok_desc",
- },
- ["lc_ros01_ros02.3"] = {
- pos = vector():set(-136.9949,-0.0018,122.1856),
- smart = "ros_smart_killers1",
- spot = "level_changer_spot_mini",
- hint = "space_restrictor_to_rostok_desc",
- },
- ["lc_ros02_ros01"] = {
- pos = vector():set(-136.9901,0.0062,124.2836),
- smart = "ros_smart_killers1",
- spot = "level_changer_spot_mini",
- hint = "space_restrictor_to_rostok_desc",
- },
- ["lc_ros02_ros01.1"] = {
- pos = vector():set(-136.9537,0.0044,125.0893),
- smart = "ros_smart_killers1",
- spot = "level_changer_spot_mini",
- hint = "space_restrictor_to_rostok_desc",
- },
- ["lc_ros02_ros01.2"] = {
- pos = vector():set(-138.3931,0.0078,124.3509),
- smart = "ros_smart_killers1",
- spot = "level_changer_spot_mini",
- hint = "space_restrictor_to_rostok_desc",
- },
- ["lc_ros02_ros01.3"] = {
- pos = vector():set(-138.4250,0.0095,124.6852),
- smart = "ros_smart_killers1",
- spot = "level_changer_spot_mini",
- hint = "space_restrictor_to_rostok_desc",
- },
- ["lc_ros02_ros01.4"] = {
- pos = vector():set(-138.6385,0.0060,124.1129),
- smart = "ros_smart_killers1",
- spot = "level_changer_spot_mini",
- hint = "space_restrictor_to_rostok_desc",
- },
- ["lc_ros02_ros01.5"] = {
- pos = vector():set(-137.5683,0.0036,123.8512),
- smart = "ros_smart_killers1",
- spot = "level_changer_spot_mini",
- hint = "space_restrictor_to_rostok_desc",
- },
- ["lc_ros03_ros04"] = {
- pos = vector():set(-196.8538,3.0381,68.4065),
- smart = "ros_smart_snork1",
- spot = "level_changer_spot_mini",
- hint = "space_restrictor_to_rostok_desc",
- },
- ["lc_ros05_ros06"] = {
- pos = vector():set(-211.6216,-0.0015,9.8376),
- smart = "ros_smart_stalker_killers1",
- spot = "level_changer_spot_mini",
- hint = "space_restrictor_to_rostok_desc",
- },
- ["lc_ros05_ros06.1"] = {
- pos = vector():set(-210.3275,-0.0004,9.9314),
- smart = "ros_smart_stalker_killers1",
- spot = "level_changer_spot_mini",
- hint = "space_restrictor_to_rostok_desc",
- },
- ["lc_ros05_ros06.2"] = {
- pos = vector():set(-211.0420,-0.0011,10.7245),
- smart = "ros_smart_stalker_killers1",
- spot = "level_changer_spot_mini",
- hint = "space_restrictor_to_rostok_desc",
- },
- ["lc_ros06_ros05"] = {
- pos = vector():set(-212.0351,8.8153,9.2077),
- smart = "ros_smart_stalker_killers1",
- spot = "level_changer_spot_mini",
- hint = "space_restrictor_to_rostok_desc",
- },
- ["lc_ros06_ros05.1"] = {
- pos = vector():set(-212.5222,8.6005,8.4991),
- smart = "ros_smart_stalker_killers1",
- spot = "level_changer_spot_mini",
- hint = "space_restrictor_to_rostok_desc",
- },
- ["lc_ros06_ros05.2"] = {
- pos = vector():set(-212.6854,8.8162,9.5271),
- smart = "ros_smart_stalker_killers1",
- spot = "level_changer_spot_mini",
- hint = "space_restrictor_to_rostok_desc",
- },
- ["lc_ros07_ros08"] = {
- pos = vector():set(-172.6166,-0.0011,60.7795),
- smart = "ros_smart_snork1",
- spot = "level_changer_spot_mini",
- hint = "space_restrictor_to_rostok_desc",
- },
- ["lc_ros07_ros08.1"] = {
- pos = vector():set(-171.1199,-0.0027,61.0932),
- smart = "ros_smart_snork1",
- spot = "level_changer_spot_mini",
- hint = "space_restrictor_to_rostok_desc",
- },
- ["lc_ros07_ros08.2"] = {
- pos = vector():set(-172.9888,-0.0005,62.2433),
- smart = "ros_smart_snork1",
- spot = "level_changer_spot_mini",
- hint = "space_restrictor_to_rostok_desc",
- },
- ["lc_ros07_ros08.3"] = {
- pos = vector():set(-171.8293,-3.9115,62.2001),
- smart = "ros_smart_snork1",
- spot = "level_changer_spot_mini",
- hint = "space_restrictor_to_rostok_desc",
- },
- ["lc_ros08_ros07"] = {
- pos = vector():set(-188.0054,17.6997,75.3117),
- smart = "ros_smart_snork1",
- spot = "level_changer_spot_mini",
- hint = "space_restrictor_to_rostok_desc",
- },
- ["lc_ros08_ros07.1"] = {
- pos = vector():set(-188.5492,17.6990,75.2511),
- smart = "ros_smart_snork1",
- spot = "level_changer_spot_mini",
- hint = "space_restrictor_to_rostok_desc",
- },
- ["lc_ros08_ros07.2"] = {
- pos = vector():set(-186.6996,17.6995,74.1847),
- smart = "ros_smart_snork1",
- spot = "level_changer_spot_mini",
- hint = "space_restrictor_to_rostok_desc",
- }
- }
-
- for sec,v in pairs(lc_pool) do
- local se = get_story_se_item(sec)
- if not (se) then
- local pos = v.pos
- local vid = level.vertex_id(pos)
- local gid = SIMBOARD.smarts_by_names[v.smart].m_game_vertex_id
- se = alife():create(sec,pos,vid,gid)
- end
-
- if (se.position:distance_to_sqr(v.pos) > 0.1) then
- local pos = v.pos
- local vid = level.vertex_id(pos)
- local gid = SIMBOARD.smarts_by_names[v.smart].m_game_vertex_id
- TeleportObject(se.id,pos,vid,gid)
- end
-
- if (level.map_has_object_spot(se.id,v.spot) == 0) then
- level.map_add_object_spot_ser(se.id,v.spot,game.translate_string(v.hint))
- end
- end
-end
-
-function check_name(actor,obj,p)
- return p and p[1] and obj and string.find(obj:name(),p[1]) and true
-end
-
-function teleport_actor(actor,obj)
- local p = {
- ["lc_ros01_ros02"] = {
- pos = vector():set(-136.99494934082, -0.0014290809631348, 122.18569946289),
- w_p = vector():set(-137.00665283203, 0.0017983913421631, 124.59739685059),
- smart = "ros_smart_killers1",
- },
- ["lc_ros01_ros02.1"] = {
- pos = vector():set(-136.99494934082, -0.0014290809631348, 122.18569946289),
- w_p = vector():set(-137.00665283203, 0.0017983913421631, 124.59739685059),
- smart = "ros_smart_killers1",
- },
- ["lc_ros01_ros02.2"] = {
- pos = vector():set(-136.99494934082, -0.0014290809631348, 122.18569946289),
- w_p = vector():set(-137.00665283203, 0.0017983913421631, 124.59739685059),
- smart = "ros_smart_killers1",
- },
- ["lc_ros01_ros02.3"] = {
- pos = vector():set(-136.99494934082, -0.0014290809631348, 122.18569946289),
- w_p = vector():set(-137.00665283203, 0.0017983913421631, 124.59739685059),
- smart = "ros_smart_killers1",
- },
- ["lc_ros02_ros01"] = {
- pos = vector():set(-137.00665283203, 0.0017983913421631, 124.59739685059),
- w_p = vector():set(-136.99494934082, -0.0014290809631348, 122.18569946289),
- smart = "ros_smart_killers1",
- },
- ["lc_ros02_ros01.1"] = {
- pos = vector():set(-137.00665283203, 0.0017983913421631, 124.59739685059),
- w_p = vector():set(-136.99494934082, -0.0014290809631348, 122.18569946289),
- smart = "ros_smart_killers1",
- },
- ["lc_ros02_ros01.2"] = {
- pos = vector():set(-137.00665283203, 0.0017983913421631, 124.59739685059),
- w_p = vector():set(-136.99494934082, -0.0014290809631348, 122.18569946289),
- smart = "ros_smart_killers1",
- },
- ["lc_ros02_ros01.3"] = {
- pos = vector():set(-137.00665283203, 0.0017983913421631, 124.59739685059),
- w_p = vector():set(-136.99494934082, -0.0014290809631348, 122.18569946289),
- smart = "ros_smart_killers1",
- },
- ["lc_ros02_ros01.4"] = {
- pos = vector():set(-137.00665283203, 0.0017983913421631, 124.59739685059),
- w_p = vector():set(-136.99494934082, -0.0014290809631348, 122.18569946289),
- smart = "ros_smart_killers1",
- },
- ["lc_ros02_ros01.5"] = {
- pos = vector():set(-137.00665283203, 0.0017983913421631, 124.59739685059),
- w_p = vector():set(-136.99494934082, -0.0014290809631348, 122.18569946289),
- smart = "ros_smart_killers1",
- },
- ["lc_ros03_ros04"] = {
- pos = vector():set(-196.85385131836, 3.0381197929382, 68.406555175781),
- w_p = vector():set(-196.1629486084, 0.062152981758118, 69.714248657227),
- smart = "ros_smart_snork1",
- },
- ["lc_ros05_ros06"] = {
- pos = vector():set(-211.20606994629, -0.0010014176368713, 10.295828819275),
- w_p = vector():set(-212.22702026367, 8.8150157928467, 8.7844772338867),
- smart = "ros_smart_stalker_killers1",
- },
- ["lc_ros05_ros06.1"] = {
- pos = vector():set(-211.20606994629, -0.0010014176368713, 10.295828819275),
- w_p = vector():set(-212.22702026367, 8.8150157928467, 8.7844772338867),
- smart = "ros_smart_stalker_killers1",
- },
- ["lc_ros05_ros06.2"] = {
- pos = vector():set(-211.20606994629, -0.0010014176368713, 10.295828819275),
- w_p = vector():set(-212.22702026367, 8.8150157928467, 8.7844772338867),
- smart = "ros_smart_stalker_killers1",
- },
- ["lc_ros06_ros05"] = {
- pos = vector():set(-212.22702026367, 8.8150157928467, 8.7844772338867),
- w_p = vector():set(-211.20606994629, -0.0010014176368713, 10.295828819275),
- smart = "ros_smart_stalker_killers1",
- },
- ["lc_ros06_ros05.1"] = {
- pos = vector():set(-212.22702026367, 8.8150157928467, 8.7844772338867),
- w_p = vector():set(-211.20606994629, -0.0010014176368713, 10.295828819275),
- smart = "ros_smart_stalker_killers1",
- },
- ["lc_ros06_ros05.2"] = {
- pos = vector():set(-212.22702026367, 8.8150157928467, 8.7844772338867),
- w_p = vector():set(-211.20606994629, -0.0010014176368713, 10.295828819275),
- smart = "ros_smart_stalker_killers1",
- },
- ["lc_ros07_ros08"] = {
- pos = vector():set(-172.27548217773, -0.00015679001808167, 61.4404296875),
- w_p = vector():set(-188.33070373535, 17.697116851807, 74.735275268555),
- smart = "ros_smart_snork1",
- },
- ["lc_ros07_ros08.1"] = {
- pos = vector():set(-172.27548217773, -0.00015679001808167, 61.4404296875),
- w_p = vector():set(-188.33070373535, 17.697116851807, 74.735275268555),
- smart = "ros_smart_snork1",
- },
- ["lc_ros07_ros08.2"] = {
- pos = vector():set(-172.27548217773, -0.00015679001808167, 61.4404296875),
- w_p = vector():set(-188.33070373535, 17.697116851807, 74.735275268555),
- smart = "ros_smart_snork1",
- },
- ["lc_ros07_ros08.3"] = {
- pos = vector():set(-172.27548217773, -0.00015679001808167, 61.4404296875),
- w_p = vector():set(-188.33070373535, 17.697116851807, 74.735275268555),
- smart = "ros_smart_snork1",
- },
- ["lc_ros08_ros07"] = {
- pos = vector():set(-188.33070373535, 17.697116851807, 74.735275268555),
- w_p = vector():set(-172.27548217773, -0.00015679001808167, 61.4404296875),
- smart = "ros_smart_snork1",
- },
- ["lc_ros08_ros07.1"] = {
- pos = vector():set(-188.33070373535, 17.697116851807, 74.735275268555),
- w_p = vector():set(-172.27548217773, -0.00015679001808167, 61.4404296875),
- smart = "ros_smart_snork1",
- },
- ["lc_ros08_ros07.2"] = {
- pos = vector():set(-188.33070373535, 17.697116851807, 74.735275268555),
- w_p = vector():set(-172.27548217773, -0.00015679001808167, 61.4404296875),
- smart = "ros_smart_snork1",
- },
- }
-
- local sec = obj and obj:section()
- local v = sec and p[sec]
-
- if (v and v.w_p and v.pos and v.smart) then
- db.actor:set_actor_position(v.w_p)
- end
-end
-
-function on_game_start()
- RegisterScriptCallback("actor_on_first_update",actor_on_first_update)
-end
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/scripts/redone_remove_labx16_object.script b/mods/Redone Collection_backup/gamedata/scripts/redone_remove_labx16_object.script
deleted file mode 100644
index eceeba27..00000000
--- a/mods/Redone Collection_backup/gamedata/scripts/redone_remove_labx16_object.script
+++ /dev/null
@@ -1,41 +0,0 @@
-local HI = has_alife_info
-local GI = give_info
-function NI(str)
- return not (has_alife_info(str))
-end
-
-local storage_data = {}
-
-function clean_mess(actor,smart,p)
- if (HI("remove_objects")) then
- return
- end
- local zone = db.zone_by_name["yan_attack_zombies_space_restrictor"]
- if (smart and zone) then
- local section_list = {
- ["physic_destroyable_object"] = true,
- ["explosive_fuelcan"] = true,
- }
- for id = 1,65534 do
- local se = alife():object(id)
- if (se and section_list[se:section_name()] and simulation_objects.is_on_the_same_level(se,smart) and zone:inside(se.position)) then
- safe_release_manager.release(se)
- printf("Release [%s]",se:name())
- end
- end
- GI("remove_objects")
- end
-end
-
-function save_state(m_data)
- m_data.gameplay_labx16_redone_storage_data = storage_data
-end
-
-function load_state(m_data)
- storage_data = m_data.gameplay_labx16_redone_storage_data or {}
-end
-
-function on_game_start()
- RegisterScriptCallback("save_state",save_state)
- RegisterScriptCallback("load_state",load_state)
-end
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/scripts/redone_xr_dynamic_object.script b/mods/Redone Collection_backup/gamedata/scripts/redone_xr_dynamic_object.script
deleted file mode 100644
index 5eaa5175..00000000
--- a/mods/Redone Collection_backup/gamedata/scripts/redone_xr_dynamic_object.script
+++ /dev/null
@@ -1,119 +0,0 @@
-
-local dynamic_object_storage = {}
-
-function dynamic_object(actor,obj,p)
- local ini = p and p[1] and ini_file(p[1])
- local smart_name = ini and ini:r_string_ex("dynamic_object_configs","smart")
- local smart = smart_name and SIMBOARD.smarts_by_names[smart_name]
-
- if not (smart) then
- return
- end
-
- if not (dynamic_object_storage[smart_name]) then
- dynamic_object_storage[smart_name] = {}
- end
-
- local lst = dynamic_object_storage[smart_name]
-
- local n = ini:line_count("exclusive")
- for k=0,n-1 do
- local r,i,v = ini:r_line("exclusive",k)
- local s = get_object_config(v)
- if (i and s) then
- local idx = lst[i]
- local sec = s.sec
- local pos = s.pos
- local ang = s.ang
- local con = s.con and ini:r_string_to_condlist("dynamic_object_configs",s.con,"true")
- if (xr_logic.pick_section_from_condlist(db.actor,obj,con) == "true") then
- local se = idx and tonumber(idx.id) and alife():object(tonumber(idx.id))
- if (se and string.find(se:name(),sec)) then
- -- Correct. Update object.
- se.position = vector():set(pos)
- se.angle = vector():set(ang)
- else
- -- Wrong object or doesn't exit. Try to delete the old object and create a new one.
- if (se and idx.sec and string.find(se:name(),idx.sec)) then
- alife_release(se)
- end
- local new_se = alife():create(sec,pos,smart.m_level_vertex_id,smart.m_game_vertex_id)
- if (new_se) then
- new_se.angle = vector():set(ang)
- lst[i] = {id = tonumber(new_se.id),sec = tostring(sec)}
- --printf("GhenTuong: dynamic_object create %s [%s]",new_se.id,new_se:name())
- end
- end
- else
- if (idx) then
- local se = tonumber(idx.id) and alife():object(tonumber(idx.id))
- if (se and idx.sec and string.find(se:name(),idx.sec)) then
- --printf("GhenTuong: dynamic_object delete %s [%s]",se.id,se:name())
- alife_release(se)
- end
- lst[i] = nil
- end
- end
- end
- end
-
- for i,idx in pairs(lst) do
- if (i and idx) then
- if not (ini:line_exist("exclusive",i)) then
- local se = idx and tonumber(idx.id) and alife():object(tonumber(idx.id))
- if (se and idx.sec and string.find(se:name(),idx.sec)) then
- --printf("GhenTuong: dynamic_object delete %s [%s]",se.id,se:name())
- alife_release(se)
- end
- lst[i] = nil
- end
- else
- lst[i] = nil
- end
- end
-end
---[[
-if not (ini:section_exist("exclusive") and ini:line_exist("exclusive",i)) then
- return
-end
-
-local v = ini:r_string_ex("exclusive",i)
---]]
-
-function get_object_config(v)
- local str = v and str_explode(v,"|")
- local sec = str[1] and (str[1] ~= "") and (str[1] ~= "nil") and tostring(str[1])
-
- local tp = str[2] and str_explode(str[2],",") or nil
- local td = str[3] and str_explode(str[3],",") or nil
- local pox = tp and tonumber(tp[1])
- local poy = tp and tonumber(tp[2])
- local poz = tp and tonumber(tp[3])
- local rox = td and tonumber(td[1]) and math.rad(tonumber(td[1]))
- local roy = td and tonumber(td[2]) and math.rad(tonumber(td[2]))
- local roz = td and tonumber(td[3]) and math.rad(tonumber(td[3]))
- local con = str[4] or "nil"
-
- if not (pox and poy and poz and rox and roy and roz and con) then
- return
- end
- return {sec = sec, pos = vector():set(pox,poy,poz), ang = vector():set(rox,roy,roz), con = con}
-end
-
-function get_object(smart_name,index)
- local idx = dynamic_object_storage_loaded and dynamic_object_storage[smart_name] and dynamic_object_storage[smart_name][index]
- return idx and {id = tonumber(idx.id),sec = tostring(idx.sec)}
-end
-
-function save_state(m_data)
- m_data.xr_dynamic_object_storage = dynamic_object_storage
-end
-
-function load_state(m_data)
- dynamic_object_storage = m_data.xr_dynamic_object_storage or {}
-end
-
-function on_game_start()
- RegisterScriptCallback("save_state",save_state)
- RegisterScriptCallback("load_state",load_state)
-end
\ No newline at end of file
diff --git a/mods/Redone Collection_backup/gamedata/sounds/ambient/background/yantar/device_hum_0.ogg b/mods/Redone Collection_backup/gamedata/sounds/ambient/background/yantar/device_hum_0.ogg
deleted file mode 100644
index 6f06cfb3..00000000
--- a/mods/Redone Collection_backup/gamedata/sounds/ambient/background/yantar/device_hum_0.ogg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:2f5e8679c688d0584500428f5dc60c7fe4da64decc1846fdc57ba8c4a68d3e0a
-size 9918
diff --git a/mods/Redone Collection_backup/gamedata/sounds/ambient/blowout/blowout_siren_agr.ogg b/mods/Redone Collection_backup/gamedata/sounds/ambient/blowout/blowout_siren_agr.ogg
deleted file mode 100644
index 09a1edc8..00000000
--- a/mods/Redone Collection_backup/gamedata/sounds/ambient/blowout/blowout_siren_agr.ogg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:26c60bdf2d4ff43058294d7eeab3fced20e0cae8b0ce4b6077fab59fd207a087
-size 6642421
diff --git a/mods/Redone Collection_backup/gamedata/sounds/ambient/blowout/blowout_siren_bar_1.ogg b/mods/Redone Collection_backup/gamedata/sounds/ambient/blowout/blowout_siren_bar_1.ogg
deleted file mode 100644
index 72de050d..00000000
--- a/mods/Redone Collection_backup/gamedata/sounds/ambient/blowout/blowout_siren_bar_1.ogg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:07de94f5a8810e55e907d035b44d29aec3cc3401a51ab24adf349b3e685f19d7
-size 719181
diff --git a/mods/Redone Collection_backup/gamedata/sounds/ambient/blowout/blowout_siren_bar_2.ogg b/mods/Redone Collection_backup/gamedata/sounds/ambient/blowout/blowout_siren_bar_2.ogg
deleted file mode 100644
index 72de050d..00000000
--- a/mods/Redone Collection_backup/gamedata/sounds/ambient/blowout/blowout_siren_bar_2.ogg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:07de94f5a8810e55e907d035b44d29aec3cc3401a51ab24adf349b3e685f19d7
-size 719181
diff --git a/mods/Redone Collection_backup/gamedata/sounds/ambient/blowout/blowout_siren_esc_1.ogg b/mods/Redone Collection_backup/gamedata/sounds/ambient/blowout/blowout_siren_esc_1.ogg
deleted file mode 100644
index 72de050d..00000000
--- a/mods/Redone Collection_backup/gamedata/sounds/ambient/blowout/blowout_siren_esc_1.ogg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:07de94f5a8810e55e907d035b44d29aec3cc3401a51ab24adf349b3e685f19d7
-size 719181
diff --git a/mods/Redone Collection_backup/gamedata/sounds/ambient/blowout/blowout_siren_esc_2.ogg b/mods/Redone Collection_backup/gamedata/sounds/ambient/blowout/blowout_siren_esc_2.ogg
deleted file mode 100644
index 72de050d..00000000
--- a/mods/Redone Collection_backup/gamedata/sounds/ambient/blowout/blowout_siren_esc_2.ogg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:07de94f5a8810e55e907d035b44d29aec3cc3401a51ab24adf349b3e685f19d7
-size 719181
diff --git a/mods/Redone Collection_backup/gamedata/sounds/ambient/blowout/blowout_siren_yan_1.ogg b/mods/Redone Collection_backup/gamedata/sounds/ambient/blowout/blowout_siren_yan_1.ogg
deleted file mode 100644
index 72de050d..00000000
--- a/mods/Redone Collection_backup/gamedata/sounds/ambient/blowout/blowout_siren_yan_1.ogg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:07de94f5a8810e55e907d035b44d29aec3cc3401a51ab24adf349b3e685f19d7
-size 719181
diff --git a/mods/Redone Collection_backup/gamedata/sounds/ambient/blowout/blowout_siren_yan_2.ogg b/mods/Redone Collection_backup/gamedata/sounds/ambient/blowout/blowout_siren_yan_2.ogg
deleted file mode 100644
index 72de050d..00000000
--- a/mods/Redone Collection_backup/gamedata/sounds/ambient/blowout/blowout_siren_yan_2.ogg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:07de94f5a8810e55e907d035b44d29aec3cc3401a51ab24adf349b3e685f19d7
-size 719181
diff --git a/mods/Redone Collection_backup/gamedata/sounds/ambient/siren1.ogg b/mods/Redone Collection_backup/gamedata/sounds/ambient/siren1.ogg
deleted file mode 100644
index 381eab23..00000000
--- a/mods/Redone Collection_backup/gamedata/sounds/ambient/siren1.ogg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:9af22d9a1a8fd1f676cf96b63d872eafe29a47d4eda1fe0163ecacc14ea52982
-size 352095
diff --git a/mods/Redone Collection_backup/gamedata/sounds/anomaly/brain_scorcher_l.ogg b/mods/Redone Collection_backup/gamedata/sounds/anomaly/brain_scorcher_l.ogg
deleted file mode 100644
index 0fdc2211..00000000
--- a/mods/Redone Collection_backup/gamedata/sounds/anomaly/brain_scorcher_l.ogg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:0891dac5acb3b836be02baf19f8a66478dbb40ed30cdcd7c355282f06e3ffd6d
-size 177858
diff --git a/mods/Redone Collection_backup/gamedata/sounds/anomaly/brain_scorcher_r.ogg b/mods/Redone Collection_backup/gamedata/sounds/anomaly/brain_scorcher_r.ogg
deleted file mode 100644
index 935321dc..00000000
--- a/mods/Redone Collection_backup/gamedata/sounds/anomaly/brain_scorcher_r.ogg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:e55efd4c5a6fbb3ddbd81b6d4e616890889b8bd40ad4c2e42a960f8f8310aaab
-size 177395
diff --git a/mods/Redone Collection_backup/gamedata/sounds/characters_voice/scenario/agroprom/comandir_megafon_1.ogg b/mods/Redone Collection_backup/gamedata/sounds/characters_voice/scenario/agroprom/comandir_megafon_1.ogg
deleted file mode 100644
index 8a88a46b..00000000
--- a/mods/Redone Collection_backup/gamedata/sounds/characters_voice/scenario/agroprom/comandir_megafon_1.ogg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:35d3502431fbd12119512d4961476ddeec077b5264990d1975bc7fb7d1e74bed
-size 100741
diff --git a/mods/Redone Collection_backup/gamedata/sounds/characters_voice/scenario/agroprom/comandir_megafon_10.ogg b/mods/Redone Collection_backup/gamedata/sounds/characters_voice/scenario/agroprom/comandir_megafon_10.ogg
deleted file mode 100644
index fa5e0eda..00000000
--- a/mods/Redone Collection_backup/gamedata/sounds/characters_voice/scenario/agroprom/comandir_megafon_10.ogg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:0eca7d06db3f929f0c3f76366d32c5e8d0f9c0853a4d07a813ac3ea3507e6891
-size 39735
diff --git a/mods/Redone Collection_backup/gamedata/sounds/characters_voice/scenario/agroprom/comandir_megafon_11.ogg b/mods/Redone Collection_backup/gamedata/sounds/characters_voice/scenario/agroprom/comandir_megafon_11.ogg
deleted file mode 100644
index 56e59dd0..00000000
--- a/mods/Redone Collection_backup/gamedata/sounds/characters_voice/scenario/agroprom/comandir_megafon_11.ogg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:20d09cd054968a3daffcefcc1a8e3a6e9687768ff8d2ba571d0a4fdabfe722c6
-size 43933
diff --git a/mods/Redone Collection_backup/gamedata/sounds/characters_voice/scenario/agroprom/comandir_megafon_12.ogg b/mods/Redone Collection_backup/gamedata/sounds/characters_voice/scenario/agroprom/comandir_megafon_12.ogg
deleted file mode 100644
index a417609c..00000000
--- a/mods/Redone Collection_backup/gamedata/sounds/characters_voice/scenario/agroprom/comandir_megafon_12.ogg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:0ca7a3c46c33e38a2f6478d171b1834d5feb2b6cd7c2691ad0cccfd261fdbb49
-size 39030
diff --git a/mods/Redone Collection_backup/gamedata/sounds/characters_voice/scenario/agroprom/comandir_megafon_13.ogg b/mods/Redone Collection_backup/gamedata/sounds/characters_voice/scenario/agroprom/comandir_megafon_13.ogg
deleted file mode 100644
index 7d91b51d..00000000
--- a/mods/Redone Collection_backup/gamedata/sounds/characters_voice/scenario/agroprom/comandir_megafon_13.ogg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:917177dc9336510100a1fe7825e850deff193f1e3d62f1268f401f9bc304a844
-size 41627
diff --git a/mods/Redone Collection_backup/gamedata/sounds/characters_voice/scenario/agroprom/comandir_megafon_14.ogg b/mods/Redone Collection_backup/gamedata/sounds/characters_voice/scenario/agroprom/comandir_megafon_14.ogg
deleted file mode 100644
index 3b5d8edd..00000000
--- a/mods/Redone Collection_backup/gamedata/sounds/characters_voice/scenario/agroprom/comandir_megafon_14.ogg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:b7ebf06436bef5361210bf73764d32b445c5c1317c69b7046fbb7a8d23e0c625
-size 54674
diff --git a/mods/Redone Collection_backup/gamedata/sounds/characters_voice/scenario/agroprom/comandir_megafon_15.ogg b/mods/Redone Collection_backup/gamedata/sounds/characters_voice/scenario/agroprom/comandir_megafon_15.ogg
deleted file mode 100644
index 43c4c76c..00000000
--- a/mods/Redone Collection_backup/gamedata/sounds/characters_voice/scenario/agroprom/comandir_megafon_15.ogg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:83a075dbed3236fb4889fd23f3bb2c485ceaec4559faa8f94957e060453878a1
-size 78955
diff --git a/mods/Redone Collection_backup/gamedata/sounds/characters_voice/scenario/agroprom/comandir_megafon_16.ogg b/mods/Redone Collection_backup/gamedata/sounds/characters_voice/scenario/agroprom/comandir_megafon_16.ogg
deleted file mode 100644
index d6e1a9fa..00000000
--- a/mods/Redone Collection_backup/gamedata/sounds/characters_voice/scenario/agroprom/comandir_megafon_16.ogg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:6d37ad55d2075aefea07867e55f642639776cd0e4ee7ccf3e55bfc52b8e221e0
-size 61106
diff --git a/mods/Redone Collection_backup/gamedata/sounds/characters_voice/scenario/agroprom/comandir_megafon_17.ogg b/mods/Redone Collection_backup/gamedata/sounds/characters_voice/scenario/agroprom/comandir_megafon_17.ogg
deleted file mode 100644
index ac7491df..00000000
--- a/mods/Redone Collection_backup/gamedata/sounds/characters_voice/scenario/agroprom/comandir_megafon_17.ogg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:4f368bd9bf3f8198151e4a660054069af76d45531829eaa6a2f8008fd3c37197
-size 90139
diff --git a/mods/Redone Collection_backup/gamedata/sounds/characters_voice/scenario/agroprom/comandir_megafon_2.ogg b/mods/Redone Collection_backup/gamedata/sounds/characters_voice/scenario/agroprom/comandir_megafon_2.ogg
deleted file mode 100644
index 7c85aab3..00000000
--- a/mods/Redone Collection_backup/gamedata/sounds/characters_voice/scenario/agroprom/comandir_megafon_2.ogg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:83320ae3e515a45a632a0a5b0a39444934dfd4d7d54f9dae4193edeebb708e86
-size 107889
diff --git a/mods/Redone Collection_backup/gamedata/sounds/characters_voice/scenario/agroprom/comandir_megafon_3.ogg b/mods/Redone Collection_backup/gamedata/sounds/characters_voice/scenario/agroprom/comandir_megafon_3.ogg
deleted file mode 100644
index cf941846..00000000
--- a/mods/Redone Collection_backup/gamedata/sounds/characters_voice/scenario/agroprom/comandir_megafon_3.ogg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:f62d68c1d92e12c9ad80715ba0985de51933deea8aade8228618fba5aac43628
-size 125209
diff --git a/mods/Redone Collection_backup/gamedata/sounds/characters_voice/scenario/agroprom/comandir_megafon_4.ogg b/mods/Redone Collection_backup/gamedata/sounds/characters_voice/scenario/agroprom/comandir_megafon_4.ogg
deleted file mode 100644
index 024113c7..00000000
--- a/mods/Redone Collection_backup/gamedata/sounds/characters_voice/scenario/agroprom/comandir_megafon_4.ogg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:7b86dda0921759dcb2b7db01aa2ff8f719819b94abe86da94ec54dfd10baed74
-size 284854
diff --git a/mods/Redone Collection_backup/gamedata/sounds/characters_voice/scenario/agroprom/comandir_megafon_5.ogg b/mods/Redone Collection_backup/gamedata/sounds/characters_voice/scenario/agroprom/comandir_megafon_5.ogg
deleted file mode 100644
index 0aa1e088..00000000
--- a/mods/Redone Collection_backup/gamedata/sounds/characters_voice/scenario/agroprom/comandir_megafon_5.ogg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:ff5e28072d8b6cca012e89ad6077c968e6ca0504444c56ea6ab6b46d592d5bbc
-size 93336
diff --git a/mods/Redone Collection_backup/gamedata/sounds/characters_voice/scenario/agroprom/comandir_megafon_6.ogg b/mods/Redone Collection_backup/gamedata/sounds/characters_voice/scenario/agroprom/comandir_megafon_6.ogg
deleted file mode 100644
index 0805d936..00000000
--- a/mods/Redone Collection_backup/gamedata/sounds/characters_voice/scenario/agroprom/comandir_megafon_6.ogg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:0f594d90b4161957de7cb86b70e569c6974a181eb00ba1ba168db194de72e34a
-size 123537
diff --git a/mods/Redone Collection_backup/gamedata/sounds/characters_voice/scenario/agroprom/comandir_megafon_7.ogg b/mods/Redone Collection_backup/gamedata/sounds/characters_voice/scenario/agroprom/comandir_megafon_7.ogg
deleted file mode 100644
index 344f05d8..00000000
--- a/mods/Redone Collection_backup/gamedata/sounds/characters_voice/scenario/agroprom/comandir_megafon_7.ogg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:57a19fc0a2085954e44468843283f34f44e860b56cccb313e6aed3191d16b181
-size 95331
diff --git a/mods/Redone Collection_backup/gamedata/sounds/characters_voice/scenario/agroprom/comandir_megafon_8.ogg b/mods/Redone Collection_backup/gamedata/sounds/characters_voice/scenario/agroprom/comandir_megafon_8.ogg
deleted file mode 100644
index d077b5b1..00000000
--- a/mods/Redone Collection_backup/gamedata/sounds/characters_voice/scenario/agroprom/comandir_megafon_8.ogg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:1d05952c80977dc0c52381877a899dc7321f291734abc91d85a6886c6e4f88f1
-size 64549
diff --git a/mods/Redone Collection_backup/gamedata/sounds/characters_voice/scenario/agroprom/comandir_megafon_9.ogg b/mods/Redone Collection_backup/gamedata/sounds/characters_voice/scenario/agroprom/comandir_megafon_9.ogg
deleted file mode 100644
index e2e96c23..00000000
--- a/mods/Redone Collection_backup/gamedata/sounds/characters_voice/scenario/agroprom/comandir_megafon_9.ogg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:5ab11244b5e322bb7433b00913f8436bb3b7c1f53381767496262068ed1cef09
-size 56369
diff --git a/mods/Redone Collection_backup/gamedata/sounds/characters_voice/scenario/agroprom/kovalsky_surge_phase_1.ogg b/mods/Redone Collection_backup/gamedata/sounds/characters_voice/scenario/agroprom/kovalsky_surge_phase_1.ogg
deleted file mode 100644
index 09a1edc8..00000000
--- a/mods/Redone Collection_backup/gamedata/sounds/characters_voice/scenario/agroprom/kovalsky_surge_phase_1.ogg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:26c60bdf2d4ff43058294d7eeab3fced20e0cae8b0ce4b6077fab59fd207a087
-size 6642421
diff --git a/mods/Redone Collection_backup/gamedata/sounds/characters_voice/scenario/bar/megafon/bar_start_megafon_1.ogg b/mods/Redone Collection_backup/gamedata/sounds/characters_voice/scenario/bar/megafon/bar_start_megafon_1.ogg
deleted file mode 100644
index 14e6d451..00000000
--- a/mods/Redone Collection_backup/gamedata/sounds/characters_voice/scenario/bar/megafon/bar_start_megafon_1.ogg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:5bf5581f81c7355479ca027374930ab7f34c72235a1b7c2427ea008efea3f2bc
-size 50099
diff --git a/mods/Redone Collection_backup/gamedata/sounds/characters_voice/scenario/bar/megafon/bar_start_megafon_2.ogg b/mods/Redone Collection_backup/gamedata/sounds/characters_voice/scenario/bar/megafon/bar_start_megafon_2.ogg
deleted file mode 100644
index f8b2538c..00000000
--- a/mods/Redone Collection_backup/gamedata/sounds/characters_voice/scenario/bar/megafon/bar_start_megafon_2.ogg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:87a7ccf9007c57100df48327a43784196070c91ea2c1bec950d957e5e1dec003
-size 79542
diff --git a/mods/Redone Collection_backup/gamedata/sounds/characters_voice/scenario/bar/megafon/bar_start_megafon_3.ogg b/mods/Redone Collection_backup/gamedata/sounds/characters_voice/scenario/bar/megafon/bar_start_megafon_3.ogg
deleted file mode 100644
index b3a85e73..00000000
--- a/mods/Redone Collection_backup/gamedata/sounds/characters_voice/scenario/bar/megafon/bar_start_megafon_3.ogg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:2e05f31fef1e2cd49cc0fcb6fc1c2d26b02d184979bd7d7a98af5cdeb0a7d546
-size 58320
diff --git a/mods/Redone Collection_backup/gamedata/sounds/characters_voice/scenario/bar/megafon/bar_start_megafon_4.ogg b/mods/Redone Collection_backup/gamedata/sounds/characters_voice/scenario/bar/megafon/bar_start_megafon_4.ogg
deleted file mode 100644
index 8f2df176..00000000
--- a/mods/Redone Collection_backup/gamedata/sounds/characters_voice/scenario/bar/megafon/bar_start_megafon_4.ogg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:3b6d3dbfb9e7ce02913ca32a5a45233ceb778d8665a1e226a4565de7fbaa535b
-size 64872
diff --git a/mods/Redone Collection_backup/gamedata/sounds/characters_voice/scenario/bar/megafon/duty_gunfire_mega_1.ogg b/mods/Redone Collection_backup/gamedata/sounds/characters_voice/scenario/bar/megafon/duty_gunfire_mega_1.ogg
deleted file mode 100644
index e7a13744..00000000
--- a/mods/Redone Collection_backup/gamedata/sounds/characters_voice/scenario/bar/megafon/duty_gunfire_mega_1.ogg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:8a5a86ddd4f1f1027e17df4fa1ed8857c5b4fa4080fbd79679d782b677248f62
-size 36170
diff --git a/mods/Redone Collection_backup/gamedata/sounds/characters_voice/scenario/bar/megafon/duty_gunfire_mega_2.ogg b/mods/Redone Collection_backup/gamedata/sounds/characters_voice/scenario/bar/megafon/duty_gunfire_mega_2.ogg
deleted file mode 100644
index 96ec7d53..00000000
--- a/mods/Redone Collection_backup/gamedata/sounds/characters_voice/scenario/bar/megafon/duty_gunfire_mega_2.ogg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:dc93769a5ebe3435b9684a03dde4b635cf9f36aa871975064df7c23a00d2d056
-size 34143
diff --git a/mods/Redone Collection_backup/gamedata/sounds/characters_voice/scenario/bar/megafon/duty_gunfire_mega_3.ogg b/mods/Redone Collection_backup/gamedata/sounds/characters_voice/scenario/bar/megafon/duty_gunfire_mega_3.ogg
deleted file mode 100644
index 72b7c9a8..00000000
--- a/mods/Redone Collection_backup/gamedata/sounds/characters_voice/scenario/bar/megafon/duty_gunfire_mega_3.ogg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:994d7d24b259bc1cbc3086e1afd0ce4d538dbdd3b0298a870552022d7f3a6c7e
-size 43360
diff --git a/mods/Redone Collection_backup/gamedata/sounds/characters_voice/scenario/bar/megafon/mega_duty_propaganda_1.ogg b/mods/Redone Collection_backup/gamedata/sounds/characters_voice/scenario/bar/megafon/mega_duty_propaganda_1.ogg
deleted file mode 100644
index 5fc83c10..00000000
--- a/mods/Redone Collection_backup/gamedata/sounds/characters_voice/scenario/bar/megafon/mega_duty_propaganda_1.ogg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:f1555e77b5d8c21d2d80474a245e359d7adb15896c4eac84e19e46931ac2cbdc
-size 171532
diff --git a/mods/Redone Collection_backup/gamedata/sounds/characters_voice/scenario/bar/megafon/mega_duty_propaganda_10.ogg b/mods/Redone Collection_backup/gamedata/sounds/characters_voice/scenario/bar/megafon/mega_duty_propaganda_10.ogg
deleted file mode 100644
index 2a35120b..00000000
--- a/mods/Redone Collection_backup/gamedata/sounds/characters_voice/scenario/bar/megafon/mega_duty_propaganda_10.ogg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:bb9b7da4a939efe296adcac76c4e41215a18fb55c1a381f8f7b04b152506fabe
-size 5227648
diff --git a/mods/Redone Collection_backup/gamedata/sounds/characters_voice/scenario/bar/megafon/mega_duty_propaganda_11.ogg b/mods/Redone Collection_backup/gamedata/sounds/characters_voice/scenario/bar/megafon/mega_duty_propaganda_11.ogg
deleted file mode 100644
index ad8004d8..00000000
--- a/mods/Redone Collection_backup/gamedata/sounds/characters_voice/scenario/bar/megafon/mega_duty_propaganda_11.ogg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:2b3c693470a2f19102c6ca6fc703e09ee35cafe98fb5467d5e31987b5608506e
-size 131435
diff --git a/mods/Redone Collection_backup/gamedata/sounds/characters_voice/scenario/bar/megafon/mega_duty_propaganda_2.ogg b/mods/Redone Collection_backup/gamedata/sounds/characters_voice/scenario/bar/megafon/mega_duty_propaganda_2.ogg
deleted file mode 100644
index eed4efad..00000000
--- a/mods/Redone Collection_backup/gamedata/sounds/characters_voice/scenario/bar/megafon/mega_duty_propaganda_2.ogg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:3ff77b08802ede2d039a4129c94933c8beb99f7fbc9bacd538231bfbaabd36df
-size 222550
diff --git a/mods/Redone Collection_backup/gamedata/sounds/characters_voice/scenario/bar/megafon/mega_duty_propaganda_3.ogg b/mods/Redone Collection_backup/gamedata/sounds/characters_voice/scenario/bar/megafon/mega_duty_propaganda_3.ogg
deleted file mode 100644
index 0aae114a..00000000
--- a/mods/Redone Collection_backup/gamedata/sounds/characters_voice/scenario/bar/megafon/mega_duty_propaganda_3.ogg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:f9bd64105d31b418e11247e72a029fd29261d0d7daaa9eba517d5ba2483bf2a2
-size 304242
diff --git a/mods/Redone Collection_backup/gamedata/sounds/characters_voice/scenario/bar/megafon/mega_duty_propaganda_4.ogg b/mods/Redone Collection_backup/gamedata/sounds/characters_voice/scenario/bar/megafon/mega_duty_propaganda_4.ogg
deleted file mode 100644
index ab7cc27c..00000000
--- a/mods/Redone Collection_backup/gamedata/sounds/characters_voice/scenario/bar/megafon/mega_duty_propaganda_4.ogg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:5fb4a4464ceef9f6c39324b68e772924966163df549ea90ca9c7b568c48abf96
-size 90568
diff --git a/mods/Redone Collection_backup/gamedata/sounds/characters_voice/scenario/bar/megafon/mega_duty_propaganda_5.ogg b/mods/Redone Collection_backup/gamedata/sounds/characters_voice/scenario/bar/megafon/mega_duty_propaganda_5.ogg
deleted file mode 100644
index 03d58f4d..00000000
--- a/mods/Redone Collection_backup/gamedata/sounds/characters_voice/scenario/bar/megafon/mega_duty_propaganda_5.ogg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:5f19ad4ef36b2938d38bfd71b050b8a5a15bd258f5a93969363241fda6b1f574
-size 142197
diff --git a/mods/Redone Collection_backup/gamedata/sounds/characters_voice/scenario/bar/megafon/mega_duty_propaganda_6.ogg b/mods/Redone Collection_backup/gamedata/sounds/characters_voice/scenario/bar/megafon/mega_duty_propaganda_6.ogg
deleted file mode 100644
index 1b652745..00000000
--- a/mods/Redone Collection_backup/gamedata/sounds/characters_voice/scenario/bar/megafon/mega_duty_propaganda_6.ogg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:66c1c58a340a51530fdb29aaf22f2017e7a883d63067d911b77a351543c8bfe3
-size 189194
diff --git a/mods/Redone Collection_backup/gamedata/sounds/characters_voice/scenario/bar/megafon/mega_duty_propaganda_7.ogg b/mods/Redone Collection_backup/gamedata/sounds/characters_voice/scenario/bar/megafon/mega_duty_propaganda_7.ogg
deleted file mode 100644
index 8dcb531e..00000000
--- a/mods/Redone Collection_backup/gamedata/sounds/characters_voice/scenario/bar/megafon/mega_duty_propaganda_7.ogg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:b534b54251af923881c952e838523c367ada56999a12344e55e80164acfd354c
-size 250709
diff --git a/mods/Redone Collection_backup/gamedata/sounds/characters_voice/scenario/bar/megafon/mega_duty_propaganda_8.ogg b/mods/Redone Collection_backup/gamedata/sounds/characters_voice/scenario/bar/megafon/mega_duty_propaganda_8.ogg
deleted file mode 100644
index da0a7dff..00000000
--- a/mods/Redone Collection_backup/gamedata/sounds/characters_voice/scenario/bar/megafon/mega_duty_propaganda_8.ogg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:35ebc9c03bc5b6b78654a1996fe3e1158ae38e2294a4fd82c17a4885280b5d4b
-size 1147094
diff --git a/mods/Redone Collection_backup/gamedata/sounds/characters_voice/scenario/bar/megafon/mega_duty_propaganda_9.ogg b/mods/Redone Collection_backup/gamedata/sounds/characters_voice/scenario/bar/megafon/mega_duty_propaganda_9.ogg
deleted file mode 100644
index 228139e7..00000000
--- a/mods/Redone Collection_backup/gamedata/sounds/characters_voice/scenario/bar/megafon/mega_duty_propaganda_9.ogg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:7af31ff6938d5053b96383a62ba10731dc9708696e84840cc4e164ed387a81d3
-size 1296718
diff --git a/mods/Redone Collection_backup/gamedata/sounds/characters_voice/scenario/bar/megafon/megaphone_duty_alarm.ogg b/mods/Redone Collection_backup/gamedata/sounds/characters_voice/scenario/bar/megafon/megaphone_duty_alarm.ogg
deleted file mode 100644
index 4515dfa5..00000000
--- a/mods/Redone Collection_backup/gamedata/sounds/characters_voice/scenario/bar/megafon/megaphone_duty_alarm.ogg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:1127b19b0200ac996f8c122d6081212eced52441e41f9caf534f2b3c42d1dbe9
-size 56418
diff --git a/mods/Redone Collection_backup/gamedata/sounds/characters_voice/scenario/escape/megafon_1.ogg b/mods/Redone Collection_backup/gamedata/sounds/characters_voice/scenario/escape/megafon_1.ogg
deleted file mode 100644
index cbcf0d31..00000000
--- a/mods/Redone Collection_backup/gamedata/sounds/characters_voice/scenario/escape/megafon_1.ogg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:07c0feaa25a8d7440b8834a13e6a8b07fd950b2664560e3924934544537db047
-size 99316
diff --git a/mods/Redone Collection_backup/gamedata/sounds/characters_voice/scenario/escape/megafon_2.ogg b/mods/Redone Collection_backup/gamedata/sounds/characters_voice/scenario/escape/megafon_2.ogg
deleted file mode 100644
index 47d80330..00000000
--- a/mods/Redone Collection_backup/gamedata/sounds/characters_voice/scenario/escape/megafon_2.ogg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:bc2c10be1211e6346a234c188c54c657348f1a150800f5b7388a70be0af82a53
-size 102045
diff --git a/mods/Redone Collection_backup/gamedata/sounds/characters_voice/scenario/escape/megafon_3.ogg b/mods/Redone Collection_backup/gamedata/sounds/characters_voice/scenario/escape/megafon_3.ogg
deleted file mode 100644
index 8b3d416f..00000000
--- a/mods/Redone Collection_backup/gamedata/sounds/characters_voice/scenario/escape/megafon_3.ogg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:0fb60fc4efb1c63ed8b749911c2da19b740c96a19f6b7d22753c7069b39dfcfd
-size 120269
diff --git a/mods/Redone Collection_backup/gamedata/sounds/characters_voice/scenario/escape/megafon_4.ogg b/mods/Redone Collection_backup/gamedata/sounds/characters_voice/scenario/escape/megafon_4.ogg
deleted file mode 100644
index 3d708038..00000000
--- a/mods/Redone Collection_backup/gamedata/sounds/characters_voice/scenario/escape/megafon_4.ogg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:ed767c35c333e32bff778966c6261b692b802ead8803ad6346c20d44bcfa8a8f
-size 274408
diff --git a/mods/Redone Collection_backup/gamedata/sounds/characters_voice/scenario/escape/megafon_alarm_1.ogg b/mods/Redone Collection_backup/gamedata/sounds/characters_voice/scenario/escape/megafon_alarm_1.ogg
deleted file mode 100644
index e486aac3..00000000
--- a/mods/Redone Collection_backup/gamedata/sounds/characters_voice/scenario/escape/megafon_alarm_1.ogg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:6cee19117cc90a8519764b85bd8a18867aa4256bae9951ae3350201eac84af3e
-size 48967
diff --git a/mods/Redone Collection_backup/gamedata/sounds/characters_voice/scenario/escape/megafon_alarm_10.ogg b/mods/Redone Collection_backup/gamedata/sounds/characters_voice/scenario/escape/megafon_alarm_10.ogg
deleted file mode 100644
index df06a468..00000000
--- a/mods/Redone Collection_backup/gamedata/sounds/characters_voice/scenario/escape/megafon_alarm_10.ogg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:ba1a37f2b2b86d8b7f388318e2a07e675acd90f81de89b7cc7ea644ccee380bb
-size 20820
diff --git a/mods/Redone Collection_backup/gamedata/sounds/characters_voice/scenario/escape/megafon_alarm_11.ogg b/mods/Redone Collection_backup/gamedata/sounds/characters_voice/scenario/escape/megafon_alarm_11.ogg
deleted file mode 100644
index c348ca9e..00000000
--- a/mods/Redone Collection_backup/gamedata/sounds/characters_voice/scenario/escape/megafon_alarm_11.ogg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:9d7ba4d1c05dec538c7c6415e8f300af61acc08c0ff76ab48d299455d0c60c7f
-size 22134
diff --git a/mods/Redone Collection_backup/gamedata/sounds/characters_voice/scenario/escape/megafon_alarm_12.ogg b/mods/Redone Collection_backup/gamedata/sounds/characters_voice/scenario/escape/megafon_alarm_12.ogg
deleted file mode 100644
index b6c219b0..00000000
--- a/mods/Redone Collection_backup/gamedata/sounds/characters_voice/scenario/escape/megafon_alarm_12.ogg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:fc761d11c9c3d287e98ebe9960b820cbd519f5a0a46a72f9fdcb42468b920a69
-size 26457
diff --git a/mods/Redone Collection_backup/gamedata/sounds/characters_voice/scenario/escape/megafon_alarm_13.ogg b/mods/Redone Collection_backup/gamedata/sounds/characters_voice/scenario/escape/megafon_alarm_13.ogg
deleted file mode 100644
index 8d9d5667..00000000
--- a/mods/Redone Collection_backup/gamedata/sounds/characters_voice/scenario/escape/megafon_alarm_13.ogg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:2a54af7db3e0d759d0c2ba4642b1851f20607cdbac54d2c4aab178c54dc9cc7d
-size 35569
diff --git a/mods/Redone Collection_backup/gamedata/sounds/characters_voice/scenario/escape/megafon_alarm_2.ogg b/mods/Redone Collection_backup/gamedata/sounds/characters_voice/scenario/escape/megafon_alarm_2.ogg
deleted file mode 100644
index 977e947c..00000000
--- a/mods/Redone Collection_backup/gamedata/sounds/characters_voice/scenario/escape/megafon_alarm_2.ogg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:0b52a3b6f1f07508df0d6c8c39c7add6e77b5bdbdf0c2fc57dd8828a4678cb74
-size 36087
diff --git a/mods/Redone Collection_backup/gamedata/sounds/characters_voice/scenario/escape/megafon_alarm_3.ogg b/mods/Redone Collection_backup/gamedata/sounds/characters_voice/scenario/escape/megafon_alarm_3.ogg
deleted file mode 100644
index 72311d76..00000000
--- a/mods/Redone Collection_backup/gamedata/sounds/characters_voice/scenario/escape/megafon_alarm_3.ogg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:d378e77ab8474c87fc6bafe218c3d3961ba7dd79ccbb5e23d7917ec83c075f89
-size 20003
diff --git a/mods/Redone Collection_backup/gamedata/sounds/characters_voice/scenario/escape/megafon_alarm_4.ogg b/mods/Redone Collection_backup/gamedata/sounds/characters_voice/scenario/escape/megafon_alarm_4.ogg
deleted file mode 100644
index 6515d160..00000000
--- a/mods/Redone Collection_backup/gamedata/sounds/characters_voice/scenario/escape/megafon_alarm_4.ogg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:68fb8b5733414bbef6774ba023cd841041ae7bd85bc5cd9a405330a9ca078163
-size 26430
diff --git a/mods/Redone Collection_backup/gamedata/sounds/characters_voice/scenario/escape/megafon_alarm_5.ogg b/mods/Redone Collection_backup/gamedata/sounds/characters_voice/scenario/escape/megafon_alarm_5.ogg
deleted file mode 100644
index 32a8e306..00000000
--- a/mods/Redone Collection_backup/gamedata/sounds/characters_voice/scenario/escape/megafon_alarm_5.ogg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:2267c1b312a85c2164b4ae61a15a32451088cacb871e4d2f3aa8531af5f88dad
-size 38138
diff --git a/mods/Redone Collection_backup/gamedata/sounds/characters_voice/scenario/escape/megafon_alarm_6.ogg b/mods/Redone Collection_backup/gamedata/sounds/characters_voice/scenario/escape/megafon_alarm_6.ogg
deleted file mode 100644
index 31d557d2..00000000
--- a/mods/Redone Collection_backup/gamedata/sounds/characters_voice/scenario/escape/megafon_alarm_6.ogg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:8668de5c165bcea9da2437d6bcde11c86e8bfd2ea52aa16f478cd6cf19dc6e33
-size 39901
diff --git a/mods/Redone Collection_backup/gamedata/sounds/characters_voice/scenario/escape/megafon_alarm_7.ogg b/mods/Redone Collection_backup/gamedata/sounds/characters_voice/scenario/escape/megafon_alarm_7.ogg
deleted file mode 100644
index 33e4ce3d..00000000
--- a/mods/Redone Collection_backup/gamedata/sounds/characters_voice/scenario/escape/megafon_alarm_7.ogg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:89d03dba62b159b9c8fbaf12218a774c461e715981fcf8aa3391ae661d13862c
-size 43334
diff --git a/mods/Redone Collection_backup/gamedata/sounds/characters_voice/scenario/escape/megafon_alarm_8.ogg b/mods/Redone Collection_backup/gamedata/sounds/characters_voice/scenario/escape/megafon_alarm_8.ogg
deleted file mode 100644
index e199c23f..00000000
--- a/mods/Redone Collection_backup/gamedata/sounds/characters_voice/scenario/escape/megafon_alarm_8.ogg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:89dafcdfb9f2f8bb02811e7c351a8fa0905a57c60284a24970c64fbb63c7d7e2
-size 24212
diff --git a/mods/Redone Collection_backup/gamedata/sounds/characters_voice/scenario/escape/megafon_alarm_9.ogg b/mods/Redone Collection_backup/gamedata/sounds/characters_voice/scenario/escape/megafon_alarm_9.ogg
deleted file mode 100644
index 990fe1a2..00000000
--- a/mods/Redone Collection_backup/gamedata/sounds/characters_voice/scenario/escape/megafon_alarm_9.ogg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:51014dd2933de24e89df65c91a7fde996f6b6a78a33482e5a61d464947db63d2
-size 47609
diff --git a/mods/Redone Collection_backup/gamedata/sounds/mlr/freedom/val_free_meg_music_1.ogg b/mods/Redone Collection_backup/gamedata/sounds/mlr/freedom/val_free_meg_music_1.ogg
deleted file mode 100644
index 7e410016..00000000
--- a/mods/Redone Collection_backup/gamedata/sounds/mlr/freedom/val_free_meg_music_1.ogg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:4f90a3a769781bf097408ec97f0bab658ea799a0c4fc3811acb05fc1d53b6b3f
-size 2504626
diff --git a/mods/Redone Collection_backup/gamedata/sounds/mlr/freedom/val_free_meg_music_2.ogg b/mods/Redone Collection_backup/gamedata/sounds/mlr/freedom/val_free_meg_music_2.ogg
deleted file mode 100644
index c281b6e2..00000000
--- a/mods/Redone Collection_backup/gamedata/sounds/mlr/freedom/val_free_meg_music_2.ogg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:1b24b5e9c5359f24f619dfaceed20fff500d716b4a59bf447ff54cd0b2c26733
-size 2103922
diff --git a/mods/Redone Collection_backup/gamedata/sounds/mlr/freedom/val_free_meg_music_3.ogg b/mods/Redone Collection_backup/gamedata/sounds/mlr/freedom/val_free_meg_music_3.ogg
deleted file mode 100644
index 5bcf0145..00000000
--- a/mods/Redone Collection_backup/gamedata/sounds/mlr/freedom/val_free_meg_music_3.ogg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:0d5f5945ffbfc1133b038361f5b54cffc5f61ff6653d7c99a85df76d38b59829
-size 795735
diff --git a/mods/Redone Collection_backup/gamedata/sounds/mlr/freedom/val_freedom_megafon_1.ogg b/mods/Redone Collection_backup/gamedata/sounds/mlr/freedom/val_freedom_megafon_1.ogg
deleted file mode 100644
index a87eccc7..00000000
--- a/mods/Redone Collection_backup/gamedata/sounds/mlr/freedom/val_freedom_megafon_1.ogg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:9f234e0567e89948ed4262ba534ad304bc2b6fc959a23f7a78e4478cae768a49
-size 169540
diff --git a/mods/Redone Collection_backup/gamedata/sounds/mlr/freedom/val_freedom_megafon_2.ogg b/mods/Redone Collection_backup/gamedata/sounds/mlr/freedom/val_freedom_megafon_2.ogg
deleted file mode 100644
index 6a620d0f..00000000
--- a/mods/Redone Collection_backup/gamedata/sounds/mlr/freedom/val_freedom_megafon_2.ogg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:30a85bb1e6ce366d77dd58d8d4b386e163644fbda480b9352fcf0f7bc19ed48e
-size 81286
diff --git a/mods/Redone Collection_backup/gamedata/sounds/mlr/freedom/val_freedom_megafon_3.ogg b/mods/Redone Collection_backup/gamedata/sounds/mlr/freedom/val_freedom_megafon_3.ogg
deleted file mode 100644
index 40996f77..00000000
--- a/mods/Redone Collection_backup/gamedata/sounds/mlr/freedom/val_freedom_megafon_3.ogg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:9b114890f235e74921286cff107d4f3feb7c88678fee77c1db3a99c3c2b64272
-size 89046
diff --git a/mods/Redone Collection_backup/gamedata/sounds/mlr/freedom/val_freedom_megafon_4.ogg b/mods/Redone Collection_backup/gamedata/sounds/mlr/freedom/val_freedom_megafon_4.ogg
deleted file mode 100644
index 40119b95..00000000
--- a/mods/Redone Collection_backup/gamedata/sounds/mlr/freedom/val_freedom_megafon_4.ogg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:6a09ec4a4b8c70545cbed60d2869d83d3d3a6cc7d82039d88fb64bbb04221460
-size 104772
diff --git a/mods/Redone Collection_backup/gamedata/sounds/mlr/freedom/val_freedom_megafon_5.ogg b/mods/Redone Collection_backup/gamedata/sounds/mlr/freedom/val_freedom_megafon_5.ogg
deleted file mode 100644
index 7b9cbcac..00000000
--- a/mods/Redone Collection_backup/gamedata/sounds/mlr/freedom/val_freedom_megafon_5.ogg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:46495dcc8e8774fe197814a33996326753e8e7a152b2028bcb6cf41ff5fd79ef
-size 89905
diff --git a/mods/Redone Collection_backup/gamedata/sounds/mlr/freedom/val_freedom_megafon_6.ogg b/mods/Redone Collection_backup/gamedata/sounds/mlr/freedom/val_freedom_megafon_6.ogg
deleted file mode 100644
index 94cbf7f7..00000000
--- a/mods/Redone Collection_backup/gamedata/sounds/mlr/freedom/val_freedom_megafon_6.ogg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:71055a6f6a8230020f171841dbe32f7542b29fa27feffb447349e23877c6d212
-size 59504
diff --git a/mods/Redone Collection_backup/gamedata/sounds/mlr/freedom/val_freedom_megafon_7.ogg b/mods/Redone Collection_backup/gamedata/sounds/mlr/freedom/val_freedom_megafon_7.ogg
deleted file mode 100644
index 6c755438..00000000
--- a/mods/Redone Collection_backup/gamedata/sounds/mlr/freedom/val_freedom_megafon_7.ogg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:b8c57162011b097266e19c8470126ba6bd43da327bc3086e1d97f75cf8576260
-size 66500
diff --git a/mods/Redone Collection_backup/gamedata/sounds/mlr/marsh/marsh_radio_1.ogg b/mods/Redone Collection_backup/gamedata/sounds/mlr/marsh/marsh_radio_1.ogg
deleted file mode 100644
index 34e63085..00000000
--- a/mods/Redone Collection_backup/gamedata/sounds/mlr/marsh/marsh_radio_1.ogg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:9a96e649328c188e6881674552e95dc593a6665ea756140c3565eb80d0dc4e65
-size 16015528
diff --git a/mods/Redone Collection_backup/gamedata/sounds/mlr/marsh/marsh_radio_2.ogg b/mods/Redone Collection_backup/gamedata/sounds/mlr/marsh/marsh_radio_2.ogg
deleted file mode 100644
index 48ca9e0f..00000000
--- a/mods/Redone Collection_backup/gamedata/sounds/mlr/marsh/marsh_radio_2.ogg
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:3fb3fdd6531457f99fdf7fd5b3b2abdfb21d1a6a823dee0110d42752f3ea3791
-size 668420
diff --git a/mods/Redone Collection_backup/gamedata/textures/crete/crete_beton_ch_06.dds b/mods/Redone Collection_backup/gamedata/textures/crete/crete_beton_ch_06.dds
deleted file mode 100644
index 8e14a1ac..00000000
--- a/mods/Redone Collection_backup/gamedata/textures/crete/crete_beton_ch_06.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:cb676c6c877c6ac131465c3af2b502739fdc9b6663c40ccc4e3c141f7a370498
-size 11184996
diff --git a/mods/Redone Collection_backup/gamedata/textures/crete/crete_house_wall_1.dds b/mods/Redone Collection_backup/gamedata/textures/crete/crete_house_wall_1.dds
deleted file mode 100644
index 86cd6256..00000000
--- a/mods/Redone Collection_backup/gamedata/textures/crete/crete_house_wall_1.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:81f23fd34089039e18c521abaa78dae2f82d8666051c933a0d113e81d2589195
-size 44739428
diff --git a/mods/Redone Collection_backup/gamedata/textures/crete/crete_stena_04f.dds b/mods/Redone Collection_backup/gamedata/textures/crete/crete_stena_04f.dds
deleted file mode 100644
index c0e8bfd9..00000000
--- a/mods/Redone Collection_backup/gamedata/textures/crete/crete_stena_04f.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:faa075fd0facae878d65120227f938667038232ca33b6ce7b2036c0dc21e318d
-size 44739428
diff --git a/mods/Redone Collection_backup/gamedata/textures/crete/crete_stena_ch_08.dds b/mods/Redone Collection_backup/gamedata/textures/crete/crete_stena_ch_08.dds
deleted file mode 100644
index 7dbfb7ce..00000000
--- a/mods/Redone Collection_backup/gamedata/textures/crete/crete_stena_ch_08.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:dfd4d92fbed0410db242b5289e1bc4fba882b3243b277fd88ccd1776f2c644f4
-size 89478692
diff --git a/mods/Redone Collection_backup/gamedata/textures/crete/crete_stena_ch_11_1.dds b/mods/Redone Collection_backup/gamedata/textures/crete/crete_stena_ch_11_1.dds
deleted file mode 100644
index 3120fc28..00000000
--- a/mods/Redone Collection_backup/gamedata/textures/crete/crete_stena_ch_11_1.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:5e58b9c111eab3f19c2232856b258dfedf4a20c4a948eb698f257d80b2dc03d5
-size 11184996
diff --git a/mods/Redone Collection_backup/gamedata/textures/crete/crete_stena_ch_11_2.dds b/mods/Redone Collection_backup/gamedata/textures/crete/crete_stena_ch_11_2.dds
deleted file mode 100644
index 985064cf..00000000
--- a/mods/Redone Collection_backup/gamedata/textures/crete/crete_stena_ch_11_2.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:cb272cf048e4d69d10e79a75b05bcf84c05857c6d480f2f9af26dfaa0c5cd885
-size 5592580
diff --git a/mods/Redone Collection_backup/gamedata/textures/crete/crete_stena_ch_12.dds b/mods/Redone Collection_backup/gamedata/textures/crete/crete_stena_ch_12.dds
deleted file mode 100644
index 2df09650..00000000
--- a/mods/Redone Collection_backup/gamedata/textures/crete/crete_stena_ch_12.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:c7db0c915c81997cb7c58672dd5b70588c2c3d16bb707c2743ab67f6cbdb38a5
-size 5592580
diff --git a/mods/Redone Collection_backup/gamedata/textures/crete/crete_stena_ch_13.dds b/mods/Redone Collection_backup/gamedata/textures/crete/crete_stena_ch_13.dds
deleted file mode 100644
index 33c6f91a..00000000
--- a/mods/Redone Collection_backup/gamedata/textures/crete/crete_stena_ch_13.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:e2f3c0ea1e0b41a800a2756e28118ac6820de43fa0d12210f3b7140649b3201f
-size 89478692
diff --git a/mods/Redone Collection_backup/gamedata/textures/crete/crete_stena_ch_15.dds b/mods/Redone Collection_backup/gamedata/textures/crete/crete_stena_ch_15.dds
deleted file mode 100644
index dac3b806..00000000
--- a/mods/Redone Collection_backup/gamedata/textures/crete/crete_stena_ch_15.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:ce086bf2c6de4f342da5ebe318cfb9725f418fe24d821c477b795676dad1d290
-size 5592612
diff --git a/mods/Redone Collection_backup/gamedata/textures/ston/ston_stena_ch_13.dds b/mods/Redone Collection_backup/gamedata/textures/ston/ston_stena_ch_13.dds
deleted file mode 100644
index 33c6f91a..00000000
--- a/mods/Redone Collection_backup/gamedata/textures/ston/ston_stena_ch_13.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:e2f3c0ea1e0b41a800a2756e28118ac6820de43fa0d12210f3b7140649b3201f
-size 89478692
diff --git a/mods/Redone Collection_backup/gamedata/textures/ston/ston_stena_ch_13.thm b/mods/Redone Collection_backup/gamedata/textures/ston/ston_stena_ch_13.thm
deleted file mode 100644
index 81114701..00000000
--- a/mods/Redone Collection_backup/gamedata/textures/ston/ston_stena_ch_13.thm
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:29a5608f1c72c4193bd3b1e95170670522d9e2308a58168457a538e6233d72a3
-size 193
diff --git a/mods/Redone Collection_backup/gamedata/textures/ston/ston_stena_ch_13_bump#.dds b/mods/Redone Collection_backup/gamedata/textures/ston/ston_stena_ch_13_bump#.dds
deleted file mode 100644
index ef262a4b..00000000
--- a/mods/Redone Collection_backup/gamedata/textures/ston/ston_stena_ch_13_bump#.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:ccbc9bde3bc23e0f9329e6b584fadef691aa2b52bc9c255821896257d92f0a6b
-size 1398288
diff --git a/mods/Redone Collection_backup/gamedata/textures/ston/ston_stena_ch_13_bump.dds b/mods/Redone Collection_backup/gamedata/textures/ston/ston_stena_ch_13_bump.dds
deleted file mode 100644
index 83b37f91..00000000
--- a/mods/Redone Collection_backup/gamedata/textures/ston/ston_stena_ch_13_bump.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:bd5b6bd7d4502776550a87415d28b73d3004e8a8cd9c99677ba39ab423563f97
-size 5592592
diff --git a/mods/Redone Collection_backup/gamedata/textures/ston/ston_stena_ch_13_bump.thm b/mods/Redone Collection_backup/gamedata/textures/ston/ston_stena_ch_13_bump.thm
deleted file mode 100644
index ee41583c..00000000
--- a/mods/Redone Collection_backup/gamedata/textures/ston/ston_stena_ch_13_bump.thm
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:44430bffbd9ecfeb04f034b63502e382f3b4dd8d158d710aa425de56739fac78
-size 138
diff --git a/mods/Redone Collection_backup/gamedata/textures/ston/ston_stena_ch_15.dds b/mods/Redone Collection_backup/gamedata/textures/ston/ston_stena_ch_15.dds
deleted file mode 100644
index 16a7a87e..00000000
--- a/mods/Redone Collection_backup/gamedata/textures/ston/ston_stena_ch_15.dds
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:30ff1dd45c3239c1e5839431efb776e960325e30f9608b456dfdf91a2aada472
-size 22369828
diff --git a/mods/Redone Collection_backup/meta.ini b/mods/Redone Collection_backup/meta.ini
deleted file mode 100644
index b1e2b760..00000000
--- a/mods/Redone Collection_backup/meta.ini
+++ /dev/null
@@ -1,40 +0,0 @@
-[General]
-gameName=stalkeranomaly
-modid=0
-version=d2024.3.30.0
-newestVersion=
-category="15,"
-nexusFileStatus=1
-installationFile=RedoneCollection_v2.2.2.zip
-repository=Nexus
-ignoredVersion=
-comments=
-notes=
-nexusDescription=
-url=
-hasCustomURL=true
-lastNexusQuery=
-lastNexusUpdate=
-nexusLastModified=2024-02-29T06:46:08Z
-nexusCategory=0
-converted=false
-validated=false
-color=@Variant(\0\0\0\x43\0\xff\xff\0\0\0\0\0\0\0\0)
-tracked=0
-
-[Plugins]
-BAIN%20Installer\option0=00 MAIN INSTALL Redone Collection 2.2.2
-BAIN%20Installer\option1=02 SELECT ONE Agroprom Underground V2 [ NO ENDLESS SPAWN ]
-BAIN%20Installer\option2=03 Optional Endless Night Mutant Addon [ RECOMMENDED ]
-BAIN%20Installer\option3=04 Optional Add Barman Army Wearhouse
-BAIN%20Installer\option4=05 Optional Add Traders Darkscape
-BAIN%20Installer\option5=06 Optional Add Barman Dark Valley
-BAIN%20Installer\option6=07 Optional Cordon Logic Addon
-BAIN%20Installer\option7=08 Optional Cordon Tunnel Anomalies
-BAIN%20Installer\option8=09 Optional Psy-Field Ambient Addon
-BAIN%20Installer\option9=10 Redone Rank Progression Addon
-
-[installedFiles]
-1\modid=0
-size=1
-1\fileid=0
diff --git a/mods/Save Profiles/gamedata/configs/text/eng/ui_st_mm_save_profiles.xml b/mods/Save Profiles/gamedata/configs/text/eng/ui_st_mm_save_profiles.xml
new file mode 100644
index 00000000..25dd1848
--- /dev/null
+++ b/mods/Save Profiles/gamedata/configs/text/eng/ui_st_mm_save_profiles.xml
@@ -0,0 +1,11 @@
+
+
+
+
+
+ Profile %s
+
+
+
+
+
diff --git a/mods/Save Profiles/gamedata/configs/text/rus/ui_st_mm_save_profiles.xml b/mods/Save Profiles/gamedata/configs/text/rus/ui_st_mm_save_profiles.xml
new file mode 100644
index 00000000..6509b3b7
--- /dev/null
+++ b/mods/Save Profiles/gamedata/configs/text/rus/ui_st_mm_save_profiles.xml
@@ -0,0 +1,11 @@
+
+
+
+
+
+ %s
+
+
+
+
+
diff --git a/mods/Save Profiles/gamedata/configs/ui/ui_mm_save_profiles.xml b/mods/Save Profiles/gamedata/configs/ui/ui_mm_save_profiles.xml
new file mode 100644
index 00000000..d9407e14
--- /dev/null
+++ b/mods/Save Profiles/gamedata/configs/ui/ui_mm_save_profiles.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/mods/Save Profiles/gamedata/configs/ui/ui_mm_save_profiles_16.xml b/mods/Save Profiles/gamedata/configs/ui/ui_mm_save_profiles_16.xml
new file mode 100644
index 00000000..cbb12dd2
--- /dev/null
+++ b/mods/Save Profiles/gamedata/configs/ui/ui_mm_save_profiles_16.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/mods/Save Profiles/gamedata/scripts/ui_load_dialog.script b/mods/Save Profiles/gamedata/scripts/ui_load_dialog.script
new file mode 100644
index 00000000..c51390a0
--- /dev/null
+++ b/mods/Save Profiles/gamedata/scripts/ui_load_dialog.script
@@ -0,0 +1,567 @@
+--[[
+
+ Modified by Tronex
+ 2020/3/25
+ Ability to move between savegames by arrow keys or W/S
+
+ Modified by Orleon
+ 2023/5/11
+ Added profile system
+--]]
+
+
+saved_game_extension = ".scop"
+profile_prefix = "profile_"
+
+local config = axr_main.config
+if not (config:section_exist("save_profiles")) then
+ config:w_value("save_profiles","current_profile",1)
+ config:w_value("save_profiles","max_profiles",5)
+ config:save()
+end
+
+function get_current_profile()
+ return config:r_value("save_profiles","current_profile",2)
+end
+
+function get_max_profiles()
+ return config:r_value("save_profiles","max_profiles",2)
+end
+
+function set_profile(num)
+ config:w_value("save_profiles","current_profile",num)
+ config:save()
+end
+
+function get_profile_name()
+ return profile_prefix .. get_current_profile()
+end
+
+function hide_profile_prefix(fname)
+ local s,e = fname:find(get_profile_name().." ")
+ fname = fname:sub(e+1)
+ return fname
+end
+
+function get_full_save_name(fname)
+ return get_profile_name() .. " " .. fname
+end
+
+function rename_save_files(old_fname, new_fname)
+ if (file_exist(old_fname..saved_game_extension)) then
+ local f = getFS()
+ local first = f:update_path('$game_saves$', old_fname)
+ local second = f:update_path('$game_saves$', new_fname)
+ f:file_rename(first..saved_game_extension, second..saved_game_extension, true)
+
+ if (file_exist(old_fname..".scoc")) then
+ f:file_rename(first..".scoc", second..".scoc", true)
+ end
+ if (file_exist(old_fname..".dds")) then
+ f:file_rename(first..".dds", second..".dds", true)
+ end
+ end
+end
+
+function rename_save(fname, comp_fname)
+ local new_fname = comp_fname or get_profile_name() .. " " .. fname
+
+ if (file_exist(new_fname..saved_game_extension)) then
+ delete_save_game(new_fname)
+ end
+
+ rename_save_files(fname, new_fname)
+end
+
+function complete_rename_save(fname)
+ local t = str_explode(fname, profile_prefix)
+ local str = ""
+ for i=1, #t do
+ str = str .. t[i]
+ end
+ if (str == "") then
+ str = "unknown_save"
+ end
+ str = get_profile_name() .. " " .. str
+ rename_save(fname, str)
+end
+
+function check_save_files()
+ local f = getFS()
+ local flist = f:file_list_open_ex("$game_saves$",bit_or(FS.FS_ListFiles,FS.FS_RootOnly),"*"..saved_game_extension)
+ local f_cnt = flist:Size()
+ local start_pos = string.len(profile_prefix)
+ local curr_profile = get_profile_name()
+ local max_num = get_max_profiles()
+
+ for it=0, f_cnt-1 do
+ local file = flist:GetAt(it)
+ local file_name = string.sub(file:NameFull(), 0, (string.len(file:NameFull()) - string.len(saved_game_extension)))
+
+ if (not file_name:find(profile_prefix)) then
+ rename_save(file_name)
+ else
+ local s = file_name:find(profile_prefix)
+ local _,_,num1,str1 = file_name:find("(%d+)(%s)")
+ local _,_,str2 = file_name:find(profile_prefix.."(%D+)")
+ if (s and s > 1)
+ or (file_name:find(profile_prefix, start_pos))
+ or (file_name == profile_prefix)
+ or (file_name == curr_profile)
+ or (not str1)
+ or (str2)
+ or (num1 and tonumber(num1) > max_num)
+ then
+ complete_rename_save(file_name)
+ end
+ end
+ end
+end
+
+function file_exist(fname)
+ local f = getFS();
+ local flist = f:file_list_open_ex("$game_saves$",bit_or(FS.FS_ListFiles,FS.FS_RootOnly) , fname)
+ local f_cnt = flist:Size()
+
+ if f_cnt > 0 then
+ return true
+ else
+ return false
+ end
+end
+
+function delete_save_game(filename)
+
+ local save_file = filename .. saved_game_extension
+ local dds_file = filename .. ".dds"
+
+ local f = getFS()
+
+ f:file_delete("$game_saves$",save_file)
+
+ if file_exist(dds_file) then
+ f:file_delete("$game_saves$", dds_file)
+ end
+
+ if (file_exist(filename..".scoc")) then
+ f:file_delete("$game_saves$",filename..".scoc")
+ end
+end
+
+function AddTimeDigit(str, dig)
+ if (dig > 9) then
+ str = str .. dig
+ else
+ str = str .. "0" .. dig
+ end
+
+ return str
+
+end
+
+function file_data(fname)
+ local f = getFS();
+ local flist = f:file_list_open_ex("$game_saves$",bit_or(FS.FS_ListFiles,FS.FS_RootOnly) , fname .. saved_game_extension)
+ local f_cnt = flist:Size()
+
+ if f_cnt > 0 then
+ local file = flist:GetAt(0)
+ local sg = CSavedGameWrapper(fname)
+
+ local y,m,d,h,min,sec,ms = 0,0,0,0,0,0,0
+ y,m,d,h,min,sec,ms = sg:game_time():get(y,m,d,h,min,sec,ms)
+
+
+ local date_time = ""
+
+ date_time = AddTimeDigit(date_time, h)
+ date_time = date_time .. ":"
+ date_time = AddTimeDigit(date_time, min)
+ date_time = date_time .. " "
+ date_time = AddTimeDigit(date_time, m)
+ date_time = date_time .. "/"
+ date_time = AddTimeDigit(date_time, d)
+ date_time = date_time .. "/"
+
+ date_time = date_time .. y
+
+
+ --string.format("[%d/%d/%d %d]",m,d,h,min,y)
+ local health = string.format("\\n%s %d%s", game.translate_string("st_ui_health_sensor"),sg:actor_health()*100,"%")
+
+ return game.translate_string("st_level") .. ": " .. game.translate_string(sg:level_name()) .. "\\n" .. game.translate_string("ui_inv_time")..": " .. date_time .. health
+ else
+ return "no file data"
+ end
+end
+
+
+------------------------------------------------------------
+class "load_item" (CUIListBoxItem)
+
+function load_item:__init(height) super(height)
+ self.file_name = "filename"
+
+ self:SetTextColor(GetARGB(255, 170, 170, 170))
+
+ self.fn = self:GetTextItem()
+ self.fn:SetFont(GetFontLetterica18Russian())
+ self.fn:SetEllipsis(true)
+end
+
+function load_item:__finalize()
+end
+
+
+------------------------------------------------------------
+class "UILoadDialog" (CUIScriptWnd)
+
+function UILoadDialog:__init() super()
+ self:InitControls()
+ self:InitCallBacks()
+end
+
+function UILoadDialog:__finalize()
+end
+
+function UILoadDialog:FillList()
+ check_save_files()
+ self.list_box:RemoveAll()
+ local flist = getFS():file_list_open_ex("$game_saves$",bit_or(FS.FS_ListFiles,FS.FS_RootOnly),"*"..saved_game_extension)
+ local f_cnt = flist:Size()
+ local profile_name = get_profile_name()
+
+ flist:Sort(FS.FS_sort_by_modif_down)
+
+ for it=0, f_cnt-1 do
+ local file = flist:GetAt(it)
+ local file_name = string.sub(file:NameFull(), 0, (string.len(file:NameFull()) - string.len(saved_game_extension)))
+
+ if (file_name:find(profile_name)) then
+ local date_time = "[" .. file:ModifDigitOnly() .. "]"
+ self:AddItemToList(file_name, date_time)
+ end
+ end
+end
+
+function UILoadDialog:InitControls()
+ self:SetWndRect (Frect():set(0,0,1024,768))
+
+ local xml = CScriptXmlInit()
+ local ctrl
+ xml:ParseFile ("ui_mm_load_dlg.xml")
+
+ xml:InitStatic ("background",self)
+
+ ctrl = CUIWindow()
+ ctrl:SetAutoDelete(true)
+ xml:InitWindow ("file_item:main",0,ctrl)
+
+ self.file_item_main_sz = vector2():set(ctrl:GetWidth(),ctrl:GetHeight())
+
+ xml:InitWindow ("file_item:fn",0,ctrl)
+ self.file_item_fn_sz = vector2():set(ctrl:GetWidth(),ctrl:GetHeight())
+
+ xml:InitWindow ("file_item:fd",0,ctrl)
+ self.file_item_fd_sz = vector2():set(ctrl:GetWidth(),ctrl:GetHeight())
+
+ self.form = xml:InitStatic("form",self)
+
+ xml:InitStatic ("form:caption",self.form)
+
+ self.picture = xml:InitStatic("form:picture",self.form)
+
+-- xml:InitStatic ("form:file_info",self.form)
+
+ self.file_caption = xml:InitTextWnd("form:file_caption",self.form)
+ self.file_data = xml:InitTextWnd("form:file_data",self.form)
+
+ xml:InitFrame ("form:list_frame",self.form)
+
+ self.list_box = xml:InitListBox("form:list",self.form)
+
+ self.list_box:ShowSelectedItem (true)
+ self:Register (self.list_box, "list_window")
+
+ ctrl = xml:Init3tButton("form:btn_load", self.form)
+ self:Register (ctrl, "button_load")
+
+ ctrl = xml:Init3tButton ("form:btn_delete", self.form)
+ self:Register (ctrl, "button_del")
+
+ ctrl = xml:Init3tButton ("form:btn_cancel", self.form)
+ self:Register (ctrl, "button_back")
+
+ self.message_box = CUIMessageBoxEx()
+ self:Register (self.message_box,"message_box")
+
+ local prof_xml = CScriptXmlInit()
+ prof_xml:ParseFile ("ui_mm_save_profiles.xml")
+ self.profile_list = prof_xml:InitComboBox("profile_list", self.form)
+ self.profile_list:SetAutoDelete(true)
+ self:Register(self.profile_list, "profile_list")
+
+ for i=1, get_max_profiles() do
+ local str = strformat(game.translate_string("ui_st_mm_save_profile"), i)
+ self.profile_list:AddItem(str, i)
+ end
+ self.current_profile = get_current_profile()
+ self.profile_list:enable_id(self.current_profile)
+ self.profile_list:SetText(strformat(game.translate_string("ui_st_mm_save_profile"), self.current_profile))
+end
+
+function UILoadDialog:InitCallBacks()
+ self:AddCallback("button_load", ui_events.BUTTON_CLICKED, self.OnButton_load_clicked, self)
+ self:AddCallback("button_back", ui_events.BUTTON_CLICKED, self.OnButton_back_clicked, self)
+ self:AddCallback("button_del", ui_events.BUTTON_CLICKED, self.OnButton_del_clicked, self)
+ self:AddCallback("message_box", ui_events.MESSAGE_BOX_YES_CLICKED, self.OnMsgYes, self)
+ self:AddCallback("message_box", ui_events.MESSAGE_BOX_OK_CLICKED, self.OnMsgYes, self)
+
+ self:AddCallback("list_window", ui_events.LIST_ITEM_CLICKED, self.OnListItemClicked, self)
+ self:AddCallback("list_window", ui_events.WINDOW_LBUTTON_DB_CLICK, self.OnListItemDbClicked, self)
+ self:AddCallback("profile_list", ui_events.LIST_ITEM_SELECT, self.On_ProfileSelect, self)
+end
+
+function UILoadDialog:OnListItemClicked()
+ if self.list_box:GetSize()==0 then return end
+
+ local item = self.list_box:GetSelectedItem()
+
+ if item == nil then
+ self.file_caption:SetText ("")
+ self.file_data:SetText ("")
+
+ local r = self.picture:GetTextureRect()
+ self.picture:InitTexture ("ui\\ui_noise")
+ self.picture:SetTextureRect(Frect():set(r.x1,r.y1,r.x2,r.y2))
+
+ return
+ end
+ local item_text = item.fn:GetText()
+ local full_item_text = get_full_save_name(item_text)
+ self.file_caption:SetText (item_text)
+ self.file_caption:SetEllipsis(true)
+ self.file_data:SetText (file_data(full_item_text))
+
+ if file_exist(full_item_text .. saved_game_extension) ~= true then
+ self.list_box:RemoveItem(item)
+ return
+ end
+
+ local r = self.picture:GetTextureRect()
+ if file_exist(full_item_text .. ".dds") then
+ self.picture:InitTexture(full_item_text)
+ else
+ self.picture:InitTexture("ui\\ui_noise")
+ end
+ self.picture:SetTextureRect(Frect():set(r.x1,r.y1,r.x2,r.y2))
+
+ if (__show_scoc_debug) then
+ __show_scoc_debug = nil
+ local fname = full_item_text .. ".scoc"
+ if not file_exist(fname) then
+ return
+ end
+
+ local path = getFS():update_path('$game_saves$', '')
+ local f = io.open(path..fname,"rb")
+ if not (f) then
+ return
+ end
+ local data = f:read("*all")
+ f:close()
+ if (data) then
+ local m_data = marshal.decode(data)
+ local output = io.open(path..full_item_text..".lua","wb")
+ if (output) then
+ output:write(utils_data.print_table(m_data,nil,true) or "")
+ output:close()
+ local msg = strformat("%s.scoc has be converted to *.lua",full_item_text)
+ ui_dyn_msg_box.msg_box_ui("message_box_ok",true,msg)
+ end
+ end
+ end
+end
+
+function UILoadDialog:OnListItemDbClicked()
+ self:OnButton_load_clicked()
+end
+
+function UILoadDialog:OnMsgYes()
+ local index = self.list_box:GetSelectedIndex()
+
+ if index == -1 then return end
+
+ if self.msgbox_id == 1 then
+ local item = self.list_box:GetItemByIndex(index)
+
+ if not (item) then
+ return
+ end
+
+ local fname = get_full_save_name(item.fn:GetText())
+
+ delete_save_game (fname)
+
+ self.list_box:RemoveItem(item)
+
+ self:OnListItemClicked()
+ elseif self.msgbox_id == 2 then
+ self:load_game_internal()
+ end
+
+ self.msgbox_id = 0
+end
+
+function UILoadDialog:load_game_internal()
+ if self.list_box:GetSize()==0 then return end
+
+ local index = self.list_box:GetSelectedIndex()
+
+ if index == -1 then return end
+
+ local item = self.list_box:GetItemByIndex(index)
+
+ local fname = get_full_save_name(item.fn:GetText())
+
+ if (alife() == nil) then
+ exec_console_cmd("disconnect")
+ exec_console_cmd("start server(" .. fname .. "/single/alife/load) client(localhost)")
+ else
+ exec_console_cmd("load " .. fname)
+ end
+end
+
+function UILoadDialog:OnButton_load_clicked()
+ if self.list_box:GetSize()==0 then
+ return
+ end
+
+ local item = self.list_box:GetSelectedItem()
+ if item == nil then
+ return
+ end
+
+ local fname = get_full_save_name(item.fn:GetText())
+
+ if ( not valid_saved_game(fname) ) then
+ self.msgbox_id = 0
+ self.message_box:InitMessageBox ("message_box_invalid_saved_game")
+ self.message_box:ShowDialog(true)
+ return
+ end
+
+ if (alife() == nil) then
+ self:load_game_internal ()
+ return
+ end
+
+ if ( (db.actor ~= nil) and (db.actor:alive() == false) ) then
+ self:load_game_internal ()
+ return
+ end
+
+ self.msgbox_id = 2
+ self.message_box:InitMessageBox ("message_box_confirm_load_save")
+ self.message_box:ShowDialog(true)
+end
+
+function UILoadDialog:OnButton_back_clicked()
+ self.owner:ShowDialog(true)
+ self:HideDialog()
+ self.owner:Show (true)
+end
+
+function UILoadDialog:OnButton_del_clicked()
+ if self.list_box:GetSize()==0 then return end
+ local index = self.list_box:GetSelectedIndex()
+
+ if index == -1 then return end
+
+ self.msgbox_id = 1
+
+ self.message_box:InitMessageBox("message_box_delete_file_name")
+ self.message_box:ShowDialog(true)
+end
+
+function UILoadDialog:OnKeyboard(dik, keyboard_action) --virtual function
+ CUIScriptWnd.OnKeyboard(self,dik,keyboard_action)
+ if (DEV_DEBUG) then
+ if (keyboard_action == ui_events.WINDOW_KEY_PRESSED and dik == DIK_keys.DIK_LCONTROL) then
+ __show_scoc_debug = true
+ elseif (keyboard_action == ui_events.WINDOW_KEY_RELEASED and dik == DIK_keys.DIK_LCONTROL) then
+ __show_scoc_debug = nil
+ end
+ end
+ local bind = dik_to_bind(dik)
+ if bind == key_bindings.kQUIT then
+ self:OnButton_back_clicked()
+ else
+ if (keyboard_action == ui_events.WINDOW_KEY_PRESSED) then
+ if (dik == DIK_keys.DIK_RETURN) then
+ self:OnButton_load_clicked()
+ elseif (dik == DIK_keys.DIK_DELETE) then
+ self:OnButton_del_clicked()
+ elseif (dik == DIK_keys.DIK_W) or (dik == DIK_keys.DIK_UP) then
+ self:SelectNextItem(false)
+ elseif (dik == DIK_keys.DIK_S) or (dik == DIK_keys.DIK_DOWN) then
+ self:SelectNextItem(true)
+ end
+ end
+ end
+ return true
+end
+
+function UILoadDialog:AddItemToList(file_name, date_time)
+ file_name = hide_profile_prefix(file_name)
+
+ local _itm = load_item(self.file_item_main_sz.y)
+
+ _itm:SetWndSize (self.file_item_main_sz)
+
+ _itm.fn:SetWndPos (vector2():set(0,0))
+ _itm.fn:SetWndSize (self.file_item_fn_sz)
+ _itm.fn:SetText (file_name)
+
+ _itm.fage = _itm:AddTextField(date_time, self.file_item_fd_sz.x)
+ _itm.fage:SetFont (GetFontLetterica16Russian())
+ _itm.fage:SetWndPos (vector2():set(self.file_item_fn_sz.x+4, 0))
+ _itm.fage:SetWndSize(self.file_item_fd_sz)
+
+ self.list_box:AddExistingItem(_itm)
+end
+
+function UILoadDialog:SelectNextItem(state)
+ local tot_idx = self.list_box:GetSize()
+ if (tot_idx < 1) then
+ return
+ end
+
+ local idx = self.list_box:GetSelectedIndex() or -1
+ local next_idx = state and idx + 1 or idx - 1
+ if next_idx > tot_idx then
+ next_idx = 0
+ elseif next_idx < 0 then
+ next_idx = tot_idx - 1
+ end
+
+ self.list_box:SetSelectedIndex(next_idx)
+ self:OnListItemClicked()
+end
+
+function UILoadDialog:On_ProfileSelect()
+ local id = self.profile_list:CurrentID()
+ if (self.current_profile == id) then
+ return
+ end
+
+ self.file_caption:SetText("")
+ self.file_data:SetText("")
+ local r = self.picture:GetTextureRect()
+ self.picture:InitTexture("ui\\ui_noise")
+ self.picture:SetTextureRect(Frect():set(r.x1,r.y1,r.x2,r.y2))
+
+ set_profile(id)
+ self.current_profile = id
+ self:FillList()
+end
\ No newline at end of file
diff --git a/mods/Save Profiles/gamedata/scripts/ui_save_dialog.script b/mods/Save Profiles/gamedata/scripts/ui_save_dialog.script
new file mode 100644
index 00000000..1283acc0
--- /dev/null
+++ b/mods/Save Profiles/gamedata/scripts/ui_save_dialog.script
@@ -0,0 +1,273 @@
+--[[
+ File: UI_SAVE_DIALOG.SCRIPT
+ Description: Save Dialog for STALKER
+ Created: 27.9.2004
+ Author: Serhiy Vynnychenko (narrator@gsc-game.kiev.ua)
+ Copyright: 2004 GSC Game World
+ Version: 1.0
+ Modified: Serhiy Pryshchepa (peacemaker@gsc-game.kiev.ua)
+
+ Modified by Orleon
+ 2023/5/11
+ Added profile system
+--]]
+
+local saved_game_extension = ui_load_dialog.saved_game_extension
+
+local get_profile_name = ui_load_dialog.get_profile_name
+local hide_profile_prefix = ui_load_dialog.hide_profile_prefix
+local get_full_save_name = ui_load_dialog.get_full_save_name
+local check_save_files = ui_load_dialog.check_save_files
+
+
+----------------------------------------------------------------------
+class "save_item" (CUIListBoxItem)
+
+function save_item:__init(height) super(height)
+ self:SetTextColor (GetARGB(255, 170, 170, 170))
+ self.fn = self:GetTextItem()
+ self.fn:SetFont (GetFontLetterica18Russian())
+ self.fn:SetEllipsis (true)
+end
+
+
+----------------------------------------------------------------------
+class "UISaveDialog" (CUIScriptWnd)
+
+function UISaveDialog:__init() super()
+ self:InitControls ()
+ self:InitCallBacks ()
+ self:FillList ()
+end
+
+function UISaveDialog:__finalize()
+end
+
+function UISaveDialog:FillList()
+ check_save_files()
+ self.list_box:RemoveAll()
+ local flist = getFS():file_list_open_ex("$game_saves$",FS.FS_ListFiles,"*"..saved_game_extension)
+ local f_cnt = flist:Size()
+ local profile_name = get_profile_name()
+
+ flist:Sort(FS.FS_sort_by_modif_down)
+
+ for it=0, f_cnt-1 do
+ local file = flist:GetAt(it)
+ local file_name = string.sub(file:NameFull(), 0, (string.len(file:NameFull()) - string.len(saved_game_extension)))
+
+ if (file_name:find(profile_name)) then
+ local date_time = "[" .. file:ModifDigitOnly() .. "]"
+ self:AddItemToList(file_name, date_time)
+ end
+ end
+end
+
+function UISaveDialog:InitControls()
+ self:SetWndRect(Frect():set(0,0,1024,768))
+
+ self.list_file_font = GetFontMedium()
+ self.list_date_font = GetFontMedium()
+
+ local xml = CScriptXmlInit()
+ xml:ParseFile("ui_mm_save_dlg.xml")
+
+ local ctrl
+
+ xml:InitWindow ("background", 0, self)
+
+ ctrl = CUIWindow()
+ ctrl:SetAutoDelete(true)
+ xml:InitWindow ("file_item:main", 0, ctrl)
+
+ self.file_item_main_sz = vector2():set(ctrl:GetWidth(),ctrl:GetHeight())
+
+ xml:InitWindow ("file_item:fn",0,ctrl)
+ self.file_item_fn_sz = vector2():set(ctrl:GetWidth(),ctrl:GetHeight())
+
+ xml:InitWindow ("file_item:fd",0,ctrl)
+ self.file_item_fd_sz = vector2():set(ctrl:GetWidth(),ctrl:GetHeight())
+
+
+ self.form = xml:InitStatic ("form", self)
+
+ xml:InitTextWnd ("form:caption", self.form)
+
+ self.editbox = xml:InitEditBox("form:edit", self.form)
+ self:Register (self.editbox, "edit_filename")
+
+ xml:InitFrame ("form:list_frame", self.form)
+
+ self.list_box = xml:InitListBox ("form:list", self.form)
+ self.list_box:ShowSelectedItem (true)
+ self:Register (self.list_box, "list_window")
+
+ ctrl = xml:Init3tButton ("form:btn_save", self.form)
+ self:Register (ctrl, "button_ok")
+
+ ctrl = xml:Init3tButton ("form:btn_delete", self.form)
+ self:Register (ctrl, "button_del")
+
+ ctrl = xml:Init3tButton ("form:btn_cancel", self.form)
+ self:Register (ctrl, "button_cancel")
+
+ self.message_box = CUIMessageBoxEx()
+ self:Register (self.message_box,"message_box")
+
+ self.mbox_mode = 0
+end
+
+function UISaveDialog:InitCallBacks()
+ -- main frame buttons
+ self:AddCallback("button_ok", ui_events.BUTTON_CLICKED, self.OnButton_ok_clicked, self)
+ self:AddCallback("button_cancel", ui_events.BUTTON_CLICKED, self.OnButton_cancel_clicked, self)
+ self:AddCallback("button_del", ui_events.BUTTON_CLICKED, self.OnButton_del_clicked, self)
+
+ self:AddCallback("message_box", ui_events.MESSAGE_BOX_YES_CLICKED, self.OnMsgYes, self)
+ self:AddCallback("list_window", ui_events.LIST_ITEM_CLICKED, self.OnListItemClicked, self)
+end
+
+function UISaveDialog:OnListItemClicked()
+ if self.list_box:GetSize()==0 then return end
+
+ local item = self.list_box:GetSelectedItem()
+
+ if item==nil then return end
+
+ local item_text = item.fn:GetText()
+ self.editbox:SetText (item_text)
+end
+
+function UISaveDialog:OnMsgYes()
+ if self.mbox_mode == 1 then
+ self:SaveFile(self.new_save)
+
+ self.owner:ShowDialog(true)
+ self:HideDialog()
+ self.owner:Show(true)
+
+ elseif self.mbox_mode == 2 then
+ self:delete_selected_file()
+ end
+end
+
+function UISaveDialog:OnButton_del_clicked()
+ if self.list_box:GetSize()==0 then return end
+
+ local item = self.list_box:GetSelectedItem()
+ if item == nil then return end
+
+ self.mbox_mode = 2
+ self.message_box:InitMessageBox("message_box_delete_file_name")
+ self.message_box:ShowDialog(true)
+end
+
+function UISaveDialog:delete_selected_file()
+ if self.list_box:GetSize()==0 then return end
+
+ local index = self.list_box:GetSelectedIndex()
+
+ if index == -1 then return end
+
+ local item = self.list_box:GetItemByIndex(index)
+ local filename = get_full_save_name(item.fn:GetText())
+
+ ui_load_dialog.delete_save_game(filename)
+
+ self.list_box:RemoveItem(item)
+ self:OnListItemClicked()
+end
+
+function UISaveDialog:OnButton_ok_clicked()
+ -- prepare message box
+
+ -- Get file name
+ self.new_save = self.editbox:GetText()
+
+ local illegal = { [[/]],[[%.]],[[\]],[[%%]],[[%?]],[[%*]],[[:]],[[|]],[["]],[[<]],[[>]] }
+
+ for i=1,#illegal do
+ if (string.find(self.new_save,illegal[i])) then
+ self.mbox_mode = 0
+ self.message_box:InitMessageBox("message_box_illegal_file_name")
+ self.message_box:ShowDialog(true)
+ return
+ end
+ end
+
+ -- check for empty name
+ if string.len(self.new_save) == 0 then
+ self.mbox_mode = 0
+ self.message_box:InitMessageBox("message_box_empty_file_name")
+ self.message_box:ShowDialog(true)
+ return
+ end
+
+ -- check for match name
+ local f = getFS()
+ --local flist = f:file_list_open("$game_saves$",FS.FS_ListFiles)
+ local file_struct = f:exist("$game_saves$", get_full_save_name(self.new_save) .. saved_game_extension )
+
+ if file_struct ~= nil then
+ self.mbox_mode = 1
+ self.message_box:InitMessageBox("message_box_file_already_exist")
+ self.message_box:ShowDialog(true)
+
+ --flist:Free()
+ return
+ end
+ --flist:Free()
+ self:SaveFile(self.new_save)
+
+ self.owner:ShowDialog(true)
+ self:HideDialog()
+ self.owner:Show(true)
+end
+
+function UISaveDialog:OnButton_cancel_clicked()
+ self.owner:ShowDialog(true)
+ self:HideDialog()
+ self.owner:Show(true)
+end
+
+function UISaveDialog:OnKeyboard(dik, keyboard_action) --virtual function
+ CUIScriptWnd.OnKeyboard(self,dik,keyboard_action)
+ local bind = dik_to_bind(dik)
+ if bind == key_bindings.kQUIT then
+ self:OnButton_cancel_clicked()
+ else
+ if (keyboard_action == ui_events.WINDOW_KEY_PRESSED) then
+ if (dik == DIK_keys.DIK_RETURN) then
+ self:OnButton_ok_clicked()
+ elseif (dik == DIK_keys.DIK_DELETE) then
+ self:OnButton_del_clicked()
+ end
+ end
+ end
+ return true
+end
+
+function UISaveDialog:AddItemToList(file_name, date_time)
+ file_name = hide_profile_prefix(file_name)
+
+ local _itm = save_item(self.file_item_main_sz.y)
+ _itm:SetWndSize (self.file_item_main_sz)
+
+ _itm.fn:SetWndPos (vector2():set(0,0))
+ _itm.fn:SetWndSize (self.file_item_fn_sz)
+ _itm.fn:SetText (file_name)
+
+ _itm.fage = _itm:AddTextField(date_time, self.file_item_fd_sz.x)
+ _itm.fage:SetFont (GetFontLetterica16Russian())
+ _itm.fage:SetWndPos (vector2():set(self.file_item_fn_sz.x+4, 0))
+
+ self.list_box:AddExistingItem(_itm)
+end
+
+function UISaveDialog:SaveFile(fileName)
+ if nil~= fileName then
+ -- clear excess corpses everytime player saves
+ --release_body_manager.get_release_body_manager():clear(nil,nil,true)
+ exec_console_cmd("save " .. fileName)
+ end
+end
\ No newline at end of file
diff --git a/mods/Save Profiles/meta.ini b/mods/Save Profiles/meta.ini
new file mode 100644
index 00000000..ef4e2ef7
--- /dev/null
+++ b/mods/Save Profiles/meta.ini
@@ -0,0 +1,28 @@
+[General]
+gameName=stalkeranomaly
+modid=0
+version=d2024.4.4.0
+newestVersion=
+category="-1,"
+nexusFileStatus=1
+installationFile=SaveProfiles1.7z
+repository=Nexus
+ignoredVersion=
+comments=
+notes=
+nexusDescription=
+url=
+hasCustomURL=false
+lastNexusQuery=
+lastNexusUpdate=
+nexusLastModified=2024-04-05T02:47:09Z
+nexusCategory=0
+converted=false
+validated=false
+color=@Variant(\0\0\0\x43\0\xff\xff\0\0\0\0\0\0\0\0)
+tracked=0
+
+[installedFiles]
+1\modid=0
+1\fileid=0
+size=1
diff --git a/mods/Weapon Parts Overhaul/gamedata/scripts/zzzz_arti_jamming_repairs.script b/mods/Weapon Parts Overhaul/gamedata/scripts/zzzz_arti_jamming_repairs.script
index 13e23869..e0ab7da1 100644
--- a/mods/Weapon Parts Overhaul/gamedata/scripts/zzzz_arti_jamming_repairs.script
+++ b/mods/Weapon Parts Overhaul/gamedata/scripts/zzzz_arti_jamming_repairs.script
@@ -14,6 +14,7 @@ has_parts = arti_jamming.has_parts
sec_has_parts = arti_jamming.sec_has_parts
is_part = arti_jamming.is_part
print_dbg = arti_jamming.print_dbg
+get_jammed = arti_jamming.get_jammed
print_ws = ui_workshop.print_ws
get_config = a_arti_jamming_mcm.get_config
math_floor = math.floor
@@ -392,7 +393,7 @@ function analyze_weapon(npc, wpn)
action = "clean",
cost = get_service_cost(wpn:section())
}
- elseif npc:object(k) ~= nil and v < 60 then
+ elseif npc and npc:object(k) ~= nil and v < 60 then
to_do[#to_do + 1] = {
part = k,
name = get_part_short_name(k),
@@ -501,8 +502,9 @@ function ui_inventory.UIInventory:repair_parts_toggle()
else
self.repair_parts_bkg:Show(true)
end
-
- local actions = analyze_weapon(mob_trade.GetTalkingNpc(), wpn)
+ local npc = mob_trade.GetTalkingNpc()
+ if not npc then return end
+ local actions = analyze_weapon(npc, wpn)
if is_empty(actions) then return end
self.repair_parts_info = actions
for k,v in pairs(self.repair_parts_info) do
@@ -706,7 +708,7 @@ function ui_item.build_desc_header(obj, sec, str)
local _str = ""
local _str2 = original_build_desc_header(obj, sec, str)
- if get_config("display") and obj and IsWeapon(obj) and not IsAmmo(obj) and arti_jamming.has_parts(obj) then
+ if get_config("display") and obj and IsWeapon(obj) and not IsAmmo(obj) and has_parts(obj) then
local parts = item_parts.get_parts_con(obj, nil, true)
local display_str = ""
for k,v in pairs(parts) do
@@ -972,7 +974,7 @@ function act_fieldstrip(id, part_name)
end
end
item_parts.set_parts_con(id, parts)
- if arti_jamming.get_jammed(id) then
+ if get_jammed(id) then
set_jam_status(id, nil)
end
-- send msg
diff --git a/mods/Weapon Parts Overhaul/meta.ini b/mods/Weapon Parts Overhaul/meta.ini
index 3bee1fbd..f42347c9 100644
--- a/mods/Weapon Parts Overhaul/meta.ini
+++ b/mods/Weapon Parts Overhaul/meta.ini
@@ -1,11 +1,11 @@
[General]
gameName=stalkeranomaly
modid=0
-version=d2024.2.29.0
+version=d2024.4.3.0
newestVersion=
category="10,"
nexusFileStatus=1
-installationFile=anomaly-wpo.2024.02.25.zip
+installationFile=anomaly-wpo.2024.03.24.zip
repository=Nexus
ignoredVersion=
comments=
diff --git a/mods/Zone Customization Project/gamedata/configs/misc/sim_smr_minimal.ltx b/mods/Zone Customization Project/gamedata/configs/misc/sim_smr_minimal.ltx
new file mode 100644
index 00000000..4c0e67fe
--- /dev/null
+++ b/mods/Zone Customization Project/gamedata/configs/misc/sim_smr_minimal.ltx
@@ -0,0 +1,683 @@
+[bar_dolg_bunker]
+bar_dolg_leader_squad
+
+[bar_dolg_general];mlr
+bar_dolg_general_petrenko_stalker_squad
+bar_dolg_general_zoneguard_stalker_squad
+dolg_medic_squad
+
+[bar_visitors];mlr
+bar_visitors_barman_stalker_trader_squad
+bar_visitors_cardan_tech_squad
+bar_visitors_garik_stalker_guard_squad
+bar_visitors_garik_stalker_guard_squad
+bar_visitors_zhorik_stalker_guard2_squad
+
+[bar_zastava]
+bar_duty_security_squad_leader_squad
+
+[bar_zastava_2]
+bar_zastava_2_commander_squad
+
+[bar_zastava_dogs_lair]
+
+[bar_zastava_dogs_lair_2]
+
+[bun_krovosos_nest]
+
+[cit_bandits]
+
+[cit_bandits_2]
+
+[cit_kanaliz1]
+
+[cit_kanaliz2]
+
+[cit_killers];mlr
+
+[cit_killers_2]
+
+[cit_killers_vs_bandits]
+
+[dar_angar]
+
+[dar_control_poltergeist]
+
+[dar_poltergeist_tele]
+
+[dar_poltergeist_tele_round]
+
+[ds2_domik_st]
+
+[ds2_lager_st]
+
+[ds2_st_dogs]
+
+[ds2_st_hoofs]
+
+[ds_boars_nest]
+
+[ds_deb1]
+
+[ds_grverfer2]
+
+[ds_kem1]
+
+[ds_kem2]
+
+[ds_kem3]
+
+[ds_ptr]
+
+[ds_ptr2]
+
+[ds_ptr3]
+
+[ds_ptr4]
+
+[esc_smart_terrain_1_11]
+
+[esc_smart_terrain_2_12];mlr
+
+[esc_smart_terrain_2_14]
+
+[esc_smart_terrain_3_16];mlr
+
+[esc_smart_terrain_3_7]
+
+[esc_smart_terrain_4_11]
+
+[esc_smart_terrain_4_13]
+
+[esc_smart_terrain_4_9]
+
+[esc_smart_terrain_5_12]
+
+[esc_smart_terrain_5_2]
+
+[esc_smart_terrain_5_4]
+
+[esc_smart_terrain_5_6]
+
+[esc_smart_terrain_5_7];mlr
+
+[esc_smart_terrain_5_9]
+
+[esc_smart_terrain_6_6]
+
+[esc_smart_terrain_6_8]
+
+[esc_smart_terrain_7_11]
+
+[esc_smart_terrain_8_10]
+
+[esc_smart_terrain_8_9]
+
+[esc_smart_terrain_9_7]
+
+[gar_smart_terrain_1_5]
+
+[gar_smart_terrain_1_7]
+
+[gar_smart_terrain_2_4]
+
+[gar_smart_terrain_3_5];mlr
+
+[gar_smart_terrain_3_7]
+
+[gar_smart_terrain_4_2]
+
+[gar_smart_terrain_4_5]
+
+[gar_smart_terrain_5_2]
+
+[gar_smart_terrain_5_4]
+
+[gar_smart_terrain_5_5]
+
+[gar_smart_terrain_5_6]
+
+[gar_smart_terrain_6_1]
+
+[gar_smart_terrain_6_3];mlr
+;;stalker_sim_baraholka_trader_day_squad
+;;stalker_sim_baraholka_trader_night_squad
+
+[gar_smart_terrain_6_6]
+
+[gar_smart_terrain_6_7]
+
+[gar_smart_terrain_7_4]
+
+[gar_smart_terrain_8_5]
+
+[gen_smart_terrain_cemetery]
+
+[gen_smart_terrain_forest]
+
+[gen_smart_terrain_junk]
+
+[gen_smart_terrain_lab_entrance]
+
+[gen_smart_terrain_lab_entrance_2]
+
+[gen_smart_terrain_military]
+
+[gen_smart_terrain_urod]
+
+[jup_a12]
+
+[jup_a6];mlr
+
+[jup_b19]
+
+[jup_b200_tushkan_smart_terrain]
+
+[jup_b203]
+
+[jup_b204]
+
+[jup_b205_smart_terrain]
+
+[jup_b205_smart_terrain_tushkano]
+
+[jup_b208]
+
+[jup_b211]
+
+[jup_b41]
+
+[jup_b47]
+
+[jup_b8_smart_terrain]
+
+[jup_sim_1]
+
+[jup_sim_10]
+
+[jup_sim_11]
+
+[jup_sim_12]
+
+[jup_sim_13]
+
+[jup_sim_14]
+
+[jup_sim_15]
+
+[jup_sim_16]
+
+[jup_sim_17]
+
+[jup_sim_18]
+
+[jup_sim_19]
+
+[jup_sim_2]
+
+[jup_sim_20]
+
+[jup_sim_21]
+
+[jup_sim_3]
+
+[jup_sim_4]
+
+[jup_sim_5]
+
+[jup_sim_6]
+
+[jup_sim_7]
+
+[jup_sim_8]
+
+[jup_sim_9]
+
+[katacomb_smart_terrain]
+
+[lim_smart_terrain_1]
+
+[lim_smart_terrain_10]
+
+[lim_smart_terrain_3]
+
+[lim_smart_terrain_4]
+
+[lim_smart_terrain_5]
+
+[lim_smart_terrain_6]
+
+[lim_smart_terrain_8]
+
+[lim_smart_terrain_9]
+
+[lx8_smart_terrain]
+lx8_burers_squad
+lx8_snork_down_squad
+lx8_snork_up_squad
+lx8_toilet_burer_squad
+lx8_tushkano_1_squad
+lx8_tushkano_2_squad
+
+[mar_smart_terrain_10_10]
+
+[mar_smart_terrain_10_5]
+
+[mar_smart_terrain_10_7]
+
+[mar_smart_terrain_11_11]
+
+[mar_smart_terrain_11_3]
+
+[mar_smart_terrain_12_2]
+
+[mar_smart_terrain_3_10]
+
+[mar_smart_terrain_3_3]
+
+[mar_smart_terrain_3_7]
+
+[mar_smart_terrain_4_5]
+
+[mar_smart_terrain_4_7]
+
+[mar_smart_terrain_5_12]
+
+[mar_smart_terrain_5_8]
+
+[mar_smart_terrain_6_10]
+
+[mar_smart_terrain_6_11]
+
+[mar_smart_terrain_6_4]
+
+[mar_smart_terrain_6_7]
+
+[mar_smart_terrain_6_8]
+
+[mar_smart_terrain_7_3]
+
+[mar_smart_terrain_7_7]
+
+[mar_smart_terrain_8_11]
+
+[mar_smart_terrain_8_4]
+
+[mar_smart_terrain_8_8]
+
+[mar_smart_terrain_8_9]
+
+[mar_smart_terrain_base];mlr
+
+[mar_smart_terrain_doc]
+
+[mil_smart_terrain_2_1]
+
+[mil_smart_terrain_2_10]
+
+[mil_smart_terrain_2_2]
+
+[mil_smart_terrain_2_4]
+
+[mil_smart_terrain_2_6]
+
+[mil_smart_terrain_3_8]
+
+[mil_smart_terrain_4_2]
+
+[mil_smart_terrain_4_3]
+
+[mil_smart_terrain_4_5]
+
+[mil_smart_terrain_4_7]
+
+[mil_smart_terrain_4_8]
+
+[mil_smart_terrain_7_10]
+
+[mil_smart_terrain_7_12]
+
+[mil_smart_terrain_7_4]
+
+[mil_smart_terrain_7_7];mlr
+
+[mil_smart_terrain_7_8]
+
+[mil_smart_terrain_8_3]
+
+[pas_b400_canalisation]
+
+[pas_b400_downstairs]
+
+[pas_b400_elevator]
+
+[pas_b400_hall]
+
+[pas_b400_track]
+
+[pas_b400_tunnel]
+
+[pri_b303]
+
+[pri_b304_monsters_smart_terrain]
+
+[pri_b306]
+
+[pri_b36_smart_terrain]
+
+[pri_depot]
+
+[pri_monolith];mlr
+
+[pri_sim_1]
+
+[pri_sim_10]
+
+[pri_sim_11]
+
+[pri_sim_12]
+
+[pri_sim_2]
+
+[pri_sim_3]
+
+[pri_sim_4]
+
+[pri_sim_5]
+
+[pri_sim_6]
+
+[pri_sim_7]
+
+[pri_sim_8]
+
+[pri_sim_9]
+
+[pri_smart_bloodsucker_lair1]
+
+[pri_smart_controler_lair1]
+
+[pri_smart_controler_lair2]
+
+[pri_smart_giant_lair1]
+
+[pri_smart_monolith_stalker2]
+
+[pri_smart_monolith_stalker3]
+
+[pri_smart_monolith_stalker4]
+
+[pri_smart_monolith_stalker6]
+
+[pri_smart_monster_lair1]
+
+[pri_smart_neutral_stalker1]
+
+[pri_smart_pseudodog_lair1]
+
+[pri_smart_snork_lair1]
+
+[pri_smart_snork_lair2]
+
+[pri_smart_tushkano_lair1]
+
+[rad2_loner_0000]
+
+[rad2_loner_0001]
+
+[rad2_loner_0002]
+
+[rad2_prip_teleport]
+
+[rad_after_valley]
+
+[rad_antenna_camper]
+
+[rad_antenna_monolith]
+
+[rad_antenna_patrol]
+
+[rad_bloodsucker]
+
+[rad_entrance]
+
+[rad_pseudodogs]
+
+[rad_snork1]
+
+[rad_snork2]
+
+[rad_valley]
+
+[rad_valley_dogs]
+
+[rad_zombied1]
+
+[rad_zombied2]
+
+[red_smart_terrain_3_1]
+
+[red_smart_terrain_3_2]
+
+[red_smart_terrain_3_3]
+
+[red_smart_terrain_4_3]
+
+[red_smart_terrain_4_5]
+
+[red_smart_terrain_5_5]
+
+[red_smart_terrain_5_6]
+
+[red_smart_terrain_6_3]
+
+[red_smart_terrain_6_6]
+
+[red_smart_terrain_monsters]
+
+[red_smart_terrain_monsters_2]
+
+[red_smart_terrain_monsters_3]
+
+[ros_smart_killers1]
+
+[ros_smart_monster4]
+
+[ros_smart_monster5]
+
+[ros_smart_monster7]
+
+[ros_smart_poltergeist2]
+
+[ros_smart_snork1]
+
+[ros_smart_stalker1]
+
+[ros_smart_stalker_killers1]
+
+[sar_monolith_general]
+
+[sar_monolith_sklad]
+
+[trc_sim_1]
+
+[trc_sim_10]
+
+[trc_sim_11]
+
+[trc_sim_12]
+
+[trc_sim_13]
+
+[trc_sim_14]
+
+[trc_sim_15]
+
+[trc_sim_16]
+
+[trc_sim_17]
+
+[trc_sim_18]
+
+[trc_sim_19]
+
+[trc_sim_2]
+
+[trc_sim_20];mlr
+
+[trc_sim_21]
+
+[trc_sim_3]
+
+[trc_sim_4]
+
+[trc_sim_5]
+
+[trc_sim_6]
+
+[trc_sim_7]
+
+[trc_sim_8]
+
+[trc_sim_9]
+
+[val_smart_terrain_1_2]
+
+[val_smart_terrain_3_0]
+
+[val_smart_terrain_4_0]
+
+[val_smart_terrain_5_10]
+
+[val_smart_terrain_6_4]
+
+[val_smart_terrain_6_5]
+
+[val_smart_terrain_7_3]
+
+[val_smart_terrain_7_4]
+
+[val_smart_terrain_7_5];mlr
+
+[val_smart_terrain_8_6]
+
+[val_smart_terrain_8_7]
+
+[val_smart_terrain_8_9]
+
+[val_smart_terrain_9_10]
+
+[val_smart_terrain_9_2]
+
+[val_smart_terrain_9_4]
+
+[val_smart_terrain_9_6]
+
+[warlab_common_consciousness_smart_terrain]
+
+[yan_smart_terrain_2_4]
+
+[yan_smart_terrain_2_5]
+
+[yan_smart_terrain_3_4]
+
+[yan_smart_terrain_3_6]
+
+[yan_smart_terrain_4_5]
+
+[yan_smart_terrain_5_5]
+
+[yan_smart_terrain_6_2]
+
+[yan_smart_terrain_6_4];mlr
+mechanic_army_yan_mlr_squad
+yan_povar_army_mlr_squad
+yan_stalker_sakharov_squad
+
+[yan_smart_terrain_zombi_spawn]
+
+[zat_b100]
+
+[zat_b104_zombied]
+
+[zat_b18]
+
+[zat_b28]
+
+[zat_b33]
+
+[zat_b38]
+
+[zat_b39]
+
+[zat_b40_smart_terrain];mlr
+
+[zat_b42_smart_terrain]
+
+[zat_b7]
+
+[zat_sim_1]
+
+[zat_sim_10]
+
+[zat_sim_11]
+
+[zat_sim_12]
+
+[zat_sim_13]
+
+[zat_sim_14]
+
+[zat_sim_15]
+
+[zat_sim_16]
+
+[zat_sim_17]
+
+[zat_sim_18]
+
+[zat_sim_19]
+
+[zat_sim_2]
+
+[zat_sim_20]
+
+[zat_sim_21]
+
+[zat_sim_22]
+
+[zat_sim_23]
+
+[zat_sim_24]
+
+[zat_sim_25]
+
+[zat_sim_26]
+
+[zat_sim_27]
+
+[zat_sim_28]
+
+[zat_sim_29]
+
+[zat_sim_3]
+
+[zat_sim_30]
+
+[zat_sim_4]
+
+[zat_sim_5]
+
+[zat_sim_6]
+
+[zat_sim_7]
+
+[zat_sim_8]
+
+[zat_sim_9]
+
+[zat_stalker_base_smart]
+zat_tech_mlr_squad
+zat_b22_barmen
+zat_b22_medic
+zat_b30_owl_stalker_trader_squad
\ No newline at end of file
diff --git a/mods/Zone Customization Project/gamedata/configs/misc/sim_smr_none.ltx b/mods/Zone Customization Project/gamedata/configs/misc/sim_smr_none.ltx
new file mode 100644
index 00000000..caeb0a4f
--- /dev/null
+++ b/mods/Zone Customization Project/gamedata/configs/misc/sim_smr_none.ltx
@@ -0,0 +1,993 @@
+;--============= Edited by Tronex ==================
+;--Last Edit: 2018/1/26
+; Starting spawns
+; [smart_section]
+; squad_section = spawn_count
+
+
+[aes2_monolith_camp1]
+monolith_sim_squad_advanced = 1
+
+[aes2_monolith_camp2]
+monolith_sim_squad_advanced = 1
+monolith_sim_squad_veteran = 1
+
+[aes2_monolith_camp3]
+monolith_sim_squad_advanced = 1
+monolith_sim_squad_veteran = 1
+
+[aes2_monolith_camp4]
+monolith_sim_squad_advanced = 1
+monolith_sim_squad_veteran = 1
+
+[aes2_monolith_snipers_1]
+monolith_sim_squad_sniper = 1
+monolith_sim_squad_veteran = 1
+
+[aes2_monolith_snipers_2]
+monolith_sim_squad_sniper = 1
+monolith_sim_squad_veteran = 1
+
+[aes2_monolith_snipers_3]
+monolith_sim_squad_sniper = 1
+monolith_sim_squad_veteran = 1
+
+[aes2_monsters1]
+simulation_chimera = 1
+simulation_poltergeist_tele = 1
+
+[aes2_monsters2]
+simulation_gigant = 1
+simulation_psy_dog = 1
+
+[aes_smart_terrain_monolit_blockpost]
+monolith_sim_squad_advanced = 1
+monolith_sim_squad_novice = 1
+monolith_sim_squad_veteran = 1
+
+[aes_smart_terrain_monolit_blockpost2]
+monolith_sim_squad_advanced = 1
+monolith_sim_squad_veteran = 1
+
+[aes_smart_terrain_monolit_blockpost4]
+monolith_sim_squad_advanced = 1
+monolith_sim_squad_sniper = 1
+
+[aes_smart_terrain_monsters1]
+simulation_bloodsucker = 1
+simulation_chimera = 1
+
+[aes_smart_terrain_monsters2]
+simulation_controller = 1
+simulation_gigant = 1
+
+[aes_smart_terrain_monsters3]
+simulation_chimera = 1
+simulation_psy_dog = 1
+
+[aes_smart_terrain_monsters4]
+simulation_gigant = 1
+simulation_snork = 1
+
+[aes_smart_terran_soldier]
+monolith_sim_squad_veteran = 1
+
+[aes_smart_terran_soldier2]
+monolith_sim_squad_veteran = 1
+
+;;----------<< Agroprom >>----------|
+
+[agr_smart_terrain_1_2]
+
+[agr_smart_terrain_1_3]
+
+[agr_smart_terrain_1_6];mlr
+
+[agr_smart_terrain_1_6_near_1]
+
+[agr_smart_terrain_1_6_near_2]
+
+[agr_smart_terrain_2_2]
+
+[agr_smart_terrain_4_4]
+ecolog_sim_squad_veteran = 1
+stalker_sim_squad_advanced = 1
+
+
+[agr_smart_terrain_4_4_near_1]
+stalker_sim_squad_novice = 1
+ecolog_sim_squad_advanced = 1
+
+[agr_smart_terrain_4_4_near_2]
+csky_sim_squad_advanced = 1
+
+
+[agr_u_bandits]
+bandit_sim_squad_advanced = 1
+
+
+;;----------<< Rostok/Bar >>----------|
+
+[bar_dolg_bunker]
+
+[bar_dolg_general];mlr
+
+[bar_visitors];mlr
+ecolog_sim_squad_advanced = 1
+stalker_sim_squad_novice = 1
+duty_sim_squad_veteran = 1
+
+[bar_zastava_dogs_lair_2]
+simulation_mix_dogs = 1
+simulation_pseudodog = 1
+
+[bun_krovosos_nest]
+
+
+;;----------<< Dead City >>----------|
+
+[cit_bandits]
+
+[cit_bandits_2]
+
+[cit_kanaliz1]
+
+[cit_kanaliz2]
+
+[cit_killers];mlr
+;merc_sim_squad_advanced = 1
+merc_sim_squad_veteran = 1
+
+
+[cit_killers_2]
+merc_sim_squad_advanced = 1
+
+[cit_killers_vs_bandits]
+merc_sim_squad_novice = 1
+
+[zombie_smart_ds_mlr_1]
+
+[zombie_smart_ds_mlr_2]
+
+;-------------------------------------|
+
+[mlr_terrain];mlr
+
+[dar_angar]
+simulation_fracture = 1
+
+[dar_control_poltergeist]
+;simulation_fracture = 1
+;dar_control_poltergeist_squad
+
+[dar_poltergeist_tele]
+;simulation_fracture = 1
+
+[dar_poltergeist_tele_round]
+;simulation_fracture = 1
+
+;;----------<< Darkscape >>----------|
+
+[ds2_domik_st]
+stalker_sim_squad_advanced = 1
+stalker_sim_squad_novice = 1
+
+[ds2_lager_st]
+bandit_sim_squad_advanced = 1
+bandit_sim_squad_novice = 1
+
+[ds2_st_dogs]
+
+[ds2_st_hoofs]
+
+[ds_boars_nest]
+
+[ds_deb1]
+
+[ds_grverfer2]
+
+[ds_kem1]
+
+[ds_kem2]
+army_sim_squad_advanced = 1
+army_sim_squad_novice = 1
+army_sim_squad_veteran = 1
+
+[ds_kem3]
+
+[ds_ptr]
+
+[ds_ptr2]
+
+[ds_ptr3]
+
+[ds_ptr4]
+
+;;----------<< Escape (Cordon) >>----------|
+
+[esc_smart_terrain_1_11]
+
+[esc_smart_terrain_2_12]
+
+[esc_smart_terrain_2_14]
+
+[esc_smart_terrain_3_16];mlr
+
+[esc_smart_terrain_3_7]
+
+[esc_smart_terrain_4_11]
+
+[esc_smart_terrain_4_13]
+
+[esc_smart_terrain_4_9]
+
+[esc_smart_terrain_5_12]
+
+[esc_smart_terrain_5_2]
+
+[esc_smart_terrain_5_4]
+
+[esc_smart_terrain_5_6]
+
+[esc_smart_terrain_5_7];mlr
+stalker_sim_squad_novice = 1
+stalker_sim_squad_advanced = 1
+
+[esc_smart_terrain_5_9]
+;fabr_tushk_esc_smart_terrain_5_9 = 1
+
+[esc_smart_terrain_6_6]
+
+[esc_smart_terrain_6_8]
+
+[esc_smart_terrain_7_11]
+bandit_sim_squad_novice = 1
+
+[esc_smart_terrain_8_10]
+
+[esc_smart_terrain_8_9]
+
+[esc_smart_terrain_9_7]
+
+;;----------<< Garbage >>----------|
+
+[gar_smart_terrain_1_5]
+
+[gar_smart_terrain_1_7]
+
+[gar_smart_terrain_2_4]
+
+[gar_smart_terrain_3_5];mlr
+stalker_sim_squad_novice = 2
+
+[gar_smart_terrain_3_7]
+stalker_sim_squad_advanced = 1
+ecolog_sim_squad_advanced = 1
+
+[gar_smart_terrain_4_2]
+
+[gar_smart_terrain_4_5]
+
+[gar_smart_terrain_5_2]
+
+[gar_smart_terrain_5_4]
+
+[gar_smart_terrain_5_5]
+
+[gar_smart_terrain_5_6]
+
+[gar_smart_terrain_6_1]
+
+[gar_smart_terrain_6_3];mlr
+
+[gar_smart_terrain_6_6]
+
+[gar_smart_terrain_6_7]
+
+[gar_smart_terrain_7_4]
+
+[gar_smart_terrain_8_5]
+
+;-----------< Generators >------------|
+
+[gen_smart_terrain_cemetery]
+
+[gen_smart_terrain_forest]
+
+[gen_smart_terrain_junk]
+
+[gen_smart_terrain_lab_entrance]
+monolith_sim_squad_advanced = 1
+monolith_sim_squad_sniper = 1
+monolith_sim_squad_veteran = 1
+
+[gen_smart_terrain_lab_entrance_2]
+simulation_controller_psy = 1
+
+[gen_smart_terrain_military]
+monolith_sim_squad_veteran = 1
+
+[gen_smart_terrain_urod]
+
+;-----------< Jupiter >------------|
+
+[jup_a12];mlr
+
+[jup_a6];mlr
+stalker_sim_squad_veteran = 1
+
+[jup_b19]
+
+[jup_b200_tushkan_smart_terrain]
+
+[jup_b203]
+
+[jup_b204]
+
+[jup_b205_smart_terrain]
+
+[jup_b205_smart_terrain_tushkano]
+
+[jup_b208];mlr
+;monolith_jup_mechanic_squad
+;monolith_jup_trader_mlr_squad
+;monolith_base_jupiter_squad = 1
+
+[depo_terrain];mlr
+;monolith_base_jupiter2_squad = 1
+
+[kbo_terrain];mlr
+
+[jup_b211]
+
+[jup_b41]
+
+[jup_b47]
+
+[jup_a10_smart_terrain]
+simulation_bloodsucker_red = 2
+
+[jup_b8_smart_terrain]
+
+[jup_sim_1]
+
+[jup_sim_10]
+
+[jup_sim_11]
+
+[jup_sim_12]
+
+[jup_sim_13]
+
+[jup_sim_14]
+
+[jup_sim_15]
+
+[jup_sim_16]
+
+[jup_sim_17]
+
+[jup_sim_18]
+
+[jup_sim_19]
+
+[jup_sim_2]
+
+[jup_sim_20]
+
+[jup_sim_21]
+
+[jup_sim_3]
+
+[jup_sim_4]
+
+[jup_sim_5]
+
+[jup_sim_6]
+
+[jup_sim_7]
+
+[jup_sim_8]
+
+[jup_sim_9]
+
+;Госпиталь
+[katacomb_smart_terrain]
+monolith_sim_squad_advanced = 1
+monolith_sim_squad_novice = 1
+monolith_sim_squad_veteran = 1
+
+;;----------<< Limansk >>----------|
+
+[lim_smart_terrain_1]
+
+[lim_smart_terrain_10]
+monolith_sim_squad_advanced = 1
+monolith_sim_squad_novice = 1
+monolith_sim_squad_veteran = 1
+
+[lim_smart_terrain_3]
+merc_sim_squad_advanced = 1
+merc_sim_squad_veteran = 1
+
+[lim_smart_terrain_4]
+merc_sim_squad_advanced = 1
+
+[lim_smart_terrain_5]
+
+[lim_smart_terrain_6]
+monolith_sim_squad_advanced = 1
+
+[lim_smart_terrain_7]
+
+[lim_smart_terrain_8]
+
+[lim_smart_terrain_9]
+monolith_sim_squad_novice = 1
+
+;;-----------< Lab x8 >-----------|
+
+[lx8_smart_terrain]
+
+;;-----------< Great Swamps >-----------|
+
+[mar_smart_terrain_10_10]
+
+[mar_smart_terrain_10_5]
+army_sim_squad_advanced = 1
+army_sim_squad_sniper = 1
+
+[mar_smart_terrain_10_7]
+
+[mar_smart_terrain_11_11]
+renegade_sim_squad_advanced = 1
+renegade_sim_squad_novice = 1
+
+[mar_smart_terrain_11_3]
+
+[mar_smart_terrain_12_2]
+csky_sim_squad_advanced = 1
+csky_sim_squad_novice = 1
+stalker_sim_squad_novice = 1
+
+[mar_smart_terrain_3_10]
+
+[mar_smart_terrain_3_3]
+renegade_sim_squad_advanced = 1
+renegade_sim_squad_novice = 1
+
+[mar_smart_terrain_3_7]
+
+[mar_smart_terrain_4_5]
+
+[mar_smart_terrain_4_7]
+
+[mar_smart_terrain_5_12]
+csky_sim_squad_advanced = 1
+csky_sim_squad_novice = 1
+
+[mar_smart_terrain_5_8]
+csky_sim_squad_novice = 1
+csky_sim_squad_veteran = 1
+
+[mar_smart_terrain_6_10]
+
+[mar_smart_terrain_6_11]
+csky_sim_squad_advanced = 1
+csky_sim_squad_novice = 1
+
+[mar_smart_terrain_6_4]
+
+[mar_smart_terrain_6_7]
+
+[mar_smart_terrain_6_8]
+
+[mar_smart_terrain_7_3]
+
+[mar_smart_terrain_7_7]
+
+[mar_smart_terrain_8_11]
+renegade_sim_squad_advanced = 1
+renegade_sim_squad_novice = 1
+;renegade_sim_squad_veteran = 1
+
+[mar_smart_terrain_8_4]
+
+[mar_smart_terrain_8_8]
+
+[mar_smart_terrain_8_9]
+
+[mar_smart_terrain_base];mlr
+csky_sim_squad_veteran = 1
+csky_sim_squad_novice = 1
+
+[mar_smart_terrain_doc]
+
+;;----------<< Army Warehouses >>----------|
+
+[mil_smart_terrain_2_1]
+
+[mil_smart_terrain_2_10]
+freedom_sim_squad_novice = 1
+
+[mil_smart_terrain_2_2]
+merc_sim_squad_advanced = 1
+merc_sim_squad_novice = 1
+merc_sim_squad_veteran = 1
+
+[mil_smart_terrain_2_4]
+bandit_sim_squad_advanced = 1
+
+[mil_smart_terrain_2_6]
+
+[mil_smart_terrain_3_8]
+freedom_sim_squad_novice = 1
+
+[mil_smart_terrain_4_2]
+
+[mil_smart_terrain_4_3]
+
+[mil_smart_terrain_4_5]
+stalker_sim_squad_advanced = 1
+
+[mil_smart_terrain_4_7]
+
+[mil_smart_terrain_4_8]
+freedom_sim_squad_veteran = 1
+
+[mil_smart_terrain_7_10]
+freedom_sim_squad_novice = 1
+
+[mil_smart_terrain_7_12]
+freedom_sim_squad_veteran = 1
+
+[mil_smart_terrain_7_4]
+duty_sim_squad_novice = 1
+duty_sim_squad_veteran = 1
+
+[mil_smart_terrain_7_7]
+;mil_freedom_barman_mlr_squad
+;mil_7_7_protect_mlr_squad2
+freedom_sim_squad_novice = 1
+
+[mil_smart_terrain_7_8]
+;mil_smart_terrain_7_8_squad
+freedom_sim_squad_veteran = 1
+
+[mil_smart_terrain_8_3]
+
+;;-------------------------------------------|
+
+[pri_a15];mlr
+
+[pri_a16_mlr_copy];mlr
+
+[pri_a16];mlr
+
+[pri_a17]
+
+[pri_a18_smart_terrain];mlr
+
+[pas_b400_canalisation]
+
+[pas_b400_downstairs]
+
+[pas_b400_elevator]
+
+[pas_b400_hall]
+
+[pas_b400_track]
+
+[pas_b400_tunnel]
+
+[pri_b303]
+
+[pri_b304_monsters_smart_terrain]
+
+[pri_b306]
+
+[pri_b36_smart_terrain]
+monolith_sim_squad_advanced = 1
+monolith_sim_squad_novice = 1
+monolith_sim_squad_veteran = 1
+
+[pri_depot]
+monolith_sim_squad_advanced = 1
+monolith_sim_squad_novice = 1
+monolith_sim_squad_veteran = 1
+
+[pri_monolith]
+monolith_sim_squad_advanced = 1
+monolith_sim_squad_novice = 1
+monolith_sim_squad_veteran = 1
+
+[pri_sim_1]
+;monolith_sim_squad_advanced = 1
+
+[pri_sim_10]
+
+[pri_sim_11]
+
+[pri_sim_12]
+
+[pri_sim_2]
+
+[pri_sim_3]
+
+[pri_sim_4]
+
+[pri_sim_5]
+
+[pri_sim_6]
+
+[pri_sim_7]
+
+[pri_sim_8]
+
+[pri_sim_9]
+
+[pri_smart_bloodsucker_lair1]
+
+[pri_smart_controler_lair1]
+
+[pri_smart_controler_lair2]
+
+[pri_smart_giant_lair1]
+
+[pri_smart_monolith_stalker2]
+monolith_sim_squad_advanced = 1
+
+[pri_smart_monolith_stalker3]
+monolith_sim_squad_advanced = 1
+
+[pri_smart_monolith_stalker4]
+monolith_sim_squad_veteran = 1
+
+[pri_smart_monolith_stalker6]
+monolith_sim_squad_novice = 1
+monolith_sim_squad_sniper = 1
+monolith_sim_squad_veteran = 1
+
+[pri_smart_monster_lair1]
+
+[pri_smart_neutral_stalker1]
+monolith_sim_squad_veteran = 1
+
+[pri_smart_pseudodog_lair1]
+
+[pri_smart_snork_lair1]
+
+[pri_smart_snork_lair2]
+
+[pri_smart_tushkano_lair1]
+
+;;----------<< Radar >>----------|
+
+[rad2_loner_0000]
+
+[rad2_loner_0001]
+
+[rad2_loner_0002]
+
+[rad2_prip_teleport]
+monolith_sim_squad_veteran = 1
+
+[rad_after_valley]
+
+[rad_antenna_camper]
+monolith_sim_squad_advanced = 1
+
+[rad_antenna_monolith]
+monolith_sim_squad_advanced = 1
+monolith_sim_squad_novice = 1
+
+[rad_antenna_patrol]
+monolith_sim_squad_veteran = 1
+
+[rad_bloodsucker]
+
+[rad_entrance]
+monolith_sim_squad_advanced = 1
+monolith_sim_squad_novice = 1
+
+[rad_pseudodogs]
+
+[rad_snork1]
+
+[rad_snork2]
+
+[rad_valley]
+
+[rad_valley_dogs]
+
+[rad_zombied1]
+
+[rad_zombied2]
+
+;;----------<< Red Forest >>----------|
+
+[red_smart_terrain_4_2];mlr
+
+[red_bridge_bandit_smart_skirmish];mlr
+;protectors_red_bridge_bandit_smart_skirmish_squad = 1
+;monolith_bridge_trader_mlr_squad
+monolith_sim_squad_advanced = 1
+
+[red_smart_terrain_3_1]
+
+[red_smart_terrain_3_2]
+;simulation_contr_3sn_3gzomb = 1
+
+[red_smart_terrain_3_3]
+
+[red_smart_terrain_4_3]
+
+[red_smart_terrain_4_5]
+
+[red_smart_terrain_5_5]
+
+[red_smart_terrain_5_6]
+simulation_chimera = 1
+
+[red_smart_terrain_6_3]
+
+[red_smart_terrain_6_6]
+
+[red_smart_terrain_monsters]
+
+[red_smart_terrain_monsters_2]
+
+[red_smart_terrain_monsters_3]
+
+;;----------<< Wild Territory >>----------|
+
+[ros_smart_killers1]
+bandit_sim_squad_advanced = 1
+bandit_sim_squad_novice = 1
+
+[ros_smart_monster4]
+
+[ros_smart_monster5]
+
+[ros_smart_monster7]
+
+[ros_smart_poltergeist2]
+simulation_poltergeist_tele = 1
+simulation_snork = 1
+
+[ros_smart_snork1]
+
+[ros_smart_stalker1]
+stalker_sim_squad_advanced = 1
+stalker_sim_squad_veteran = 1
+
+[ros_smart_stalker_killers1]
+merc_sim_squad_advanced = 1
+merc_sim_squad_novice = 1
+merc_sim_squad_veteran = 1
+
+[sar_monolith_general]
+
+[sar_monolith_sklad]
+
+;;----------<< Truck Cemetery >>----------|
+
+[trc_sim_1]
+bandit_sim_squad_veteran = 1
+
+[trc_sim_10]
+duty_sim_squad_veteran = 1
+
+[trc_sim_11]
+
+[trc_sim_12]
+bandit_sim_squad_veteran = 1
+
+[trc_sim_13]
+
+[trc_sim_14]
+
+[trc_sim_15]
+
+[trc_sim_16]
+
+[trc_sim_17]
+freedom_sim_squad_veteran = 1
+
+[trc_sim_18]
+army_sim_squad_advanced = 1
+army_sim_squad_veteran = 1
+
+[trc_sim_19]
+
+[trc_sim_2]
+bandit_sim_squad_veteran = 1
+
+[trc_sim_20];mlr
+bandit_sim_squad_advanced = 1
+
+[trc_sim_21]
+
+[trc_sim_3]
+
+[trc_sim_4]
+army_sim_squad_advanced = 1
+
+[trc_sim_5]
+
+[trc_sim_6]
+
+[trc_sim_7]
+
+[trc_sim_8]
+
+[trc_sim_9]
+
+;;----------<< Dark Valley >>----------|
+
+[val_smart_terrain_1_2]
+army_sim_squad_advanced = 1
+army_sim_squad_sniper = 1
+
+[val_smart_terrain_3_0]
+
+[val_smart_terrain_4_0]
+stalker_sim_squad_advanced = 1
+stalker_sim_squad_novice = 1
+
+[val_smart_terrain_5_10]
+
+[val_smart_terrain_6_4]
+
+[val_smart_terrain_6_5]
+
+[val_smart_terrain_7_3]
+
+[val_smart_terrain_7_4]
+bandit_sim_squad_advanced = 1
+
+[val_smart_terrain_7_5];mlr
+bandit_sim_squad_veteran = 1
+
+[val_smart_terrain_8_6]
+bandit_sim_squad_novice = 1
+
+[val_smart_terrain_8_7]
+
+[val_smart_terrain_8_9]
+
+[val_smart_terrain_9_10]
+
+[val_smart_terrain_9_2]
+
+[val_smart_terrain_9_4]
+bandit_sim_squad_novice = 1
+
+[val_smart_terrain_9_6]
+
+[warlab_common_consciousness_smart_terrain]
+
+;;----------<< Yanter >>----------|
+
+[yan_smart_terrain_2_4]
+zombied_sim_squad_advanced = 1
+zombied_sim_squad_veteran = 1
+
+[yan_smart_terrain_2_5]
+zombied_sim_squad_advanced = 1
+
+[yan_smart_terrain_3_4]
+zombied_sim_squad_novice = 1
+
+[yan_smart_terrain_3_6]
+ecolog_sim_squad_advanced = 1
+
+[yan_smart_terrain_4_5]
+simulation_snork_2_5 = 1
+
+[yan_smart_terrain_5_5]
+ecolog_sim_squad_veteran = 1
+
+[yan_smart_terrain_6_2]
+
+[yan_smart_terrain_6_4];mlr
+ecolog_sim_squad_novice = 1
+ecolog_sim_squad_veteran = 1
+
+[yan_smart_terrain_zombi_spawn]
+simulation_contr_3sn_3gzomb = 1
+
+;;----------<< Zaton >>----------|
+
+[zat_b100]
+
+[zat_b104_zombied]
+
+[zat_b18]
+
+[zat_b28]
+
+[zat_b33]
+
+[zat_b38]
+
+[zat_b39]
+
+[zat_b40_smart_terrain];mlr
+
+[zat_b42_smart_terrain]
+simulation_mix_boar_flesh = 1
+
+[zat_b7]
+
+[zat_sim_1]
+
+[zat_sim_10]
+
+[zat_sim_11]
+
+[zat_sim_12]
+
+[zat_sim_13]
+
+[zat_sim_14]
+
+[zat_sim_15]
+
+[zat_sim_16]
+
+[zat_sim_17]
+
+[zat_sim_18]
+
+[zat_sim_19]
+
+[zat_sim_2]
+
+[zat_sim_20]
+
+[zat_sim_21]
+
+[zat_sim_22]
+
+[zat_sim_23]
+
+[zat_sim_24]
+
+[zat_sim_25]
+
+[zat_sim_26]
+
+[zat_sim_27]
+
+[zat_sim_28]
+
+[zat_sim_29]
+
+[zat_sim_3]
+
+[zat_sim_30]
+
+[zat_sim_4]
+
+[zat_sim_5]
+
+[zat_sim_6]
+
+[zat_sim_7]
+
+[zat_sim_8]
+
+[zat_sim_9]
+
+[zat_stalker_base_smart];mlr
+
+[pol_smart_terrain_1_1]
+
+[pol_smart_terrain_1_3]
+
+[pol_smart_terrain_2_2]
+simulation_burer = 1
+
+[pol_smart_terrain_2_1]
+simulation_poltergeist_tele = 1
\ No newline at end of file
diff --git a/mods/Zone Customization Project/gamedata/configs/misc/sim_smr_survival.ltx b/mods/Zone Customization Project/gamedata/configs/misc/sim_smr_survival.ltx
new file mode 100644
index 00000000..e3abae66
--- /dev/null
+++ b/mods/Zone Customization Project/gamedata/configs/misc/sim_smr_survival.ltx
@@ -0,0 +1,896 @@
+[red_bridge_bandit_smart_skirmish];mlr
+;;killer_bridge_trader_mlr_squad
+
+[pri_a18_smart_terrain];mlr
+pri_special_trader_mlr_squad
+merc_pri_grifon_mlr_squad
+merc_pri_a18_mech_mlr_squad
+
+[aes2_monolith_camp1]
+
+[aes2_monolith_camp2]
+
+[aes2_monolith_camp3]
+
+[aes2_monolith_camp4]
+
+[aes2_monolith_snipers_1]
+
+[aes2_monolith_snipers_2]
+
+[aes2_monolith_snipers_3]
+
+[aes2_monsters1]
+
+[aes2_monsters2]
+
+[aes_smart_terrain_monolit_blockpost]
+
+[aes_smart_terrain_monolit_blockpost2]
+
+[aes_smart_terrain_monolit_blockpost4]
+
+[aes_smart_terrain_monsters1]
+
+[aes_smart_terrain_monsters2]
+
+[aes_smart_terrain_monsters3]
+
+[aes_smart_terrain_monsters4]
+
+[aes_smart_terran_soldier]
+
+[aes_smart_terran_soldier2]
+
+[agr_smart_terrain_1_2]
+
+[agr_smart_terrain_1_3]
+
+[agr_smart_terrain_1_6];mlr
+agr_1_6_medic_army_mlr_squad
+agr_1_6_barman_army_mlr_squad
+agr_smart_terrain_1_6_army_mechanic_stalker_squad
+agr_smart_terrain_1_6_army_trader_stalker_squad
+
+[agr_smart_terrain_1_6_near_1]
+
+[agr_smart_terrain_1_6_near_2]
+agr_smart_terrain_1_6_near_2_military_colonel_kovalski_squad
+
+[agr_smart_terrain_2_2]
+
+[agr_smart_terrain_4_4]
+
+[agr_smart_terrain_4_4_near_1]
+
+[agr_smart_terrain_4_4_near_2]
+
+[agr_smart_terrain_4_4_near_3]
+
+[agr_smart_terrain_4_6]
+
+[agr_smart_terrain_5_2]
+
+[agr_smart_terrain_5_3]
+
+[agr_smart_terrain_5_7]
+
+[agr_smart_terrain_6_4]
+
+[agr_smart_terrain_7_5]
+
+[agr_u_bandits]
+agr_u_bandits_squad
+
+[agr_u_soldiers]
+agr_u_soldiers_squad
+
+[bar_dolg_bunker]
+bar_dolg_leader_squad
+
+[bar_dolg_general];mlr
+bar_dolg_general_petrenko_stalker_squad
+bar_dolg_general_zoneguard_stalker_squad
+dolg_medic_squad
+
+[bar_visitors];mlr
+bar_arena_guard_squad
+bar_arena_manager_squad
+bar_visitors_barman_stalker_trader_squad
+bar_visitors_cardan_tech_squad
+bar_visitors_garik_stalker_guard_squad
+bar_visitors_zhorik_stalker_guard2_squad
+guid_bar_stalker_navigator_squad
+bar_informator_mlr_squad
+
+[bar_zastava]
+bar_duty_security_squad_leader_squad
+
+[bar_zastava_2]
+bar_zastava_2_commander_squad
+
+[bar_zastava_dogs_lair]
+
+[bar_zastava_dogs_lair_2]
+
+[bun_krovosos_nest]
+bun_krovosos_nest_squad
+
+[cit_bandits]
+
+[cit_bandits_2]
+
+[cit_kanaliz1]
+
+[cit_kanaliz2]
+
+[cit_killers];mlr
+cit_killers_merc_mechanic_stalker_squad
+cit_killers_merc_trader_stalker_squad
+cit_killers_merc_stalker_aslan_squad
+ds_killer_guide_main_base_squad
+ds_killer_medic_mlr_squad
+
+[cit_killers_2]
+
+[cit_killers_vs_bandits]
+
+[dar_angar]
+dar_angar_gigant_squad
+
+[dar_control_poltergeist]
+dar_control_poltergeist_squad
+
+[dar_poltergeist_tele]
+dar_poltergeist_tele_squad
+
+[dar_poltergeist_tele_round]
+dar_poltergeist_tele_round_squad
+
+[ds2_domik_st]
+
+[ds2_lager_st]
+
+[ds2_st_dogs]
+
+[ds2_st_hoofs]
+
+[ds_boars_nest]
+
+[ds_deb1]
+
+[ds_grverfer2]
+
+[ds_kem1]
+
+[ds_kem2]
+
+[ds_kem3]
+
+[ds_ptr]
+
+[ds_ptr2]
+
+[ds_ptr3]
+
+[ds_ptr4]
+
+[esc_smart_terrain_1_11]
+
+[esc_smart_terrain_2_12];mlr
+esc_2_12_stalker_fanat_squad
+esc_smart_terrain_5_7_loner_mechanic_stalker_squad
+
+[esc_smart_terrain_2_14]
+
+[esc_smart_terrain_3_16];mlr
+esc_3_16_military_trader_squad
+army_south_mechan_mlr_squad
+
+[esc_smart_terrain_3_7]
+
+[esc_smart_terrain_4_11]
+
+[esc_smart_terrain_4_13]
+
+[esc_smart_terrain_4_9]
+
+[esc_smart_terrain_5_12]
+
+[esc_smart_terrain_5_2]
+
+[esc_smart_terrain_5_4]
+
+[esc_smart_terrain_5_6]
+
+[esc_smart_terrain_5_7];mlr
+
+[esc_smart_terrain_5_9]
+
+[esc_smart_terrain_6_6]
+
+[esc_smart_terrain_6_8]
+
+[esc_smart_terrain_7_11]
+
+[esc_smart_terrain_8_10]
+
+[esc_smart_terrain_8_9]
+
+[esc_smart_terrain_9_7]
+
+[gar_smart_terrain_1_5]
+
+[gar_smart_terrain_1_7]
+
+[gar_smart_terrain_2_4]
+
+[gar_smart_terrain_3_5];mlr
+hunter_gar_trader_squad
+
+[gar_smart_terrain_3_7]
+
+[gar_smart_terrain_4_2]
+
+[gar_smart_terrain_4_5]
+
+[gar_smart_terrain_5_2]
+
+[gar_smart_terrain_5_4]
+
+[gar_smart_terrain_5_5]
+
+[gar_smart_terrain_5_6]
+
+[gar_smart_terrain_6_1]
+
+[gar_smart_terrain_6_3];mlr
+;;stalker_sim_baraholka_trader_day_squad
+;;stalker_sim_baraholka_trader_night_squad
+
+[gar_smart_terrain_6_6]
+
+[gar_smart_terrain_6_7]
+
+[gar_smart_terrain_7_4]
+
+[gar_smart_terrain_8_5]
+
+[gen_smart_terrain_cemetery]
+
+[gen_smart_terrain_forest]
+
+[gen_smart_terrain_junk]
+
+[gen_smart_terrain_lab_entrance]
+
+[gen_smart_terrain_lab_entrance_2]
+
+[gen_smart_terrain_military]
+
+[gen_smart_terrain_urod]
+
+[jup_a12]
+jup_a12_bandit_cashier_squad
+jup_a12_bandit_chief_squad
+jup_a12_bandit_guard_squad
+
+[jup_a6];mlr
+guid_jup_stalker_garik_squad
+jup_a6_freedom_leader_squad
+jup_a6_freedom_trader_ashot_squad
+jup_a6_stalker_barmen_squad
+jup_a6_stalker_medik_squad
+jup_b10_stalker_drunk_squad
+jup_b19_freedom_yar_squad
+jup_b25_alex_squad
+
+[jup_b19]
+jup_b19_kopatci_zombied_squad
+
+[jup_b200_tushkan_smart_terrain]
+jup_b200_tushkano_squad
+
+[jup_b203]
+jup_b203_tushkano
+jup_b203_zombied_squad
+
+[jup_b204]
+jup_b204_squad
+
+[jup_b205_smart_terrain]
+jup_b205_monster_01_squad
+jup_b205_monster_04_squad
+jup_b205_zombie_01_squad
+jup_b205_zombie_02_squad
+
+[jup_b205_smart_terrain_tushkano]
+jup_b205_monster_02_squad
+
+[jup_b208]
+;jup_b208_burers_squad
+
+[jup_b211]
+jup_b6_swamp_hunters
+
+[jup_b41]
+jup_b1_stalker_squad
+jup_b47_merc_guard_squad
+jup_b6_scientist_group
+
+[jup_b47]
+jup_a9_dogs_normal
+
+[jup_b8_smart_terrain]
+jup_b8_psy_dog_squad
+
+[jup_sim_1]
+
+[jup_sim_10]
+
+[jup_sim_11]
+
+[jup_sim_12]
+
+[jup_sim_13]
+
+[jup_sim_14]
+
+[jup_sim_15]
+
+[jup_sim_16]
+
+[jup_sim_17]
+
+[jup_sim_18]
+
+[jup_sim_19]
+
+[jup_sim_2]
+
+[jup_sim_20]
+
+[jup_sim_21]
+
+[jup_sim_3]
+
+[jup_sim_4]
+
+[jup_sim_5]
+
+[jup_sim_6]
+
+[jup_sim_7]
+
+[jup_sim_8]
+
+[jup_sim_9]
+
+[katacomb_smart_terrain]
+
+[lim_smart_terrain_1]
+
+[lim_smart_terrain_10]
+
+[lim_smart_terrain_3]
+
+[lim_smart_terrain_4]
+
+[lim_smart_terrain_5]
+
+[lim_smart_terrain_6]
+
+[lim_smart_terrain_8]
+
+[lim_smart_terrain_9]
+
+[lx8_smart_terrain]
+lx8_burers_squad
+lx8_snork_down_squad
+lx8_snork_up_squad
+lx8_toilet_burer_squad
+lx8_tushkano_1_squad
+lx8_tushkano_2_squad
+
+[mar_smart_terrain_10_10]
+
+[mar_smart_terrain_10_5]
+
+[mar_smart_terrain_10_7]
+
+[mar_smart_terrain_11_11]
+
+[mar_smart_terrain_11_3]
+
+[mar_smart_terrain_12_2]
+
+[mar_smart_terrain_3_10]
+
+[mar_smart_terrain_3_3]
+
+[mar_smart_terrain_3_7]
+
+[mar_smart_terrain_4_5]
+
+[mar_smart_terrain_4_7]
+
+[mar_smart_terrain_5_12]
+
+[mar_smart_terrain_5_8]
+
+[mar_smart_terrain_6_10]
+
+[mar_smart_terrain_6_11]
+
+[mar_smart_terrain_6_4]
+
+[mar_smart_terrain_6_7]
+
+[mar_smart_terrain_6_8]
+
+[mar_smart_terrain_7_3]
+
+[mar_smart_terrain_7_7]
+
+[mar_smart_terrain_8_11]
+
+[mar_smart_terrain_8_4]
+
+[mar_smart_terrain_8_8]
+
+[mar_smart_terrain_8_9]
+
+[mar_smart_terrain_base];mlr
+guid_marsh_mlr_squad
+mar_base_owl_stalker_trader_squad
+mar_base_stalker_barmen_squad
+mar_base_stalker_tech_squad
+mar_doctor_squad
+mar_smart_terrain_base_dog_doctor_squad
+mar_smart_terrain_base_lager_squad
+mar_smart_terrain_base_stalker_leader_marsh_squad
+
+[mar_smart_terrain_doc]
+mar_smart_terrain_doc_dog_squad
+mar_smart_terrain_doc_squad
+
+[mil_smart_terrain_2_1]
+
+[mil_smart_terrain_2_10]
+
+[mil_smart_terrain_2_2]
+
+[mil_smart_terrain_2_4]
+
+[mil_smart_terrain_2_6]
+
+[mil_smart_terrain_3_8]
+
+[mil_smart_terrain_4_2]
+
+[mil_smart_terrain_4_3]
+
+[mil_smart_terrain_4_5]
+
+[mil_smart_terrain_4_7]
+
+[mil_smart_terrain_4_8]
+
+[mil_smart_terrain_7_10]
+mil_smart_terrain_7_10_freedom_trader_stalker_squad
+
+[mil_smart_terrain_7_12]
+
+[mil_smart_terrain_7_4]
+
+[mil_smart_terrain_7_7];mlr
+mil_freedom_guid_squad
+;;mil_freedom_medic_squad
+mil_smart_terrain_7_7_freedom_leader_stalker_squad
+mil_smart_terrain_7_7_freedom_mechanic_stalker_squad
+
+[mil_smart_terrain_7_8]
+
+[mil_smart_terrain_8_3]
+
+[pas_b400_canalisation]
+pas_b400_canalisation_1_zombied
+pas_b400_canalisation_3_zombied
+pas_b400_canalisation_5_zombied
+pas_b400_canalisation_snork_2
+pas_b400_canalisation_tushkano
+
+[pas_b400_downstairs]
+pas_b400_downstairs_tushkano
+
+[pas_b400_elevator]
+pas_b400_elevator_tushkano
+pas_b400_snork_elevator_4
+
+[pas_b400_hall]
+pas_b400_hall_tushkano
+pas_b400_snork_tunnel_5
+
+[pas_b400_track]
+pas_b400_snork_track_2
+pas_b400_track_tushkano
+
+[pas_b400_tunnel]
+pas_b400_snork_tunnel_2
+pas_b400_snork_tunnel_3
+pas_b400_tunnel_tushkano
+
+[pri_b303]
+pri_b303_burer_squad
+
+[pri_b304_monsters_smart_terrain]
+pri_b304_dogs
+
+[pri_b306]
+pri_b306_1_floor_zombied
+pri_b306_1_floor_zombied_2
+pri_b306_2_floor_monolith
+pri_b306_2_floor_zombied
+pri_b306_3_floor_monolith
+pri_b306_3_floor_zombied
+pri_b306_4_floor_monolith
+pri_b306_4_floor_monolith_2
+
+[pri_b36_smart_terrain]
+pri_b36_monolith_guard_squad
+pri_b36_monolith_marine_squad
+pri_b36_monolith_sniper_squad
+pri_b36_zombied_squad
+
+[pri_depot]
+
+[pri_monolith];mlr
+lider_monolith_haron_squad
+pri_monolith_monolith_mechanic_stalker_squad
+pri_monolith_monolith_trader_stalker_squad
+
+[pri_sim_1]
+
+[pri_sim_10]
+
+[pri_sim_11]
+
+[pri_sim_12]
+
+[pri_sim_2]
+
+[pri_sim_3]
+
+[pri_sim_4]
+
+[pri_sim_5]
+
+[pri_sim_6]
+
+[pri_sim_7]
+
+[pri_sim_8]
+
+[pri_sim_9]
+
+[pri_smart_bloodsucker_lair1]
+
+[pri_smart_controler_lair1]
+
+[pri_smart_controler_lair2]
+
+[pri_smart_giant_lair1]
+
+[pri_smart_monolith_stalker2]
+
+[pri_smart_monolith_stalker3]
+
+[pri_smart_monolith_stalker4]
+
+[pri_smart_monolith_stalker6]
+
+[pri_smart_monster_lair1]
+
+[pri_smart_neutral_stalker1]
+
+[pri_smart_pseudodog_lair1]
+
+[pri_smart_snork_lair1]
+
+[pri_smart_snork_lair2]
+
+[pri_smart_tushkano_lair1]
+
+[rad2_loner_0000]
+
+[rad2_loner_0001]
+
+[rad2_loner_0002]
+
+[rad2_prip_teleport]
+
+[rad_after_valley]
+
+[rad_antenna_camper]
+
+[rad_antenna_monolith]
+
+[rad_antenna_patrol]
+
+[rad_bloodsucker]
+
+[rad_entrance]
+
+[rad_pseudodogs]
+
+[rad_snork1]
+
+[rad_snork2]
+
+[rad_valley]
+
+[rad_valley_dogs]
+
+[rad_zombied1]
+
+[rad_zombied2]
+
+[red_smart_terrain_3_1]
+
+[red_smart_terrain_3_2]
+
+[red_smart_terrain_3_3]
+
+[red_smart_terrain_4_3]
+
+[red_smart_terrain_4_5]
+
+[red_smart_terrain_5_5]
+
+[red_smart_terrain_5_6]
+
+[red_smart_terrain_6_3]
+
+[red_smart_terrain_6_6]
+
+[red_smart_terrain_monsters]
+
+[red_smart_terrain_monsters_2]
+
+[red_smart_terrain_monsters_3]
+
+[ros_smart_killers1]
+
+[ros_smart_monster4]
+
+[ros_smart_monster5]
+
+[ros_smart_monster7]
+
+[ros_smart_poltergeist2]
+
+[ros_smart_snork1]
+
+[ros_smart_stalker1]
+
+[ros_smart_stalker_killers1]
+
+[sar_monolith_general]
+sar_monolith_general_squad
+
+[sar_monolith_sklad]
+sar_monolith_sklad_squad
+
+[trc_sim_1]
+
+[trc_sim_10]
+
+[trc_sim_11]
+
+[trc_sim_12]
+
+[trc_sim_13]
+
+[trc_sim_14]
+
+[trc_sim_15]
+
+[trc_sim_16]
+
+[trc_sim_17]
+
+[trc_sim_18]
+
+[trc_sim_19]
+
+[trc_sim_2]
+
+[trc_sim_20];mlr
+trucks_cemetery_bandit_mechanic_squad
+trucks_cemetery_bandit_trader_squad
+
+[trc_sim_21]
+
+[trc_sim_3]
+
+[trc_sim_4]
+
+[trc_sim_5]
+
+[trc_sim_6]
+
+[trc_sim_7]
+
+[trc_sim_8]
+
+[trc_sim_9]
+
+[val_smart_terrain_1_2]
+
+[val_smart_terrain_3_0]
+
+[val_smart_terrain_4_0]
+
+[val_smart_terrain_5_10]
+
+[val_smart_terrain_6_4]
+
+[val_smart_terrain_6_5]
+
+[val_smart_terrain_7_3]
+val_smart_terrain_7_3_bandit_mechanic_stalker_squad
+
+[val_smart_terrain_7_4]
+val_smart_terrain_7_4_bandit_trader_stalker_squad
+
+[val_smart_terrain_7_5];mlr
+zat_b7_bandit_boss_sultan_squad
+guid_dv_mal_mlr_squad
+;;bandit_main_base_medic_mlr_squad
+
+[val_smart_terrain_8_6]
+
+[val_smart_terrain_8_7]
+
+[val_smart_terrain_8_9]
+
+[val_smart_terrain_9_10]
+
+[val_smart_terrain_9_2]
+
+[val_smart_terrain_9_4]
+
+[val_smart_terrain_9_6]
+
+[warlab_common_consciousness_smart_terrain]
+warlab_pod_stalker_squad
+
+[yan_smart_terrain_2_4]
+
+[yan_smart_terrain_2_5]
+
+[yan_smart_terrain_3_4]
+
+[yan_smart_terrain_3_6]
+
+[yan_smart_terrain_4_5]
+
+[yan_smart_terrain_5_5]
+
+[yan_smart_terrain_6_2]
+
+[yan_smart_terrain_6_4];mlr
+mechanic_army_yan_mlr_squad
+yan_povar_army_mlr_squad
+yan_bunker_guards_squad
+yan_stalker_sakharov_squad
+
+[yan_smart_terrain_zombi_spawn]
+
+[zat_b100]
+zat_b100_poltergeist_squad_01
+
+[zat_b104_zombied]
+zat_b104_zombied_1
+zat_b104_zombied_2
+zat_b104_zombied_3
+
+[zat_b18]
+zat_b18_dog_noah_squad
+zat_b18_noah_squad
+
+[zat_b28]
+zat_b28_snork_squad
+
+[zat_b33]
+zat_b33_snork_first_wave
+
+[zat_b38]
+zat_b38_default_bloodsucker
+
+[zat_b39]
+zat_b39_dogs_squad
+
+[zat_b40_smart_terrain];mlr
+zat_stancia_trader_merc_squad
+zat_stancia_mech_merc_squad
+;zaton_killer_guide_station_squad
+zat_b40_merc_squad
+
+[zat_b42_smart_terrain]
+zat_b42_controller_squad
+
+[zat_b7]
+zat_b7_stalkers_victims_1
+
+[zat_sim_1]
+
+[zat_sim_10]
+
+[zat_sim_11]
+
+[zat_sim_12]
+
+[zat_sim_13]
+
+[zat_sim_14]
+
+[zat_sim_15]
+
+[zat_sim_16]
+
+[zat_sim_17]
+
+[zat_sim_18]
+
+[zat_sim_19]
+
+[zat_sim_2]
+
+[zat_sim_20]
+
+[zat_sim_21]
+
+[zat_sim_22]
+
+[zat_sim_23]
+
+[zat_sim_24]
+
+[zat_sim_25]
+
+[zat_sim_26]
+
+[zat_sim_27]
+
+[zat_sim_28]
+
+[zat_sim_29]
+
+[zat_sim_3]
+
+[zat_sim_30]
+
+[zat_sim_4]
+
+[zat_sim_5]
+
+[zat_sim_6]
+
+[zat_sim_7]
+
+[zat_sim_8]
+
+[zat_sim_9]
+
+[zat_stalker_base_smart]
+zat_tech_mlr_squad
+zat_a2_stalker_nimble_squad
+guid_zan_stalker_locman_squad
+;zat_a2_stalker_mechanic_squad
+zat_b106_stalker_crab_squad
+zat_b106_stalker_gonta_squad
+zat_b22_barmen
+zat_b22_medic
+zat_b30_owl_stalker_trader_squad
+zat_stalker_base_smart_mlr_squad
\ No newline at end of file
diff --git a/mods/Zone Customization Project/gamedata/configs/plugins/zcp/spawn_groups/balanced.ltx b/mods/Zone Customization Project/gamedata/configs/plugins/zcp/spawn_groups/balanced.ltx
new file mode 100644
index 00000000..f493e023
--- /dev/null
+++ b/mods/Zone Customization Project/gamedata/configs/plugins/zcp/spawn_groups/balanced.ltx
@@ -0,0 +1,767 @@
+[l04_darkvalley]
+simulation_boar = 6
+simulation_bloodsucker = 4
+simulation_karlik = 2
+simulation_psysucker = 2.2
+simulation_zombie = 3.5
+simulation_poltergeist = 4.2
+simulation_cat = 6
+simulation_dog = 7
+simulation_tushkano = 5
+simulation_gigant = 1.8
+simulation_borya = 2.5
+simulation_bibliotekar = 1
+simulation_rats = 3
+simulation_burer = 2.4
+simulation_flesh = 7
+simulation_snork = 5
+simulation_fracture = 3
+simulation_dog = 6
+simulation_lurker = 6
+simulation_chimera = 2.3
+simulation_psy_dog = 3.5
+simulation_controller = 3
+
+[k02_trucks_cemetery]
+simulation_boar = 6
+simulation_bloodsucker = 2
+simulation_karlik = 2
+simulation_psysucker = 1.5
+simulation_zombie = 3.5
+simulation_poltergeist = 3.2
+simulation_cat = 6.5
+simulation_dog = 6
+simulation_tushkano = 8
+simulation_gigant = 2.2
+simulation_borya = 2.5
+simulation_bibliotekar = 1
+simulation_rats = 2
+simulation_burer = 1.8
+simulation_flesh = 5.5
+simulation_snork = 4
+simulation_fracture = 3
+simulation_dog = 5
+simulation_lurker = 5
+simulation_chimera = 2.2
+simulation_psy_dog = 2.5
+simulation_controller = 3
+
+[zaton]
+simulation_boar = 7
+simulation_bloodsucker = 4.2
+simulation_karlik = 1.7
+simulation_psysucker = 2
+simulation_zombie = 4
+simulation_poltergeist = 4.5
+simulation_cat = 7.5
+simulation_dog = 7
+simulation_tushkano = 4
+simulation_gigant = 1.8
+simulation_borya = 2.5
+simulation_bibliotekar = 1
+simulation_rats = 2
+simulation_burer = 1.5
+simulation_flesh = 8.5
+simulation_snork = 2.5
+simulation_fracture = 3.2
+simulation_dog = 8
+simulation_lurker = 4
+simulation_chimera = 2
+simulation_psy_dog = 4.5
+simulation_controller = 3
+
+[labx8]
+simulation_boar = 0.5
+simulation_bloodsucker = 2.5
+simulation_karlik = 2.5
+simulation_psysucker = 2
+simulation_zombie = 1.5
+simulation_poltergeist = 3.5
+simulation_cat = 0.7
+simulation_dog = 0.8
+simulation_tushkano = 2.2
+simulation_gigant = 0.8
+simulation_borya = 2.5
+simulation_bibliotekar = 1
+simulation_rats = 1
+simulation_burer = 4
+simulation_flesh = 0.5
+simulation_snork = 4.5
+simulation_fracture = 1.1
+simulation_dog = 0.7
+simulation_lurker = 0.5
+simulation_chimera = 0.7
+simulation_psy_dog = 0.8
+simulation_controller = 4
+
+[pripyat]
+simulation_boar = 1.5
+simulation_bloodsucker = 2.5
+simulation_karlik = 1.7
+simulation_psysucker = 3
+simulation_zombie = 6
+simulation_poltergeist = 3.5
+simulation_cat = 7
+simulation_dog = 5.5
+simulation_tushkano = 7
+simulation_gigant = 3
+simulation_borya = 2.5
+simulation_bibliotekar = 1
+simulation_rats = 1
+simulation_burer = 2.5
+simulation_flesh = 1.7
+simulation_snork = 3
+simulation_fracture = 5
+simulation_dog = 5
+simulation_lurker = 3
+simulation_chimera = 3
+simulation_psy_dog = 5.5
+simulation_controller = 3.5
+
+[k01_darkscape]
+simulation_boar = 6
+simulation_bloodsucker = 4.2
+simulation_karlik = 3
+simulation_psysucker = 1.7
+simulation_zombie = 5
+simulation_poltergeist = 5
+simulation_cat = 7.5
+simulation_dog = 7
+simulation_tushkano = 4
+simulation_gigant = 2
+simulation_borya = 2.5
+simulation_bibliotekar = 1
+simulation_rats = 1
+simulation_burer = 1.5
+simulation_flesh = 6
+simulation_snork = 4
+simulation_fracture = 5
+simulation_dog = 6
+simulation_lurker = 4.5
+simulation_chimera = 2
+simulation_psy_dog = 4
+simulation_controller = 3.5
+
+[jupiter_underground]
+simulation_boar = 0.5
+simulation_bloodsucker = 2.5
+simulation_karlik = 2.2
+simulation_psysucker = 1
+simulation_zombie = 3.5
+simulation_poltergeist = 2.7
+simulation_cat = 2.5
+simulation_dog = 0.8
+simulation_tushkano = 4
+simulation_gigant = 0.7
+simulation_borya = 2.5
+simulation_bibliotekar = 1
+simulation_rats = 7
+simulation_burer = 3.2
+simulation_flesh = 0.5
+simulation_snork = 3.5
+simulation_fracture = 1.5
+simulation_dog = 0.7
+simulation_lurker = 2
+simulation_chimera = 0.5
+simulation_psy_dog = 1.2
+simulation_controller = 1.7
+
+[l12u_sarcofag]
+simulation_boar = 0.5
+simulation_bloodsucker = 2.5
+simulation_karlik = 2.5
+simulation_psysucker = 2
+simulation_zombie = 1.5
+simulation_poltergeist = 3.5
+simulation_cat = 0.7
+simulation_dog = 0.8
+simulation_tushkano = 2.2
+simulation_gigant = 0.8
+simulation_borya = 2.5
+simulation_bibliotekar = 1
+simulation_rats = 1
+simulation_burer = 4
+simulation_flesh = 0.5
+simulation_snork = 4.5
+simulation_fracture = 1.1
+simulation_dog = 0.7
+simulation_lurker = 0.5
+simulation_chimera = 0.7
+simulation_psy_dog = 0.8
+simulation_controller = 4
+
+[l07_military]
+simulation_boar = 5
+simulation_bloodsucker = 6
+simulation_karlik = 3
+simulation_psysucker = 4
+simulation_zombie = 5
+simulation_poltergeist = 4.5
+simulation_cat = 4
+simulation_dog = 6
+simulation_tushkano = 5
+simulation_gigant = 2.5
+simulation_borya = 2.5
+simulation_bibliotekar = 1
+simulation_rats = 1
+simulation_burer = 2.3
+simulation_flesh = 5
+simulation_snork = 4
+simulation_fracture = 3.5
+simulation_dog = 4
+simulation_lurker = 3.5
+simulation_chimera = 2.5
+simulation_psy_dog = 5
+simulation_controller = 3.2
+
+[l11_pripyat]
+simulation_boar = 1.5
+simulation_bloodsucker = 5
+simulation_karlik = 4
+simulation_psysucker = 4
+simulation_zombie = 2.5
+simulation_poltergeist = 4.5
+simulation_cat = 5.5
+simulation_dog = 1.8
+simulation_tushkano = 3
+simulation_gigant = 3.2
+simulation_borya = 2.5
+simulation_bibliotekar = 1
+simulation_rats = 1.5
+simulation_burer = 2.5
+simulation_flesh = 1
+simulation_snork = 4.5
+simulation_fracture = 2.5
+simulation_dog = 1.5
+simulation_lurker = 2
+simulation_chimera = 3
+simulation_psy_dog = 2.5
+simulation_controller = 4
+
+[l03_agroprom]
+simulation_boar = 8
+simulation_bloodsucker = 5
+simulation_karlik = 2.5
+simulation_psysucker = 2.6
+simulation_zombie = 3.5
+simulation_poltergeist = 4.5
+simulation_cat = 5
+simulation_dog = 7
+simulation_tushkano = 8
+simulation_gigant = 1.8
+simulation_borya = 2.5
+simulation_bibliotekar = 1
+simulation_rats = 2
+simulation_burer = 2.7
+simulation_flesh = 7
+simulation_snork = 4.5
+simulation_fracture = 3.2
+simulation_dog = 6
+simulation_lurker = 5
+simulation_chimera = 2
+simulation_psy_dog = 4
+simulation_controller = 3.7
+
+[jupiter]
+simulation_boar = 7
+simulation_bloodsucker = 6
+simulation_karlik = 5
+simulation_psysucker = 5
+simulation_zombie = 5
+simulation_poltergeist = 6
+simulation_cat = 7
+simulation_dog = 7
+simulation_tushkano = 6
+simulation_gigant = 5
+simulation_borya = 5
+simulation_bibliotekar = 1.5
+simulation_rats = 1
+simulation_burer = 5
+simulation_flesh = 7
+simulation_snork = 5
+simulation_fracture = 5
+simulation_dog = 7
+simulation_lurker = 6
+simulation_chimera = 5
+simulation_psy_dog = 6
+simulation_controller = 6
+
+[l05_bar]
+simulation_boar = 8
+simulation_bloodsucker = 2.5
+simulation_karlik = 1.5
+simulation_psysucker = 1.5
+simulation_zombie = 4
+simulation_poltergeist = 2
+simulation_cat = 6
+simulation_dog = 8
+simulation_tushkano = 5
+simulation_gigant = 2.5
+simulation_borya = 2.5
+simulation_bibliotekar = 1
+simulation_rats = 3
+simulation_burer = 1.2
+simulation_flesh = 8
+simulation_snork = 3.5
+simulation_fracture = 2
+simulation_dog = 7
+simulation_lurker = 2.5
+simulation_chimera = 1.5
+simulation_psy_dog = 4
+simulation_controller = 2
+
+[l10_radar]
+simulation_boar = 2
+simulation_bloodsucker = 3.5
+simulation_karlik = 4.5
+simulation_psysucker = 5
+simulation_zombie = 6
+simulation_poltergeist = 4
+simulation_cat = 2
+simulation_dog = 2.5
+simulation_tushkano = 1.5
+simulation_gigant = 2.7
+simulation_borya = 2.5
+simulation_bibliotekar = 1
+simulation_rats = 1
+simulation_burer = 3
+simulation_flesh = 1.5
+simulation_snork = 4
+simulation_fracture = 3.5
+simulation_dog = 2
+simulation_lurker = 2.3
+simulation_chimera = 3
+simulation_psy_dog = 4.5
+simulation_controller = 5
+
+[l12_stancia_2]
+simulation_boar = 2
+simulation_bloodsucker = 4.5
+simulation_karlik = 3
+simulation_psysucker = 5
+simulation_zombie = 4
+simulation_poltergeist = 4
+simulation_cat = 1.7
+simulation_dog = 2.5
+simulation_tushkano = 1.5
+simulation_gigant = 3.5
+simulation_borya = 2.5
+simulation_bibliotekar = 1
+simulation_rats = 1
+simulation_burer = 2.7
+simulation_flesh = 1.5
+simulation_snork = 4.5
+simulation_fracture = 2.5
+simulation_dog = 1.8
+simulation_lurker = 1.5
+simulation_chimera = 3
+simulation_psy_dog = 2.5
+simulation_controller = 5
+
+[l08u_brainlab]
+simulation_boar = 0.5
+simulation_bloodsucker = 2.2
+simulation_karlik = 4
+simulation_psysucker = 4.5
+simulation_zombie = 5.5
+simulation_poltergeist = 3.5
+simulation_cat = 1.4
+simulation_dog = 0.8
+simulation_tushkano = 3
+simulation_gigant = 0.8
+simulation_borya = 2.5
+simulation_bibliotekar = 1
+simulation_rats = 1
+simulation_burer = 2.5
+simulation_flesh = 0.5
+simulation_snork = 3.5
+simulation_fracture = 4.5
+simulation_dog = 0.7
+simulation_lurker = 2.6
+simulation_chimera = 0.7
+simulation_psy_dog = 2
+simulation_controller = 4
+
+[l09_deadcity]
+simulation_boar = 2.5
+simulation_bloodsucker = 3
+simulation_karlik = 3
+simulation_psysucker = 3.5
+simulation_zombie = 6
+simulation_poltergeist = 3
+simulation_cat = 2
+simulation_dog = 3.5
+simulation_tushkano = 3
+simulation_gigant = 2.5
+simulation_borya = 2.5
+simulation_bibliotekar = 1
+simulation_rats = 3
+simulation_burer = 2.5
+simulation_flesh = 1.5
+simulation_snork = 5
+simulation_fracture = 5
+simulation_dog = 2
+simulation_lurker = 2
+simulation_chimera = 2.5
+simulation_psy_dog = 3.5
+simulation_controller = 4.5
+
+[l10u_bunker]
+simulation_boar = 0.5
+simulation_bloodsucker = 4.5
+simulation_karlik = 2.8
+simulation_psysucker = 4.5
+simulation_zombie = 3.5
+simulation_poltergeist = 3.5
+simulation_cat = 1.2
+simulation_dog = 0.8
+simulation_tushkano = 3
+simulation_gigant = 0.8
+simulation_borya = 2.5
+simulation_bibliotekar = 1
+simulation_rats = 1
+simulation_burer = 4
+simulation_flesh = 0.5
+simulation_snork = 3.5
+simulation_fracture = 2.5
+simulation_dog = 0.7
+simulation_lurker = 2
+simulation_chimera = 2
+simulation_psy_dog = 3.2
+simulation_controller = 6
+
+[l02_garbage]
+simulation_boar = 8
+simulation_bloodsucker = 4
+simulation_karlik = 2.5
+simulation_psysucker = 2
+simulation_zombie = 4
+simulation_poltergeist = 4
+simulation_cat = 6
+simulation_dog = 7
+simulation_tushkano = 8
+simulation_gigant = 1.6
+simulation_borya = 2.5
+simulation_bibliotekar = 1
+simulation_rats = 6
+simulation_burer = 2
+simulation_flesh = 7
+simulation_snork = 4
+simulation_fracture = 4
+simulation_dog = 7
+simulation_lurker = 4
+simulation_chimera = 1.8
+simulation_psy_dog = 3.5
+simulation_controller = 3
+
+[l10_limansk]
+simulation_boar = 2
+simulation_bloodsucker = 5
+simulation_karlik = 3
+simulation_psysucker = 3.5
+simulation_zombie = 3.5
+simulation_poltergeist = 3.5
+simulation_cat = 2
+simulation_dog = 4
+simulation_tushkano = 3
+simulation_gigant = 1.7
+simulation_borya = 2.5
+simulation_bibliotekar = 1
+simulation_rats = 2
+simulation_burer = 2.5
+simulation_flesh = 1.5
+simulation_snork = 4.5
+simulation_fracture = 3
+simulation_dog = 2
+simulation_lurker = 2
+simulation_chimera = 3
+simulation_psy_dog = 4
+simulation_controller = 4
+
+[l13_generators]
+simulation_boar = 2
+simulation_bloodsucker = 4.5
+simulation_karlik = 3
+simulation_psysucker = 5
+simulation_zombie = 4
+simulation_poltergeist = 4
+simulation_cat = 1.7
+simulation_dog = 2.5
+simulation_tushkano = 1.5
+simulation_gigant = 3.5
+simulation_borya = 2.5
+simulation_bibliotekar = 1
+simulation_rats = 1
+simulation_burer = 2.7
+simulation_flesh = 1.5
+simulation_snork = 4.5
+simulation_fracture = 2.5
+simulation_dog = 1.8
+simulation_lurker = 1.5
+simulation_chimera = 3
+simulation_psy_dog = 2.5
+simulation_controller = 5
+
+[l11_hospital]
+simulation_boar = 1
+simulation_bloodsucker = 5
+simulation_karlik = 4.5
+simulation_psysucker = 3.5
+simulation_zombie = 2.5
+simulation_poltergeist = 2.7
+simulation_cat = 1.8
+simulation_dog = 1.3
+simulation_tushkano = 6
+simulation_gigant = 1
+simulation_borya = 2.5
+simulation_bibliotekar = 1
+simulation_rats = 1.5
+simulation_burer = 2.5
+simulation_flesh = 1
+simulation_snork = 6.5
+simulation_fracture = 3
+simulation_dog = 1.5
+simulation_lurker = 1
+simulation_chimera = 2
+simulation_psy_dog = 2.5
+simulation_controller = 4
+
+[l10_red_forest]
+simulation_boar = 1.5
+simulation_bloodsucker = 6
+simulation_karlik = 1.2
+simulation_psysucker = 4
+simulation_zombie = 2
+simulation_poltergeist = 3
+simulation_cat = 2
+simulation_dog = 2.5
+simulation_tushkano = 2
+simulation_gigant = 1.5
+simulation_borya = 2.5
+simulation_bibliotekar = 1
+simulation_rats = 1
+simulation_burer = 2
+simulation_flesh = 1
+simulation_snork = 2
+simulation_fracture = 1.5
+simulation_dog = 1.5
+simulation_lurker = 3
+simulation_chimera = 3.5
+simulation_psy_dog = 3
+simulation_controller = 4
+
+[l04u_labx18]
+simulation_boar = 0.5
+simulation_bloodsucker = 3.3
+simulation_karlik = 1.7
+simulation_psysucker = 0.8
+simulation_zombie = 2.5
+simulation_poltergeist = 5.5
+simulation_cat = 1.6
+simulation_dog = 0.8
+simulation_tushkano = 3
+simulation_gigant = 0.7
+simulation_borya = 2.5
+simulation_bibliotekar = 1
+simulation_rats = 1
+simulation_burer = 2.5
+simulation_flesh = 0.5
+simulation_snork = 4.5
+simulation_fracture = 2.2
+simulation_dog = 0.7
+simulation_lurker = 4.5
+simulation_chimera = 0.5
+simulation_psy_dog = 1
+simulation_controller = 2.2
+
+[l01_escape]
+simulation_boar = 8
+simulation_bloodsucker = 3
+simulation_karlik = 2
+simulation_psysucker = 1.5
+simulation_zombie = 5
+simulation_poltergeist = 3.5
+simulation_cat = 8
+simulation_dog = 8
+simulation_tushkano = 6
+simulation_gigant = 1.2
+simulation_borya = 2.5
+simulation_bibliotekar = 1
+simulation_rats = 3
+simulation_burer = 1.2
+simulation_flesh = 7
+simulation_snork = 4
+simulation_fracture = 5
+simulation_dog = 9
+simulation_lurker = 5
+simulation_chimera = 1.3
+simulation_psy_dog = 3
+simulation_controller = 2.5
+
+[l03u_agr_underground]
+simulation_boar = 0.5
+simulation_bloodsucker = 3.5
+simulation_karlik = 3
+simulation_psysucker = 0.5
+simulation_zombie = 3.3
+simulation_poltergeist = 1.5
+simulation_cat = 1.9
+simulation_dog = 0.8
+simulation_tushkano = 5
+simulation_gigant = 0.4
+simulation_borya = 2.5
+simulation_bibliotekar = 1
+simulation_rats = 1
+simulation_burer = 1.8
+simulation_flesh = 0.5
+simulation_snork = 4.5
+simulation_fracture = 3
+simulation_dog = 1
+simulation_lurker = 1.1
+simulation_chimera = 0.5
+simulation_psy_dog = 1
+simulation_controller = 1.8
+
+[l12u_control_monolith]
+simulation_boar = 0.5
+simulation_bloodsucker = 2.5
+simulation_karlik = 2.5
+simulation_psysucker = 2
+simulation_zombie = 1.5
+simulation_poltergeist = 3.5
+simulation_cat = 0.7
+simulation_dog = 0.8
+simulation_tushkano = 2.2
+simulation_gigant = 0.8
+simulation_borya = 2.5
+simulation_bibliotekar = 1
+simulation_rats = 1
+simulation_burer = 4
+simulation_flesh = 0.5
+simulation_snork = 4.5
+simulation_fracture = 1.1
+simulation_dog = 0.7
+simulation_lurker = 0.5
+simulation_chimera = 0.7
+simulation_psy_dog = 0.8
+simulation_controller = 4
+
+[l13u_warlab]
+simulation_boar = 0.5
+simulation_bloodsucker = 1
+simulation_karlik = 3
+simulation_psysucker = 4.5
+simulation_zombie = 3.2
+simulation_poltergeist = 6
+simulation_cat = 0.7
+simulation_dog = 0.8
+simulation_tushkano = 1.2
+simulation_gigant = 0.8
+simulation_borya = 2.5
+simulation_bibliotekar = 1
+simulation_rats = 0.5
+simulation_burer = 4
+simulation_flesh = 0.5
+simulation_snork = 1.8
+simulation_fracture = 1.1
+simulation_dog = 0.7
+simulation_lurker = 0.5
+simulation_chimera = 0.7
+simulation_psy_dog = 0.8
+simulation_controller = 3.5
+
+[l06_rostok]
+simulation_boar = 4
+simulation_bloodsucker = 5
+simulation_karlik = 2.5
+simulation_psysucker = 4
+simulation_zombie = 4.5
+simulation_poltergeist = 5.5
+simulation_cat = 5
+simulation_dog = 4
+simulation_tushkano = 6
+simulation_gigant = 1.7
+simulation_borya = 2.5
+simulation_bibliotekar = 1
+simulation_rats = 2
+simulation_burer = 2.5
+simulation_flesh = 4
+simulation_snork = 5.5
+simulation_fracture = 3
+simulation_dog = 4.5
+simulation_lurker = 2
+simulation_chimera = 2
+simulation_psy_dog = 4
+simulation_controller = 2.7
+
+[l08_yantar]
+simulation_boar = 3
+simulation_bloodsucker = 3.5
+simulation_karlik = 3.5
+simulation_psysucker = 4.5
+simulation_zombie = 5
+simulation_poltergeist = 5.5
+simulation_cat = 2.2
+simulation_dog = 4
+simulation_tushkano = 5
+simulation_gigant = 2.5
+simulation_borya = 2.5
+simulation_bibliotekar = 1
+simulation_rats = 1.5
+simulation_burer = 3
+simulation_flesh = 3.5
+simulation_snork = 5.5
+simulation_fracture = 5.5
+simulation_dog = 3
+simulation_lurker = 3.5
+simulation_chimera = 2.3
+simulation_psy_dog = 5
+simulation_controller = 4.5
+
+[k00_marsh]
+simulation_boar = 8
+simulation_bloodsucker = 5
+simulation_karlik = 2
+simulation_psysucker = 2.5
+simulation_zombie = 4
+simulation_poltergeist = 5
+simulation_cat = 9
+simulation_dog = 8
+simulation_tushkano = 7
+simulation_gigant = 1
+simulation_borya = 2.5
+simulation_bibliotekar = 1
+simulation_rats = 4
+simulation_burer = 1.2
+simulation_flesh = 10
+simulation_snork = 3
+simulation_fracture = 4
+simulation_dog = 9
+simulation_lurker = 7
+simulation_chimera = 1.7
+simulation_psy_dog = 4
+simulation_controller = 2
+
+[l12_stancia]
+simulation_boar = 2
+simulation_bloodsucker = 4.5
+simulation_karlik = 3
+simulation_psysucker = 5
+simulation_zombie = 4
+simulation_poltergeist = 4
+simulation_cat = 1.7
+simulation_dog = 2.5
+simulation_tushkano = 1.5
+simulation_gigant = 3.5
+simulation_borya = 2.5
+simulation_bibliotekar = 1
+simulation_rats = 1
+simulation_burer = 2.7
+simulation_flesh = 1.5
+simulation_snork = 4.5
+simulation_fracture = 2.5
+simulation_dog = 1.8
+simulation_lurker = 1.5
+simulation_chimera = 3
+simulation_psy_dog = 2.5
+simulation_controller = 5
\ No newline at end of file
diff --git a/mods/Zone Customization Project/gamedata/configs/plugins/zcp/spawn_groups/default.ltx b/mods/Zone Customization Project/gamedata/configs/plugins/zcp/spawn_groups/default.ltx
new file mode 100644
index 00000000..b6b0da28
--- /dev/null
+++ b/mods/Zone Customization Project/gamedata/configs/plugins/zcp/spawn_groups/default.ltx
@@ -0,0 +1,77 @@
+[all_tier1]
+zombied_sim_squad_novice
+zombied_sim_squad_mix
+simulation_zombie
+simulation_zombie_blind
+simulation_tushkano
+simulation_boar
+simulation_flesh
+simulation_mix_boar_flesh
+simulation_dog
+simulation_mix_dogs
+simulation_pseudodog
+simulation_cat
+simulation_fracture
+simulation_snork
+simulation_lurker_blue
+simulation_lurker_brown
+simulation_lurker_black
+simulation_lurker
+simulation_psysucker
+
+[all_tier2]
+zombied_sim_squad_advanced
+simulation_zombie_3_6
+simulation_mix_zombie
+simulation_zombie_blind_3zomb
+simulation_zombie_blind_3zomb_civ
+simulation_tushkano_7_10
+simulation_boar_3_5
+simulation_dog_5_7
+simulation_cat_3_5
+simulation_snork_2_3
+simulation_lurker_1_2
+simulation_bloodsucker
+simulation_bloodsucker_2weak
+simulation_psysucker_white
+simulation_psysucker_brown
+simulation_psysucker_black
+simulation_psysucker_1_2
+simulation_psy_dog
+simulation_karlik
+simulation_burer
+simulation_burer_1_2_day
+simulation_bur_5rat_day
+simulation_controller
+simulation_contr_5rat_3tush
+simulation_poltergeist_tele
+simulation_poltergeist
+simulation_borya
+
+[all_tier3]
+zombied_sim_squad_veteran
+simulation_snork_2_5
+simulation_bloodsucker_green
+simulation_bloodsucker_red
+simulation_bloodsucker_black
+simulation_bloodsucker_1_2
+simulation_psy_dog_squad
+simulation_burer_2_3
+simulation_contr_5dog
+simulation_contr_3dog_4tush
+simulation_contr_3sn_3gzomb
+simulation_contr_6gzomb
+simulation_contr_2sn_4zomb
+simulation_contr_4tush_3sn
+simulation_contr_5zomb_weak
+simulation_contr_4zomb_norm
+simulation_contr_4zomb_str
+simulation_contr_5sn
+simulation_poltergeist_flame
+simulation_poltergeist_black
+simulation_controller_psy
+simulation_chimera
+simulation_chimera_2weak
+simulation_gigant
+simulation_gigant_2weak
+simulation_bibliotekar
diff --git a/mods/Zone Customization Project/gamedata/configs/plugins/zcp/spawn_templates/all.ltx b/mods/Zone Customization Project/gamedata/configs/plugins/zcp/spawn_templates/all.ltx
new file mode 100644
index 00000000..d6432979
--- /dev/null
+++ b/mods/Zone Customization Project/gamedata/configs/plugins/zcp/spawn_templates/all.ltx
@@ -0,0 +1,328 @@
+;; MARSH
+[k00_marsh_tier1_monsters]
+*default*all_tier1
+
+[k00_marsh_tier2_monsters]
+*default*all_tier2
+
+[k00_marsh_tier3_monsters]
+*default*all_tier3
+
+;; ESCAPE
+[l01_escape_tier1_monsters]
+*default*all_tier1
+
+[l01_escape_tier2_monsters]
+*default*all_tier2
+
+[l01_escape_tier3_monsters]
+*default*all_tier3
+
+;; GARBAGE
+
+[l02_garbage_tier1_monsters]
+*default*all_tier1
+
+[l02_garbage_tier2_monsters]
+*default*all_tier2
+
+[l02_garbage_tier3_monsters]
+*default*all_tier3
+
+;; AGROPROM
+
+[l03_agroprom_tier1_monsters]
+*default*all_tier1
+
+[l03_agroprom_tier2_monsters]
+*default*all_tier2
+
+[l03_agroprom_tier3_monsters]
+*default*all_tier3
+
+;; DARKSCAPE
+
+[k01_darkscape_tier1_monsters]
+*default*all_tier1
+
+[k01_darkscape_tier2_monsters]
+*default*all_tier2
+
+[k01_darkscape_tier3_monsters]
+*default*all_tier3
+
+;; DARK VALLEY
+
+[l04_darkvalley_tier1_monsters]
+*default*all_tier1
+
+[l04_darkvalley_tier2_monsters]
+*default*all_tier2
+
+[l04_darkvalley_tier3_monsters]
+*default*all_tier3
+
+;; BAR
+;; l05_bar
+
+;; ROSTOK
+
+[l06_rostok_tier1_monsters]
+*default*all_tier1
+
+[l06_rostok_tier2_monsters]
+*default*all_tier2
+
+[l06_rostok_tier3_monsters]
+*default*all_tier3
+
+;; MILITARY WAREHOUSES
+
+[l07_military_tier1_monsters]
+*default*all_tier1
+
+[l07_military_tier2_monsters]
+*default*all_tier2
+
+[l07_military_tier3_monsters]
+*default*all_tier3
+
+;; YANTAR
+
+[l08_yantar_tier1_monsters]
+*default*all_tier1
+
+[l08_yantar_tier2_monsters]
+*default*all_tier2
+
+[l08_yantar_tier3_monsters]
+*default*all_tier3
+
+;; DEAD CITY
+
+[l09_deadcity_tier1_monsters]
+*default*all_tier1
+
+[l09_deadcity_tier2_monsters]
+*default*all_tier2
+
+[l09_deadcity_tier3_monsters]
+*default*all_tier3
+
+;; LIMANSK
+
+[l10_limansk_tier1_monsters]
+*default*all_tier1
+
+[l10_limansk_tier2_monsters]
+*default*all_tier2
+
+[l10_limansk_tier3_monsters]
+*default*all_tier3
+
+;; RADAR
+
+[l10_radar_tier1_monsters]
+*default*all_tier1
+
+[l10_radar_tier2_monsters]
+*default*all_tier2
+
+[l10_radar_tier3_monsters]
+*default*all_tier3
+
+;; RED FOREST
+
+[l10_red_forest_tier1_monsters]
+*default*all_tier1
+
+[l10_red_forest_tier2_monsters]
+*default*all_tier2
+
+[l10_red_forest_tier3_monsters]
+*default*all_tier3
+
+;; HOSPITAL
+
+;;l11_hospital
+
+;; Pripyat
+
+[l11_pripyat_tier1_monsters]
+*default*all_tier1
+
+[l11_pripyat_tier2_monsters]
+*default*all_tier2
+
+[l11_pripyat_tier3_monsters]
+*default*all_tier3
+
+;; Chernobyl NPP North
+
+[l12_stancia_tier1_monsters]
+*default*all_tier1
+
+[l12_stancia_tier2_monsters]
+*default*all_tier2
+
+[l12_stancia_tier3_monsters]
+*default*all_tier3
+
+;; Chernobyl NPP South
+
+[l12_stancia_2_tier1_monsters]
+*default*all_tier1
+
+[l12_stancia_2_tier2_monsters]
+*default*all_tier2
+
+[l12_stancia_2_tier3_monsters]
+*default*all_tier3
+
+;; GENERATORS
+
+[l13_generators_tier1_monsters]
+*default*all_tier1
+
+[l13_generators_tier2_monsters]
+*default*all_tier2
+
+[l13_generators_tier3_monsters]
+*default*all_tier3
+
+;; AGROPROM UNDERGROUND
+
+[l03u_agr_underground_tier1_monsters]
+*default*all_tier1
+
+[l03u_agr_underground_tier2_monsters]
+*default*all_tier2
+
+[l03u_agr_underground_tier3_monsters]
+*default*all_tier3
+
+;; LAB X18
+
+[l04u_labx18_tier1_monsters]
+*default*all_tier1
+
+[l04u_labx18_tier2_monsters]
+*default*all_tier2
+
+[l04u_labx18_tier3_monsters]
+*default*all_tier3
+
+;; LAB X16
+
+[l08u_brainlab_tier1_monsters]
+*default*all_tier1
+
+[l08u_brainlab_tier2_monsters]
+*default*all_tier2
+
+[l08u_brainlab_tier3_monsters]
+*default*all_tier3
+
+;; LAB X19
+
+[l10u_bunker_tier1_monsters]
+*default*all_tier1
+
+[l10u_bunker_tier2_monsters]
+*default*all_tier2
+
+[l10u_bunker_tier3_monsters]
+*default*all_tier3
+
+;; SARCOFAG
+
+[l12u_sarcofag_tier1_monsters]
+*default*all_tier1
+
+[l12u_sarcofag_tier2_monsters]
+*default*all_tier2
+
+[l12u_sarcofag_tier3_monsters]
+*default*all_tier3
+
+;; MONOLITH CONTROL CENTER
+
+[l12u_control_monolith_tier1_monsters]
+*default*all_tier1
+
+[l12u_control_monolith_tier2_monsters]
+*default*all_tier2
+
+[l12u_control_monolith_tier3_monsters]
+*default*all_tier3
+
+;; WAR LAB
+
+;; l13u_warlab
+
+;; ZATON
+
+[zaton_tier1_monsters]
+*default*all_tier1
+
+[zaton_tier2_monsters]
+*default*all_tier2
+
+[zaton_tier3_monsters]
+*default*all_tier3
+
+;; JUPITER
+
+[jupiter_tier1_monsters]
+*default*all_tier1
+
+[jupiter_tier2_monsters]
+*default*all_tier2
+
+[jupiter_tier3_monsters]
+*default*all_tier3
+
+;; JUPITER UNDERGROUND
+
+[jupiter_underground_tier1_monsters]
+*default*all_tier1
+
+[jupiter_underground_tier2_monsters]
+*default*all_tier2
+
+[jupiter_underground_tier3_monsters]
+*default*all_tier3
+
+;; OUTSKIRTS
+
+[pripyat_tier1_monsters]
+*default*all_tier1
+
+[pripyat_tier2_monsters]
+*default*all_tier2
+
+[pripyat_tier3_monsters]
+*default*all_tier3
+
+;; LAB X8
+
+[labx8_tier1_monsters]
+*default*all_tier1
+
+[labx8_tier2_monsters]
+*default*all_tier2
+
+[labx8_tier3_monsters]
+*default*all_tier3
+
+;; TRUCK CEMETERY
+
+
+[k02_trucks_cemetery_tier1_monsters]
+*default*all_tier1
+
+[k02_trucks_cemetery_tier2_monsters]
+*default*all_tier2
+
+[k02_trucks_cemetery_tier3_monsters]
+*default*all_tier3
\ No newline at end of file
diff --git a/mods/Zone Customization Project/gamedata/configs/plugins/zcp/spawn_templates/balanced.ltx b/mods/Zone Customization Project/gamedata/configs/plugins/zcp/spawn_templates/balanced.ltx
new file mode 100644
index 00000000..b3ec8249
--- /dev/null
+++ b/mods/Zone Customization Project/gamedata/configs/plugins/zcp/spawn_templates/balanced.ltx
@@ -0,0 +1,330 @@
+;; Adapted from TheMrDemonized's "ZCP Kinda Balanced Spawns" (https://www.moddb.com/mods/stalker-anomaly/addons/zcp-balanced-spawns/)
+
+;; MARSH
+[k00_marsh_tier1_monsters]
+*balanced*k00_marsh
+
+[k00_marsh_tier2_monsters]
+*balanced*k00_marsh
+
+[k00_marsh_tier3_monsters]
+*balanced*k00_marsh
+
+;; ESCAPE
+[l01_escape_tier1_monsters]
+*balanced*l01_escape
+
+[l01_escape_tier2_monsters]
+*balanced*l01_escape
+
+[l01_escape_tier3_monsters]
+*balanced*l01_escape
+
+;; GARBAGE
+
+[l02_garbage_tier1_monsters]
+*balanced*l02_garbage
+
+[l02_garbage_tier2_monsters]
+*balanced*l02_garbage
+
+[l02_garbage_tier3_monsters]
+*balanced*l02_garbage
+
+;; AGROPROM
+
+[l03_agroprom_tier1_monsters]
+*balanced*l03_agroprom
+
+[l03_agroprom_tier2_monsters]
+*balanced*l03_agroprom
+
+[l03_agroprom_tier3_monsters]
+*balanced*l03_agroprom
+
+;; DARKSCAPE
+
+[k01_darkscape_tier1_monsters]
+*balanced*k01_darkscape
+
+[k01_darkscape_tier2_monsters]
+*balanced*k01_darkscape
+
+[k01_darkscape_tier3_monsters]
+*balanced*k01_darkscape
+
+;; DARK VALLEY
+
+[l04_darkvalley_tier1_monsters]
+*balanced*l04_darkvalley
+
+[l04_darkvalley_tier2_monsters]
+*balanced*l04_darkvalley
+
+[l04_darkvalley_tier3_monsters]
+*balanced*l04_darkvalley
+
+;; BAR
+;; l05_bar
+
+;; ROSTOK
+
+[l06_rostok_tier1_monsters]
+*balanced*l06_rostok
+
+[l06_rostok_tier2_monsters]
+*balanced*l06_rostok
+
+[l06_rostok_tier3_monsters]
+*balanced*l06_rostok
+
+;; MILITARY WAREHOUSES
+
+[l07_military_tier1_monsters]
+*balanced*l07_military
+
+[l07_military_tier2_monsters]
+*balanced*l07_military
+
+[l07_military_tier3_monsters]
+*balanced*l07_military
+
+;; YANTAR
+
+[l08_yantar_tier1_monsters]
+*balanced*l08_yantar
+
+[l08_yantar_tier2_monsters]
+*balanced*l08_yantar
+
+[l08_yantar_tier3_monsters]
+*balanced*l08_yantar
+
+;; DEAD CITY
+
+[l09_deadcity_tier1_monsters]
+*balanced*l09_deadcity
+
+[l09_deadcity_tier2_monsters]
+*balanced*l09_deadcity
+
+[l09_deadcity_tier3_monsters]
+*balanced*l09_deadcity
+
+;; LIMANSK
+
+[l10_limansk_tier1_monsters]
+*balanced*l10_limansk
+
+[l10_limansk_tier2_monsters]
+*balanced*l10_limansk
+
+[l10_limansk_tier3_monsters]
+*balanced*l10_limansk
+
+;; RADAR
+
+[l10_radar_tier1_monsters]
+*balanced*l10_radar
+
+[l10_radar_tier2_monsters]
+*balanced*l10_radar
+
+[l10_radar_tier3_monsters]
+*balanced*l10_radar
+
+;; RED FOREST
+
+[l10_red_forest_tier1_monsters]
+*balanced*l10_red_forest
+
+[l10_red_forest_tier2_monsters]
+*balanced*l10_red_forest
+
+[l10_red_forest_tier3_monsters]
+*balanced*l10_red_forest
+
+;; HOSPITAL
+
+;;l11_hospital
+
+;; Pripyat
+
+[l11_pripyat_tier1_monsters]
+*balanced*l11_pripyat
+
+[l11_pripyat_tier2_monsters]
+*balanced*l11_pripyat
+
+[l11_pripyat_tier3_monsters]
+*balanced*l11_pripyat
+
+;; Chernobyl NPP North
+
+[l12_stancia_tier1_monsters]
+*balanced*l12_stancia
+
+[l12_stancia_tier2_monsters]
+*balanced*l12_stancia
+
+[l12_stancia_tier3_monsters]
+*balanced*l12_stancia
+
+;; Chernobyl NPP South
+
+[l12_stancia_2_tier1_monsters]
+*balanced*l12_stancia_2
+
+[l12_stancia_2_tier2_monsters]
+*balanced*l12_stancia_2
+
+[l12_stancia_2_tier3_monsters]
+*balanced*l12_stancia_2
+
+;; GENERATORS
+
+[l13_generators_tier1_monsters]
+*balanced*l13_generators
+
+[l13_generators_tier2_monsters]
+*balanced*l13_generators
+
+[l13_generators_tier3_monsters]
+*balanced*l13_generators
+
+;; AGROPROM UNDERGROUND
+
+[l03u_agr_underground_tier1_monsters]
+*balanced*l03u_agr_underground
+
+[l03u_agr_underground_tier2_monsters]
+*balanced*l03u_agr_underground
+
+[l03u_agr_underground_tier3_monsters]
+*balanced*l03u_agr_underground
+
+;; LAB X18
+
+[l04u_labx18_tier1_monsters]
+*balanced*l04u_labx18
+
+[l04u_labx18_tier2_monsters]
+*balanced*l04u_labx18
+
+[l04u_labx18_tier3_monsters]
+*balanced*l04u_labx18
+
+;; LAB X16
+
+[l08u_brainlab_tier1_monsters]
+*balanced*l08u_brainlab
+
+[l08u_brainlab_tier2_monsters]
+*balanced*l08u_brainlab
+
+[l08u_brainlab_tier3_monsters]
+*balanced*l08u_brainlab
+
+;; LAB X19
+
+[l10u_bunker_tier1_monsters]
+*balanced*l10u_bunker
+
+[l10u_bunker_tier2_monsters]
+*balanced*l10u_bunker
+
+[l10u_bunker_tier3_monsters]
+*balanced*l10u_bunker
+
+;; SARCOFAG
+
+[l12u_sarcofag_tier1_monsters]
+*balanced*l12u_sarcofag
+
+[l12u_sarcofag_tier2_monsters]
+*balanced*l12u_sarcofag
+
+[l12u_sarcofag_tier3_monsters]
+*balanced*l12u_sarcofag
+
+;; MONOLITH CONTROL CENTER
+
+[l12u_control_monolith_tier1_monsters]
+*balanced*l12u_control_monolith
+
+[l12u_control_monolith_tier2_monsters]
+*balanced*l12u_control_monolith
+
+[l12u_control_monolith_tier3_monsters]
+*balanced*l12u_control_monolith
+
+;; WAR LAB
+
+;; l13u_warlab
+
+;; ZATON
+
+[zaton_tier1_monsters]
+*balanced*zaton
+
+[zaton_tier2_monsters]
+*balanced*zaton
+
+[zaton_tier3_monsters]
+*balanced*zaton
+
+;; JUPITER
+
+[jupiter_tier1_monsters]
+*balanced*jupiter
+
+[jupiter_tier2_monsters]
+*balanced*jupiter
+
+[jupiter_tier3_monsters]
+*balanced*jupiter
+
+;; JUPITER UNDERGROUND
+
+[jupiter_underground_tier1_monsters]
+*balanced*jupiter_underground
+
+[jupiter_underground_tier2_monsters]
+*balanced*jupiter_underground
+
+[jupiter_underground_tier3_monsters]
+*balanced*jupiter_underground
+
+;; OUTSKIRTS
+
+[pripyat_tier1_monsters]
+*balanced*pripyat
+
+[pripyat_tier2_monsters]
+*balanced*pripyat
+
+[pripyat_tier3_monsters]
+*balanced*pripyat
+
+;; LAB X8
+
+[labx8_tier1_monsters]
+*balanced*labx8
+
+[labx8_tier2_monsters]
+*balanced*labx8
+
+[labx8_tier3_monsters]
+*balanced*labx8
+
+;; TRUCK CEMETERY
+
+
+[k02_trucks_cemetery_tier1_monsters]
+*balanced*k02_trucks_cemetery
+
+[k02_trucks_cemetery_tier2_monsters]
+*balanced*k02_trucks_cemetery
+
+[k02_trucks_cemetery_tier3_monsters]
+*balanced*k02_trucks_cemetery
\ No newline at end of file
diff --git a/mods/Zone Customization Project/gamedata/configs/plugins/zcp/spawn_templates/default.ltx b/mods/Zone Customization Project/gamedata/configs/plugins/zcp/spawn_templates/default.ltx
new file mode 100644
index 00000000..99365ca1
--- /dev/null
+++ b/mods/Zone Customization Project/gamedata/configs/plugins/zcp/spawn_templates/default.ltx
@@ -0,0 +1,1028 @@
+;; MARSH
+[k00_marsh_tier1_monsters]
+simulation_boar
+simulation_flesh
+simulation_dog
+simulation_pseudodog
+zombied_sim_squad_mix
+simulation_zombie
+simulation_mix_zombie
+simulation_tushkano
+simulation_mix_dogs
+simulation_cat
+simulation_mix_boar_flesh
+
+[k00_marsh_tier2_monsters]
+simulation_zombie_3_6
+simulation_fracture
+simulation_lurker
+simulation_snork
+simulation_bloodsucker
+simulation_psysucker
+
+[k00_marsh_tier3_monsters]
+simulation_psy_dog_squad
+simulation_borya
+simulation_bloodsucker_black
+simulation_bloodsucker_red
+
+[k00_marsh_tier1_stalkers]
+stalker_sim_squad_novice
+army_sim_squad_novice
+renegade_sim_squad_novice
+csky_sim_squad_novice
+
+[k00_marsh_tier2_stalkers]
+stalker_sim_squad_advanced
+army_sim_squad_advanced
+renegade_sim_squad_advanced
+csky_sim_squad_advanced
+
+[k00_marsh_tier3_stalkers]
+stalker_sim_squad_veteran
+army_sim_squad_veteran
+renegade_sim_squad_veteran
+csky_sim_squad_veteran
+
+;; ESCAPE
+
+[l01_escape_tier1_monsters]
+zombied_sim_squad_mix
+simulation_mix_zombie
+simulation_zombie
+simulation_tushkano
+simulation_mix_dogs
+simulation_pseudodog
+simulation_cat
+simulation_mix_boar_flesh
+simulation_flesh
+simulation_boar
+simulation_mix_zombie
+simulation_dog
+
+[l01_escape_tier2_monsters]
+simulation_zombie_3_6
+simulation_fracture
+simulation_lurker
+simulation_snork
+simulation_bloodsucker
+simulation_psysucker
+simulation_borya
+
+[l01_escape_tier3_monsters]
+simulation_bloodsucker_2weak
+simulation_snork_2_3
+simulation_psysucker_1_2
+simulation_lurker_1_2
+simulation_psy_dog_squad
+simulation_karlik
+simulation_poltergeist
+simulation_controller
+simulation_burer
+
+[l01_escape_tier1_stalkers]
+stalker_sim_squad_novice
+csky_sim_squad_novice
+ecolog_sim_squad_novice
+bandit_sim_squad_novice
+
+[l01_escape_tier2_stalkers]
+csky_sim_squad_advanced
+ecolog_sim_squad_advanced
+stalker_sim_squad_advanced
+bandit_sim_squad_advanced
+
+[l01_escape_tier3_stalkers]
+csky_sim_squad_veteran
+ecolog_sim_squad_veteran
+stalker_sim_squad_veteran
+bandit_sim_squad_veteran
+
+;; GARBAGE
+
+[l02_garbage_tier1_monsters]
+simulation_zombie
+simulation_fracture
+zombied_sim_squad_mix
+simulation_mix_zombie
+simulation_tushkano
+simulation_mix_dogs
+simulation_pseudodog
+simulation_cat
+simulation_mix_boar_flesh
+simulation_flesh
+simulation_boar
+simulation_mix_zombie
+simulation_dog
+
+[l02_garbage_tier2_monsters]
+simulation_zombie_3_6
+simulation_fracture
+simulation_lurker
+simulation_snork
+simulation_bloodsucker
+simulation_psysucker
+simulation_snork_2_3
+simulation_psy_dog
+simulation_poltergeist_tele
+simulation_karlik
+simulation_burer
+simulation_controller
+
+[l02_garbage_tier3_monsters]
+simulation_borya
+simulation_chimera
+simulation_gigant
+simulation_psy_dog_squad
+simulation_poltergeist
+simulation_karlik
+simulation_burer
+simulation_controller
+
+[l02_garbage_tier1_stalkers]
+duty_sim_squad_novice
+ecolog_sim_squad_novice
+bandit_sim_squad_novice
+stalker_sim_squad_novice
+
+[l02_garbage_tier2_stalkers]
+duty_sim_squad_advanced
+ecolog_sim_squad_advanced
+bandit_sim_squad_advanced
+stalker_sim_squad_advanced
+
+[l02_garbage_tier3_stalkers]
+duty_sim_squad_veteran
+bandit_sim_squad_veteran
+
+;; AGROPROM
+
+[l03_agroprom_tier1_monsters]
+zombied_sim_squad_mix
+simulation_zombie_3_6
+simulation_mix_zombie
+simulation_mix_dogs
+simulation_pseudodog
+simulation_cat
+simulation_mix_boar_flesh
+simulation_flesh
+simulation_boar
+simulation_fracture
+simulation_lurker
+simulation_snork
+simulation_bloodsucker
+simulation_psysucker
+simulation_tushkano
+
+[l03_agroprom_tier2_monsters]
+simulation_fracture
+simulation_lurker
+simulation_snork
+simulation_bloodsucker
+simulation_psysucker
+simulation_lurker_1_2
+simulation_snork_2_3
+simulation_borya
+simulation_bloodsucker_1_2
+simulation_psy_dog
+simulation_poltergeist_tele
+simulation_karlik
+simulation_burer
+
+[l03_agroprom_tier3_monsters]
+simulation_chimera
+simulation_gigant
+simulation_psy_dog_squad
+simulation_poltergeist
+simulation_karlik
+simulation_burer
+simulation_controller
+
+[l03_agroprom_tier1_stalkers]
+army_sim_squad_novice
+ecolog_sim_squad_novice
+stalker_sim_squad_novice
+csky_sim_squad_novice
+
+[l03_agroprom_tier2_stalkers]
+army_sim_squad_advanced
+ecolog_sim_squad_advanced
+stalker_sim_squad_advanced
+csky_sim_squad_advanced
+
+[l03_agroprom_tier3_stalkers]
+
+;; DARKSCAPE
+
+[k01_darkscape_tier1_monsters]
+zombied_sim_squad_mix
+simulation_zombie
+simulation_mix_zombie
+simulation_tushkano
+simulation_dog
+simulation_mix_dogs
+simulation_pseudodog
+simulation_cat
+simulation_mix_boar_flesh
+simulation_flesh
+simulation_boar
+
+[k01_darkscape_tier2_monsters]
+zombied_sim_squad_mix
+simulation_zombie_3_6
+simulation_mix_zombie
+simulation_mix_dogs
+simulation_pseudodog
+simulation_cat
+simulation_mix_boar_flesh
+simulation_flesh
+simulation_boar
+simulation_fracture
+simulation_lurker
+simulation_snork
+simulation_bloodsucker
+simulation_psysucker
+simulation_bloodsucker_red
+
+[k01_darkscape_tier3_monsters]
+simulation_contr_5dog
+simulation_controller
+simulation_contr_3dog_4tush
+simulation_borya
+
+[k01_darkscape_tier1_stalkers]
+merc_sim_squad_novice
+stalker_sim_squad_novice
+renegade_sim_squad_novice
+isg_sim_squad_novice
+
+[k01_darkscape_tier2_stalkers]
+
+[k01_darkscape_tier3_stalkers]
+
+;; DARK VALLEY
+
+[l04_darkvalley_tier1_monsters]
+zombied_sim_squad_mix
+simulation_zombie
+simulation_mix_zombie
+simulation_tushkano
+simulation_dog
+simulation_mix_dogs
+simulation_pseudodog
+simulation_cat
+simulation_cat
+simulation_mix_boar_flesh
+simulation_flesh
+simulation_boar
+
+[l04_darkvalley_tier2_monsters]
+zombied_sim_squad_mix
+simulation_zombie_3_6
+simulation_mix_zombie
+simulation_mix_dogs
+simulation_pseudodog
+simulation_cat
+simulation_mix_boar_flesh
+simulation_flesh
+simulation_boar
+simulation_fracture
+simulation_lurker
+simulation_snork
+simulation_bloodsucker
+simulation_psysucker
+simulation_borya
+
+[l04_darkvalley_tier3_monsters]
+simulation_lurker_1_2
+simulation_snork_2_3
+simulation_bloodsucker_1_2
+simulation_psy_dog
+simulation_poltergeist_tele
+simulation_karlik
+simulation_burer
+simulation_controller
+simulation_gigant
+
+[l04_darkvalley_tier1_stalkers]
+army_sim_squad_novice
+stalker_sim_squad_novice
+bandit_sim_squad_advanced
+
+;; BAR
+;; l05_bar
+
+;; ROSTOK
+
+[l06_rostok_tier1_monsters]
+zombied_sim_squad_mix
+simulation_zombie
+simulation_mix_zombie
+simulation_tushkano
+simulation_dog
+simulation_mix_dogs
+simulation_pseudodog
+simulation_cat
+simulation_cat
+simulation_mix_boar_flesh
+simulation_flesh
+simulation_boar
+
+[l06_rostok_tier2_monsters]
+simulation_fracture
+simulation_lurker
+simulation_lurker_1_2
+simulation_snork_2_3
+simulation_bloodsucker
+simulation_bloodsucker_1_2
+simulation_psysucker
+simulation_psy_dog
+simulation_poltergeist_tele
+
+[l06_rostok_tier3_monsters]
+simulation_chimera
+simulation_gigant
+simulation_psy_dog_squad
+simulation_poltergeist
+simulation_karlik
+simulation_burer
+simulation_controller
+
+;; MILITARY WAREHOUSES
+
+[l07_military_tier1_monsters]
+zombied_sim_squad_mix
+simulation_zombie
+simulation_mix_zombie
+simulation_tushkano
+simulation_dog
+simulation_mix_dogs
+simulation_pseudodog
+simulation_cat
+simulation_mix_boar_flesh
+simulation_flesh
+simulation_boar
+
+[l07_military_tier2_monsters]
+zombied_sim_squad_mix
+simulation_zombie_3_6
+simulation_mix_zombie
+simulation_mix_dogs
+simulation_pseudodog
+simulation_cat
+simulation_mix_boar_flesh
+simulation_flesh
+simulation_boar
+simulation_fracture
+simulation_lurker
+simulation_snork
+simulation_bloodsucker
+simulation_psysucker
+
+[l07_military_tier3_monsters]
+simulation_chimera
+simulation_psy_dog_squad
+simulation_poltergeist
+simulation_karlik
+simulation_burer_1_2_day
+simulation_controller
+simulation_bloodsucker_red
+simulation_bloodsucker_black
+simulation_bloodsucker_2weak
+
+;; YANTAR
+
+[l08_yantar_tier1_monsters]
+zombied_sim_squad_novice
+zombied_sim_squad_advanced
+simulation_dog
+simulation_snork
+simulation_tushkano
+simulation_fracture
+simulation_snork
+
+[l08_yantar_tier2_monsters]
+simulation_fracture
+simulation_lurker
+simulation_snork
+simulation_bloodsucker
+simulation_psysucker
+zombied_sim_squad_veteran
+
+[l08_yantar_tier3_monsters]
+simulation_borya
+simulation_bloodsucker_red
+simulation_bloodsucker
+simulation_psy_dog
+simulation_poltergeist_tele
+
+;; DEAD CITY
+
+[l09_deadcity_tier1_monsters]
+zombied_sim_squad_mix
+simulation_zombie
+simulation_mix_zombie
+simulation_tushkano
+simulation_dog
+simulation_mix_dogs
+simulation_pseudodog
+simulation_cat
+simulation_mix_boar_flesh
+simulation_flesh
+simulation_boar
+
+[l09_deadcity_tier2_monsters]
+zombied_sim_squad_mix
+simulation_zombie_3_6
+simulation_mix_zombie
+simulation_mix_dogs
+simulation_pseudodog
+simulation_cat
+simulation_fracture
+simulation_lurker
+simulation_snork
+simulation_bloodsucker
+simulation_psysucker
+
+[l09_deadcity_tier3_monsters]
+simulation_chimera
+simulation_gigant
+simulation_psy_dog_squad
+simulation_poltergeist
+simulation_karlik
+simulation_burer
+simulation_controller
+simulation_borya
+
+;; LIMANSK
+
+[l10_limansk_tier1_monsters]
+simulation_zombie
+simulation_mix_zombie
+simulation_fracture
+simulation_zombie_3_6
+zombied_sim_squad_novice
+
+[l10_limansk_tier2_monsters]
+simulation_bloodsucker
+simulation_psysucker
+simulation_zombie_3_6
+zombied_sim_squad_mix
+zombied_sim_squad_advanced
+
+[l10_limansk_tier3_monsters]
+simulation_burer
+simulation_bloodsucker_red
+simulation_bloodsucker_black
+simulation_bloodsucker_1_2
+simulation_psysucker_black
+zombied_sim_squad_veteran
+
+;; RADAR
+
+[l10_radar_tier1_monsters]
+simulation_fracture
+simulation_lurker
+simulation_snork
+simulation_bloodsucker
+simulation_psysucker
+zombied_sim_squad_mix
+simulation_zombie_3_6
+simulation_mix_zombie
+simulation_mix_dogs
+simulation_mix_dogs
+simulation_pseudodog
+simulation_cat
+simulation_mix_boar_flesh
+simulation_flesh
+simulation_boar
+
+[l10_radar_tier2_monsters]
+simulation_psy_dog
+simulation_poltergeist_tele
+simulation_karlik
+simulation_burer
+simulation_controller
+simulation_zombie_3_6
+simulation_borya
+simulation_snork_2_3
+
+[l10_radar_tier3_monsters]
+simulation_psy_dog_squad
+simulation_poltergeist
+simulation_poltergeist_flame
+simulation_burer_1_2_day
+simulation_gigant
+simulation_controller
+simulation_karlik
+simulation_burer
+
+;; RED FOREST
+
+[l10_red_forest_tier1_monsters]
+simulation_fracture
+simulation_lurker
+simulation_snork
+simulation_bloodsucker
+simulation_psysucker
+zombied_sim_squad_mix
+simulation_zombie_3_6
+simulation_mix_zombie
+simulation_mix_dogs
+simulation_pseudodog
+simulation_cat
+simulation_mix_boar_flesh
+simulation_flesh
+simulation_boar
+
+[l10_red_forest_tier2_monsters]
+simulation_burer
+simulation_lurker
+simulation_bloodsucker
+simulation_psysucker
+simulation_psy_dog
+zombied_sim_squad_advanced
+simulation_borya
+
+[l10_red_forest_tier3_monsters]
+simulation_psy_dog_squad
+simulation_poltergeist_tele
+simulation_bloodsucker_black
+simulation_bloodsucker_2weak
+simulation_contr_3dog_4tush
+simulation_contr_4zomb_norm
+simulation_contr_2sn_4zomb
+
+;; HOSPITAL
+
+;;l11_hospital
+
+;; Pripyat
+
+[l11_pripyat_tier1_monsters]
+zombied_sim_squad_novice
+simulation_dog
+simulation_snork
+simulation_tushkano
+zombied_sim_squad_mix
+simulation_zombie_3_6
+simulation_mix_zombie
+simulation_mix_dogs
+simulation_pseudodog
+simulation_cat
+simulation_mix_boar_flesh
+simulation_flesh
+simulation_boar
+simulation_fracture
+simulation_lurker
+simulation_borya
+
+[l11_pripyat_tier2_monsters]
+zombied_sim_squad_advanced
+simulation_burer
+simulation_controller
+simulation_lurker_1_2
+simulation_bloodsucker
+simulation_psysucker
+simulation_snork_2_3
+simulation_bloodsucker_1_2
+simulation_psy_dog
+simulation_poltergeist
+simulation_poltergeist_tele
+simulation_karlik
+zombied_sim_squad_veteran
+simulation_chimera
+
+[l11_pripyat_tier3_monsters]
+simulation_psy_dog_squad
+simulation_chimera
+simulation_gigant
+simulation_poltergeist_black
+simulation_poltergeist_flame
+simulation_burer_1_2_day
+
+;; Chernobyl NPP North
+
+[l12_stancia_tier1_monsters]
+simulation_fracture
+simulation_lurker
+simulation_bloodsucker
+simulation_psysucker
+
+[l12_stancia_tier2_monsters]
+simulation_lurker_1_2
+simulation_snork_2_3
+simulation_bloodsucker_1_2
+simulation_psy_dog
+simulation_poltergeist_tele
+simulation_poltergeist
+simulation_karlik
+simulation_burer
+simulation_controller
+simulation_chimera
+
+[l12_stancia_tier3_monsters]
+simulation_gigant
+simulation_chimera
+simulation_psy_dog_squad
+simulation_poltergeist
+simulation_poltergeist_black
+simulation_poltergeist_flame
+
+;; Chernobyl NPP South
+
+[l12_stancia_2_tier1_monsters]
+simulation_fracture
+simulation_lurker
+simulation_bloodsucker
+simulation_psysucker
+
+[l12_stancia_2_tier2_monsters]
+simulation_lurker_1_2
+simulation_snork_2_3
+simulation_bloodsucker_1_2
+simulation_psy_dog
+simulation_poltergeist_tele
+simulation_poltergeist
+simulation_karlik
+simulation_burer
+simulation_controller
+simulation_chimera
+
+[l12_stancia_2_tier3_monsters]
+simulation_gigant
+simulation_chimera
+simulation_psy_dog_squad
+simulation_poltergeist_black
+simulation_poltergeist_flame
+
+;; GENERATORS
+
+[l13_generators_tier1_monsters]
+simulation_snork_2_5
+simulation_tushkano_7_10
+simulation_pseudodog
+simulation_psy_dog
+simulation_psysucker
+
+[l13_generators_tier2_monsters]
+simulation_psy_dog_squad
+simulation_chimera
+simulation_chimera_2weak
+simulation_controller
+simulation_bloodsucker_2weak
+simulation_bloodsucker_black
+
+[l13_generators_tier3_monsters]
+simulation_contr_6gzomb
+simulation_contr_5rat_3tush
+simulation_contr_4tush_3sn
+simulation_gigant
+simulation_controller_psy
+simulation_gigant_2weak
+
+;; AGROPROM UNDERGROUND
+
+[l03u_agr_underground_tier1_monsters]
+simulation_zombie_blind
+simulation_zombie_blind_3zomb
+simulation_snork
+zombied_sim_squad_novice
+simulation_tushkano
+simulation_mix_zombie
+
+[l03u_agr_underground_tier2_monsters]
+simulation_bloodsucker
+simulation_snork_2_5
+simulation_poltergeist_tele
+simulation_psysucker
+zombied_sim_squad_advanced
+zombied_sim_squad_veteran
+
+[l03u_agr_underground_tier3_monsters]
+simulation_contr_3sn_3gzomb
+simulation_bur_5rat_day
+simulation_poltergeist_flame
+simulation_karlik
+simulation_bloodsucker_2weak
+simulation_borya
+
+;; LAB X18
+
+[l04u_labx18_tier1_monsters]
+simulation_tushkano
+simulation_psysucker
+simulation_snork
+simulation_zombie_blind
+simulation_zombie
+simulation_poltergeist_tele
+
+[l04u_labx18_tier2_monsters]
+simulation_controller
+simulation_psysucker_black
+simulation_karlik
+simulation_bur_5rat_day
+simulation_bloodsucker
+simulation_zombie_blind_3zomb
+simulation_snork_2_3
+simulation_poltergeist
+
+[l04u_labx18_tier3_monsters]
+simulation_contr_5zomb_weak
+simulation_snork_2_5
+simulation_poltergeist_black
+simulation_poltergeist_flame
+simulation_contr_3sn_3gzomb
+
+;; LAB X16
+
+[l08u_brainlab_tier1_monsters]
+simulation_karlik
+simulation_zombie_blind
+simulation_tushkano_7_10
+simulation_fracture
+simulation_snork
+simulation_psysucker
+zombied_sim_squad_novice
+
+[l08u_brainlab_tier2_monsters]
+simulation_psysucker_1_2
+simulation_bur_5rat_day
+simulation_contr_5zomb_weak
+simulation_snork_2_3
+simulation_controller
+zombied_sim_squad_advanced
+simulation_zombie_blind_3zomb
+
+[l08u_brainlab_tier3_monsters]
+simulation_contr_4tush_3sn
+simulation_controller_psy
+simulation_snork_2_5
+zombied_sim_squad_veteran
+
+;; LAB X19
+
+[l10u_bunker_tier1_monsters]
+simulation_snork
+simulation_zombie_blind
+simulation_psysucker
+simulation_mix_zombie
+simulation_zombie_3_6
+
+[l10u_bunker_tier2_monsters]
+simulation_bloodsucker
+simulation_psysucker_1_2
+simulation_bloodsucker_1_2
+simulation_bloodsucker_2weak
+simulation_snork_2_3
+
+[l10u_bunker_tier3_monsters]
+simulation_bloodsucker_black
+simulation_bloodsucker_red
+simulation_snork_2_5
+
+;; SARCOFAG
+
+[l12u_sarcofag_tier1_monsters]
+simulation_tushkano
+simulation_poltergeist_tele
+simulation_bloodsucker
+
+[l12u_sarcofag_tier2_monsters]
+simulation_bloodsucker_1_2
+simulation_poltergeist
+simulation_tushkano_7_10
+simulation_bloodsucker_2weak
+
+[l12u_sarcofag_tier3_monsters]
+simulation_poltergeist_black
+simulation_poltergeist_flame
+simulation_bloodsucker_black
+simulation_bloodsucker_red
+
+;; MONOLITH CONTROL CENTER
+
+[l12u_control_monolith_tier1_monsters]
+simulation_poltergeist_tele
+zombied_sim_squad_novice
+zombied_sim_squad_mix
+
+[l12u_control_monolith_tier2_monsters]
+simulation_poltergeist
+zombied_sim_squad_advanced
+
+[l12u_control_monolith_tier3_monsters]
+simulation_poltergeist_black
+simulation_poltergeist_flame
+zombied_sim_squad_veteran
+
+;; WAR LAB
+
+;; l13u_warlab
+
+;; ZATON
+
+[zaton_tier1_monsters]
+simulation_zombie
+zombied_sim_squad_novice
+simulation_snork
+simulation_dog
+simulation_mix_zombie
+simulation_tushkano
+zombied_sim_squad_mix
+simulation_cat
+simulation_flesh
+simulation_mix_boar_flesh
+simulation_boar
+simulation_zombie_3_6
+simulation_fracture
+
+[zaton_tier2_monsters]
+zombied_sim_squad_advanced
+simulation_snork_2_3
+simulation_bloodsucker
+simulation_mix_dogs
+simulation_pseudodog
+simulation_lurker
+simulation_psysucker
+simulation_psy_dog
+simulation_zombie_3_6
+simulation_zombie_blind_3zomb
+simulation_burer
+
+[zaton_tier3_monsters]
+zombied_sim_squad_veteran
+simulation_bloodsucker_1_2
+simulation_controller
+simulation_poltergeist
+simulation_lurker_1_2
+simulation_chimera
+simulation_gigant
+simulation_psy_dog_squad
+simulation_karlik
+simulation_burer
+simulation_bloodsucker_red
+simulation_bloodsucker_black
+simulation_bloodsucker_2weak
+
+;; JUPITER
+
+[jupiter_tier1_monsters]
+zombied_sim_squad_mix
+simulation_mix_zombie
+simulation_mix_dogs
+simulation_pseudodog
+simulation_cat
+simulation_zombie_3_6
+simulation_mix_boar_flesh
+simulation_flesh
+simulation_boar
+simulation_fracture
+simulation_snork
+simulation_tushkano
+
+[jupiter_tier2_monsters]
+simulation_lurker
+simulation_borya
+simulation_bloodsucker
+simulation_psysucker
+simulation_lurker_1_2
+simulation_snork_2_3
+simulation_psy_dog
+simulation_poltergeist_tele
+simulation_karlik
+simulation_burer
+simulation_controller
+
+[jupiter_tier3_monsters]
+simulation_bloodsucker_1_2
+simulation_chimera
+simulation_gigant
+simulation_psy_dog_squad
+simulation_poltergeist
+simulation_bloodsucker_red
+simulation_bloodsucker_black
+simulation_bloodsucker_2weak
+
+;; JUPITER UNDERGROUND
+
+[jupiter_underground_tier1_monsters]
+simulation_tushkano
+simulation_snork
+simulation_psysucker
+simulation_zombie_blind
+zombied_sim_squad_novice
+zombied_sim_squad_mix
+
+[jupiter_underground_tier2_monsters]
+simulation_bloodsucker
+simulation_zombie_blind_3zomb
+simulation_karlik
+simulation_bur_5rat_day
+zombied_sim_squad_advanced
+zombied_sim_squad_veteran
+
+[jupiter_underground_tier3_monsters]
+simulation_controller
+simulation_bloodsucker_black
+simulation_bloodsucker_red
+simulation_chimera
+simulation_lurker_1_2
+
+;; OUTSKIRTS
+
+[pripyat_tier1_monsters]
+simulation_snork
+simulation_psysucker
+simulation_zombie_blind
+zombied_sim_squad_novice
+zombied_sim_squad_mix
+simulation_psy_dog
+simulation_cat
+simulation_fracture
+simulation_zombie_3_6
+simulation_bloodsucker
+
+[pripyat_tier2_monsters]
+zombied_sim_squad_advanced
+zombied_sim_squad_veteran
+simulation_burer
+simulation_snork_2_3
+simulation_poltergeist
+simulation_poltergeist_tele
+simulation_zombie_blind_3zomb
+simulation_controller
+simulation_bloodsucker_1_2
+simulation_bloodsucker_2weak
+
+[pripyat_tier3_monsters]
+simulation_chimera_2weak
+simulation_chimera
+simulation_gigant
+simulation_borya
+simulation_snork_2_5
+simulation_poltergeist_black
+simulation_poltergeist_flame
+simulation_contr_3dog_4tush
+simulation_bloodsucker_black
+simulation_bloodsucker_red
+
+;; LAB X8
+
+[labx8_tier1_monsters]
+simulation_tushkano
+simulation_snork
+simulation_poltergeist_tele
+simulation_controller
+simulation_burer
+simulation_karlik
+
+[labx8_tier2_monsters]
+simulation_snork_2_5
+simulation_bloodsucker_2weak
+simulation_poltergeist
+simulation_contr_5rat_3tush
+
+[labx8_tier3_monsters]
+simulation_poltergeist_flame
+simulation_poltergeist_black
+simulation_contr_3sn_3gzomb
+simulation_controller_psy
+
+;; TRUCK CEMETERY
+
+
+[k02_trucks_cemetery_tier1_monsters]
+zombied_sim_squad_mix
+simulation_zombie
+simulation_mix_zombie
+simulation_tushkano
+simulation_dog
+simulation_mix_dogs
+simulation_pseudodog
+simulation_cat
+simulation_mix_boar_flesh
+simulation_flesh
+simulation_boar
+simulation_fracture
+simulation_snork
+zombied_sim_squad_novice
+
+[k02_trucks_cemetery_tier2_monsters]
+simulation_zombie_3_6
+simulation_lurker
+simulation_bloodsucker
+simulation_psysucker
+zombied_sim_squad_advanced
+simulation_psy_dog
+simulation_poltergeist_tele
+simulation_karlik
+simulation_burer
+
+[k02_trucks_cemetery_tier3_monsters]
+simulation_chimera
+simulation_gigant
+zombied_sim_squad_veteran
+simulation_burer_1_2_day
+simulation_controller
+simulation_psy_dog_squad
\ No newline at end of file
diff --git a/mods/Zone Customization Project/gamedata/configs/plugins/zcp/squads_by_type.ltx b/mods/Zone Customization Project/gamedata/configs/plugins/zcp/squads_by_type.ltx
new file mode 100644
index 00000000..c360288c
--- /dev/null
+++ b/mods/Zone Customization Project/gamedata/configs/plugins/zcp/squads_by_type.ltx
@@ -0,0 +1,129 @@
+[dogp]
+simulation_dog
+simulation_mix_dogs
+simulation_pseudodog
+simulation_dog_5_7
+simulation_contr_5dog
+simulation_contr_3dog_4tush
+
+[psydogp]
+simulation_psy_dog
+simulation_psy_dog_squad
+
+[ratp]
+simulation_bur_5rat_day
+simulation_contr_5rat_3tush
+
+[tushkanop]
+simulation_tushkano
+simulation_tushkano_7_10
+simulation_contr_5rat_3tush
+simulation_contr_3dog_4tush
+simulation_contr_4tush_3sn
+
+[zombiep]
+simulation_zombie
+simulation_zombie_blind
+simulation_zombie_3_6
+simulation_mix_zombie
+simulation_zombie_blind_3zomb
+simulation_zombie_blind_3zomb_civ
+simulation_contr_3sn_3gzomb
+simulation_contr_6gzomb
+simulation_contr_2sn_4zomb
+
+[fracturep]
+simulation_fracture
+
+[catp]
+simulation_cat
+simulation_cat_3_5
+
+[fleshp]
+simulation_flesh
+simulation_mix_boar_flesh
+
+[boarp]
+simulation_boar
+simulation_mix_boar_flesh
+simulation_boar_3_5
+
+[snorkp]
+simulation_snork
+simulation_snork_2_3
+simulation_snork_2_5
+simulation_contr_3sn_3gzomb
+simulation_contr_2sn_4zomb
+simulation_contr_4tush_3sn
+
+[psysuckerp]
+simulation_psysucker
+simulation_psysucker_white
+simulation_psysucker_brown
+simulation_psysucker_black
+simulation_psysucker_1_2
+
+[bloodsuckerp]
+simulation_bloodsucker
+simulation_bloodsucker_2weak
+simulation_bloodsucker_green
+simulation_bloodsucker_red
+simulation_bloodsucker_black
+simulation_bloodsucker_1_2
+
+[lurkerp]
+simulation_lurker_blue
+simulation_lurker_brown
+simulation_lurker_black
+simulation_lurker
+simulation_lurker_1_2
+
+[karlikp]
+simulation_karlik
+
+[burerp]
+simulation_burer
+simulation_burer_1_2_day
+simulation_bur_5rat_day
+simulation_burer_2_3
+
+[poltergeistp]
+simulation_poltergeist_tele
+simulation_poltergeist
+simulation_poltergeist_flame
+simulation_poltergeist_black
+
+[controllerp]
+simulation_controller
+simulation_contr_5rat_3tush
+simulation_contr_5dog
+simulation_contr_3dog_4tush
+simulation_contr_3sn_3gzomb
+simulation_contr_6gzomb
+simulation_contr_2sn_4zomb
+simulation_contr_4tush_3sn
+simulation_contr_5zomb_weak
+simulation_contr_4zomb_norm
+simulation_contr_4zomb_str
+simulation_contr_5sn
+simulation_controller_psy
+
+[chimerap]
+simulation_chimera
+simulation_chimera_2weak
+
+[gigantp]
+simulation_gigant
+simulation_gigant_2weak
+
+[bibliotekarp]
+simulation_bibliotekar
+
+[boryap]
+simulation_borya
+
+[zombiedp]
+zombied_sim_squad_novice
+zombied_sim_squad_mix
+zombied_sim_squad_advanced
+zombied_sim_squad_veteran
\ No newline at end of file
diff --git a/mods/Zone Customization Project/gamedata/configs/text/eng/ui_st_smr_amain.xml b/mods/Zone Customization Project/gamedata/configs/text/eng/ui_st_smr_amain.xml
new file mode 100644
index 00000000..4eb256d6
--- /dev/null
+++ b/mods/Zone Customization Project/gamedata/configs/text/eng/ui_st_smr_amain.xml
@@ -0,0 +1,85 @@
+
+
+
+
+ Main
+
+
+ You're not in-game. Any changes made now will apply when starting a new game, but will be overwritten if a savefile you load has a saved configuration.
+
+
+ You're in-game. Any changes made now will be saved and loaded together with your savefile.
+
+
+ Most options have tooltips. If you're unsure what an option does hover your mouse over its name for a description.
+
+
+
+ FATAL ERROR: INTERNAL MEMORY CORRUPTION DETECTED
+
+
+ Enable ZCP
+
+
+ Debug Logging
+
+
+ Enables debug logging. WARNING: This will very quickly inflate your logfile as well as the seperate logfile "dph_zcp.log".
+
+
+ Don't load configuration from savefile
+
+
+ Overrides loading configuration from savefile. Useful if you suspect the stored data is corrupted or otherwise invalid.
+
+
+ Respawn time
+
+
+ 3 Hours
+
+
+ 6 Hours
+
+
+ 12 Hours
+
+
+ 1 Day (default)
+
+
+ 2 Days
+
+
+ 4 Days
+
+
+ 1 Week
+
+
+ 2 Weeks
+
+
+ Never
+
+
+ These population factor settings will override the Anomaly built-in ones whenever ZCP is enabled.
+
+
+ Mutants population factor
+
+
+ Stalkers population factor
+
+
+ Changes the respawn timer for all stalker, mutant and zombie spawns.
+
+
+ Broken PDAs
+
+
+ Turns your helpful PDA into a paperweight, complete with lovely error message.
+
+
\ No newline at end of file
diff --git a/mods/Zone Customization Project/gamedata/configs/text/eng/ui_st_smr_anomalies.xml b/mods/Zone Customization Project/gamedata/configs/text/eng/ui_st_smr_anomalies.xml
new file mode 100644
index 00000000..079a1e23
--- /dev/null
+++ b/mods/Zone Customization Project/gamedata/configs/text/eng/ui_st_smr_anomalies.xml
@@ -0,0 +1,42 @@
+
+
+
+
+
+ Amount of dynamic anomalies
+
+
+ If dynamic anomalies are enabled, this will increase/decrease the chance of them to appear. Without ZCP the game always uses 35%.
+
+
+ Enable "Pulse" Anomaly
+
+
+ "Pulse" is the anomaly that appears as light above you sometimes and causes thunder and a lightning bolt to hit the ground.
+
+
+ Anomaly types
+
+
+ Below you can control which types of dynamic anomalies will spawn.
+
+
+ Electric
+
+
+ Chemical
+
+
+ Thermal
+
+
+ Gravitational
+
+
+ Radioactive
+
+
\ No newline at end of file
diff --git a/mods/Zone Customization Project/gamedata/configs/text/eng/ui_st_smr_loot.xml b/mods/Zone Customization Project/gamedata/configs/text/eng/ui_st_smr_loot.xml
new file mode 100644
index 00000000..b9fa6c9b
--- /dev/null
+++ b/mods/Zone Customization Project/gamedata/configs/text/eng/ui_st_smr_loot.xml
@@ -0,0 +1,137 @@
+
+
+
+
+ Scattered loot
+
+
+ Changes the amount of items found lying around in the world. This will only have an effect when starting a new game.
+
+
+ The options below add a chance to find some extra items in stash boxes and on dead NPCs. Very helpful if you're playing with the "None" base population preset.
+
+
+
+ Show PDA notification
+
+
+ Shows a notification whenever the player finds an extra item.
+
+
+ Found a repair kit
+
+
+ Found some ammo
+
+
+ Found an useful item
+
+
+ Found a medical item
+
+
+ Found a magazine for your weapon
+
+
+ Found a lootbox
+
+
+ Find extra items on NPCs
+
+
+ NPC item spawn chance
+
+
+ Chance to find extra items on NPCs. If sucessful there will be a second roll using the regular chance to find items in stash boxes.
+
+
+
+ Extra item spawns in stash boxes.
+
+
+ Spawn repair kits
+
+
+ Adds a chance to find repair kits in stash boxes.
+
+
+ Spawn parts repair items
+
+
+ Enables/disables part repair items as minor repair kits. If you don't want to bother with repairing/replacing weapon and outfit parts, you can disable spawns for related items.
+
+
+ Repair kit chance
+
+
+ Chance to find repair kits in stash boxes.
+
+
+ Spawn minor repair kits
+
+
+ Adds a chance to find minor repair kits such as glue tubes and part kits in stash boxes.
+
+
+ Minor repair kit chance
+
+
+ Spawn chance of minor repair kits, such as glue tubes and part kits.
+
+
+
+ Spawn extra ammo
+
+
+ Adds a chance to find ammo in stash boxes.
+
+
+ Ammo chance
+
+
+ Percentage chance to find ammo in stash boxes.
+
+
+ Spawn old ammo
+
+
+ Old ammo chance
+
+
+ Percentage chance that the found ammo is old.
+
+
+ Ammo amount
+
+
+ Amount multiplier of ammo found.
+
+
+
+ Spawn useful items
+
+
+ Adds a chance to find items that are difficult to come by without traders in stash boxes. Includes knifes, backpacks, detectors, headlamps and such.
+
+
+ Useful item chance
+
+
+ Percentage chance to find useful items in stash boxes.
+
+
+
+ Spawn medical items
+
+
+ Adds a chance to find medical items in stash boxes
+
+
+ Medical item chance
+
+
+ Percentage chance to find medical items in stash boxes.
+
+
\ No newline at end of file
diff --git a/mods/Zone Customization Project/gamedata/configs/text/eng/ui_st_smr_mutants.xml b/mods/Zone Customization Project/gamedata/configs/text/eng/ui_st_smr_mutants.xml
new file mode 100644
index 00000000..7ef9312c
--- /dev/null
+++ b/mods/Zone Customization Project/gamedata/configs/text/eng/ui_st_smr_mutants.xml
@@ -0,0 +1,148 @@
+
+
+
+ Mutant Types
+
+
+ Mutant squad size
+
+
+ Squad size variance
+
+
+ The higher this is, the more random the size of mutant squads will be.
+
+
+ Spawn random mutant squads
+
+
+ Replaces mutant squads with other, random mutant squads. This means you may find certain mutants where you previously didn't expect them.
+
+
+ Random mutant squads chance
+
+
+ Below you can enable or disable mutant types. Disabled mutants will not appear in the Zone.
+
+
+ Replace removed squads
+
+
+ Replaces squads only containing disabled mutants with squads containing enabled mutants.
+
+
+
+ Dogs
+
+
+ Psy-Dogs
+
+
+ Tushkanos
+
+
+ Fractures
+
+
+ Cats
+
+
+ Fleshes
+
+
+ Boars
+
+
+ Snorks
+
+
+ Psysuckers
+
+
+ Bloodsuckers
+
+
+ Lurkers
+
+
+ Karliks
+
+
+ Burers
+
+
+ Poltergeists
+
+
+ Controllers
+
+
+ Chimeras
+
+
+ Pseudogiants
+
+
+ Rats
+
+
+ Zombies
+
+
+
+ Unused Mutants
+
+
+ Below you can enable mutants which are present in the game files but not used anywhere. They will then appar in the Zone as random mutant squads.
+
+
+ Bibliotekars
+
+
+ Boryas
+
+
+ Below you can enable mutant variations which are present in the game files but not used anywhere. They will then spawn together with the used variations.
+
+
+ Unused mutant type chance
+
+
+ This is the percent chance that normal variations of a mutant will be replaced with unused ones.
+
+
+ Big Bloodsuckers
+
+
+ Electro Burers
+
+
+ Fire Burers
+
+
+ Bolot Fleshes
+
+
+ Pseudogiant Jumpers
+
+
+ Maskless Snorks
+
+
+ Female Zombies
+
+
+ Ghoul Zombies
+
+
+ Ghost Zombies
+
+
+ Teta Zombies
+
+
+ Witch Zombies
+
+
\ No newline at end of file
diff --git a/mods/Zone Customization Project/gamedata/configs/text/eng/ui_st_smr_spawns.xml b/mods/Zone Customization Project/gamedata/configs/text/eng/ui_st_smr_spawns.xml
new file mode 100644
index 00000000..6dcab80e
--- /dev/null
+++ b/mods/Zone Customization Project/gamedata/configs/text/eng/ui_st_smr_spawns.xml
@@ -0,0 +1,80 @@
+
+
+
+
+ Spawn templates allow more control over random mutant spawns. With them you can adjust which mutants spawn in which levels, and how long it takes for stronger mutants to appear in the zone.
+
+
+ Template file
+
+
+
+ The following template files are included:\n
+ - Default: Similar to vanilla spawns, you will mostly see mutants in each level that spawn there in the base game.\n
+ - All: All mutants can spawn in all levels but are still sorted into tiers.\n
+ - Balanced: A port of the values used in TheMrDemonized's. "ZCP Kinda Balanced Spawns" mod for ZCP 1.4.\n
+ If you add your own spawn template it will automatically appear alongside the included ones.
+
+
+ Apply to random mutant spawns
+
+
+ Apply to replaced disabled mutant spawns
+
+
+
+ First week
+
+
+ Tier 1 chance
+
+
+ Tier 2 chance
+
+
+ Tier 3 chance
+
+
+
+ Second week
+
+
+ Tier 1 chance
+
+
+ Tier 2 chance
+
+
+ Tier 3 chance
+
+
+
+ Third week
+
+
+ Tier 1 chance
+
+
+ Tier 2 chance
+
+
+ Tier 3 chance
+
+
+
+ Fourth week and beyond
+
+
+ Tier 1 chance
+
+
+ Tier 2 chance
+
+
+ Tier 3 chance
+
+
\ No newline at end of file
diff --git a/mods/Zone Customization Project/gamedata/configs/text/eng/ui_st_smr_stalkers.xml b/mods/Zone Customization Project/gamedata/configs/text/eng/ui_st_smr_stalkers.xml
new file mode 100644
index 00000000..de5aa0bc
--- /dev/null
+++ b/mods/Zone Customization Project/gamedata/configs/text/eng/ui_st_smr_stalkers.xml
@@ -0,0 +1,135 @@
+
+
+
+
+ Stalker squad size
+
+
+ Squad size variance
+
+
+ The higher this is, the more random the size of stalker squads will be.
+
+
+ Civil War
+
+
+ Disabled
+
+
+ Stalkers
+
+
+ Squads
+
+
+ If enabled all stalkers or stalker squads are hostile to each other.
+
+
+ Civil War affects base population
+
+
+ If enabled, Stalkers belonging to base populations are affected by civil war settings.
+
+
+ Monolith allied (Civil War)
+
+
+ Keeps Monolith stalkers allied to each other, regardless of Civil War preset.
+
+
+ Stalker bases population
+
+
+ Population of stalkers in bases.
+
+
+ Default
+
+
+ Survival
+
+
+ Minimal
+
+
+ None
+
+
+ The default Anomaly preset.
+
+
+ The default Anomaly Survival preset.
+
+
+ Removes almost all bases. Of those remaining, Rostok is the only safe one, with base guards. Spawns outside of bases are unaffected.
+ If you don't start as Loner, you might need to make use of the disguise system.
+
+
+
+ Removes all stalker spawns inside bases, inspired by Dead Airs "Last Stand" mode.
+ This means there won't be any traders, mechanics or guards. Spawns outside of bases are unaffected.
+
+
+ Spawn random Stalker squads
+
+
+ Replaces Stalker squads with squads from a random faction. This means you may find factions where you previously didn't expect them.
+
+
+ Random Stalker squads chance
+
+
+ Factions
+
+
+ Below you can enable or disable factions. Disabled factions will not appear in the Zone.
+
+
+ Replace removed squads
+
+
+ Replaces squads from disabled factions with squads from enabled factions.
+
+
+ Loner
+
+
+ Bandit
+
+
+ Clear Sky
+
+
+ Duty
+
+
+ Freedom
+
+
+ Mercenary
+
+
+ Military
+
+
+ Ecologist
+
+
+ Monolith
+
+
+ Renegade
+
+
+ Sin
+
+
+ UNISG
+
+
+ Zombified
+
+
\ No newline at end of file
diff --git a/mods/Zone Customization Project/gamedata/configs/text/eng/ui_st_smr_zintegration.xml b/mods/Zone Customization Project/gamedata/configs/text/eng/ui_st_smr_zintegration.xml
new file mode 100644
index 00000000..d5dbb5d9
--- /dev/null
+++ b/mods/Zone Customization Project/gamedata/configs/text/eng/ui_st_smr_zintegration.xml
@@ -0,0 +1,32 @@
+
+
+
+ The options here allow ZCP to work nicely together with other addons. This is similar to compatibility patches, just a lot more convenient.
+
+
+ Glowsticks
+
+
+ For https://www.moddb.com/mods/stalker-anomaly/addons/glowsticks. Enables glowsticks to spawn as useful items.
+
+
+ Anomaly Magazines Redux
+
+
+ Magazine spawn chance
+
+
+ For https://www.moddb.com/mods/stalker-anomaly/addons/anomaly-magazines-redux. Enables spawns of magazines for currently equipped weapons as extra-item in stash boxes.
+
+
+ Anomaly Lootboxes
+
+
+ Lootbox spawn chance
+
+
+ For https://www.moddb.com/mods/stalker-anomaly/addons/anomaly-lootboxes. Enables lockpicks to spawn as useful items, as well as lootboxes in their own category.
+
+
\ No newline at end of file
diff --git a/mods/Zone Customization Project/gamedata/configs/text/eng/ui_st_smr_zombies.xml b/mods/Zone Customization Project/gamedata/configs/text/eng/ui_st_smr_zombies.xml
new file mode 100644
index 00000000..373e43a7
--- /dev/null
+++ b/mods/Zone Customization Project/gamedata/configs/text/eng/ui_st_smr_zombies.xml
@@ -0,0 +1,57 @@
+
+
+
+ Enable zombie spawns
+
+
+ Zombie spawn chance
+
+
+ Chance (in percent) for stalker/mutant spawns to be replaced by zombies.
+
+
+ Zombies seek player
+
+
+ In Survival mode zombies will travel towards the player when inside a specific radius (even if they haven't been alerted). This will replicate that behavior.
+
+
+ Enemy seek distance
+
+
+
+ Zombie Variants
+
+
+ Below you can control which zombie variants will spawn.
+
+
+ Basic Zombies
+
+
+ Amount of basic Zombies
+
+
+ Factor by which basic zombie spawns (if enabled) are multiplied, compared to the other variants.
+
+
+ Blind (Psy) Zombies
+
+
+ Zombified Stalkers
+
+
+ Fractures
+
+
+ Snorks
+
+
+ Bloodsuckers
+
+
+ Psysuckers
+
+
\ No newline at end of file
diff --git a/mods/Zone Customization Project/gamedata/configs/text/rus/ui_st_smr_amain.xml b/mods/Zone Customization Project/gamedata/configs/text/rus/ui_st_smr_amain.xml
new file mode 100644
index 00000000..e9c1c927
--- /dev/null
+++ b/mods/Zone Customization Project/gamedata/configs/text/rus/ui_st_smr_amain.xml
@@ -0,0 +1,85 @@
+
+
+
+
+
+
+
+ . , , .
+
+
+ . , .
+
+
+ . - , , , .
+
+
+
+ :
+
+
+ ZCP
+
+
+
+
+
+ . : , "dph_zcp.log".
+
+
+
+
+
+ . , , .
+
+
+
+
+
+ 3
+
+
+ 6
+
+
+ 12
+
+
+ 1 ()
+
+
+ 2
+
+
+ 4
+
+
+ 1
+
+
+ 2
+
+
+
+
+
+ , , ZCP.
+
+
+
+
+
+
+
+
+ , .
+
+
+
+
+
+ - .
+
+
\ No newline at end of file
diff --git a/mods/Zone Customization Project/gamedata/configs/text/rus/ui_st_smr_anomalies.xml b/mods/Zone Customization Project/gamedata/configs/text/rus/ui_st_smr_anomalies.xml
new file mode 100644
index 00000000..7c963887
--- /dev/null
+++ b/mods/Zone Customization Project/gamedata/configs/text/rus/ui_st_smr_anomalies.xml
@@ -0,0 +1,42 @@
+
+
+
+
+
+
+
+
+ , / . ZCP 35%
+
+
+ ""
+
+
+ "" - , ,
+
+
+
+
+
+ ,
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/mods/Zone Customization Project/gamedata/configs/text/rus/ui_st_smr_anomalies.xml.bak b/mods/Zone Customization Project/gamedata/configs/text/rus/ui_st_smr_anomalies.xml.bak
new file mode 100644
index 00000000..9ae2943f
--- /dev/null
+++ b/mods/Zone Customization Project/gamedata/configs/text/rus/ui_st_smr_anomalies.xml.bak
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+
+
+ , / . ZCP 35%
+
+
+
+
+
+ ,
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/mods/Zone Customization Project/gamedata/configs/text/rus/ui_st_smr_loot.xml b/mods/Zone Customization Project/gamedata/configs/text/rus/ui_st_smr_loot.xml
new file mode 100644
index 00000000..0b7215fb
--- /dev/null
+++ b/mods/Zone Customization Project/gamedata/configs/text/rus/ui_st_smr_loot.xml
@@ -0,0 +1,134 @@
+
+
+
+
+
+
+
+ .
+
+
+ NPC. , "".
+
+
+
+
+
+
+ , .
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ NPC
+
+
+ NPC
+
+
+ NPC. , .
+
+
+
+ .
+
+
+
+
+
+ .
+
+
+
+
+
+ / . / , .
+
+
+
+
+
+ .
+
+
+
+
+
+ , .
+
+
+
+
+
+ , .
+
+
+
+
+
+
+ .
+
+
+
+
+
+ .
+
+
+
+
+
+
+
+
+ .
+
+
+
+
+
+ .
+
+
+
+
+
+
+ , . , , , ..
+
+
+
+
+
+ .
+
+
+
+
+
+
+ .
+
+
+
+
+
+ .
+
+
\ No newline at end of file
diff --git a/mods/Zone Customization Project/gamedata/configs/text/rus/ui_st_smr_mutants.xml b/mods/Zone Customization Project/gamedata/configs/text/rus/ui_st_smr_mutants.xml
new file mode 100644
index 00000000..e94a6eb0
--- /dev/null
+++ b/mods/Zone Customization Project/gamedata/configs/text/rus/ui_st_smr_mutants.xml
@@ -0,0 +1,147 @@
+
+
+
+
+
+
+
+
+
+
+
+
+ , .
+
+
+
+
+
+ , . , , .
+
+
+
+
+
+ . .
+
+
+
+
+
+ , .
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ , , .
+
+
+
+
+
+
+
+
+ , , .
+
+
+
+
+
+ ,
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
\ No newline at end of file
diff --git a/mods/Zone Customization Project/gamedata/configs/text/rus/ui_st_smr_mutants.xml.bak b/mods/Zone Customization Project/gamedata/configs/text/rus/ui_st_smr_mutants.xml.bak
new file mode 100644
index 00000000..753c2de6
--- /dev/null
+++ b/mods/Zone Customization Project/gamedata/configs/text/rus/ui_st_smr_mutants.xml.bak
@@ -0,0 +1,92 @@
+
+
+
+
+
+
+
+
+
+
+
+
+ , .
+
+
+
+
+
+ , . , , .
+
+
+
+
+
+ . .
+
+
+
+
+
+ , .
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/mods/Zone Customization Project/gamedata/configs/text/rus/ui_st_smr_stalkers.xml b/mods/Zone Customization Project/gamedata/configs/text/rus/ui_st_smr_stalkers.xml
new file mode 100644
index 00000000..d793ba46
--- /dev/null
+++ b/mods/Zone Customization Project/gamedata/configs/text/rus/ui_st_smr_stalkers.xml
@@ -0,0 +1,135 @@
+
+
+
+
+
+
+
+
+
+
+ ,
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ , .
+
+
+
+
+
+ , , , .
+
+
+ ( )
+
+
+ , .
+
+
+
+
+
+ .
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ - .
+
+
+ - .
+
+
+ . - . .
+ , , .
+
+
+
+ , Dead Air " ".
+ , , , . .
+
+
+
+
+
+ , . , , .
+
+
+
+
+
+
+
+
+ . .
+
+
+
+
+
+ , .
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/mods/Zone Customization Project/gamedata/configs/text/rus/ui_st_smr_stalkers.xml.bak b/mods/Zone Customization Project/gamedata/configs/text/rus/ui_st_smr_stalkers.xml.bak
new file mode 100644
index 00000000..39f1f265
--- /dev/null
+++ b/mods/Zone Customization Project/gamedata/configs/text/rus/ui_st_smr_stalkers.xml.bak
@@ -0,0 +1,126 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ , .
+
+
+
+
+
+ , , , .
+
+
+ ( )
+
+
+ , .
+
+
+
+
+
+ .
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ - .
+
+
+ - .
+
+
+ . - . .
+ , , .
+
+
+
+ , Dead Air " ".
+ , , , . .
+
+
+
+
+
+ , . , , .
+
+
+
+
+
+
+
+
+ . .
+
+
+
+
+
+ , .
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/mods/Zone Customization Project/gamedata/configs/text/rus/ui_st_smr_zintegration.xml b/mods/Zone Customization Project/gamedata/configs/text/rus/ui_st_smr_zintegration.xml
new file mode 100644
index 00000000..3f381111
--- /dev/null
+++ b/mods/Zone Customization Project/gamedata/configs/text/rus/ui_st_smr_zintegration.xml
@@ -0,0 +1,23 @@
+
+
+
+ ZCP . , .
+
+
+ Glowsticks
+
+
+ For https://www.moddb.com/mods/stalker-anomaly/addons/glowsticks. .
+
+
+ Anomaly Magazines Redux
+
+
+
+
+
+ For https://www.moddb.com/mods/stalker-anomaly/addons/anomaly-magazines-redux. .
+
+
\ No newline at end of file
diff --git a/mods/Zone Customization Project/gamedata/configs/text/rus/ui_st_smr_zombies.xml b/mods/Zone Customization Project/gamedata/configs/text/rus/ui_st_smr_zombies.xml
new file mode 100644
index 00000000..5d587f17
--- /dev/null
+++ b/mods/Zone Customization Project/gamedata/configs/text/rus/ui_st_smr_zombies.xml
@@ -0,0 +1,57 @@
+
+
+
+
+
+
+
+
+
+ ( ) , / .
+
+
+
+
+
+ , , .
+
+
+
+
+
+
+
+
+
+ , .
+
+
+
+
+
+
+
+
+ , ( ) .
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
\ No newline at end of file
diff --git a/mods/Zone Customization Project/gamedata/configs/ui/pda_glitched.xml b/mods/Zone Customization Project/gamedata/configs/ui/pda_glitched.xml
new file mode 100644
index 00000000..1c5b1d9a
--- /dev/null
+++ b/mods/Zone Customization Project/gamedata/configs/ui/pda_glitched.xml
@@ -0,0 +1 @@
+#include "ui\pda_glitched_16.xml"
\ No newline at end of file
diff --git a/mods/Zone Customization Project/gamedata/configs/ui/pda_glitched_16.xml b/mods/Zone Customization Project/gamedata/configs/ui/pda_glitched_16.xml
new file mode 100644
index 00000000..1a82e8e9
--- /dev/null
+++ b/mods/Zone Customization Project/gamedata/configs/ui/pda_glitched_16.xml
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
diff --git a/mods/Zone Customization Project/gamedata/scripts/bind_anomaly_field.script b/mods/Zone Customization Project/gamedata/scripts/bind_anomaly_field.script
new file mode 100644
index 00000000..6726813d
--- /dev/null
+++ b/mods/Zone Customization Project/gamedata/scripts/bind_anomaly_field.script
@@ -0,0 +1,639 @@
+
+--[[
+
+ Tronex
+
+ set enable_debug to true, for debugging and map markers
+
+ ----------------------------------------------------------
+
+ - Dynamic Anomalies
+ 2019/6/14
+ used ini:
+ plugins\dynamic_anomalies.ltx
+
+ 1. Script will read the list of anomalies and their position/types from the config (you can recorded custom pos for your anomalies)
+ 2. Then spawn all anomalies on new game, then disable a random number of them.
+ 3. When an enmission happen, anomalies will shuffle between off/on state (the dynamic factor)
+
+ ----------------------------------------------------------
+
+ - The Pulse
+ A concept of electro-psy anomaly that forms in the sky and discharge into the ground like a thunderbolt, killing any stalkers nearby
+
+--]]
+
+
+local enable_debug = false
+function print_debug(...)
+ if enable_debug then
+ printf(...)
+ end
+end
+
+
+-------------------------------
+-- Dynamic anomalies
+-------------------------------
+local ini_ano
+local dyn_ano_init = false
+local current_level
+
+local dyn_ano_chance = 35 -- [0 - 100] chance of activating a dynamic anomaly
+local dyn_ano_safe_dist = 15 -- [m] don't activate anomalies within the safe distance to player
+local dyn_ano_type = {} -- [type] = {}
+local dyn_ano_info = {} -- [level][name] = info
+
+local dyn_anomalies_dbg = {} -- [id] = name
+dyn_anomalies = {} -- [level][id] = name
+
+-- ZCP
+if smr_amain_mcm.get_config("smr_enabled") then
+ dyn_ano_chance = smr_anomalies_mcm.get_config("dyn_ano_chance")
+end
+-- ZCP END
+
+-- Prepare
+function ini_settings()
+
+ if (dyn_ano_init) then return end
+ dyn_ano_init = true
+
+ ini_ano = ini_file("plugins\\dynamic_anomalies.ltx")
+
+ local n,m = 0,0
+ local result, id, value = "","",""
+ local name, info = "","",""
+
+ -- Gather anomaly types
+ n = ini_ano:line_count("categories") or 0
+ for i=0,n-1 do
+ result, id, value = ini_ano:r_line_ex("categories",i,"","")
+ -- ZCP
+ if smr_amain_mcm.get_config("smr_enabled") and (smr_anomalies_mcm.get_config(id) == false) then
+ smr_debug.get_log().info("anomalies/types", "skipping disabled anomaly type %s", id)
+ goto continue
+ end
+ -- ZCP END
+ dyn_ano_type[id] = {}
+
+ m = ini_ano:line_count(id) or 0
+ for ii=0,m-1 do
+ result, name, info = ini_ano:r_line_ex(id,ii,"","")
+ if name and info then
+ for j=1,tonumber(info) do
+ local size = #dyn_ano_type[id] + 1
+ dyn_ano_type[id][size] = name
+ print_debug("- Dynamic Anomalies | dyn_ano_type[%s][%s] = %s", id, size, name)
+ end
+ end
+ end
+ ::continue::
+ end
+
+ -- Gather anomaly coordinates in all levels
+ n = ini_ano:line_count("levels") or 0
+ for i=0,n-1 do
+ result, id, value = ini_ano:r_line_ex("levels",i,"","")
+ m = ini_ano:line_count(id) or 0
+
+ dyn_ano_info[id] = {}
+
+ for ii=0,m-1 do
+ result, name, info = ini_ano:r_line_ex(id,ii,"","")
+ if name and info then
+ local t = str_explode(info,",")
+ if (#t == 6) and (t[1] ~= "NA") then
+ dyn_ano_info[id][name] = {
+ typ = t[1],
+ x = tonumber(t[2]),
+ y = tonumber(t[3]),
+ z = tonumber(t[4]),
+ lvl_id = tonumber(t[5]),
+ gm_id = tonumber(t[6]),
+ }
+ end
+ end
+ end
+ end
+end
+
+local marker_by_type = {
+ ["electric"] = "anomaly_electric",
+ ["chemical"] = "anomaly_chemical",
+ ["thermal"] = "anomaly_thermal",
+ ["gravitational"] = "anomaly_gravitational",
+ ["radioactive"] = "anomaly_radioactive",
+ ["disabled"] = "anomaly_disabled",
+}
+function add_marker(lvl, section, id, state)
+
+ if enable_debug then
+ ini_settings()
+
+ if lvl and dyn_ano_info[lvl] then
+ local name = dyn_anomalies_dbg[id]
+ if name then
+
+ local info = dyn_ano_info[lvl][name]
+ if info then
+ for k,v in pairs(marker_by_type) do
+ if (level.map_has_object_spot(id, v) ~= 0) then
+ level.map_remove_object_spot(id, v)
+ end
+ end
+
+ local typ = info.typ
+ local spot = marker_by_type[typ] or marker_by_type["gravitational"]
+ if (state == false) then
+ spot = marker_by_type["disabled"]
+ end
+ level.map_add_object_spot_ser(id, spot, "Name: " .. name .. " \\nType: " .. typ .. " \\nSection: " .. section)
+ else
+ print_debug("! Dynamic Anomalies | Marker - no info is found for name {%s}", name)
+ end
+ else
+ print_debug("! Dynamic Anomalies | Marker - no name is found for id (%s)", id)
+ end
+ else
+ print_debug("! Dynamic Anomalies | Marker - level %s is not stored in dyn_ano_info table", lvl)
+ end
+ end
+end
+
+-- Operation
+function dyn_anomalies_spawn()
+
+ -- Iterate through all anomalies info for all levels
+
+ for lvl,v in pairs(dyn_ano_info) do
+ dyn_anomalies[lvl] = {}
+
+ for name,info in pairs(v) do
+
+ -- Get random anomaly section
+ local anom_type = dyn_ano_type[info.typ]
+ local section = anom_type and anom_type[math.random(#anom_type)]
+ if (not section) then
+ print_debug("! Dynamic Anomalies | Anomaly section not found for type: %s", info.typ)
+ return
+ end
+
+ -- Info check
+ if not (info.x and info.y and info.z and info.lvl_id and info.gm_id and true) then
+ print_debug("! Dynamic Anomalies | Anomaly {%s} has wrong or incomplete info", name)
+ return
+ end
+
+ -- Spawn
+ local se_obj = alife_create( section, vector():set(info.x , info.y , info.z), info.lvl_id, info.gm_id )
+ if ( not se_obj ) then
+ print_debug("! Dynamic Anomalies | Unable to spawn dynamic anomaly")
+ return
+ end
+
+ -- Set anomaly properties:
+ local data = utils_stpk.get_anom_zone_data( se_obj )
+ if ( not data ) then
+ print_debug("! Dynamic Anomalies | Unable to set dynamic anomaly properties" )
+ return
+ end
+ data.shapes[1] = {}
+ data.shapes[1].shtype = 0
+ data.shapes[1].offset = vector():set( 0, 0, 0 ) -- Leave for compatibility with CoC 1.4.22, delete later
+ data.shapes[1].center = vector():set( 0, 0, 0 )
+ data.shapes[1].radius = 3
+ utils_stpk.set_anom_zone_data( data, se_obj )
+
+ -- Save data
+ dyn_anomalies[lvl][se_obj.id] = true
+
+ if enable_debug then
+ dyn_anomalies_dbg[se_obj.id] = name
+ end
+
+ print_debug("- Dynamic Anomalies | %s | Spawned anomaly [%s](%s){%s}", lvl, section, se_obj.id, name)
+ end
+ end
+end
+
+function dyn_anomalies_suffle()
+ for lvl,v in pairs(dyn_anomalies) do
+ for id, state in pairs(v) do
+ if (math.random(100) < dyn_ano_chance) then
+ dyn_anomalies[lvl][id] = true
+ print_debug("/ Dynamic Anomalies | Shuffle - dyn_anomalies[%s][%s] = %s", lvl, id, true)
+ else
+ dyn_anomalies[lvl][id] = false
+ print_debug("/ Dynamic Anomalies | Shuffle - dyn_anomalies[%s][%s] = %s", lvl, id, false)
+ end
+ end
+ end
+end
+
+function dyn_anomalies_update()
+ if (not dyn_anomalies[current_level]) then
+ print_debug("! Dynamic Anomalies | Can't update anomalies because current level (%s) has no anomalies recorded", current_level)
+ return true
+ end
+
+ local actor_pos = db.actor:position()
+ for id,state in pairs(dyn_anomalies[current_level]) do
+ local obj = level.object_by_id(id)
+ if obj then
+ if (actor_pos:distance_to(obj:position()) > dyn_ano_safe_dist) then
+ obj:enable_anomaly()
+
+ if (state == false) then
+ obj:disable_anomaly()
+ end
+
+ add_marker(current_level, obj:section(), id, state)
+ print_debug("- Dynamic Anomalies | %s | Anomaly (%s) is set to state: %s", current_level, id, state)
+ else
+ print_debug("! Dynamic Anomalies | %s | Anomaly (%s) is close to player, no process", current_level, id)
+ end
+
+ else
+ print_debug("! Dynamic Anomalies | %s | Couldn't get online object for id (%s)", current_level, id)
+ end
+ end
+
+ return true
+end
+
+function dyn_anomalies_refresh(force)
+
+ -- Prepare anomalies for the first time
+ if (not has_alife_info("dynamic_anomalies_spawned")) and is_empty(dyn_anomalies) then
+ give_info("dynamic_anomalies_spawned")
+
+ ini_settings()
+
+ dyn_anomalies_spawn()
+ dyn_anomalies_suffle()
+
+ -- shuffle state of all anomalies after emission
+ elseif force then
+ dyn_anomalies_suffle()
+ end
+
+ -- enable/disable online anomalies
+ -- NOTE: it's important to use timer because online objects don't register instantly after creating the server objects, so we need to wait for a bit.
+ -- Guess there's a delay in engine to set things up completely
+ local n = has_alife_info("dynamic_anomalies_spawned") and 1 or 10
+ CreateTimeEvent(0, "update_dynamic_anomalies", n, dyn_anomalies_update)
+end
+
+
+-------------------------------
+-- Pulse anomalies
+-------------------------------
+local pAno_first = true
+local pAno_tg = time_global()
+local pAno_light = nil
+local pAno_pfx = particles_object("generator\\generator_accum_thunderbolt")
+local pAno_snd_close = sound_object("anomaly\\emi_blowout")
+local pAno_snd_far = sound_object("anomaly\\emi_blowout_01")
+local pAno_snd_distance = 150 -- [m] (max distance between player and anomaly where close sound effect can be heard)
+local pAno_snd_delay = 5.5 -- [sec] (time delay between anomaly's spawn and sound effect)
+local pAno_p_hit_distance = 10 -- [m] (max distance between player and anomaly to recieve psy damage)
+local pAno_e_hit_distance = 20 -- [m] (max distance between player and anomaly to recieve shock damage)
+local pAno_hit_delay = 11.5 -- [sec] (time delay between anomaly's spawn and player hit)
+local pAno_article_distance = 50 -- [m] (max distance between player and anomaly to trigger related article )
+local pAno_max_distance = 150 -- [m] (max distance between player and anomaly's spawn)
+local pAno_delay = 2 * 60 * 1000 -- [millie sec] (smallest time delay between pulse anomalies to spawn)
+local pAno_chance = {
+ ["clear"] = 0,
+ ["partly"] = 0,
+ ["cloudy"] = 10,
+ ["rain"] = 15,
+ ["storm"] = 25,
+ ["foggy"] = 0,
+}
+local pAno_maps = {
+ ["k00_marsh"] = 0.5,
+ ["k01_darkscape"] = 1,
+ ["k02_trucks_cemetery"] = 1,
+ ["l01_escape"] = 0.2,
+ ["l02_garbage"] = 0.7,
+ ["l03_agroprom"] = 0.5,
+ ["l04_darkvalley"] = 0.5,
+ ["l06_rostok"] = 1,
+ ["l07_military"] = 0.5,
+ ["l08_yantar"] = 0.7,
+ ["l09_deadcity"] = 0.5,
+ ["l10_red_forest"] = 1,
+ ["jupiter"] = 1,
+ ["pripyat"] = 1,
+ ["zaton"] = 1,
+ ["l13_generators"] = 1.5,
+ ["l12_stancia_2"] = 1.5,
+ ["l12_stancia"] = 1.5,
+ ["l11_pripyat"] = 0.2,
+ ["l10_radar"] = 1,
+ ["y04_pole"] = 0.7,
+}
+
+local function pulse_anomaly_sound(sound_pos)
+ local distance = distance_2d(db.actor:position(), sound_pos)
+ local pAno_snd = (distance > pAno_snd_distance) and pAno_snd_far or pAno_snd_close
+
+ if pAno_snd and pAno_snd:playing() then
+ pAno_snd:stop()
+ end
+ if pAno_snd ~= nil then
+ pAno_snd:play_at_pos(db.actor, sound_pos)
+ pAno_snd.volume = 1
+ end
+
+ pAno_light:set_position(sound_pos)
+ pAno_light.enabled = true
+ pAno_light:update()
+
+ return true
+end
+
+local function pulse_anomaly_hit(particle_pos)
+ pAno_light.lanim_brightness = 0.2
+ pAno_light.volumetric_distance = 1
+ pAno_light.volumetric_intensity = 0.1
+
+ if GetEvent("current_safe_cover") then
+ return true
+ end
+
+ local hit_power = 0
+ local distance = distance_2d(db.actor:position(), particle_pos)
+
+ -- Article
+ if distance < pAno_article_distance then
+ SendScriptCallback("actor_on_interaction", "anomalies", nil, "pulse")
+ end
+
+ -- Psi hit
+ if distance < pAno_p_hit_distance then
+ hit_power = math.cos(distance * math.pi / pAno_p_hit_distance) + 1
+ local h = hit()
+ h.type = hit.telepatic
+ if (level_environment.is_actor_immune() or dialogs_yantar.actor_has_psi_helmet()) then
+ h.power = 0
+ else
+ h.power = surge_manager.SurgeManager:hit_power(hit_power, h.type)
+ end
+ h.impulse = 0
+ h.direction = VEC_Z
+ h.draftsman = db.actor
+
+ db.actor:hit(h)
+
+ level.remove_pp_effector(666)
+ level.add_pp_effector("psi_fade.ppe", 666, false)
+ level.set_pp_effector_factor(666,h.power)
+ end
+
+ -- Electric hit
+ if distance < pAno_e_hit_distance then
+ hit_power = math.cos(distance * math.pi / pAno_e_hit_distance) + 1
+ local h = hit()
+ h.type = hit.shock
+ if (level_environment.is_actor_immune()) then
+ h.power = 0
+ else
+ h.power = surge_manager.SurgeManager:hit_power(hit_power, h.type)
+ end
+ h.impulse = 0
+ h.direction = VEC_Z
+ h.draftsman = db.actor
+ db.actor:hit(h)
+ level.remove_pp_effector(667)
+ level.add_pp_effector("electro_fade.ppe", 667, false)
+ level.set_pp_effector_factor(667,h.power)
+ end
+
+ return true
+end
+
+local function pulse_anomaly_light()
+ pAno_light.lanim_brightness = 0.025
+ pAno_light.volumetric_distance = 0.25
+ pAno_light.volumetric_intensity = 0.05
+ pAno_light.enabled = false
+ return true
+end
+
+function pulse_anomaly_update()
+ local tg = time_global()
+ if pAno_first then
+ pAno_tg = tg + pAno_delay
+ pAno_first = false
+ return
+ end
+
+ if (pAno_light and pAno_light.enabled) then
+ pAno_light:update()
+ end
+
+ if bLevelUnderground or (tg < pAno_tg) then
+ return
+ end
+ pAno_tg = tg + pAno_delay
+
+ local lvl_factor = pAno_maps[level.name()] or 0
+ local wthr = level_weathers.get_weather_manager():get_curr_weather()
+ local weather_chance = pAno_chance[wthr] or 1
+ if (math.random(100) > (weather_chance * lvl_factor)) then
+ return
+ end
+
+ local pos = db.actor:position()
+ local angle_dec = math.random(0,359)
+ local angle_rad = math.rad(angle_dec)
+ local ano_distance = math.random(0,pAno_max_distance)
+ local pos_x = math.cos(angle_rad)*ano_distance
+ local pos_z = math.sin(angle_rad)*ano_distance
+ local particle_pos = vector():set(pos.x+pos_x, pos.y+60, pos.z+pos_z)
+
+ pAno_pfx:play_at_pos(particle_pos)
+
+ if (not pAno_light) then
+ --local color = fcolor()
+ --color:set(0,0,100,50)
+
+ pAno_light = script_light()
+ pAno_light.range = 100
+ --pAno_light.type = 0 --light_type.Direct)
+ --pAno_light:set_direction(vector():set(0,-1.5,0))
+ --pAno_light.shadow = true
+ pAno_light.lanim = "koster_01_electra"
+ pAno_light.lanim_brightness = 0.025
+ pAno_light.volumetric = true
+ pAno_light.volumetric_quality = 1
+ pAno_light.volumetric_distance = 0.25
+ pAno_light.volumetric_intensity = 0.05
+ --pAno_light.color = color
+ end
+
+ CreateTimeEvent(0, "pulse_anomaly_sound", pAno_snd_delay, pulse_anomaly_sound, particle_pos)
+
+ CreateTimeEvent(0, "pulse_anomaly_hit", pAno_hit_delay, pulse_anomaly_hit, particle_pos)
+
+ CreateTimeEvent(0, "pulse_anomaly_light", pAno_hit_delay + 0.5, pulse_anomaly_light)
+end
+
+
+-------------------------------
+-- Callbacks
+-------------------------------
+local function actor_on_first_update()
+ current_level = level.name()
+ local enabled = ui_options.get("alife/general/dynamic_anomalies")
+ if enabled and (not IsTestMode()) then
+ dyn_anomalies_refresh()
+ end
+end
+
+local function actor_on_update()
+ -- ZCP
+ if smr_anomalies_mcm.get_config("pulse") then
+ pulse_anomaly_update()
+ end
+end
+
+local function actor_on_interaction(typ, obj, name)
+ if (typ == "anomalies") and (name == "emission_end") and ui_options.get("alife/general/dynamic_anomalies") then
+ dyn_anomalies_refresh(true)
+ end
+end
+
+local function save_state(m_data)
+ m_data.dyn_anomalies = dyn_anomalies
+ if enable_debug then
+ m_data.dyn_anomalies_dbg = dyn_anomalies_dbg
+ end
+end
+
+local function load_state(m_data)
+ dyn_anomalies = m_data.dyn_anomalies or {}
+ if enable_debug then
+ dyn_anomalies_dbg = m_data.dyn_anomalies_dbg or {}
+ end
+end
+
+local function anomaly_on_before_activate(zone, obj, flags)
+
+ if (not obj or not zone) then
+ return
+ end
+
+ if (IsStalker(obj) or IsMonster(obj)) then
+ if (not obj:alive()) then
+ flags.ret_value = false
+ end
+ return
+ end
+
+ if not (obj:clsid() == clsid.obj_bolt) then
+ flags.ret_value = false
+ end
+end
+
+function on_game_start()
+ RegisterScriptCallback("actor_on_first_update",actor_on_first_update)
+ RegisterScriptCallback("actor_on_update",actor_on_update)
+ RegisterScriptCallback("actor_on_interaction",actor_on_interaction)
+ RegisterScriptCallback("anomaly_on_before_activate",anomaly_on_before_activate)
+ RegisterScriptCallback("save_state",save_state)
+ RegisterScriptCallback("load_state",load_state)
+end
+
+
+-------------------------------
+-- Anomaly field binder
+-------------------------------
+fields_by_names = {}
+function bind(obj)
+ obj:bind_object(anomaly_field_binder(obj))
+end
+
+class "anomaly_field_binder" (object_binder)
+function anomaly_field_binder:__init(obj) super(obj)
+
+end
+
+function anomaly_field_binder:reload(section)
+ object_binder.reload(self, section)
+end
+
+function anomaly_field_binder:reinit()
+ object_binder.reinit(self)
+ db.storage[self.object:id()] = {}
+ self.st = db.storage[self.object:id()]
+end
+
+function anomaly_field_binder:net_spawn(se_abstract)
+ if not object_binder.net_spawn(self, se_abstract) then
+ return false
+ end
+ db.add_zone(self.object)
+ db.add_obj(self.object)
+ fields_by_names[self.object:name()] = self
+
+ --[[
+ eDefaultRestrictorTypeNone = u8(0),
+ eDefaultRestrictorTypeOut = u8(1),
+ eDefaultRestrictorTypeIn = u8(2),
+ eRestrictorTypeNone = u8(3),
+ eRestrictorTypeIn = u8(4),
+ eRestrictorTypeOut = u8(5),
+ --]]
+ -- don't enable unless you realize that engine AI schemes to deal with anomalies is stupid and will not be supported
+ -- MAY CAUSE HUGE FPS DROP ON COP MAPS
+ --[[
+ if (get_console_cmd(1,"ai_die_in_anomaly") == true) then
+ -- It causes HUGE fps drop on COP maps which is why it was probably cut
+ local ignore = {
+ ["zaton"] = true,
+ ["jupiter"] = true,
+ ["pripyat"] = true
+ }
+ if not (ignore[level.name()]) then
+ self.object:set_restrictor_type(3)
+ end
+ end
+ --]]
+
+ return true
+end
+
+function anomaly_field_binder:net_destroy()
+ db.del_zone( self.object )
+ db.del_obj(self.object)
+ db.storage[self.object:id()] = nil
+ fields_by_names[self.object:name()] = nil
+ object_binder.net_destroy(self)
+end
+
+function anomaly_field_binder:set_enable(bEnable)
+ if(bEnable) then
+ self.object:enable_anomaly()
+ else
+ self.object:disable_anomaly()
+ end
+end
+
+function anomaly_field_binder:update(delta)
+ object_binder.update(self, delta)
+ --[[ testing
+ local itr = function(id)
+ local obj = id and alife_object(id)
+ printf("%s touch_feel id=%s obj=%s",self.object:name(),id,obj and obj:name())
+ end
+ self.object:iterate_feel_touch(itr)
+ --]]
+end
+
+-- Standart function for save
+function anomaly_field_binder:net_save_relevant()
+ return true
+end
diff --git a/mods/Zone Customization Project/gamedata/scripts/bind_awr.script b/mods/Zone Customization Project/gamedata/scripts/bind_awr.script
new file mode 100644
index 00000000..84e88f23
--- /dev/null
+++ b/mods/Zone Customization Project/gamedata/scripts/bind_awr.script
@@ -0,0 +1,501 @@
+--------------------------------------------------------------------
+-- Reworked by Tonex
+-- Last edit: 2019/5/18
+
+-- Adapted new changes for the system
+-- Cleaned a lot of bloated code that was previously used for updating vice meshes
+--------------------------------------------------------------------
+
+local MDATA = {}
+local settings_list = {}
+local angles_t = {}
+local mech_list_key = {}
+local debug_mode = false
+local debug_show_tables = false
+local ini_manager, settings, mesh_list, delay, ui
+
+-- Cache vice and their lamps in table to reuse
+local vice_id = {}
+local lamp_id = {}
+
+function access(obj) --| Access to a vice, taking into account possible death of the mechanic
+
+ if not (obj) then
+ return
+ end
+
+ --// You should be able to use any workshop in Warfare mode
+ if _G.WARFARE or (smr_amain_mcm.get_config("smr_enabled") and smr_stalkers_mcm.get_config("base_population") == "sim_smr_none") then
+ return true
+ end
+
+ local name = obj:name()
+ dout(nil, "Request access for %s", name)
+
+ --// Mechanic is dead - access is unlimited
+ if angles_t[name] then
+ if angles_t[name][3] == 'dead' then
+ dout(nil, "Mechanic is dead. Full access")
+ return true
+ end
+ end
+
+ --// Access was granted by a mechanic.
+ if db.actor:has_info(string.format("awr_%s_access",angles_t[name][1])) then
+ dout(nil, "Mechanic gave access")
+ return true
+ end
+
+ --// Debugging
+ local npc = get_story_object(angles_t[name][1])
+ if npc then
+ if npc:alive() then
+ dout(nil, "Access not granted. NPC %s by id %s is alive", angles_t[name][1], npc:id())
+ else
+ dout(nil, "![ERROR] NPC %s by id %s bugged, because he is online and is not alive, but function OnDeath was not called", angles_t[name][1], npc:id())
+ end
+ end
+end
+
+function OnDeath(npc) --| Callback at the death of a mechanic
+ dout(nil, "Called for NPC, %s", npc:section())
+ if IsStalker(npc) and (not npc:alive()) then
+ local npc_s = npc:section()
+ dout(nil, "NPC %s exist and dead", npc:section())
+ for key, val in pairs(angles_t) do
+ if angles_t[key][1] == npc_s then
+
+ local story_obj = get_story_object(angles_t[key][1])
+ if story_obj then
+ level.map_remove_object_spot(story_obj:id(), "ui_pda2_mechanic_location")
+ end
+
+ --// Add a marker
+ SetMarker(key)
+
+ full_access(key,npc_s)
+
+ break
+ end
+ end
+ end
+end
+
+function SetMarker(name) --| The function of adding a marker to the map
+ local id = name and vice_id[name]
+ local s_obj = id and alife_object(id)
+ if s_obj then
+ dout(nil, "Add marker on parent object %s with ID %s", name, s_obj.id)
+ level.map_add_object_spot_ser(s_obj.id, "ui_pda2_mechanic_location", "st_mech_tiski")
+ end
+end
+
+function CloseDl() -- The closing function of the UI AWR at the end of time (provided that the UI is called and the actor is within 2 meters of the mesh)
+ if (ui) and ui:IsShown() then
+ dout(nil, "UI exist and already open")
+ ui:Close()
+ end
+end
+
+
+--=======================================< Callbacks >=======================================--
+
+function physic_object_on_use_callback(_obj,who) -- Binder function using vise mesh
+ if not (_obj) or not (string.match(_obj:name(), "awr")) then
+ return
+ end
+
+ --// The condition for the "parent" vise, spawn through all.spawn
+ if access(_obj) and string.match(_obj:name(), "awr_tiski") and _obj:position():distance_to(db.actor:position()) < 1.5 then
+
+ --// Checking the table for "empty"
+ r_unused()
+
+ --// Gather mechanic info
+ local flag_1,flag_2,flag_3,flag_4 = false,false,false,false
+ local name = _obj:name()
+ local mechanic = name and angles_t[name] and angles_t[name][1]
+ if mechanic then
+ flag_1 = db.actor:has_info(mechanic .. "_upgrade_tier_1")
+ flag_2 = db.actor:has_info(mechanic .. "_upgrade_tier_2")
+ flag_3 = db.actor:has_info(mechanic .. "_upgrade_tier_3")
+
+ local drugkit_done = ini_manager:r_string_ex("drugkit_access",mechanic)
+ if drugkit_done and db.actor:has_info(drugkit_done) then
+ flag_4 = true
+ end
+ end
+
+ local function start_ui()
+ --// Call UI
+ local hud = get_hud()
+ --if ui then
+ --ui:HideDialog()
+ --end
+ ui = ui_workshop and ui_workshop.get_workshop_ui(hud, mechanic, {flag_1,flag_2,flag_3,flag_4,false})
+ if (ui) then
+ dout(nil, "call UI")
+ ui:ShowDialog(true)
+ end
+ return true
+ end
+
+ local delay = actor_effects.is_animations_on() and 2 or 0
+ actor_effects.play_item_fx("workshop_dummy")
+ CreateTimeEvent(0,"delay_workshop",delay,start_ui)
+ end
+end
+
+function actor_on_first_update() --| Callback of the first Update actor. It is executed one-time after loading, _after_ spawn of all objects from all.spawn, unlike on_game_load
+ local smatch = string.match
+ local sim = alife()
+ for i=1, 65534 do
+ local s_obj = sim:object(i)
+ if s_obj then
+ local name = s_obj:name()
+
+ --// If the vise is spawned all.spawn - save their values in the store
+ if smatch(name, '%w+%_awr%_tiski%_%d+') then
+ --// Cache vice id
+ vice_id[name] = i
+ angles_t[name] = l_v(name, angles_t[name])
+
+ if debug_mode then
+ printf("/ Registered vice [%s] = %s", name, i)
+ end
+
+ --// Cache vice lamps IDs
+ elseif smatch(name, '_awr_lamp') then
+ lamp_id[name] = i
+
+ if debug_mode then
+ printf("/ Registered vice lamp [%s] = %s", name, i)
+ end
+ end
+ end
+ end
+
+ --// Turn on lamps for all mechanics with a dead flag, otherwise it should be off
+ for key, val in pairs(angles_t) do
+
+ --// Mechanic is dead -> grant full acces + turn on lamp
+ if angles_t[key][3] == 'dead' then
+ dout('actor_on_first_update', "%s is dead. Enable lamp(s) which assigned for %s", angles_t[key][1], key)
+ Lamp(angles_t[key][1], true)
+ full_access(key,npc_s)
+
+ --// Mechanic is unmarked for death -> turn off lamp
+ else
+ dout('actor_on_first_update', "%s is alive. Disable lamp(s) which assigned for %s", angles_t[key][1], key)
+ Lamp(angles_t[key][1], false)
+
+ --[[
+ // If Mechanic isn't around, grant unlimited access
+ local npc_s = angles_t[key][1]
+ local se_npc = get_story_se_object(npc_s)
+ if (not se_npc) then
+ full_access(key,npc_s)
+ end
+ --]]
+ end
+
+ if db.actor:has_info(string.format('awr_%s_access', angles_t[key][1])) then
+ dout('actor_on_first_update', "%s gave access. Enable lamp(s) which assigned for %s", angles_t[key][1], key)
+ Lamp(angles_t[key][1], true)
+ end
+ end
+
+ --// Remove extra tables for weapons whose parts have not been replaced.
+ r_unused()
+end
+
+function npc_on_death_callback(victim, who) -- Callback, NPC caused by death
+ if not (victim and who) then
+ return
+ end
+
+ local name = victim:section()
+ local killer_name
+
+ if mech_list_key[name] then
+
+ dout('npc_on_death_callback', "NPC %s was killed by %s", victim:name(), who:name())
+ OnDeath(victim)
+
+ if IsStalker(who) then
+ killer_name = who:character_name()
+ else
+ killer_name = nil
+ end
+
+ if who:id() == AC_ID then
+ local alife = alife()
+ local se_actor = alife:actor()
+ killer_name = se_actor:character_name()
+ end
+ actor_menu.set_item_news('success', 'npc', "st_awr_dead_mechanic", victim:character_name(), killer_name or game.translate_string("st_by_unknown"))
+ else
+ -- if IsStalker(victim) then
+ -- awr_sf.dout('npc_on_death_callback', "NPC %s is not in list -> return", victim:name()) -- Отрабатывает для всех смертей, включать при необходимости
+ -- end
+ return
+ end
+end
+
+function save_state(m_data)
+ m_data.workshop = MDATA
+end
+
+function load_state(m_data)
+ MDATA = m_data.workshop or {}
+end
+
+function on_game_start()
+ ini_manager = itms_manager.ini_manager
+ settings = utils_data.collect_section(ini_manager,"workshop_settings")
+ mesh_list = utils_data.collect_section(ini_manager,"workshop_angles")
+
+ --for _, k in ipairs(settings) do
+ --settings_list[k] = ini_manager:r_float_ex("workshop_settings", k)
+ --end
+
+ for _, k in ipairs(mesh_list) do
+ local t = parse_list(ini_manager,"workshop_angles", k)
+ angles_t[k] = {}
+ for _, v in ipairs(t) do
+ table.insert(angles_t[k], v)
+ end
+ end
+
+ --// We enter data into the table keys for quick indexing by key, without using a loop
+ for key, val in pairs(angles_t) do
+ mech_list_key[val[1]] = 0
+ end
+
+ RegisterScriptCallback("physic_object_on_use_callback", physic_object_on_use_callback)
+ RegisterScriptCallback("actor_on_first_update", actor_on_first_update)
+ RegisterScriptCallback("npc_on_death_callback", npc_on_death_callback)
+ RegisterScriptCallback("save_state", save_state)
+ RegisterScriptCallback("load_state", load_state)
+end
+
+
+--=======================================< Utility >=======================================--
+function Lamp(npc_name, state) --| Toggle online workshop lamps on/off
+ for lamp_name,id in pairs(lamp_id) do
+ if string.match(lamp_name, string.format('_awr_lamp_%s', npc_name)) then
+ local se_lamp = alife_object(id)
+ if se_lamp then
+ local lamp = level.object_by_id(id)
+ if lamp then
+ if (state == true) then
+ lamp:get_hanging_lamp():turn_on()
+ dout(nil, "Lamp %s was turned on", lamp_name)
+ elseif (state == false) then
+ lamp:get_hanging_lamp():turn_off()
+ dout(nil, "Lamp %s was turned off", lamp_name)
+ end
+ end
+ end
+ end
+ end
+end
+
+function full_access(vice,npc_s) --| Give unlimited access to a workshop
+ --// 'Dead' flag in the table
+ angles_t[vice][3] = 'dead'
+
+ --// Delete information if, before the death of a mechanic, he had access
+ if db.actor:has_info(string.format('awr_%s_access', npc_s)) then
+ db.actor:disable_info_portion(string.format('awr_%s_access', npc_s))
+ dout(nil, 'NPC is dead. Infoportion awr_%s_access has been removed', npc_s)
+ end
+
+ --// Issuance of information
+ db.actor:give_info_portion(string.format("awr_%s_dead", npc_s))
+
+ --// Turn on the lamps
+ Lamp(npc_s, true)
+
+ --// Store data
+ s_v(vice, angles_t[vice])
+end
+
+function s_v(name,val) --|
+--// Функция сохранения данных в Store
+ dout(nil, "Save data to Store, table %s on value %s", name, val)
+
+ MDATA[name] = val
+ if debug_show_tables then print_table(MDATA, 'On Save') end
+end
+
+function l_v(name, def) --|
+--// Функция загрузки данных из Store
+ local function len(t)
+ local i = 0
+ for _ in pairs(t) do i = i + 1 end
+ return i
+ end
+
+ dout(nil, 'Trying to load %s from Store', name)
+ local m_data = alife_storage_manager.get_state()
+ if MDATA[name] and len(MDATA[name]) > 0 then
+ dout(nil, "Table %s with %s keys was loaded", name, len(MDATA[name]))
+ if debug_show_tables then print_table(MDATA, 'On Load') end
+ return MDATA[name] or def
+ else
+ dout(nil, 'Table %s does not exist or is empty. Skipped', name)
+ end
+ return def or nil
+end
+
+function r_unused() --|
+--// Функция удаления "пустых" таблиц с замененными деталями для оружия и флагами
+ local chk = 0
+ dout(nil, 'Searching unused tables in AWR Store table...')
+ if MDATA then
+ for k, _ in pairs(MDATA) do
+ if k:match('_upg') then
+ dout(nil, 'Checking %s table...', k)
+ local count = 0
+ for key, val in pairs(MDATA[k]) do
+ count = count + val
+ end
+ if count == 5 then
+ local flags = string.format('%s%s', k:gsub('[^%d+]', ''), '_flags')
+ dout(nil, '%s table have default values, tables %s and %s will be removed', k, k, flags)
+ MDATA[k] = nil
+ MDATA[flags] = nil
+ chk = chk + 2
+ else
+ dout(nil, 'Data in table %s is used. Skipped', k)
+ end
+ end
+ end
+ if chk == 0 then
+ dout(nil, 'AWR Store table have no unused tables')
+ else
+ dout(nil, 'Removed %s tables', chk)
+ end
+ else
+ dout(nil, 'AWR table does not exist')
+ end
+ if debug_show_tables then print_table(MDATA, 'On Remove Unused') end
+end
+
+function dout(call,fmt,...) --|
+--// Функция отладочного вывода (включен при debug_mode = true в awr_settings.ltx)
+ if not (debug_mode) then return end
+ if not (fmt) then return end
+ local fmt = tostring(fmt)
+
+ --// Пытаемся определить из какой функции произошел вызов целевой функции
+ local caller_n = debug.getinfo(3, "n") and debug.getinfo(3, "n").name or "not specified"
+ local f_name = debug.getinfo(2, "n") and debug.getinfo(2, "n").name or "not specified"
+
+ if call then
+ caller_n = tostring(call)
+ end
+
+ if (select('#',...) >= 1) then
+ local i = 0
+ local p = {...}
+ local function sr(a)
+ i = i + 1
+ if (type(p[i]) == 'userdata') then
+ if (p[i].x and p[i].y) then
+ return vec_to_str(p[i])
+ end
+ return 'userdata'
+ end
+ return tostring(p[i])
+ end
+ fmt = string.gsub(fmt,"%%s",sr)
+ end
+ if (log) then
+ local str = string.format('[AWR]{%s->%s} %s', caller_n, f_name, fmt)
+ log(str)
+ --exec_console_cmd("flush")
+ else
+ exec_console_cmd("load ~#debug msg:"..str)
+ end
+end
+
+function print_table(tbl,header,format_only) --|
+--// Функция для вывода содержимого таблицы в строковом виде
+ local txt = header and ("-- " .. tostring(header) .. "\n{\n\n") or "{\n\n"
+ local depth = 1
+
+ local function tab(amt)
+ local str = ""
+ for i=1,amt, 1 do
+ str = str .. "\t"
+ end
+ return str
+ end
+
+ local function table_to_string(tbl)
+ local size = 0
+ for k,v in pairs(tbl) do
+ size = size + 1
+ end
+
+ local key
+ local i = 1
+
+ for k,v in pairs(tbl) do
+ if (type(k) == "number") then
+ key = "[" .. k .. "]"
+ elseif (type(k) == "function" or type(k) == "string" or type(k) == "boolean" or type(k) == "table") then
+ key = "[\""..tostring(k) .. "\"]"
+ else
+ key = "[____unknown_type]"
+ end
+
+ if (type(v) == "table") then
+ txt = txt .. tab(depth) .. key .. " =\n"..tab(depth).."{\n"
+ depth = depth + 1
+ table_to_string(v,tab(depth))
+ depth = depth - 1
+ txt = txt .. tab(depth) .. "}"
+ elseif (type(v) == "number" or type(v) == "boolean") then
+ txt = txt .. tab(depth) .. key .. " = " .. tostring(v)
+ elseif (type(v) == "userdata") then
+ if (v.diffSec) then
+ local Y, M, D, h, m, s, ms = 0,0,0,0,0,0,0
+ Y, M, D, h, m, s, ms = v:get(Y, M, D, h, m, s, ms)
+ txt = strformat("%s%s%s = { Y=%s, M=%s, D=%s, h=%s, m=%s, s=%s, ms=%s } ",txt,tab(depth),key,Y, M, D, h, m, s, ms)
+ else
+ txt = txt .. tab(depth) .. key .. " = \"userdata\""
+ end
+ elseif (type(v) == "function") then
+ txt = txt .. tab(depth) .. key .. " = \"" .. tostring(v) .. "\""
+ elseif (type(v) == "string") then
+ txt = txt .. tab(depth) .. key .. " = '" .. v .. "'"
+ else
+ txt = txt .. tab(depth) .. key
+ end
+
+ if (i == size) then
+ txt = txt .. "\n"
+ else
+ txt = txt .. ",\n"
+ end
+
+ i = i + 1
+ end
+ end
+
+ table_to_string(tbl)
+
+ txt = txt .. "\n}"
+
+ if (format_only) then
+ return txt
+ end
+
+ printf(txt)
+ local file = io.open("gamedata\\awr_table.txt","a+")
+ file:write(txt.."\n\n")
+ file:close()
+end
diff --git a/mods/Zone Customization Project/gamedata/scripts/dph_debug_log.script b/mods/Zone Customization Project/gamedata/scripts/dph_debug_log.script
new file mode 100644
index 00000000..ac46e04e
--- /dev/null
+++ b/mods/Zone Customization Project/gamedata/scripts/dph_debug_log.script
@@ -0,0 +1,187 @@
+--[[
+------------------------------------------------------------
+-- DPHs debug logger
+------------------------------------------------------------
+-- You may distribute this together with your addon as long as you keep this header intact.
+-- Latest version available from: https://www.moddb.com/mods/stalker-anomaly/addons/dphs-debug-logger
+--
+-- by dph-hcl
+------------------------------------------------------------
+]]--
+
+LOG_LEVEL_INFO = 1
+LOG_LEVEL_WARNING = 2
+LOG_LEVEL_ERROR = 3
+
+log_levels = {
+ [LOG_LEVEL_INFO] = "INFO",
+ [LOG_LEVEL_WARNING] = "WARNING",
+ [LOG_LEVEL_ERROR] = "ERROR"
+}
+
+local default_cfg = {
+ ["file"] = "dph.log",
+ ["targets"] = {
+ ["log"] = 1,
+ ["gamelog"] = 2,
+ ["pda"] = 3,
+ }
+}
+
+function new(cfg, mods)
+ -- setup private properties
+ local private = {}
+ private.modules = {}
+ private.enabled = false
+
+ local public = {}
+
+ public.config = default_cfg
+ for k, v in pairs(cfg) do
+ public.config[k] = v
+ end
+
+ private.targets = {
+ ["log"] = function(mod, level, entry, ...)
+ local ln = public.format_entry(mod, level, entry, ...)
+ local file = io.open(public.config.file,"a+")
+ if not file then
+ printe(public.format_entry("dph_debug_log/log", LOG_LEVEL_ERROR, "Unable to open logfile %s! Entry logged on the following line.", public.config.file))
+ printf(public.format_entry(mod, level, entry, ...))
+ end
+ file:write(ln .. "\n")
+ file:close()
+ end,
+ ["gamelog"] = function (mod, level, entry, ...)
+ local ln = public.format_entry(mod, level, entry, ...)
+ if level >= 3 then
+ printe(ln)
+ else
+ printf(ln)
+ end
+ end,
+ ["pda"] = function (mod, level, entry, ...)
+ local ln = entry
+ if (select('#',...) >= 1) then
+ ln = string.format(entry, ...)
+ end
+ if (db) and (db.actor) then
+ db.actor:give_game_news("[" .. log_levels[level] .. "] " .. mod, ln, "", 5000, 10000)
+ else
+ printe(public.format_entry("dph_debug_log/pda", LOG_LEVEL_ERROR, "Could not send message to PDA: Actor does not exist! Entry logged on the following line."))
+ printf(public.format_entry(mod, level, entry, ...))
+ end
+ end,
+ }
+
+ private.compare_paths = function(pt, mt)
+ m = tostring(mt)
+ p = tostring(pt)
+ if (not m) or (not p) then
+ return false
+ end
+ local mm = str_explode(m, "/")
+ local pp = str_explode(p, "/")
+ for i, seg in ipairs(mm) do
+ if (not pp[i]) or (seg ~= pp[i]) then
+ return false
+ end
+ end
+ return true
+ end
+
+ private.module_enabled = function(mod)
+ for i, m in ipairs(private.modules) do
+ if private.compare_paths(mod, m) then
+ return true
+ end
+ end
+ return false
+ end
+
+ private.log_entry = function(mod, level, entry, ...)
+ if (private.enabled) and private.module_enabled(mod) then
+ for t, l in pairs(public.config.targets) do
+ if level >= l then public.log_to_target(t, mod, level, entry, ...) end
+ end
+ end
+ end
+
+ -- public interface
+ public.enable = function()
+ private.enabled = true
+ public.info("dph_debug_log", "DPHs DEBUG LOGGER VERSION %s | Log instance started", public.version())
+ return private.enabled
+ end
+
+ public.disable = function()
+ private.enabled = false
+ return private.enabled
+ end
+
+ public.register_module = function(m)
+ table.insert(private.modules, m)
+ end
+
+ public.unregister_module = function(mod)
+ for i, m in ipairs(private.modules) do
+ if mod == m then private.modules[i] = nil end
+ end
+ end
+
+ public.define_target = function(name, log_function)
+ private.targets[name] = log_function
+ end
+
+ public.log_to_target = function(target, mod, level, entry, ...)
+ local status, err = pcall(private.targets[target], mod, level, entry, ...)
+ if err then
+ printe(public.format_entry("dph_debug_log", LOG_LEVEL_ERROR, "Target %s threw an exception while logging <%s> %s", target, mod, entry))
+ printe("ERROR: %s", err)
+ printf(public.format_entry(mod, level, entry, ...))
+ end
+ end
+
+ public.format_entry = function(mod, level, entry, ...)
+ local strf = entry
+ if (select('#',...) >= 1) then
+ strf = string.format(entry, ...)
+ end
+ local n1 = "[" .. log_levels[level] .. "]" .. string.rep(" ", 8 - #log_levels[level])
+ local n2 = "<" .. mod .. ">" .. string.rep(" ", 28 - #mod)
+ return (n1 .. n2 .. strf)
+ end
+
+ public.info = function(mod, entry, ...)
+ return private.log_entry(mod, LOG_LEVEL_INFO, entry, ...)
+ end
+
+ public.warn = function(mod, entry, ...)
+ return private.log_entry(mod, LOG_LEVEL_WARNING, entry, ...)
+ end
+
+ public.error = function(mod, entry, ...)
+ return private.log_entry(mod, LOG_LEVEL_ERROR, entry, ...)
+ end
+
+ public.pda = function(mod, entry, ...)
+ return public.log_to_target("pda", mod, LOG_LEVEL_INFO, entry, ...)
+ end
+
+ public.log_table = function(mod, name, tbl)
+ local ts = utils_data.print_table(tbl, false, true)
+ public.info(mod, "TABLE %s \n%s", name, ts)
+ end
+
+ public.version = function()
+ return 1
+ end
+
+ -- constructor
+ for i, m in ipairs(mods) do
+ public.register_module(m)
+ end
+ public.register_module("dph_debug_log")
+
+ return public
+end
\ No newline at end of file
diff --git a/mods/Zone Customization Project/gamedata/scripts/faction_expansions.script b/mods/Zone Customization Project/gamedata/scripts/faction_expansions.script
new file mode 100644
index 00000000..a71f3244
--- /dev/null
+++ b/mods/Zone Customization Project/gamedata/scripts/faction_expansions.script
@@ -0,0 +1,242 @@
+--[[
+ Made by werejew for Warfare
+ Modified by Tronex for factions profiles
+ Last edit: 2019/5/15
+--]]
+
+-- Profiles
+faction = {}
+level = {}
+mutant = {}
+mutant_tier_by_clsid = {
+ [clsid.bloodsucker_s] = 2,
+ [clsid.boar_s] = 1,
+ [clsid.burer_s] = 4,
+ [clsid.cat_s] = 1,
+ [clsid.chimera_s] = 3,
+ [clsid.controller_s] = 4,
+ [clsid.dog_s] = 1,
+ [clsid.flesh_s] = 1,
+ [clsid.fracture_s] = 2,
+ [clsid.gigant_s] = 3,
+ [clsid.poltergeist_s] = 4,
+ [clsid.pseudodog_s] = 1,
+ [clsid.psy_dog_phantom_s] = 4,
+ [clsid.psy_dog_s] = 4,
+ [clsid.rat_s] = 0,
+ [clsid.snork_s] = 2,
+ [clsid.tushkano_s] = 0,
+ [clsid.zombie_s] = 1
+}
+
+-- Warfare
+local faction_list = { -- List of factions to get correct squad section from
+ ["stalker"] = "stalker",
+ ["monolith"] = "monolith",
+ ["csky"] = "csky",
+ ["army"] = "army",
+ ["killer"] = "merc",
+ ["ecolog"] = "ecolog",
+ ["dolg"] = "duty",
+ ["freedom"] = "freedom",
+ ["bandit"] = "bandit",
+ ["greh"] = "greh",
+ ["isg"] = "isg",
+ ["renegade"] = "renegade",
+ ["zombied"] = "zombied",
+}
+
+local random_mutants = {
+ "simulation_bloodsucker",
+ "simulation_bloodsucker",
+ "simulation_boar",
+ "simulation_boar",
+ "simulation_boar",
+ "simulation_dog",
+ "simulation_dog",
+ "simulation_dog",
+ "simulation_pseudodog",
+ "simulation_pseudodog",
+ "simulation_flesh",
+ "simulation_flesh",
+ "simulation_flesh",
+ "simulation_snork",
+ "simulation_snork",
+ "simulation_mix_dogs",
+ "simulation_mix_dogs",
+ "simulation_mix_dogs",
+ "simulation_mix_boar_flesh",
+ "simulation_mix_boar_flesh",
+ "simulation_tushkano",
+ "simulation_tushkano",
+ "simulation_tushkano",
+ "simulation_cat",
+ "simulation_cat",
+ "simulation_zombie",
+}
+
+local random_rare = {
+ "simulation_gigant",
+ "simulation_controller",
+ "simulation_controller",
+ "simulation_burer",
+ "simulation_burer",
+ "simulation_chimera",
+ "simulation_chimera",
+ "simulation_bloodsucker",
+ "simulation_bloodsucker",
+ "simulation_bloodsucker",
+ "simulation_snork",
+ "simulation_snork",
+ "simulation_snork",
+}
+
+local random_zombies = {
+ "simulation_zombie",
+ "simulation_zombie",
+ "simulation_zombie",
+ "simulation_zombie",
+ "simulation_zombie",
+ "simulation_zombie",
+ "simulation_zombie",
+ "simulation_snork",
+ "simulation_snork",
+ "simulation_zombie",
+ "simulation_zombie",
+ "simulation_zombie",
+ "simulation_zombie",
+ "simulation_zombie",
+ "simulation_zombie",
+ "simulation_bloodsucker",
+ "simulation_chimera",
+}
+
+function get_advanced_chance(resource)
+ return -1 * (100 * (1 / math.pow(warfare.resource_count / 2, 2))) * math.pow((resource - (warfare.resource_count / 2)), 2) + 100
+end
+
+function get_veteran_chance(resource)
+ return -100 + (100 / (warfare.resource_count / 2)) * resource
+end
+
+function get_spawn_section(faction, resource)
+ local advanced = get_advanced_chance(resource)
+ local veteran = get_veteran_chance(resource)
+ return get_section(faction, advanced, veteran)
+end
+
+function get_section(faction, advanced_chance, veteran_chance)
+ local r = math.random(100)
+ local name = faction_list[faction]
+ if name then
+ if r <= veteran_chance then
+ return (name .. "_sim_squad_veteran")
+ elseif r <= advanced_chance then
+ return (name .. "_sim_squad_advanced")
+ else
+ return (name .. "_sim_squad_novice")
+ end
+ elseif faction == "monster" then
+ if math.random(100) >= 98 then
+ return random_rare[math.random(#random_rare)]
+ else
+ return random_mutants[math.random(#random_mutants)]
+ end
+ else
+ return random_zombies[math.random(#random_zombies)]
+ end
+
+ return nil
+end
+
+function get_faction_squad(faction, typ)
+ local name = faction_list[faction]
+
+ if (typ == "novice") then
+ return name.."_sim_squad_novice"
+ elseif (typ == "advanced") then
+ return name.."_sim_squad_advanced"
+ elseif (typ == "veteran") then
+ return name.."_sim_squad_veteran"
+ elseif (typ == "sniper") then
+ if (name == "monolith" or name == "army") then
+ return name.."_sim_squad_sniper"
+ end
+ end
+end
+
+-----------------------
+function on_game_start()
+
+ local ini_fact = ini_file("plugins\\faction_profile.ltx")
+
+ -- Collect faction profiles
+ local factions_list = {
+ ["stalker"] = true,
+ ["dolg"] = true,
+ ["freedom"] = true,
+ ["csky"] = true,
+ ["ecolog"] = true,
+ ["killer"] = true,
+ ["army"] = true,
+ ["bandit"] = true,
+ ["monolith"] = true,
+ }
+
+
+ for k,v in pairs(factions_list) do
+ faction[k] = {}
+ faction[k]["type"] = ini_fact:r_string_ex(k,"type") or "group"
+ local color = parse_list(ini_fact,k,"color")
+ faction[k]["color"] = strformat("%c[%s,%s,%s,%s]",color[1],color[2],color[3],color[4])
+ faction[k]["territory"] = ini_fact:r_string_ex(k,"territory")
+
+ faction[k]["level_presence"] = parse_list(ini_fact,k,"level_presence",true)
+ faction[k]["pda_topic"] = {}
+ local pda_topics = parse_list(ini_fact,k,"pda_topic")
+ for i=1,#pda_topics do
+ for k1,v1 in string.gmatch(pda_topics[i], "([%w_%-%s%.]+)=([%w_%-%s%.]+)") do
+ faction[k]["pda_topic"][k1] = tonumber(v1)
+ end
+ end
+ faction[k]["pda_topic_mission"] = parse_list(ini_fact,k,"pda_topic_mission")
+ faction[k]["weapon"] = ini_fact:r_string_ex(k,"weapon")
+
+ faction[k]["leader"] = ini_fact:r_string_ex(k,"leader")
+ faction[k]["trader"] = ini_fact:r_string_ex(k,"trader")
+ faction[k]["mechanic"] = ini_fact:r_string_ex(k,"mechanic")
+ faction[k]["medic"] = ini_fact:r_string_ex(k,"medic")
+ faction[k]["barman"] = ini_fact:r_string_ex(k,"barman")
+ faction[k]["guide"] = ini_fact:r_string_ex(k,"guide")
+
+ faction[k]["leader_name"] = ini_fact:r_string_ex(k,"leader_name")
+ faction[k]["trader_name"] = ini_fact:r_string_ex(k,"trader_name")
+ faction[k]["mechanic_name"] = ini_fact:r_string_ex(k,"mechanic_name")
+ faction[k]["medic_name"] = ini_fact:r_string_ex(k,"medic_name")
+ faction[k]["barman_name"] = ini_fact:r_string_ex(k,"barman_name")
+ faction[k]["guide_name"] = ini_fact:r_string_ex(k,"guide_name")
+ end
+
+ local n = 0
+
+ n = ini_fact:line_count("news_levels")
+ for i=0,n-1 do
+ local result, id, value = ini_fact:r_line_ex("news_levels",i,"","")
+ if level[id] == nil then
+ level[id] = true
+ end
+ end
+
+ n = ini_fact:line_count("mutant_tier")
+ for i=0,n-1 do
+ local result, id, value = ini_fact:r_line_ex("mutant_tier",i,"","")
+ if mutant[id] == nil then
+ mutant[id] = {}
+ mutant[id]["tier"] = tonumber(value)
+ end
+ end
+
+ --utils_data.print_table(faction,"faction_profiles")
+ --utils_data.print_table(level,"news_levels")
+ --utils_data.print_table(mutant,"mutant_tiers")
+end
\ No newline at end of file
diff --git a/mods/Zone Customization Project/gamedata/scripts/game_setup.script b/mods/Zone Customization Project/gamedata/scripts/game_setup.script
new file mode 100644
index 00000000..d7727a20
--- /dev/null
+++ b/mods/Zone Customization Project/gamedata/scripts/game_setup.script
@@ -0,0 +1,557 @@
+--[[
+
+- Created by tdef
+- Updated by Tronex
+- Randomized world items on new game
+- Released blacklisted objects on new game
+- Created: 2018/10/27
+
+- 2019/31/3 script now read from config to set up
+- 2019/4/25 objects to release are now handled by another config
+- 2019/5/20 improved the way suffled consumables uses are set
+
+used ini:
+ items\settings\dynamic_item_spawn.ltx
+ plugins\new_game_setup.ltx
+
+set enable_debug to true, for debugging and map markers
+
+--]]
+
+-- these vehicles are supposed to shoot at you but call of misery broke them so they don't
+-- also you can board them, turn them on and drive around so should remove them?
+
+local ini_dyn
+local enable_debug = false
+local inited = false
+local sfind = string.find
+
+local world_itm_info = {} -- [name] = {}
+local world_itm_off = {} -- [name] = true
+
+local world_itm_num = {} -- [name] = num
+local world_itm_on = {} -- [id] = name
+
+local itm_list = {}
+local limited_uses = {}
+
+function get_itm_type(name)
+ if sfind(name,"kolbasa")
+ or sfind(name,"conserva")
+ or sfind(name,"bread")
+ then
+ return "food"
+ end
+
+ if sfind(name,"energy")
+ or sfind(name,"vodka")
+ or sfind(name,"drink")
+ then
+ return "drink"
+ end
+
+ if sfind(name,"drug")
+ or sfind(name,"antirad")
+ or sfind(name,"bandage")
+ or sfind(name,"medkit")
+ then
+ return "medical"
+ end
+
+ --if sfind(name,"repair") then
+ --return "tool"
+ --end
+
+ if sfind(name,"ammo") then
+ return "ammo"
+ end
+
+ if sfind(name,"misc")
+ then
+ return "misc"
+ end
+
+ return "NA"
+end
+
+function print_debug(...)
+ if enable_debug then
+ printf(...)
+ end
+end
+
+local marker_by_type = {
+ ["kit"] = "item_kit",
+ ["medical"] = "item_medical",
+ ["food"] = "item_food",
+ ["drink"] = "item_drink",
+ ["ammo"] = "item_ammo",
+ ["misc"] = "item_misc",
+}
+function add_marker(name, section, id, typ)
+ if enable_debug then
+ local spot = marker_by_type[typ] or marker_by_type["misc"]
+ level.map_add_object_spot_ser(id, spot, "Name: " .. name .. " \\nType: " .. typ .. " \\nSection: " .. section)
+ end
+end
+function remove_marker(id, typ)
+ if enable_debug then
+ local spot = marker_by_type[typ] or marker_by_type["misc"]
+ if (level.map_has_object_spot(id, spot) ~= 0) then
+ level.map_remove_object_spot(id, spot)
+ end
+ end
+end
+
+function init_settings()
+
+ if (inited) then return end
+ inited = true
+
+ ini_dyn = ini_file("items\\settings\\dynamic_item_spawn.ltx")
+
+ local n,m = 0,0
+ local result, id, value = "","",""
+ local name, info = "","",""
+
+ -- Gather items list
+ n = ini_dyn:line_count("categories") or 0
+ for i=0,n-1 do
+ result, id, value = ini_dyn:r_line_ex("categories",i,"","")
+ itm_list[id] = {}
+
+ m = ini_dyn:line_count(id) or 0
+ for ii=0,m-1 do
+ result, name, info = ini_dyn:r_line_ex(id,ii,"","")
+ if name and info then
+ for j=1,tonumber(info) do
+ local size = #itm_list[id] + 1
+ itm_list[id][size] = name
+ print_debug("- Game Setup | itm_list[%s][%s] = %s", id, size, name)
+ end
+ end
+ end
+ end
+
+ -- Gather recorded items pos
+ n = ini_dyn:line_count("levels") or 0
+ for i=0,n-1 do
+ result, id, value = ini_dyn:r_line_ex("levels",i,"","")
+
+ m = ini_dyn:line_count(id) or 0
+ for ii=0,m-1 do
+ result, name, info = ini_dyn:r_line_ex(id,ii,"","")
+ if name and info then
+ local t = str_explode(info,",")
+ if (#t == 6) and (t[1] ~= "NA") then
+ world_itm_info[name] = {
+ typ = t[1],
+ x = tonumber(t[2]),
+ y = tonumber(t[3]),
+ z = tonumber(t[4]),
+ lvl_id = tonumber(t[5]),
+ gm_id = tonumber(t[6]),
+ }
+ end
+ end
+ end
+ end
+
+ -- Gather uses
+ n = ini_dyn:line_count("possible_uses") or 0
+ for i=0,n-1 do
+ result, id, value = ini_dyn:r_line_ex("possible_uses",i,"","")
+ if id and value then
+ local t = str_explode(value,",")
+ limited_uses[id] = { tonumber(t[1]) or 1 , tonumber(t[2]) or 1 }
+ end
+ end
+
+ -- Make list of non-spawned items
+ for name,info in pairs(world_itm_info) do
+ world_itm_off[name] = true
+ end
+
+ for id,name in pairs(world_itm_on) do
+ world_itm_off[name] = nil
+ end
+
+ print_debug("- Game Setup | world_itm_info: %s - world_itm_on: %s - world_itm_off: %s", size_table(world_itm_info), size_table(world_itm_on), size_table(world_itm_off))
+end
+
+function try_spawn_world_item(ignore)
+
+ -- Get spawn place name
+ local _name
+ if ignore then
+ _name = random_key_table(world_itm_off)
+ else
+ local lvl_short = txr_routes.get_map(level.name())
+ local t = {}
+
+ -- Gather validated item places to spawn at
+ for name,_ in pairs(world_itm_off) do
+ if (not sfind(name,lvl_short)) then
+ t[#t+1] = name
+ end
+ end
+
+ _name = (#t > 0) and t[math.random(#t)]
+ end
+
+ -- Return if not available place has been found
+ if (not _name) then
+ print_debug("! Game Setup | can't find available item place", _name)
+ return
+ end
+
+ -- Return if place already has spawned item
+ for id,name in pairs(world_itm_on) do
+ if (name == _name) then
+ print_debug("! Game Setup | place {%s} is already occupied", _name)
+ return
+ end
+ end
+
+ -- Get info
+ local info = world_itm_info[_name]
+ if (not info) then
+ print_debug("! Game Setup | no info is found for {%s}", _name)
+ return
+ end
+
+ -- Get section
+ local itm_type = info.typ and itm_list[info.typ]
+ local section = itm_type and itm_type[math.random(#itm_type)]
+ if (not section) then
+ print_debug("! Game Setup | couldn't get section [%s] for type (%s)", section, info.typ)
+ return
+ end
+
+ if (not ini_sys:section_exist(section)) then
+ print_debug("! Game Setup | section [%s] doesn't exist", section)
+ return
+ end
+
+ -- Info check
+ if not (info.x and info.y and info.z and info.lvl_id and info.gm_id and true) then
+ print_debug("! Game Setup | item {%s} has wrong or incomplete info", name)
+ return
+ end
+
+ -- Spawn and adjust uses/condition/ammo size
+ if IsItem("ammo",section) then
+ local pos = vector():set(info.x, info.y, info.z)
+ local se_obj = alife_create_item(section, {pos, info.lvl_id, info.gm_id})
+ if se_obj then
+ add_marker(_name, section, se_obj.id, info.typ)
+
+ world_itm_on[se_obj.id] = _name
+ world_itm_off[_name] = nil
+
+ local box_size = ini_sys:r_u32(section, "box_size")
+ world_itm_num[_name] = math.random( math.ceil(box_size * 0.25) , math.ceil(box_size * 0.75) )
+
+ print_debug("/ Game Setup | created ammo [%s](%s) - place: %s - size = %s", section, se_obj.id, _name, world_itm_num[_name])
+ else
+ print_debug("! Game Setup | ammo [%s] couldn't be created", section)
+ end
+ else
+ local pos = vector():set(info.x, info.y, info.z)
+ local se_obj = alife_create_item(section, {pos, info.lvl_id, info.gm_id})
+ if se_obj then
+ add_marker(_name, section, se_obj.id, info.typ)
+
+ world_itm_on[se_obj.id] = _name
+ world_itm_off[_name] = nil
+
+ -- Multi-use
+ if limited_uses[section] then
+ world_itm_num[_name] = math.random(limited_uses[section][1], limited_uses[section][2])
+
+ print_debug("/ Game Setup | created multiuse item [%s](%s) - place: %s - uses = %s", section, se_obj.id, _name, world_itm_num[_name])
+
+ else
+ local is_using_con = utils_item.is_degradable(nil, section)
+ if is_using_con then
+
+ -- Parts
+ if IsItem("part",section) then
+ world_itm_num[_name] = random_choice(0.5,0.75,1)
+ print_debug("/ Game Setup | created degraded item [%s](%s) - place: %s - con = %s", section, se_obj.id, _name, world_itm_num[_name])
+
+ -- Degradable items
+ else
+ world_itm_num[_name] = (math.random(30,70)/100)
+ print_debug("/ Game Setup | created degraded item [%s](%s) - place: %s - con = %s", section, se_obj.id, _name, world_itm_num[_name])
+ end
+ else
+ print_debug("/ Game Setup | created item [%s](%s)", section, se_obj.id)
+ end
+ end
+ else
+ print_debug("! Game Setup | item [%s] couldn't be created", section)
+ end
+ end
+end
+
+function is_world_item(id)
+ if id and world_itm_on[id] then
+ --print_debug("! Game Setup | is_world_item[%s]", id)
+ return true
+ end
+ --print_debug("/ Game Setup | is_world_item[%s]", id)
+ return false
+end
+
+-- TODO IN 1.6 OR WHENEVER WE CAN EDIT ALL.SPAWN
+-- remove these 2 objects because vetham is making new office for medic and they get in the way
+
+function bar_medic_remove_stuff()
+ if not alife_storage_manager.get_state().duty_medic_fix then
+ alife_storage_manager.get_state().duty_medic_fix = true
+ for i=1,65534 do
+ local se = alife():object(i)
+ if se and (se:name() == 'bar_physic_object_mlr_0002' or se:name() == 'bar_physic_object_mlr_0003') then
+ alife():release(se)
+ end
+ end
+ end
+end
+
+-- TODO IN 1.6 OR WHENEVER WE CAN EDIT ALL.SPAWN
+-- remove these 4 objects because they're stuck in the train and physics impulse makes them jitter around at 5 fps
+
+function darkscape_remove_physics_objects()
+ if not alife_storage_manager.get_state().darkscape_phys_fix then
+ alife_storage_manager.get_state().darkscape_phys_fix = true
+ for i=1,65534 do
+ local se = alife():object(i)
+ if se and (se:name() == 'ds_physic_destroyable_object_0046' or se:name() == 'ds_physic_object_0009' or se:name() == 'ds_physic_object_0010' or se:name() == 'ds_physic_object_0002') then
+ alife():release(se)
+ end
+ end
+ end
+end
+
+-- TODO IN 1.6 OR WHENEVER WE CAN EDIT ALL.SPAWN
+-- delete the chair and move smart cover in this new position
+-- OR
+-- make the chair part of level geometry and delete the object
+-- OR
+-- find a way to make that specific object not react to physics
+
+function freedom_medic_fix()
+ if not alife_storage_manager.get_state().freedom_medic_fix then
+ alife_storage_manager.get_state().freedom_medic_fix = true
+ for i=1,65534 do
+ local se = alife():object(i)
+ if se then
+ if se:name() == 'mil_physic_object_0048' then
+ alife():release(se)
+ elseif se:name() == 'sc_freedom_medic_mlr' then
+ alife():teleport_object(i, 2165, 315401, vector():set(27.681089401245, -6.9381303787231, 17.38550567627))
+ end
+ end
+ end
+ end
+end
+
+-------------------------------
+-- CALLBACKS
+-------------------------------
+local function actor_on_first_update()
+
+ init_settings()
+
+ freedom_medic_fix()
+
+ bar_medic_remove_stuff()
+
+ darkscape_remove_physics_objects()
+
+ if alife_storage_manager.get_state().item_removal_done or IsTestMode() then
+ UnregisterScriptCallback("actor_on_first_update",actor_on_first_update)
+ return
+ end
+
+ alife_storage_manager.get_state().item_removal_done = true
+ print_debug("- Game Setup | create dynamic items")
+
+ local ini_setup = ini_file("plugins\\new_game_setup.ltx")
+ local enabled = true --ini_dyn:r_bool_ex("settings","enabled") or false
+
+ if (not enabled) then
+ return
+ end
+
+ -- Release static items and mines
+ local sim = alife()
+ local boxes = {}
+ for i=1, 65534 do
+ local se_obj = sim:object(i)
+ if se_obj then
+ local name = se_obj:name()
+ local cls = se_obj:clsid()
+
+ if cls == clsid.inventory_box_s then
+ --print_debug('%s_%s is a box', i, name)
+ boxes[i] = true
+
+ elseif ini_dyn:line_exist("replace_items",name) then
+ --print_debug('releasing %s', name)
+ --sim:release(se_obj, true)
+ alife_release(se_obj)
+ end
+
+ if ini_setup:line_exist("remove_objects",name) then
+ print_debug('/ Game Setup | Releasing object (%s)', name)
+
+ -- Clear inventory boxes from their manager
+ if (cls == clsid.inventory_box_s) then
+ treasure_manager.release_stash_by_id(se_obj.id)
+ end
+
+ safe_release_manager.release(se_obj)
+ end
+ end
+ end
+
+ -- Clear stashes
+ for i=1, 65534 do
+ local se_obj = sim:object(i)
+ if se_obj then
+ local name = se_obj:name()
+ if boxes[se_obj.parent_id] and (not sfind(name, 'mlr_strelok_item')) then
+ print_debug('/ Game Setup | Releasing {%s} from box', name)
+ --sim:release(se_obj, true)
+ alife_release(se_obj)
+ end
+ end
+ end
+
+ -- Setup items
+ local multi = game_difficulties.get_eco_factor("random_items") or 0.5
+ -- ZCP
+ if smr_amain_mcm.get_config("smr_enabled") then
+ multi = smr_loot_mcm.get_config("random_items")
+ end
+ -- ZCP END
+ multi = (multi < 1) and multi or 1
+
+ local num = math.ceil(size_table(world_itm_off) * multi)
+
+ for i=1,num do
+ try_spawn_world_item(true)
+ end
+
+ print_debug("- Game Setup | world_itm_info: %s - world_itm_on: %s - world_itm_off: %s", size_table(world_itm_info), size_table(world_itm_on), size_table(world_itm_off))
+end
+
+local tg_stkr = 0
+local function actor_on_update()
+ if time_global() < tg_stkr then
+ return
+ end
+
+ -- No need to process if actor is outside cordon / visited more levels / not a loner / Warfare is active
+ if (level.name() ~= "l01_escape")
+ or IsWarfare()
+ or (game_statistics.get_statistic_count("level_changes") > 1)
+ or (get_actor_true_community() ~= "stalker")
+ then
+ UnregisterScriptCallback("actor_on_update",actor_on_update)
+ return
+ end
+
+ -- Remove common military or mutant squads
+ local on_act_lvl = simulation_objects.is_on_the_actor_level
+ for id,v in pairs( SIMBOARD.squads ) do
+ local squad = alife_object(id)
+ if squad and squad.common and (squad.player_id == "army") and on_act_lvl(squad) then
+ squad:remove_squad()
+ break
+ end
+ end
+
+ tg_stkr = time_global() + 10000
+end
+
+local function actor_on_item_take(obj)
+ local id = obj:id()
+
+ if world_itm_on[id] then
+ local name = world_itm_on[id]
+ local section = obj:section()
+
+ local info = world_itm_info[name]
+ if (not info) then
+ print_debug("! Game Setup | can't get info for {%s}", name)
+ end
+
+ -- Spawn a new world item
+ try_spawn_world_item()
+
+ -- Switch state
+ world_itm_on[id] = nil
+ world_itm_off[name] = true
+
+ -- Read info
+ local num = world_itm_num[name]
+ if num then
+
+ -- Ammo
+ if IsItem("ammo",section) then
+ obj:ammo_set_count(num)
+ print_debug("- Game Setup | taken world ammo [%s](%s) is set to %s ammo - info name: %s", section, id, num, name)
+ world_itm_num[name] = nil
+
+ -- Multi-use
+ elseif limited_uses[section] then
+ alife_process_item( section, id , {uses = num} )
+ print_debug("- Game Setup | taken world consumable [%s](%s) is set to %s uses - info name: %s", section, id, num, name)
+ world_itm_num[name] = nil
+
+ -- Condition
+ elseif utils_item.is_degradable(nil, section) then
+ alife_process_item( section, id , {cond = num} )
+ print_debug("- Game Setup | taken world degraded item [%s](%s) is set to %s condition - info name: %s", section, id, num, name)
+ world_itm_num[name] = nil
+ end
+
+ -- Normal
+ else
+ print_debug("- Game Setup | taken world item [%s](%s) - info name: %s", section, id, uses, name)
+ end
+
+ -- Send message
+ itms_manager.send_itm_msg(section)
+
+ remove_marker(id, info.typ)
+ end
+
+ -- Ammo aggregation (it's important to start ammo aggregation after sorting taken world ammo size first, to prevent issues)
+ if IsAmmo(obj) then
+ item_weapon.ammo_aggregation(obj)
+ end
+end
+
+local function save_state(m_data)
+ m_data.world_itm_on = world_itm_on
+ m_data.world_itm_num = world_itm_num
+ print_debug("# SAVING: world_itm_on [%s] - world_itm_num [%s]", size_table(world_itm_on), size_table(world_itm_num))
+end
+
+local function load_state(m_data)
+ world_itm_on = m_data.world_itm_on or {}
+ world_itm_num = m_data.world_itm_num or {}
+ print_debug("# LOADING: world_itm_on [%s] - world_itm_num [%s]", size_table(world_itm_on), size_table(world_itm_num))
+end
+
+function on_game_start()
+ RegisterScriptCallback("actor_on_first_update",actor_on_first_update)
+ RegisterScriptCallback("actor_on_update",actor_on_update)
+ RegisterScriptCallback("actor_on_item_take",actor_on_item_take)
+ RegisterScriptCallback("save_state",save_state)
+ RegisterScriptCallback("load_state",load_state)
+end
\ No newline at end of file
diff --git a/mods/Zone Customization Project/gamedata/scripts/pda.script b/mods/Zone Customization Project/gamedata/scripts/pda.script
new file mode 100644
index 00000000..96fcefd1
--- /dev/null
+++ b/mods/Zone Customization Project/gamedata/scripts/pda.script
@@ -0,0 +1,662 @@
+local coc_ranking_array_size = 100 -- Top100
+local coc_ranking_list = {}
+local actor_rank_place
+dialog_closed = true
+
+----------------------------------------------------------------------------
+-- Engine->lua function calls
+----------------------------------------------------------------------------
+
+-- PDA Tabs
+-- It's now possible to add new button tabs to pda*.xml.
+-- You can use ActorMenu.get_pda_menu():GetActiveSection() to find out active pda tab
+-- UI returned must be CUIScriptWnd
+function set_active_subdialog(section)
+ --printf("set_active_subdialog | section=%s",section)
+
+ -- SMR
+ if smr_amain_mcm.get_config("smr_enabled") and smr_amain_mcm.get_config("glitched_pda") then
+ return ui_pda_glitched_tab.get_ui()
+ end
+
+ -- For NPCs PDA
+ local obj = db.actor:item_in_slot(8)
+ local sec = obj and obj:section()
+ if item_device.device_npc_pda[sec] then
+ return ui_pda_npc_tab.get_ui( se_load_var(obj:id(), obj:name(), "info") )
+ end
+
+ -- For Actor PDA
+ if (section == "eptTasks") then
+
+ elseif (section == "eptRanking") then
+
+ elseif (section == "eptLogs") then
+
+ elseif (section == "eptRelations") then
+ return ui_pda_relations_tab.get_ui()
+
+ elseif (section == "eptContacts") then
+ if _G.WARFARE then
+ return ui_pda_warfare_tab.get_ui()
+ else
+ return ui_pda_contacts_tab.get_ui()
+ end
+
+ elseif (section == "eptEncyclopedia") then
+ return ui_pda_encyclopedia_tab.get_ui()
+
+ elseif (section == "eptRadio") then
+ return ui_pda_radio_tab.get_ui()
+
+ end
+end
+
+function pda_use() -- from engine?
+ return item_device.is_pda_charged()
+end
+
+function on_low_battery() -- from engine
+
+end
+
+local map_spot_property = {}
+function property_box_clicked(property_ui)
+ local list_item = property_ui:GetSelectedItem()
+ if not (list_item) then
+ return
+ end
+ local textControl = list_item:GetTextItem()
+ local prop = textControl:GetText()
+ --printf("prop=%s",prop)
+ SendScriptCallback("map_spot_menu_property_clicked",property_ui,map_spot_property.id,map_spot_property.level_name,prop)
+end
+
+function property_box_add_properties(property_ui,id,level_name,hint)
+ map_spot_property.id = id
+ map_spot_property.level_name = level_name
+ -- if (hint and hint ~= "") then
+ -- property_ui:AddItem(hint)
+ -- end
+ SendScriptCallback("map_spot_menu_add_property",property_ui,id,level_name,hint)
+end
+
+-- use actor_menu for other modes
+-- 10 = Talk dialog show
+-- 11 = Talk dialog hide
+function actor_menu_mode(mode)
+ if(mode==10) then
+ dialog_closed = false
+ for k,st in pairs(db.storage) do
+ if (st.object and st.object:is_talking() and st.object:id() ~= AC_ID) then
+ local id = st.object:id()
+ SetEvent("used_npc_id", id) -- stupid hack since sidorovich and forester don't have use_callback
+ local sound_theme = xr_sound.sound_table[id]
+ if sound_theme and sound_theme.reset then
+ sound_theme:reset(id)
+ end
+ local m_data = alife_storage_manager.get_state()
+ if not (m_data.actor_contacts) then
+ m_data.actor_contacts = {}
+ end
+ m_data.actor_contacts[id] = true
+ break
+ end
+ end
+ Register_UI("Dialog")
+ --printf("---:>Talk Dialog show")
+ elseif(mode==11) then
+ --printf("---:>Talk Dialog hide")
+ SendScriptCallback("actor_on_leave_dialog",GetEvent("used_npc_id"))
+ SetEvent("used_npc_id", nil)
+ dialog_closed = true
+ Unregister_UI("Dialog")
+ end
+end
+
+function get_time_elapsed()
+ local s_time = level.get_start_time()
+ local seconds = tonumber(game.get_game_time():diffSec(s_time))
+
+ if (seconds < 60) then
+ return string.format("%d %s",seconds,game.translate_string("ui_st_secs"))
+ elseif (seconds < 3600) then
+ return string.format("%d %s",seconds/60,game.translate_string("ui_st_mins"))
+ elseif (seconds < 86400) then
+ return string.format("%d %s",seconds/60/60,game.translate_string("ui_st_hours"))
+ end
+
+ return string.format("%d %s",seconds/60/60/24,game.translate_string("ui_st_days"))
+end
+
+function get_stat(index) -- index= int return string
+ if(index==0) then
+ return get_time_elapsed()
+ elseif(index==1) then
+ return tostring(game_statistics.get_statistic_count("emissions"))
+ elseif(index==2) then
+ return tostring(game_statistics.get_statistic_count("tasks_completed"))
+ elseif(index==3) then
+ return tostring(game_statistics.get_statistic_count("killed_monsters"))
+ elseif(index==4) then
+ return tostring(game_statistics.get_statistic_count("killed_stalkers"))
+ elseif(index==5) then
+ return tostring(game_statistics.get_statistic_count("boxes_smashed"))
+ elseif(index==6) then
+ return tostring(game_statistics.get_statistic_count("stashes_found"))
+ elseif(index==7) then
+ return tostring(game_statistics.get_statistic_count("psi_storms"))
+ elseif(index==8) then
+ return tostring(game_statistics.get_statistic_count("pdas_delivered"))
+ elseif(index==9) then
+ return tostring(game_statistics.get_statistic_count("helicopters_downed"))
+ elseif(index==10) then
+ return tostring(game_statistics.get_statistic_count("artefacts_detected"))
+ elseif(index==11) then
+ return tostring(game_statistics.get_statistic_count("wounded_helped"))
+ elseif(index==12) then
+ return tostring(game_statistics.get_statistic_count("level_changes"))
+ elseif(index==13) then
+ return tostring(game_statistics.get_statistic_count("enemies_surrendered"))
+ elseif(index==14) then
+ return tostring(game_statistics.get_statistic_count("field_dressings"))
+ elseif(index==15) then
+ return (ui_pda_encyclopedia_tab.get_articles_unlocked_count() .. "/" .. ui_pda_encyclopedia_tab.get_articles_count())
+ elseif(index==16) then
+ return (game_achievements.get_achievements_unlocked_count() .. "/" .. game_achievements.get_achievements_count())
+ elseif(index==17) then
+ return (game_statistics.get_actor_visited_levels_count() .. "/33")
+ elseif(index==18) then
+ return (db.actor:money() .. " RU")
+ end
+ return ""
+end
+
+----------------------------------------------------------------------------
+-- Engine->lua function calls
+----------------------------------------------------------------------------
+local primary_objects_tbl = {
+ {target="mar_2c_01_anomaly_spot", hint="st_mar_2c_01_anomaly_spot_name"},
+ {target="mar_2c_02_anomaly_spot", hint="st_mar_2c_02_anomaly_spot_name"},
+ {target="ds_2c_01_anomaly_spot", hint="st_ds_2c_01_anomaly_spot_name"},
+ {target="ds_2c_02_anomaly_spot", hint="st_ds_2c_02_anomaly_spot_name"},
+ {target="ds_2c_03_anomaly_spot", hint="st_ds_2c_03_anomaly_spot_name"},
+ {target="ds_2c_04_anomaly_spot", hint="st_ds_2c_04_anomaly_spot_name"},
+ {target="trc_2c_01_rift_anom_spot", hint="st_trc_2c_01_rift_anom_spot_name"},
+ {target="trc_2c_02_chem_anom_spot", hint="st_trc_2c_02_chem_anom_spot_name"},
+ {target="trc_2c_03_desolation_anom_spot", hint="st_trc_2c_03_desolation_anom_spot_name"},
+ {target="esc_2c_01_high_hopes_anomaly_spot", hint="st_esc_2c_01_high_hopes_anomaly_spot_name"},
+ {target="gar_2c_01_nwi_anomaly_spot", hint="st_gar_2c_01_nwi_anomaly_spot_name"},
+ {target="gar_2c_02_toaster_anomaly_spot", hint="st_gar_2c_02_toaster_anomaly_spot_name"},
+ {target="agr_2c_01_hg_anomaly_spot", hint="st_agr_2c_01_hg_anomaly_spot_name"},
+ -- Undergound anomalies are commented out until we can have underground minimaps.
+ --{target="labx18_2c_01_deep_burn_anomaly_spot", hint="st_labx18_2c_01_deep_burn_anomaly_spot_name"},
+ --{target="labx18_2c_02_ff_anomaly_spot", hint="st_labx18_2c_02_ff_anomaly_spot_name"},
+ --{target="labx18_2c_03_elders_anomaly_spot", hint="st_labx18_2c_03_elders_anomaly_spot_name"},
+ --{target="labx18_2c_04_bioh_anomaly_spot", hint="st_labx18_2c_04_bioh_anomaly_spot_name"},
+ {target="bar_2c_01_grant_anomaly_spot", hint="st_bar_2c_01_grant_anomaly_spot_name"},
+ {target="ros_2c_01_tunnel_anomaly_spot", hint="st_ros_2c_01_tunnel_anomaly_spot_name"},
+ {target="ros_2c_02_crispy_train_anomaly_spot", hint="st_ros_2c_02_crispy_train_anomaly_spot_name"},
+ {target="ros_2c_03_yc_anomaly_spot", hint="st_ros_2c_03_yc_anomaly_spot_name"},
+ {target="mil_2c_01_hw_anomaly_spot", hint="st_mil_2c_01_hw_anomaly_spot_name"},
+ {target="yan_2c_01_cd_anomaly_spot", hint="st_yan_2c_01_cd_anomaly_spot_name"},
+ --{target="x16_lab_2c_01_fb_anomy_spot", hint="st_x16_lab_2c_01_fb_anomy_spot_name"},
+ {target="cit_2c_01_ch_anomaly_spot", hint="st_cit_2c_01_ch_anomaly_spot_name"},
+ {target="cit_2c_02_pg_anomaly_spot", hint="st_cit_2c_02_pg_anomaly_spot_name"},
+ {target="lim_2c_01_ls_anomaly_spot", hint="st_lim_2c_01_ls_anomaly_spot_name"},
+ {target="lim_2c_02_ib_anomaly_spot", hint="st_lim_2c_02_ib_anomaly_spot_name"},
+ {target="rad_2c_01_bl_anomaly_spot", hint="st_rad_2c_01_bl_anomaly_spot_name"},
+ {target="rad_2c_02_pp_anomaly_spot", hint="st_rad_2c_02_pp_anomaly_spot_name"},
+ --{target="bun_2c_01_f_anomaly_spot", hint="st_bun_2c_01_f_anomaly_spot_name"},
+ --{target="bun_2c_02_gp_anomaly_spot", hint="st_bun_2c_02_gp_anomaly_spot_name"},
+ {target="pri_2c_01_pp_anomaly_spot", hint="st_pri_2c_01_pp_anomaly_spot_name"},
+ {target="pri_2c_02_gt_anomaly_spot", hint="st_pri_2c_02_gt_anomaly_spot_name"},
+ {target="pri_2c_03_wr_anomaly_spot", hint="st_pri_2c_03_wr_anomaly_spot_name"},
+ {target="pri_2c_04_o_anomaly_spot", hint="st_pri_2c_04_o_anomaly_spot_name"},
+ {target="aes_2c_01_ce_anomaly_spot", hint="st_aes_2c_01_ce_anomaly_spot_name"},
+ {target="aes_2c_02_p_anomaly_spot", hint="st_aes_2c_02_p_anomaly_spot_name"},
+ {target="aes2_2c_01_bo_anomaly_spot", hint="st_aes2_2c_01_bo_anomaly_spot_name"},
+ {target="aes2_2c_02_at_anomaly_spot", hint="st_aes2_2c_02_at_anomaly_spot_name"},
+ --{target="sar_2c_01_r_anomaly_spot", hint="st_sar_2c_01_r_anomaly_spot_name"},
+ {target="gen_2c_01_ss_anomaly_spot", hint="st_gen_2c_01_ss_anomaly_spot_name"},
+ {target="mar_smart_terrain_11_3_anomaly_spot", hint="st_mar_smart_terrain_11_3_anomaly_spot_name"},
+ {target="mar_smart_terrain_10_10_anomaly_spot", hint="st_mar_smart_terrain_10_10_anomaly_spot_name"},
+ {target="mar_smart_terrain_base_anomaly_spot", hint="st_mar_smart_terrain_base_anomaly_spot_name"},
+ {target="mar_smart_terrain_8_8_anomaly_spot", hint="st_mar_smart_terrain_8_8_anomaly_spot_name"},
+ {target="mar_smart_terrain_12_2_anomaly_spot", hint="st_mar_smart_terrain_12_2_anomaly_spot_name"},
+ {target="mar_smart_terrain_3_7_anomaly_spot", hint="st_mar_smart_terrain_3_7_anomaly_spot_name"},
+ {target="mar_smart_terrain_3_3_anomaly_spot", hint="st_mar_smart_terrain_3_3_anomaly_spot_name"},
+ {target="esc_smart_terrain_1_11_anomaly_spot", hint="st_esc_smart_terrain_1_11_anomaly_spot_name"},
+ {target="esc_smart_terrain_8_9_anomaly_spot", hint="st_esc_smart_terrain_8_9_anomaly_spot_name"},
+ {target="esc_smart_terrain_5_4_anomaly_spot", hint="st_esc_smart_terrain_5_4_anomaly_spot_name"},
+ {target="gar_smart_terrain_3_7_anomaly_spot", hint="st_gar_smart_terrain_3_7_anomaly_spot_name"},
+ {target="gar_smart_terrain_3_7_anomaly_spot_2", hint="st_gar_smart_terrain_3_7_anomaly_spot_2_name"},
+ {target="gar_smart_terrain_2_4_anomaly_spot", hint="st_gar_smart_terrain_2_4_anomaly_spot_name"},
+ {target="gar_smart_terrain_6_7_anomaly_spot", hint="st_gar_smart_terrain_6_7_anomaly_spot_name"},
+ {target="gar_smart_terrain_5_6_anomaly_spot", hint="st_gar_smart_terrain_5_6_anomaly_spot_name"},
+ {target="gar_smart_terrain_1_7_anomaly_spot", hint="st_gar_smart_terrain_1_7_anomaly_spot_name"},
+ {target="agr_smart_terrain_1_3_anomaly_spot", hint="st_agr_smart_terrain_1_3_anomaly_spot_name"},
+ {target="agr_smart_terrain_4_4_near_3_anomaly_spot", hint="st_agr_smart_terrain_4_4_near_3_anomaly_spot_name"},
+ {target="agr_smart_terrain_5_7_anomaly_spot", hint="st_agr_smart_terrain_5_7_anomaly_spot_name"},
+ {target="agr_smart_terrain_5_2_anomaly_spot", hint="st_agr_smart_terrain_5_2_anomaly_spot_name"},
+ {target="agr_smart_terrain_1_2_anomaly_spot", hint="st_agr_smart_terrain_1_2_anomaly_spot_name"},
+ {target="val_smart_terrain_9_10_anomaly_spot", hint="st_val_smart_terrain_9_10_anomaly_spot_name"},
+ {target="val_smart_terrain_6_4_anomaly_spot", hint="st_val_smart_terrain_6_4_anomaly_spot_name"},
+ {target="val_smart_terrain_8_6_anomaly_spot", hint="st_val_smart_terrain_8_6_anomaly_spot_name"},
+ {target="val_smart_terrain_9_4_anomaly_spot", hint="st_val_smart_terrain_9_4_anomaly_spot_name"},
+ {target="val_smart_terrain_8_9_anomaly_spot", hint="st_val_smart_terrain_8_9_anomaly_spot_name"},
+ {target="mil_smart_terrain_4_7_anomaly_spot", hint="st_mil_smart_terrain_4_7_anomaly_spot_name"},
+ {target="mil_smart_terrain_2_1_anomaly_spot", hint="st_mil_smart_terrain_2_1_anomaly_spot_name"},
+ {target="mil_smart_terrain_2_6_anomaly_spot", hint="st_mil_smart_terrain_2_6_anomaly_spot_name"},
+ {target="mil_smart_terrain_7_4_anomaly_spot", hint="st_mil_smart_terrain_7_4_anomaly_spot_name"},
+ {target="mil_smart_terrain_8_3_anomaly_spot", hint="st_mil_smart_terrain_8_3_anomaly_spot_name"},
+ {target="yan_smart_terrain_2_5_anomaly_spot", hint="st_yan_smart_terrain_2_5_anomaly_spot_name"},
+ {target="yan_smart_terrain_zombi_spawn_anomaly_spot", hint="st_yan_smart_terrain_zombi_spawn_anomaly_spot_name"},
+ {target="yan_smart_terrain_5_3_anomaly_spot", hint="st_yan_smart_terrain_5_3_anomaly_spot_name"},
+ {target="yan_smart_terrain_4_2_anomaly_spot", hint="st_yan_smart_terrain_4_2_anomaly_spot_name"},
+ {target="red_smart_terrain_6_3_anomaly_spot", hint="st_red_smart_terrain_6_3_anomaly_spot_name"},
+ {target="red_smart_terrain_4_5_anomaly_spot", hint="st_red_smart_terrain_4_5_anomaly_spot_name"},
+ {target="red_smart_terrain_monsters_anomaly_spot", hint="st_red_smart_terrain_monsters_anomaly_spot_name"},
+ {target="red_smart_terrain_3_2_anomaly_spot", hint="st_red_smart_terrain_3_2_anomaly_spot_name"},
+ {target="red_smart_terrain_6_6_anomaly_spot", hint="st_red_smart_terrain_6_6_anomaly_spot_name"},
+ {target="red_smart_terrain_3_1_anomaly_spot", hint="st_red_smart_terrain_3_1_anomaly_spot_name"},
+ {target="gen_smart_terrain_urod_anomaly_spot", hint="st_gen_smart_terrain_urod_anomaly_spot_name"},
+ {target="trc_sim_13_anomal_zone_spot", hint="st_trc_sim_13_anomal_zone_spot_name"},
+
+ -- POLE
+ {target="pol_smart_terrain_1_2_anomaly_spot", hint="st_pol_smart_terrain_1_2_anomaly_spot_name"},
+
+ -- MLR
+ {target="dasc_treesucker_state_spot", hint="st_dasc_treesucker_state_name"},
+ {target="tc_smart_terrain_bandit_base_spot", hint="st_tc_bandit_base_name"},
+ {target="rad_smart_terrain_kpp_spot", hint="st_tc_kpp_name"},
+ {target="rad_smart_terrain_vert_spot", hint="st_tc_vert_name"},
+ {target="radar_smart_terrain_first_zastava_spot", hint="st_radar_first_zastava_name"},
+ {target="rad_smart_terrain_bunker_spot", hint="st_rad_bunker_name"},
+ {target="red_smart_terrain_dark_yar_spot", hint="st_red_dark_yar_name"},
+ {target="red_smart_terrain_central_mine_spot", hint="st_red_central_mine_name"},
+ {target="red_smart_terrain_crap_spot", hint="st_red_crap_name"},
+ {target="agr_smart_terrai_SRI_spot", hint="st_agr_SRI_name"},
+ {target="mar_smart_terrain_post_spot", hint="st_lim_post_vishka_name"},
+ {target="mar_smart_terrain_old_church_spot", hint="st_lim_old_church_name"},
+ {target="mar_smart_terrain_village_csky_spot", hint="st_lim_village_csky_name"},
+ {target="mar_smart_terrain_water_pump_station_spot", hint="st_lim_water_pump_station_name"},
+ {target="mar_smart_terrain_mechanic_yard_spot", hint="st_lim_mechanic_yard_name"},
+ {target="red_smart_terrain_bridge_spot", hint="st_lim_bridge_name"},
+ {target="red_smart_terrain_house_lesnik_spot", hint="st_lim_house_lesnik_name"},
+ {target="lim_smart_first_zastava_spot", hint="st_lim_zastava_name"},
+ {target="lim_smart_bubbles_spot", hint="st_lim_bubbles_name"},
+ {target="lim_smart_nonbuild_spot", hint="st_lim_nonbuild_name"},
+ {target="lim_smart_dyga_spot", hint="st_lim_dyga_name"},
+ {target="ds_smart_administration_spot", hint="st_ds_administration_name"},
+ {target="ds_smart_market_spot", hint="st_ds_market_name"},
+ {target="ds_smart_house_of_culture_spot", hint="st_ds_HoC_name"},
+ {target="esc_smart_terrain_novice_village_spot", hint="st_novice_village_name"},
+ {target="esc_smart_terrain_south_blokpost_spot", hint="st_south_blokpost_name"},
+ {target="esc_smart_terrain_ATP_spot", hint="st_ATP_name"},
+ {target="esc_smart_terrain_elevator_spot", hint="st_elevator_name"},
+ {target="esc_smart_terrain_tunnel_electr_spot", hint="st_tunnel_electr_name"},
+ {target="esc_smart_terrain_neut_base_spot", hint="st_neut_base_name"},
+ {target="esc_smart_terrain_north_blockpost_spot", hint="st_north_blockpost_name"},
+ {target="dar_smart_terrain_farm_spot", hint="st_dar_farm_name"},
+ {target="dar_smart_terrain_complex_proizv_spot", hint="st_dar_complex_name"},
+ {target="mil_smart_terrain_bs_village_spot", hint="st_bs_village_name"},
+ {target="mil_smart_terrain_base_freedom_spot", hint="st_base_freedom_name"},
+ {target="mil_smart_terrain_border_spot", hint="st_border_name"},
+ {target="pri_smart_terrain_mon_base_spot", hint="st_mon_base_name"},
+ {target="pri_smart_terrain_hotel_poless_spot", hint="st_hotel_poless_name"},
+ {target="pri_smart_terrain_big_bus_station_spot", hint="st_big_bus_station_name"},
+ {target="gar_smart_terrain_6_3_baraholka_spot", hint="st_gar_baraholka_name"},
+ {target="gar_smart_terrain_dolg_outpost_spot", hint="st_gar_outpost_name"},
+ {target="gar_smart_terrain_3_5_angar_spot", hint="st_gar_angar_name"},
+ {target="bar_smart_terrain_bar100rent_spot", hint="st_bar100rent_name"},
+ {target="yan_smart_terrain_6_4_bunker_spot", hint="st_yanbunker_name"},
+ {target="yan_smart_terrain_proizvcomplex_spot", hint="st_yancomplex_name"},
+
+ {target="zat_b55_spot", hint="st_zat_b55_name_land"},
+ {target="zat_b100_spot", hint="st_zat_b100_name_land"},
+ {target="zat_b104_spot", hint="st_zat_b104_name_land"},
+ {target="zat_b38_spot", hint="st_zat_b38_name_land"},
+ {target="zat_b40_spot", hint="st_zat_b40_name_land"},
+ {target="zat_b56_spot", hint="st_zat_b56_name_land"},
+ {target="zat_b5_spot", hint="st_zat_b5_name_land"},
+ {target="zat_a2_spot", hint="st_zat_a2_name_land"},
+ {target="zat_b20_spot", hint="st_zat_b20_name_land"},
+ {target="zat_b20_spot", hint="st_zat_fire_name_land"},
+ {target="zat_b53_spot", hint="st_zat_b53_name_land"},
+ {target="zat_b101_spot", hint="st_zat_b101_name_land"},
+ {target="zat_b101_spot", hint="st_zat_waste_name_land"},
+ {target="zat_b106_spot", hint="st_zat_b106_name_land"},
+ {target="zat_b7_spot", hint="st_zat_b7_name_land"},
+ {target="zat_b14_spot", hint="st_zat_b14_name_land"},
+ {target="zat_b14_spot", hint="st_zat_tide_name_land"},
+ {target="zat_b52_spot", hint="st_zat_b52_name_land"},
+ {target="zat_b39_spot", hint="st_zat_b39_name_land"},
+ {target="zat_b33_spot", hint="st_zat_b33_name_land"},
+ {target="zat_b18_spot", hint="st_zat_b18_name_land"},
+ {target="zat_b54_spot", hint="st_zat_b54_name_land"},
+ {target="zat_b12_spot", hint="st_zat_b12_name_land"},
+ {target="zat_b28_spot", hint="st_zat_b28_name_land"},
+ {target="zat_b103_spot", hint="st_zat_b103_name_land"},
+ {target="jup_b1_spot", hint="st_jup_b1_name_land"},
+ {target="jup_b46_spot", hint="st_jup_b46_name_land"},
+ {target="jup_b202_spot", hint="st_jup_b202_name_land"},
+ {target="jup_b211_spot", hint="st_jup_b211_name_land"},
+ {target="jup_b200_spot", hint="st_jup_b200_name_land"},
+ {target="jup_b19_spot", hint="st_jup_b19_name_land"},
+ {target="jup_a6_spot", hint="st_jup_a6_name_land"},
+ {target="jup_b25_spot", hint="st_jup_b25_name_land"},
+ {target="jup_b25_spot", hint="st_jup_earth_name_land"},
+ {target="jup_b6_spot", hint="st_jup_b6_name_land"},
+ {target="jup_b205_spot", hint="st_jup_b205_name_land"},
+ {target="jup_b206_spot", hint="st_jup_b206_name_land"},
+ {target="jup_b206_spot", hint="st_jup_grove_name_land"},
+ {target="jup_b32_spot", hint="st_jup_b32_name_land"},
+ {target="jup_a10_spot", hint="st_jup_a10_name_land"},
+ {target="jup_b209_spot", hint="st_jup_b209_name_land"},
+ {target="jup_b208_spot", hint="st_jup_b208_name_land"},
+ {target="jup_a12_spot", hint="st_jup_a12_name_land"},
+ {target="jup_b212_spot", hint="st_jup_b212_name_land"},
+ {target="jup_b9_spot", hint="st_jup_b9_name_land"},
+ {target="jup_b201_spot", hint="st_jup_b201_name_land"},
+ {target="jup_a9_spot", hint="st_jup_a9_name_land"},
+
+ {target="pri_a28_spot", hint="st_pri_a28_name_land"},
+ {target="pri_b36_spot", hint="st_pri_b36_name_land"},
+ {target="pri_b303_spot", hint="st_pri_b303_name_land"},
+ {target="pri_b301_spot", hint="st_pri_b301_name_land"},
+ {target="pri_a17_spot", hint="st_pri_a17_name_land"},
+ {target="pri_b306_spot", hint="st_pri_b306_name_land"},
+ {target="pri_b306_spot", hint="st_pri_plug_name_land"},
+ {target="pri_a16_spot", hint="st_pri_a16_name_land"},
+ {target="pri_a25_spot", hint="st_pri_a25_name_land"},
+ {target="pri_b35_spot", hint="st_pri_b35_name_land"},
+ {target="pri_a21_spot", hint="st_pri_a21_name_land"},
+ {target="pri_b304_spot", hint="st_pri_b304_name_land"},
+ {target="pri_b304_spot", hint="st_pri_bath_name_land"},
+ {target="pri_a18_spot", hint="st_pri_a18_name_land"},
+ {target="pri_anomal_vulkan_spot", hint="st_pri_b307_name_land"},
+ {target="pri_anomal_loza_spot", hint="st_pri_b302_name_land"}
+}
+
+function fill_primary_objects()
+ for k,v in pairs(primary_objects_tbl) do
+ local obj_id = get_story_object_id(v.target)
+ --/ SGM in
+ if obj_id and (level.map_has_object_spot(obj_id,"primary_object") == 0) and has_alife_info(v.target) then
+ level.map_add_object_spot(obj_id, "primary_object", v.hint)
+ end
+ --/ SGM out
+ end
+
+ local sleep_zones_tbl =
+ { "mar_a3_sr_sleep_id",
+ "agr_sr_sleep_wagon_id",
+ "agr_sr_sleep_tunnel_id",
+ "agr_army_sleep_id",
+ "esc_basement_sleep_area_id",
+ "esc_secret_sleep_id",
+ "ds_farmhouse_sleep_id",
+ "val_abandoned_house_sleep_id",
+ "val_vagon_sleep_id",
+ "gar_dolg_sleep_id",
+ "gar_angar_sleep_id",
+ "bar_actor_sleep_zone_id",
+ "yan_bunker_sleep_restrictor_id",
+ "ros_vagon_sleep_id",
+ "mil_freedom_sleep_id",
+ "mil_smart_terran_2_4_sleep_id",
+ "rad_sleep_room_id",
+ "cit_merc_sleep_id",
+ "pri_monolith_sleep_id",
+ "pri_room27_sleep_id",
+ "zat_a2_sr_sleep_id",
+ "jup_a6_sr_sleep_id",
+ "pri_a16_sr_sleep_id",
+ "pol_secret_sleep_id"
+}
+ for i=1,#sleep_zones_tbl do
+ local obj_id = get_story_object_id(sleep_zones_tbl[i])
+ if (level.map_has_object_spot(obj_id, "ui_pda2_actor_sleep_location")==0) then
+ level.map_add_object_spot_ser(obj_id, "ui_pda2_actor_sleep_location", "st_ui_pda_sleep_place")
+ end
+ end
+end
+
+function add_quick_slot_items_on_game_start()
+ for i=0,3 do
+ exec_console_cmd( strformat("slot_%s %s",i, ini_sys:r_string_ex("actor","quick_item_"..tostring(i+1)) or "") )
+ end
+end
+
+----------------------------------------------------------------------------
+-- Scripted Callback Register
+----------------------------------------------------------------------------
+local function npc_on_net_spawn(npc,se_obj)
+ se_save_var(se_obj.id,se_obj:name(),"last_seen_level",level.name())
+ se_save_var(se_obj.id,se_obj:name(),"last_seen_time",game.get_game_time())
+end
+
+function on_game_start()
+ local function on_game_load()
+ if (not alife_storage_manager.get_state().enable_warfare_mode) then
+ CreateTimeEvent(0, "ScanForSpots", 2, discover_spots)
+ end
+ end
+
+ RegisterScriptCallback("npc_on_net_spawn",npc_on_net_spawn)
+ RegisterScriptCallback("on_game_load",on_game_load)
+end
+
+-- mlr
+----------------------------------------------------------------------------
+-- Character Ranking
+----------------------------------------------------------------------------
+function get_coc_ranking_list()
+ for i=1,10 do
+ printf("- get_coc_ranking_list | id [%s] = %s", i , coc_ranking_list[i])
+ end
+ return coc_ranking_list
+end
+
+-- called from info_portions.script
+function calculate_rankings()
+ local t = {}
+ local sim = alife()
+ -- add actor to list
+ t[0] = sim:actor():rank()
+
+ -- check all stalker server objects
+ for i=1,65534 do
+ local se_obj = sim:object(i)
+ if (se_obj and IsStalker(nil,se_obj:clsid()) and se_obj:alive() and se_obj:community() ~= "zombied" and se_obj:community() ~= "trader") then
+ -- Check if object has a story id, if it does they are probably unique
+ local sid = story_objects.story_id_by_object_id[se_obj.id]
+ if not (sid) then
+ t[se_obj.id] = se_obj:rank()
+ end
+ end
+ end
+
+ coc_ranking_list = iempty_table(coc_ranking_list)
+ local size_t = 0
+ -- sort by highest rank first
+ for id,rank in spairs(t, function(t,a,b) return t[a] > t[b] end) do
+ size_t = size_t + 1
+ coc_ranking_list[size_t] = id
+ if (id == AC_ID) then
+ actor_rank_place = size_t
+ end
+ end
+
+ -- force actor into last visible slot + 1 on ranking list
+ coc_ranking_list[coc_ranking_array_size+1] = 0
+end
+
+-- called from engine! It's how many character rankings to display! u8 (max 255)
+function get_rankings_array_size()
+ return coc_ranking_array_size
+end
+
+-- called from engine! must return bool!
+function coc_rankings_can_show(index)
+ if (has_alife_info("ui_pda_hide")) then
+ return false
+ end
+ local se_obj = coc_ranking_list[index] ~= nil and alife_object(coc_ranking_list[index])
+ if (se_obj) then
+ return true
+ end
+ return false
+end
+
+-- called from engine! must return string!
+function coc_rankings_set_name(index)
+ local se_obj = coc_ranking_list[index] ~= nil and alife_object(coc_ranking_list[index])
+ if (se_obj) then
+ return strformat("%s. %s",se_obj.id == AC_ID and actor_rank_place or index,se_obj:character_name())
+ end
+ return ""
+end
+
+-- called from engine! must return string!
+function coc_rankings_set_hint(index)
+ local se_obj = coc_ranking_list[index] ~= nil and alife_object(coc_ranking_list[index])
+ if (se_obj) then
+ if (se_obj.id == AC_ID) then
+ --TODO: Maybe some stats for player, like rank points per minute; if such a thing is possible.
+ return ""
+ else
+ local return_str = ""
+
+ -- DEBUG REMOVE ME LATER
+ if(DEV_DEBUG and ui_options.get("other/debug_hud") == true) then
+ return_str = se_obj:profile_name() .. [[ \n]] .. se_obj:character_icon() .. [[ \n]]
+ end
+
+ -- stalker stats
+ local m_data = alife_storage_manager.get_se_obj_state(se_obj)
+ if (m_data) then
+ local last_seen_level = m_data.last_seen_level
+ local last_seen_time = m_data.last_seen_time and m_data.last_seen_time.dateToString and m_data.last_seen_time:dateToString(game.CTime.DateToDay)
+
+ if (last_seen_level and last_seen_time) then
+ return_str = return_str .. game.translate_string("st_last_seen") .. ": " .. game.translate_string(last_seen_level) .. " (" .. last_seen_time .. ")"
+
+ if (m_data["killed_stalkers"]) then
+ return_str = return_str .. [[ \n]] .. game.translate_string("st_stalkers_killed") .. ": " .. tostring(m_data["killed_stalkers"])
+ end
+ if (m_data["killed_monsters"]) then
+ return_str = return_str .. [[ \n]] .. game.translate_string("st_mutants_killed") .. ": " .. tostring(m_data["killed_monsters"])
+ end
+ if (m_data["artefacts_found"]) then
+ return_str = return_str .. [[ \n]] .. game.translate_string("st_artefacts_found") .. ": " .. tostring(m_data["artefacts_found"])
+ end
+ if (m_data["wounded_helped"]) then
+ return_str = return_str .. [[ \n]] .. game.translate_string("st_wounded_helped") .. ": " .. tostring(m_data["wounded_helped"])
+ end
+ if (m_data["corpse_looted"]) then
+ return_str = return_str .. [[ \n]] .. game.translate_string("st_corpse_looted") .. ": " .. tostring(m_data["corpse_looted"])
+ end
+ if (m_data["items_sold"]) then
+ return_str = return_str .. [[ \n]] .. game.translate_string("st_items_sold") .. ": " .. tostring(m_data["items_sold"])
+ end
+ end
+ end
+ return return_str
+ end
+ end
+ return ""
+end
+
+-- called from engine! must return string!
+function coc_rankings_set_description(index)
+ local se_obj = coc_ranking_list[index] ~= nil and alife_object(coc_ranking_list[index])
+ if (se_obj) then
+ local faction_color = "%c[255,255,255,1]"
+ if (game_relations.is_factions_enemies(db.actor:character_community(),se_obj:community())) then
+ faction_color = "%c[255,255,1,1]"
+ elseif (game_relations.is_factions_friends(db.actor:character_community(),se_obj:community())) then
+ faction_color = "%c[255,1,255,1]"
+ end
+
+ local reputation = se_obj:reputation()
+
+ local repu_color = "%c[255,255,255,1]"
+ if (reputation <= -500) then
+ repu_color = "%c[255,255,1,1]"
+ elseif (reputation >= 500) then
+ repu_color = "%c[255,1,255,1]"
+ end
+
+ local faction_str = game.translate_string("ui_st_community") .. ": " .. faction_color .. game.translate_string(se_obj:community()) .. "%c[default]"
+ local rank_str = game.translate_string("ui_st_rank") .. ": " .. "%c[255,215,215,215]" .. game.translate_string("st_rank_"..ranks.get_se_obj_rank_name(se_obj)) .. " %c[255,110,110,255]" .. se_obj:rank() .. "%c[default]"
+ local repu_str = game.translate_string("ui_st_reputation") .. ": " .. repu_color .. game.translate_string(utils_obj.get_reputation_name(reputation)) .. "%c[default]"
+
+ return strformat([[ %s \n %s \n %s]],faction_str,rank_str,repu_str)
+ end
+ return ""
+end
+
+-- called from engine! must return string!
+function coc_rankings_set_icon(index)
+ local se_obj = coc_ranking_list[index] ~= nil and alife_object(coc_ranking_list[index])
+ if (se_obj) then
+ local icon_name
+ if (se_obj.id == AC_ID) then
+ if (ui_options.get("gameplay/general/outfit_portrait") == true) then
+ local outfit = db.actor:item_in_slot(7)
+ if (outfit) then
+ local icon = ini_sys:r_string_ex(outfit:section(),"character_portrait")
+ if (icon and icon ~= "") then
+ return icon
+ end
+ end
+ end
+ icon_name = db.actor:character_icon()
+ else
+ local npc = db.storage[se_obj.id] and db.storage[se_obj.id].object
+ if (npc) then
+ icon_name = npc:character_icon()
+ else
+ icon_name = se_obj:character_icon()
+ end
+ end
+ return icon_name and icon_name ~= "" and icon_name or "ui\\ui_noise"
+ end
+ return ""
+end
+
+function coc_rankings_show_border(index)
+ local se_obj = coc_ranking_list[index] ~= nil and alife_object(coc_ranking_list[index])
+ return se_obj and se_obj.id == AC_ID or false
+end
+
+local distance_tbl = {
+ ["l12_stancia"] = 45,
+ ["l12_stancia_2"] = 45,
+ ["l11_hospital"] = 30,
+ ["l10_limansk"] = 35,
+ ["l06_rostok"] = 30,
+ ["k02_trucks_cemetery"] = 45,
+}
+function discover_spots()
+ ResetTimeEvent(0,"ScanForSpots",3)
+
+ local actor = db.actor
+ for k,v in pairs(primary_objects_tbl) do
+ if actor:dont_has_info(v.target) then
+ local obj_id = get_story_object_id(v.target)
+ if obj_id and db.storage[obj_id] and db.storage[obj_id].object then
+ local n_dist = distance_tbl[level.name()] or 40
+ if (db.storage[obj_id].object:position():distance_to(actor:position()) <= n_dist) then
+ give_info(v.target)
+ game_statistics.increment_rank(10)
+ actor_menu.set_fade_msg( game.translate_string(v.hint), 5, nil, "device\\pda\\spot_discovered" )
+ --news_manager.send_tip(actor,game.translate_string(v.hint),0,"tourist",5000,nil,game.translate_string("st_revealled_area"))
+ fill_primary_objects()
+ end
+ end
+ end
+ end
+end
\ No newline at end of file
diff --git a/mods/Zone Customization Project/gamedata/scripts/sim_board.script b/mods/Zone Customization Project/gamedata/scripts/sim_board.script
new file mode 100644
index 00000000..0f71af22
--- /dev/null
+++ b/mods/Zone Customization Project/gamedata/scripts/sim_board.script
@@ -0,0 +1,437 @@
+--'******************************************************
+--'*Registry of smart terrains. The playing field simulation.
+-- Edited by Alundaio
+--'******************************************************
+-------------------
+local level,alife,game_graph,math,pairs,tostring,tonumber,tsort,tinsert = level,alife,game_graph,math,pairs,tostring,tonumber,table.sort,table.insert
+-------------------
+-----------------------------------------------------------------------------------
+-- Public
+-----------------------------------------------------------------------------------
+function general_squad_precondition(squad,target)
+ return false
+end
+
+function general_base_precondition(squad,target)
+
+ -- Any faction can target a base occupied by their own community / or empty
+ if (target.faction == nil or target.faction == squad.player_id) then
+ return true
+ end
+
+ -- if a base is occupied by enemies, squad can target it during early sunrise time
+ if (game_relations.is_valid(squad.player_id) and game_relations.is_valid(target.faction)) then
+ if (game_relations.is_factions_enemies(squad.player_id,target.faction)) then
+ return in_time_interval(3,6)
+ else
+ return true
+ end
+ end
+
+ return false
+end
+
+function general_territory_precondition(squad,target)
+
+ -- Mutants target territories based on their species and proper time
+ if (squad.player_id == "monster_predatory_day") then
+ return in_time_interval(6,19)
+ elseif (squad.player_id == "monster_predatory_night") then
+ return in_time_interval(19,6)
+ elseif (squad.player_id == "monster_zombied_day") then
+ return in_time_interval(6,19)
+ elseif (squad.player_id == "monster_zombied_night") then
+ return in_time_interval(19,6)
+ elseif (squad.player_id == "monster_vegetarian" or squad.player_id == "zombied") then
+ return true
+ end
+
+ -- Any squad can target a territory occupied by their own community / or empty
+ if (target.faction == nil or target.faction == squad.player_id) then
+ return true
+ end
+
+ -- if a territory is occupied by enemies, squad can target it during daytime
+ if (game_relations.is_valid(squad.player_id) and game_relations.is_valid(target.faction)) then
+ if (game_relations.is_factions_enemies(squad.player_id,target.faction)) then
+ return in_time_interval(9,15)
+ else
+ return true
+ end
+ end
+
+ return false
+end
+
+function general_resource_precondition(squad,target)
+ return in_time_interval(10,6)
+end
+
+function general_lair_precondition(squad,target)
+ return true -- Will fill up all the lairs first, by monster squads
+end
+
+--------------------------------------------------------------------------------------------------------
+-- SIMULATION BOARD
+--------------------------------------------------------------------------------------------------------
+
+class "simulation_board"
+function simulation_board:__init()
+ --' smart = {smrt, targets = {}, dangers = {}, squads = {}, stayed_squads = {}}
+ self.smarts = {}
+ self.smarts_by_names = {}
+ self.simulation_started = true
+ self.squads = {}
+ self.tmp_assigned_squad = {}
+end
+
+function simulation_board:register_smart(obj)
+ --utils_data.debug_write(strformat("simulation_board:register_smart %s",obj and obj:name()))
+ if self.smarts[obj.id] ~= nil then
+ printf("Smart already exist in list [%s]", obj:name())
+ return
+ end
+
+ --self.smarts[obj.id] = {smrt = obj, squads = {}, stayed_squads = {}, population = 0}
+ self.smarts[obj.id] = {smrt = obj, squads = {}, population = 0}
+ self.smarts_by_names[obj:name()] = obj
+end
+
+function simulation_board:unregister_smart(obj)
+ --utils_data.debug_write(strformat("simulation_board:unregister_smart %s",obj and obj:name()))
+ self.smarts[obj.id] = nil
+ self.smarts_by_names[obj:name()] = nil
+end
+
+function simulation_board:start_sim() -- Doesn't seem to be used in 1.6
+ self.simulation_started = true
+end
+
+function simulation_board:stop_sim() -- Doesn't seem to be used in 1.6
+ self.simulation_started = false
+end
+
+function simulation_board:set_actor_community(community)
+ ---- Set the player grouping
+ db.actor:set_character_community(actor_communitites[community], 0, 0)
+end
+
+-- Smart initialization
+function simulation_board:init_smart(obj)
+ --utils_data.debug_write(strformat("simulation_board:init_smart %s",obj and obj:name()))
+ if self.tmp_assigned_squad[obj.id] ~= nil then
+ for k,v in pairs(self.tmp_assigned_squad[obj.id]) do
+ self:assign_squad_to_smart(v, obj.id)
+ end
+ self.tmp_assigned_squad[obj.id] = nil
+ end
+end
+
+--' Create a new squad
+function simulation_board:create_squad(spawn_smart, sq_id)
+ --utils_data.debug_write(strformat("simulation_board:create_squad spawn_smart=%s sq_id=%s",spawn_smart and spawn_smart:name(),sq_id))
+ local squad_id = tostring(sq_id)
+ -- if not (ini_sys:section_exist(squad_id)) then
+ -- printf("squad section does not exist: %s",squad_id)
+ -- return
+ -- end
+
+ local squad = alife_create(squad_id,spawn_smart.position, spawn_smart.m_level_vertex_id,spawn_smart.m_game_vertex_id)
+ squad:create_npc(spawn_smart)
+ self:assign_squad_to_smart(squad, spawn_smart.id)
+
+ local sim = alife()
+ for k in squad:squad_members() do
+ local se_obj = k.object or k.id and sim:object(k.id)
+ if (se_obj) then
+ SIMBOARD:setup_squad_and_group(se_obj)
+ -- Alundaio
+ SendScriptCallback("squad_on_npc_creation",squad,se_obj,spawn_smart)
+ -- Alundaio
+ end
+ end
+
+ -- SMR
+ smr_debug.get_log().info("simboard", "setting up civil war relations for squad %s (smart: %s)", squad:section_name(), spawn_smart:name())
+ smr_civil_war.setup_civil_war_squad(squad, spawn_smart:name())
+ -- SMR END
+ return squad
+end
+
+function simulation_board:create_squad_at_named_location(loc_name, squad_id) -- tdef
+
+ -- if not (ini_file('misc\\squad_descr.ltx'):section_exist(squad_id)) then
+ if not (ini_sys:section_exist(squad_id)) then
+ callstack()
+ printf("create_squad_at_named_location: squad section does not exist in misc\\squad_descr.ltx: %s",squad_id)
+ return
+ end
+
+ local str = utils_data.read_from_ini(ini_file("named_locations.ltx"),loc_name,'position')
+
+ if not str then
+ callstack()
+ printf('create_squad_at_named_location: named location not defined in named_locations.ltx: %s',loc_name)
+ return
+ end
+
+ -- printf('%s: %s',loc_name, str)
+
+ local function str_explode_num(str,sep,plain)
+ if not (sep ~= "" and string.find(str,sep,1,plain)) then
+ return { str }
+ end
+ local t = {}
+ local size = 0
+ for s in str:gsplit(sep,plain) do
+ size = size + 1
+ t[size] = tonumber(s)
+ if not t[size] then
+ printf("str_explode_num: warning: %s couldn't be parsed as number", s)
+ end
+ end
+ return t
+ end
+ local data = str_explode_num(str,',')
+
+ -- for k,v in pairs(data) do
+ -- printf('data[%s] = %s (%s)',k, v, type(v))
+ -- end
+
+ local pos = vector():set(data[1], data[2], data[3])
+
+ local squad = alife_create(squad_id, pos, data[4], data[5])
+ if squad then
+ -- printf('create_squad_at_named_location: squad created %s',squad.id)
+ end
+ squad:create_npc(nil, pos, data[4], data[5])
+
+ local sim = alife()
+ for k in squad:squad_members() do
+ local se_obj = k.object or k.id and sim:object(k.id)
+ if (se_obj) then
+ SIMBOARD:setup_squad_and_group(se_obj)
+ -- Alundaio
+ SendScriptCallback("squad_on_npc_creation",squad,se_obj)
+ -- Alundaio
+ end
+ end
+ return squad
+end
+
+--' Remove squad
+function simulation_board:remove_squad(squad)
+ --utils_data.debug_write(strformat("simulation_board:remove_squad %s",squad and squad:name()))
+
+ self:assign_squad_to_smart(squad, nil)
+
+ squad:remove_squad()
+end
+--' Assignment squad in smart.
+function simulation_board:assign_squad_to_smart(squad, smart_id)
+ --utils_data.debug_write(strformat("simulation_board:assign_squad_to_smart %s smart_id=%s",squad and squad:name(),smart_id))
+
+ if (smart_id and self.smarts[smart_id] == nil) then
+ if self.tmp_assigned_squad[smart_id] == nil then
+ self.tmp_assigned_squad[smart_id] = {}
+ end
+ local t = self.tmp_assigned_squad[smart_id]
+ t[#t+1] = squad
+ return
+ end
+
+ local old_smart_id = squad.smart_id
+ squad.smart_id = nil
+
+ -- remove squad from old smart if exist
+ if (old_smart_id and self.smarts[old_smart_id] and self.smarts[old_smart_id].squads[squad.id]) then
+ self.smarts[old_smart_id].squads[squad.id] = nil
+ -- get accurate population count excluding squads using target_smart param
+ self.smarts[old_smart_id].population = smart_terrain.smart_terrain_squad_count(SIMBOARD.smarts[old_smart_id].squads)
+ SendScriptCallback("squad_on_leave_smart",squad,self.smarts[old_smart_id].smrt)
+ end
+
+ if smart_id == nil then
+ squad:assign_smart(nil,old_smart_id)
+ return
+ end
+
+ squad:assign_smart(self.smarts[smart_id].smrt,old_smart_id)
+
+ --' ����������� ����� � ����� ������.
+ if not (self.smarts[smart_id].squads[squad.id]) then
+ self.smarts[smart_id].squads[squad.id] = true
+ if not (squad:get_script_target()) then
+ -- don't count squads with target_smart
+ self.smarts[smart_id].population = self.smarts[smart_id].population + 1
+ end
+ end
+
+ SendScriptCallback("squad_on_enter_smart",squad,self.smarts[smart_id].smrt)
+end
+
+local community_groups = {}
+-- Set squad and group according to work
+function simulation_board:setup_squad_and_group(se_obj)
+ --utils_data.debug_write(strformat("simulation_board:setup_squad_and_group %s",obj and obj:name()))
+ local sim = alife()
+ local squad = se_obj.group_id and se_obj.group_id ~= 65535 and sim:object(se_obj.group_id)
+ if not (squad) then
+ change_team_squad_group(se_obj, se_obj.team, se_obj.squad, 0)
+ return
+ end
+
+ local smart = squad.smart_id and sim:object(squad.smart_id)
+ change_team_squad_group(se_obj, se_obj.team, smart and smart.squad_id or se_obj.squad, 1)
+end
+
+-- Filling start location for squads from "simulation.ltx"
+function simulation_board:fill_start_position()
+
+ -- SMR
+ smr_civil_war.setup_factions_relation()
+ -- SMR END
+
+ -- Test map
+ if (axr_main.config:r_value("character_creation","new_game_test",1) == true) then
+ axr_main.config:w_value("character_creation","new_game_test")
+ axr_main.config:save()
+
+ -- Prevent spawn terrains from spawning NPCs
+ if ui_debug_launcher then
+ ui_debug_launcher.toggle_respawn()
+ end
+
+ printf("---------------- Welcome To Test Map ----------------")
+ return
+ end
+
+ SendScriptCallback("fill_start_position")
+
+ if self.start_position_filled == true then
+ return
+ end
+ self.start_position_filled = true
+
+ -- SMR
+ local setting_ini = smr_pop.get_population_preset()
+ local stalker_pop_factor = smr_pop.get_stalker_pop_factor()
+ local monster_pop_factor = smr_pop.get_monster_pop_factor()
+ -- SMR END
+
+ local result, squad_section, count, li, lc
+ setting_ini:section_for_each(function(section)
+ lc = setting_ini:line_count(section)
+ for li=0,lc-1 do
+ local smart = self.smarts_by_names[section]
+ if (smart) then
+ result, squad_section, count = setting_ini:r_line(section,li,"","")
+ count = tonumber(count) or 1
+
+ local common = ini_sys:r_bool_ex(squad_section,"common")
+ local faction = ini_sys:r_string_ex(squad_section,"faction")
+ if common then
+
+ -- Common mutants
+ if is_squad_monster[faction] then
+ count = count*monster_pop_factor
+ if (count == 0.5) then
+ count = math.random(0,1)
+ else
+ count = round_idp(count)
+ end
+
+ -- Common stalkers
+ else
+ count = count*stalker_pop_factor
+ if (count == 0.5) then -- just randomly 0 or 1 instead of always rounding to 1
+ count = math.random(0,1)
+ else
+ count = round_idp(count)
+ end
+ end
+ else
+ end
+
+ for i=1,count do
+ -- SMR
+ smr_pop.smr_handle_spawn(squad_section, smart)
+ -- SMR END
+ end
+ else
+ printf("sim_board:fill_start_position incorrect smart by name %s",section)
+ end
+ end
+ end
+ )
+end
+
+-- Return smart by its name.
+function simulation_board:get_smart_by_name(name)
+ return self.smarts_by_names[name]
+end
+-- Returns the number of units in smart.
+function simulation_board:get_smart_population(smart)
+ return self.smarts[smart.id].population
+end
+
+-- Getting the playing field.
+function get_sim_board()
+ if _G.SIMBOARD == nil then
+ _G.SIMBOARD = simulation_board()
+ end
+ return _G.SIMBOARD
+end
+
+local priority_tasks = {}
+function simulation_board:get_squad_target(squad)
+ local size_t = 0
+
+ local object_registry = simulation_objects.object_registry
+ local is_available = simulation_objects.available_by_id
+ for index=1,simulation_objects.object_registry_size do
+ local se_target = object_registry[index]
+ if (not se_target.locked and se_target.id ~= squad.id and is_available[se_target.id]) then
+ local curr_prior = se_target:evaluate_prior(squad)
+ if (curr_prior > 0 and se_target:target_precondition(squad)) then
+ -- Prioritize 5 potential targets
+ if (size_t < 5) then
+ size_t = size_t + 1
+ priority_tasks[size_t] = {se_target,curr_prior}
+ elseif (curr_prior > priority_tasks[size_t][2]) then
+ for i=1,size_t do
+ if (curr_prior > priority_tasks[i][2]) then
+ priority_tasks[i][2] = curr_prior
+ priority_tasks[i][1] = se_target
+ break
+ end
+ end
+ end
+ end
+ end
+ end
+
+ -- Tronex, get target with highest prior
+ local highest_prior = 0
+ local best_target
+ for i=1,size_t do
+ if highest_prior < priority_tasks[i][2] then
+ highest_prior = priority_tasks[i][2]
+ best_target = priority_tasks[i][1]
+ end
+ end
+
+ if (size_t > 0) then
+ --local target = priority_tasks[math.random(size_t)][1]
+ local target = (math.random(1,100) <= 50) and priority_tasks[math.random(size_t)][1] or best_target -- Tronex
+ --printf("squad=%s size=%s target=%s",squad:name(),size_t,target:name())
+ iempty_table(priority_tasks) -- It is better to reuse table to avoid GC
+ return target
+ end
+end
+
+-- Nilling the list on the creation of the game.
+function clear()
+ _G.SIMBOARD = nil
+end
+
diff --git a/mods/Zone Customization Project/gamedata/scripts/sim_squad_scripted.script b/mods/Zone Customization Project/gamedata/scripts/sim_squad_scripted.script
new file mode 100644
index 00000000..61428f33
--- /dev/null
+++ b/mods/Zone Customization Project/gamedata/scripts/sim_squad_scripted.script
@@ -0,0 +1,1453 @@
+--'******************************************************
+-- Edited by Alundaio
+--
+-- edited 1/14/2016: Added ability to create squad npcs without specifying a smart
+--'******************************************************
+
+-- Current Action: 0 - Reach Target | 1 - Stay Point
+
+local STAY_POINT_IDLE_MIN = 2*60*60
+local STAY_POINT_IDLE_MAX = 8*60*60
+
+dbg_map_hud = false
+local excl_dist = ui_options.get("alife/general/excl_dist")
+
+-- setup location types
+local location_types = {}
+do -- to localize below
+ local locations_ini = ini_file("misc\\smart_terrain_masks.ltx")
+
+ local function itr(section)
+ local a,key,val = locations_ini:r_line_ex(section,0,"","")
+ location_types[key] = key
+ return false
+ end
+
+ locations_ini:section_for_each(itr)
+end
+
+
+--------------------------------------------------------------
+-- INITIALIZATION
+--------------------------------------------------------------
+class "sim_squad_scripted" (cse_alife_online_offline_group)
+function sim_squad_scripted:__init(section) super (section)
+ self.smart_id = nil
+ self.current_spot_id = nil
+ self.current_action = nil
+ self.current_target_id = nil
+ self.assigned_target_id = nil
+ self.rush = nil
+ self.item_on_all = nil
+ self:init_squad()
+ --if (USE_MARSHAL) then
+ -- RegisterScriptCallback("save_state",self.save_state,self)
+ --end
+ self.first_update = false
+end
+
+function sim_squad_scripted:init_squad()
+ --utils_data.debug_write("sim_squad_scripted:init_squad")
+ local settings_id = self:section_name()
+
+ self.player_id = ini_sys:r_string_ex(settings_id,"faction") or "stalker"
+ self.common = ini_sys:r_bool_ex(settings_id,"common")
+ self.action_condlist = ini_sys:r_string_to_condlist(settings_id,"target_smart")
+ self.death_condlist = ini_sys:r_string_to_condlist(settings_id,"on_death")
+ self.invul_condlist = ini_sys:r_string_to_condlist(settings_id,"invulnerability")
+
+ self.relationship_condlist = ini_sys:r_string_to_condlist(settings_id,"relationship")
+ if (self.relationship_condlist) then
+ local new_relation = xr_logic.pick_section_from_condlist(db.actor, self, self.relationship_condlist)
+ if (new_relation) and (new_relation == "enemy" or new_relation == "friend" or new_relation == "neutral") then
+ self.relationship = new_relation
+ end
+ end
+
+ local s = ini_sys:r_string_ex(settings_id, "target_random_smart")
+ if (s) then
+ self.random_targets = str_explode(s,",")
+ end
+
+ s = ini_sys:r_string_ex(settings_id, "item_on_all")
+ if (s) then
+ self.item_on_all = str_explode(s,",")
+ end
+
+ self.rush = ini_sys:r_bool_ex(settings_id, "rush")
+
+ self.idle_time = ini_sys:r_float_ex(settings_id,"idle_time") or math.random(STAY_POINT_IDLE_MIN,STAY_POINT_IDLE_MAX)
+
+ self.sympathy = ini_sys:r_float_ex(settings_id,"sympathy")
+
+ self.always_arrived = ini_sys:r_bool_ex(settings_id,"always_arrived",false)
+ self:set_location_types_section("squad_terrain")
+ self:set_location_types_section("stalker_terrain")
+ self:set_squad_sympathy()
+end
+
+function sim_squad_scripted:init_squad_on_load()
+ --utils_data.debug_write(self:name().."init_squad_on_load start")
+ self:set_squad_sympathy()
+ sim_board.get_sim_board():assign_squad_to_smart(self, self.smart_id)
+ self.current_action = 0
+ self.need_to_reset_location_masks = true
+ --utils_data.debug_write(self:name().."init_squad_on_load end")
+end
+
+
+--------------------------------------------------------------
+-- SCRIPT_TARGET_SELECTION
+--------------------------------------------------------------
+function sim_squad_scripted:get_script_target()
+ --utils_data.debug_write("sim_squad_scripted:get_script_target")
+ local new_target
+ if (self.scripted_target) then
+ new_target = self.scripted_target
+ elseif (axr_task_manager.hostages_by_id[self:commander_id()]) then
+ return axr_task_manager.hostages_by_id[self:commander_id()]
+ elseif (self.random_targets) then
+ if (self.current_action == 0 and self.assigned_target_id == nil) then
+ new_target = self.random_targets[math.random(#self.random_targets)]
+ else
+ return self.assigned_target_id
+ end
+ elseif (self.action_condlist) then
+ new_target = xr_logic.pick_section_from_condlist(db.actor, self, self.action_condlist)
+ end
+
+ -- prevent companions from moving to actor if they cannot teleport and actor is not on same level
+ if (axr_companions.companion_squads[self.id]) then
+ local se_obj = alife_object(self:commander_id())
+ if (self.online ~= true) and (se_obj and se_load_var(se_obj.id,se_obj:name(),"companion_cannot_teleport")) then
+ return self.id
+ end
+ return 0
+ end
+
+ if (new_target == "actor") then
+ return 0
+ end
+
+ local smart = new_target and SIMBOARD.smarts_by_names[new_target]
+ if (smart) then
+ return smart.id
+ end
+
+ local new_id = tonumber(new_target)
+ local se_target = new_id and alife_object(new_id)
+ if se_target and (obj:clsid() == clsid.online_offline_group_s or obj:clsid() == clsid.smart_terrain) then
+ return new_id
+ end
+end
+
+function sim_squad_scripted:update()
+ --utils_data.debug_write("sim_squad_scripted:update START")
+ cse_alife_online_offline_group.update(self)
+
+ if not (self.first_update) then
+ self.first_update = true
+
+ --[[
+ local skip = false
+ local sim = alife()
+ local se_actor = sim:actor()
+ local se_obj = self:commander_id() and alife_object(self:commander_id())
+ if (se_obj) then
+ if (se_load_var(se_obj.id,se_obj:name(),"companion")) then
+ skip = true
+ elseif (se_load_var(se_obj.id,se_obj:name(),"do_not_deactivate")) then
+ skip = true
+ end
+ end
+ --]]
+
+ if self.rush then
+ self.rush_to_target = true
+ end
+
+ if self.item_on_all then
+ local sim = alife()
+ for k in self:squad_members() do
+ for kk,vv in pairs(self.item_on_all) do
+ local itm = alife_create_item(vv, alife_object(k.id))
+ -- if itm then printf('spawned %s on %s',vv,k.id) end
+ end
+ end
+ end
+
+ --[[ down below here is needed only if the feature to disable squads on non linked levels is true, which breaks lots of stuff
+ if (skip ~= true) then
+ local gg = game_graph()
+
+ --printf("m_game_vertex_id=%s actor.m_game_vertex_id=%s",self.m_game_vertex_id,se_actor.m_game_vertex_id)
+ if (se_actor and gg:valid_vertex_id(self.m_game_vertex_id) and gg:valid_vertex_id(se_actor.m_game_vertex_id)) then
+ local lvl = sim:level_name(gg:vertex(self.m_game_vertex_id):level_id())
+ local actor_level = sim:level_name(gg:vertex(se_actor.m_game_vertex_id):level_id())
+
+ -- Disable any squad that is not on actor's level and not linked to actor's level through ai_tweaks\simulation_objects.ltx
+ if (lvl ~= actor_level) and (self:commander_id() and not sim:has_info(self:commander_id(),"npcx_is_companion")) then
+ if not (string.find(simulation_objects.config:r_value(actor_level,"target_maps",0,""),lvl)) then
+ if (DEACTIVATE_SIM_ON_NON_LINKED_LEVELS) then
+ SIMBOARD.squads[self.id] = nil
+ if (self.smart_id) then
+ --SIMBOARD.tmp_entered_squad[self.smart_id] = nil
+ SIMBOARD.tmp_assigned_squad[self.smart_id] = nil
+ end
+ --simulation_objects.unregister(self)
+ self.disabled = true
+ --printf("%s disabled",self:name())
+ --utils_data.debug_write("sim_squad_scripted:update END 3")
+ return
+ end
+ end
+ end
+ end
+ end
+ --]]
+
+ SendScriptCallback("squad_on_first_update",self)
+ end
+
+ self:refresh()
+
+ if (self.disabled) then
+ --utils_data.debug_write("sim_squad_scripted:update END 4")
+ return
+ end
+
+ if self.need_to_reset_location_masks then
+ self:set_location_types()
+ self.need_to_reset_location_masks = false
+ end
+
+ self:check_online_status()
+ SendScriptCallback("squad_on_update",self)
+
+ local sim = alife()
+ local se_actor = sim:actor()
+ self.dist_to_actor = self.position:distance_to(se_actor.position)
+
+ self:check_invulnerability()
+
+ local script_target_id = self:get_script_target()
+ if (script_target_id) then
+ self:specific_update(script_target_id)
+ else
+ self:generic_update()
+ end
+ local cur_lvl = sim:level_name(game_graph():vertex(self.m_game_vertex_id):level_id())
+ if not (self.last_gvid == self.m_game_vertex_id) then
+ SendScriptCallback("squad_on_after_game_vertex_change",self, self.last_gvid, self.m_game_vertex_id, not (cur_lvl == self.level_name))
+ self.last_gvid = self.m_game_vertex_id
+ end
+ if not (cur_lvl == self.level_name) then
+ SendScriptCallback("squad_on_after_level_change",self, self.level_name, cur_lvl)
+ self.level_name = cur_lvl
+ end
+ --utils_data.debug_write("sim_squad_scripted:update END 2")
+end
+
+
+--------------------------------------------------------------
+-- SIMULATION_TARGET_SELECTION
+--------------------------------------------------------------
+local function can_help_actor(squad)
+ if is_empty(xr_combat_ignore.fighting_with_actor_npcs) then
+ return false
+ end
+
+ if game_graph():vertex(squad.m_game_vertex_id):level_id() ~= get_player_level_id() then
+ return false
+ end
+
+ return false
+end
+
+local function get_help_target_id(squad)
+ if (smr_amain_mcm.get_config("smr_enabled") and smr_zombies_mcm.get_config("seek_enabled") and squad.online and squad.dist_to_actor <= smr_zombies_mcm.get_config("seek_distance")) then
+ if (squad.player_id == "zombied" or is_squad_monster[squad.player_id]) then
+ return 0
+ end
+ end
+ return squad.task_target_id
+end
+
+function sim_squad_scripted:specific_update(script_target_id) -- This update is called for all squads with a scripted smart_terrain target
+ --utils_data.debug_write(strformat("%s:specific_update",self:name()))
+ local se_target = alife_object(script_target_id)
+ if not (se_target) then
+ return
+ end
+
+ self.assigned_target_id = script_target_id
+ if (self.assigned_target_id == self.id) then
+ return
+ end
+
+ if (self.smart_id ~= self.assigned_target_id and se_target:clsid() == clsid.smart_terrain) then
+ self:assign_smart(se_target,self.smart_id)
+ end
+
+ if (self.current_action) then
+
+ -- in such case assigned is changed (such as get_help_target_id) but current action is 1 (reached)
+ if (self.current_action == 1 and self.assigned_target_id ~= self.current_target_id) then
+ self.current_action = 0
+ end
+
+ -- If current action is not finished, then return
+ if (self.current_action == 0) then
+ -- if not (self.online) then
+ -- TeleportSquad(self,se_target.position,se_target.m_level_vertex_id,se_target.m_game_vertex_id)
+ -- end
+ if (se_target:am_i_reached(self)) then
+ se_target:on_after_reach(self)
+ self.current_target_id = self.assigned_target_id
+ self.current_action = 1
+
+ self.stay_time = game.get_game_time()
+ end
+ return
+ elseif (self.current_action == 1 and self.current_target_id == self.assigned_target_id) then
+ if (self.stay_time == nil or game.get_game_time():diffSec(self.stay_time) < self.idle_time) then
+ return
+ end
+ end
+ end
+
+ se_target:on_reach_target(self)
+
+ self.assigned_target_id = nil
+ self.current_target_id = nil
+ self.current_action = 0
+
+ for k in self:squad_members() do
+ local se_obj = alife_object(k.id)
+ if (se_obj) then
+ SIMBOARD:setup_squad_and_group(se_obj)
+ end
+ end
+end
+
+function sim_squad_scripted:generic_update() -- This update is called for all squads with no scripted assigned target
+ --utils_data.debug_write(strformat("%s:generic_update",self:name()))
+
+ if (self.__lock) then
+ return -- so that squad doesn't continously try to find target which lowers FPS
+ end
+
+ local forced_id = get_help_target_id(self)
+ self.assigned_target_id = forced_id or self.assigned_target_id or self.current_target_id
+
+ if (self.current_action) then
+
+ -- in such case assigned is changed (such as get_help_target_id) but current action is 1 (reached)
+ if (self.current_action == 1 and self.assigned_target_id ~= self.current_target_id) then
+ self.current_action = 0
+ end
+
+ local se_target = self.assigned_target_id == self.id and self or simulation_objects.get_server_entity(self.assigned_target_id)
+ -- Evaluate current assigned target; make sure it is still valid
+ if (se_target and se_target:target_precondition(self,true)) then
+ -- If current action is not finished, then return
+
+ if (self.smart_id ~= self.assigned_target_id and se_target:clsid() == clsid.smart_terrain) then
+ self:assign_smart(se_target,self.smart_id)
+ end
+
+ if (self.current_action == 0) then
+ if (se_target:am_i_reached(self)) then
+ se_target:on_after_reach(self)
+ self.current_target_id = self.assigned_target_id
+ self.current_action = 1
+ self.stay_time = game.get_game_time()
+ end
+ return
+ elseif (self.current_action == 1 and self.current_target_id == self.assigned_target_id) then
+ if (forced_id) then
+ return -- infinite stay time
+ end
+ if (se_target.locked == true) or (self.stay_time and game.get_game_time():diffSec(self.stay_time) < self.idle_time) then
+ return
+ end
+ end
+ end
+ end
+
+ -- Find a new target
+ local target = SIMBOARD:get_squad_target(self) or SIMBOARD:get_squad_target(self,false,true)
+ if not (target) then
+ --printf("squad %s has no target",self:name())
+ self:on_reach_target(self)
+
+ -- we have to clear AFTER on_reach_target, not BEFORE so we can get location mask of old smart
+ self.assigned_target_id = nil
+ self.current_target_id = nil
+ self.task_target_id = nil
+ self.current_action = nil
+ self.__lock = db.actor and db.actor.afterFirstUpdate -- keep trying until first update
+ return
+ end
+
+ target:on_reach_target(self)
+
+ self.assigned_target_id = target.id
+ self.current_target_id = nil
+ self.task_target_id = nil
+ self.current_action = 0
+
+ local sim = alife()
+ for k in self:squad_members() do
+ local se_obj = alife_object(k.id)
+ if (se_obj) then
+ SIMBOARD:setup_squad_and_group(se_obj)
+ end
+ end
+end
+
+
+--------------------------------------------------------------
+-- MEMBERS_CONTROL
+--------------------------------------------------------------
+function sim_squad_scripted:remove_squad()
+ --utils_data.debug_write(strformat("START sim_squad_scripted:remove_squad %s",self:name()))
+
+ self.current_action = nil
+ SIMBOARD:assign_squad_to_smart(self, nil)
+ SIMBOARD.squads[self.id] = nil
+
+ local squad_npcs = {}
+ for k in self:squad_members() do
+ squad_npcs[k.id] = true
+ end
+
+ local sim = alife()
+ for id,v in pairs(squad_npcs) do
+ local se_obj = sim:object(id)
+ if (se_obj) then
+ local smart_id = se_obj.m_smart_terrain_id --se_obj:smart_terrain_id()
+ if (smart_id and smart_id ~= 65535) then
+ local smart = alife_object(smart_id)
+ if smart ~= nil then
+ smart:unregister_npc(self)
+ end
+ end
+ self:unregister_member(id)
+ safe_release_manager.release(se_obj)
+ end
+ end
+ self:hide()
+ safe_release_manager.release(self)
+ --utils_data.debug_write(strformat("END sim_squad_scripted:remove_squad %s",self:name()))
+end
+
+function sim_squad_scripted:remove_npc(npc_id, force)
+ --utils_data.debug_write(strformat("%s:remove_npc %s",self:name(),npc_id))
+
+ local se_obj = alife_object(npc_id)
+ if (se_obj) then
+ local smart_id = se_obj:smart_terrain_id()
+ if smart_id ~= 65535 then
+ local smart = alife_object(smart_id)
+ if smart ~= nil then
+ smart:unregister_npc(self)
+ end
+ end
+
+ self:unregister_member(npc_id)
+ if force or (not se_obj.online) then
+ safe_release_manager.release(se_obj)
+ end
+ end
+
+ if self:npc_count() > 0 then
+ self:refresh()
+ else
+ self.current_action = nil
+ if (self.death_condlist) then
+ xr_logic.pick_section_from_condlist(db.actor, self, self.death_condlist)
+ end
+
+ SIMBOARD:assign_squad_to_smart(self, nil)
+ SIMBOARD.squads[self.id] = nil
+
+ self:hide()
+ safe_release_manager.release(self)
+ end
+end
+
+function sim_squad_scripted:on_npc_death(se_npc,se_killer)
+ --utils_data.debug_write(strformat("%s:on_npc_death %s",self:name(),se_npc and se_npc:name()))
+ --printf("Squad %s. Killed member %s", tostring(self.id), se_npc.id)
+ --self.sound_manager:unregister_npc(npc.id)
+
+ local npc = db.storage[se_npc.id] and db.storage[se_npc.id].object
+ if (npc) then
+ local npc_binder = npc:binded_object()
+ if (npc_binder) then
+ npc_binder.squad = nil
+ end
+ end
+
+ SendScriptCallback("squad_on_npc_death",self,se_npc,se_killer)
+
+ self:remove_npc(se_npc.id)
+end
+function sim_squad_scripted:assign_squad_member_to_smart(member_id, smart, old_smart_id)
+ local sim = alife()
+ local obj = sim:object(member_id)
+ if obj ~= nil then
+ --printf(" npc [%s] smart [%s]", obj:name(), tostring(obj.m_smart_terrain_id))
+ --utils_data.debug_write(strformat("sim_squad_scripted:assign_squad_member_to_smart npc=%s smart=%s",obj and obj:name(),smart and smart:name()))
+ if obj.m_smart_terrain_id == self.smart_id then
+ return
+ end
+
+ if obj.m_smart_terrain_id ~= 65535 and old_smart_id ~= nil and (obj.m_smart_terrain_id == old_smart_id) and SIMBOARD.smarts[old_smart_id] ~= nil then
+ SIMBOARD.smarts[old_smart_id].smrt:unregister_npc(obj)
+ end
+
+ if smart ~= nil then
+ smart:register_npc(obj)
+ end
+ end
+end
+
+function sim_squad_scripted:assign_smart(smart,old_smart_id)
+ --utils_data.debug_write(strformat("%s:assign_smart %s",self:name(),smart and smart:name()))
+ local old_smart = old_smart_id and old_smart_id ~= 65535 and alife_object(old_smart_id)
+ if (smart == nil and old_smart == nil) then
+ return
+ end
+
+ if (smart) then
+ self.smart_id = smart.id
+ end
+
+ for k in self:squad_members() do
+ local se_obj = alife_object(k.id)
+ if (se_obj) then
+ if (old_smart) then
+ old_smart:unregister_npc(se_obj)
+ end
+
+ if (smart) then
+ smart:register_npc(se_obj)
+ end
+ end
+ end
+end
+
+function sim_squad_scripted:check_invulnerability()
+ if self.online ~= true then
+ return
+ end
+ local invulnerability = self.invul_condlist and xr_logic.pick_section_from_condlist(db.actor, self, self.invul_condlist) == "true"
+ if (invulnerability) then
+ for k in self:squad_members() do
+ local npc_st = db.storage[k.id]
+ local npc = npc_st and npc_st.object
+ if (npc) then
+ npc:invulnerable(invulnerability)
+ end
+ end
+ end
+end
+
+function sim_squad_scripted:set_location_types_section (section)
+ local location = location_types[section]
+ if (location) then
+ self:add_location_type(location)
+ end
+end
+
+function sim_squad_scripted:set_location_types(new_smart_name)
+ self:clear_location_types()
+
+ self:set_location_types_section("stalker_terrain")
+ self:set_location_types_section("squad_terrain")
+
+ local old_target = self.assigned_target_id and db.smart_terrain_by_id[self.assigned_target_id]
+ if (old_target) then
+ self:set_location_types_section(old_target:name())
+ end
+
+ if (new_smart_name) then
+ self:set_location_types_section(new_smart_name)
+ else
+ for id,se_obj in pairs(db.smart_terrain_by_id) do
+ local props_base = se_obj.props and se_obj.props["base"]
+ if (props_base and tonumber(props_base) ~= 0) then
+ self:set_location_types_section(se_obj:name())
+ end
+ end
+ end
+end
+
+function sim_squad_scripted:add_new_member_forced(section,pos,lvid,gvid)
+ local se_obj = alife_create(section,pos,lvid,gvid)
+ if (se_obj) then
+ self:register_member(se_obj.id)
+ local smart = self.smart_id and db.smart_terrain_by_id[self.smart_id]
+ if (smart) then
+ smart:register_npc(se_obj)
+ SIMBOARD:setup_squad_and_group(se_obj)
+ end
+ end
+end
+
+function sim_squad_scripted:add_squad_member(spawn_section, spawn_position, lv_id, gv_id)
+ --utils_data.debug_write("sim_squad_scripted:add_squad_member")
+
+ if not (ini_sys:section_exist(spawn_section)) then
+ printe("!ERROR: npc section %s does not exist!",spawn_section)
+ return
+ end
+
+ local custom_data = ini_sys:r_string_ex(spawn_section,"custom_data") or "default_custom_data.ltx"
+ if custom_data ~= "default_custom_data.ltx" then
+ printf("INCORRECT npc_spawn_section USED [%s]. You cannot use npc with custom_data in squads", spawn_section)
+ end
+
+ local sim = alife()
+ local obj = alife_create(spawn_section,spawn_position,lv_id,gv_id)
+
+ self:register_member(obj.id)
+ --self.sound_manager:register_npc(obj.id)
+
+ local actor = sim:actor()
+ if (simulation_objects.is_on_the_same_level(obj, actor) and spawn_position:distance_to_sqr(actor.position) <= sim:switch_distance()^2) then
+ db.spawned_vertex_by_id[obj.id] = lv_id
+ end
+ -- Alundaio
+ SendScriptCallback("squad_on_add_npc",self,obj,spawn_section,spawn_position,lv_id,gv_id)
+ -- End Alundaio
+ return obj.id
+end
+
+function sim_squad_scripted:create_npc(spawn_smart,pos,lvid,gvid)
+ --utils_data.debug_write("sim_squad_scripted:create_npc")
+ local settings_id = self:section_name()
+ local spawn_sections = parse_names(ini_sys:r_string_ex(settings_id, "npc") or "")
+ --smr_debug.get_log().info("simboard", "FOO: create_npc for %s", self:section_name())
+
+ local base_spawn_position, base_lvi, base_gvi, spawn_vid
+ if (spawn_smart) then
+
+ -- Try to look/parse spawn_vid in either squad logic or smart logic
+ local spawn_vid = ini_sys:r_string_to_condlist(settings_id,"spawn_vid") or spawn_smart.ini:r_string_to_condlist(settings_id,"spawn_vid")
+ if (spawn_vid) then
+ local str = xr_logic.pick_section_from_condlist(db.actor,self,spawn_vid)
+ if (str and str ~= "" and str ~= "nil") then
+ local vid = str_explode(str,":")
+ base_lvi = tonumber(vid[1])
+ base_spawn_position = level.vertex_position(base_lvi)
+ base_gvi = tonumber(vid[2])
+ end
+ end
+
+ -- Try to look/parse spawn_point in either squad logic or smart logic
+ if not (base_spawn_position and base_lvi and base_gvi) then
+ local spawn_point = ini_sys:r_string_to_condlist(settings_id,"spawn_point") or spawn_smart.ini:r_string_to_condlist(settings_id,"spawn_point")
+ if (spawn_point) then
+ local p_path = xr_logic.pick_section_from_condlist(db.actor, self, spawn_point)
+ if (p_path and p_path ~= "" and p_path ~= "nil") then
+ local pat = patrol(p_path)
+ if (pat) then
+ base_spawn_position = pat:point(0)
+ base_lvi = pat:level_vertex_id(0)
+ base_gvi = pat:game_vertex_id(0)
+ end
+ end
+ end
+ end
+
+ -- Try spawn_smart.spawn_point
+ if not (base_spawn_position and base_lvi and base_gvi) then
+ if (spawn_smart.spawn_point) then
+ local pat = patrol(spawn_smart.spawn_point)
+ if (pat) then
+ base_spawn_position = pat:point(0)
+ base_lvi = pat:level_vertex_id(0)
+ base_gvi = pat:game_vertex_id(0)
+ end
+ end
+ end
+
+ -- if all else fail, spawn on smart
+ if not (base_spawn_position and base_lvi and base_gvi) then
+ base_spawn_position = spawn_smart.position
+ base_lvi = spawn_smart.m_level_vertex_id
+ base_gvi = spawn_smart.m_game_vertex_id
+ end
+
+ self.smart_id = spawn_smart.id
+ else
+ printf('spawn smart: %s', spawn_smart)
+ base_spawn_position = pos or self.position
+ base_lvi = lvid or self.m_level_vertex_id
+ base_gvi = gvid or self.m_game_vertex_id
+ end
+
+ local npcs_list = {}
+ for ind=1,#spawn_sections do
+ local id = nil
+ if is_squad_monster[ini_sys:r_string_ex(settings_id, "faction")] and not smr_squad.is_mutant_type_enabled(spawn_sections[ind]) then
+ smr_debug.get_log().info("population/monsters", "not spawning disabled mutant %s in squad %s", spawn_sections[ind], self:section_name())
+ else
+ id = self:add_squad_member(smr_squad.replace_mutant_variant(spawn_sections[ind]), base_spawn_position, base_lvi, base_gvi,ind)
+ end
+ if (id) then
+ npcs_list[#npcs_list+1] = id
+ end
+ end
+
+ local random_spawn = ini_sys:r_string_ex(settings_id,"npc_random")
+ if random_spawn ~= nil then
+ random_spawn = parse_names(random_spawn)
+
+ local count = ini_sys:r_string_ex(settings_id,"npc_in_squad") or "1,2"
+ count = str_explode(count,",")
+ count[1] = count[1] and tonumber(count[1])
+ count[2] = count[2] and tonumber(count[2]) or count[1]
+
+ --[[if _G.WARFARE then
+ local faction = ini_sys:r_string_ex(settings_id, "faction")
+ if (warfare_options.options.factions[faction]) then
+ if (warfare_options.options.factions[faction].random_squad_count) then
+ printf("!!! GETTING RANDOM COUNT FOR "..faction.." | " .. tonumber(warfare_options.options.factions[faction].min_random_squad_count) .. " - " .. tonumber(warfare_options.options.factions[faction].max_random_squad_count) .. " !!!!")
+ count[1] = tonumber(warfare_options.options.factions[faction].min_random_squad_count)
+ count[2] = tonumber(warfare_options.options.factions[faction].max_random_squad_count)
+ end
+ end
+ end]]
+
+ -- check for random squad members for each faction here.
+
+ local random_count = count[1] and count[2] and math.random(count[1],count[2]) or math.random(1,2)
+ random_count = random_count - self:npc_count()
+ random_count = smr_squad.adjust_random_count(self, random_count)
+
+ local random_id
+ for i = 1,random_count do
+ local id = nil
+ random_id = math.random(1, #random_spawn)
+ if is_squad_monster[ini_sys:r_string_ex(settings_id, "faction")] and not smr_squad.is_mutant_type_enabled(random_spawn[random_id]) then
+ smr_debug.get_log().info("population/monsters", "not spawning disabled mutant %s in squad %s", random_spawn[random_id], self:section_name())
+ else
+ id = self:add_squad_member(smr_squad.replace_mutant_variant(random_spawn[random_id]), base_spawn_position, base_lvi, base_gvi)
+ end
+ if (id) then
+ npcs_list[#npcs_list+1] = id
+ end
+ end
+ elseif #spawn_sections == 0 then
+ printf("You are trying to spawn an empty squad [%s]!!!", settings_id)
+ end
+
+ if not (spawn_smart) then
+ local smart = self.smart_id and db.smart_terrain_by_id[self.smart_id]
+ if (smart) then
+ local id
+ for i=1, #npcs_list do
+ id = npcs_list[i]
+ local se_obj = id and alife_object(id)
+ if (se_obj) then
+ smart:register_npc(se_obj)
+ SIMBOARD:setup_squad_and_group(se_obj)
+ end
+ end
+ end
+ end
+
+ self:set_squad_relation()
+ self:refresh()
+end
+
+function sim_squad_scripted:set_squad_sympathy(sympathy)
+ --utils_data.debug_write("sim_squad_scripted:set_squad_sympathy")
+ local symp = sympathy or self.sympathy
+ if(symp~=nil) then
+ local npc
+ for k in self:squad_members() do
+ npc = db.storage[k.id] and db.storage[k.id].object
+ if(npc) then
+ game_relations.set_npc_sympathy(npc, symp)
+ else
+ if(db.goodwill.sympathy==nil) then
+ db.goodwill.sympathy = {}
+ end
+ db.goodwill.sympathy[k.id] = symp
+ end
+ end
+ end
+end
+
+function sim_squad_scripted:set_squad_relation(relation)
+ --utils_data.debug_write("sim_squad_scripted:set_squad_relation")
+ if (is_squad_monster[self.player_id]) then
+ return
+ end
+ local rel = relation or self.relationship
+ if (rel and (rel == "enemy" or rel == "friend" or rel == "neutral")) then
+ local sim = alife()
+ for k in self:squad_members() do
+ local npc = db.storage[k.id] and db.storage[k.id].object
+ if (npc) then
+ game_relations.set_npcs_relation(npc, db.actor, rel)
+ elseif (k.object) then
+ local goodwill = rel == "enemy" and -1000 or rel == "friend" and 1000 or 0
+ k.object:force_set_goodwill(goodwill, 0)
+ end
+ end
+ end
+end
+
+local function reset_animation(npc)
+ --utils_data.debug_write("sim_squad_scripted:reset_animation")
+ local state_mgr = db.storage[npc:id()].state_mgr
+ if state_mgr == nil then
+ return
+ end
+ local planner = npc:motivation_action_manager()
+ --if not planner or not planner:initialized() then return end
+
+
+ state_mgr.animation:set_state(nil, true)
+ state_mgr.animation:set_control()
+ state_mgr.animstate:set_state(nil, true)
+ state_mgr.animstate:set_control()
+
+ state_mgr:set_state("idle", nil, nil, nil, {fast_set = true})
+
+ state_mgr:update()
+ state_mgr:update()
+ state_mgr:update()
+ state_mgr:update()
+ state_mgr:update()
+ state_mgr:update()
+ state_mgr:update()
+
+ npc:set_body_state(move.standing)
+ npc:set_mental_state(anim.free)
+end
+
+function sim_squad_scripted:set_squad_position(position)
+ --utils_data.debug_write("sim_squad_scripted:set_squad_position")
+ if self.online == false then
+ self:force_change_position(position)
+ end
+
+ local cl_object
+ for k in self:squad_members() do
+ cl_object = db.storage[k.id] and db.storage[k.id].object
+ if not (db.offline_objects[k.id]) then
+ db.offline_objects[k.id] = {}
+ end
+ db.offline_objects[k.id].level_vertex_id = level.vertex_id(position)
+ if cl_object then
+ reset_animation(cl_object)
+ cl_object:set_npc_position(position)
+ else
+ k.object.position = position
+ end
+ end
+end
+
+function sim_squad_scripted:has_detector()
+ local sim = alife()
+ for k in self:squad_members() do
+ local se_obj = sim:object(k.id)
+ if se_obj and se_obj:has_detector() then
+ return true
+ end
+ end
+ return false
+end
+
+function sim_squad_scripted:get_squad_community()
+ local squad_community = squad_community_by_behaviour[self.player_id]
+ if squad_community == nil then
+ printf("squad community is 'nil' for player_id [%s]", self.player_id)
+ end
+ return squad_community
+end
+
+function sim_squad_scripted:has_items_to_sell()
+ if not (self.online) then
+ return false
+ end
+ local sim = alife()
+ local st
+ for k in self:squad_members() do
+ st = db.storage[k.id]
+ if (st and st.has_items_to_sell) then
+ return true
+ end
+ end
+ return false
+end
+
+function sim_squad_scripted:has_tech_items()
+ if not (self.online) then
+ return false
+ end
+ local sim = alife()
+ local st
+ for k in self:squad_members() do
+ st = db.storage[k.id]
+ if (st and st.has_tech_items) then
+ return true
+ end
+ end
+ return false
+end
+
+
+--------------------------------------------------------------
+-- SAVE\LOAD
+--------------------------------------------------------------
+--[[
+function sim_squad_scripted:save_state(m_data)
+ --utils_data.debug_write(strformat("%s:%s sim_squad_scripted:save_state BEFORE",self:name(),self.id))
+ m_data.sim_squad_scripted[self.id] = {}
+ m_data.sim_squad_scripted[self.id].name = self:name() -- debugging only
+ m_data.sim_squad_scripted[self.id].current_target_id = self.current_target_id
+ m_data.sim_squad_scripted[self.id].respawn_point_id = self.respawn_point_id
+ m_data.sim_squad_scripted[self.id].respawn_point_prop_section = self.respawn_point_prop_section
+ m_data.sim_squad_scripted[self.id].smart_id = self.smart_id
+ --utils_data.debug_write(strformat("%s:%s sim_squad_scripted:save_state AFTER",self:name(),self.id))
+end
+
+function sim_squad_scripted:load_state(m_data)
+ if not (m_data.sim_squad_scripted and m_data.sim_squad_scripted[self.id]) then
+ return
+ end
+ --utils_data.debug_write("sim_squad_scripted:load_state BEFORE")
+ self.current_target_id = m_data.sim_squad_scripted[self.id].current_target_id
+ self.respawn_point_id = m_data.sim_squad_scripted[self.id].respawn_point_id
+ self.respawn_point_prop_section = m_data.sim_squad_scripted[self.id].respawn_point_prop_section
+ self.smart_id = m_data.sim_squad_scripted[self.id].smart_id
+ m_data.sim_squad_scripted[self.id] = nil
+ --utils_data.debug_write("sim_squad_scripted:load_state AFTER")
+end
+--]]
+
+function sim_squad_scripted:STATE_Write(packet)
+ --utils_data.debug_write("sim_squad_scripted:STATE_Write")
+ cse_alife_online_offline_group.STATE_Write (self, packet)
+
+ --if (USE_MARSHAL) then
+ --return
+ --end
+
+ set_save_marker(packet, "save", false, "sim_squad_scripted")
+
+ packet:w_stringZ(tostring(self.current_target_id))
+ packet:w_stringZ(tostring(self.respawn_point_id))
+ packet:w_stringZ(tostring(self.respawn_point_prop_section))
+ packet:w_stringZ(tostring(self.smart_id))
+
+ local scripted_target_tosave = self.scripted_target
+ if not scripted_target_tosave then scripted_target_tosave = "nil" end
+
+ packet:w_stringZ(tostring(scripted_target_tosave))
+ --packet:w_stringZ(tostring(self.online))
+
+ set_save_marker(packet, "save", true, "sim_squad_scripted")
+end
+
+function sim_squad_scripted:STATE_Read(packet, size)
+ --utils_data.debug_write( strformat("\n%s:STATE_Read start",self:name()) )
+ cse_alife_online_offline_group.STATE_Read (self, packet, size)
+
+ --if (USE_MARSHAL) then
+ --self:load_state(alife_storage_manager.get_state())
+ --self:init_squad_on_load()
+ --return
+ --end
+
+ set_save_marker(packet, "load", false, "sim_squad_scripted")
+
+ self.current_target_id = packet:r_stringZ()
+ if self.current_target_id == "nil" then
+ self.current_target_id = nil
+ else
+ self.current_target_id = tonumber(self.current_target_id)
+ end
+ self.respawn_point_id = packet:r_stringZ()
+ if self.respawn_point_id == "nil" then
+ self.respawn_point_id = nil
+ else
+ self.respawn_point_id = tonumber(self.respawn_point_id)
+ end
+ self.respawn_point_prop_section = packet:r_stringZ()
+ if self.respawn_point_prop_section == "nil" then
+ self.respawn_point_prop_section = nil
+ end
+ self.smart_id = packet:r_stringZ()
+ if self.smart_id == "nil" then
+ self.smart_id = nil
+ else
+ self.smart_id = tonumber(self.smart_id)
+ end
+
+ self.scripted_target = packet:r_stringZ()
+ if self.scripted_target == "nil" then
+ self.scripted_target = nil
+ end
+
+ --[[
+ local isOnline = packet:r_stringZ()
+
+ if isOnline == "false" then
+ self.online = false
+ end
+ --]]
+ self:init_squad_on_load()
+
+ set_save_marker(packet, "load", true, "sim_squad_scripted")
+ --utils_data.debug_write( strformat("%s:STATE_Read end",self:name()) )
+end
+
+
+--------------------------------------------------------------
+-- SERVER_OBJECT
+--------------------------------------------------------------
+function sim_squad_scripted:on_register()
+ --utils_data.debug_write( strformat("%s:on_register start",self:name()) )
+ cse_alife_online_offline_group.on_register( self )
+ SendScriptCallback("server_entity_on_register",self,"sim_squad_scripted")
+ sim_board.get_sim_board().squads[self.id] = true
+ --simulation_objects.register(self)
+ --SendScriptCallback("squad_on_register",self)
+ --utils_data.debug_write( strformat("%s:on_register end",self:name()) )
+end
+function sim_squad_scripted:on_unregister()
+ --utils_data.debug_write("sim_squad_scripted:on_unregister")
+ --SendScriptCallback("squad_on_unregister",self)
+ SendScriptCallback("server_entity_on_unregister",self,"sim_squad_scripted")
+ SIMBOARD.squads[self.id] = nil
+ SIMBOARD:assign_squad_to_smart(self, nil)
+ --simulation_objects.unregister(self)
+ if self.respawn_point_id ~= nil then
+ local smart = alife_object(self.respawn_point_id)
+ if smart == nil then
+ return
+ end
+ if smart.already_spawned ~= nil and smart.already_spawned[self.respawn_point_prop_section] ~= nil then
+ smart.already_spawned[self.respawn_point_prop_section].num = smart.already_spawned[self.respawn_point_prop_section].num - 1
+ end
+ end
+ cse_alife_online_offline_group.on_unregister(self)
+end
+
+function sim_squad_scripted:check_online_status()
+ local b = nil
+ if (get_object_story_id(self.id)) then
+ -- don't enforce any rule
+ elseif (self.force_online) then -- for tasks
+ b = true
+ elseif (self.__lock) then -- couldn't find a target
+ b = false
+ elseif (IsSurvivalMode()) then
+ b = true
+ elseif (axr_companions.companion_squads[self.id]) then
+ b = true
+ elseif not (level_weathers.valid_levels[level.name()]) then -- underground levels
+ -- don't enforce any rule
+ else
+ if (self.online ~= true and is_squad_monster[self.player_id]) then -- monster behaviors
+ local hour = level.get_time_hours()
+ if (self.player_id == "monster_predatory_day") then
+ -- Monster will not come online during the hours of (10PM till 5AM)
+ if (hour <= 5 or hour >= 22) then
+ b = false
+ end
+ elseif (self.player_id == "monster_zombied_day") then
+ -- Monster will not come online during the hours of (10PM till 5AM)
+ if (hour <= 5 or hour >= 22) then
+ b = false
+ end
+ elseif (self.player_id == "monster_predatory_night") then
+ -- Monster will not come online during the hours of (6AM till 6PM)
+ if (hour >= 6 and hour <= 18) then
+ b = false
+ end
+ elseif (self.player_id == "monster_zombied_night") then
+ -- Monster will not come online during the hours of (5AM till 7PM)
+ if (hour >= 6 and hour <= 18) then
+ b = false
+ end
+ end
+ if (b == false) then
+ self.assigned_target_id = self.id
+ self.current_target_id = self.id
+ self.current_action = 0
+ end
+ end
+ if (b == nil and db.actor) then
+ if (db.actor:has_info("enforce_online_exclusion")) then -- For story needs
+ if (self.online) then -- exclude from coming online except if already online or storied
+ if (self.was_forced_offline or self.position:distance_to(db.actor:position()) >= 2500) then
+ self.was_forced_offline = false
+ b = false -- switch online to offline
+ end
+ else
+ b = false -- all simulation already offline, refuse to come online while actor has info
+ end
+ else
+ if not (self.online) then
+ local dist = excl_dist
+ if (dist > 0 and not db.actor:has_info("actor_is_sleeping")) then
+ if (self.position:distance_to(db.actor:position()) <= dist) then
+ b = false -- force offline for online exclusion
+ end
+ end
+ end
+ end
+ end
+ end
+ self.forced_online_status = b
+end
+
+function sim_squad_scripted:can_switch_offline()
+ --[[
+ if (self.current_action == 1) then
+ local current_target = self.current_target_id and alife_object(self.current_target_id)
+ if (current_target.online and current_target.faction_controlled and current_target.faction_war_in_progress == true) then
+ --printf("forced online %s",current_target:name())
+ return false
+ end
+ end
+ --]]
+
+ if not (cse_alife_online_offline_group.can_switch_offline(self)) then
+ return false
+ end
+
+ if (self.forced_online_status == true) then
+ return false
+ end
+
+ return true
+end
+
+function sim_squad_scripted:can_switch_online()
+ -- important to check with inherited method first if it's okay to switch online, otherwise this leads to
+ -- crash saying 'object with ID already exists' when returning false and object is already online
+ if not cse_alife_online_offline_group.can_switch_online(self) then
+ return false
+ end
+
+ if (self.forced_online_status == false) then
+ return false
+ end
+
+ return true
+end
+function sim_squad_scripted:switch_offline()
+ cse_alife_online_offline_group.switch_offline(self)
+end
+function sim_squad_scripted:switch_online()
+ -- if (DEV_DEBUG) then
+ -- printf("sim_squad_scripted:switch_online() [%s]",self:name())
+ -- end
+ cse_alife_online_offline_group.switch_online(self)
+end
+
+
+--------------------------------------------------------------
+-- MAP LOCATION
+--------------------------------------------------------------
+function sim_squad_scripted:refresh()
+ if(self:commander_id()==nil) then
+ self:hide()
+ return
+ end
+ self:show()
+end
+
+function sim_squad_scripted:hide()
+ if(self.current_spot_id==nil) or (self.spot_section==nil) then
+ return
+ end
+ level.map_remove_object_spot(self.current_spot_id, self.spot_section)
+ self.current_spot_id = nil
+ self.spot_section = nil
+end
+
+local squad_icons = {
+ ["stalker"] = "warfare_stalker_spot",
+ ["dolg"] = "warfare_duty_spot",
+ ["freedom"] = "warfare_freedom_spot",
+ ["killer"] = "warfare_killer_spot",
+ ["csky"] = "warfare_csky_spot",
+ ["monolith"] = "warfare_monolith_spot",
+ ["army"] = "warfare_army_spot",
+ ["ecolog"] = "warfare_ecolog_spot",
+ ["bandit"] = "warfare_bandit_spot",
+ ["greh"] = "warfare_greh_spot",
+ ["isg"] = "warfare_isg_spot",
+ ["renegade"] = "warfare_renegade_spot",
+ ["greh_npc"] = "warfare_greh_spot",
+ ["army_npc"] = "warfare_army_spot",
+ ["zombied"] = "warfare_zombied_spot",
+ ["monster"] = "alife_presentation_squad_monster_1",
+ ["friends"] = "alife_presentation_squad_friend_1",
+ ["neutral"] = "alife_presentation_squad_neutral_1",
+ ["enemy"] = "alife_presentation_squad_enemy_1"
+ --["companion"] = "companion_spot"
+}
+function sim_squad_scripted:show()
+ if self.show_disabled then
+ self:hide()
+ return
+ end
+
+ if(level.map_has_object_spot(self:commander_id(), "ui_pda2_trader_location")~=0) or
+ (level.map_has_object_spot(self:commander_id(), "ui_pda2_mechanic_location")~=0) or
+ (level.map_has_object_spot(self:commander_id(), "ui_pda2_scout_location")~=0) or
+ (level.map_has_object_spot(self:commander_id(), "ui_pda2_quest_npc_location")~=0) or
+ (level.map_has_object_spot(self:commander_id(), "ui_pda2_medic_location")~=0) then
+ self.show_disabled = true
+ return
+ end
+
+ if self.current_spot_id ~= self:commander_id() then
+ self:hide()
+ self.current_spot_id = self:commander_id()
+ self:show()
+ return
+ end
+
+ -- local param = squad_smart.get_params() or {}
+ local sim = alife()
+ local se_actor = sim:actor()
+ local spot = ""
+
+ -- 1. Debug mode + Debug HUD enabled
+ if (DEV_DEBUG and dbg_map_hud) then
+ spot = squad_icons[self.player_id] or "warfare_mutant_spot"
+
+ -- 2. Improved PDAs
+ elseif db.actor then
+ local pda = db.actor:item_in_slot(8)
+ if pda and simulation_objects.is_on_the_same_level(se_actor,self) and (not is_squad_monster[self.player_id]) then
+ if (pda:section() == "device_pda_2") and (self.player_id == character_community(db.actor):sub(7)) then
+ spot = squad_icons[self.player_id]
+ elseif (pda:section() == "device_pda_3") and (self:get_squad_relation() ~= "enemy") then
+ spot = squad_icons[self.player_id]
+ end
+ end
+ end
+
+
+ if (spot ~= "") then
+ if spot == self.spot_section then
+ level.map_change_spot_hint(self.current_spot_id, self.spot_section, self:get_squad_props())
+ return
+ end
+
+ if (self.spot_section == nil) then
+ level.map_add_object_spot(self.current_spot_id, spot, self:get_squad_props())
+ else
+ level.map_remove_object_spot(self.current_spot_id, self.spot_section)
+ level.map_add_object_spot(self.current_spot_id, spot, self:get_squad_props())
+ end
+
+ self.spot_section = spot
+
+ elseif (self.spot_section ~= nil) then
+ level.map_remove_object_spot(self.current_spot_id, self.spot_section)
+ self.spot_section = nil
+ end
+end
+
+function sim_squad_scripted:get_squad_props()
+ local t = ""
+
+ -- 1. Debug mode + Debug HUD enabled
+ if (DEV_DEBUG and dbg_map_hud) then
+ local assigned_target = self.assigned_target_id and alife_object(self.assigned_target_id)
+ local current_target = self.current_target_id and alife_object(self.current_target_id)
+
+ t = "%s\\n\\n%s\\n\\nnpcs=%s\\n\\ncurrent_target=%s\\nassigned_target=%s\\n\\n"
+ t = strformat(t,self.disabled and "[disabled]" or "",self:name(),self:npc_count(),self.current_target_id == AC_ID and "actor" or current_target and current_target:name(),self.assigned_target_id == AC_ID and "actor" or assigned_target and assigned_target:name())
+
+ if (self.current_action) then
+ if (self.current_action == 0) then
+ t = t .. "Trying to Reach Target"
+ elseif (self.current_action == 1) then
+ t = t .. "Stay On Target"
+ end
+
+ if (self.current_action == 1 and self.stay_time) then
+ t = strformat("%s = %s (%s)",t,tostring(self.idle_time - game.get_game_time():diffSec(self.stay_time)),self.idle_time)
+ end
+ end
+
+ return t
+
+ -- 2. Everything else
+ elseif (not is_squad_monster[self.player_id]) then
+ return game.translate_string(self.player_id)
+ end
+
+
+ local assigned_target = self.assigned_target_id and alife_object(self.assigned_target_id)
+ local assigned_target_name = (self.assigned_target_id == AC_ID and "actor") or (assigned_target and assigned_target:name())
+ local current_target = self.current_target_id and alife_object(self.current_target_id)
+ local current_target_name = (self.current_target_id == AC_ID and "actor") or (current_target and current_target:name())
+
+ if assigned_target_name and (assigned_target_name ~= current_target_name) then
+ assigned_target_name = (assigned_target_name == "actor" and alife():actor():character_name()) or game.translate_string("st_"..assigned_target_name.."_name")
+ t = t .. "\\n" .. game.translate_string("st_sq_target") .. " - \\n" .. assigned_target_name
+ end
+
+ return t
+end
+
+function sim_squad_scripted:get_squad_relation()
+ local squad = alife_object(self.id)
+ if (is_squad_monster[squad.player_id]) then
+ return "monster"
+ end
+ local goodwill = 0
+ local npc_count = 0
+ for k in squad:squad_members() do
+ local object = db.storage[k.id] and db.storage[k.id].object
+ if object and db.actor then
+ goodwill = goodwill + object:general_goodwill(db.actor)
+ npc_count = npc_count + 1
+ end
+ end
+ if npc_count ~= 0 then
+ local delta = goodwill/npc_count
+ if delta <= -1000 then
+ return "enemy"
+ elseif delta >= 1000 then
+ return "friends"
+ elseif delta < 1000 and delta > -1000 then
+ return "neutral"
+ end
+ end
+ local relation = 0
+ if db.actor then
+ relation = db.actor:community_goodwill(self.player_id)+game_relations.get_factions_community(self.player_id, alife():actor():community())
+ else
+ relation = game_relations.get_factions_community(self.player_id, alife():actor():community())
+ end
+
+ if relation >= 1000 then
+ return "friends"
+ elseif relation <= -1000 then
+ return "enemy"
+ else
+ return "neutral"
+ end
+end
+
+
+--------------------------------------------------------------
+-- SIMULATION_TARGET_SQUAD
+--------------------------------------------------------------
+function sim_squad_scripted:get_location()
+ return self.position, self.m_level_vertex_id, self.m_game_vertex_id
+end
+
+function sim_squad_scripted:get_current_task() -- called from engine
+ --utils_data.debug_write("sim_self_scripted:get_current_task")
+ local se_target = self.assigned_target_id and simulation_objects.get_server_entity(self.assigned_target_id)
+ if (se_target) then
+ local npc_info = se_target.npc_info and se_target.npc_info[self:commander_id()]
+ if (npc_info and npc_info.job) then
+ return npc_info.job.alife_task or se_target:get_alife_task() or self:get_alife_task()
+ end
+ return se_target:get_alife_task()
+ end
+ return self:get_alife_task()
+end
+
+function sim_squad_scripted:am_i_reached(squad)
+ return self:npc_count() == 0 or self.id == squad.id
+end
+
+function sim_squad_scripted:on_after_reach(squad)
+ squad.current_action = nil
+ squad.current_target_id = nil
+end
+
+function sim_squad_scripted:on_reach_target(squad)
+ --utils_data.debug_write("sim_squad_scripted:on_reach_target")
+ squad:set_location_types()
+ for k in squad:squad_members() do
+ db.spawned_vertex_by_id[k.id] = nil
+ if db.offline_objects[k.id] ~= nil then
+ db.offline_objects[k.id] = db.offline_objects[k.id] and empty_table(db.offline_objects[k.id])
+ end
+ db.spawned_vertex_by_id[k.id] = nil
+ end
+ SIMBOARD:assign_squad_to_smart(squad, nil)
+end
+
+function sim_squad_scripted:get_alife_task()
+ return CALifeSmartTerrainTask(self.m_game_vertex_id, self.m_level_vertex_id)
+end
+
+local smarts_by_no_assault_zones = {
+ ["zat_a2_sr_no_assault"] = "zat_stalker_base_smart",
+ ["jup_a6_sr_no_assault"] = "jup_a6",
+ ["jup_b41_sr_no_assault"] = "jup_b41"
+}
+
+function sim_squad_scripted:sim_available()
+ return false
+ --[[
+ if self.smart_id == nil then
+ return true
+ end
+
+ local smart = simulation_objects.get_server_entity(self.smart_id)
+ if not (smart) then
+ return false
+ end
+
+ -- Can't be targetted by other squads if at base or trade prop smart
+ if (smart.props and smart.props.base and smart.props.base > 0) then
+ return false
+ end
+
+ return true
+ --]]
+end
+
+function sim_squad_scripted:target_precondition(squad)
+ if (self.id == squad.id) then
+ return true
+ end
+
+ if (sim_board.general_squad_precondition(squad,self)) then
+ return true
+ end
+
+ return false
+end
+
+function sim_squad_scripted:evaluate_prior(squad)
+ return simulation_objects.evaluate_prior(self, squad)
+end
+
+-- function on_game_start()
+ -- RegisterScriptCallback("squad_on_after_game_vertex_change",ongv)
+ -- RegisterScriptCallback("squad_on_after_level_change",onlv)
+-- end
+
+-- function onlv(se, old_lvl, cur_lvl)
+ -- printf('[%s]: changed level: [%s] --> [%s]', se:name(), old_lvl, cur_lvl)
+-- end
+
+-- function ongv(se, last_gv, cur_gv, change)
+ -- printf('[%s]: changed game vertex: [%s] --> [%s] (level changed: %s)', se:name(), last_gv, cur_gv, change)
+-- end
diff --git a/mods/Zone Customization Project/gamedata/scripts/smart_terrain.script b/mods/Zone Customization Project/gamedata/scripts/smart_terrain.script
new file mode 100644
index 00000000..016b1dc8
--- /dev/null
+++ b/mods/Zone Customization Project/gamedata/scripts/smart_terrain.script
@@ -0,0 +1,1802 @@
+------------------------------
+-- smart_terrain and gulag job system
+--
+-- Revamped by Alundaio
+------------------------------
+
+-- How many jobs are checked per update per npc, for a job
+local STEP_SIZE = 5
+local STEP_SIZE_OFFLINE = 1
+local locations_ini = ini_file("misc\\smart_terrain_masks.ltx")
+nearest_to_actor_smart = {id = nil , dist = math.huge}
+dbg_hud = false
+
+local smart_sect = "smart_terrain"
+
+local squads_by_faction = {
+ ["army"] = "army_sim_squad_novice, army_sim_squad_advanced, army_sim_squad_veteran",
+ ["bandit"] = "bandit_sim_squad_novice, bandit_sim_squad_advanced, bandit_sim_squad_veteran",
+ ["csky"] = "csky_sim_squad_novice, csky_sim_squad_advanced, csky_sim_squad_veteran",
+ ["dolg"] = "duty_sim_squad_novice, duty_sim_squad_advanced, duty_sim_squad_veteran",
+ ["ecolog"] = "ecolog_sim_squad_novice, ecolog_sim_squad_advanced, ecolog_sim_squad_veteran",
+ ["freedom"] = "freedom_sim_squad_novice, freedom_sim_squad_advanced, freedom_sim_squad_veteran",
+ ["killer"] = "merc_sim_squad_novice, merc_sim_squad_advanced, merc_sim_squad_veteran",
+ ["monolith"] = "monolith_sim_squad_novice, monolith_sim_squad_advanced, monolith_sim_squad_veteran",
+ ["stalker"] = "stalker_sim_squad_novice, stalker_sim_squad_advanced, stalker_sim_squad_veteran",
+ ["renegade"] = "renegade_sim_squad_novice, renegade_sim_squad_advanced, renegade_sim_squad_veteran",
+ ["greh"] = "greh_sim_squad_novice, greh_sim_squad_advanced, greh_sim_squad_veteran",
+ ["isg"] = "isg_sim_squad_novice, isg_sim_squad_advanced, isg_sim_squad_veteran",
+}
+
+local s_find = string.find
+
+local _mej = {
+ ['logic@bar_zastava_guard_1_walk'] = "logic@duty_guard1",
+ ['logic@bar_zastava_guard_2_walk'] = "logic@duty_guard2",
+ ['logic@bar_zastava_guard_3_walk'] = "logic@duty_guard3",
+ ['logic@bar_zastava_guard_4_walk'] = "logic@duty_guard4",
+ ['logic@bar_zastava_guard_5_walk'] = "logic@duty_guard5",
+ ['logic@bar_zastava_guard_6_walk'] = "logic@duty_guard6",
+ ['logic@bar_zastava_guard_7_walk'] = "logic@duty_guard7",
+ ['logic@bar_zastava_guard_8_walk'] = "logic@duty_guard8",
+ ['logic@bar_zastava_guard_9_walk'] = "logic@duty_guard9",
+
+ ['logic@follower_bar_zastava_guard_1_walk'] = "logic@duty_guard1",
+ ['logic@follower_bar_zastava_guard_2_walk'] = "logic@duty_guard2",
+ ['logic@follower_bar_zastava_guard_4_walk'] = "logic@duty_guard4",
+ ['logic@follower_bar_zastava_guard_5_walk'] = "logic@duty_guard5",
+ ['logic@follower_bar_zastava_guard_6_walk'] = "logic@duty_guard6",
+ ['logic@follower_bar_zastava_guard_7_walk'] = "logic@duty_guard7",
+ ['logic@follower_bar_zastava_guard_8_walk'] = "logic@duty_guard8",
+}
+local function allowed(a)
+ -- printf('allowed: %s',a.section)
+ if not _mej[a.section] then
+ return true
+ end
+ for k in pairs(db.storage) do
+ if tonumber(k) and db.storage[k] and db.storage[k].section_logic == _mej[a.section] then
+ -- printf('[%s] disallowed because [%s] (%s) taken', a.section, db.storage[k].section_logic, _mej[a.section])
+ return false
+ end
+ end
+ return true
+end
+
+local function job_avail_to_npc(npc_info, job, smart)
+ --[[
+ if (smart.dead_time[job.section]) then
+ return false
+ end
+ --]]
+
+ local precond = gulag_general.get_job_precondition(job)
+ if (precond) then
+ return allowed({ section = job.section}) and precond(npc_info.se_obj, smart, job, npc_info)
+ end
+
+ return true
+end
+
+function arrived_to_smart(se_obj, smart)
+ --utils_obj.debug_nearest(se_obj,"check arrived_to_smart %s",smart:name())
+ local squad = se_obj.group_id and se_obj.group_id ~= 65535 and alife_object(se_obj.group_id)
+ if (squad) then
+ if (squad.current_action == 1 and squad.assigned_target_id == smart.id) then
+ return true
+ end
+ return smart:am_i_reached(squad)
+ end
+
+ local cls = se_obj.clsid and se_obj:clsid()
+ if not (cls) then
+ return false
+ end
+
+ if (IsHelicopter(nil,cls)) then
+ return true
+ end
+
+ if (se_obj.m_game_vertex_id == smart.m_game_vertex_id) then
+ return true
+ end
+
+ local gg = game_graph()
+ if (gg:vertex(se_obj.m_game_vertex_id):level_id() ~= gg:vertex(smart.m_game_vertex_id):level_id()) then
+ return false
+ end
+
+ return se_obj.position:distance_to_sqr(smart.position) <= smart.arrive_dist^2
+end
+
+----------------------------------------------------------------------------------------------------------------------
+-- ����� "se_smart_terrain". ������������ ��������� smart terrain � �������.
+----------------------------------------------------------------------------------------------------------------------
+class "se_smart_terrain" (cse_alife_smart_zone)
+function se_smart_terrain:__init(section) super(section)
+ self.job_count = 0
+ self.npc_by_job_section = {}
+ --self.dead_time = {}
+ self.npc_info = {}
+ self.arriving_npc = {}
+ self.__campfire_check_time = game.get_game_time()
+ --utils_data.debug_write(strformat("%s:%s Init",self:name(),self.id))
+end
+function se_smart_terrain:on_before_register()
+ -- persistent storage
+ alife_storage_manager.get_se_obj_state(self,true)
+
+ --RegisterScriptCallback("save_state",self)
+
+ --utils_data.debug_write(strformat("%s:%s:on_before_register BEFORE",self:name(),self.id))
+ cse_alife_smart_zone.on_before_register(self)
+ sim_board.get_sim_board():register_smart(self)
+ --utils_data.debug_write(strformat("%s:%s:on_before_register AFTER",self:name(),self.id))
+end
+
+actor_level = nil
+function se_smart_terrain:on_register()
+ --utils_data.debug_write(strformat("%s:%s:ON_REGISTER start",self:name(),self.id))
+ cse_alife_smart_zone.on_register(self)
+ db.add_smart_terrain(self)
+ SendScriptCallback("server_entity_on_register",self,"se_smart_terrain")
+
+ local sim = alife()
+ local gg = game_graph()
+ actor_level = actor_level or sim:level_name(gg:vertex(sim:actor().m_game_vertex_id):level_id())
+ local smart_level = sim:level_name(gg:vertex(self.m_game_vertex_id):level_id())
+ self.is_on_actor_level = actor_level == smart_level or nil
+ self.smart_alife_task = CALifeSmartTerrainTask(self.m_game_vertex_id, self.m_level_vertex_id)
+
+ --[[ Disable any smart terrain that is not on actor's level and not linked to actor's level through ai_tweaks\simulation_objects.ltx
+ if not (self.is_on_actor_level) then
+ if (DEACTIVATE_SIM_ON_NON_LINKED_LEVELS) then
+ if not (s_find(simulation_objects.config:r_value(actor_level,"target_maps",0,""),smart_level)) then
+ SIMBOARD.smarts[self.id] = nil
+ self.disabled = true
+ --utils_data.debug_write(strformat("%s:%s:ON_REGISTER END (DISABLED)",self:name(),self.id))
+ return
+ end
+ end
+ end
+ --]]
+
+ simulation_objects.register(self)
+
+ self:load_jobs()
+ self.b_registred = true
+
+ SIMBOARD:init_smart(self)
+
+ self:register_delayed_npc()
+
+ if (self.need_init_npc) then
+ self.need_init_npc = nil
+ self:init_npc_after_load()
+ end
+
+ self.check_time = time_global()
+ --utils_data.debug_write(strformat("%s:%s:ON_REGISTER END",self:name(),self.id))
+end
+
+function se_smart_terrain:on_unregister()
+ SIMBOARD:unregister_smart(self)
+ SendScriptCallback("server_entity_on_unregister",self,"se_smart_terrain")
+ simulation_objects.unregister(self)
+ db.del_smart_terrain(self)
+ local m_data = alife_storage_manager.get_state()
+ if (m_data.se_object) then
+ m_data.se_object[self.id] = nil
+ end
+ cse_alife_smart_zone.on_unregister(self)
+end
+
+function se_smart_terrain:read_params()
+ --utils_data.debug_write(strformat("%s:%s:se_smart_terrain:read_params BEFORE",self:name(),self.id))
+ local spawn_ini = self:spawn_ini()
+ local filename = spawn_ini:r_string_ex(smart_sect,"cfg")
+ if not (filename) then
+ printe("!ERROR!: smart_terrain: no configuration file defined in spawn ini for %s",self:name())
+ self.disabled = true
+ return
+ end
+
+ if filename then
+ local fs = getFS()
+ if fs:exist("$game_config$",filename) then
+ self.ini = ini_file(filename)
+ self.fname = filename
+ else
+ printe("!ERROR: There is no configuration file [%s] in smart_terrain [%s]", filename, self:name())
+ self.disabled = true
+ return
+ end
+ end
+
+ if not locations_ini:section_exist(self:name()) then
+ printe("! SMART_TERRAIN [%s] has no terrain_mask section in smart_terrain_masks.ltx!!!",self:name())
+ end
+
+ local ini = self.ini
+
+ self.arrive_dist = ini:r_float_ex(smart_sect,"arrive_dist") or 50
+ self.death_idle_time = ini:r_float_ex(smart_sect,"death_idle_time") or 600
+ self.def_restr = ini:r_string_ex(smart_sect,"def_restr") -- default out_restrictor for npc on jobs here
+ self.default_faction = ini:r_string_ex(smart_sect,"default_faction")
+ self.faction_controlled = ini:r_string_ex(smart_sect,"faction_controlled")
+
+ self.max_population = tonumber(xr_logic.pick_section_from_condlist(get_story_object("actor"), nil, ini:r_string_to_condlist(smart_sect,"max_population")) or 0) or 0
+ self.min_population = tonumber(xr_logic.pick_section_from_condlist(get_story_object("actor"), nil, ini:r_string_to_condlist(smart_sect,"min_population")) or 0) or 0
+
+ self.respawn_idle = ini:r_float_ex(smart_sect,"respawn_idle") or 43200
+ self.respawn_only_level = ini:r_bool_ex(smart_sect,"respawn_only_level",false)
+ self.respawn_only_smart = ini:r_bool_ex(smart_sect,"respawn_only_smart",false)
+ self.respawn_point = false
+ self.respawn_radius = ini:r_float_ex(smart_sect,"respawn_radius") or 150
+ self.safe_restr = ini:r_string_ex(smart_sect,"safe_restr") -- npc with jobs inside are invulnerable
+ self.spawn_point = ini:r_string_ex(smart_sect,"spawn_point")
+ self.squad_id = ini:r_float_ex(smart_sect,"squad_id") or 0
+
+ -- for quest needs
+ self.ignore_zone = ini:r_string_ex(smart_sect,"ignore_zone")
+ self.alarm_start_sound = ini:r_string_to_condlist(smart_sect,"alarm_start_sound")
+ self.alarm_stop_sound = ini:r_string_to_condlist(smart_sect,"alarm_stop_sound")
+ self.alarm_length = ini:r_float_ex(smart_sect,"alarm_length") or 30000
+
+ if (self.faction_controlled) then
+ local spawn_num_condlist = ini:r_string_to_condlist(smart_sect,"faction_respawn_num")
+ if (spawn_num_condlist) then
+ self.respawn_params = self.respawn_params or {}
+
+ self.already_spawned = self.already_spawned or {}
+ self.respawn_point = true
+ local p = parse_names(self.faction_controlled)
+ if (p) then
+ for i,faction in pairs(p) do
+ local prop_name = "faction_controlled_"..faction
+ if (squads_by_faction[faction]) then
+ self.respawn_params[prop_name] = self.respawn_params[prop_name] or {}
+ self.respawn_params[prop_name].num = spawn_num_condlist
+ self.respawn_params[prop_name].squads = parse_names(squads_by_faction[faction])
+ self.respawn_params[prop_name].faction = faction
+ self.already_spawned[prop_name] = self.already_spawned[prop_name] or { num = 0 }
+ end
+ end
+ end
+ end
+ return --utils_data.debug_write(strformat("%s:%s:se_smart_terrain:read_params AFTER 1",self:name(),self.id))
+ end
+
+ local respawn_params = ini:r_string_ex(smart_sect,"respawn_params")
+ if not (respawn_params) then
+ return --utils_data.debug_write(strformat("%s:%s:se_smart_terrain:read_params AFTER 2",self:name(),self.id))
+ end
+
+ if not ini:section_exist(respawn_params) then
+ printf("%s Wrong smart_terrain respawn_params section [%s](there is no section)",self:name(),respawn_params)
+ return
+ end
+
+ local n = ini:line_count(respawn_params)
+ if n == 0 then
+ printf("%s Wrong smart_terrain respawn_params section [%s](empty params)", self:name(), respawn_params)
+ return
+ end
+
+ self.respawn_params = self.respawn_params or {}
+ self.already_spawned = self.already_spawned or {}
+ self.respawn_point = true
+
+ for j=0,n-1 do
+ local result, prop_name, prop_condlist = ini:r_line(respawn_params,j,"","")
+ if not ini:section_exist(prop_name) then
+ printe("!ERROR: %s Wrong smatr_terrain respawn_params section [%s] prop [%s](there is no section)",self:name(), respawn_params, prop_name)
+ else
+ local spawn_num_condlist = ini:r_string_to_condlist(prop_name,"spawn_num")
+ if (spawn_num_condlist) then
+ self.respawn_params[prop_name] = self.respawn_params[prop_name] or {}
+ self.respawn_params[prop_name].num = spawn_num_condlist
+ self.respawn_params[prop_name].squads = ini:r_list(prop_name,"spawn_squads")
+ self.respawn_params[prop_name].helicopter = ini:r_list(prop_name,"spawn_helicopter")
+ self.already_spawned[prop_name] = self.already_spawned[prop_name] or { num = 0 }
+ end
+ end
+ end
+
+ return --utils_data.debug_write(strformat("%s:%s:se_smart_terrain:read_params AFTER 5",self:name(),self.id))
+end
+
+function se_smart_terrain:fill_npc_info(obj)
+ --utils_data.debug_write(strformat("%s:%s:fill_npc_info %s",self:name(),self.id,obj and obj:name()))
+ local cls = obj.clsid and obj:clsid()
+ if not (cls) then
+ return printf("fill_npc_info invalid clsid for %s",obj and obj:name())
+ end
+
+ local stype = IsStalker(nil,cls) and 0 or IsMonster(nil,cls) and 1 or IsHelicopter(nil,cls) and 3 or nil
+ if not (stype) then
+ return printf("fill_npc_info invalid stype for %s [clsid=%s]",obj and obj:name(),cls)
+ end
+
+ local npc_info = {}
+ npc_info.se_obj = obj
+ npc_info.need_job = "nil"
+ npc_info.job = nil
+ npc_info.begin_job = false
+ npc_info.stype = stype
+ return npc_info
+end
+
+function se_smart_terrain:register_delayed_npc()
+ if (self.npc_to_register) then
+ for k,v in pairs(self.npc_to_register) do
+ --utils_data.debug_write(strformat("%s:%s:register_delayed_npc %s",self:name(),self.id,v and v:name()))
+ self:register_npc(v)
+ end
+ self.npc_to_register = nil
+ end
+end
+
+function se_smart_terrain:register_npc(obj)
+ --utils_data.debug_write(strformat("%s:%s:register_npc %s",self:name(),self.id,obj and obj:name()))
+ -- ensure registration is clean
+ if (self.arriving_npc[obj.id] or self.npc_info[obj.id]) then
+ --self.arriving_npc[obj.id] = nil
+ --self:clear_job(obj.id,true)
+ return
+ end
+
+ local cls = obj.clsid and obj:clsid()
+ if not (cls) then
+ return printf("register_npc no clsid! %s",obj and obj:name())
+ end
+
+ -- dynamic companions cannot register
+ if (IsStalker(nil,cls) and alife():has_info(obj.id,"npcx_is_companion")) then
+ return
+ end
+
+ --smart not yet registered
+ if not (self.b_registred) then
+ if not (self.npc_to_register) then
+ self.npc_to_register = {}
+ end
+ self.npc_to_register[obj.id] = obj
+ --table.insert(self.npc_to_register, obj)
+ return
+ end
+
+ if (IsMonster(nil,cls)) then
+ obj:smart_terrain_task_activate()
+ end
+
+ obj.m_smart_terrain_id = self.id
+
+ if (arrived_to_smart(obj, self)) then
+ self.npc_info[obj.id] = self:fill_npc_info(obj)
+ --self.dead_time = empty_table(self.dead_time)
+ self:select_npc_job(self.npc_info[obj.id],true)
+ else
+ self.arriving_npc[obj.id] = obj
+ end
+end
+
+function se_smart_terrain:only_faction_on_jobs(faction)
+ for id,npc_info in pairs(self.npc_info) do
+ local se_obj = npc_info.se_obj
+ local comm = se_obj and IsStalker(nil,se_obj:clsid()) and se_obj:community()
+ if (comm and comm ~= zombied and comm ~= faction) then
+ return false
+ end
+ end
+ return true
+end
+
+function se_smart_terrain:unregister_npc(obj)
+ --utils_data.debug_write(strformat("%s:%s:unregister_npc %s",self:name(),self.id,obj and obj:name()))
+
+ self.arriving_npc[obj.id] = nil
+
+ if (obj.clear_smart_terrain) then
+ obj:clear_smart_terrain()
+ end
+
+ self:clear_job(obj.id,true)
+
+ local st = db.storage[obj.id]
+ if (st and st.object) then
+ local cls = obj.clsid and obj:clsid()
+
+ if not (cls) then
+ return
+ end
+
+ local stype = IsStalker(nil,cls) and 0 or IsMonster(nil,cls) and 1 or IsHelicopter(nil,cls) and 3 or nil
+ if not (stype) then
+ return
+ end
+
+ xr_logic.initialize_obj(st.object, st, false, db.actor, stype)
+ end
+
+ --printf("self.npc_info[obj.id] = nil !!! obj.id=%s [%s]", obj.id,obj:name())
+end
+
+function se_smart_terrain:clear_dead(obj)
+ --utils_data.debug_write(strformat("%s:clear_dead %s",self:name(),obj and obj:name()))
+
+ self.arriving_npc[obj.id] = nil
+
+ if (obj.clear_smart_terrain) then
+ obj:clear_smart_terrain()
+ end
+
+ self:clear_job(obj.id,true)
+
+ --printf("clear_dead():self.npc_info[obj.id] = nil !!! obj.id=%s [%s]", obj.id,obj:name())
+end
+
+local function validate_patrol_path(path_name,gg)
+ local p = patrol(path_name)
+ local ret = true
+ if (p) then
+ local cnt = p:count()
+ for i=0,cnt-1 do
+ if not (gg:valid_vertex_id(p:game_vertex_id(i))) then
+ printf("validate_patrol_path WARNING: %s: invalid game_vertex_id for point %s",path_name,i)
+ ret = false
+ end
+ end
+ else
+ printf("validate_patrol_path ERROR: %s: path does not exist",path_name)
+ return false
+ end
+ return ret
+end
+
+function se_smart_terrain:load_jobs()
+ if (self.disabled) then
+ return
+ end
+
+ if not (self.is_on_actor_level) then
+ return
+ end
+
+ --utils_data.debug_write(strformat("%s:%s:load_jobs %s Before",self:name(),self.id,obj and obj:name()))
+
+ -- load job data from dynamic ltx from gulag_general.script
+ gulag_general.load_job(self)
+ if not (self.ltx) then
+ printe("!CRITICAL ERROR: %s does not have a dynamic ltx!",self:name())
+ return
+ end
+ --utils_data.debug_write(strformat("%s:load_jobs %s After",self:name(),obj and obj:name()))
+
+ -- Setup Alife Tasks for smart's gulag jobs
+ local job,active_section,section,ltx, path_field, path_name, smartcover, smartcover_name, prefix_name, job_type
+ local gg, CALifeSmartTerrainTask,level = game_graph(),CALifeSmartTerrainTask,level
+
+ local table_of_jobs = {self.stalker_jobs,self.monster_jobs,self.heli_jobs}
+ local tbl
+ for n=1,#table_of_jobs do
+ tbl = table_of_jobs[n]
+ if (tbl and #tbl > 0) then
+ for i=1,#tbl do
+ job = tbl[i]
+
+ section = job.section
+ ltx = job.ltx or self.ltx
+ if not (ltx:line_exist(section,"active")) then
+ printf("gulag: ltx=%s no 'active' in section %s", self.ltx_name, section)
+ else
+
+ if not (job.exclusive) then
+ self.job_count = self.job_count + 1
+ end
+
+ active_section = ltx:r_string_ex(section, "active")
+ if not (active_section) then
+ abort("%s has no active = in logic %s",self:name(),self.ltx_name)
+ end
+
+ job_type = gulag_general.get_job_type(job)
+ job.alife_task = self.smart_alife_task
+
+ if (job_type == "path_job" or job_type == "heli_path_job") then
+ path_field = "nil"
+
+ path_field = (ltx:line_exist(active_section,"path_walk") and "path_walk"
+ or ltx:line_exist(active_section,"path_main") and "path_main"
+ or ltx:line_exist(active_section,"path_home") and "path_home"
+ or ltx:line_exist(active_section,"center_point") and "center_point"
+ or ltx:line_exist(active_section,"path_move") and "path_move"
+ or "nil")
+
+ if (path_field == "nil") then
+ printf("smart_terrain.load_jobs(): Cannot find path_field in section %s. ini_path=%s",active_section,job.ini_path)
+ else
+ prefix_name = gulag_general.get_job_prefix_name(job)
+ if (prefix_name) then
+ path_name = (prefix_name == "nil" and "" or prefix_name) .. ltx:r_string_ex(active_section, path_field)
+ else
+ path_name = self:name() .. "_" .. ltx:r_string_ex(active_section, path_field)
+ end
+
+ if (path_field == "center_point") then
+ if level.patrol_path_exists(path_name.."_task") then
+ path_name = path_name.."_task"
+ end
+ end
+
+ if (level.patrol_path_exists(path_name)) then
+ if not (job_type == "heli_path_job") then
+ if (validate_patrol_path(path_name,gg)) then
+ job.alife_task = CALifeSmartTerrainTask(path_name)
+ end
+ end
+ else
+ printf("%s:load_jobs() There is no such patrol path %s",self:name(),path_name)
+ end
+ end
+ elseif (job_type == "heli_hide_job") then
+ -- do nothing job.alife_task not needed
+ elseif (job_type == "smartcover_job") then
+ smartcover_name = ltx:r_string_ex(active_section, "cover_name")
+ smartcover = se_smart_cover.registered_smartcovers[smartcover_name]
+
+ if not (smartcover) then
+ printf("There is an exclusive job with wrong smatrcover name [%s] smartterrain [%s]", tostring(smartcover_name), self:name())
+ else
+ job.alife_task = CALifeSmartTerrainTask(smartcover.m_game_vertex_id, smartcover.m_level_vertex_id)
+ end
+ end
+
+ if (job.alife_task) then -- if a single job is failed, ignore and fill rest of job table
+ job.game_vertex_id = job.alife_task:game_vertex_id()
+ job.level_id = gg:vertex(job.game_vertex_id):level_id()
+ job.position = job.alife_task:position()
+ end
+ end
+ end
+ end
+ end
+end
+
+function se_smart_terrain:clear_job(id,rem)
+ --utils_data.debug_write(strformat("%s:clear_job %s",self:name(),id))
+ if (self.npc_info[id]) then
+ if (self.npc_info[id].job) then
+ for sec,npcid in pairs(self.npc_by_job_section) do
+ if (id == npcid) then
+ self.npc_by_job_section[sec] = nil
+ end
+ end
+ end
+ if (rem) then
+ self.npc_info[id] = nil
+ end
+ end
+end
+
+function se_smart_terrain:update_jobs()
+ if (self.disabled) then
+ return
+ end
+ if not (self.is_on_actor_level) then
+ return
+ end
+
+ -- Fill NPC Job Info and Give them a job
+ for id,se_obj in pairs(self.arriving_npc) do
+ if (se_obj) then
+ if (arrived_to_smart(se_obj,self)) then
+ self.npc_info[id] = self:fill_npc_info(se_obj)
+ self.arriving_npc[id] = nil
+ end
+ elseif (se_obj == false) then
+ local sobj = alife_object(id)
+ if (sobj) then
+ self.arriving_npc[id] = sobj
+ else
+ self.arriving_npc[id] = nil
+ end
+ end
+ end
+
+ local gg = game_graph()
+ self.level_id = self.level_id or gg:vertex(self.m_game_vertex_id):level_id()
+
+ -- Update Jobs for existing NPCs
+ for id,info in pairs(self.npc_info) do
+ local se_obj = info.se_obj
+ if (se_obj) then
+ --if (self.level_id == gg:vertex(se_obj.m_game_vertex_id):level_id()) then
+ self:select_npc_job(info)
+ -- else
+ -- self.arriving_npc[id] = se_obj
+ -- self:clear_job(id,true)
+ -- end
+ else
+ self:clear_job(id,true)
+ end
+ end
+end
+
+function se_smart_terrain:select_npc_job(npc_info,now,surge_started)
+ if (self.disabled or not self.is_on_actor_level) then
+ return
+ end
+
+ --utils_data.debug_write(strformat("%s:select_npc_job %s",self:name()))
+
+ if not (npc_info and npc_info.se_obj and npc_info.stype) then
+ return printf("%s no npc_info!",self:name())
+ end
+
+ -- reference job table according to race
+ local jobs = npc_info.stype == 0 and self.stalker_jobs or npc_info.stype == 1 and self.monster_jobs or npc_info.stype == 3 and self.heli_jobs
+ if not (jobs) then
+ return printf("%s no job table for %s [stype = %s]",self:name(),npc_info.se_obj:name(),npc_info.stype)
+ end
+
+ local new_job
+ local npc_by_job_section = self.npc_by_job_section
+
+ -- If the NPC has an existing job link, validate it and iterate job table
+ -- for a higher priority job according to defined STEP_SIZE
+ if (npc_info.job) then
+
+ -- Make sure current job is still available
+ if (npc_by_job_section[npc_info.job.section] == npc_info.se_obj.id) then
+
+ -- Make sure current job is still available
+ if (job_avail_to_npc(npc_info,npc_info.job,self)) then
+
+ if (npc_info.current_index == nil or now) then
+ npc_info.current_index = 1
+ end
+
+ local get_job_prior = gulag_general.get_job_prior
+ local itr_job
+ local npc_id
+ local step = 1
+ while (new_job == nil and step <= (now and #jobs or st and STEP_SIZE or STEP_SIZE_OFFLINE)) do
+ step = step + 1
+
+ if (npc_info.current_index > #jobs) then
+ npc_info.current_index = 1
+ break
+ end
+
+ -- Step through job table one step at a time looking for a higher prior job
+ itr_job = jobs[npc_info.current_index]
+ npc_info.current_index = npc_info.current_index + 1
+
+ npc_id = npc_by_job_section[itr_job.section]
+
+ -- Check empty job
+ --if (npc_id == nil or npc_id == npc_info.se_obj.id) then
+ if (npc_id == nil) then
+ -- Find only higher priority jobs if already linked to a job
+ if (get_job_prior(itr_job) > get_job_prior(npc_info.job)) then
+ if (job_avail_to_npc(npc_info, itr_job, self)) then
+ -- Only take this higher priority job if when there is either no surge or if job is not in surge cover during surge; takes exclusive no matter what
+ if (itr_job.exclusive or not xr_conditions.surge_started() or not surge_manager.job_in_surge_cover(npc_info.se_obj,npc_info.job)) then
+ new_job = itr_job
+ npc_info.current_index = 1
+ end
+ end
+ end
+ end
+ end
+ else
+ -- Job is no longer available, unlink job info
+ for sec,npcid in pairs(npc_by_job_section) do
+ if (npcid == npc_info.se_obj.id) then
+ npc_by_job_section[sec] = nil
+ end
+ end
+ npc_info.job = nil
+ npc_info.current_index = 1
+ end
+ else
+ -- Job is not linked properly, npc_id doesn't match owner se_obj
+ for sec,npcid in pairs(npc_by_job_section) do
+ if (npcid == npc_info.se_obj.id) then
+ npc_by_job_section[sec] = nil
+ end
+ end
+
+ npc_info.job = nil
+ npc_info.current_index = 1
+ end
+ end
+
+ if not (npc_info.job) then
+ if (npc_info.current_index == nil or now) then
+ npc_info.current_index = 1
+ end
+
+ local itr_job,npc_id
+ local step = 1
+ local st = db.storage[npc_info.se_obj.id]
+ local STEP_SIZE_NO_JOB = #jobs
+ while (new_job == nil and step <= (now and STEP_SIZE_NO_JOB or st and STEP_SIZE_NO_JOB or STEP_SIZE_OFFLINE)) do
+ step = step + 1
+
+ if (npc_info.current_index > STEP_SIZE_NO_JOB) then
+ npc_info.current_index = 1
+ break
+ end
+
+ -- Step through job table one step at a time looking for a high prior job
+ itr_job = jobs[npc_info.current_index]
+ npc_info.current_index = npc_info.current_index + 1
+
+ npc_id = npc_by_job_section[itr_job.section]
+
+ -- validate existing job link
+ if (npc_id and not self.npc_info[npc_id]) then
+ npc_by_job_section[itr_job.section] = nil
+ end
+
+ -- Check empty job or re-take current job
+ if (npc_id == nil or npc_id == npc_info.se_obj.id) and (job_avail_to_npc(npc_info, itr_job, self)) then
+ new_job = itr_job
+ npc_info.current_index = 1
+ end
+ end
+
+ if not (new_job) then
+ return
+ end
+ end
+
+ local id = npc_info.se_obj.id
+ -- newly selected job
+ if (new_job and new_job ~= npc_info.job) then
+
+ -- Unassign npc_id from old job and unreference job section
+ for sec,npcid in pairs(npc_by_job_section) do
+ if (npcid == id) then
+ npc_by_job_section[sec] = nil
+ end
+ end
+
+ -- setup table that references NPCs by their job section
+ npc_by_job_section[new_job.section] = id
+
+ -- link up NPC info and references
+ npc_info.job = new_job
+ npc_info.begin_job = false
+
+ -- grab storage and ensure object is online.
+ local st = self.online and db.storage[id]
+
+ -- If NPC has storage, it is online, so switch logic
+ if (st and st.object) then
+ --xr_logic.switch_to_section(st.object, self.ltx, "nil")
+ npc_info.begin_job = true
+ empty_table(db.offline_objects[id])
+ self:setup_logic(st.object)
+ return true
+ end
+ end
+
+ if (npc_info.begin_job ~= true and npc_info.job) then
+ -- grab storage and ensure object is online.
+ local st = self.online and db.storage[id]
+ -- If NPC has storage it is online, so switch logic
+ if (st and st.object) then
+ npc_info.begin_job = true
+ empty_table(db.offline_objects[id])
+ self:setup_logic(st.object)
+ return true
+ end
+ end
+end
+
+function se_smart_terrain:getJob(obj_id)
+ return self.npc_info[obj_id] and self.npc_info[obj_id].job or nil
+end
+
+function se_smart_terrain:idNPCOnJob(job_name)
+ return self.npc_by_job_section[job_name]
+end
+function se_smart_terrain:switch_to_desired_job(npc)
+ if (self.disabled or not self.is_on_actor_level) then
+ return
+ end
+
+ local npc_id = npc:id()
+ local npc_info = self.npc_info[npc_id]
+ local changing_npc_id = self.npc_by_job_section[npc_info.need_job]
+
+ -- unlink old job
+ self:clear_job(npc_id)
+
+ -- No changing npc, find new job
+ if changing_npc_id == nil then
+ self.npc_info[npc_id].job = nil
+ self:select_npc_job(self.npc_info[npc_id])
+ return
+ end
+
+ -- No changing npc, find new job
+ if self.npc_info[changing_npc_id] == nil then
+ self.npc_info[npc_id].job = nil
+ self:select_npc_job(self.npc_info[npc_id])
+ return
+ end
+
+ -- Changing NPC doesn't have a linked job, find us both jobs
+ if not (self.npc_info[changing_npc_id].job) then
+ self.npc_info[npc_id].job = nil
+ self:select_npc_job(self.npc_info[npc_id])
+ self:select_npc_job(self.npc_info[changing_npc_id])
+ return
+ end
+
+ -- take job from changing_npc_id
+ npc_info.job = self.npc_info[changing_npc_id].job
+ self.npc_by_job_section[npc_info.job.section] = npc_id
+ npc_info.begin_job = true
+ npc_info.need_job = "nil"
+
+ -- setup logic
+ local st = db.storage[npc_id]
+ if (st and st.object) then
+ self:setup_logic(st.object)
+ end
+
+ -- tell changing_npc_id to GTFO and get a job
+ self.npc_info[changing_npc_id].job = nil
+ self:select_npc_job(self.npc_info[changing_npc_id])
+end
+
+--[[
+function se_smart_terrain:save_state(m_data)
+ --utils_data.debug_write(strformat("se_smart_terrain:save_state BEFORE %s %s",self:name(),self.id))
+ if not (m_data.smart_terrains) then
+ m_data.smart_terrains = {}
+ end
+
+ --printf("m_data.smart_terrains = %s name=%s",m_data.smart_terrains ~= nil,self:name())
+ m_data.smart_terrains[self:name()] = {}
+ local t = m_data.smart_terrains[self:name()]
+
+ for id,v in pairs(self.arriving_npc) do
+ if not (t.arriving_npc) then
+ t.arriving_npc = {}
+ end
+ table.insert(t.arriving_npc,id)
+ end
+
+ for id,info in pairs(self.npc_info) do
+ if not (t.npc_info) then
+ t.npc_info = {}
+ end
+ t.npc_info[id] = {}
+ t.npc_info[id].job_section = info.job and info.job.section
+ t.npc_info[id].begin_job = info.begin_job
+ t.npc_info[id].need_job = info.need_job
+ end
+
+ if not (is_empty(self.already_spawned)) then
+ t.already_spawned = self.already_spawned
+ end
+
+ t.last_respawn_update = self.last_respawn_update
+ local tim = (self.smart_alarm_time or time_global()) - time_global()
+ if (tim > 1000) then -- don't bother storing such a low value
+ t.smart_alarm_time = tim
+ end
+
+ --utils_data.debug_write(strformat("se_smart_terrain:save_state AFTER %s",self:name()))
+end
+
+function se_smart_terrain:load_state(m_data)
+ --printf("load state %s",self:name())
+ if not (m_data.smart_terrains and m_data.smart_terrains[self:name()]) then
+ return
+ end
+ --utils_data.debug_write(strformat("se_smart_terrain:load_state BEFORE %s",self:name()))
+ self.need_init_npc = true
+
+ if (m_data.smart_terrains[self:name()].arriving_npc) then
+ for i,id in pairs(m_data.smart_terrains[self:name()].arriving_npc) do
+ self.arriving_npc[id] = false
+ end
+ end
+
+ self.load_info = m_data.smart_terrains[self:name()].npc_info or {}
+ self.already_spawned = m_data.smart_terrains[self:name()].already_spawned or self.already_spawned
+ self.last_respawn_update = m_data.smart_terrains[self:name()].last_respawn_update
+ self.smart_alarm_time = (m_data.smart_terrains[self:name()].smart_alarm_time or time_global()) - time_global()
+
+ m_data.smart_terrains[self:name()] = nil
+ --utils_data.debug_write(strformat("se_smart_terrain:load_state AFTER %s",self:name()))
+end
+--]]
+--*******************************************************
+-- ����/����
+--*******************************************************
+function se_smart_terrain:STATE_Write(packet)
+ cse_alife_smart_zone.STATE_Write(self, packet)
+ -- if (USE_MARSHAL) then
+ -- return
+ -- end
+ --set_save_marker(packet, "save", false, "se_smart_terrain")
+
+ -- ���������� � ���, ������ � �����
+ local n = table.size(self.arriving_npc)
+ utils_data.w_stpk(packet,"u8",n,"arriving_npc count")
+ for k,v in pairs(self.arriving_npc) do
+ utils_data.w_stpk(packet,"u16",k,"arriving_npc id")
+ end
+
+
+ -- ���������� � ��� � ������
+ n = table.size(self.npc_info)
+ --printf("%s:STATE_Write JobCount=%s",self:name(),n)
+ utils_data.w_stpk(packet,"u8",n,"npc_info count")
+ for id,info in pairs(self.npc_info) do
+ utils_data.w_stpk(packet,"u16",id,"npc_info id")
+ utils_data.w_stpk(packet,"stringZ",info.job and info.job.section or "nil","npc_info.job_section")
+ utils_data.w_stpk(packet,"bool",info.begin_job,"npc_info.begin_job")
+ utils_data.w_stpk(packet,"stringZ",tostring(info.need_job),"npc_info.need_job")
+ end
+
+ if self.respawn_point then
+ utils_data.w_stpk(packet,"bool",true,"respawn_point")
+ local n = table.size(self.already_spawned)
+
+ utils_data.w_stpk(packet,"u8",n,"already_spawned count")
+ for k,v in pairs(self.already_spawned) do
+ utils_data.w_stpk(packet,"stringZ",k,"already_spawned section")
+ utils_data.w_stpk(packet,"u8",v.num,"already_spawned count")
+ end
+ utils_data.w_stpk(packet,"CTime",self.last_respawn_update,"last_respawn_update CTime")
+ else
+ utils_data.w_stpk(packet,"bool",false,"respawn_point")
+ end
+
+ local tg = time_global()
+ utils_data.w_stpk(packet,"s32",(self.smart_alarm_time or tg) - tg,"smart_alarm_time")
+
+ --set_save_marker(packet, "save", true, "se_smart_terrain")
+end
+
+function se_smart_terrain:STATE_Read(packet, size)
+ --utils_data.debug_write(strformat("%s:STATE_READ start",self:name()))
+ cse_alife_smart_zone.STATE_Read(self, packet, size)
+ self:read_params()
+
+ -- if (USE_MARSHAL) then
+ -- self:load_state(alife_storage_manager.get_state())
+ -- return
+ -- end
+
+ self.need_init_npc = true
+ --set_save_marker(packet, "load", false, "se_smart_terrain")
+
+ -- ���������� � ���, ������ � �����
+ local n = packet:r_u8()
+ self.arriving_npc = {}
+ for i = 1,n do
+ local id = packet:r_u16()
+ if (id < 65535) then
+ self.arriving_npc[id] = false
+ end
+ end
+
+ n = packet:r_u8()
+
+ self.load_info = {}
+ local id
+ for i = 1,n do
+ id = packet:r_u16()
+ self.load_info[id] = {}
+ self.load_info[id].job_section = packet:r_stringZ()
+ self.load_info[id].begin_job = packet:r_bool()
+ self.load_info[id].need_job = packet:r_stringZ()
+ end
+
+ if (self.load_info[65535]) then
+ printf("%s:STATE_Read: invalid id in npc_info table. Check for save corruption or error in smart_terrain job system.")
+ self.load_info[65535] = nil
+ end
+
+ --[[
+ n = packet:r_u8()
+
+ empty_table(self.dead_time)
+
+ for i =1,n do
+ local sec = packet:r_stringZ()
+ local gt = utils_data.r_CTime(packet)
+ if (sec and sec ~= "nil" and sec ~= "") then
+ self.dead_time[sec] = gt
+ end
+ end
+ --]]
+
+ local respawn_point = packet:r_bool()
+ --printf("LOAD RESPAWN %s", self:name())
+ if respawn_point then
+ n = packet:r_u8()
+ for i = 1, n do
+ local id = packet:r_stringZ()
+ local num = packet:r_u8()
+ if (self.already_spawned and id and id ~= "nil" and id ~= "") then
+ -- technically it's an error but it's makes save compatible if change respawn
+ if not (self.already_spawned[id]) then
+ self.already_spawned[id] = {}
+ end
+ --[[
+ if (self.already_spawned[id] == nil) then
+ printe("!ERROR! %s:STATE_Read already_spawned %s is nil!",self:name(),id)
+ local str = ""
+ for k,v in pairs(self.already_spawned) do
+ str = str .. k .. ", "
+ end
+ printe("!ERROR! %s.already_spawned[%s]",self:name(),str)
+ end
+ --]]
+ self.already_spawned[id].num = num
+ end
+ end
+ self.last_respawn_update = utils_data.r_CTime(packet)
+ end
+
+ if (packet:r_elapsed() ~= 0) then
+ local tmr = packet:r_s32()
+ if (tmr > 0 and tmr <= self.alarm_length) then
+ self.smart_alarm_time = time_global() + tmr
+ end
+ end
+ --set_save_marker(packet, "load", true, "se_smart_terrain")
+ --utils_data.debug_write(strformat("%s:STATE_READ end",self:name()))
+end
+
+-- Setup NPC jobs from loaded savegames. Use unique ids generated
+-- by the gulag_general.script for each smart job to retake job
+function se_smart_terrain:init_npc_after_load()
+ if (self.disabled and not self.is_on_actor_level) then
+ return
+ end
+
+ local sim = alife()
+
+ -- validate and fill saved npc_info; find job by saved uid
+ for id, info in pairs(self.load_info) do
+ local sobj = sim:object(id)
+ local cls = sobj and sobj:clsid()
+ if (cls) and (IsStalker(nil,cls) or IsMonster(nil,cls) or IsHelicopter(nil,cls)) then
+ local new_info = self:fill_npc_info(sobj)
+ new_info.job = self:find_job_by_section(info.job_section)
+
+ if (new_info.job) then
+ self.npc_by_job_section[new_info.job.section] = id
+ new_info.begin_job = info.begin_job
+ new_info.need_job = info.need_job
+ end
+
+ self.npc_info[id] = new_info
+ else
+ --self.npc_info.job = self:find_job_by_section(info.job_section)
+ self:clear_job(id,true)
+ end
+ end
+
+ -- Here we setup arriving npcs from loaded savegame
+ for id,v in pairs(self.arriving_npc) do
+ local se_obj = sim:object(id)
+ if (se_obj and arrived_to_smart(se_obj,self)) then
+ self.npc_info[se_obj.id] = self:fill_npc_info(se_obj)
+ self:select_npc_job(self.npc_info[se_obj.id],true)
+ self.arriving_npc[se_obj.id] = nil
+ end
+ end
+
+ self.load_info = nil
+end
+
+function se_smart_terrain:stayed_squad_count()
+ local smrt = SIMBOARD.smarts[self.id]
+ if (smrt) then
+ local count = 0
+ for k,v in pairs(smrt.squads) do
+ local squad = alife_object(k)
+ if (squad and squad.current_target_id and squad.current_target_id == self.id) then
+ count = count + 1
+ end
+ end
+ return count
+ end
+ return 0
+end
+
+function se_smart_terrain:get_smart_props()
+ if (self.disabled) then
+ return "deactivated\\n\\n"..self:name().." ["..self.id.."]\\n".."squad_id = "..tostring(self.squad_id)
+ end
+
+ local props = (not self.disabled) and get_smart_terrain_name(self)
+ if(props==nil) or (DEV_DEBUG and dbg_hud) then
+ if (self.disabled) then
+ return "deactivated\\n\\n"..self:name().." ["..self.id.."]\\n".."squad_id = "..tostring(self.squad_id)
+ end
+
+ local board = SIMBOARD
+ local squad_count = board.smarts[self.id].population --smart_terrain_squad_count(board.smarts[self.id].squads)
+
+ props = self:name().." ["..self.id.."]\\n"
+
+ if (self.faction_controlled) then
+ props = props .. "Faction_controlled=" .. tostring(self.faction_controlled) .. "\\nFaction_war_in_progress=" .. tostring(self.faction_war_in_progress) .. "\\n"
+ props = props .. "Controlling_faction=".. tostring(self.faction) .. "\\n"
+ end
+
+ props = props .. "squad_id = "..tostring(self.squad_id).."\\n".."SimCapacity="..squad_count.." of "..tostring(self.max_population).."\\n"
+
+ if self.respawn_point and self.already_spawned then
+ props = props.."\\nAlready_spawned :\n"
+ for k,v in pairs(self.already_spawned) do
+ if (v.num and self.respawn_params[k] and self.respawn_params[k].num) then
+ props = props.."["..k.."] = "..v.num.."("..(xr_logic.pick_section_from_condlist(db.actor, self,self.respawn_params[k].num) or "0")..")\\n"
+ end
+ end
+ end
+
+ if not (self.respawn_params) then
+ props = props .. "[smart has no respawn params]\\n"
+ end
+
+ if self.last_respawn_update then
+ props = props.."\\nTime_to_spawn:"..tostring(self.respawn_idle - game.get_game_time():diffSec(self.last_respawn_update)).."\\n"
+ end
+
+ --' ��������� ���������� � ����������� � ������ �������
+ for k,v in pairs(SIMBOARD.smarts[self.id].squads) do
+ props = props .. tostring(k) .. "\\n"
+ end
+
+ if (self.props) then
+ for prop,val in pairs(self.props) do
+ if (val > 0) then
+ props = props .. prop .. " = " .. val .. "\\n"
+ end
+ end
+ end
+
+ props = props .. "\\nstayed_squad_count = " .. tostring(self:stayed_squad_count())
+ end
+ return props
+end
+
+function se_smart_terrain:show()
+ if DEV_DEBUG and (dbg_hud) then
+ if (level.map_has_object_spot(self.id,"alife_presentation_smart_default_neutral") == 0) then
+ level.map_add_object_spot(self.id, "alife_presentation_smart_default_neutral", self:get_smart_props())
+ else
+ level.map_change_spot_hint(self.id, "alife_presentation_smart_default_neutral", self:get_smart_props())
+ end
+ else
+ if (level.map_has_object_spot(self.id,"alife_presentation_smart_default_neutral") ~= 0) then
+ level.map_remove_object_spot(self.id, "alife_presentation_smart_default_neutral")
+ end
+ end
+end
+
+function se_smart_terrain:hide()
+ if self.smrt_showed_spot == nil then
+ return
+ end
+ level.map_remove_object_spot(self.id, "alife_presentation_smart_default_"..self.smrt_showed_spot)
+end
+
+local function is_only_monsters_on_jobs(npc_info)
+ for k,v in pairs(npc_info) do
+ if not (v.stype == 1) then
+ return false
+ end
+ end
+ return true
+end
+
+function se_smart_terrain:check_smart_faction()
+ local factions_present = {}
+ for k,v in pairs(self.npc_info) do
+ if (v.se_obj and IsStalker(nil,v.se_obj:clsid())) then
+ factions_present[v.se_obj:community()] = true
+ end
+ end
+
+ self.faction_war_in_progress = false
+ local last_faction
+ -- check if factions are hostile to eachother
+ for f,v in pairs(factions_present) do
+ last_faction = f
+ for ff,vv in pairs(factions_present) do
+ if (f ~= ff) then
+ if (game_relations.is_factions_enemies(f, ff)) then
+ self.faction_war_in_progress = true
+ break
+ end
+ end
+ end
+ end
+
+ -- determine faction
+ if (self.faction_war_in_progress == false) then
+ self.faction = self.faction and factions_present[self.faction] and self.faction or last_faction or self.default_faction
+ end
+end
+
+function se_smart_terrain:update()
+ cse_alife_smart_zone.update( self )
+ --utils_data.debug_write(strformat("%s:update ",self:name()))
+
+ self:show()
+
+ if (self.disabled) then
+ return
+ end
+
+ local sim = alife()
+ local se_actor = sim:actor()
+ self.dist_to_actor = self.online and self.position:distance_to(se_actor.position) or math.huge
+
+ if self.respawn_params ~= nil then
+ self:try_respawn()
+ end
+
+ if (self.online) then
+ self:update_jobs()
+ -- Unlock relevant article in guide and track statistic.
+ if (self.dist_to_actor <= 50) then
+ SendScriptCallback("actor_on_interaction", "smarts", self, self:name())
+ end
+ if (nearest_to_actor_smart.id) then
+ if (nearest_to_actor_smart.id == self.id) then
+ nearest_to_actor_smart.dist = self.dist_to_actor
+ elseif (self.dist_to_actor < nearest_to_actor_smart.dist) then
+ nearest_to_actor_smart.id = self.id
+ nearest_to_actor_smart.dist = self.dist_to_actor
+ end
+ else
+ nearest_to_actor_smart.id = self.id
+ nearest_to_actor_smart.dist = self.dist_to_actor
+ end
+
+ if (self.__campfire_check_time == nil or game.get_game_time():diffSec(self.__campfire_check_time) > 12000) then
+ bind_campfire.turn_off_campfires_by_smart_name(self:name())
+ self.__campfire_check_time = game.get_game_time()
+ end
+
+ self:check_smart_faction()
+
+ --self:check_alarm()
+ end
+
+ SendScriptCallback("smart_terrain_on_update", self)
+end
+
+function se_smart_terrain:set_alarm(enemy)
+ if (self.smart_alarm_time == nil and self.alarm_start_sound) then
+ local sound_str = xr_logic.pick_section_from_condlist(db.actor, self, self.alarm_start_sound)
+ if (sound_str) then
+ xr_sound.set_sound_play(AC_ID, sound_str)
+ end
+ end
+ self.smart_alarm_time = time_global()+self.alarm_length
+
+ if (enemy) then
+ if not (self.smart_alarm_position) then
+ self.smart_alarm_position = {}
+ end
+ self.smart_alarm_position[enemy:id()] = enemy:position()
+ end
+end
+
+function se_smart_terrain:check_alarm()
+ if not (self.smart_alarm_time) then
+ return false
+ end
+ if (time_global() > self.smart_alarm_time) then
+ self.smart_alarm_time = nil
+ self.smart_alarm_position = nil
+ if (self.alarm_stop_sound) then
+ local sound_str = xr_logic.pick_section_from_condlist(db.actor, self, self.alarm_stop_sound)
+ if (sound_str) then
+ xr_sound.set_sound_play(AC_ID, sound_str)
+ end
+ end
+ return false
+ end
+ return true
+end
+
+function se_smart_terrain:find_job_by_section(section)
+ if (self.disabled and not self.is_on_actor_level) then
+ return
+ end
+
+ if (self.stalker_jobs) then
+ for i=1,#self.stalker_jobs do
+ if (self.stalker_jobs[i].section == section) then
+ return self.stalker_jobs[i]
+ end
+ end
+ end
+
+ if (self.monster_jobs) then
+ for i=1,#self.monster_jobs do
+ if (self.monster_jobs[i].section == section) then
+ return self.monster_jobs[i]
+ end
+ end
+ end
+
+ if (self.heli_jobs) then
+ for i=1,#self.heli_jobs do
+ if (self.heli_jobs[i].section == section) then
+ return self.heli_jobs[i]
+ end
+ end
+ end
+end
+
+function se_smart_terrain:setup_logic(npc)
+ --utils_data.debug_write(self:name().." setup_logic "..tostring(npc and npc:name()))
+ if not (npc) then
+ printf("%s.setup_logic: NPC is nil",self:name())
+ return
+ end
+
+ local npc_info = self.npc_info[npc:id()]
+ if not (npc_info) then
+ printf("%s.setup_logic: npc_info is nil! for id=%s",self:name(),npc:id())
+ return
+ end
+
+ if not (npc_info.se_obj) then
+ printf("%s.setup_logic: npc_info.se_obj is nil! for id=%s",self:name(),npc:id())
+ return
+ end
+
+ local job = npc_info.job
+ if not (job) then
+ printf("%s.setup_logic: npc_info has no job! for id=%s",self:name(),npc:id())
+ self:unregister_npc(npc_info.se_obj)
+ self:register_npc(npc_info.se_obj)
+ return
+ end
+
+ local ltx = job.ltx or self.ltx
+ local ltx_name = job.ini_path or self.ltx_name
+
+ xr_logic.configure_schemes(npc, ltx, ltx_name, npc_info.stype, job.section, job.prefix_name or self:name())
+
+ local sect = xr_logic.determine_section_to_activate(npc, ltx, job.section, db.actor)
+ if utils_data.get_scheme_by_section(job.section) == "nil" then
+ printf("[smart_terrain %s] section=%s, don't use section 'nil'!", self:name(), sect)
+ end
+
+ --printf("npc=%s ltx=%s sect=%s prefix=%s",npc:name(),ltx_name,sect,job.prefix_name or self:name())
+ xr_logic.activate_by_section(npc, ltx, sect, job.prefix_name or self:name(), false)
+end
+
+-- called in xr_motivator and bind_monster net_spawn()
+function setup_gulag_and_logic_on_spawn(obj, st, se_obj, stype, loaded)
+ --utils_data.debug_write(strformat("smart_terrain.setup_gulag_and_logic_on_spawn %s",obj and obj:name()))
+ local sim = alife()
+
+ -- Expedite arrival and job assignment
+ local smart = se_obj.m_smart_terrain_id and se_obj.m_smart_terrain_id ~= 65535 and sim:object(se_obj.m_smart_terrain_id)
+ if (smart and smart:clsid() == clsid.smart_terrain) then
+ local npc_info = smart.npc_info[se_obj.id]
+ if (npc_info) then
+ if not (npc_info.job) then
+ smart:select_npc_job(npc_info,true)
+ local smart_task = smart.npc_info[se_obj.id].job and smart.npc_info[se_obj.id].job.alife_task
+ if (smart_task) then
+ db.spawned_vertex_by_id[se_obj.id] = smart_task:level_vertex_id()
+ end
+ elseif (npc_info.job) then
+ -- if already job begin then don't spawn at job
+ local smart_task = npc_info.begin_job ~= true and npc_info.job and npc_info.job.alife_task or nil
+ if (smart_task) then
+ db.spawned_vertex_by_id[se_obj.id] = smart_task:level_vertex_id()
+ end
+ npc_info.begin_job = true
+ empty_table(db.offline_objects[se_obj.id])
+ smart:setup_logic(obj)
+ end
+ return
+ end
+ end
+
+ xr_logic.initialize_obj(obj, st, loaded, db.actor, stype)
+end
+
+function on_death(se_obj)
+ local sim = alife()
+ local smart = sim and se_obj.m_smart_terrain_id and se_obj.m_smart_terrain_id ~= 65535 and sim:object(se_obj.m_smart_terrain_id)
+ if (smart) then
+ smart:clear_dead(se_obj)
+ end
+end
+
+--***********************************************************************************************
+--* SIMULATION_TARGET_SMART *
+--***********************************************************************************************
+function se_smart_terrain:get_location()
+ return self.position, self.m_level_vertex_id, self.m_game_vertex_id
+end
+
+function se_smart_terrain:am_i_reached(squad)
+ if (squad.m_game_vertex_id == self.m_game_vertex_id) then
+ return true
+ end
+
+ local gg = game_graph()
+ if (gg:vertex(squad.m_game_vertex_id):level_id() ~= gg:vertex(self.m_game_vertex_id):level_id()) then
+ return false
+ end
+
+ -- TODO: Maybe consider to return true if squad:get_script_target() is true
+ if (is_squad_monster[squad.player_id] and squad:get_script_target() == nil) then
+ return squad.position:distance_to_sqr(self.position) <= 625
+ end
+
+ return squad.always_arrived == true or squad.position:distance_to_sqr(self.position) <= self.arrive_dist^2
+end
+
+function se_smart_terrain:on_after_reach(squad)
+ local sim = alife()
+ for k in squad:squad_members() do
+ local se_obj = k.object or k.id and sim:object(k.id)
+ if (se_obj) then
+ SIMBOARD:setup_squad_and_group(se_obj)
+ end
+ end
+ squad.current_target_id = self.id
+end
+
+function se_smart_terrain:on_reach_target(squad)
+ --utils_data.debug_write(strformat("%s:on_reach_target %s",self:name(),squad and squad:name()))
+ squad:set_location_types(self:name())
+ SIMBOARD:assign_squad_to_smart(squad, self.id)
+ for k in squad:squad_members() do
+ if db.offline_objects[k.id] ~= nil then
+ empty_table(db.offline_objects[k.id])
+ end
+
+ db.spawned_vertex_by_id[k.id] = nil
+ end
+end
+
+-- CALifeSmartTerrainTask
+function se_smart_terrain:get_alife_task()
+ return self.smart_alife_task
+end
+
+function smart_terrain_squad_count(board_smart_squads)
+ local count = 0
+ for id,v in pairs(board_smart_squads) do
+ local squad = alife_object(id)
+ if (squad and squad:get_script_target() == nil) then
+ count = count + 1
+ end
+ end
+ return count
+end
+
+function se_smart_terrain:sim_available()
+ return true
+end
+
+function surge_stats()
+end
+
+function se_smart_terrain:target_precondition(squad, ignore_population, skip_props)
+ --utils_data.debug_write(strformat("%s:target_precondition",squad and squad:name()))
+
+ -- commented out because smarts on other levels don't load job table and that means squads won't target them
+ -- if (self.job_count == 0) then
+ -- -- can't target a smart that doesn't have any simulation jobs available
+ -- return false
+ -- end
+
+ if self.respawn_only_smart == true then
+ return false
+ end
+
+ -- squad is already stayed here don't count population
+ if not (ignore_population) then
+ local squad_count = SIMBOARD.smarts[self.id].population -- smart_terrain_squad_count(SIMBOARD.smarts[self.id].squads)
+ if (squad_count and squad_count >= self.max_population) then
+ return false
+ end
+ end
+
+ if not (self.props) then
+ return false
+ end
+
+ local is_monster = is_squad_monster[squad.player_id]
+ if (is_monster) then
+ if (self.props.all > 0 or self.props.all_monster > 0 or self.props[squad.player_id] > 0) then
+ if (skip_props) and (self.props.lair > 0 or self.props.territory > 0) then
+ return true
+ end
+
+ -- lair
+ if (self.props.lair > 0 and sim_board.general_lair_precondition(squad,self)) then
+ return true
+ end
+
+ -- territory
+ if (self.props.territory > 0 and sim_board.general_territory_precondition(squad,self)) then
+ return true
+ end
+ end
+ elseif (squad.player_id == "zombied") then
+ if (self.props.all > 0 or self.props.all_stalker > 0 or self.props[squad.player_id] > 0) then
+ if (skip_props) and (self.props.territory > 0) then
+ return true
+ end
+
+ -- territory
+ if (self.props.territory > 0 and sim_board.general_territory_precondition(squad,self)) then
+ return true
+ end
+ end
+ else
+ if (self.props.all and self.props.all > 0) or (self.props.all_stalker and self.props.all_stalker > 0) or (self.props[squad.player_id] and self.props[squad.player_id] > 0) then
+ if (skip_props) and (self.props.base > 0 or self.props.resource > 0 or self.props.territory > 0) then
+ return true
+ end
+
+ -- surge
+ if (squad.player_id ~= "monolith" and xr_conditions.surge_started()) then
+ if (self.props.surge > 0) then
+ return true
+ end
+ return false
+ end
+
+ -- base
+ if (self.props.base > 0 and sim_board.general_base_precondition(squad,self)) then
+ return true
+ end
+
+ -- resource
+ if (self.props.resource > 0 and sim_board.general_resource_precondition(squad,self)) then
+ return true
+ end
+
+ -- territory
+ if (self.props.territory > 0 and sim_board.general_territory_precondition(squad,self)) then
+ return true
+ end
+ end
+ end
+
+ return false
+end
+
+function se_smart_terrain:evaluate_prior(squad)
+ return simulation_objects.evaluate_prior(self, squad)
+end
+
+local available_sects = {}
+function se_smart_terrain:try_respawn()
+ local flags = {
+ disabled = false
+ }
+ SendScriptCallback("on_try_respawn",self,flags)
+
+ if self.disabled or flags.disabled then
+ return
+ end
+
+ if (has_alife_info("actor_made_wish_for_peace")) then
+ return
+ end
+
+ if not (self.is_on_actor_level) then
+ if (self.respawn_only_level) then
+ return
+ end
+ end
+
+ --utils_data.debug_write(strformat("%s:try_respawn",self:name()))
+
+ if (self.is_on_actor_level and self.dist_to_actor ~= nil) then
+ if (self.dist_to_actor < self.respawn_radius) then
+ return
+ end
+ end
+
+ if not (self.respawn_params and self.already_spawned) then
+ return
+ end
+
+ -- simulation_objects.available_by_id[self.id] nil is unprocessed false is unavail
+ if (simulation_objects.available_by_id[self.id] == false) then
+ return
+ end
+
+ --[[
+ local squad_count = smart_terrain_squad_count(SIMBOARD.smarts[self.id].squads)
+ if self.max_population <= squad_count then
+ return
+ end
+ --]]
+
+ local curr_time = game.get_game_time()
+
+ -- first spawn after game load
+ --[[
+ if (self.last_respawn_update == nil and (math.random(1,100)/100) < 0.3) then
+ self.last_respawn_update = curr_time
+ return
+ end
+ --]]
+
+ -- SMR
+ local can_respawn = smr_pop.smart_can_respawn(self)
+ -- SMR END
+ if can_respawn then
+ self.last_respawn_update = curr_time
+
+ iempty_table(available_sects)
+ local size_t = 0
+
+ -- check self.faction
+ if not (self.faction) then
+ self.faction = self.default_faction
+ end
+
+ local max_respawn_count
+ -- SMR
+ local stalker_pop_factor = smr_pop.get_stalker_pop_factor()
+ local monster_pop_factor = smr_pop.get_monster_pop_factor()
+ -- SMR END
+ for k,v in pairs(self.respawn_params) do
+ if (v.num and self.already_spawned[k] and self.already_spawned[k].num) then
+ if (self.faction_controlled == nil) or (self.faction ~= nil and v.faction == self.faction) then
+
+ max_respawn_count = tonumber(xr_logic.pick_section_from_condlist(db.actor, self,v.num) or 0)
+
+ -- Tronex
+ -- Safer check for common squads
+ -- DPH / SMR
+ -- This doesn't work. "k" is the name of the spawn section, not a squad section
+ if (v["squads"]) then
+ -- Just take the first squad section to determine type. Not correct, but accurate in almost all cases
+ local k2 = v["squads"][1]
+ if ini_sys:r_bool_ex(k2,"common") then
+ -- almost all spawn sections with "zombied" in them have mutants as other spawns
+ if (s_find(k2,"simulation") or s_find(k2,"zombied")) then
+ max_respawn_count = round_idp(max_respawn_count*monster_pop_factor)
+ elseif (s_find(k2,"sim_squad")) then
+ max_respawn_count = round_idp(max_respawn_count*stalker_pop_factor)
+ end
+ end
+ end
+ -- DPH / SMR END
+
+
+ -- modifier for spawn chances
+ if max_respawn_count < 1 then
+ local respawn_chance = max_respawn_count*100
+ if (math.random(1,100) > respawn_chance) then
+ max_respawn_count = 0
+ end
+ end
+
+ if max_respawn_count > self.already_spawned[k].num then
+ size_t = size_t + 1
+ available_sects[size_t] = k
+ end
+ end
+ else
+ log("ERROR: %s Incorrect Respawn Params. respawn_params[%s].num=%s already_spawned[%s]=%s already_spawned[%s].num=%s",self:name(),k,v.num,k,type(self.already_spawned[k]),self.already_spawned[k] and self.already_spawned[k].num)
+ end
+ end
+
+ if size_t > 0 then
+ local sect_to_spawn = available_sects[math.random(1,size_t)]
+ local sect_to_spawn_params = self.respawn_params[sect_to_spawn]
+
+ if (sect_to_spawn_params.squads) then
+ local squad
+ local random_squad = sect_to_spawn_params.squads[math.random(1,#sect_to_spawn_params.squads)]
+
+ -- SMR
+ squad = smr_pop.smr_handle_spawn(random_squad, self)
+ -- SMR END
+
+ if (squad) then
+ squad.respawn_point_id = self.id
+ squad.respawn_point_prop_section = sect_to_spawn
+ for m in squad:squad_members() do
+ SIMBOARD:setup_squad_and_group(m.object)
+ end
+ else
+ -- SMR: just fills up the log needlessly in our case.
+ --printe("!ERROR: call respawn failed for %s, check squad descriptions",sect_to_spawn)
+ return
+ end
+
+ -- SMR
+ if (squad) then
+ smr_debug.get_log().info("smart", "setting up civil war relations for squad %s (smart: %s)", squad:section_name(), self:name())
+ smr_civil_war.setup_civil_war_squad(squad, self:name())
+ end
+ -- SMR END
+
+ elseif (sect_to_spawn_params.helicopter and ui_options.get("alife/general/heli_spawn")) then
+ local heli = sect_to_spawn_params.helicopter[math.random(1,#sect_to_spawn_params.helicopter)]
+ if (heli) then --if (heli and self.online) then
+ local pos = vector():set(level.get_bounding_volume().max.x,level.get_bounding_volume().min.y-50,level.get_bounding_volume().max.z)
+ local lvid = self.m_level_vertex_id
+ local gvid = self.m_game_vertex_id
+
+ local se_heli = alife_create(heli,pos,lvid,gvid)
+
+ local visual = ini_sys:r_string_ex(heli,"visual")
+ -- required to spawn by script
+ local data = utils_stpk.get_heli_data(se_heli)
+ if (data) then
+ data.visual_name = visual and visual ~="" and visual or [[dynamics\vehicles\mi2\veh_mi2_01]]
+ data.motion_name = [[helicopter\aaa.anm]]
+ data.startup_animation = "idle"
+ data.skeleton_name = "idle"
+ data.engine_sound = [[vehicles\helicopter\helicopter]]
+ utils_stpk.set_heli_data(data,se_heli)
+
+ self:register_npc(se_heli)
+ se_heli.respawn_point_id = self.id
+ se_heli.respawn_point_prop_section = sect_to_spawn
+ else
+ safe_release_manager.release(se_heli)
+ end
+ else
+ return
+ end
+ end
+ self.already_spawned[sect_to_spawn].num = self.already_spawned[sect_to_spawn].num + 1
+ end
+ end
+end
+
+------------
+local smart_names_table
+function get_smart_terrain_name(smart)
+ if not (smart_names_table) then
+ smart_names_table = {}
+ local names_ini = ini_file("misc\\smart_names.ltx")
+ for i=0,names_ini:line_count("levels")-1 do
+ temp1, level_name, temp2 = names_ini:r_line("levels", i, "", "")
+ if(names_ini:section_exist(level_name)) then
+ smart_names_table[level_name] = {}
+ for i=0,names_ini:line_count(level_name)-1 do
+ result, smart_name, value = names_ini:r_line(level_name, i, "", "")
+ smart_names_table[level_name][smart_name] = value
+ end
+ end
+ end
+ end
+ local level_name = alife():level_name(game_graph():vertex(smart.m_game_vertex_id):level_id())
+ local smart_name = smart:name()
+ if(smart_names_table[level_name]~=nil) and (smart_names_table[level_name][smart_name]~=nil) then
+ return game.translate_string(smart_names_table[level_name][smart_name])
+ end
+ return smart_name
+end
diff --git a/mods/Zone Customization Project/gamedata/scripts/smr_amain_mcm.script b/mods/Zone Customization Project/gamedata/scripts/smr_amain_mcm.script
new file mode 100644
index 00000000..a8303364
--- /dev/null
+++ b/mods/Zone Customization Project/gamedata/scripts/smr_amain_mcm.script
@@ -0,0 +1,43 @@
+local defaults = {
+ ["smr_enabled"] = true,
+ ["glitched_pda"] = false,
+ ["respawn_idle"] = 86400,
+}
+
+function get_config(key)
+ if ui_mcm then return ui_mcm.get("SMR/smr_amain/"..key) else return defaults[key] end
+end
+
+function level_present(r)
+ return (level.present() == r)
+end
+
+function on_mcm_load()
+ return { id="smr_amain", sh=true, gr={
+ { id="title_header", type="slide", link="ui_options_slider_mask", text="ui_mcm_menu_smr_amain", size= {512,50}, spacing=20 },
+ { id="persist_info_mm", type="desc", clr={200, 200, 200, 255}, text="ui_mcm_SMR_smr_amain_persist_info_mm", precondition={level_present, false} },
+ { id="persist_info_level", type="desc", clr={200, 200, 255, 200}, text="ui_mcm_SMR_smr_amain_persist_info_level", precondition={level_present, true} },
+ { id="tooltip_info", type="desc", text="ui_mcm_SMR_smr_amain_tooltip_info" },
+ { id="persist_divider", type="line" },
+ { id="smr_enabled", type="check", val=1, def=true},
+ { id="smr_debug_log", type="check", val=1, def=false},
+ { id="smr_persist_override", type="check", val=1, def=false},
+ { id="smr_enabled_divider", type="line" },
+ { id="respawn_idle", type="list", val=2, def=86400, content={
+ {10800,"smr_amain_respawn_idle_10800"},
+ {21600,"smr_amain_respawn_idle_21600"},
+ {43200,"smr_amain_respawn_idle_43200"},
+ {86400,"smr_amain_respawn_idle_86400"},
+ {172800,"smr_amain_respawn_idle_172800"},
+ {345600,"smr_amain_respawn_idle_345600"},
+ {604800,"smr_amain_respawn_idle_604800"},
+ {1209600, "smr_amain_respawn_idle_1209600"},
+ {-1, "smr_amain_respawn_idle_1"},
+ }},
+ { id="pop_factor_info", type="desc", clr={200, 125, 125, 125}, text="ui_mcm_SMR_smr_amain_pop_factor_info" },
+ { id="monster_pop_factor", type="track", val=2, min=0, max=3, step=0.05, def=0.5 },
+ { id="stalker_pop_factor", type="track", val=2, min=0, max=3, step=0.05, def=0.5 },
+ { id="pop_factor_divider", type="line" },
+ { id="glitched_pda", type="check", val=1, def=false},
+ }}, "SMR"
+end
\ No newline at end of file
diff --git a/mods/Zone Customization Project/gamedata/scripts/smr_anomalies_mcm.script b/mods/Zone Customization Project/gamedata/scripts/smr_anomalies_mcm.script
new file mode 100644
index 00000000..f1234e2e
--- /dev/null
+++ b/mods/Zone Customization Project/gamedata/scripts/smr_anomalies_mcm.script
@@ -0,0 +1,26 @@
+local defaults = {
+}
+
+function get_config(key)
+ if ui_mcm then return ui_mcm.get("SMR/smr_anomalies/"..key) else return defaults[key] end
+end
+
+function level_present(r)
+ return (level.present() == r)
+end
+
+function on_mcm_load()
+ return { id="smr_anomalies", sh=true, gr={
+ { id="title_header", type="slide", link="ui_options_slider_psi_storm", text="ui_mcm_menu_smr_anomalies", size= {512,50}, spacing=20 },
+ { id="dyn_ano_chance", type="track", val=2, min=1, max=100, step=1, def=35 },
+ { id="pulse", type="check", val=1, def=true},
+ { id="anomalies_types_divider", type="line" },
+ { id="anomalies_types_header", type="title", text="ui_mcm_smr_anomalies_anomalies_types_title", align="c" },
+ { id="anomalies_types_info", type="desc", clr={200, 125, 125, 125}, text="ui_mcm_SMR_smr_anomalies_anomalies_types_info", },
+ { id="electric", type="check", val=1, def=true},
+ { id="chemical", type="check", val=1, def=true},
+ { id="thermal", type="check", val=1, def=true},
+ { id="gravitational", type="check", val=1, def=true},
+ { id="radioactive", type="check", val=1, def=true},
+ }}, "SMR"
+end
\ No newline at end of file
diff --git a/mods/Zone Customization Project/gamedata/scripts/smr_civil_war.script b/mods/Zone Customization Project/gamedata/scripts/smr_civil_war.script
new file mode 100644
index 00000000..bb726f98
--- /dev/null
+++ b/mods/Zone Customization Project/gamedata/scripts/smr_civil_war.script
@@ -0,0 +1,231 @@
+--[[
+------------------------------------------------------------
+-- Survival Mode Remade - Civil War
+------------------------------------------------------------
+-- Sets up relations if Civil War is enabled.
+-- by dph-hcl
+------------------------------------------------------------
+]]--
+
+-- TODO: factor these out into ltx files
+local smart_bases = {
+ ["sim_smr_default"] = {
+ "pri_a18_smart_terrain",
+ "agr_smart_terrain_1_6",
+ "agr_smart_terrain_1_6_near_1",
+ "agr_smart_terrain_1_6_near_2",
+ "bar_dolg_bunker",
+ "bar_dolg_general",
+ "bar_visitors",
+ "bar_zastava",
+ "bar_zastava_2",
+ "cit_killers",
+ "cit_killers_2",
+ "mlr_terrain",
+ "ds2_domik_st",
+ "esc_smart_terrain_2_12",
+ "esc_smart_terrain_3_16",
+ "esc_smart_terrain_5_7",
+ "gar_smart_terrain_3_5",
+ "gar_smart_terrain_6_3",
+ "jup_a12",
+ "jup_a6",
+ "jup_b41",
+ "mar_smart_terrain_base",
+ "mar_smart_terrain_doc",
+ "mil_smart_terrain_7_10",
+ "mil_smart_terrain_7_8",
+ "mil_smart_terrain_7_7",
+ "mil_smart_terrain_7_12",
+ "pri_a15",
+ "pri_a16_mlr_copy",
+ "pri_a16",
+ "pri_a18_smart_terrain",
+ "pri_monolith",
+ "red_smart_terrain_4_2",
+ "red_smart_terrain_3_2",
+ "ros_smart_stalker_killers1",
+ "ros_smart_stalker1",
+ "trc_sim_20",
+ "val_smart_terrain_7_3",
+ "val_smart_terrain_7_4",
+ "val_smart_terrain_7_5",
+ "yan_smart_terrain_6_4",
+ "zat_b40_smart_terrain",
+ "zat_stalker_base_smart"
+ },
+ ["sim_smr_survival"] = {
+ "pri_a18_smart_terrain",
+ "agr_smart_terrain_1_6",
+ "agr_smart_terrain_1_6_near_1",
+ "agr_smart_terrain_1_6_near_2",
+ "bar_dolg_bunker",
+ "bar_dolg_general",
+ "bar_visitors",
+ "bar_zastava",
+ "bar_zastava_2",
+ "cit_killers",
+ "ds2_domik_st",
+ "esc_smart_terrain_2_12",
+ "esc_smart_terrain_3_16",
+ "gar_smart_terrain_3_5",
+ "jup_a12",
+ "jup_a6",
+ "jup_b41",
+ "mar_smart_terrain_base",
+ "mar_smart_terrain_doc",
+ "mil_smart_terrain_7_10",
+ "mil_smart_terrain_7_7",
+ "pri_monolith",
+ "trc_sim_20",
+ "val_smart_terrain_7_3",
+ "val_smart_terrain_7_4",
+ "val_smart_terrain_7_5",
+ "yan_smart_terrain_6_4",
+ "zat_b40_smart_terrain",
+ "zat_stalker_base_smart"
+ },
+ ["sim_smr_minimal"] = {
+ "bar_dolg_bunker",
+ "bar_dolg_general",
+ "bar_visitors",
+ "bar_zastava",
+ "bar_zastava_2",
+ "yan_smart_terrain_6_4",
+ "zat_stalker_base_smart"
+ },
+ ["sim_smr_none"] = {}
+}
+
+local civil_war_stalkers = {}
+
+function smart_is_base(smart)
+ local l = smart_bases[smr_stalkers_mcm.get_config("base_population")]
+ for i,n in ipairs(l) do
+ if smart == n then return true end
+ end
+ return false
+end
+
+local function setup_squad_relation(squad, member)
+ local sim = alife()
+ for k in squad:squad_members() do
+ if (member.id ~= k.id) then
+ local se_obj = sim:object(member.id)
+ local se_obj2 = sim:object(k.id)
+ smr_debug.get_log().info("civilwar/relations", "setting up squad relations between %s and %s in squad %s", se_obj:section_name(), se_obj2:section_name(), squad:section_name())
+ -- these are cse_alife_human_abstract objs, their implementation of force_set_goodwill takes an ID as parameter.
+ se_obj:force_set_goodwill(5000, se_obj2.id)
+ se_obj2:force_set_goodwill(5000, se_obj.id)
+ end
+ end
+end
+
+local function setup_stalker_relation(squad)
+ local sim = alife()
+ for k in squad:squad_members() do
+ local se_obj = sim:object(k.id)
+ if (not IsStalker(nil, se_obj:clsid())) then
+ smr_debug.get_log().info("civilwar/relations", "not a stalker: %s in squad %s", se_obj:section_name(), squad:section_name())
+ goto continue
+ end
+ smr_debug.get_log().info("civilwar/relations", "setting up relations for %s in squad %s", se_obj:section_name(), squad:section_name())
+ se_obj:force_set_goodwill(-5000, sim:object(0))
+ for i, n in ipairs(game_relations.factions_table) do
+ relation_registry.set_community_goodwill(n, k.id, -2000)
+ game_relations.change_factions_community_num(n, k.id, -2000)
+ end
+ if smr_stalkers_mcm.get_config("civil_war") == "civilwar_squads" then
+ setup_squad_relation(squad, k)
+ end
+ ::continue::
+ end
+ civil_war_stalkers[squad.id] = true
+end
+
+-- ---
+-- ENTRY POINTS
+-- ---
+
+-- simulation_board:fill_start_position()
+function setup_factions_relation()
+ if smr_stalkers_mcm.get_config("civil_war_monolith_allied") then
+ smr_debug.get_log().info("civilwar/relations", "monolith are allied")
+ relation_registry.set_community_relation("monolith", "monolith", 2000)
+ else
+ smr_debug.get_log().info("civilwar/relations", "monolith are enemies")
+ relation_registry.set_community_relation("monolith", "monolith", -5000)
+ end
+ if smr_stalkers_mcm.get_config("civil_war") == "civilwar_factions" then
+ apply_faction_civil_war()
+ end
+end
+
+-- smart_terrain.se_smart_terrain:try_respawn()
+function setup_civil_war_squad(squad, smart)
+ if (not smr_amain_mcm.get_config("smr_enabled")) or smr_stalkers_mcm.get_config("civil_war") == "civilwar_disabled" then
+ -- smr_debug.get_log().info("civilwar", "ZCP or civil war disabled, skipping setup")
+ return
+ end
+ if (not smr_stalkers_mcm.get_config("civil_war_base_population")) and smart_is_base(smart) then
+ smr_debug.get_log().info("civilwar/relations", "smart %s is base, skipping squad %s", smart, squad:section_name())
+ return
+ end
+ local faction = ini_sys:r_string_ex(squad:section_name(), "faction")
+ if is_squad_monster[faction] then
+ smr_debug.get_log().info("civilwar/relations", "skipping monster squad %s", squad:section_name())
+ return
+ end
+ setup_stalker_relation(squad)
+end
+
+function squad_on_npc_death(squad, npc, killer)
+ if not smr_amain_mcm.get_config("smr_enabled") then
+ return
+ end
+ if (not (killer.id == AC_ID) and civil_war_stalkers[squad.id]) then
+ return
+ end
+ local pf = db.actor:character_community()
+ local nf = squad:get_squad_community()
+ if game_relations.is_factions_enemies(pf, nf) then
+ smr_debug.get_log().info("civilwar/relations", "actor killed enemy stalker %s", squad:section_name())
+ return
+ elseif game_relations.is_factions_friends(pf, nf) then
+ smr_debug.get_log().info("civilwar/relations", "actor killed friendly stalker %s", squad:section_name())
+ db.actor:change_character_reputation(100)
+ else
+ smr_debug.get_log().info("civilwar/relations", "actor killed neutral stalker %s", squad:section_name())
+ db.actor:change_character_reputation(75)
+ end
+ if (squad:npc_count() == 0) then
+ smr_debug.get_log().info("civilwar/relations", "actor killed last member of squad %s", squad:section_name())
+ civil_war_stalkers[squad.id] = nil
+ end
+end
+
+local function save_state(data)
+ if not (data.smr_civil_war) then
+ data.smr_civil_war = {}
+ end
+ data.smr_civil_war.civil_war_stalkers = civil_war_stalkers
+end
+
+local function load_state(data)
+ if not (data.smr_civil_war) then
+ return
+ end
+ civil_war_stalkers = data.smr_civil_war.civil_war_stalkers or {}
+ data.smr_civil_war.civil_war_stalkers = {}
+end
+
+function on_game_start()
+ if (not smr_amain_mcm.get_config("smr_enabled")) or smr_stalkers_mcm.get_config("civil_war") == "civilwar_disabled" then
+ smr_debug.get_log().info("civilwar", "Civil War disabled")
+ return
+ end
+ setup_factions_relation()
+ RegisterScriptCallback("save_state", save_state)
+ RegisterScriptCallback("load_state", load_state)
+ RegisterScriptCallback("squad_on_npc_death", squad_on_npc_death)
+end
\ No newline at end of file
diff --git a/mods/Zone Customization Project/gamedata/scripts/smr_config.script b/mods/Zone Customization Project/gamedata/scripts/smr_config.script
new file mode 100644
index 00000000..a1afdf5d
--- /dev/null
+++ b/mods/Zone Customization Project/gamedata/scripts/smr_config.script
@@ -0,0 +1,62 @@
+--[[
+------------------------------------------------------------
+-- Survival Mode Remade - Persistent configuration per savefile
+------------------------------------------------------------
+-- Saves/Load configuration state to/from savefile.
+-- by dph-hcl
+------------------------------------------------------------
+]]--
+
+local collection = "SMR"
+local modules = {
+ "smr_amain",
+ "smr_loot",
+ "smr_zzintegration",
+ "smr_zombies",
+ "smr_stalkers",
+}
+
+local function load_state(data)
+ if smr_amain_mcm.get_config("smr_persist_override") then
+ return
+ end
+ local t = axr_main.config:collect_section("mcm")
+ for p, v in pairs(t) do
+ for i, m in ipairs(modules) do
+ if not data[m] then
+ goto continue
+ end
+ local pp = str_explode(p, "/")
+ if (pp[1] and pp[1] == collection)
+ and (pp[2] and pp[2] == m)
+ and (pp[3])
+ then
+ ui_mcm.set(p, (data[m][p] or false))
+ end
+ ::continue::
+ end
+ end
+end
+
+local function save_state(data)
+ local t = axr_main.config:collect_section("mcm")
+ for p, v in pairs(t) do
+ for i, m in ipairs(modules) do
+ if not data[m] then
+ data[m] = {}
+ end
+ local pp = str_explode(p, "/")
+ if (pp[1] and pp[1] == collection)
+ and (pp[2] and pp[2] == m)
+ and (pp[3])
+ then
+ data[m][p] = ui_mcm.get(p)
+ end
+ end
+ end
+end
+
+function on_game_start()
+ RegisterScriptCallback("save_state", save_state)
+ RegisterScriptCallback("load_state", load_state)
+end
\ No newline at end of file
diff --git a/mods/Zone Customization Project/gamedata/scripts/smr_debug.script b/mods/Zone Customization Project/gamedata/scripts/smr_debug.script
new file mode 100644
index 00000000..9f5dd9d9
--- /dev/null
+++ b/mods/Zone Customization Project/gamedata/scripts/smr_debug.script
@@ -0,0 +1,37 @@
+local log = false
+
+function get_log()
+ if (log == false) and (dph_debug_log) then
+ local log_config = {
+ ["file"] = "dph_zcp.log",
+ ["targets"] = {
+ -- ["log"] = 1,
+ ["gamelog"] = 1,
+ }
+ }
+ local modules = {
+ "loot",
+ "integration",
+ "population",
+ "civilwar",
+ "smart",
+ "simboard",
+ "anomalies"
+ }
+ log = dph_debug_log.new(log_config, modules)
+ if (smr_amain_mcm.get_config("smr_debug_log")) then
+ log.enable()
+ end
+ end
+ return log
+end
+
+function on_option_change()
+ if smr_amain_mcm.get_config("smr_debug_log") then
+ log.enable()
+ else
+ log.disable()
+ end
+end
+
+RegisterScriptCallback("on_option_change", on_option_change)
\ No newline at end of file
diff --git a/mods/Zone Customization Project/gamedata/scripts/smr_loot.script b/mods/Zone Customization Project/gamedata/scripts/smr_loot.script
new file mode 100644
index 00000000..4b4724c0
--- /dev/null
+++ b/mods/Zone Customization Project/gamedata/scripts/smr_loot.script
@@ -0,0 +1,461 @@
+--[[
+------------------------------------------------------------
+-- Survival Mode Remade - Extra items from stash boxes
+------------------------------------------------------------
+-- MCM-configurable script to give the player a chance to get some extra items whenever they open a stash box.
+-- by dph-hcl
+------------------------------------------------------------
+]]--
+
+-- REPAIR KITS
+local repair_tier1 = {
+ "glue_a",
+ "glue_b",
+ "glue_e",
+ "gun_oil",
+ "gun_oil_ru",
+ "gun_oil_ru_d",
+ "armor_repair_fa",
+ "sharpening_stones",
+}
+
+local repair_tier2 = {
+ "sharpening_stones",
+ "cleaning_kit_p",
+ "cleaning_kit_s",
+ "cleaning_kit_r5",
+ "cleaning_kit_r7",
+ "sewing_kit_b",
+ "sewing_kit_a",
+}
+
+local repair_tier3 = {
+ "cleaning_kit_u",
+ "toolkit_p",
+ "toolkit_s",
+ "sewing_kit_h",
+ "medium_repair_kit",
+ "helmet_repair_kit",
+ "light_repair_kit",
+}
+
+local repair_tier4 = {
+ "toolkit_r5",
+ "toolkit_r7",
+ "heavy_repair_kit",
+ "exo_repair_kit",
+}
+
+-- BASIC AMMO
+local basic_ammo = {
+ "ammo_11.43x23_fmj",
+ "ammo_12x70_buck",
+ "ammo_7.62x25_p",
+ "ammo_12x76_zhekan",
+ "ammo_5.45x39_fmj",
+ "ammo_5.45x39_ep",
+ "ammo_5.56x45_fmj",
+ "ammo_5.56x45_ss190",
+ "ammo_9x18_fmj",
+ "ammo_9x19_fmj",
+ "ammo_11.43x23_hydro",
+ "ammo_12x76_dart",
+ "ammo_7.62x25_ps",
+ "ammo_5.45x39_ap",
+ "ammo_5.56x45_ap",
+ "ammo_9x18_ap",
+ "ammo_9x18_pmm",
+ "ammo_9x19_ap",
+ "ammo_9x19_pbp",
+}
+
+-- ADVANCED AMMO
+local advanced_ammo = {
+ "ammo_357_hp_mag",
+ "ammo_7.62x39_fmj",
+ "ammo_7.62x51_fmj",
+ "ammo_7.62x54_7h1",
+ "ammo_9x39_pab9",
+ "ammo_7.62x39_ap",
+ "ammo_7.62x51_ap",
+ "ammo_7.62x54_7h14",
+ "ammo_7.62x54_ap",
+ "ammo_9x39_ap",
+}
+
+-- EXOTIC AMMO
+local exotic_ammo = {
+ "ammo_12.7x55_fmj",
+ "ammo_4.6x30_fmj",
+ "ammo_5.7x28_ss195",
+ "ammo_7.92x33_fmj",
+ "ammo_m209",
+ "ammo_vog-25",
+ "ammo_12.7x55_ap",
+ "ammo_5.7x28_ss190",
+ "ammo_50_bmg",
+ "ammo_7.92x33_ap",
+ "ammo_magnum_300",
+ "ammo_pkm_100",
+ "ammo_gauss",
+}
+
+-- USEFUL ITEMS
+local useful_tier1 = {
+ "device_torch_dummy",
+ "batteries_dead", "batteries_dead", "batteries_dead",
+ "detector_simple",
+ "af_iam",
+ "itm_sleepbag",
+ "wpn_knife2",
+ "wpn_axe",
+ "kit_hunt",
+ "wpn_binoc_inv",
+ "itm_actor_backpack",
+ "leatherman_tool",
+ "itm_sleepbag",
+ "equ_small_pack",
+ "af_aac",
+}
+
+local useful_tier2 = {
+ "device_torch_nv_1",
+ "detector_advanced",
+ "wpn_knife3",
+ "wpn_axe2",
+ "equ_small_military_pack",
+ "itm_tent",
+}
+
+local useful_tier3 = {
+ "device_torch_nv_2",
+ "detector_scientific",
+ "wpn_knife4",
+ "wpn_knife5",
+ "wpn_axe3",
+ "equ_military_pack",
+}
+
+local useful_tier4 = {
+ "device_torch_nv_3",
+ "detector_elite",
+ "af_aam",
+ "equ_tourist_pack",
+}
+
+-- MEDICAL ITEMS
+
+local meds_tier1 = {
+ "bandage",
+ "caffeine",
+ "drug_sleepingpills",
+ "drug_coagulant",
+ "yadylin",
+ "medkit",
+ "jgut",
+ "glucose_s",
+ "antirad",
+ "antirad_cystamine",
+}
+
+local meds_tier2 = {
+ "medkit_army",
+ "stimpack",
+ "salicidic_acid",
+ "glucose",
+ "drug_psy_blockade",
+ "antirad_kalium",
+ "medkit_ai1",
+ "akvatab",
+}
+
+local meds_tier3 = {
+ "medkit_scientic",
+ "stimpack_army",
+ "morphine",
+ "drug_radioprotector",
+ "medkit_ai3",
+ "adrenalin",
+ "drug_anabiotic",
+}
+
+local meds_tier4 = {
+ "stimpack_scientic",
+ "survival_kit",
+ "medkit_ai2",
+}
+
+local lootboxes_tier1 = {
+ "lootbox_1",
+ "lootbox_11",
+ "lootbox_2",
+ "lootbox_5",
+ "lootbox_51",
+}
+
+local lootboxes_tier2 = {
+ "lootbox_7",
+ "lootbox_4",
+ "lootbox_41",
+ "lootbox_6",
+ "lootbox_61",
+ "lootbox_71",
+ "lootbox_3",
+}
+
+local lootboxes_tier3 = {
+ "lootbox_8",
+ "lootbox_81",
+ "lootbox_9",
+}
+
+
+-- table of already looted boxes
+local boxes = {}
+-- table of already looted npcs
+local npcs = {}
+
+local pda_msg_status = true
+
+local function pda_message(type)
+ local strs = {
+ ["repair"] = "st_smr_loot_found_repair",
+ ["ammo"] = "st_smr_loot_found_ammo",
+ ["meds"] = "st_smr_loot_found_meds",
+ ["useful"] = "st_smr_loot_found_useful",
+ ["mags"] = "st_smr_loot_found_mags",
+ ["lootbox"] = "st_smr_loot_found_lootbox",
+
+ }
+ if (not smr_loot_mcm.get_config("send_message")) or (not pda_msg_status) then
+ return
+ end
+ db.actor:give_game_news(game.translate_string(strs[type]), "", "ui_inGame2_Polucheni_koordinaty_taynika", 0, 3000)
+ smr_debug.get_log().info("loot/general", "PDA message sent: %s", strs[type])
+ xr_sound.set_sound_play(AC_ID, "pda_tips")
+end
+
+-- creates an item with a random amount of uses or condition
+local function create_item_random_uses(i, box)
+ smr_debug.get_log().info("loot/general", "Creating item with random uses: %s", i)
+ local max_uses = ini_sys:r_float_ex(i, "max_uses")
+ local se_item = alife_create_item(i, box)
+ if max_uses then
+ alife_process_item(i, se_item.id, {uses = (math.random(1, max_uses))})
+ elseif utils_item.is_degradable(nil, se_item.id) then
+ alife_process_item(i, se_item.id, {cond = (math.random(50,100)/100)})
+ end
+end
+
+local function roll_item_tiered(t, box)
+ local r = math.random(1,100)
+ table.sort(t, function(a, b) return a[1] > b[1] end)
+ for i, n in ipairs(t) do
+ if (r >= n[1]) then
+ local itm = n[2][math.random(#n[2])]
+ smr_debug.get_log().info("loot/rolls", "Rolled succesfully for %s (%s >= %s)", itm, r, n[1])
+ create_item_random_uses(itm, box)
+ return true
+ end
+ end
+ return false
+end
+
+function try_spawn_lootbox(box)
+ if math.random(1,100) <= smr_zzintegration_mcm.get_config("lootboxes_chance") then
+ pda_message("lootbox")
+ local tbl = {
+ { 90, lootboxes_tier3},
+ { 50, lootboxes_tier2},
+ { 0, lootboxes_tier1},
+ }
+ roll_item_tiered(tbl, box)
+ end
+end
+
+function try_spawn_mag(box)
+ if math.random(1,100) <= smr_zzintegration_mcm.get_config("mags_redux_chance") then
+ smr_debug.get_log().info("integration", "Rolling for magazine")
+ local mags = {}
+ for i=1,3 do
+ local wpn = db.actor:item_in_slot(i)
+ if wpn and magazine_binder.is_supported_weapon(wpn) then
+ mags = magazine_binder.get_mags_for_basetype(magazine_binder.get_weapon_base_type(wpn))
+ end
+ end
+ if (next(mags) == nil) then
+ return
+ end
+ pda_message("mags")
+ alife_create_item(mags[math.random(#mags)], box)
+ end
+end
+
+-- rolls for a repair kit, and spawns if sucessful
+function try_spawn_repair(box)
+ if math.random(1,100) <= smr_loot_mcm.get_config("repair_chance") then
+ pda_message("repair")
+ local tbl = {
+ { 90, repair_tier4},
+ { 50, repair_tier3},
+ { 0, repair_tier2},
+ }
+ roll_item_tiered(tbl, box)
+ end
+end
+
+function try_spawn_repair_minor(box)
+ if math.random(1,100) <= smr_loot_mcm.get_config("repair_minor_chance") then
+ pda_message("repair")
+ create_item_random_uses(repair_tier1[math.random(#repair_tier1)], box)
+ end
+end
+
+-- rolls for ammo, and spawns if sucessful
+function try_spawn_ammo(box)
+ if math.random(1,100) <= smr_loot_mcm.get_config("ammo_chance") then
+ pda_message("ammo")
+ local r = math.random(1,100)
+ if r > 90 then create_ammo(exotic_ammo[math.random(#exotic_ammo)], box)
+ elseif r > 60 then create_ammo(advanced_ammo[math.random(#advanced_ammo)], box)
+ else create_ammo(basic_ammo[math.random(#basic_ammo)], box)end
+ end
+end
+
+-- rolls for an medical item, and spawns if sucessful
+function try_spawn_meds(box)
+ if math.random(1,100) <= smr_loot_mcm.get_config("meds_chance") then
+ pda_message("meds")
+ local tbl = {
+ { 90, meds_tier4},
+ { 70, meds_tier3},
+ { 40, meds_tier2},
+ { 0, meds_tier1},
+ }
+ roll_item_tiered(tbl, box)
+ end
+end
+
+-- rolls for a useful item, and spawns if sucessful
+function try_spawn_useful(box)
+ local f = factor or 1
+ if math.random(1,100) <= smr_loot_mcm.get_config("useful_chance") then
+ pda_message("useful")
+ local tbl = {
+ { 90, useful_tier4},
+ { 70, useful_tier3},
+ { 40, useful_tier2},
+ { 0, useful_tier1},
+ }
+ roll_item_tiered(tbl, box)
+ end
+end
+
+-- creates a random amount of ammo in a box
+function create_ammo(i, box)
+ local se_item
+ if smr_loot_mcm.get_config("ammo_bad_spawn") and (math.random(1,100) <= smr_loot_mcm.get_config("ammo_bad_chance"))
+ then se_item = alife_create_item(i .. "_bad", box)
+ else se_item = alife_create_item(i, box) end
+ local bs = ini_sys:r_float_ex(i, "box_size") or 10
+ local r = math.ceil(math.random(bs/2, bs*2) * smr_loot_mcm.get_config("ammo_amount"))
+ alife_process_item(i, se_item.id, {ammo = r})
+end
+
+function try_spawn(box)
+ if smr_zzintegration_mcm.get_config("mags_redux") and magazines then smr_loot.try_spawn_mag(box) end
+ if smr_zzintegration_mcm.get_config("lootboxes") and arti_lootboxes_mcm then smr_loot.try_spawn_lootbox(box) end
+ if smr_loot_mcm.get_config("repair_spawn") then smr_loot.try_spawn_repair(box) end
+ if smr_loot_mcm.get_config("repair_minor_spawn") then smr_loot.try_spawn_repair_minor(box) end
+ if smr_loot_mcm.get_config("ammo_spawn") then smr_loot.try_spawn_ammo(box) end
+ if smr_loot_mcm.get_config("useful_spawn") then smr_loot.try_spawn_useful(box) end
+ if smr_loot_mcm.get_config("meds_spawn") then smr_loot.try_spawn_meds(box) end
+end
+-- ---
+-- ENTRY POINTS
+-- ---
+
+-- callback, used to write box table to save
+local function save_state(data)
+ if not (data.smr_loot) then
+ data.smr_loot = {}
+ end
+ data.smr_loot.npcs = npcs
+ data.smr_loot.boxes = boxes
+end
+
+-- callback, used to load box table from save
+local function load_state(data)
+ if not (data.smr_loot) then
+ return
+ end
+ boxes = data.smr_loot.boxes or {}
+ data.smr_loot.boxes = {}
+ npcs = data.smr_loot.npcs or {}
+ data.smr_loot.npcs = {}
+end
+-- callback, when opening boxes
+local function physic_object_on_use_callback(box)
+ local id = box:id()
+ local player_stashes = alife_storage_manager.get_state().player_created_stashes
+ if (id and boxes and boxes[id]) or (player_stashes and player_stashes[id]) then
+ return
+ end
+ if (IsInvbox(box)) then
+ try_spawn(box)
+ boxes[id] = true
+ end
+end
+
+local function npc_on_death_callback(obj, who)
+ local id = obj:id()
+ if id and npcs and npcs[id] then
+ return
+ end
+ if math.random(1,100) <= smr_loot_mcm.get_config("npc_chance") then
+ pda_msg_status = false
+ try_spawn(obj)
+ pda_msg_status = true
+ npcs[id] = true
+ end
+end
+
+-- register callback for box opening
+local function actor_on_first_update()
+ if smr_amain_mcm.get_config("smr_enabled") then
+ RegisterScriptCallback("physic_object_on_use_callback", physic_object_on_use_callback)
+ if smr_loot_mcm.get_config("npc_spawn") then
+ RegisterScriptCallback("npc_on_death_callback", npc_on_death_callback)
+ end
+ end
+end
+
+-- register callbacks for saving/loading
+function on_game_start()
+ if not smr_amain_mcm.get_config("smr_enabled") then
+ return
+ end
+ if smr_zzintegration_mcm.get_config("glowsticks") and zz_glowstick_mcm then
+ table.insert(useful_tier1, "device_glowstick_orange")
+ table.insert(useful_tier1, "device_glowstick_red")
+ table.insert(useful_tier1, "device_glowstick_blue")
+ table.insert(useful_tier1, "device_glowstick")
+ end
+ if smr_zzintegration_mcm.get_config("lootboxes") and arti_lootboxes_mcm then
+ table.insert(useful_tier1, "lockpick")
+ table.insert(useful_tier1, "bundle_lockpick")
+ table.insert(useful_tier2, "lockpick_set")
+ table.insert(useful_tier4, "skeleton_key")
+ end
+ if smr_loot_mcm.get_config("repair_parts_spawn") then
+ table.insert(repair_tier1, "ramrod_tool")
+ table.insert(repair_tier1, "rasp_tool")
+ table.insert(repair_tier1, "sewing_thread")
+ table.insert(repair_tier2, "heavy_sewing_thread")
+ end
+
+ RegisterScriptCallback("save_state", save_state)
+ RegisterScriptCallback("load_state", load_state)
+ RegisterScriptCallback("npc_on_death_callback", npc_on_death_callback)
+ RegisterScriptCallback("actor_on_first_update", actor_on_first_update)
+end
\ No newline at end of file
diff --git a/mods/Zone Customization Project/gamedata/scripts/smr_loot_mcm.script b/mods/Zone Customization Project/gamedata/scripts/smr_loot_mcm.script
new file mode 100644
index 00000000..5618c6b2
--- /dev/null
+++ b/mods/Zone Customization Project/gamedata/scripts/smr_loot_mcm.script
@@ -0,0 +1,55 @@
+local defaults = {
+ ["send_message"] = true,
+ ["npc_spawn"] = true,
+ ["npc_chance"] = 10,
+ ["repair_spawn"] = false,
+ ["repair_parts_spawn"] = true,
+ ["repair_chance"] = 15,
+ ["ammo_spawn"] = false,
+ ["ammo_chance"] = 20,
+ ["ammo_bad_spawn"] = true,
+ ["ammo_bad_chance"] = 50,
+ ["ammo_amount"] = 1,
+ ["useful_spawn"] = false,
+ ["useful_chance"] = 10,
+ ["random_items"] = 0.5,
+}
+
+function get_config(key)
+ if ui_mcm then return ui_mcm.get("SMR/smr_loot/"..key) else return defaults[key] end
+end
+
+function on_mcm_load()
+ return { id="smr_loot", sh=true, gr={
+ { id="header", type="slide", link="ui_options_slider_economy_diff", text="ui_mcm_menu_smr_loot", size= {512,50}, spacing=20 },
+ { id="random_items", type="track", val=2, min=0, max=1, step=0.05, def=0.5},
+ { id="loot_divider", type="line" },
+ { id="general_info", type="desc", text="ui_mcm_SMR_smr_loot_general_info", },
+ { id="send_message", type="check", val=1, def=true},
+ { id="npc_spawn", type="check", val=1, def=true},
+ { id="npc_chance", type="track", val=2, min=1, max=100, step=1, def=10 },
+ -- repair
+ { id="repair_divider", type="line" },
+ { id="repair_spawn", type="check", val=1, def=false},
+ { id="repair_chance", type="track", val=2, min=1, max=100, step=1, def=5 },
+ { id="repair_minor_divider", type="line" },
+ { id="repair_minor_spawn", type="check", val=1, def=true},
+ { id="repair_parts_spawn", type="check", val=1, def=true},
+ { id="repair_minor_chance", type="track", val=2, min=1, max=100, step=1, def=15 },
+ -- useful items
+ { id="useful_divider", type="line" },
+ { id="useful_spawn", type="check", val=1, def=false},
+ { id="useful_chance", type="track", val=2, min=1, max=100, step=1, def=10 },
+ -- meds
+ { id="meds_divider", type="line" },
+ { id="meds_spawn", type="check", val=1, def=false},
+ { id="meds_chance", type="track", val=2, min=1, max=100, step=1, def=15 },
+ -- ammo
+ { id="ammo_divider", type="line" },
+ { id="ammo_spawn", type="check", val=1, def=false},
+ { id="ammo_chance", type="track", val=2, min=1, max=100, step=1, def=20 },
+ { id="ammo_amount", type="track", val=2, min=0.1, max=3, step=0.1, def=1 },
+ { id="ammo_bad_spawn", type="check", val=1, def=true},
+ { id="ammo_bad_chance", type="track", val=2, min=1, max=100, step=1, def=50 },
+ }}, "SMR"
+end
\ No newline at end of file
diff --git a/mods/Zone Customization Project/gamedata/scripts/smr_monkey_glitch_tab.script b/mods/Zone Customization Project/gamedata/scripts/smr_monkey_glitch_tab.script
new file mode 100644
index 00000000..57dbb3e6
--- /dev/null
+++ b/mods/Zone Customization Project/gamedata/scripts/smr_monkey_glitch_tab.script
@@ -0,0 +1,9 @@
+SetActiveSubdialog = pda.set_active_subdialog
+
+pda.set_active_subdialog = function(section)
+ if smr_amain_mcm.get_config("smr_enabled") and smr_amain_mcm.get_config("glitched_pda") then
+ return ui_pda_glitched_tab.get_ui()
+ end
+
+ return SetActiveSubdialog(section)
+end
\ No newline at end of file
diff --git a/mods/Zone Customization Project/gamedata/scripts/smr_mutants_mcm.script b/mods/Zone Customization Project/gamedata/scripts/smr_mutants_mcm.script
new file mode 100644
index 00000000..4de74b0b
--- /dev/null
+++ b/mods/Zone Customization Project/gamedata/scripts/smr_mutants_mcm.script
@@ -0,0 +1,59 @@
+local defaults = {
+}
+
+function get_config(key)
+ if ui_mcm then return ui_mcm.get("SMR/smr_mutants/"..key) else return defaults[key] end
+end
+
+function on_mcm_load()
+ return { id="smr_mutants", sh=true, gr={
+ { id="title_header", type="slide", link="ui_options_slider_weather_foggy", text="ui_mcm_menu_smr_mutants", size= {512,50}, spacing=20 },
+ { id="squad_size", type="track", val=2, min=0.1, max=5, step=0.1, def=1 },
+ { id="squad_size_variance", type="track", val=2, min=0, max=3, step=0.1, def=0 },
+ { id="squad_size_divider", type="line" },
+ { id="random_mutants", type="check", val=1, def=false },
+ { id="random_mutants_chance", type="track", val=2, min=1, max=100, step=1, def=10 },
+ { id="types_divider", type="line" },
+ { id="types_header", type="title", text="ui_mcm_smr_mutants_types_title", align="c" },
+ { id="types_info", type="desc", clr={200, 125, 125, 125}, text="ui_mcm_SMR_smr_mutants_types_info", },
+ { id="types_replace_squads", type="check", val=1, def=false },
+ { id="types_replace_divider", type="line" },
+ { id="dogp", type="check", val=1, def=true},
+ { id="psydogp", type="check", val=1, def=true},
+ { id="ratp", type="check", val=1, def=true},
+ { id="tushkanop", type="check", val=1, def=true},
+ { id="zombiep", type="check", val=1, def=true},
+ { id="fracturep", type="check", val=1, def=true},
+ { id="catp", type="check", val=1, def=true},
+ { id="fleshp", type="check", val=1, def=true},
+ { id="boarp", type="check", val=1, def=true},
+ { id="snorkp", type="check", val=1, def=true},
+ { id="psysuckerp", type="check", val=1, def=true},
+ { id="bloodsuckerp", type="check", val=1, def=true},
+ { id="lurkerp", type="check", val=1, def=true},
+ { id="karlikp", type="check", val=1, def=true},
+ { id="burerp", type="check", val=1, def=true},
+ { id="poltergeistp", type="check", val=1, def=true},
+ { id="controllerp", type="check", val=1, def=true},
+ { id="chimerap", type="check", val=1, def=true},
+ { id="gigantp", type="check", val=1, def=true},
+ { id="unused_divider", type="line" },
+ { id="unused_header", type="title", text="ui_mcm_smr_mutants_unused_title", align="c" },
+ { id="unused_info", type="desc", clr={200, 125, 125, 125}, text="ui_mcm_smr_mutants_unused_info", },
+ { id="bibliotekarp", type="check", val=1, def=false},
+ { id="boryap", type="check", val=1, def=false},
+ { id="unused_types_info", type="desc", clr={200, 125, 125, 125}, text="ui_mcm_smr_mutants_unused_types_info", },
+ { id="unused_types_chance", type="track", val=2, min=1, max=100, step=1, def=20 },
+ { id="bloodsucker_strong_bigp", type="check", val=1, def=false},
+ { id="burer_electrap", type="check", val=1, def=false},
+ { id="burer_firerp", type="check", val=1, def=false},
+ { id="flesh_bolotp", type="check", val=1, def=false},
+ { id="gigant_jumperp", type="check", val=1, def=false},
+ { id="snork_no_maskp", type="check", val=1, def=false},
+ { id="zombie_babkap", type="check", val=1, def=false},
+ { id="zombie_gholp", type="check", val=1, def=false},
+ { id="zombie_ghostp", type="check", val=1, def=false},
+ { id="zombie_tetap", type="check", val=1, def=false},
+ { id="zombie_wichp", type="check", val=1, def=false},
+ }}, "SMR"
+end
diff --git a/mods/Zone Customization Project/gamedata/scripts/smr_pop.script b/mods/Zone Customization Project/gamedata/scripts/smr_pop.script
new file mode 100644
index 00000000..4cf17300
--- /dev/null
+++ b/mods/Zone Customization Project/gamedata/scripts/smr_pop.script
@@ -0,0 +1,412 @@
+--[[
+------------------------------------------------------------
+-- Survival Mode Remade - Setup Zone population and manage smart terrain spawms
+------------------------------------------------------------
+-- by dph-hcl
+------------------------------------------------------------
+]]--
+
+local zombie_spawn_table = {}
+local zombie_spawn_cfg = {
+ ["zombifiedp"] = { "zombied_sim_squad_novice", "zombied_sim_squad_advanced", "zombied_sim_squad_veteran" },
+ ["fracturep"] = { "simulation_fracture" },
+ ["snorkp"] = { "simulation_snork" },
+ ["bloodsuckerp"] = { "simulation_bloodsucker" },
+ ["psysuckerp"] = { "simulation_psysucker" },
+ ["blindp"] = { "simulation_zombie_blind_3zomb_civ", "simulation_zombie_blind_3zomb" },
+}
+
+
+local faction_spawn_table = {}
+local faction_spawn_cfg = {
+ "stalker", "bandit", "csky", "duty", "freedom", "merc", "army", "ecolog", "monolith", "renegade", "greh", "isg", "zombied"
+}
+
+local retarded_squad_names = {
+ ["duty_sim_squad_alpha"] = "dolg_sim_squad_alpha",
+ ["merc_sim_squad_alpha"] = "killer_sim_squad_alpha",
+ ["duty_sim_squad_trader"] = "dolg_sim_squad_trader",
+ ["duty_sim_squad_medic"] = "dolg_sim_squad_medic",
+ ["duty_sim_squad_barman"] = "dolg_sim_squad_barman",
+ ["duty_sim_squad_mechanic"] = "dolg_sim_squad_mechanic",
+}
+
+local mutant_spawn_table = {}
+local mutant_spawn_cfg = {
+ ["psysucker_"] = "psysuckerp",
+ ["bloodsucker_"] = "bloodsuckerp",
+ ["boar_"] = "boarp",
+ ["snork_"] = "snorkp",
+ ["chimera_"] = "chimerap",
+ ["m_controller_"] = "controllerp",
+ ["dog_"] = "dogp",
+ ["tushkano_"] = "tushkanop",
+ ["pseudodog_"] = "dogp",
+ ["fracture_"] = "fracturep",
+ ["lurker_"] = "lurkerp",
+ ["cat_"] = "catp",
+ ["psy_dog_"] = "psydogp",
+ ["m_karlik_"] = "karlikp",
+ ["burer_"] = "burerp",
+ ["m_poltergeist_"] = "poltergeistp",
+ ["gigant_"] = "gigantp",
+ ["flesh_"] = "fleshp",
+ ["rat_"] = "ratp",
+ ["zombie_"] = "zombiep",
+ ["borya_"] = "boryap",
+ ["bibliotekar_"] = "bibliotekarp",
+}
+
+local unused_mutant_spawn_table = {}
+local unused_mutant_spawn_cfg = {
+ ["bloodsucker_strong_bigp"] = { "bloodsucker_strong_big" },
+ ["burer_electrap"] = { "burer_electra" },
+ ["burer_firerp"] = { "burer_fire" },
+ ["flesh_bolotp"] = { "flesh_bolot", "flesh_bolot1" },
+ ["gigant_jumperp"] = { "gigant_jumper" },
+ ["snork_no_maskp"] = { "snork_normal_no_mask", "snork_strong_no_mask", "snork_weak_no_mask" },
+ ["zombie_babkap"] = { "zombi_babka_1", "zombi_babka_2", "zombi_babka_3" },
+ ["zombie_gholp"] = { "zombie_ghol" },
+ ["zombie_ghostp"] = { "zombie_ghost" },
+ ["zombie_tetap"] = { "zombie_teta" },
+ ["zombie_wichp"] = { "zombie_wich" },
+}
+
+local mutant_spawn_squads = {}
+
+
+local function please_die_sid()
+ local ids = {"red_forester_tech", "esc_m_trader"}
+ for i, n in ipairs(ids) do
+ smr_debug.get_log().info("population", "removing story object %s", n)
+ local so = get_story_object_id(n)
+ if so then alife_release_id(so) end
+ end
+end
+
+function get_mutant_spawn_squads()
+ if next(mutant_spawn_squads) == nil then
+ local ini = ini_file("plugins\\zcp\\squads_by_type.ltx")
+ for m, c in pairs(mutant_spawn_cfg) do
+ if (smr_mutants_mcm.get_config(c) == true) then
+ local squads = smr_utils.ini_lines_to_table(ini, c)
+ for i, v in ipairs(squads) do
+ table.insert(mutant_spawn_squads, v)
+ end
+ end
+ end
+ end
+ return mutant_spawn_squads
+end
+
+function get_unused_mutant_spawn_table()
+ if next(unused_mutant_spawn_table) == nil then
+ for m, c in pairs(unused_mutant_spawn_cfg) do
+ if (smr_mutants_mcm.get_config(m) == true) then
+ local mn = str_explode(m, "_")
+ if not unused_mutant_spawn_table[mn[1]] then
+ unused_mutant_spawn_table[mn[1]] = {}
+ end
+ for i, v in ipairs(c) do
+ table.insert(unused_mutant_spawn_table[mn[1]], v)
+ end
+ end
+ end
+ end
+ return unused_mutant_spawn_table
+end
+
+function get_zombie_spawn_table()
+ if next(zombie_spawn_table) == nil then
+ for k, n in pairs(zombie_spawn_cfg) do
+ if smr_zombies_mcm.get_config(k) then
+ for i, s in ipairs(n) do
+ table.insert(zombie_spawn_table, s)
+ end
+ end
+ end
+ if next(zombie_spawn_table) == nil or smr_zombies_mcm.get_config("zombiesp") then
+ for i = 1, smr_zombies_mcm.get_config("zombies_amount") do
+ table.insert(zombie_spawn_table, "simulation_zombie")
+ end
+ end
+ end
+ return zombie_spawn_table
+end
+
+function get_faction_spawn_table()
+ if next(faction_spawn_table) == nil then
+ for k, n in ipairs(faction_spawn_cfg) do
+ if smr_stalkers_mcm.get_config(n) then
+ table.insert(faction_spawn_table, n)
+ end
+ end
+ end
+ if next(faction_spawn_table) == nil then
+ table.insert(faction_spawn_table, "stalker")
+ end
+ return faction_spawn_table
+end
+
+function is_squad_faction_enabled(squad)
+ local t = get_faction_spawn_table()
+ local faction = ini_sys:r_string_ex(squad, "faction")
+ if faction == "dolg" then
+ faction = "duty"
+ end
+ if faction == "killer" then
+ faction = "merc"
+ end
+ for i, f in ipairs(t) do
+ if (faction == f) then
+ return true
+ end
+ end
+ return false
+end
+
+function get_mutant_spawn_table()
+ if next(mutant_spawn_table) == nil then
+ for m, c in pairs(mutant_spawn_cfg) do
+ if (smr_mutants_mcm.get_config(c) == true) then
+ table.insert(mutant_spawn_table, m)
+ end
+ end
+ if next(mutant_spawn_table) == nil then
+ table.insert(mutant_spawn_table, "chimera_")
+ end
+ end
+ return mutant_spawn_table
+end
+
+function is_mutant_type_enabled(section)
+ local t = get_mutant_spawn_table()
+ for i, m in pairs(t) do
+ if (string.sub(section, 1, string.len(m)) == m) then
+ return true
+ end
+ end
+ return false
+ end
+
+local function get_random_enabled_mutant_squad()
+ local t = get_mutant_spawn_squads()
+ return t[math.random(#t)]
+end
+
+local function get_common_squad_type(squad_name)
+ local ss = str_explode(squad_name, "_")
+ if ss[4] == "novice"
+ or ss[4] == "advanced"
+ or ss[4] == "veteran"
+ or ss[4] == "alpha"
+ or ss[4] == "trader"
+ or ss[4] == "medic"
+ or ss[4] == "barman"
+ or ss[4] == "mechanic"
+ then
+ return ss[4]
+ end
+ return false
+end
+
+local function release_npc_or_squad(npc, squad)
+ alife_release(npc)
+ if (squad:npc_count() <= 1) then
+ alife_release_id(squad.id)
+ end
+end
+
+local function try_spawn_faction(orig_spawn, smart)
+ if (not orig_spawn) then
+ return false
+ end
+ -- setup comparable squad of random enabled faction
+ local t = get_faction_spawn_table()
+ local st = { "novice", "veteran", "advanced" }
+ local squad_type = get_common_squad_type(orig_spawn) or st[math.random(#st)]
+ local tt = t[math.random(#t)] .. "_sim_squad_" .. squad_type
+ for n, r in pairs(retarded_squad_names) do
+ if tt == n then
+ tt = r
+ end
+ end
+ -- random stalkers
+ if smr_stalkers_mcm.get_config("random_stalkers")
+ and (math.random(1,100) <= smr_stalkers_mcm.get_config("random_stalkers_chance"))
+ -- only replace common squads with random stalkers
+ and (ini_sys:r_bool_ex(orig_spawn, "common"))
+ -- check if smart is base
+ and (not smr_civil_war.smart_is_base(smart:name()))
+ then
+ smr_debug.get_log().info("population/stalkers", "replaced squad %s with random stalkers %s (smart: %s)", orig_spawn, tt, smart:name())
+ return tt
+ end
+ -- check if faction is enabled
+ if is_squad_faction_enabled(orig_spawn) then
+ smr_debug.get_log().info("population/stalkers", "faction enabled - returning %s", orig_spawn)
+ return orig_spawn
+ end
+ -- replace if option enabled
+ if not smr_stalkers_mcm.get_config("factions_replace_squads") then
+ smr_debug.get_log().info("population/stalkers", "faction %s not enabled - not spawning squad %s", ini_sys:r_string_ex(orig_spawn,"faction"), orig_spawn)
+ return false
+ end
+ smr_debug.get_log().info("population/stalkers", "faction %s not enabled: replaced squad %s with random stalkers %s", ini_sys:r_string_ex(orig_spawn,"faction"), orig_spawn, tt)
+ return tt
+end
+
+local function add_random_npc_to_squad(squad, smart)
+ local npcs = ini_sys:r_string_ex(squad:section_name(),"npc_random")
+ if (not npcs) then
+ -- npcs = ini_sys:r_string_ex(squad:section_name(),"npc")
+ return
+ end
+ local t = parse_names(npcs)
+ local section = t[math.random(#t)]
+ local faction = ini_sys:r_string_ex(squad:section_name(), "faction")
+ if is_squad_monster[faction] and (not is_mutant_type_enabled(section)) then
+ smr_debug.get_log().warn("population/monsters", "could not add %s to squad %s (type disabled)", section, squad:section_name(), faction)
+ return nil
+ end
+ local npc = alife_create(section, smart)
+ if not npc then
+ smr_debug.get_log().error("population/monsters", "error while adding %s to squad %s", section, squad:section_name())
+ return nil
+ end
+ squad:register_member(npc.id)
+ smr_debug.get_log().info("population/monsters", "added %s to squad %s", section, squad:section_name())
+ return npc
+end
+
+-- ---
+-- ENTRY POINTS
+-- ---
+
+-- smart_terrain.se_smart_terrain:try_respawn()
+-- simulation_board:fill_start_position()
+function smr_handle_spawn(orig_spawn, smart)
+ -- player wished for control
+ if has_alife_info("actor_made_wish_for_control") then
+ return SIMBOARD:create_squad(smart, "simulation_controller_psy")
+ end
+ -- ZCP not enabled
+ if not smr_amain_mcm.get_config("smr_enabled") then
+ smr_debug.get_log().info("population", "not replacing spawn -- ZCP disabled")
+ return SIMBOARD:create_squad(smart, orig_spawn)
+ end
+ -- zombies
+ local rnd = math.random(1,100)
+ if smr_zombies_mcm.get_config("zombie_spawn")
+ and rnd <= smr_zombies_mcm.get_config("zombie_chance")
+ -- only replace common squads
+ and ini_sys:r_bool_ex(orig_spawn,"common")
+ -- skip bases
+ and (not smr_civil_war.smart_is_base(smart))
+ then
+ local t = get_zombie_spawn_table()
+ local tt = t[math.random(#t)]
+ smr_debug.get_log().info("population/zombies", "replaced squad %s with zombie variant %s (%s <= %s)", orig_spawn, tt, rnd, smr_zombies_mcm.get_config("zombie_chance"))
+ return SIMBOARD:create_squad(smart, tt)
+ end
+ local faction = ini_sys:r_string_ex(orig_spawn, "faction")
+ -- mutant squads
+ if is_squad_monster[faction] then
+ if (string.sub(orig_spawn, 1, string.len("simulation_")) == "simulation_")
+ and smr_mutants_mcm.get_config("random_mutants")
+ and (math.random(1,100) <= smr_mutants_mcm.get_config("random_mutants_chance"))
+ then
+ local m
+ if smr_spawns_mcm.get_config("preset_apply_random") then
+ m = smr_spawn_template.get_random_squad_for_smart(smart) or get_random_enabled_mutant_squad()
+ smr_debug.get_log().info("population/monsters", "replaced squad %s with random mutant %s (template)", orig_spawn, m)
+ else
+ m = get_random_enabled_mutant_squad()
+ smr_debug.get_log().info("population/monsters", "replaced squad %s with random mutant %s", orig_spawn, m)
+ end
+ return SIMBOARD:create_squad(smart, m)
+ end
+ -- stalker squads
+ else
+ local maybe_squad_section = try_spawn_faction(orig_spawn, smart)
+ if maybe_squad_section then
+ return SIMBOARD:create_squad(smart, maybe_squad_section)
+ end
+ return nil
+ end
+ -- return original spawn
+ return SIMBOARD:create_squad(smart, orig_spawn)
+end
+
+-- smart_terrain.se_smart_terrain:try_respawn()
+function smart_can_respawn(smart)
+ local name = smart:name()
+ local last_respawn_update = smart.last_respawn_update
+ -- default value
+ if (not smr_amain_mcm.get_config("smr_enabled")) and (smr_amain_mcm.get_config("respawn_idle") ~= 86400) then
+ smr_debug.get_log().info("population/smart", "default respawn check value: ZCP disabled or respawn_idle set to 86400 (testing for smart %s)", name)
+ return last_respawn_update == nil or curr_time:diffSec(last_respawn_update) > smart.respawn_idle
+ end
+ -- last update was nil
+ local cfg = smr_amain_mcm.get_config("respawn_idle")
+ if last_respawn_update == nil then
+ smr_debug.get_log().info("population/smart", "respawn check sucessful for smart %s (last update was nil)", name)
+ return true
+ end
+ -- respawns disabled
+ if cfg == -1 then
+ smr_debug.get_log().info("population/smart", "respawn check failed: respawns disabled (testing for smart %s)", name)
+ return false
+ end
+ -- use ZCP config value
+ local diff = game.get_game_time():diffSec(last_respawn_update)
+ if diff > cfg then
+ return true
+ else
+ return false
+ end
+end
+
+-- smart_terrain.se_smart_terrain:try_respawn()
+-- simulation_board:fill_start_position()
+function get_stalker_pop_factor()
+ if smr_amain_mcm.get_config("smr_enabled") then
+ --smr_debug.get_log().info("population/stalkers", "overriding population factor")
+ return smr_amain_mcm.get_config("stalker_pop_factor")
+ end
+ --smr_debug.get_log().info("population/stalkers", "ZCP disabled: using default population factor")
+ return ui_options.get("alife/general/alife_stalker_pop")
+end
+
+-- smart_terrain.se_smart_terrain:try_respawn()
+-- simulation_board:fill_start_position()
+function get_monster_pop_factor()
+ if smr_amain_mcm.get_config("smr_enabled") then
+ --smr_debug.get_log().info("population/monsters", "overriding population factor")
+ return smr_amain_mcm.get_config("monster_pop_factor")
+ end
+ --smr_debug.get_log().info("population/monsters", "ZCP disabled: using default population factor")
+ return ui_options.get("alife/general/alife_mutant_pop")
+end
+
+-- simulation_board:fill_start_position()
+function get_population_preset()
+ if smr_amain_mcm.get_config("smr_enabled") and (smr_stalkers_mcm.get_config("base_population") ~= "sim_smr_default") then
+ smr_debug.get_log().info("population", "using population preset %s", "misc\\"..smr_stalkers_mcm.get_config("base_population")..".ltx")
+ return ini_file("misc\\"..smr_stalkers_mcm.get_config("base_population")..".ltx")
+ else
+ smr_debug.get_log().info("population", "using default population preset")
+ return ini_file("misc\\simulation.ltx")
+ end
+end
+
+local function actor_on_first_update()
+ if smr_amain_mcm.get_config("smr_enabled") and (smr_stalkers_mcm.get_config("base_population") == "sim_smr_none") then
+ smr_debug.get_log().info("population", "removing story objects")
+ please_die_sid()
+ end
+end
+
+function on_game_start()
+ RegisterScriptCallback("actor_on_first_update", actor_on_first_update)
+end
\ No newline at end of file
diff --git a/mods/Zone Customization Project/gamedata/scripts/smr_spawn_template.script b/mods/Zone Customization Project/gamedata/scripts/smr_spawn_template.script
new file mode 100644
index 00000000..a7a440ba
--- /dev/null
+++ b/mods/Zone Customization Project/gamedata/scripts/smr_spawn_template.script
@@ -0,0 +1,97 @@
+template_cfg = {}
+template_cfg_weights = {}
+
+function get_template_config()
+ if next(template_cfg) == nil then
+ smr_debug.get_log().info("population/monsters", "Using preset %s ", smr_spawns_mcm.get_config("preset_file"))
+ template_cfg = load_template_config()
+ end
+ return template_cfg
+end
+
+function load_template_config()
+ local tcfg = {}
+ local msq = smr_pop.get_mutant_spawn_squads()
+ local ini = ini_file(smr_spawns_mcm.get_config("preset_file"))
+
+
+ local function itr(section)
+ local tmp = {}
+ template_cfg_weights[section] = 0
+ lc = ini:line_count(section)
+ for li=0,lc-1 do
+ local sq, weight = smr_utils.read_spawn_template_ln(ini, section, li)
+ local ss = str_explode(sq, "*")
+ if ss[2] and ss[3] then
+ local mini = ini_file("plugins\\zcp\\spawn_groups\\" .. ss[2] .. ".ltx")
+ for nk, nv in pairs(smr_utils.spawn_template_lines_to_table(mini, ss[3])) do
+ template_cfg_weights[section] = template_cfg_weights[section] + nv
+ tmp[nk] = nv
+ end
+ else
+ if smr_utils.table_has_value(msq, sq) then
+ tmp[sq] = weight
+ template_cfg_weights[section] = template_cfg_weights[section] + weight
+ end
+ end
+ end
+ if next(tmp) ~= nil then
+ tcfg[section] = tmp
+ end
+ end
+ ini:section_for_each(itr)
+ return tcfg
+end
+
+-- Weight code adapted from TheMrDemonized's "ZCP Kinda Balanced Spawns" (https://www.moddb.com/mods/stalker-anomaly/addons/zcp-balanced-spawns/)
+function get_random_squad_for_smart(smart)
+ local tier = get_squad_tier()
+ local key = alife():level_name(game_graph():vertex(smart.m_game_vertex_id):level_id()) .. "_tier" .. tier .. "_monsters"
+ local mutant_table = get_template_config()[key]
+ if not mutant_table or next(mutant_table) == nil then
+ smr_debug.get_log().warn("population/monsters", "empty mutant table for %".. key)
+ return nil
+ end
+ local rand = math.random() * template_cfg_weights[key]
+ for mutant, weight in pairs(mutant_table) do
+ if (rand < weight) then
+ smr_debug.get_log().info("population/monsters", "got squad %s for section (roll: %s/%s) ".. key, mutant, rand, weight)
+ return mutant
+ end
+ rand = rand - weight
+ end
+ smr_debug.get_log().warn("population/monsters", "no weighted squad for section".. key)
+ return mutant_table[math.random(#mutant_table)]
+end
+
+function get_squad_tier()
+ local tier_1_fac = get_tier_factor(1)
+ local tier_2_fac = get_tier_factor(2)
+ local tier_3_fac = get_tier_factor(3)
+ local range = tier_1_fac + tier_2_fac + tier_3_fac
+ local rnd = math.random(0, range)
+ if rnd <= tier_1_fac then
+ return 1
+ elseif rnd <= tier_1_fac + tier_2_fac then
+ return 2
+ else
+ return 3
+ end
+end
+
+
+function get_tier_factor(tier)
+ return smr_spawns_mcm.get_config("preset_week".. actor_weeks_in_zone() .."_tier" .. tier)
+end
+
+function actor_weeks_in_zone()
+ if not db.actor then
+ return 0
+ end
+ local s_time = level.get_start_time()
+ local seconds = tonumber(game.get_game_time():diffSec(s_time))
+ local days = math.floor(((seconds/60)/60)/24)
+ weeks = math.floor(days/7)
+ if weeks > 3 then weeks = 3 end
+ return weeks
+end
\ No newline at end of file
diff --git a/mods/Zone Customization Project/gamedata/scripts/smr_spawns_mcm.script b/mods/Zone Customization Project/gamedata/scripts/smr_spawns_mcm.script
new file mode 100644
index 00000000..bf90d279
--- /dev/null
+++ b/mods/Zone Customization Project/gamedata/scripts/smr_spawns_mcm.script
@@ -0,0 +1,52 @@
+local defaults = {
+}
+
+local flist = {}
+
+function get_config(key)
+ if ui_mcm then return ui_mcm.get("SMR/smr_spawns/"..key) else return defaults[key] end
+end
+
+local function get_flist()
+ if next(flist) == nil then
+ local files = getFS():file_list_open('$game_config$', "plugins\\zcp\\spawn_templates\\", bit_or(FS.FS_ListFiles, FS.FS_RootOnly))
+ for i=0,files:Size()-1 do
+ local file_name = files:GetAt(i)
+ table.insert(flist, {"plugins\\zcp\\spawn_templates\\" .. file_name, file_name })
+ end
+ end
+ return flist
+end
+
+function on_mcm_load()
+ local templates = get_flist()
+ return { id="smr_spawns", sh=true, gr={
+ { id="title_header", type="slide", link="ui_options_slider_warfare", text="ui_mcm_menu_smr_spawns", size= {512,50}, spacing=20 },
+ { id="preset_desc", type="desc", clr={200, 125, 125, 125}, text="ui_mcm_SMR_smr_spawns_preset_desc"},
+ { id="preset_file", type="list", val=0, no_str=true, content=templates},
+ { id="preset_file_desc", type="desc", clr={200, 125, 125, 125}, text="ui_mcm_SMR_smr_spawns_preset_file_desc"},
+ { id="preset_apply_random", type="check", val=1, def=false },
+ { id="preset_apply_replaced", type="check", val=1, def=false },
+ -- week 1
+ { id="preset_week0_title", type="title", text="ui_mcm_smr_spawns_preset_week0_title", align="c" },
+ { id="preset_week0_tier1", type="track", val=2, min=1, max=100, step=1, def=70 },
+ { id="preset_week0_tier2", type="track", val=2, min=1, max=100, step=1, def=25 },
+ { id="preset_week0_tier3", type="track", val=2, min=1, max=100, step=1, def=5 },
+ -- week 2
+ { id="preset_week1_title", type="title", text="ui_mcm_smr_spawns_preset_week1_title", align="c" },
+ { id="preset_week1_tier1", type="track", val=2, min=1, max=100, step=1, def=50 },
+ { id="preset_week1_tier2", type="track", val=2, min=1, max=100, step=1, def=40 },
+ { id="preset_week1_tier3", type="track", val=2, min=1, max=100, step=1, def=10 },
+ -- week 3
+ { id="preset_week2_title", type="title", text="ui_mcm_smr_spawns_preset_week2_title", align="c" },
+ { id="preset_week2_tier1", type="track", val=2, min=1, max=100, step=1, def=35 },
+ { id="preset_week2_tier2", type="track", val=2, min=1, max=100, step=1, def=50 },
+ { id="preset_week2_tier3", type="track", val=2, min=1, max=100, step=1, def=15 },
+ -- week 4
+ { id="preset_week3_title", type="title", text="ui_mcm_smr_spawns_preset_week3_title", align="c" },
+ { id="preset_week3_tier1", type="track", val=2, min=1, max=100, step=1, def=30 },
+ { id="preset_week3_tier2", type="track", val=2, min=1, max=100, step=1, def=45 },
+ { id="preset_week3_tier3", type="track", val=2, min=1, max=100, step=1, def=25 },
+
+}}, "SMR"
+end
\ No newline at end of file
diff --git a/mods/Zone Customization Project/gamedata/scripts/smr_squad.script b/mods/Zone Customization Project/gamedata/scripts/smr_squad.script
new file mode 100644
index 00000000..1ea28997
--- /dev/null
+++ b/mods/Zone Customization Project/gamedata/scripts/smr_squad.script
@@ -0,0 +1,68 @@
+function adjust_random_count(squad, c)
+ -- uncommon squad
+ if not ini_sys:r_bool_ex(squad:section_name(),"common") then
+ smr_debug.get_log().warn("population", "no adjustment to squad size for %s (uncommon squad)", squad:section_name())
+ return c
+ end
+ -- story squad
+ if get_story_squad(squad:section_name()) then
+ smr_debug.get_log().warn("population", "no adjustment to squad size for %s (story squad)", squad:section_name())
+ return c
+ end
+ -- get adjustment factor
+ local variance
+ local squad_size
+ if is_squad_monster[ini_sys:r_string_ex(squad:section_name(), "faction")] then
+ variance = smr_mutants_mcm.get_config("squad_size_variance")
+ squad_size = smr_mutants_mcm.get_config("squad_size")
+ else
+ variance = smr_stalkers_mcm.get_config("squad_size_variance")
+ squad_size = smr_stalkers_mcm.get_config("squad_size")
+ end
+ local varf = math.random(-variance, variance)
+ local fac = varf + squad_size
+ -- factor is 1 (no adjustment)
+ if (fac == 1.0) then
+ smr_debug.get_log().info("population", "no adjustment to squad size for %s", squad:section_name())
+ return c
+ end
+ -- return adjusted count
+ local target_count = math.floor(c * fac)
+ smr_debug.get_log().info("population", "adusted squad size for %s: %s -> %s", squad:section_name(), c, target_count)
+ return target_count
+end
+
+function replace_mutant_variant(section)
+ smr_debug.get_log().info("population/monsters", "FOO %s", section)
+ local vt = smr_pop.get_unused_mutant_spawn_table()
+ for m, v in pairs(vt) do
+ if (str_explode(section, "_")[1] == m)
+ and (math.random(1,100) <= smr_mutants_mcm.get_config("unused_types_chance"))
+ then
+ local mrs = v[math.random(#v)]
+ smr_debug.get_log().info("population/monsters", "replaced %s with variant %s", section, mrs)
+ return mrs
+ end
+ end
+ return section
+end
+
+function is_mutant_type_enabled(section)
+ local t = smr_pop.get_mutant_spawn_table()
+ for _, m in pairs(t) do
+ if (string.sub(section, 1, string.len(m)) == m) then
+ return true
+ end
+ end
+ return false
+end
+
+local function on_key_press(key)
+ if (dik == key_bindings.kSAFEMODE) then
+
+ end
+end
+
+function on_game_start()
+ RegisterScriptCallback("on_key_press", on_key_press)
+end
\ No newline at end of file
diff --git a/mods/Zone Customization Project/gamedata/scripts/smr_stalkers_mcm.script b/mods/Zone Customization Project/gamedata/scripts/smr_stalkers_mcm.script
new file mode 100644
index 00000000..e68808e4
--- /dev/null
+++ b/mods/Zone Customization Project/gamedata/scripts/smr_stalkers_mcm.script
@@ -0,0 +1,61 @@
+local defaults = {
+ ["base_population"] = "sim_smr_default",
+ ["civil_war"] = "civilwar_disabled",
+ ["civil_war_base_population"] = false,
+ ["civil_war_monolith_allied"] = false,
+ ["monolith_spawns"] = "disabled",
+}
+
+function get_config(key)
+ if ui_mcm then return ui_mcm.get("SMR/smr_stalkers/"..key) else return defaults[key] end
+end
+
+local function p_base_pop(n)
+ return get_config("base_population") == n
+end
+
+function on_mcm_load()
+ return { id="smr_stalkers", sh=true, gr={
+ { id="title_header", type="slide", link="ui_options_slider_disguise", text="ui_mcm_menu_smr_stalkers", size= {512,50}, spacing=20 },
+ { id="squad_size", type="track", val=2, min=0.1, max=5, step=0.1, def=1 },
+ { id="squad_size_variance", type="track", val=2, min=0, max=3, step=0.1, def=0 },
+ { id="squad_size_divider", type="line" },
+ { id="base_population", type="list", val=0, def="sim_smr_default", content={
+ {"sim_smr_default", "smr_stalkers_base_population_default"},
+ {"sim_smr_survival","smr_stalkers_base_population_survival"},
+ {"sim_smr_minimal","smr_stalkers_base_population_minimal"},
+ {"sim_smr_none","smr_stalkers_base_population_none"}} },
+ { id="base_population_default", type="desc", clr={200, 125, 125, 125}, text="ui_mcm_SMR_smr_stalkers_base_population_default", precondition={p_base_pop, "sim_smr_default"}},
+ { id="base_population_survival", type="desc", clr={200, 125, 125, 125}, text="ui_mcm_SMR_smr_stalkers_base_population_survival", precondition={p_base_pop, "sim_smr_survival"}},
+ { id="base_population_minimal", type="desc", clr={200, 125, 125, 125}, text="ui_mcm_SMR_smr_stalkers_base_population_minimal", precondition={p_base_pop, "sim_smr_minimal"}},
+ { id="base_population_none", type="desc", clr={200, 125, 125, 125}, text="ui_mcm_SMR_smr_stalkers_base_population_none", precondition={p_base_pop, "sim_smr_none"}},
+ { id="civil_war", type="list", val=0, def="civilwar_disabled", content={
+ {"civilwar_disabled","smr_stalkers_civilwar_disabled"},
+ {"civilwar_stalkers","smr_stalkers_civilwar_stalkers"},
+ {"civilwar_squads","smr_stalkers_civilwar_squads"},
+ }},
+ { id="civil_war_base_population", type="check", val=1, def=false },
+ { id="civil_war_monolith_allied", type="check", val=1, def=false },
+ { id="random_stalkers_divider", type="line" },
+ { id="random_stalkers", type="check", val=1, def=false },
+ { id="random_stalkers_chance", type="track", val=2, min=1, max=100, step=1, def=10 },
+ { id="factions_divider", type="line" },
+ { id="factions_header", type="title", text="ui_mcm_smr_stalkers_factions_title", align="c" },
+ { id="factions_info", type="desc", clr={200, 125, 125, 125}, text="ui_mcm_SMR_smr_stalkers_factions_info", },
+ { id="factions_replace_squads", type="check", val=1, def=false },
+ { id="factions_replace_divider", type="line" },
+ { id="stalker", type="check", val=1, def=true},
+ { id="bandit", type="check", val=1, def=true},
+ { id="csky", type="check", val=1, def=true},
+ { id="duty", type="check", val=1, def=true},
+ { id="freedom", type="check", val=1, def=true},
+ { id="merc", type="check", val=1, def=true},
+ { id="army", type="check", val=1, def=true},
+ { id="ecolog", type="check", val=1, def=true},
+ { id="monolith", type="check", val=1, def=true},
+ { id="renegade", type="check", val=1, def=true},
+ { id="greh", type="check", val=1, def=true},
+ { id="isg", type="check", val=1, def=true},
+ { id="zombied", type="check", val=1, def=true},
+ }}, "SMR"
+end
\ No newline at end of file
diff --git a/mods/Zone Customization Project/gamedata/scripts/smr_utils.script b/mods/Zone Customization Project/gamedata/scripts/smr_utils.script
new file mode 100644
index 00000000..0b1637d7
--- /dev/null
+++ b/mods/Zone Customization Project/gamedata/scripts/smr_utils.script
@@ -0,0 +1,64 @@
+function intersect(t1,t2)
+
+ local function make_lookup(t)
+ local res={}
+ for _,v in ipairs(t) do
+ res[v]=true
+ end
+ return res
+ end
+
+ local smaller,larger
+ if (#t1>#t2) then
+ larger=t1
+ smaller=t2
+ else
+ larger=t2
+ smaller=t1
+ end
+
+ local lookup=make_lookup(smaller)
+
+ local res={}
+ for _,v in ipairs(larger) do
+ if lookup[v] then
+ res[#res+1]=v
+ end
+ end
+ return res
+end
+
+function table_has_value(t, n)
+ for _,v in ipairs(t) do
+ if v == n then
+ return true
+ end
+ end
+ return false
+end
+
+function ini_lines_to_table(ini, section)
+ local tmp = {}
+ lc = ini:line_count(section)
+ for li=0,lc-1 do
+ local result, sq, count = ini:r_line(section,li,"","")
+ table.insert(tmp, sq)
+ end
+ return tmp
+end
+
+function spawn_template_lines_to_table(ini, section)
+ local tmp = {}
+ lc = ini:line_count(section)
+ for li=0,lc-1 do
+ local result, sq, count = ini:r_line(section,li,"","")
+ tmp[sq] = tonumber(count) or 1.0
+ end
+ return tmp
+ end
+
+function read_spawn_template_ln(ini, section, line)
+ local result, sq, count = ini:r_line(section,line,"","")
+ local weight = tonumber(count) or 1.0
+ return sq, weight
+end
\ No newline at end of file
diff --git a/mods/Zone Customization Project/gamedata/scripts/smr_zombies_mcm.script b/mods/Zone Customization Project/gamedata/scripts/smr_zombies_mcm.script
new file mode 100644
index 00000000..b1d44374
--- /dev/null
+++ b/mods/Zone Customization Project/gamedata/scripts/smr_zombies_mcm.script
@@ -0,0 +1,42 @@
+local defaults = {
+ ["zombie_spawn"] = false,
+ ["zombie_chance"] = 90,
+ ["seek_enabled"] = false,
+ ["seek_distance"] = 250,
+ ["zombiesp"] = true,
+ ["zombies_amount"] = 5,
+ ["blindp"] = true,
+ ["zombifiedp"] = true,
+ ["fracturep"] = true,
+ ["snorkp"] = true,
+ ["bloodsuckerp"] = false,
+ ["psysuckerp"] = false
+}
+
+function get_config(key)
+ if ui_mcm then return ui_mcm.get("SMR/smr_zombies/"..key) else return defaults[key] end
+end
+
+function on_mcm_load()
+ return { id="smr_zombies", sh=true, gr={
+ { id="title_header", type="slide", link="ui_options_slider_night", text="ui_mcm_menu_smr_zombies", size= {512,50}, spacing=20 },
+ -- zombies
+ { id="zombie_spawn", type="check", val=1, def=false},
+ { id="zombie_spawn_divider", type="line" },
+ { id="zombie_chance", type="track", val=2, min=0, max=100, step=1, def=90 },
+ { id="zombies_amount", type="track", val=2, min=1, max=10, step=1, def=5 },
+ { id="seek_enabled", type="check", val=1, def=false},
+ { id="seek_distance", type="track", val=2, min=1, max=250, step=10, def=250 },
+ -- zombie types
+ { id="zombie_types_divider", type="line" },
+ { id="zombie_types_header", type="title", text="ui_mcm_smr_zombies_zombie_types_title", align="c" },
+ { id="zombie_types_info", type="desc", clr={200, 125, 125, 125}, text="ui_mcm_SMR_smr_zombies_zombie_types_info", },
+ { id="zombiesp", type="check", val=1, def=true},
+ { id="blindp", type="check", val=1, def=true},
+ { id="zombifiedp", type="check", val=1, def=true},
+ { id="fracturep", type="check", val=1, def=true},
+ { id="snorkp", type="check", val=1, def=true},
+ { id="bloodsuckerp", type="check", val=1, def=false},
+ { id="psysuckerp", type="check", val=1, def=false}
+ }}, "SMR"
+end
\ No newline at end of file
diff --git a/mods/Zone Customization Project/gamedata/scripts/smr_zzintegration_mcm.script b/mods/Zone Customization Project/gamedata/scripts/smr_zzintegration_mcm.script
new file mode 100644
index 00000000..b3162866
--- /dev/null
+++ b/mods/Zone Customization Project/gamedata/scripts/smr_zzintegration_mcm.script
@@ -0,0 +1,25 @@
+local defaults = {
+ ["glowsticks"] = false,
+ ["mad_mags"] = false,
+ ["mad_mags_chance"] = false,
+}
+
+function get_config(key)
+ if ui_mcm then return ui_mcm.get("SMR/smr_zzintegration/"..key) else return defaults[key] end
+end
+
+function on_mcm_load()
+ return { id="smr_zzintegration", sh=true, gr={
+ { id="integration_header", type="slide", link="ui_options_slider_alife", text="ui_mcm_menu_smr_zzintegration", size={512,50}, spacing=20 },
+ { id="integration_info", type="desc", text="ui_mcm_SMR_smr_zzintegration_integration_info" },
+ { id="glowsticks", type="check", val=1, def=false },
+ { id="glowsticks_info", type="desc", clr={200, 125, 125, 125}, text="ui_mcm_SMR_smr_zzintegration_glowsticks_info" },
+ { id="glowsticks_divider", type="line" },
+ { id="mags_redux", type="check", val=1, def=false },
+ { id="mags_redux_chance", type="track", val=2, min=1, max=100, step=1, def=5 },
+ { id="mags_redux_info", type="desc", clr={200, 125, 125, 125}, text="ui_mcm_SMR_smr_zzintegration_mags_redux_info" },
+ { id="lootboxes", type="check", val=1, def=false },
+ { id="lootboxes_chance", type="track", val=2, min=1, max=100, step=1, def=5 },
+ { id="lootboxes_info", type="desc", clr={200, 125, 125, 125}, text="ui_mcm_SMR_smr_zzintegration_lootboxes_info" },
+ }}, "SMR"
+end
\ No newline at end of file
diff --git a/mods/Zone Customization Project/gamedata/scripts/tasks_fetch.script b/mods/Zone Customization Project/gamedata/scripts/tasks_fetch.script
new file mode 100644
index 00000000..1611944d
--- /dev/null
+++ b/mods/Zone Customization Project/gamedata/scripts/tasks_fetch.script
@@ -0,0 +1,748 @@
+local DIALOG_ID = {}
+local sfind = string.find
+
+local fetch_items = {}
+local fetch_rank_tier = {}
+
+local patch_general = {
+ ["army"] = {
+ ["freedom_patch"] = 0,
+ ["bandit_patch"] = 0,
+ ["stalker_patch"] = 0,
+ ["csky_patch"] = 0,
+ ["monolith_patch"] = 0,
+ },
+ ["bandit"] = {
+ ["army_patch"] = 0,
+ ["dolg_patch"] = 0,
+ ["stalker_patch"] = 0,
+ ["csky_patch"] = 0,
+ ["ecolog_patch"] = 0,
+ },
+ ["csky"] = {
+ ["army_patch"] = 0,
+ ["bandit_patch"] = 0,
+ ["renegade_patch"] = 0,
+ },
+ ["dolg"] = {
+ ["freedom_patch"] = 0,
+ ["bandit_patch"] = 0,
+ ["monolith_patch"] = 0,
+ },
+ ["freedom"] = {
+ ["dolg_patch"] = 0,
+ ["army_patch"] = 0,
+ ["monolith_patch"] = 0,
+ },
+ ["killer"] = {
+ ["freedom_patch"] = 0,
+ ["bandit_patch"] = 0,
+ ["dolg_patch"] = 0,
+ ["army_patch"] = 0,
+ ["monolith_patch"] = 0,
+ },
+ ["monolith"] = {
+ ["army_patch"] = 0,
+ ["freedom_patch"] = 0,
+ ["bandit_patch"] = 0,
+ ["stalker_patch"] = 0,
+ ["csky_patch"] = 0,
+ ["dolg_patch"] = 0,
+ },
+ ["stalker"] = {
+ ["bandit_patch"] = 0,
+ },
+ ["greh"] = {
+ ["army_patch"] = 0,
+ ["freedom_patch"] = 0,
+ ["bandit_patch"] = 0,
+ ["stalker_patch"] = 0,
+ ["csky_patch"] = 0,
+ ["dolg_patch"] = 0,
+ },
+ ["renegade"] = {
+ ["army_patch"] = 0,
+ ["dolg_patch"] = 0,
+ ["stalker_patch"] = 0,
+ ["csky_patch"] = 0,
+ ["ecolog_patch"] = 0,
+ },
+}
+
+local faction_lookup = { -- List of factions used in patch tasks
+ "stalker",
+ "dolg",
+ "freedom",
+ "csky",
+ "ecolog",
+ "killer",
+ "army",
+ "bandit",
+ "monolith"
+}
+
+if smr_amain_mcm.get_config("smr_enabled") then
+ faction_lookup = smr_pop.get_faction_spawn_table()
+end
+
+---------------------------< Utility >---------------------------
+function postpone_fetch_for_next_frame(task_id, section, amount)
+ if not (task_id and section) then
+ return true
+ end
+
+ task_id = string.sub(task_id,1,-7) or "" -- because it ends with fetch
+ amount = amount or 1
+ local extra = ""
+ if (ini_sys:r_string_ex(section,"kind") == "i_arty") then
+ extra = " " .. game.translate_string("st_ui_artefact")
+ end
+
+ local clr = utils_xml.get_color("pda_white") --"%c[255,238,153,26]"
+ local news_caption = game.translate_string("ui_inv_needs") .. ":" --game.translate_string(task_manager.task_ini:r_string_ex(task_id, "title")) or "error"
+ local news_ico = task_manager.task_ini:r_string_ex(task_id, "icon") or "ui_inGame2_D_Sisshik"
+ local news_text = ui_item.get_sec_name(section) .. extra .. clr .. " (x" .. amount .. ")"
+
+ db.actor:give_talk_message2(news_caption, news_text, news_ico, "iconed_answer_item")
+
+ return true
+end
+
+
+xr_effects.fetch_reward_and_remove = function(actor, npc, p) -- Remove fetch items and give money reward:
+-- Description: Removes fetch task items and gives actor money reward based on item value
+-- Usage: fetch_reward_and_remove( p[1]:p[2] )
+-- Parameters:
+-- p[1] (type: string) Var name given to fetch task items
+-- p[2] (type: float) Multiplier for cost of items to apply to reward value (optional; default = 1.0)
+-- Return value (type: none): none, removes fetch items and gives actor reward
+
+ -- Get fetch items
+ local sec = load_var( db.actor, p[1] )
+ if not (sec) then return end
+
+ local sim = alife()
+
+ -- Extract artefact if its in container
+ if string.find(sec,"af_") and (not db.actor:object(sec)) then
+ local break_con
+ local break_arty
+ local id_combo
+ local search_cont = { "lead_box" , "af_aam", "af_aac", "af_iam" }
+ for i=1,#search_cont do
+ if db.actor:object(sec .. "_" .. search_cont[i]) then
+ break_arty = sec
+ break_con = search_cont[i]
+ id_combo = db.actor:object(sec .. "_" .. search_cont[i]):id()
+ break
+ end
+ end
+
+ if id_combo and break_con and break_arty and ini_sys:section_exist(break_con) then
+ printdbg("/ Artefact container found, artefact [%s] - contairer [%s]", break_arty, break_con)
+ alife_create_item(break_arty, db.actor)
+ alife_create_item(break_con, db.actor)
+ alife_release_id(id_combo)
+
+ -- play effect
+ level.add_cam_effector('camera_effects\\item_use.anm', 8053, false,'')
+ xr_effects.play_inv_aac_open()
+ end
+ end
+
+ local function timer() -- delay for 1 sec, to register alife changes
+
+ -- Gather task items and cost
+ local count = load_var( db.actor, (p[1] .. "_count") ) or 1
+ local mult = tonumber(p[2]) or 1
+ local max_use = IsItem("multiuse",sec) or 1
+ local cost = ini_sys:r_float_ex(sec,"cost") * (1 / max_use)
+
+ local last_obj
+ local collected_itms = {}
+ local total_cost, remain = 0,0
+ local cur_count = count
+ local use_con = (max_use == 1) and (not IsItem("device",sec)) and (not IsItem("battery", sec)) and true or false
+ local function itr(temp, obj)
+ if (obj:section() == sec) then
+ local cnt = (max_use > 1) and obj:get_remaining_uses() or 1
+ local con = use_con and obj:condition() or 1
+
+ collected_itms[obj:id()] = cnt
+ total_cost = total_cost + (cost * cnt * (con * con) * mult)
+ cur_count = cur_count - cnt
+
+ last_obj = obj
+ end
+ if (cur_count <= 0) then
+ if (cur_count < 0) then
+ remain = math.abs(cur_count)
+ end
+ return true
+ end
+ --return false
+ end
+ db.actor:iterate_inventory(itr, nil)
+
+ -- Check availability
+ if is_empty(collected_itms) then
+ printe("! ERROR: fetch_reward_and_remove | no fetch item found!")
+ return true
+ end
+ if (total_cost < 50) then
+ total_cost = 50
+ printf("~ Warning: fetch_reward_and_remove | total_cost is below 50")
+ end
+
+ -- Reward value for artefacts depends on progression difficulty
+ if IsArtefact(last_obj) then
+ local eco = game_difficulties.get_eco_factor("type") or 0.5
+ local factor = (eco == 3 and 0.4) or (eco == 2 and 0.5) or 0.6
+ total_cost = total_cost * factor
+ end
+ --
+
+ local delta = math.floor(total_cost * 0.1)
+ local min_reward = (total_cost - delta)
+ local max_reward = (total_cost + delta)
+
+ xr_effects.reward_random_money( actor, npc, { min_reward , max_reward } )
+
+ -- Give task items to npc
+ local trade_npc = false --get_speaker()
+ for k,v in pairs(collected_itms) do
+ if trade_npc then
+ local obj = level.object_by_id(k)
+ if obj then
+ db.actor:transfer_item(obj, trade_npc)
+ end
+ else
+ alife_release_id(k)
+ end
+ end
+ if (remain > 0) and IsItem("multiuse",sec) then
+ alife_create_item(sec, db.actor, {uses = remain})
+ local last_obj_uses = last_obj:get_remaining_uses()
+ if last_obj_uses and (last_obj_uses > remain) then
+ local uses = (last_obj_uses - remain)
+ alife_process_item(last_obj:section(), last_obj:id(), {uses = uses})
+ end
+ end
+
+ news_manager.relocate_item(db.actor, "out", sec, count)
+
+ return true
+ end
+
+ CreateTimeEvent(0,"delay_reward", 1, timer)
+end
+
+xr_effects.remove_fetch_item = function(actor,npc,p)
+ local section = load_var(db.actor,p[1])
+ if (section and db.actor:object(section)) then
+ local amt = p[2] or load_var(db.actor,p[1].."_count") or 1
+ local trade_npc = get_speaker()
+ if (trade_npc) then
+ local function transfer_object_item(itm)
+ if (itm:section() == section and amt > 0) then
+ db.actor:transfer_item(itm, trade_npc)
+ amt = amt - 1
+ end
+ if (amt <= 0) then
+ return true
+ end
+ return false
+ end
+ db.actor:inventory_for_each(transfer_object_item)
+ else
+ xr_effects.remove_item(actor, npc, {section,amt})
+ end
+ end
+end
+
+xr_effects.remove_artefact_item = function(actor,npc,p)
+ local section = load_var(db.actor,p[1])
+ if (not section) then
+ printe("!ERROR xr_effects.remove_artefact_item | no var found for %s", p[1])
+ return
+ end
+
+ local cont
+ local obj = db.actor:object(section)
+ if (not obj) then
+ local search_cont = { "lead_box" , "af_aam", "af_aac", "af_iam" }
+ for i=1,#search_cont do
+ if db.actor:object(section .. "_" .. search_cont[i]) then
+ obj = db.actor:object(section .. "_" .. search_cont[i])
+ cont = search_cont[i]
+ break
+ end
+ end
+ end
+
+ if (not obj) then
+ return
+ end
+
+ local trade_npc = get_speaker()
+ if (trade_npc) then
+ db.actor:transfer_item(obj, trade_npc)
+ else
+ alife_release(obj)
+ end
+
+ if cont then
+ alife_create_item(cont, db.actor)
+
+ -- play effect
+ level.add_cam_effector('camera_effects\\item_use.anm', 8053, false,'')
+ xr_effects.play_inv_aac_open()
+ end
+end
+
+
+
+---------------------------< Effects >---------------------------
+local function get_suitable_item(tbl,rank)
+ local temp = {}
+ for sec,tier in pairs(tbl) do
+ if (not rank) or (rank and fetch_rank_tier[rank] and fetch_rank_tier[rank][tier]) then
+ temp[#temp + 1] = sec
+ --printf("- Fetch items | found proper item [%s] tier (%s) for rank (%s)", sec, tier, rank)
+ end
+ end
+ return (#temp > 0) and temp[math.random(#temp)]
+end
+
+xr_effects.setup_fetch_task = function(actor,npc,p) -- setup_supplies_fetch_task
+-- Pick a random item from the list:
+-- param 1 - var name
+-- param 2 - items type
+-- param 2 - min count
+-- param 3 - max count
+
+ local npc = get_speaker(true)
+ local id = npc and npc:id()
+ local sec = DIALOG_ID[id] and DIALOG_ID[id][p[1]] and DIALOG_ID[id][p[1]].sec
+ local cnt = DIALOG_ID[id] and DIALOG_ID[id][p[1]] and DIALOG_ID[id][p[1]].cnt
+
+ if (sec and ini_sys:section_exist(sec) and cnt) then
+ dialogs._FETCH_TEXT = ui_item.get_sec_name(sec)
+ save_var( db.actor, p[1], sec )
+ save_var( db.actor, (p[1] .. "_count"), cnt )
+
+ else
+ local npc_comm = npc and character_community(npc) or "stalker"
+ local npc_rank = ranks.get_obj_rank_name(npc) or "experienced"
+
+ local itms = {} -- non-key table
+
+ -- expand supplies list to include drinks and smoke if the task giver is not monolith
+ if (p[2] == "supplies") and (npc_comm ~= "monolith") then
+ itms = fetch_items["supplies"]
+ for sec,tier in pairs(fetch_items["drink"]) do
+ itms[sec] = tier
+ end
+
+ -- Gather patches of NPC's enemy factions
+ elseif (p[2] == "patch_general") then
+ local patches = {}
+ for i=1,#faction_lookup do
+ if game_relations.is_factions_enemies(faction_lookup[i], npc_comm) then
+ local comm
+ if (faction_lookup[i] == "killer") then comm = "merc"
+ elseif (faction_lookup[i] == "dolg") then comm = "duty"
+ else comm = faction_lookup[i]
+ end
+
+ local patch = comm .. "_patch"
+ patches[patch] = 0
+ end
+ end
+
+ if is_empty(patches) then
+ if smr_amain_mcm.get_config("smr_enabled") then
+ local t = smr_pop.get_faction_spawn_table()
+ local patch = t[math.random(#t)] .. "_patch"
+ patches[patch] = 0
+ else
+ patches = patch_general[npc_comm]
+ end
+ end
+
+ itms = patches
+
+ -- Gather suitable repair kits
+ elseif (p[2] == "repair") then
+
+ -- Get NPC's weapon
+ local obj_wep = npc:best_weapon()
+ local sec_wep = obj_wep and obj_wep:section()
+
+ -- Gather proper repair kits
+ local repair_kits = {
+ ["sharpening_stones"] = 0,
+ ["sewing_kit_b"] = 0,
+ }
+ if sec_wep then
+ local wep_type = ini_sys:r_string_ex(sec_wep,"repair_type") or ""
+ for sec,tier in pairs(fetch_items["repair"]) do
+ local kit_type = parse_list(ini_sys,sec,"repair_only",true)
+ if kit_type[wep_type] then
+ repair_kits[sec] = tier
+ end
+ end
+ end
+
+ itms = repair_kits
+
+ -- Gather suitable weapons
+ elseif (p[2] == "weapons") then
+ local f = faction_expansions.faction[npc_comm]
+ local npc_preference = f and f["weapon"] or ""
+
+ -- Collects weapons suitable for npc rank
+ local wpn_by_rank = {}
+ if fetch_items["weapons_" .. npc_rank] then
+ local tbl = fetch_items["weapons_" .. npc_rank]
+ for sec,tier in pairs(tbl) do
+ wpn_by_rank[sec] = tier
+ end
+ end
+
+ -- Collects weapons suitable for npc faction
+ local wpn_by_ref = {}
+ if fetch_items["weapons_" .. npc_preference] then
+ local tbl = fetch_items["weapons_" .. npc_preference]
+ for sec,tier in pairs(tbl) do
+ wpn_by_ref[sec] = tier
+ end
+ end
+
+ -- collect suitable weapons
+ local wpns = {}
+ for sec,tier in pairs(wpn_by_rank) do
+ if wpn_by_ref[sec] then
+ wpns[sec] = tier
+ end
+ end
+ for sec,tier in pairs(wpn_by_ref) do
+ if wpn_by_rank[sec] then
+ wpns[sec] = tier
+ end
+ end
+
+ if is_not_empty(wpns) then
+ itms = wpns
+ else
+ itms = fetch_items["weapons"]
+ end
+ else
+ itms = fetch_items[p[2]]
+ end
+
+ if (not itms) then
+ printe("! ERROR: %s | fetch list [%s] is invalid", p[1], p[2])
+ end
+
+ local min_count = (p[3] and tonumber( p[3] ) or 1)
+ local max_count = (p[4] and tonumber( p[4] ) or min_count)
+ sec = get_suitable_item(itms, npc_rank) or random_key_table(itms)
+ cnt = math.random( min_count, max_count )
+
+ -- Save chosen fetch item:
+ if (not DIALOG_ID[id]) then DIALOG_ID[id] = {} end
+ if (not DIALOG_ID[id][p[1]]) then DIALOG_ID[id][p[1]] = {} end
+
+ DIALOG_ID[id][p[1]].sec = sec
+ DIALOG_ID[id][p[1]].cnt = cnt
+ dialogs._FETCH_TEXT = ui_item.get_sec_name(sec)
+ save_var( db.actor, p[1], sec )
+ save_var( db.actor, (p[1] .. "_count"), cnt )
+
+ end
+
+ CreateTimeEvent(0,"setup_fetch_task", 0, postpone_fetch_for_next_frame, p[1], sec, cnt)
+end
+
+xr_effects.setup_supplies_fetch_task_lostzone_patch = function(actor,npc,p)
+ local npc = get_speaker(true)
+ local id = npc and npc:id()
+ local sec = DIALOG_ID[id] and DIALOG_ID[id][p[1]] and DIALOG_ID[id][p[1]].sec
+ local cnt = DIALOG_ID[id] and DIALOG_ID[id][p[1]] and DIALOG_ID[id][p[1]].cnt
+
+ if (sec and cnt and ini_sys:section_exist(sec)) then
+ dialogs._FETCH_TEXT = ui_item.get_sec_name(sec)
+ save_var( db.actor, p[1], sec )
+ save_var( db.actor, (p[1] .. "_count"), cnt )
+ else
+ local comm = npc and character_community(npc) or "stalker"
+ local itms = patch_general[comm] or patch_general["stalker"]
+ -- SMR
+ if smr_amain_mcm.get_config("smr_enabled") then
+ local itms = {}
+ for i=1,#faction_lookup do
+ if game_relations.is_factions_enemies(faction_lookup[i], comm) then
+ if (faction_lookup[i] == "killer") then comm = "merc"
+ elseif (faction_lookup[i] == "dolg") then comm = "duty"
+ else comm = faction_lookup[i]
+ end
+ local patch = comm .. "_patch"
+ itms[patch] = 0
+ end
+ end
+
+ if is_empty(itms) then
+ local t = smr_pop.get_faction_spawn_table()
+ local patch = t[math.random(#t)] .. "_patch"
+ itms[patch] = 0
+ end
+ end
+ sec = random_key_table(itms)
+ cnt = math.random(p[2] and tonumber(p[2]) or 1,p[3] and tonumber(p[3]) or 1)
+
+ -- Save chosen fetch item:
+ if (not DIALOG_ID[id]) then DIALOG_ID[id] = {} end
+ if (not DIALOG_ID[id][p[1]]) then DIALOG_ID[id][p[1]] = {} end
+
+ DIALOG_ID[id][p[1]].sec = sec
+ DIALOG_ID[id][p[1]].cnt = cnt
+ dialogs._FETCH_TEXT = ui_item.get_sec_name(sec)
+ save_var( db.actor, p[1], sec )
+ save_var( db.actor, (p[1] .. "_count"), cnt )
+ end
+
+ CreateTimeEvent(0,"setup_fetch_task", 0, postpone_fetch_for_next_frame, p[1], sec, cnt)
+end
+
+xr_effects.setup_generic_fetch_task = function(actor,npc,p)
+-- param1 - variable name
+-- param2 - count
+-- param3+ - sections
+
+ if (p[1] and p[2] and p[3]) then
+ local npc = get_speaker(true)
+ local id = npc and npc:id()
+ local sec = DIALOG_ID[id] and DIALOG_ID[id][p[1]] and DIALOG_ID[id][p[1]].sec
+ local cnt = DIALOG_ID[id] and DIALOG_ID[id][p[1]] and DIALOG_ID[id][p[1]].cnt
+
+ if (sec and cnt and ini_sys:section_exist(sec)) then
+ dialogs._FETCH_TEXT = ui_item.get_sec_name(sec)
+ save_var( db.actor, p[1], sec )
+ if (cnt > 1) then
+ save_var( db.actor, (p[1] .. "_count"), cnt )
+ end
+ else
+ sec = #p > 3 and p[math.random(3,#p)] or p[3]
+ if (sec and ini_sys:section_exist(sec)) then
+ cnt = tonumber(p[2]) or 1
+
+ -- Save chosen fetch item:
+ if (not DIALOG_ID[id]) then DIALOG_ID[id] = {} end
+ if (not DIALOG_ID[id][p[1]]) then DIALOG_ID[id][p[1]] = {} end
+
+ DIALOG_ID[id][p[1]].sec = sec
+ DIALOG_ID[id][p[1]].cnt = cnt
+ dialogs._FETCH_TEXT = ui_item.get_sec_name(sec)
+ save_var( db.actor, p[1], sec )
+ if (cnt > 1) then
+ save_var( db.actor, (p[1] .. "_count"), cnt )
+ end
+ else
+ printe("!ERROR: xr_effects:setup_generic_fetch_task - invalid section %s",sec)
+ end
+ end
+
+ CreateTimeEvent(0,"setup_fetch_task", 0, postpone_fetch_for_next_frame, p[1], sec, cnt)
+ end
+end
+
+
+---------------------------< Target functor >---------------------------
+task_functor.general_fetch_task = function(task_id,field,p,tsk)
+ if (field == "title") then
+ local fetch = db.actor and ui_item.get_sec_name(load_var(db.actor,task_id.."_fetch",""))
+ local count = fetch and load_var(db.actor,task_id.."_fetch_count") or 1
+ if (count > 1) then
+ return strformat((game.translate_string(p) or ""),fetch .. " x" .. tostring(count))
+ end
+ return strformat(game.translate_string(p) or "",fetch)
+ elseif (field == "descr") then
+ if (tsk.stage == 1) then
+ return game.translate_string("st_return_for_reward")
+ end
+ local fetch = db.actor and ui_item.get_sec_name(load_var(db.actor,task_id.."_fetch",""))
+ local count = fetch and load_var(db.actor,task_id.."_fetch_count") or 1
+ if (count > 1) then
+ return strformat((game.translate_string(p) or ""),fetch .. " x" .. tostring(count))
+ end
+ return strformat(game.translate_string(p) or "",fetch)
+ elseif (field == "target") then
+ if (tsk.stage == 1) then
+ local id = db.actor and load_var(db.actor,task_id.."_target_id") or tsk.task_giver_id
+ if (id) then
+ return id
+ end
+ local story_id = string.sub(task_id,1,string.find(task_id,"_task")-1)
+ local se_obj = get_story_se_object(story_id)
+ if (se_obj) then
+ return se_obj.id
+ end
+ end
+ end
+end
+
+task_functor.general_warfare_fetch_task = function(task_id,field,p,tsk) -- xQd, add the name and location of the warfare trader to the task description along with the fetch item
+ local id = tsk.task_giver_id
+ local se_obj = id and alife_object(id)
+ if not (se_obj) then
+ --printf("is_task_giver_valid se_obj nil id=%s %s",id,tsk.id)
+ return ""
+ else
+ local name = se_obj:character_name()
+ local lvl = --[[game.translate_string(se_obj.community) or]] game.translate_string(alife():level_name(game_graph():vertex(se_obj.m_game_vertex_id):level_id()))
+ if (field == "title") then
+ local fetch = db.actor and ui_item.get_sec_name(load_var(db.actor,task_id.."_fetch",""))
+ local count = fetch and load_var(db.actor,task_id.."_fetch_count") or 1
+ if (count > 1) then
+ return strformat((game.translate_string(p) or ""),fetch .. " x" .. tostring(count))
+ end
+ return strformat(game.translate_string(p) or "",fetch)
+ elseif (field == "descr") then
+ if (tsk.stage == 1) then
+ return game.translate_string("st_return_for_reward")
+ end
+ local fetch = db.actor and ui_item.get_sec_name(load_var(db.actor,task_id.."_fetch",""))
+ local count = fetch and load_var(db.actor,task_id.."_fetch_count") or 1
+ if (count > 1) then
+ return strformat((game.translate_string(p) or ""),name,lvl,fetch .. " x" .. tostring(count))
+ end
+ return strformat(game.translate_string(p) or "",name,lvl,fetch)
+ end
+ end
+end
+
+
+---------------------------< Status functor >---------------------------
+task_status_functor.actor_has_fetch_item = function(tsk,task_id)
+ local actor = db.actor
+ local section = actor and load_var(actor,task_id.."_fetch")
+ if (not section) then
+ return
+ end
+
+ local item = section and actor:object(section)
+ if (item ~= nil) then
+ if (task_id == "esc_2_12_stalker_nimble_task_1" or task_id == "jup_b220_trapper_task_3") then
+ if (item:condition() >= 0.9) then
+ tsk.stage = 1
+ else
+ tsk.stage = 0
+ end
+ else
+ local count = load_var(actor,task_id.."_fetch_count")
+ if (count and count > 1) then
+ local cnt = utils_item.get_amount(db.actor, section, 1)
+ if (cnt >= count) then
+ tsk.stage = 1
+ else
+ tsk.stage = 0
+ end
+ return
+ end
+ tsk.stage = 1 -- should never happen but in such case let player finish quest for free
+ end
+
+ elseif section and sfind(section,"af_") then
+ if actor:object(section .. "_af_aam")
+ or actor:object(section .. "_af_iam")
+ or actor:object(section .. "_af_aac")
+ or actor:object(section .. "_lead_box")
+ then
+ tsk.stage = 1
+ else
+ tsk.stage = 0
+ end
+ else
+ tsk.stage = 0
+ end
+end
+
+task_status_functor.actor_has_fetch_weapon_warfare = function(tsk,task_id) -- xQd, added this for warfare fetch weapon tasks
+ if not (db.actor) then
+ return
+ end
+ local section = db.actor and load_var(db.actor,task_id.."_fetch")
+ local item = section and db.actor:object(section)
+ if (item ~= nil) then
+ if (item:condition() >= 0.60) then
+ tsk.stage = 1
+ else
+ tsk.stage = 0
+ end
+ else
+ tsk.stage = 0
+ end
+end
+
+
+---------------------------< Callbacks >---------------------------
+local function save_state(m_data)
+ m_data.tasks_fetch_ids = DIALOG_ID
+end
+
+local function load_state(m_data)
+ DIALOG_ID = m_data.tasks_fetch_ids or {}
+end
+
+local function on_before_level_changing()
+ empty_table(DIALOG_ID)
+ alife_storage_manager.get_state().tasks_fetch_ids = nil
+ printdbg("~ tasks_fetch | cleaned fetch list for npcs")
+end
+
+function on_game_start()
+ local ini_fetch = ini_file("items\\settings\\fetch_list.ltx")
+ local n = 0
+ local result, id, value = "","",""
+
+ local list = {}
+ n = ini_fetch:line_count("fetch_list")
+ for i=0,n-1 do
+ result, id, value = ini_fetch:r_line_ex("fetch_list",i,"","")
+ list[#list + 1] = id
+ end
+
+ n = ini_fetch:line_count("fetch_tiers")
+ for i=0,n-1 do
+ result, id, value = ini_fetch:r_line_ex("fetch_tiers",i,"","")
+ if id and value then
+ fetch_rank_tier[id] = {}
+ fetch_rank_tier[id][0] = true
+ local nums = str_explode(value,",")
+ for j=1,#nums do
+ local m = tonumber(nums[j]) or 0
+ fetch_rank_tier[id][m] = true
+ end
+ end
+ end
+
+ for k=1,#list do
+ local category = list[k]
+ fetch_items[category] = {}
+
+ n = ini_fetch:line_count(category)
+ for i=0,n-1 do
+ result, id, value = ini_fetch:r_line_ex(category,i,"","")
+ if id and ini_sys:section_exist(id) then
+ fetch_items[category][id] = (value == "true" and 0) or ini_sys:r_float_ex(id,"tier") or 0
+ else
+ printe("! WARNING: fetch_list.ltx | wrong section name [%s]", id)
+ end
+ end
+ end
+
+ RegisterScriptCallback("save_state",save_state)
+ RegisterScriptCallback("load_state",load_state)
+ RegisterScriptCallback("on_before_level_changing",on_before_level_changing)
+end
\ No newline at end of file
diff --git a/mods/Zone Customization Project/gamedata/scripts/ui_mm_faction_select.script b/mods/Zone Customization Project/gamedata/scripts/ui_mm_faction_select.script
new file mode 100644
index 00000000..3c104141
--- /dev/null
+++ b/mods/Zone Customization Project/gamedata/scripts/ui_mm_faction_select.script
@@ -0,0 +1,1738 @@
+--[[
+ Remade by Tronex
+ New Game Menu (Fresh Start)
+ Last modification: 2020/3/13
+
+ + Inventory simulator
+ + Ironman mode save killer
+ + Setting up new games
+ + Support for warfare
+ + Support for new factions
+--]]
+
+
+----------------------------------------------------------------------
+-- Controls
+----------------------------------------------------------------------
+local ini_itm = ini_file("items\\settings\\new_game_loadouts.ltx")
+local ini_map = ini_file("plugins\\new_game_start_locations.ltx")
+local ini_diff = ini_file("plugins\\difficulty.ltx")
+
+local faction_psi_off = {
+ ["monolith"] = true,
+ ["greh"] = true,
+ ["zombied"] = true,
+}
+
+local faction_no_story = {
+ ["zombied"] = true,
+ --["renegade"] = true,
+ --["greh"] = true,
+ --["isg"] = true,
+}
+
+local faction_limited_playthrough = {
+ ["isg"] = true,
+}
+
+
+----------------------------------------------------------------------
+-- Callbacks
+----------------------------------------------------------------------
+local spawn_path, start_pos, saved_bolt
+local function on_game_load(binder)
+ local config = axr_main.config
+ if not (config) then
+ return
+ end
+
+ local se_actor = alife():actor()
+ local need_save
+
+ -- Gameplay Options
+ if (USE_MARSHAL) then
+ if (config:r_value("character_creation","new_game_hardcore_mode",1) == true) then
+ -- shitty way to make a uuid but should be good enough to track the same saves
+ local ironman = {}
+ ironman.uuid = GAME_VERSION .. "_" .. tostring(math.random(100)) .. tostring(math.random()) .. tostring(math.random(1000))
+ ironman.death_limit = config:r_value("character_creation","new_game_hardcore_mode_lives",2) or 1
+ ironman.life_feature = config:r_value("character_creation","new_game_hardcore_mode_regenerate",2) and true or false
+ ironman.life_cycle = config:r_value("character_creation","new_game_hardcore_mode_regenerate",2) or 120
+ ironman.death_count = 0
+ ironman.granted_lives = 0
+ ironman.sleep_hrs = 0
+ alife_storage_manager.get_state().ironman = ironman
+
+ config:w_value("character_creation","new_game_hardcore_mode")
+ config:w_value("character_creation","new_game_hardcore_mode_lives")
+ config:w_value("character_creation","new_game_hardcore_mode_regenerate")
+ need_save = true
+
+ printdbg("- Ironman mode | Enabled")
+ end
+ if (config:r_value("character_creation","new_game_survival_mode",1) == true) then
+ alife_storage_manager.get_state().enable_survival_mode = true
+ config:w_value("character_creation","new_game_survival_mode")
+ need_save = true
+ end
+ if (config:r_value("character_creation","new_game_azazel_mode",1) == true) then
+ alife_storage_manager.get_state().enable_azazel_mode = true
+ alife_storage_manager.get_state().opened_routes = true
+ config:w_value("character_creation","new_game_azazel_mode")
+ need_save = true
+ end
+ if (config:r_value("character_creation","new_game_warfare",1) == true) then
+ alife_storage_manager.get_state().enable_warfare_mode = true
+ config:w_value("character_creation","new_game_warfare")
+ need_save = true
+ end
+ if (config:r_value("character_creation","new_game_campfire_mode",1) == true) then
+ alife_storage_manager.get_state().enable_campfire_mode = true
+ config:w_value("character_creation","new_game_campfire_mode")
+ need_save = true
+ end
+ if (config:r_value("character_creation","new_game_conditions_mode",1) == true) then
+ alife_storage_manager.get_state().enable_conditions_mode = true
+ config:w_value("character_creation","new_game_conditions_mode")
+ need_save = true
+ end
+ if (config:r_value("character_creation","new_game_timer_mode",2)) then
+ alife_storage_manager.get_state().enable_timer_mode = config:r_value("character_creation","new_game_timer_mode",2)
+ config:w_value("character_creation","new_game_timer_mode")
+ need_save = true
+ end
+ if (config:r_value("character_creation","new_game_opened_routes",1) == true) then
+ alife_storage_manager.get_state().opened_routes = true
+ config:w_value("character_creation","new_game_opened_routes")
+ need_save = true
+ end
+
+ -- Gameplay
+ if (config:r_value("character_creation","new_game_difficulty",2)) then
+ local difficulty = {}
+ local diff = config:r_value("character_creation","new_game_difficulty",2)
+
+ difficulty["type"] = diff
+
+ difficulty["actor_immunities"] = ini_diff:r_float_ex("gdiff_" .. diff , "actor_immunities") or 1
+ difficulty["hit_power"] = ini_diff:r_float_ex("gdiff_" .. diff , "hit_power") or 1
+ difficulty["dispersion_base"] = ini_diff:r_float_ex("gdiff_" .. diff , "dispersion_base") or 1
+ difficulty["dispersion_factor"] = ini_diff:r_float_ex("gdiff_" .. diff , "dispersion_factor") or 1
+ difficulty["power_loss_bias"] = ini_diff:r_float_ex("gdiff_" .. diff , "power_loss_bias") or 0.2
+ difficulty["weight"] = ini_diff:r_float_ex("gdiff_" .. diff , "max_weight") or 60
+ difficulty["thirst"] = ini_diff:r_bool_ex("gdiff_" .. diff , "thirst") or false
+ difficulty["sleep"] = ini_diff:r_bool_ex("gdiff_" .. diff , "sleep") or false
+ difficulty["radiation_day"] = ini_diff:r_bool_ex("gdiff_" .. diff , "radiation_day") or false
+
+ alife_storage_manager.get_state().diff_game = difficulty
+
+ config:w_value("character_creation","new_game_difficulty")
+ need_save = true
+ end
+
+ -- Economy
+ if (config:r_value("character_creation","new_game_economy",2)) then
+ local economy = {}
+ local eco = config:r_value("character_creation","new_game_economy",2)
+
+ economy["type"] = eco
+
+ economy["goodwill"] = ini_diff:r_float_ex("econ_" .. eco , "goodwill") or 1
+ economy["rewards"] = ini_diff:r_float_ex("econ_" .. eco , "rewards") or 1
+ economy["repair"] = ini_diff:r_float_ex("econ_" .. eco , "repair") or 1
+ economy["upgrade"] = ini_diff:r_float_ex("econ_" .. eco , "upgrade") or 1
+ economy["buy"] = ini_diff:r_float_ex("econ_" .. eco , "buy") or 1
+ economy["sell"] = ini_diff:r_float_ex("econ_" .. eco , "sell") or 1
+ economy["artefact"] = ini_diff:r_float_ex("econ_" .. eco , "artefact") or 1
+ economy["loots"] = ini_diff:r_float_ex("econ_" .. eco , "loots") or 1
+ economy["money_loots"] = ini_diff:r_float_ex("econ_" .. eco , "money_loots") or 1
+ economy["stash_chance"] = ini_diff:r_float_ex("econ_" .. eco , "stash_chance") or 0.4
+ economy["weapon_degradation"] = ini_diff:r_float_ex("econ_" .. eco , "weapon_degradation") or 1
+ economy["battery_consumption"] = ini_diff:r_float_ex("econ_" .. eco , "battery_consumption") or 1
+ economy["random_items"] = ini_diff:r_float_ex("econ_" .. eco , "random_items") or 0.5
+ economy["scope_chance"] = ini_diff:r_float_ex("econ_" .. eco , "scope_chance") or 0.15
+ economy["restock"] = ini_diff:r_float_ex("econ_" .. eco , "restock") or 24
+ economy["percentage_parts"] = ini_diff:r_bool_ex("econ_" .. eco , "percentage_parts") or false
+ economy["limited_bolts"] = ini_diff:r_bool_ex("econ_" .. eco , "limited_bolts") or false
+ economy["arty_degradation"] = ini_diff:r_bool_ex("econ_" .. eco , "arty_degradation") or false
+ economy["bkpk_degradation"] = ini_diff:r_bool_ex("econ_" .. eco , "bkpk_degradation") or false
+
+ alife_storage_manager.get_state().diff_eco = economy
+
+ config:w_value("character_creation","new_game_economy")
+ need_save = true
+ end
+ end
+
+ -- Name
+ local new_character_name = config:r_value("character_creation","new_game_character_name",3) or ""
+ if (new_character_name and new_character_name ~= "") then
+ config:w_value("character_creation","new_game_character_name")
+ need_save = true
+
+ new_character_name = new_character_name:gsub("_"," ")
+
+ se_actor:set_character_name(new_character_name)
+ end
+
+ -- Icon
+ local new_character_icon = config:r_value("character_creation","new_game_icon",3)
+ if (new_character_icon and new_character_icon ~= "") then
+ db.actor_binder.character_icon = new_character_icon
+
+ config:w_value("character_creation","new_game_icon")
+ need_save = true
+ end
+
+ -- Faction
+ local faction = config:r_value("character_creation","new_game_faction",3) or ""
+
+
+ if (faction and faction ~= "") then
+ config:w_value("character_creation","new_game_faction")
+ need_save = true
+
+ -- Faction Spawn Position
+ local start_location = config:r_value("character_creation","new_game_map")
+ config:w_value("character_creation","new_game_map")
+
+ if start_location and start_location ~= "" then
+ start_pos = {}
+ table.insert(start_pos,ini_map:r_float_ex(start_location, "lvid"))
+ table.insert(start_pos,ini_map:r_float_ex(start_location, "gvid"))
+ table.insert(start_pos,vector():set(ini_map:r_float_ex(start_location,"x"),ini_map:r_float_ex(start_location,"y"),ini_map:r_float_ex(start_location,"z")))
+ else
+ spawn_path = nil --patrol("spawn_player_"..faction)
+ end
+
+ -- Enable the story quests + Drx questlines, or disable their components depending on player choice and faction.
+ if (config:r_value("character_creation","new_game_story_mode",1) == true) and (not has_alife_info("story_mode_disabled")) then
+ if faction_psi_off[faction] then
+ -- Turn off the Miracle Machine:
+ give_info("yan_labx16_switcher_1_off")
+ give_info("yan_labx16_switcher_2_off")
+ give_info("yan_labx16_switcher_3_off")
+ give_info("yan_labx16_switcher_primary_off")
+
+ -- Turn off the Brain Scorcher:
+ give_info("bar_deactivate_radar_done")
+
+ -- Turn off the Generators:
+ give_info("warlab_deactivate_generators_done")
+ end
+
+ -- Allow Sin squads to spawn if player is Sinner or Monolith
+ if (faction == "greh") or (faction == "monolith") then
+ give_info("mortal_sin")
+ end
+
+ -- Allow ISG squads to spawn if player is ISG
+ if (faction == "isg") then
+ give_info("isg_entered_the_zone")
+ end
+
+ -- For story mode, Mercs and ISG will be enemies
+ if (faction ~= "isg") then
+ local fac_1 = {"killer","actor_killer"}
+ local fac_2 = {"isg","actor_isg"}
+ for i=1,2 do
+ for j=1,2 do
+ game_relations.set_factions_community(fac_1[i], fac_2[j], -4000)
+ game_relations.set_factions_community(fac_2[j], fac_1[i], -4000)
+ save_var( db.actor, ("drx_df_" .. fac_1[i] .. "_" .. fac_2[j] .. "_relations"), -4000)
+ save_var( db.actor, ("drx_df_" .. fac_2[j] .. "_" .. fac_1[i] .. "_relations"), -4000)
+ end
+ end
+ end
+
+ -- Faction defined here won't have access to all dialog
+ -- This is important for ISG player to prevent him from triggering main LTTZ quests, or changing their factions in Story mode
+ if faction_limited_playthrough[faction] then
+ give_info("faction_limited_playthrough")
+ give_info("faction_limited_playthrough_cf")
+ end
+
+ -- Determine total number of storyline tasks to complete for this game:
+ save_var( db.actor, "drx_sl_total_task_number", math.random( 8, 12 ) ) -- Set to range of total meet honcho tasks to complete to finish game
+ save_var( db.actor, "drx_sl_current_task_number", 1 )
+
+ -- Setup DRX questlines
+ xr_effects.drx_sl_setup_questlines( nil, nil, {faction} )
+ else
+ -- Compatibility with many story-specific mechanics.
+ give_info("story_mode_disabled")
+ -- Turn off the Miracle Machine:
+ give_info("yan_labx16_switcher_1_off")
+ give_info("yan_labx16_switcher_2_off")
+ give_info("yan_labx16_switcher_3_off")
+ give_info("yan_labx16_switcher_primary_off")
+
+ -- Turn off the Brain Scorcher:
+ give_info("bar_deactivate_radar_done")
+
+ -- Turn off the Generators:
+ give_info("warlab_deactivate_generators_done")
+
+ -- Allow Sin and ISG squads to spawn:
+ give_info("mortal_sin")
+ give_info("isg_entered_the_zone")
+ end
+
+ config:w_value("character_creation","new_game_story_mode") -- clear value
+
+ -- Set and save the current faction for later uses
+ db.actor:set_character_community("actor_" .. faction, 0, 0)
+ alife_storage_manager.get_state().default_faction = faction
+ printdbg("- Default community setup: %s",faction)
+
+ -- Reset player goodwill
+ local communities = utils_obj.get_communities_list( )
+ for i, community in pairs( communities ) do
+ relation_registry.set_community_goodwill( community, 0, 0 )
+ end
+
+ -- Money
+ local money = config:r_value("character_creation","new_game_money",2)
+ if money and money ~= "" then
+ db.actor:give_money(-db.actor:money()+money)
+ end
+ config:w_value("character_creation","new_game_money")
+
+ -- MLR - open faction routes
+ if (not mlr_utils.load_var("routes_faction")) then
+ mlr_utils.save_var("routes_faction", faction)
+ end
+
+ -- Loadout
+ local sim = alife()
+ local loadout = config:r_value("character_creation","new_game_loadout",3)
+ local ammo_to_spawn = {}
+ if loadout and loadout ~= "" then
+ local t = str_explode(loadout,",")
+ for i=1, #t do
+ if ini_sys:section_exist(t[i]) then
+ local to_change = { state = false }
+ if ini_sys:r_string_ex(t[i],"ammo_class") then
+ local slot = ini_sys:r_float_ex(t[i],"slot")
+ local ani_slot = ini_sys:r_float_ex(t[i],"animation_slot")
+ if slot and (((slot == 0) and (ani_slot == 1)) or (slot == 1) or (slot == 2)) then -- retarded way to know that we are dealing with weapon
+ local ammo_class = ini_sys:r_string_ex(t[i],"ammo_class")
+ local ammo_tbl = str_explode(ammo_class,",")
+ local ammo_type = ini_itm:r_string_ex("ammo_type_per_wpn",t[i])
+ local sec_ammo = ammo_tbl[1] --ammo_tbl[math.random(#ammo_tbl)]
+ if ammo_type and ini_sys:section_exist(ammo_type) then
+ to_change.state = true
+ to_change.weapon_sec = t[i]
+ to_change.ammo_sec = sec_ammo
+ sec_ammo = ammo_type
+ end
+ local box_size = (ini_sys:r_float_ex(sec_ammo, "box_size") or 50)
+ local count = ini_itm:r_float_ex("ammo_count",sec_ammo)
+ if (not count) then
+ count = (box_size < 30) and (2 * box_size) or box_size
+ end
+ ammo_to_spawn[sec_ammo] = ammo_to_spawn[sec_ammo] and (ammo_to_spawn[sec_ammo] + count) or count
+ end
+ end
+ local se_obj = alife_create_item(t[i], db.actor)
+
+ -- save unique ammo type
+ if se_obj and (to_change.state == true) and to_change.weapon_sec and to_change.ammo_sec then
+ if (not alife_storage_manager.get_state().start_wpn_ammo) then
+ alife_storage_manager.get_state().start_wpn_ammo = {}
+ end
+
+ alife_storage_manager.get_state().start_wpn_ammo[se_obj.id] = sec_ammo
+ end
+
+ -- save bolt type
+ if (t[i] == "bolt") or (t[i] == "bolt_bullet") then
+ saved_bolt = t[i]
+ end
+ end
+ end
+ end
+ for sec,cnt in pairs(ammo_to_spawn) do
+ alife_create_item(sec, db.actor, { ammo = cnt })
+ end
+ --alife_create_item("device_torch", db.actor) -- base Torch
+ config:w_value("character_creation","new_game_loadout")
+
+ se_actor:set_profile_name("actor_"..faction)
+ end
+
+ if (need_save) then
+ config:save()
+ end
+end
+
+local function actor_on_first_update(binder,delta)
+ if (spawn_path) then
+ start_pos = {}
+ start_pos[1] = spawn_path:level_vertex_id(0)
+ start_pos[2] = spawn_path:game_vertex_id(0)
+ start_pos[3] = spawn_path:point(0)
+ end
+
+ if saved_bolt then
+ alife_storage_manager.get_state().bolt_first = saved_bolt
+ end
+
+ if (start_pos and #start_pos == 3) then
+ local warfare_enabled = alife_storage_manager.get_state().enable_warfare_mode
+ if warfare_enabled and (warfare_options.options.all_out_war) then
+ warfare.apply_all_out_war()
+ end
+
+ if warfare_enabled and (warfare_options.options.random_starting_locations) then
+ warfare.initialize_random_starting_locations()
+ else
+ ChangeLevel(start_pos[3],start_pos[1],start_pos[2],VEC_ZERO)
+ end
+ end
+end
+
+function on_game_start()
+ RegisterScriptCallback("on_game_load",on_game_load)
+ RegisterScriptCallback("actor_on_first_update",actor_on_first_update)
+end
+
+
+----------------------------------------------------------------------
+-- UI
+----------------------------------------------------------------------
+class "UINewGame" (CUIScriptWnd)
+
+function UINewGame:__init(owner) super()
+ self.owner = owner
+ self.ini_ico = ini_file("plugins\\player_icons.ltx")
+ self.ini_opt = ini_file("plugins\\new_game_options.ltx")
+
+ -- Tables
+ self.table_faction = {
+ ["stalker"] = true,
+ ["dolg"] = true,
+ ["freedom"] = true,
+ ["csky"] = true,
+ ["ecolog"] = true,
+ ["killer"] = true,
+ ["army"] = true,
+ ["bandit"] = true,
+ ["monolith"] = true,
+ }
+ local cfg = axr_main.config
+ if cfg:r_value("unlocked_factions","renegade",1) == true then
+ self.table_faction["renegade"] = true
+ end
+ if cfg:r_value("unlocked_factions","greh",1) == true then
+ self.table_faction["greh"] = true
+ end
+ if cfg:r_value("unlocked_factions","isg",1) == true then
+ self.table_faction["isg"] = true
+ end
+
+ self.table_icon = {}
+ self.table_map = {}
+ self.table_difficulty = {"st_diff_1","st_diff_2","st_diff_3"}
+ self.table_economy = {"st_econ_1","st_econ_2","st_econ_3"}
+
+ self.table_hardcore_lives = {}
+ local n = self.ini_opt:line_count("new_game_hardcore_lives") or 0
+ for i=0, n-1 do
+ local result, id, value = self.ini_opt:r_line("new_game_hardcore_lives",i,"","" )
+ local t = str_explode(value,",")
+ local size = #self.table_hardcore_lives + 1
+ self.table_hardcore_lives[size] = {}
+ self.table_hardcore_lives[size][1] = tonumber(t[1])
+ self.table_hardcore_lives[size][2] = tostring(t[2])
+ end
+
+ self.table_hardcore_regen = {{nil,"st_off"}}
+ local n = self.ini_opt:line_count("new_game_hardcore_regen") or 0
+ for i=0, n-1 do
+ local result, id, value = self.ini_opt:r_line("new_game_hardcore_regen",i,"","" )
+ local t = str_explode(value,",")
+ local size = #self.table_hardcore_regen + 1
+ self.table_hardcore_regen[size] = {}
+ self.table_hardcore_regen[size][1] = tonumber(t[1])
+ self.table_hardcore_regen[size][2] = tostring(t[2])
+ end
+
+ self.table_timer = {{nil,"st_off"}}
+ local n = self.ini_opt:line_count("new_game_timer") or 0
+ for i=0, n-1 do
+ local result, id, value = self.ini_opt:r_line("new_game_timer",i,"","" )
+ local t = str_explode(value,",")
+ local size = #self.table_timer + 1
+ self.table_timer[size] = {}
+ self.table_timer[size][1] = tonumber(t[1])
+ self.table_timer[size][2] = tostring(t[2])
+ end
+
+ -- Selected choices
+ self.selected_faction = "stalker"
+ self.selected_icon = nil
+ self.selected_map = nil
+ self.selected_money = nil
+ self.selected_difficulty = self.table_difficulty[1]
+ self.selected_economy = self.table_economy[1]
+ self.selected_hardcore_lives = self.table_hardcore_lives[1]
+ self.selected_hardcore_regen = self.table_hardcore_regen[1]
+ self.selected_timer = self.table_timer[1]
+ self.points_left = ini_itm:r_float_ex("points","total_points_eco_1") or 1000
+ self.points_used = 0
+
+ -- Utility
+ self.access = true
+
+ -- Prepare
+ self:SetWndRect (Frect():set(0,0,1024,768))
+ self:Enable (true)
+
+ self.faction_cell = {
+ ["stalker"] = { row = 1 , col = 1},
+ ["bandit"] = { row = 1 , col = 2},
+ ["csky"] = { row = 1 , col = 3},
+ ["dolg"] = { row = 2 , col = 1},
+ ["freedom"] = { row = 2 , col = 2},
+ ["killer"] = { row = 2 , col = 3},
+ ["army"] = { row = 3 , col = 1},
+ ["ecolog"] = { row = 3 , col = 2},
+ ["monolith"] = { row = 3 , col = 3},
+ ["renegade"] = { row = 4 , col = 1},
+ ["greh"] = { row = 4 , col = 2},
+ ["isg"] = { row = 4 , col = 3},
+ }
+
+ -- Main
+ self:Main_Controls()
+ self:Main_CallBacks()
+
+ -- Faction Select
+ self:PopupFaction_Controls()
+ --self:PopupFaction_Callbacks()
+ self:PopupFaction_Show(false)
+
+ -- Icon Select
+ self:PopupIcon_Controls()
+ self:PopupIcon_Callbacks()
+ self:PopupIcon_Show(false)
+end
+
+function UINewGame:__finalize()
+
+end
+
+function UINewGame:Main_Controls()
+ local xml = CScriptXmlInit()
+ self.xml = xml
+ xml:ParseFile ("ui_mm_faction_select.xml")
+
+ xml:InitStatic ("background", self)
+
+ -- Background
+ self.dialog = xml:InitStatic("main_dialog:frame_back", self)
+
+
+ -- Boxes
+ self.box_map = xml:InitStatic("main_dialog:box_map",self.dialog)
+ self.box_faction = xml:InitStatic("main_dialog:box_faction",self.dialog)
+ self.box_icon = xml:InitStatic("main_dialog:box_icon",self.dialog)
+
+ self.box_item = xml:InitStatic("main_dialog:box_item",self.dialog)
+ self.box_item_temp = xml:InitStatic("main_dialog:box_item",self.dialog)
+
+
+ -- Main frame
+ self.main_frame = xml:InitStatic("main_dialog:frame_front",self.dialog)
+
+
+ -- Interactive Text
+ self.text_descr = xml:InitTextWnd("main_dialog:text_descr",nil)
+ self.scroll_desc = xml:InitScrollView("main_dialog:scroll_desc", self.dialog)
+ self.scroll_desc:AddWindow(self.text_descr, true)
+ self.text_descr:SetAutoDelete(false)
+
+ self.character_name = xml:InitEditBox("main_dialog:input_name",self.dialog)
+ self:Register(self.character_name,"input_name")
+ self.character_name:SetText("Stalker") -- Set Default Name
+
+ self.text_relations = xml:InitTextWnd("main_dialog:text_relations",self.dialog)
+ self.text_money = xml:InitTextWnd("main_dialog:text_money",self.dialog)
+ self.text_points_left = xml:InitTextWnd("main_dialog:text_points_left",self.dialog)
+ self.text_points_used = xml:InitTextWnd("main_dialog:text_points_used",self.dialog)
+
+ -- Static Text
+ xml:InitStatic("main_dialog:cap_character",self.dialog)
+ xml:InitStatic("main_dialog:cap_options",self.dialog)
+ xml:InitStatic("main_dialog:cap_inventory",self.dialog)
+ xml:InitStatic("main_dialog:cap_loadout",self.dialog)
+
+ xml:InitStatic("main_dialog:cap_name",self.dialog)
+ xml:InitStatic("main_dialog:cap_money",self.dialog)
+ xml:InitStatic("main_dialog:cap_points_left",self.dialog)
+ xml:InitStatic("main_dialog:cap_points_used",self.dialog)
+
+
+ -- Main Buttons
+ local btn = xml:Init3tButton("main_dialog:btn_start", self.dialog)
+ self:Register(btn,"btn_start")
+
+ btn = xml:Init3tButton("main_dialog:btn_back", self.dialog)
+ self:Register(btn,"btn_back")
+
+ btn = xml:Init3tButton("main_dialog:btn_random", self.dialog)
+ self:Register(btn,"btn_random")
+
+ btn = xml:Init3tButton("main_dialog:btn_faction", self.dialog)
+ self:Register(btn,"btn_faction")
+
+ btn = xml:Init3tButton("main_dialog:btn_icon", self.dialog)
+ self:Register(btn,"btn_icon")
+
+ self.list_map = xml:InitComboBox("main_dialog:list_map", self.dialog)
+ self.list_map:SetAutoDelete(true)
+ self:Register(self.list_map, "list_map")
+
+
+ -- Item Lists
+ self.CC = {}
+ self.CC["inventory"] = utils_ui.UICellContainer("inventory", self, nil, "main_dialog:cont_inv", self.dialog)
+ self.CC["loadout"] = utils_ui.UICellContainer("loadout", self, nil, "main_dialog:cont_loadout", self.dialog)
+
+ for name,cc in pairs(self.CC) do
+ cc.showcase = true
+ cc.disable_drag = true
+ cc.disable_stack = true
+ cc:SetGridSpecs(35, 2)
+ end
+
+ self.ck_reset = xml:Init3tButton("main_dialog:check_reset", self.dialog)
+ self:Register(self.ck_reset,"check_reset")
+
+ -- Options
+ self.scroll_options = xml:InitScrollView("main_dialog:scroll_options", self.dialog)
+ self.templ_options = xml:InitStatic("main_dialog:templ_options",nil)
+ if (USE_MARSHAL) then
+ self.list_difficulty_cap = xml:InitStatic("main_dialog:list_difficulty_cap",self.dialog)
+ self.list_difficulty = xml:InitComboBox("main_dialog:list_difficulty", self.dialog)
+ self.list_difficulty:SetAutoDelete(true)
+ self:Register(self.list_difficulty, "list_difficulty")
+ self:LoadDifficulty()
+
+ self.list_economy_cap = xml:InitStatic("main_dialog:list_economy_cap",self.dialog)
+ self.list_economy = xml:InitComboBox("main_dialog:list_economy", self.dialog)
+ self.list_economy:SetAutoDelete(true)
+ self:Register(self.list_economy, "list_economy")
+ self:LoadEconomy()
+
+ self.ck_story_cap = xml:InitStatic("main_dialog:options:cap_check_story",self.templ_options)
+ self.ck_story = xml:InitCheck("main_dialog:options:check_story", self.templ_options)
+ self:Register(self.ck_story,"check_story")
+ self.ck_story:SetCheck(true) -- ON by default
+
+ self.ck_hardcore_cap = xml:InitStatic("main_dialog:options:cap_check_hardcore",self.templ_options)
+ self.ck_hardcore = xml:InitCheck("main_dialog:options:check_hardcore", self.templ_options)
+ self:Register(self.ck_hardcore,"check_hardcore")
+
+ self.ck_azazel_mode_cap = xml:InitStatic("main_dialog:options:cap_check_azazel_mode",self.templ_options)
+ self.ck_azazel_mode = xml:InitCheck("main_dialog:options:check_azazel_mode", self.templ_options)
+ self:Register(self.ck_azazel_mode,"check_azazel_mode")
+
+ self.ck_survival_cap = xml:InitStatic("main_dialog:options:cap_check_survival",self.templ_options)
+ self.ck_survival = xml:InitCheck("main_dialog:options:check_survival", self.templ_options)
+ self:Register(self.ck_survival,"check_survival")
+
+ self.ck_warfare_cap = xml:InitStatic("main_dialog:options:cap_check_warfare",self.templ_options)
+ self.ck_warfare = xml:InitCheck("main_dialog:options:check_warfare", self.templ_options)
+ self:Register(self.ck_warfare,"check_warfare")
+
+ self.ck_campfire_cap = xml:InitStatic("main_dialog:options:cap_check_campfire",self.templ_options)
+ self.ck_campfire = xml:InitCheck("main_dialog:options:check_campfire", self.templ_options)
+ self:Register(self.ck_campfire,"check_campfire")
+
+ self.ck_routes_cap = xml:InitStatic("main_dialog:options:cap_check_routes",self.templ_options)
+ self.ck_routes = xml:InitCheck("main_dialog:options:check_routes", self.templ_options)
+ self:Register(self.ck_routes,"check_routes")
+ self.ck_routes:SetCheck(true) -- ON by default
+
+ self.ck_conditions_cap = xml:InitStatic("main_dialog:options:cap_check_conditions",self.templ_options)
+ self.ck_conditions = xml:InitCheck("main_dialog:options:check_conditions", self.templ_options)
+ self:Register(self.ck_conditions,"check_conditions")
+
+ self.list_hardcore_lives_cap = xml:InitStatic("main_dialog:options:cap_list_hardcore_lives",self.templ_options)
+ self.list_hardcore_lives = xml:InitComboBox("main_dialog:options:list_hardcore_lives", self.templ_options)
+ self.list_hardcore_lives:SetAutoDelete(true)
+ self:Register(self.list_hardcore_lives, "list_hardcore_lives")
+ self:LoadHardcoreLives()
+
+ self.list_hardcore_regen_cap = xml:InitStatic("main_dialog:options:cap_list_hardcore_regen",self.templ_options)
+ self.list_hardcore_regen = xml:InitComboBox("main_dialog:options:list_hardcore_regen", self.templ_options)
+ self.list_hardcore_regen:SetAutoDelete(true)
+ self:Register(self.list_hardcore_regen, "list_hardcore_regen")
+ self:LoadHardcoreRegen()
+
+ self.list_timer_cap = xml:InitStatic("main_dialog:options:cap_list_timer",self.templ_options)
+ self.list_timer = xml:InitComboBox("main_dialog:options:list_timer", self.templ_options)
+ self.list_timer:SetAutoDelete(true)
+ self:Register(self.list_timer, "list_timer")
+ self:LoadTimer()
+
+ self.ck_states = {
+ --["box_faction"] = false,
+ --["box_icon"] = false,
+ --["list_map"] = false,
+ --["ck_reset"] = false,
+
+ ["ck_survival"] = false,
+ ["ck_hardcore"] = false,
+ ["ck_azazel_mode"] = false,
+ ["ck_story"] = false,
+ ["ck_campfire"] = false,
+ ["ck_conditions"] = false,
+ ["ck_routes"] = false,
+ ["ck_warfare"] = false,
+
+ ["list_difficulty"] = false,
+ ["list_economy"] = false,
+ ["list_hardcore_lives"] = false,
+ ["list_hardcore_regen"] = false,
+ ["list_timer"] = false
+ }
+ end
+ self.scroll_options:AddWindow(self.templ_options, true)
+ self.templ_options:SetAutoDelete(false)
+
+ self.item_info = utils_ui.UIInfoItem(self, 1000)
+
+ -- Update info
+ self:UpdateAll(false)
+
+ -- Hint Window
+ self.hint_wnd = utils_ui.UIHint(self)
+
+end
+
+function UINewGame:Main_CallBacks()
+ self:AddCallback("btn_start", ui_events.BUTTON_CLICKED, self.OnStartGame, self)
+ self:AddCallback("btn_random", ui_events.BUTTON_CLICKED, self.OnRandomize, self)
+ self:AddCallback("btn_back", ui_events.BUTTON_CLICKED, self.OnQuit, self)
+
+ self:AddCallback("btn_faction", ui_events.BUTTON_CLICKED, self.OnFactionClicked, self)
+ self:AddCallback("btn_icon", ui_events.BUTTON_CLICKED, self.OnIconClicked, self)
+
+ self:AddCallback("list_map", ui_events.LIST_ITEM_SELECT, self.OnSelectMap, self)
+ self:AddCallback("check_reset", ui_events.BUTTON_CLICKED, self.OnCheckResetList, self)
+
+ self:AddCallback("button_inv", ui_events.BUTTON_CLICKED, self.OnInvCell_Clicked, self)
+ self:AddCallback("button_loadout", ui_events.BUTTON_CLICKED, self.OnLoadoutCell_Clicked, self)
+
+ self:AddCallback("check_story", ui_events.BUTTON_CLICKED, self.OnCheckSetStory, self)
+ self:AddCallback("check_survival", ui_events.BUTTON_CLICKED, self.OnCheckSetSurvival, self)
+ self:AddCallback("check_azazel_mode", ui_events.BUTTON_CLICKED, self.OnCheckSetAzazel, self)
+ self:AddCallback("check_warfare", ui_events.BUTTON_CLICKED, self.OnCheckSetWarfare, self)
+ self:AddCallback("list_difficulty", ui_events.LIST_ITEM_SELECT, self.OnSelectDifficulty, self)
+ self:AddCallback("list_economy", ui_events.LIST_ITEM_SELECT, self.OnSelectEconomy, self)
+ self:AddCallback("list_hardcore_lives", ui_events.LIST_ITEM_SELECT, self.OnSelectHardcoreLives, self)
+ self:AddCallback("list_hardcore_regen", ui_events.LIST_ITEM_SELECT, self.OnSelectHardcoreRegen, self)
+ self:AddCallback("list_timer", ui_events.LIST_ITEM_SELECT, self.OnSelectTimer, self)
+end
+
+function UINewGame:Update()
+ CUIScriptWnd.Update(self)
+
+ if (not self.access) then
+ self.hint_wnd:Update()
+ return
+ end
+
+ for ck_name,v in pairs(self.ck_states) do
+ if (self[ck_name] and self[ck_name]:IsCursorOverWindow()) then
+ local str = ""
+ if (ck_name == "box_faction") then
+ str = strformat( game.translate_string("st_mm_box_faction_desc") , game.translate_string("st_faction_" .. self.selected_faction))
+ if (self.selected_faction == "bandit") then
+ str = "cheeki breeki"
+ end
+ else
+ str = game.translate_string("st_mm_"..ck_name.."_desc")
+ end
+ self.hint_wnd:Update(str)
+ return
+ end
+ end
+
+ -- Updating item info box and item cell containers
+ local found_cell = false
+ for name,cc in pairs(self.CC) do
+ if cc:IsShown() then
+ found_cell = cc:Update(self.item_info) or found_cell
+ end
+ end
+ if (not found_cell) then
+ self.item_info:Update()
+ end
+
+ self.hint_wnd:Update()
+end
+
+
+-- Faction Select Pop-up
+function UINewGame:PopupFaction_Controls()
+ local xml = self.xml
+
+ -- Main
+ self.black_1 = xml:InitStatic("main_dialog:popup_faction:frame_black",self.dialog)
+ self.dialog_1 = xml:InitStatic("main_dialog:popup_faction:frame", self.dialog)
+
+ -- Static Text
+ self.cap_faction = xml:InitStatic("main_dialog:popup_faction:cap_faction",self.dialog_1)
+
+ -- Faction buttons
+ self.scroll_faction = xml:InitScrollView("main_dialog:popup_faction:scroll_faction", self.dialog_1)
+ self.btn_faction = {}
+
+end
+
+function UINewGame:PopupFaction_Callbacks()
+ for k,v in pairs(self.table_faction) do
+ self:AddCallback("btn_" .. k, ui_events.BUTTON_CLICKED, self["OnFaction_"..k], self)
+ end
+end
+
+function UINewGame:PopupFaction_Show (state)
+ local xml = self.xml
+ local num_of_rows = math.ceil(size_table(self.table_faction)/3)
+
+ self.black_1:Show(state)
+ self.dialog_1:Show(state)
+ self.cap_faction:Show(state)
+ self.scroll_faction:Clear()
+ if state then
+ self.access = false
+ self:PopupFaction_Callbacks()
+ local _st = xml:InitStatic("main_dialog:popup_faction:templ_faction",nil)
+
+ for k,v in pairs(self.table_faction) do
+ self.btn_faction[k] = xml:Init3tButton("main_dialog:popup_faction:btn_" .. k , _st)
+ local x,y = self:GetAxis_Icon ( self.scroll_faction, self.btn_faction[k], num_of_rows, 3, self.faction_cell[k].row, self.faction_cell[k].col )
+ self.btn_faction[k]:SetWndPos(vector2():set(x, y))
+ self:Register(self.btn_faction[k], "btn_" .. k )
+ end
+ self.scroll_faction:AddWindow(_st, true)
+ _st:SetAutoDelete(false)
+
+ else
+ self.access = true
+ end
+end
+
+function UINewGame:OnFactionSelect(faction)
+ self.selected_faction = faction
+ self:UpdateAll(false, self.selected_faction)
+ self:PopupFaction_Show(false)
+ if faction_no_story[faction] then
+ self.ck_story:SetCheck(false)
+ self.ck_story:Enable(false)
+ else
+ self.ck_story:Enable(true)
+ end
+end
+
+function UINewGame:OnFaction_stalker()
+ self:OnFactionSelect("stalker")
+end
+function UINewGame:OnFaction_bandit()
+ self:OnFactionSelect("bandit")
+end
+function UINewGame:OnFaction_csky()
+ self:OnFactionSelect("csky")
+end
+function UINewGame:OnFaction_dolg()
+ self:OnFactionSelect("dolg")
+end
+function UINewGame:OnFaction_freedom()
+ self:OnFactionSelect("freedom")
+end
+function UINewGame:OnFaction_killer()
+ self:OnFactionSelect("killer")
+end
+function UINewGame:OnFaction_army()
+ self:OnFactionSelect("army")
+end
+function UINewGame:OnFaction_ecolog()
+ self:OnFactionSelect("ecolog")
+end
+function UINewGame:OnFaction_monolith()
+ self:OnFactionSelect("monolith")
+end
+function UINewGame:OnFaction_renegade()
+ self:OnFactionSelect("renegade")
+end
+function UINewGame:OnFaction_greh()
+ self:OnFactionSelect("greh")
+end
+function UINewGame:OnFaction_isg()
+ self:OnFactionSelect("isg")
+end
+function UINewGame:OnFaction_zombied()
+ self:OnFactionSelect("zombied")
+end
+
+
+-- Icon Select Pop-up
+function UINewGame:PopupIcon_Controls()
+ local xml = self.xml
+
+ -- Main
+ self.black_2 = xml:InitStatic("main_dialog:popup_icon:frame_black",self.dialog)
+ self.dialog_2 = xml:InitStatic("main_dialog:popup_icon:frame", self.dialog)
+
+ -- Static Text
+ self.cap_icon = xml:InitStatic("main_dialog:popup_icon:cap_icon",self.dialog_2)
+
+ -- Faction buttons
+ self.scroll_icon = xml:InitScrollView("main_dialog:popup_icon:scroll_icon", self.dialog_2)
+
+ -- Size Reference
+ self.tempy_icon = xml:InitStatic("main_dialog:popup_icon:temp_icon" , self.dialog_2)
+
+ self.btn_icon = {}
+ self.temp_icon = {}
+end
+
+function UINewGame:PopupIcon_Callbacks()
+ for i = 1 , 30 do
+ self:AddCallback("btn_icon_" .. tostring(i), ui_events.BUTTON_CLICKED, self["OnIcon_" .. tostring(i)], self)
+ end
+end
+
+function UINewGame:PopupIcon_Show (state)
+ local xml = self.xml
+
+ self.black_2:Show(state)
+ self.dialog_2:Show(state)
+ self.cap_icon:Show(state)
+ self.scroll_icon:Clear()
+ if state then
+ local _st = xml:InitStatic("main_dialog:popup_icon:templ_icon",nil)
+ self.access = false
+
+ local n = 10
+ local x = 20
+ local w = self.tempy_icon:GetWidth()
+ local h = self.tempy_icon:GetHeight()
+ for i = 1 , #self.table_icon do
+ self.temp_icon[i] = xml:InitStatic("main_dialog:popup_icon:temp_icon" , _st)
+ self.temp_icon[i]:InitTexture(self.table_icon[i])
+ self.temp_icon[i]:SetStretchTexture(true)
+ self.temp_icon[i]:SetWndSize(vector2():set(w , h))
+ self.btn_icon[i] = xml:Init3tButton("main_dialog:popup_icon:btn_icon" , _st)
+
+ self.temp_icon[i]:SetWndPos(vector2():set(x, n))
+ self.btn_icon[i]:SetWndPos(vector2():set(x, n))
+
+ self:Register(self.temp_icon[i], "btn_icon_" .. tostring(i) )
+ self:Register(self.btn_icon[i], "btn_icon_" .. tostring(i) )
+ n = n + h + 10
+ end
+ for i = #self.table_icon + 1 , 50 do -- everything else is thrown outside
+ if self.temp_icon[i] and self.btn_icon[i] then
+ self.temp_icon[i]:SetWndPos(vector2():set(x + 200, 0))
+ self.btn_icon[i]:SetWndPos(vector2():set(x + 200, 0))
+ end
+ end
+ _st:SetWndSize(vector2():set(_st:GetWidth(), n - 2 ))
+ self.scroll_icon:AddWindow(_st, true)
+ _st:SetAutoDelete(false)
+ else
+ self.access = true
+ end
+end
+
+function UINewGame:OnIconSelect(num)
+ self.selected_icon = self.table_icon[num]
+ self:UpdateIcon()
+ self:PopupIcon_Show(false)
+end
+
+function UINewGame:OnIcon_1()
+ self:OnIconSelect(1)
+end
+function UINewGame:OnIcon_2()
+ self:OnIconSelect(2)
+end
+function UINewGame:OnIcon_3()
+ self:OnIconSelect(3)
+end
+function UINewGame:OnIcon_4()
+ self:OnIconSelect(4)
+end
+function UINewGame:OnIcon_5()
+ self:OnIconSelect(5)
+end
+function UINewGame:OnIcon_6()
+ self:OnIconSelect(6)
+end
+function UINewGame:OnIcon_7()
+ self:OnIconSelect(7)
+end
+function UINewGame:OnIcon_8()
+ self:OnIconSelect(8)
+end
+function UINewGame:OnIcon_9()
+ self:OnIconSelect(9)
+end
+function UINewGame:OnIcon_10()
+ self:OnIconSelect(10)
+end
+function UINewGame:OnIcon_11()
+ self:OnIconSelect(11)
+end
+function UINewGame:OnIcon_12()
+ self:OnIconSelect(12)
+end
+function UINewGame:OnIcon_13()
+ self:OnIconSelect(13)
+end
+function UINewGame:OnIcon_14()
+ self:OnIconSelect(14)
+end
+function UINewGame:OnIcon_15()
+ self:OnIconSelect(15)
+end
+function UINewGame:OnIcon_16()
+ self:OnIconSelect(16)
+end
+function UINewGame:OnIcon_17()
+ self:OnIconSelect(17)
+end
+function UINewGame:OnIcon_18()
+ self:OnIconSelect(18)
+end
+function UINewGame:OnIcon_19()
+ self:OnIconSelect(19)
+end
+function UINewGame:OnIcon_20()
+ self:OnIconSelect(20)
+end
+function UINewGame:OnIcon_21()
+ self:OnIconSelect(21)
+end
+function UINewGame:OnIcon_22()
+ self:OnIconSelect(22)
+end
+function UINewGame:OnIcon_23()
+ self:OnIconSelect(23)
+end
+function UINewGame:OnIcon_24()
+ self:OnIconSelect(24)
+end
+function UINewGame:OnIcon_25()
+ self:OnIconSelect(25)
+end
+function UINewGame:OnIcon_26()
+ self:OnIconSelect(26)
+end
+function UINewGame:OnIcon_27()
+ self:OnIconSelect(27)
+end
+function UINewGame:OnIcon_28()
+ self:OnIconSelect(28)
+end
+function UINewGame:OnIcon_29()
+ self:OnIconSelect(29)
+end
+function UINewGame:OnIcon_30()
+ self:OnIconSelect(30)
+end
+function UINewGame:OnIcon_31()
+ self:OnIconSelect(31)
+end
+function UINewGame:OnIcon_32()
+ self:OnIconSelect(32)
+end
+function UINewGame:OnIcon_33()
+ self:OnIconSelect(33)
+end
+function UINewGame:OnIcon_34()
+ self:OnIconSelect(34)
+end
+function UINewGame:OnIcon_35()
+ self:OnIconSelect(35)
+end
+function UINewGame:OnIcon_36()
+ self:OnIconSelect(36)
+end
+function UINewGame:OnIcon_37()
+ self:OnIconSelect(37)
+end
+function UINewGame:OnIcon_38()
+ self:OnIconSelect(38)
+end
+function UINewGame:OnIcon_39()
+ self:OnIconSelect(39)
+end
+function UINewGame:OnIcon_40()
+ self:OnIconSelect(40)
+end
+function UINewGame:OnIcon_41()
+ self:OnIconSelect(41)
+end
+function UINewGame:OnIcon_42()
+ self:OnIconSelect(42)
+end
+function UINewGame:OnIcon_43()
+ self:OnIconSelect(43)
+end
+function UINewGame:OnIcon_44()
+ self:OnIconSelect(44)
+end
+function UINewGame:OnIcon_45()
+ self:OnIconSelect(45)
+end
+function UINewGame:OnIcon_46()
+ self:OnIconSelect(46)
+end
+function UINewGame:OnIcon_47()
+ self:OnIconSelect(47)
+end
+function UINewGame:OnIcon_48()
+ self:OnIconSelect(48)
+end
+function UINewGame:OnIcon_49()
+ self:OnIconSelect(49)
+end
+function UINewGame:OnIcon_50()
+ self:OnIconSelect(50)
+end
+
+
+-- Info loading
+function UINewGame:LoadFaction (rand, faction)
+ local pick = faction
+ if (not pick) then
+ local k = random_key_table(self.table_faction)
+ pick = rand and k or "stalker"
+ end
+
+ self.selected_faction = pick
+ local money = utils_data.read_from_ini(ini_itm, self.selected_faction .. "_money", "money", "float")
+ self.selected_money = money
+
+ self:UpdateFaction()
+ self:UpdateMoney()
+end
+
+function UINewGame:LoadIcon (rand)
+ local def_icon = "ui_inGame2_no_data"
+ self.table_icon = {}
+ table.insert(self.table_icon, def_icon)
+
+ local section = self.selected_faction .. "_portraits"
+ local n = self.ini_ico:section_exist(section) and self.ini_ico:line_count(section) or 0
+ for i=0 , n-1 do
+ local result, id, value = self.ini_ico:r_line(section,i,"","" )
+ if (id ~= "") then
+ table.insert(self.table_icon, id)
+ end
+ end
+
+ local pick = rand and self.table_icon[math.random(#self.table_icon)] or def_icon
+
+ self.selected_icon = pick
+ self:UpdateIcon()
+end
+
+function UINewGame:LoadMap (rand)
+ self.table_map = {}
+
+ if (not rand) then
+ table.insert(self.table_map, "random_location")
+ end
+
+ local n = ini_map:line_count(self.selected_faction .. "_start_locations") or 0
+ for i=0, n-1 do
+ local result, id, value = ini_map:r_line(self.selected_faction.."_start_locations",i,"","" )
+ if value then
+ local tbl = str_explode(value,",")
+ if self.ck_story and self.ck_story:GetCheck() then
+ if (tbl[2] == "true") or (tbl[2] == "false") then
+ table.insert(self.table_map, id)
+ end
+ elseif tbl[2] ~= "false" then
+ table.insert(self.table_map, id)
+ end
+ end
+ end
+
+ self.list_map:ClearList()
+ for i=1,#self.table_map do
+ self.list_map:AddItem(game.translate_string("ui_st_" .. self.table_map[i]), i)
+ end
+ local pick = rand and self.table_map[math.random(#self.table_map)] or self.table_map[1]
+ self.list_map:SetText(game.translate_string("ui_st_" .. pick))
+
+ self.selected_map = pick
+ self:UpdateMap()
+end
+
+function UINewGame:LoadLoadout (rand)
+
+ -- Reset
+ local eco_idxs = self.selected_economy:gsub("st_econ_","") or "1"
+ self.points_used = 0
+ self.points_left = ini_itm:r_float_ex("points","total_points_eco_" .. eco_idxs) or 1000
+ self.text_points_used:SetText(tostring(self.points_used))
+ self.text_points_left:SetText(tostring(self.points_left))
+
+
+ -- Read
+ local t_inv, t_loadout, p_inv, p_loadout = {}, {}, {}, {}
+ local size_inv, size_loadout = 0,0
+ local n = ini_itm:line_count(self.selected_faction .. "_loadout") or 0
+ for i=0, n-1 do
+ local result, sec, value = ini_itm:r_line(self.selected_faction .. "_loadout" , i , "", "")
+ if ini_sys:section_exist(sec) then
+ local t = str_explode(value,",")
+ if (not t[4]) or (t[4] and (tonumber(eco_idxs) <= tonumber(t[4]))) then
+ if (t[1] == "false") then
+ for i=1,tonumber(t[2]) do
+ size_inv = size_inv + 1
+ t_inv[size_inv] = sec
+ p_inv[size_inv] = 0
+ end
+ elseif (t[1] == "true") then
+ for i=1,tonumber(t[2]) do
+ size_loadout = size_loadout + 1
+ t_loadout[size_loadout] = sec
+ p_loadout[size_loadout] = tonumber(t[3])
+ end
+ end
+ end
+ end
+ end
+
+ -- Update Item containers
+ self.CC["inventory"]:Reinit(t_inv, p_inv)
+ for idx,ci in pairs(self.CC["inventory"].cell) do
+ if ci:IsShown() then
+ local val = ci.flags.info or 0
+ ci.flags.value = val
+ ci.flags.value_str = game.translate_string("st_mm_new_game_points") .. ": " .. val
+ end
+ end
+
+ self.CC["loadout"]:Reinit(t_loadout, p_loadout)
+ for idx,ci in pairs(self.CC["loadout"].cell) do
+ if ci:IsShown() then
+ local val = ci.flags.info or 0
+ ci.flags.value = val
+ ci.flags.value_str = game.translate_string("st_mm_new_game_points") .. ": " .. val
+ end
+ end
+
+ -- Pick randomly
+ if (not rand) then
+ return
+ end
+
+ while true do
+ local idx = random_key_table( self.CC["loadout"].cell )
+ if (not idx) then
+ return
+ end
+
+ local ci = self.CC["loadout"].cell[idx]
+ if not (ci and ci.section) then
+ break
+ end
+
+ local points = ci.flags.value
+ printf("sec: %s | points: %s | points left: %s", ci.section, points, self.points_left)
+ if (points > self.points_left) then
+ break
+ end
+
+ self.points_used = self.points_used + points
+ self.points_left = self.points_left - points
+
+ self.CC["loadout"]:TransferItem(self.CC["inventory"], nil, ci.section)
+ end
+
+ self.text_points_used:SetText(tostring(self.points_used))
+ self.text_points_left:SetText(tostring(self.points_left))
+end
+
+function UINewGame:LoadDifficulty (rand)
+ self.list_difficulty:ClearList()
+ for i=1,#self.table_difficulty do
+ self.list_difficulty:AddItem(game.translate_string(self.table_difficulty[i]), i)
+ end
+ local pick = rand and self.table_difficulty[math.random(#self.table_difficulty)] or self.table_difficulty[1]
+ self.list_difficulty:SetText(game.translate_string(pick))
+ self.selected_difficulty = pick
+end
+
+function UINewGame:LoadEconomy (rand)
+ self.list_economy:ClearList()
+ for i=1,#self.table_economy do
+ self.list_economy:AddItem(game.translate_string(self.table_economy[i]), i)
+ end
+ local pick = rand and self.table_economy[math.random(#self.table_economy)] or self.table_economy[1]
+ self.list_economy:SetText(game.translate_string(pick))
+ self.selected_economy = pick
+end
+
+function UINewGame:LoadHardcoreLives (rand)
+ local str
+ self.list_hardcore_lives:ClearList()
+ for i=1, #self.table_hardcore_lives do
+ str = self.table_hardcore_lives[i][1] or ""
+ self.list_hardcore_lives:AddItem(str .. " " .. game.translate_string(self.table_hardcore_lives[i][2]), i)
+ end
+ local pick = rand and self.table_hardcore_lives[math.random(#self.table_hardcore_lives)] or self.table_hardcore_lives[1]
+ str = pick[1] or ""
+ self.list_hardcore_lives:SetText(str .. " " .. game.translate_string(pick[2]))
+ self.selected_hardcore_lives = pick
+end
+
+function UINewGame:LoadHardcoreRegen (rand)
+ local str
+ self.list_hardcore_regen:ClearList()
+ for i=1, #self.table_hardcore_regen do
+ str = self.table_hardcore_regen[i][1] and tostring(round_idp(self.table_hardcore_regen[i][1]/24)) or ""
+ self.list_hardcore_regen:AddItem(str .. " " .. game.translate_string(self.table_hardcore_regen[i][2]), i)
+ end
+ local pick = rand and self.table_hardcore_regen[math.random(#self.table_hardcore_regen)] or self.table_hardcore_regen[1]
+ str = pick[1] and tostring(round_idp(pick[1]/24)) or ""
+ self.list_hardcore_regen:SetText(str .. " " .. game.translate_string(pick[2]))
+ self.selected_hardcore_regen = pick
+end
+
+function UINewGame:LoadTimer (rand)
+ local str
+ self.list_timer:ClearList()
+ for i=1, #self.table_timer do
+ str = self.table_timer[i][1] or ""
+ self.list_timer:AddItem(str .. " " .. game.translate_string(self.table_timer[i][2]), i)
+ end
+ local pick = rand and self.table_timer[math.random(#self.table_timer)] or self.table_timer[1]
+ str = pick[1] or ""
+ self.list_timer:SetText(str .. " " .. game.translate_string(pick[2]))
+ self.selected_timer = pick
+end
+
+
+-- GUI Callbacks
+function UINewGame:OnFactionClicked()
+ if (not self.access) then
+ return
+ end
+
+ self:PopupFaction_Show(true)
+end
+
+function UINewGame:OnIconClicked()
+ if (not self.access) then
+ return
+ end
+
+ self:PopupIcon_Show(true)
+end
+
+function UINewGame:OnSelectMap()
+ self.selected_map = self.table_map[self.list_map:CurrentID()]
+ self:UpdateMap()
+end
+
+function UINewGame:On_CC_Mouse1(cont, idx)
+ if not (self.access) then
+ return
+ end
+
+ local ci = self.CC[cont].cell[idx]
+ if not (ci) then
+ return
+ end
+
+ local flags = ci.flags
+ if not (flags.value and flags.value > 0) then
+ return
+ end
+
+ local points = flags.value
+ local to_inv = cont == "inventory"
+ local cont2 = (cont == "inventory") and "loadout" or "inventory"
+
+ local points_used = self.points_used + ((to_inv and -1 or 1) * points)
+ local points_left = self.points_left + ((to_inv and 1 or -1) * points)
+ if points_left < 0 then
+ return
+ end
+
+ self.points_used = points_used
+ self.points_left = points_left
+
+ self.text_points_used:SetText(tostring(self.points_used))
+ self.text_points_left:SetText(tostring(self.points_left))
+
+ -- Transfer item and points
+ self.CC[cont]:TransferItem(self.CC[cont2], nil, ci.section)
+end
+
+function UINewGame:OnSelectDifficulty()
+ self.selected_difficulty = self.table_difficulty[self.list_difficulty:CurrentID()]
+end
+
+function UINewGame:OnSelectEconomy()
+ self.selected_economy = self.table_economy[self.list_economy:CurrentID()]
+ self:LoadLoadout()
+end
+
+function UINewGame:OnSelectHardcoreLives()
+ self.selected_hardcore_lives = self.table_hardcore_lives[self.list_hardcore_lives:CurrentID()]
+end
+
+function UINewGame:OnSelectHardcoreRegen()
+ self.selected_hardcore_regen = self.table_hardcore_regen[self.list_hardcore_regen:CurrentID()]
+end
+
+function UINewGame:OnSelectTimer()
+ self.selected_timer = self.table_timer[self.list_timer:CurrentID()]
+end
+
+function UINewGame:OnCheckSetStory()
+ if (not self.access) then
+ return
+ end
+
+ self.ck_survival:SetCheck(false)
+ self.ck_states["ck_survival"] = false
+
+ self.ck_azazel_mode:SetCheck(false)
+ self.ck_states["ck_azazel_mode"] = false
+
+ self.ck_warfare:SetCheck(false)
+ self.ck_states["ck_warfare"] = false
+
+ self:LoadMap()
+end
+
+function UINewGame:OnCheckSetAzazel()
+ if (not self.access) then
+ return
+ end
+
+ self.ck_story:SetCheck(false)
+ self.ck_states["ck_story"] = false
+
+ self:LoadMap()
+end
+
+function UINewGame:OnCheckSetWarfare()
+ if (not self.access) then
+ return
+ end
+
+ self.ck_story:SetCheck(false)
+ self.ck_states["ck_story"] = false
+
+ self.ck_survival:SetCheck(false)
+ self.ck_states["ck_survival"] = false
+
+ self:LoadMap()
+end
+
+function UINewGame:OnCheckSetSurvival()
+ if (not self.access) then
+ return
+ end
+
+ self.ck_story:SetCheck(false)
+ self.ck_states["ck_story"] = false
+
+ self.ck_warfare:SetCheck(false)
+ self.ck_states["ck_warfare"] = false
+
+ self:LoadMap()
+end
+
+function UINewGame:OnCheckResetList()
+ if (not self.access) then
+ return
+ end
+
+ self:LoadLoadout()
+end
+
+
+-- Update visuals
+function UINewGame:UpdateAll (rand, faction)
+ self:LoadFaction(rand, faction)
+ self:LoadIcon(rand)
+ self:LoadMap(rand)
+
+ self:UpdateMoney()
+ self:UpdateDescr()
+
+ self:LoadLoadout(rand)
+end
+
+function UINewGame:UpdateFaction()
+ self.box_faction:InitTexture("ui_new_game_flair_" .. self.selected_faction)
+ self.box_faction:SetStretchTexture(true)
+ self.box_faction:SetWndSize(vector2():set(self.box_faction:GetWidth(),self.box_faction:GetHeight()))
+end
+
+function UINewGame:UpdateIcon()
+ self.box_icon:InitTexture(self.selected_icon)
+ self.box_icon:SetStretchTexture(true)
+ self.box_icon:SetWndSize(vector2():set(self.box_icon:GetWidth(),self.box_icon:GetHeight()))
+end
+
+function UINewGame:UpdateMap()
+ local map_pic = (self.selected_map ~= "random_location") and self.selected_map or self.table_map[2]
+ local map = utils_data.read_from_ini(ini_map, self.selected_faction .. "_start_locations", map_pic, "string")
+ map = str_explode(map,",")
+
+ self.box_map:InitTexture("ui_new_game_map_" .. map[1])
+ self.box_map:SetStretchTexture(true)
+ self.box_map:SetWndSize(vector2():set(self.box_map:GetWidth(),self.box_map:GetHeight()))
+end
+
+function UINewGame:UpdateMoney()
+ self.text_money:SetText(tostring(self.selected_money) .. " RU")
+end
+
+function UINewGame:UpdateDescr()
+ local faction = self.selected_faction
+
+ -- Description and map
+ local desc = "%c[0,250,250,250]" .. game.translate_string("st_mm_new_game_description")
+ desc = desc .. "\\n%c[0,150,150,150]" .. game.translate_string("st_faction_" .. faction .. "_desc")
+
+ self.text_descr:SetText(desc)
+ self.text_descr:AdjustHeightToText()
+ self.text_descr:SetWndSize(vector2():set(self.text_descr:GetWidth(),self.text_descr:GetHeight()+10))
+ self.scroll_desc:Clear()
+ self.scroll_desc:AddWindow(self.text_descr, true)
+ self.text_descr:SetAutoDelete(false)
+
+ -- Relations
+ local str_stats = "%c[0,250,250,250]" .. game.translate_string("st_mm_new_game_relations") .. " \\n"
+ for k,v in pairs(self.table_faction) do
+ if not (k == faction) then
+ local v = relation_registry.community_relation("actor_" .. faction, k)
+ if (v >= 1000) then
+ str_stats = str_stats .. "%c[0,150,150,150]� %c[0,50,175,50]" .. game.translate_string("st_faction_" .. k) .. "\\n"
+ elseif (v <= -1000) then
+ str_stats = str_stats .. "%c[0,150,150,150]� %c[0,175,50,50]" .. game.translate_string("st_faction_" .. k) .. "\\n"
+ else
+ str_stats = str_stats .. "%c[0,150,150,150]� %c[0,175,175,50]" .. game.translate_string("st_faction_" .. k) .. "\\n"
+ end
+ end
+ end
+
+ self.text_relations:SetText(str_stats)
+ self.text_relations:AdjustHeightToText()
+end
+
+function UINewGame:GetAxis_Icon (main , element , all_row , all_col , row , col)
+ local _w = main:GetWidth()
+ local _h = main:GetHeight()
+ local _wi = element:GetWidth()
+ local _hi = element:GetHeight()
+ local off_x = (_w - _wi * all_col)/(all_col+1)
+ local off_y = (_h - _hi * all_row)/(all_row+1)
+
+ local x = (off_x * col) + (_wi * (col - 1))
+ local y = (off_y * row) + (_hi * (row - 1))
+ return x,y
+end
+
+
+-- Main Buttons
+function UINewGame:OnQuit()
+ if (not self.access) then
+ return
+ end
+
+ self.owner:ShowDialog(true)
+ self.owner:Show(true)
+ if (self:IsShown()) then
+ self:HideDialog()
+ end
+ self:Show(false)
+ --ui_main_menu.RemoveFactionUI()
+end
+
+function UINewGame:OnRandomize()
+ if (not self.access) then
+ return
+ end
+
+ -- Faction
+ self.selected_faction = random_key_table(self.table_faction)
+
+ -- Name
+ local subset
+ if (self.selected_faction == "army" or self.selected_faction == "dolg" or self.selected_faction == "isg") then
+ subset = random_choice("private","sergeant","senior_sergeant","lieutenant","captain")
+ else
+ subset = random_choice("stalker","bandit","science")
+ end
+ local name_cnt = ini_sys:r_float_ex("stalker_names_"..subset,"name_cnt")
+ local last_name_cnt = ini_sys:r_float_ex("stalker_names_"..subset,"last_name_cnt")
+ local first_name = game.translate_string( strformat("name_%s_%s",subset,math.random(0,name_cnt-1)) )
+ local last_name = game.translate_string( strformat("lname_%s_%s",subset,math.random(0,last_name_cnt-1)) )
+ self.character_name:SetText(first_name .. " " .. last_name)
+
+ -- Difficulty and Economy
+ self:LoadDifficulty(true)
+ self:LoadEconomy(true)
+
+ -- Everything else
+ self:UpdateAll(true, self.selected_faction)
+end
+
+local char_cache = ""
+local passwords = {
+ ["renegade"] = "19_18_49_18_34_30_32_18", -- R E N E G A D E
+ ["greh"] = "34_19_18_35", -- G R E H
+ ["isg"] = "23_31_34", -- I S G
+}
+function UINewGame:OnKeyboard(dik, keyboard_action)
+ if (not self.access) then
+ return
+ end
+
+ local res = CUIScriptWnd.OnKeyboard(self,dik,keyboard_action)
+ if (res == false) then
+ for name, cc in pairs(self.CC) do
+ if cc:IsShown() then
+ cc:OnKeyboard(dik, keyboard_action)
+ end
+ end
+
+ local bind = dik_to_bind(dik)
+ if keyboard_action == ui_events.WINDOW_KEY_PRESSED then
+ if dik == DIK_keys.DIK_ESCAPE then
+ self:OnQuit()
+ elseif (dik == DIK_keys.DIK_Z) then
+ self.selected_faction = "zombied"
+ if faction_no_story[self.selected_faction] then
+ self.ck_story:SetCheck(false)
+ self.ck_story:Enable(false)
+ else
+ self.ck_story:Enable(true)
+ end
+ self:UpdateAll(false , self.selected_faction)
+ end
+
+ char_cache = char_cache .. tostring(dik) .. "_"
+ for k,v in pairs(passwords) do
+ if string.find(char_cache,v) then
+ self.table_faction[k] = true
+ end
+ end
+
+ end
+ end
+ return res
+end
+
+function UINewGame:OnStartGame()
+ if (not self.access) then
+ return
+ end
+
+ -- start game anyway if no config or axr_main script
+ if not (axr_main and axr_main.config) then
+ self.owner:StartGame()
+ return
+ end
+
+ -- check name
+ local character_name = self.character_name:GetText()
+ if (character_name == "") then
+ -- Require a name to be entered.
+ return
+ end
+
+ -- check location
+ if (self.selected_map == nil or self.selected_map == "" or self.selected_map == "random_location" or self.list_map:CurrentID() < 0) then
+ local index = math.random(2,#self.table_map)
+ self.selected_map = self.table_map[index]
+ end
+
+ -- save modes
+ local hardcore_regen
+ if (self.selected_hardcore_regen[1]) and (type(self.selected_hardcore_regen[1]) == "number") then
+ hardcore_regen = self.selected_hardcore_regen[1]
+ end
+
+ local timer
+ if (self.selected_timer[1]) and (type(self.selected_timer[1]) == "number") then
+ timer = self.selected_timer[1]
+ end
+
+ -- prepare loadout
+ local loadout_str
+ for idx,ci in pairs(self.CC["inventory"].cell) do
+ if ci:IsShown() then
+ for i=1,(ci:CountChilds() + 1) do
+ if (not loadout_str) then
+ loadout_str = ci.section
+ else
+ loadout_str = loadout_str .. "," .. ci.section
+ end
+ end
+ end
+ end
+
+ -- preparing game difficulty values
+ if (self.selected_difficulty == nil or self.selected_difficulty == "") then
+ self.selected_difficulty = self.table_difficulty[1]
+ end
+ local diff = self.selected_difficulty:gsub("st_diff_","")
+ diff = tonumber(diff) or 1
+
+ -- preparing economy values
+ if (self.selected_economy == nil or self.selected_economy == "") then
+ self.selected_economy = self.table_economy[1]
+ end
+ local econ = self.selected_economy:gsub("st_econ_","")
+ econ = tonumber(econ) or 1
+
+ if (self.ck_warfare and self.ck_warfare:GetCheck()) and (warfare_options.options.random_starting_locations) then
+ self.selected_map = warfare_options.get_random_start_location()
+ end
+
+ axr_main.config:w_value("character_creation","new_game_difficulty",diff)
+ axr_main.config:w_value("character_creation","new_game_economy",econ)
+ axr_main.config:w_value("character_creation","new_game_economy_treasure",econ) -- special for treasure_manager
+
+ axr_main.config:w_value("character_creation","new_game_hardcore_mode",self.ck_hardcore and self.ck_hardcore:GetCheck() and true or nil)
+ axr_main.config:w_value("character_creation","new_game_hardcore_mode_lives",self.ck_hardcore and self.selected_hardcore_lives[1] or nil)
+ axr_main.config:w_value("character_creation","new_game_hardcore_mode_regenerate",self.ck_hardcore and hardcore_regen or nil)
+ axr_main.config:w_value("character_creation","new_game_story_mode",self.ck_story and self.ck_story:GetCheck() and true or nil)
+ axr_main.config:w_value("character_creation","new_game_azazel_mode",self.ck_azazel_mode and self.ck_azazel_mode:GetCheck() and true or nil)
+ axr_main.config:w_value("character_creation","new_game_survival_mode",self.ck_survival and self.ck_survival:GetCheck() and true or nil)
+ axr_main.config:w_value("character_creation","new_game_campfire_mode",self.ck_campfire and self.ck_campfire:GetCheck() and true or nil)
+ axr_main.config:w_value("character_creation","new_game_conditions_mode",self.ck_conditions and self.ck_conditions:GetCheck() and true or nil)
+ axr_main.config:w_value("character_creation","new_game_opened_routes",self.ck_routes and self.ck_routes:GetCheck() and true or nil)
+ axr_main.config:w_value("character_creation","new_game_warfare",self.ck_warfare and self.ck_warfare:GetCheck() and true or nil) -- special for warfare
+ axr_main.config:w_value("character_creation","new_game_timer_mode",timer or nil)
+
+ axr_main.config:w_value("character_creation","new_game_character_name",character_name:gsub(" ","_") )
+ axr_main.config:w_value("character_creation","new_game_faction",self.selected_faction or nil)
+ axr_main.config:w_value("character_creation","new_game_icon",self.selected_icon or nil)
+ axr_main.config:w_value("character_creation","new_game_loadout",loadout_str or nil)
+ axr_main.config:w_value("character_creation","new_game_map",self.selected_map or nil)
+ axr_main.config:w_value("character_creation","new_game_money",self.selected_money or nil)
+
+ axr_main.config:save() -- Store info in temp file
+ self.owner:StartGame() -- Start the game
+end
+
diff --git a/mods/Zone Customization Project/gamedata/scripts/ui_pda_glitched_tab.script b/mods/Zone Customization Project/gamedata/scripts/ui_pda_glitched_tab.script
new file mode 100644
index 00000000..6bb0e535
--- /dev/null
+++ b/mods/Zone Customization Project/gamedata/scripts/ui_pda_glitched_tab.script
@@ -0,0 +1,37 @@
+
+local SINGLETON = nil
+function get_ui()
+ SINGLETON = SINGLETON or pda_glitched_tab()
+ SINGLETON:Reset()
+ return SINGLETON
+end
+
+class "pda_glitched_tab" (CUIScriptWnd)
+function pda_glitched_tab:__init() super()
+ self:InitControls()
+end
+
+function pda_glitched_tab:__finalize()
+end
+
+function pda_glitched_tab:InitControls()
+ self:SetWndRect(Frect():set(0,0,1024,768))
+ local xml = CScriptXmlInit()
+ xml:ParseFile("pda_glitched.xml")
+ self.form = xml:InitStatic("glitched_pda",self)
+ self.form_text = xml:InitTextWnd("glitched_pda:state", self.form)
+end
+
+function pda_glitched_tab:Update()
+ CUIScriptWnd.Update(self)
+end
+
+
+
+function pda_glitched_tab:Reset()
+ self.form_text:SetText(game.translate_string("st_smr_glitched_pda_text"))
+ self.form_text:SetTextColor(GetARGB(255, 255, 255, 1))
+ self.form_text:Show(true)
+ local pda_menu = ActorMenu.get_pda_menu()
+ pda_menu:GetTabControl():Show(false)
+end
\ No newline at end of file
diff --git a/mods/Zone Customization Project/meta.ini b/mods/Zone Customization Project/meta.ini
new file mode 100644
index 00000000..57653fc0
--- /dev/null
+++ b/mods/Zone Customization Project/meta.ini
@@ -0,0 +1,28 @@
+[General]
+gameName=stalkeranomaly
+modid=0
+version=d2024.4.4.0
+newestVersion=
+category="-1,"
+nexusFileStatus=1
+installationFile=zone_customization_project_1.5e.zip
+repository=Nexus
+ignoredVersion=
+comments=
+notes=
+nexusDescription=
+url=
+hasCustomURL=false
+lastNexusQuery=
+lastNexusUpdate=
+nexusLastModified=2024-04-04T05:09:12Z
+nexusCategory=0
+converted=false
+validated=false
+color=@Variant(\0\0\0\x43\0\xff\xff\0\0\0\0\0\0\0\0)
+tracked=0
+
+[installedFiles]
+1\modid=0
+1\fileid=0
+size=1
diff --git a/mods/[OPTIONAL] Exit Save/gamedata/configs/text/eng/rage_quit_save.xml b/mods/[OPTIONAL] Exit Save/gamedata/configs/text/eng/rage_quit_save.xml
new file mode 100644
index 00000000..783e20dd
--- /dev/null
+++ b/mods/[OPTIONAL] Exit Save/gamedata/configs/text/eng/rage_quit_save.xml
@@ -0,0 +1,7 @@
+
+
+ Exit Save to Windows
+
+
+
+
diff --git a/mods/[OPTIONAL] Exit Save/gamedata/configs/text/rus/rage_quit_save.xml b/mods/[OPTIONAL] Exit Save/gamedata/configs/text/rus/rage_quit_save.xml
new file mode 100644
index 00000000..afe30898
--- /dev/null
+++ b/mods/[OPTIONAL] Exit Save/gamedata/configs/text/rus/rage_quit_save.xml
@@ -0,0 +1,5 @@
+
+
+ Сохраниться и выйти на рабочий стол
+
+
diff --git a/mods/[OPTIONAL] Exit Save/gamedata/scripts/modxml_rage_quit_save.script b/mods/[OPTIONAL] Exit Save/gamedata/scripts/modxml_rage_quit_save.script
new file mode 100644
index 00000000..feafeb6f
--- /dev/null
+++ b/mods/[OPTIONAL] Exit Save/gamedata/scripts/modxml_rage_quit_save.script
@@ -0,0 +1,15 @@
+function on_xml_read()
+ RegisterScriptCallback("on_xml_read", function(xml_file_name, xml_obj)
+ local xml_to_change = [[ui\ui_mm_main_16.xml]]
+
+ if xml_file_name == xml_to_change then
+ local quit_save = [[]]
+ local mm_single = xml_obj:query("menu_main_single")
+ local mm_single_dead = xml_obj:query("menu_main_single_dead")
+ if is_not_empty(mm_single) then
+ local el = mm_single[1]
+ xml_obj:insertFromXMLString(quit_save, el, #el.kids)
+ end
+ end
+ end)
+end
diff --git a/mods/[OPTIONAL] Exit Save/gamedata/scripts/ui_main_menu.script b/mods/[OPTIONAL] Exit Save/gamedata/scripts/ui_main_menu.script
new file mode 100644
index 00000000..5a6c448f
--- /dev/null
+++ b/mods/[OPTIONAL] Exit Save/gamedata/scripts/ui_main_menu.script
@@ -0,0 +1,409 @@
+--[[
+
+ File: UI_MAIN_MENU.SCRIPT
+ Description: Load Dialog for STALKER
+ Created: 28.10.2004
+ Last edit: 10.01.2015
+ Copyright: 2004 GSC Game World
+ Author: Serhiy Vynnychenko (narrator@gsc-game.kiev.ua)
+ Version: 0.9
+
+ -----------------------------------------------------
+
+ Modified by Tronex
+ 2018/7/17 - Prevent saving when hardcore save modes are active
+ 2019/10/28 - New keybinds and actions
+
+--]]
+
+class "main_menu" (CUIScriptWnd)
+
+function main_menu:__init() super()
+ math.randomseed(device():time_continual())
+ self.mbox_mode = 0
+ self:InitControls()
+ self:InitCallBacks()
+ ui_mcm.init_opt_base()
+ SendScriptCallback("main_menu_on_init",self)
+ RegisterScriptCallback("on_localization_change",self)
+
+ if not (level.present()) then
+ xrs_debug_tools.on_game_start()
+ end
+end
+
+function main_menu:__finalize()
+end
+
+function main_menu:InitControls()
+ self:SetWndRect (Frect():set(0,0,1024,768))
+
+ local xml = CScriptXmlInit()
+ xml:ParseFile ("ui_mm_main.xml")
+
+ xml:InitStatic ("background", self)
+ self.shniaga = xml:InitMMShniaga("shniaga_wnd",self);
+
+ self.message_box = CUIMessageBoxEx()
+ self:Register (self.message_box, "msg_box")
+
+ local _ver = xml:InitStatic ("static_version",self)
+ local mm = _G.main_menu.get_main_menu()
+ _ver:TextControl():SetTextColor (GetARGB(190, 190, 190, 190))
+ local flavor_name = ""
+ if anomaly_flavor then
+ flavor_name = " - " .. anomaly_flavor.get_flavor()
+ end
+ _ver:TextControl():SetText (game.translate_string("ui_st_game_version") .. flavor_name .. (DEV_DEBUG and " (Debug mode - Press F1 for help)" or ""))
+
+ -- Message Window
+ self.msg_wnd = xml:InitFrame("msg_wnd:background",self)
+ self.msg_wnd:SetAutoDelete(false)
+ self.msg_wnd_text = xml:InitTextWnd("msg_wnd:text",self.msg_wnd)
+ self.msg_wnd_text:SetTextAlignment(2)
+
+ self.msg_wnd:Show(false)
+ self.msg_wnd:SetColor(GetARGB(255,0,0,0))
+end
+
+function main_menu:InitCallBacks()
+ self:AddCallback("btn_newgame", ui_events.BUTTON_CLICKED, self.OnButton_new_game, self)
+ self:AddCallback("btn_options", ui_events.BUTTON_CLICKED, self.OnButton_options_clicked, self)
+ self:AddCallback("btn_mcm", ui_events.BUTTON_CLICKED, self.OnButton_mcm_clicked, self)
+ self:AddCallback("btn_load", ui_events.BUTTON_CLICKED, self.OnButton_load_clicked, self)
+ self:AddCallback("btn_save", ui_events.BUTTON_CLICKED, self.OnButton_save_clicked, self)
+ self:AddCallback("btn_quit", ui_events.BUTTON_CLICKED, self.OnButton_quit_clicked, self)
+ self:AddCallback("btn_quit_to_mm", ui_events.BUTTON_CLICKED, self.OnButton_disconnect_clicked, self)
+ self:AddCallback("btn_ret", ui_events.BUTTON_CLICKED, self.OnButton_return_game, self)
+ self:AddCallback("btn_lastsave", ui_events.BUTTON_CLICKED, self.OnButton_last_save, self)
+ self:AddCallback("btn_quitsave", ui_events.BUTTON_CLICKED, self.OnButton_quit_save, self)
+
+ -- message box
+ self:AddCallback("msg_box", ui_events.MESSAGE_BOX_OK_CLICKED, self.OnMsgOk, self)
+ self:AddCallback("msg_box", ui_events.MESSAGE_BOX_CANCEL_CLICKED, self.OnMsgCancel, self)
+ self:AddCallback("msg_box", ui_events.MESSAGE_BOX_YES_CLICKED, self.OnMsgYes, self)
+ self:AddCallback("msg_box", ui_events.MESSAGE_BOX_NO_CLICKED, self.OnMsgNo, self)
+ self:AddCallback("msg_box", ui_events.MESSAGE_BOX_QUIT_GAME_CLICKED,self.OnMessageQuitGame, self)
+ self:AddCallback("msg_box", ui_events.MESSAGE_BOX_QUIT_WIN_CLICKED, self.OnMessageQuitWin, self)
+
+ self:Register(self, "self")
+ self:AddCallback("self", ui_events.MAIN_MENU_RELOADED, self.OnMenuReloaded, self)
+end
+
+function main_menu:Update()
+ CUIScriptWnd.Update(self)
+ -- Warning messages timer
+ if (self.msg_wnd_timer) then
+ self.msg_wnd_timer = self.msg_wnd_timer - 1
+ if (self.msg_wnd_timer <= 0) then
+ self.msg_wnd_timer = nil
+ self.msg_wnd:Show(false)
+ end
+ end
+end
+
+function main_menu:Show(f)
+ self.shniaga:SetVisibleMagnifier(f)
+end
+
+
+function main_menu:OnButton_last_save()
+
+ if ( alife() == nil) then
+ local flist = getFS():file_list_open_ex("$game_saves$",bit_or(FS.FS_ListFiles,FS.FS_RootOnly),"*"..".scop")
+ flist:Sort(FS.FS_sort_by_modif_down)
+ local file = flist:GetAt(0)
+ if not (file) then
+ return
+ end
+ local file_name = string.sub(file:NameFull(), 0, (string.len(file:NameFull()) - string.len(".scop")))
+
+ exec_console_cmd("main_menu off")
+ exec_console_cmd("start server("..file_name.."/single/alife/load) client(localhost)")
+ return
+ end
+
+ if ( (db.actor ~= nil) and (db.actor:alive() == false) ) then
+ self:LoadLastSave ()
+ return
+ end
+
+ self.mbox_mode = 1
+ self.message_box:InitMessageBox ("message_box_confirm_load_save")
+ self.message_box:ShowDialog(true)
+end
+
+function main_menu:OnButton_new_game()
+ --game.start_tutorial("credits_seq")
+ self:ShowFactionUI()
+end
+
+function main_menu:OnButton_quit_clicked()
+ self.message_box:InitMessageBox("message_box_quit_windows")
+ self.message_box:ShowDialog(true)
+end
+
+function main_menu:OnButton_quit_save()
+ exec_console_cmd("save")
+ exec_console_cmd("quit")
+end
+
+function main_menu:OnButton_disconnect_clicked()
+
+ self.message_box:InitMessageBox("message_box_quit_game")
+
+ if (level.game_id() ~= 1) then
+ self.message_box:SetText("ui_mm_disconnect_message") -- MultiPlayer
+ else
+ self.message_box:SetText("ui_mm_quit_game_message") -- SinglePlayer
+ end
+ self.message_box:ShowDialog(true)
+end
+
+function main_menu:OnButton_save_clicked()
+
+ -- Saving will be interrupted if flags.ret is set to true by a custom script that have "on_before_save_input"
+ if level.present() then
+ local flags = {ret = false}
+ SendScriptCallback("on_before_save_input", flags, 1, game.translate_string("st_ui_save"))
+ if (flags.ret == true) then
+ return
+ end
+ end
+
+ if self.save_dlg == nil then
+ self.save_dlg = ui_save_dialog.UISaveDialog()
+ self.save_dlg.owner = self
+ end
+
+ self.save_dlg:FillList()
+ self.save_dlg:ShowDialog(true)
+ self:HideDialog()
+ self:Show(false)
+end
+
+function main_menu:OnButton_options_clicked()
+ if (self.opt_dlg == nil) then
+ self.opt_dlg = ui_options.UIOptions()
+ self.opt_dlg.owner = self
+ end
+
+ self.opt_dlg:ShowDialog(true)
+ self:HideDialog()
+ self:Show(false)
+ self.opt_dlg:Reset_last_opt()
+end
+
+function main_menu:OnButton_mcm_clicked()
+ printf("MCMBTN press")
+ if (self.mcm_dlg == nil) then
+ self.mcm_dlg = ui_mcm.UIMCM()
+ self.mcm_dlg.owner = self
+ end
+
+ self.mcm_dlg:ShowDialog(true)
+ self:HideDialog()
+ self:Show(false)
+ self.mcm_dlg:Reset_last_opt()
+end
+
+function main_menu:OnButton_load_clicked()
+
+ if self.load_dlg ==nil then
+ self.load_dlg = ui_load_dialog.UILoadDialog()
+ self.load_dlg.owner = self
+ end
+
+ self.load_dlg:FillList()
+ self.load_dlg:ShowDialog(true)
+ self:HideDialog()
+ self:Show(false)
+end
+
+function main_menu:OnButton_return_game()
+ exec_console_cmd("main_menu off")
+ SendScriptCallback("main_menu_on_quit",self)
+end
+
+
+function main_menu:OnMsgOk()
+ if (self.mbox_mode == 2) then
+ if mcm_log then
+ mcm_log.close_logs()
+ end
+ exec_console_cmd("quit")
+ end
+ self.mbox_mode = 0
+end
+
+function main_menu:OnMsgCancel()
+ self.mbox_mode = 0
+end
+
+function main_menu:OnMsgYes()
+
+ if self.mbox_mode == 1 then
+ self:LoadLastSave()
+ end
+
+ self.mbox_mode = 0
+end
+
+function main_menu:OnMsgNo()
+ self.mbox_mode = 0
+end
+
+function main_menu:OnMessageQuitGame()
+ exec_console_cmd("disconnect")
+end
+
+function main_menu:OnMessageQuitWin()
+ if mcm_log then
+ mcm_log.close_logs()
+ end
+ exec_console_cmd("quit")
+end
+
+
+function main_menu:StartGame()
+ if (alife() ~= nil) then
+ exec_console_cmd("disconnect")
+ end
+ device():pause(false)
+ exec_console_cmd("start server(all/single/alife/new) client(localhost)")
+ exec_console_cmd("main_menu off")
+end
+
+function main_menu:ShowFactionUI()
+ if self.new_game_dlg == nil then
+ self.new_game_dlg = ui_mm_faction_select.UINewGame(self)
+ end
+
+ self.new_game_dlg:ShowDialog(true)
+ self:HideDialog()
+ self:Show(false)
+end
+
+function main_menu:LoadLastSave()
+ exec_console_cmd("main_menu off")
+ exec_console_cmd("load_last_save")
+end
+
+function main_menu:on_localization_change()
+ self.opt_dlg = nil
+ self.mcm_dlg = nil
+ self.new_game_dlg = nil
+end
+
+function main_menu:Dispatch(cmd, param) --virtual function
+ if cmd == 2 then
+ self:OnButton_multiplayer_clicked()
+ end
+ return true
+end
+
+function main_menu:OnKeyboard(dik, keyboard_action) --virtual function
+ CUIScriptWnd.OnKeyboard(self,dik,keyboard_action)
+ local bind = dik_to_bind(dik)
+
+ SendScriptCallback("main_menu_on_keyboard",dik,keyboard_action,self,level.present())
+
+ if keyboard_action == ui_events.WINDOW_KEY_PRESSED then
+ if (level.present()) then
+ if (dik == DIK_keys.DIK_ESCAPE) then
+ if (db.actor and db.actor:alive()) or (IsGameTypeSingle() ~= true) then
+ self.OnButton_return_game()
+ end
+ return true
+ elseif (bind == key_bindings.kQUICK_SAVE) then
+ level_input.action_quick_save()
+ return true
+ elseif (bind == key_bindings.kQUICK_LOAD) then
+ level_input.action_quick_load()
+ return true
+
+ -- F6 in menu = Hardsave (script originally made by NamelessWanderer)
+ elseif (dik == DIK_keys.DIK_F6) then
+
+ -- Saving will be interrupted if flags.ret is set to true by a custom script that have "on_before_save_input"
+ if level.present() then
+ local flags = {ret = false}
+ SendScriptCallback("on_before_save_input", flags, 3, game.translate_string("st_ui_save"))
+ if (flags.ret == true) then
+ return true
+ end
+ end
+
+ if level.present() and (db.actor ~= nil) and db.actor:alive() then
+ local Y, M, D, h
+ Y, M, D, h = game.get_game_time():get(Y, M, D, h)
+
+ m = level.get_time_minutes()
+ if m < 10 then
+ m = ("0"..m)
+ end
+ local comm = utils_xml.get_special_txt(db.actor:character_community())
+ local map = utils_xml.get_special_txt(level.name())
+ exec_console_cmd("main_menu off")
+ exec_console_cmd("save " .. comm .. " - " .. map .. " - hardsave - " .. string.format("%d.%d.%d %d-%d", D, M, Y, h, m))
+ end
+ end
+ else
+ if (dik == DIK_keys.DIK_F2) and DEV_DEBUG then
+ axr_main.config:w_value("character_creation","new_game_test",true)
+ --axr_main.config:w_value("character_creation","new_game_story_mode",true)
+ axr_main.config:w_value("character_creation","new_game_difficulty",1)
+ axr_main.config:w_value("character_creation","new_game_economy",1)
+ --axr_main.config:w_value("character_creation","new_game_opened_routes",true)
+ axr_main.config:w_value("character_creation","new_game_faction","stalker")
+ axr_main.config:w_value("character_creation","new_game_loadout", "device_pda_1")
+ axr_main.config:save()
+
+ self:StartGame()
+
+ elseif (bind == key_bindings.kQUICK_LOAD) then
+ self:OnButton_last_save()
+ return true
+ end
+ end
+
+ if (dik == DIK_keys.DIK_Q) then
+ self:OnMessageQuitWin()
+
+ elseif (dik == DIK_keys.DIK_NUMPAD0) and DEV_DEBUG then
+ reload_ini_sys()
+ game.reload_language()
+ printf("system_ini_reload = success!")
+
+ elseif (dik == DIK_keys.DIK_F1) and DEV_DEBUG then
+ self:SetMsg( game.translate_string("st_ui_dbg_help"), 10 , 3)
+ end
+ end
+
+ return true
+end
+
+function main_menu:OnMenuReloaded()
+ printf("- main_menu:OnMenuReloaded()")
+ --self:OnButton_options_clicked()
+end
+
+function main_menu:SetMsg(text,tmr,align)
+ if (text == "") then
+ return
+ end
+ self.msg_wnd:Show(true)
+
+ align = align or 2
+ local _x = (align == 3) and -512 or 0
+ self.msg_wnd_text:SetTextAlignment(align)
+ self.msg_wnd_text:SetText(text)
+ self.msg_wnd_text:AdjustHeightToText()
+ self.msg_wnd_text:SetWndSize(vector2():set(1024,self.msg_wnd_text:GetHeight()+10))
+ self.msg_wnd_text:SetWndPos(vector2():set(_x,20))
+
+ self.msg_wnd:SetWndSize(vector2():set(1024,self.msg_wnd_text:GetHeight()+44))
+ self.msg_wnd:SetWndPos(vector2():set(0,80))
+
+ self.msg_wnd_timer = 100*tmr
+end
diff --git a/mods/[OPTIONAL] Exit Save/meta.ini b/mods/[OPTIONAL] Exit Save/meta.ini
new file mode 100644
index 00000000..55a1c1d9
--- /dev/null
+++ b/mods/[OPTIONAL] Exit Save/meta.ini
@@ -0,0 +1,9 @@
+[General]
+modid=0
+version=
+newestVersion=
+category=0
+installationFile=
+
+[installedFiles]
+size=0
diff --git a/mods/[REQUIRED] Modpack Data/gamedata/configs/axr_options.ltx b/mods/[REQUIRED] Modpack Data/gamedata/configs/axr_options.ltx
index f7b08ef8..fe762c6a 100644
--- a/mods/[REQUIRED] Modpack Data/gamedata/configs/axr_options.ltx
+++ b/mods/[REQUIRED] Modpack Data/gamedata/configs/axr_options.ltx
@@ -35,6 +35,129 @@
EA_settings/mutant_loot = true
EA_settings/take_dist = 0.12
EA_settings/take_item_anim = true
+ SMR/smr_amain/glitched_pda = false
+ SMR/smr_amain/monster_pop_factor = 1
+ SMR/smr_amain/respawn_idle = 172800
+ SMR/smr_amain/smr_debug_log = false
+ SMR/smr_amain/smr_enabled = true
+ SMR/smr_amain/smr_persist_override = false
+ SMR/smr_amain/stalker_pop_factor = 0.85
+ SMR/smr_anomalies/chemical = true
+ SMR/smr_anomalies/dyn_ano_chance = 35
+ SMR/smr_anomalies/electric = true
+ SMR/smr_anomalies/gravitational = true
+ SMR/smr_anomalies/pulse = true
+ SMR/smr_anomalies/radioactive = true
+ SMR/smr_anomalies/thermal = true
+ SMR/smr_loot/ammo_amount = 1
+ SMR/smr_loot/ammo_bad_chance = 50
+ SMR/smr_loot/ammo_bad_spawn = true
+ SMR/smr_loot/ammo_chance = 20
+ SMR/smr_loot/ammo_spawn = false
+ SMR/smr_loot/meds_chance = 15
+ SMR/smr_loot/meds_spawn = false
+ SMR/smr_loot/npc_chance = 10
+ SMR/smr_loot/npc_spawn = true
+ SMR/smr_loot/random_items = 0.5
+ SMR/smr_loot/repair_chance = 5
+ SMR/smr_loot/repair_minor_chance = 15
+ SMR/smr_loot/repair_minor_spawn = true
+ SMR/smr_loot/repair_parts_spawn = true
+ SMR/smr_loot/repair_spawn = false
+ SMR/smr_loot/send_message = true
+ SMR/smr_loot/useful_chance = 10
+ SMR/smr_loot/useful_spawn = false
+ SMR/smr_mutants/bibliotekarp = false
+ SMR/smr_mutants/bloodsucker_strong_bigp = false
+ SMR/smr_mutants/bloodsuckerp = true
+ SMR/smr_mutants/boarp = true
+ SMR/smr_mutants/boryap = false
+ SMR/smr_mutants/burer_electrap = false
+ SMR/smr_mutants/burer_firerp = false
+ SMR/smr_mutants/burerp = true
+ SMR/smr_mutants/catp = true
+ SMR/smr_mutants/chimerap = true
+ SMR/smr_mutants/controllerp = true
+ SMR/smr_mutants/dogp = true
+ SMR/smr_mutants/flesh_bolotp = false
+ SMR/smr_mutants/fleshp = true
+ SMR/smr_mutants/fracturep = true
+ SMR/smr_mutants/gigant_jumperp = false
+ SMR/smr_mutants/gigantp = true
+ SMR/smr_mutants/karlikp = true
+ SMR/smr_mutants/lurkerp = true
+ SMR/smr_mutants/poltergeistp = true
+ SMR/smr_mutants/psydogp = true
+ SMR/smr_mutants/psysuckerp = true
+ SMR/smr_mutants/random_mutants = false
+ SMR/smr_mutants/random_mutants_chance = 10
+ SMR/smr_mutants/ratp = true
+ SMR/smr_mutants/snork_no_maskp = false
+ SMR/smr_mutants/snorkp = true
+ SMR/smr_mutants/squad_size = 1
+ SMR/smr_mutants/squad_size_variance = 0
+ SMR/smr_mutants/tushkanop = true
+ SMR/smr_mutants/types_replace_squads = false
+ SMR/smr_mutants/unused_types_chance = 20
+ SMR/smr_mutants/zombie_babkap = false
+ SMR/smr_mutants/zombie_gholp = false
+ SMR/smr_mutants/zombie_ghostp = false
+ SMR/smr_mutants/zombie_tetap = false
+ SMR/smr_mutants/zombie_wichp = false
+ SMR/smr_mutants/zombiep = true
+ SMR/smr_spawns/preset_apply_random = false
+ SMR/smr_spawns/preset_apply_replaced = false
+ SMR/smr_spawns/preset_week0_tier1 = 70
+ SMR/smr_spawns/preset_week0_tier2 = 25
+ SMR/smr_spawns/preset_week0_tier3 = 5
+ SMR/smr_spawns/preset_week1_tier1 = 50
+ SMR/smr_spawns/preset_week1_tier2 = 40
+ SMR/smr_spawns/preset_week1_tier3 = 10
+ SMR/smr_spawns/preset_week2_tier1 = 35
+ SMR/smr_spawns/preset_week2_tier2 = 50
+ SMR/smr_spawns/preset_week2_tier3 = 15
+ SMR/smr_spawns/preset_week3_tier1 = 30
+ SMR/smr_spawns/preset_week3_tier2 = 45
+ SMR/smr_spawns/preset_week3_tier3 = 25
+ SMR/smr_stalkers/army = true
+ SMR/smr_stalkers/bandit = true
+ SMR/smr_stalkers/base_population = sim_smr_default
+ SMR/smr_stalkers/civil_war = civilwar_disabled
+ SMR/smr_stalkers/civil_war_base_population = false
+ SMR/smr_stalkers/civil_war_monolith_allied = false
+ SMR/smr_stalkers/csky = true
+ SMR/smr_stalkers/duty = true
+ SMR/smr_stalkers/ecolog = true
+ SMR/smr_stalkers/factions_replace_squads = false
+ SMR/smr_stalkers/freedom = true
+ SMR/smr_stalkers/greh = true
+ SMR/smr_stalkers/isg = true
+ SMR/smr_stalkers/merc = true
+ SMR/smr_stalkers/monolith = true
+ SMR/smr_stalkers/random_stalkers = false
+ SMR/smr_stalkers/random_stalkers_chance = 10
+ SMR/smr_stalkers/renegade = true
+ SMR/smr_stalkers/squad_size = 1
+ SMR/smr_stalkers/squad_size_variance = 0
+ SMR/smr_stalkers/stalker = true
+ SMR/smr_stalkers/zombied = true
+ SMR/smr_zombies/blindp = true
+ SMR/smr_zombies/bloodsuckerp = false
+ SMR/smr_zombies/fracturep = true
+ SMR/smr_zombies/psysuckerp = false
+ SMR/smr_zombies/seek_distance = 250
+ SMR/smr_zombies/seek_enabled = false
+ SMR/smr_zombies/snorkp = true
+ SMR/smr_zombies/zombie_chance = 90
+ SMR/smr_zombies/zombie_spawn = false
+ SMR/smr_zombies/zombies_amount = 5
+ SMR/smr_zombies/zombiesp = true
+ SMR/smr_zombies/zombifiedp = true
+ SMR/smr_zzintegration/glowsticks = true
+ SMR/smr_zzintegration/lootboxes = true
+ SMR/smr_zzintegration/lootboxes_chance = 5
+ SMR/smr_zzintegration/mags_redux = true
+ SMR/smr_zzintegration/mags_redux_chance = 5
SortingPlus/000favorites = -2
SortingPlus/001loadout = -1
SortingPlus/002mags = 0
@@ -124,6 +247,7 @@
ballistics/burer = 0
ballistics/cost = true
ballistics/debug = true
+ ballistics/hitnum = true
ballistics/impair = true
ballistics/incoming = false
ballistics/legs = true
@@ -135,7 +259,7 @@
beef_nvg/keybind_nv_down = 74
beef_nvg/keybind_nv_up = 78
beef_nvg/nvg_gain_max_mcm = 2
- beef_nvg/nvg_gain_min_mcm = 0.5
+ beef_nvg/nvg_gain_min_mcm = 0.2
beef_nvg/nvg_gain_offset_mcm = 1
beef_nvg/nvg_gen1_mode_mcm = 0
beef_nvg/nvg_gen1_tubes_mcm = 1
@@ -209,6 +333,10 @@
body_health_system/safe_uninstall = false
bullet_shell_sounds/enabled = true
bullet_shell_sounds/volume = 0.65
+ campfire_placeable/delete_items = false
+ campfire_placeable/dot_dist_diff = 0.4
+ campfire_placeable/place_radius = 3
+ campfire_placeable/transition_delete_items = true
campfires_on_map/show_campfires = true
campfires_on_map/show_only_visited = true
cold_system/artefact = 1
@@ -352,24 +480,24 @@
drug_charcoal/loot_coefficient = 1
drug_charcoal/safe_uninstall = false
drug_charcoal/trader_restock_amount = 3
- drx_da/anomaly_amount_modifier = 1
+ drx_da/anomaly_amount_modifier = 0.5
drx_da/anomaly_zone_anomalies_distance_max = 25
drx_da/anomaly_zone_anomalies_distance_min = 1
- drx_da/anomaly_zone_spawn_chance = 1
+ drx_da/anomaly_zone_spawn_chance = 0.5
drx_da/artefacts_spawn_chance = 15
drx_da/debug_mode = false
drx_da/delete_dynamic_anomalies = false
drx_da/disable_new_anomalies = false
- drx_da/electric_field_modifier = 1
+ drx_da/electric_field_modifier = 0.5
drx_da/enable_anomalies_behaviour = true
- drx_da/gravitational_shake_modifier = 1
+ drx_da/gravitational_shake_modifier = 0.5
drx_da/max_artefacts_per_zone = 2
- drx_da/presets = 1
+ drx_da/presets = 0
drx_da/random_artefact_spawn_chance = 25
drx_da/save_after_cleanup = false
- drx_da/zone_mine_cdf_enable = true
+ drx_da/zone_mine_cdf_enable = false
drx_da/zone_mine_flash_enable = true
- drx_da/zone_mine_ghost_enable = true
+ drx_da/zone_mine_ghost_enable = false
drx_da/zone_mine_gold_enable = true
drx_da/zone_mine_mefistotel_enable = true
drx_da/zone_mine_net_enable = true
@@ -953,7 +1081,7 @@
lootboxes/debug = false
lootboxes/lootquality = 1
lootboxes/stashchance = 40
- magazines/gameplay/deathammo = 1
+ magazines/gameplay/deathammo = 2
magazines/gameplay/deathquality = 1
magazines/gameplay/ejection = 1
magazines/gameplay/load_behavior = 0
@@ -973,8 +1101,8 @@
magazines/hud/show_hud = false
magazines/mgmt/debug = false
magazines/mgmt/empty_mags_stack = true
- magazines/mgmt/highlight_clr_a = 100
- magazines/mgmt/highlight_color = orange
+ magazines/mgmt/highlight_clr_a = 15
+ magazines/mgmt/highlight_color = blue
magazines/mgmt/mag_loadtime_factor = 0.8
magazines/mgmt/mag_tooltip = 0
magazines/mgmt/mag_unloadtime_factor = 0.5
@@ -1018,7 +1146,7 @@
mcm/key_wrapper/kb_grp_common/screenshot_modifier = 0
mcm/key_wrapper/kb_grp_companions/custom18_enable = true
mcm/key_wrapper/kb_grp_companions/custom18_key = 339
- mcm/key_wrapper/kb_grp_companions/custom18_mode = 2
+ mcm/key_wrapper/kb_grp_companions/custom18_mode = 1
mcm/key_wrapper/kb_grp_companions/custom18_modifier = 0
mcm/key_wrapper/kb_grp_companions/custom1_enable = false
mcm/key_wrapper/kb_grp_companions/custom1_key = -1
@@ -1423,7 +1551,7 @@
pawsys/pawpins/poi_icon_bodies = mpda_bluedot_sm
pawsys/pawpins/poi_icon_bwhr = bwhr_magn
pawsys/pawpins/poi_icon_faves = stash_green
- pawsys/pawpins/poi_icon_npcs = sleep_zone
+ pawsys/pawpins/poi_icon_npcs = obj_briefcase
pawsys/pawpins/poi_icon_patches = stalker
pawsys/pawpins/poi_icon_pins = redpush32
pawsys/pawpins/poi_icon_smartpins = bwhr_ak
@@ -1494,8 +1622,8 @@
scop/scop_fov = 0.4
scop/scope_fov = 0.4
selfkill/keybind_mcm = 14
- session_id = 490
- session_start = 1711948150000
+ session_id = 534
+ session_start = 1712304191000
sleep_timelapse/alifeOptimize = true
sleep_timelapse/alifeSleepRadius = 75
sleep_timelapse/camUpdateTotalTime = 2500
@@ -1801,7 +1929,7 @@
wpo/wpojam/modifier = 1
wpo/wpojam/oldammo = true
wpo/wpojam/second_key = 0
- wpo/wpojam/simplejam = true
+ wpo/wpojam/simplejam = false
wpo/wpojam/superjam = false
wpo/wpomisc/debug = false
wpo/wpomisc/display = true
@@ -2983,7 +3111,7 @@
gameplay/general/max_tasks = 3
gameplay/general/mechanic_feature = true
gameplay/general/need_equipped_hkit = true
- gameplay/general/npc_loot_distance = 3
+ gameplay/general/npc_loot_distance = 25
gameplay/general/outfit_portrait = true
gameplay/general/release_dropped_items = true
gameplay/general/show_tip_reputation = true
@@ -3024,7 +3152,7 @@
sound/radio/zone = true
video/advanced/actor_shadow = false
video/advanced/detail_bump = false
- video/advanced/detail_density = 0.5
+ video/advanced/detail_density = 0.62
video/advanced/detail_height = 1.2
video/advanced/detail_radius = 110
video/advanced/dof_enable = false
@@ -3097,9 +3225,13 @@
video/weather/storm_occurrence = 2
video/weather/storm_period = 4
+[save_profiles]
+ current_profile = 1
+ max_profiles = 5
+
[temp]
base_sway = on
fov_changed = false
- fov_value = 0.56999999284744
+ fov_value = 0.44999998807907
rspec_default = true
diff --git a/mods/[REQUIRED] Weapon Repositions/gamedata/configs/mod_system_ewr_rifles.ltx b/mods/[REQUIRED] Weapon Repositions/gamedata/configs/mod_system_ewr_rifles.ltx
index b40ba43f..cf2ee2f8 100644
--- a/mods/[REQUIRED] Weapon Repositions/gamedata/configs/mod_system_ewr_rifles.ltx
+++ b/mods/[REQUIRED] Weapon Repositions/gamedata/configs/mod_system_ewr_rifles.ltx
@@ -117,12 +117,14 @@
aim_hud_offset_rot_16x9 = 0.020066, 0.039098, -0.059932
hands_orientation = 2.019987, 1.20545, -3.481631
hands_orientation_16x9 = 2.019987, 1.20545, -3.481631
- hands_position = 0.018267, -0.034475, 0.126227
- hands_position_16x9 = 0.018267, -0.034475, 0.126227
- lowered_hud_offset_pos = 0.184744, 0.042425, -0.050558
- lowered_hud_offset_pos_16x9 = 0.184744, 0.042425, -0.050558
- lowered_hud_offset_rot = -0.01694, -0.895315, 0.458319
- lowered_hud_offset_rot_16x9 = -0.01694, -0.895315, 0.458319
+ hands_position = 0.018267, -0.034475, 0.102021
+ hands_position_16x9 = 0.018267, -0.034475, 0.102021
+ lowered_hud_offset_pos = 0.044625, 0.023311, -0.050558
+ lowered_hud_offset_pos_16x9 = 0.044625, 0.023311, -0.050558
+ lowered_hud_offset_rot = 0.186423, -0.540118, 0.267743
+ lowered_hud_offset_rot_16x9 = 0.186423, -0.540118, 0.267743
+ gl_hud_offset_pos = -0.0625, 0, -0.11
+ gl_hud_offset_pos_16x9 = -0.0625, 0, -0.11
![wpn_ak5c_bas_kemper_hud]
aim_hud_offset_pos = -0.060751, 0.027016, -0.051361
@@ -1265,10 +1267,10 @@
lowered_hud_offset_rot_16x9 = 0.04098, -0.868267, 0.587104
![wpn_adar2_15_hud]
- aim_hud_offset_pos = -0.0485, 0.024086, -0.047005
- aim_hud_offset_pos_16x9 = -0.0485, 0.024086, -0.047005
- aim_hud_offset_rot = 0.010145, 0.011506, -0.077281
- aim_hud_offset_rot_16x9 = 0.010145, 0.011506, -0.077281
+ aim_hud_offset_pos = -0.05021, 0.024299, -0.047005
+ aim_hud_offset_pos_16x9 = -0.05021, 0.024299, -0.047005
+ aim_hud_offset_rot = 0.008299, 0.023559, -0.077281
+ aim_hud_offset_rot_16x9 = 0.008299, 0.023559, -0.077281
gl_hud_offset_pos = -0.088, -0.061101, -0.100701
gl_hud_offset_pos_16x9 = -0.088, -0.061101, -0.100701
gl_hud_offset_rot = -0.017, 0.061, 0.25
@@ -1281,7 +1283,8 @@
lowered_hud_offset_pos_16x9 = 0.09378, 0.011377, 0
lowered_hud_offset_rot = 0.1, -0.8, 0.359539
lowered_hud_offset_rot_16x9 = 0.1, -0.8, 0.359539
-
+ item_orientation = 0.730877, -0.068844, 0
+
![wpn_adar2_15_aimpoint_hud]
aim_hud_offset_alt_pos = -0.051633, -0.045279, 0
aim_hud_offset_alt_pos_16x9 = -0.051633, -0.045279, 0
@@ -1841,6 +1844,23 @@
lowered_hud_offset_pos = 0.1, 0.01, 0
lowered_hud_offset_pos_16x9 = 0.1, 0.01, 0
+![wpn_ak105]
+ position = -0.026, -0.175, 0
+
+![wpn_ak105_hud]
+ aim_hud_offset_pos = -0.041967, 0.042429, -0.078755
+ aim_hud_offset_pos_16x9 = -0.041967, 0.042429, -0.078755
+ aim_hud_offset_rot = 0.020303, 0.010517, -0.077574
+ aim_hud_offset_rot_16x9 = 0.020303, 0.010517, -0.077574
+ hands_orientation = 0.568643, 0.816816, -4.152889
+ hands_orientation_16x9 = 0.568643, 0.816816, -4.152889
+ hands_position = 0.043035, -0.051162, 0.038215
+ hands_position_16x9 = 0.043035, -0.051162, 0.038215
+ lowered_hud_offset_pos = 0.067867, 0.022134, 0.02418
+ lowered_hud_offset_pos_16x9 = 0.067867, 0.022134, 0.02418
+ lowered_hud_offset_rot = 0.090046, -0.690131, 0.452713
+ lowered_hud_offset_rot_16x9 = 0.090046, -0.690131, 0.452713
+
![wpn_ak]
position = -0.026, -0.175, 0
@@ -1959,20 +1979,20 @@
aim_hud_offset_alt_pos_16x9 = -0.106699, -0.031898, 0
aim_hud_offset_alt_rot = -0.001426, 0.036326, 0.659175
aim_hud_offset_alt_rot_16x9 = -0.001426, 0.036326, 0.659175
- aim_hud_offset_pos = -0.046344, 0.040584, -0.070934
- aim_hud_offset_pos_16x9 = -0.046344, 0.040584, -0.070934
- aim_hud_offset_rot = 0.004312, 0.016137, -0.111845
- aim_hud_offset_rot_16x9 = 0.004312, 0.016137, -0.111845
+ aim_hud_offset_pos = -0.044103, 0.04385, -0.070934
+ aim_hud_offset_pos_16x9 = -0.044103, 0.04385, -0.070934
+ aim_hud_offset_rot = 0.009426, 0.034221, -0.091168
+ aim_hud_offset_rot_16x9 = 0.009426, 0.034221, -0.091168
fire_point2 = 0, -0.011, 0.553
gl_hud_offset_pos = -0.1021, -0.152003, -0.15
gl_hud_offset_pos_16x9 = -0.1021, -0.152003, -0.15
gl_hud_offset_rot = -0.298998, 0.00875, -0.007999
gl_hud_offset_rot_16x9 = -0.298998, 0.00875, -0.007999
- hands_orientation = 0.685467, 0.640573, -5.313436
- hands_orientation_16x9 = 0.685467, 0.640573, -5.313436
- hands_position = -0.094724, -0.153043, -0.073618
- hands_position_16x9 = -0.094724, -0.153043, -0.073618
- item_orientation = 0.285878, -0.407345, 0
+ hands_orientation = 1.197471, 1.021732, -4.353154
+ hands_orientation_16x9 = 1.197471, 1.021732, -4.353154
+ hands_position = -0.102726, -0.154321, -0.073618
+ hands_position_16x9 = -0.102726, -0.154321, -0.073618
+ item_orientation = 0.837561, -0.417587, 0
item_position = 0.002744, 0.001897, -0.000207
item_position = 0.004395, 2.5e-05, -0.000207
lowered_hud_offset_pos = 0.109619, 0.028086, 0.059741
@@ -2248,8 +2268,18 @@
lowered_hud_offset_rot_16x9 = 0.1, -0.8, 0.383025
![wpn_m14_hud]
- hands_position = -0.035409, -0.014823, 0.000242
- hands_position_16x9 = -0.035409, -0.014823, 0.000242
+ aim_hud_offset_pos = -0.032261, 0.042868, -0.100535
+ aim_hud_offset_pos_16x9 = -0.032261, 0.042868, -0.100535
+ aim_hud_offset_rot = 0.013998, 0.014774, -0.07289
+ aim_hud_offset_rot_16x9 = 0.013998, 0.014774, -0.07289
+ hands_orientation = 0.760367, 0.827574, -4.651404
+ hands_orientation_16x9 = 0.760367, 0.827574, -4.651404
+ hands_position = -0.058391, -0.019079, -0.02109
+ hands_position_16x9 = -0.058391, -0.019079, -0.02109
+ lowered_hud_offset_pos = 0.091652, 0.02363, 0.078244
+ lowered_hud_offset_pos_16x9 = 0.091652, 0.02363, 0.078244
+ lowered_hud_offset_rot = 0.099574, -0.720425, 0.398669
+ lowered_hud_offset_rot_16x9 = 0.099574, -0.720425, 0.398669
![wpn_m24]
use_alt_aim_hud = true
@@ -2275,6 +2305,34 @@
lowered_hud_offset_pos_16x9 = 0.140826, 0.03471, -0.006116
lowered_hud_offset_rot = 0.103273, -0.802666, 0.40002
lowered_hud_offset_rot_16x9 = 0.103273, -0.802666, 0.40002
+
+![wpn_m4_tac_ekp8_18_hud]
+ aim_hud_offset_pos = -0.0327, 0.000545, -0.026481
+ aim_hud_offset_pos_16x9 = -0.0327, 0.000545, -0.026481
+ aim_hud_offset_rot = 0.006618, 0.006967, 0
+ aim_hud_offset_rot_16x9 = 0.006618, 0.006967, 0
+ hands_orientation = 0.385786, 0.241211, 0
+ hands_orientation_16x9 = 0.385786, 0.241211, 0
+ hands_position = -0.00652, -0.007477, 0.001489
+ hands_position_16x9 = -0.00652, -0.007477, 0.001489
+ lowered_hud_offset_pos = 0.04923, 0.00277, 0.014934
+ lowered_hud_offset_pos_16x9 = 0.04923, 0.00277, 0.014934
+ lowered_hud_offset_rot = 0.069432, -0.872158, 0.478246
+ lowered_hud_offset_rot_16x9 = 0.069432, -0.872158, 0.478246
+
+![wpn_m4_tac_hud]
+ aim_hud_offset_pos = -0.033336, 0.006947, -0.026481
+ aim_hud_offset_pos_16x9 = -0.033336, 0.006947, -0.026481
+ aim_hud_offset_rot = 0.004346, 0.006811, 0
+ aim_hud_offset_rot_16x9 = 0.004346, 0.006811, 0
+ hands_orientation = 0.385786, 0.241211, 0
+ hands_orientation_16x9 = 0.385786, 0.241211, 0
+ hands_position = -0.00652, -0.007477, 0.001489
+ hands_position_16x9 = -0.00652, -0.007477, 0.001489
+ lowered_hud_offset_pos = 0.04923, 0.00277, 0.014934
+ lowered_hud_offset_pos_16x9 = 0.04923, 0.00277, 0.014934
+ lowered_hud_offset_rot = 0.069432, -0.872158, 0.478246
+ lowered_hud_offset_rot_16x9 = 0.069432, -0.872158, 0.478246
![wpn_g36]
fire_point = 0, 0.21, 0.58
diff --git a/mods/[REQUIRED] Weapon Repositions/gamedata/configs/mod_system_ewr_shotguns.ltx b/mods/[REQUIRED] Weapon Repositions/gamedata/configs/mod_system_ewr_shotguns.ltx
index 7d1848e6..43410883 100644
--- a/mods/[REQUIRED] Weapon Repositions/gamedata/configs/mod_system_ewr_shotguns.ltx
+++ b/mods/[REQUIRED] Weapon Repositions/gamedata/configs/mod_system_ewr_shotguns.ltx
@@ -1,116 +1,17 @@
-![wpn_spas12]
- fire_point = 0, 0.133, 0.686
- fire_point2 = 0, 0.103, 0.686
- position = -0.024, -0.081, 0
- shell_point = 0, 0.138, 0.07
- strap_position = -0.26, -0.1, 0.05
+![wpn_bm16_full_hud]
+ aim_hud_offset_pos = -0.05033, 0.054287, -0.05
+ aim_hud_offset_pos_16x9 = -0.05033, 0.054287, -0.05
+ aim_hud_offset_rot = 0.029034, 0.028453, -0.036478
+ aim_hud_offset_rot_16x9 = 0.029034, 0.028453, -0.036478
+ hands_orientation = 1.66971, 2.070208, -2.542942
+ hands_orientation_16x9 = 1.66971, 2.070208, -2.542942
+ hands_position = 3.2e-05, -0.010448, -0.17395
+ hands_position_16x9 = 3.2e-05, -0.010448, -0.17395
+ lowered_hud_offset_pos = 0.12008, 0.028666, 0
+ lowered_hud_offset_pos_16x9 = 0.12008, 0.028666, 0
+ lowered_hud_offset_rot = 0.115645, -0.650132, 0.368089
+ lowered_hud_offset_rot_16x9 = 0.115645, -0.650132, 0.368089
-![wpn_spas12_hud]
- aim_hud_offset_pos = -0.040185, 0.044069, -0.061513
- aim_hud_offset_pos_16x9 = -0.040185, 0.044069, -0.061513
- aim_hud_offset_rot = 0.017184, 0.014279, -0.114453
- aim_hud_offset_rot_16x9 = 0.017184, 0.014279, -0.114453
- hands_orientation = 1.988269, -0.159289, -4.784354
- hands_orientation_16x9 = 1.988269, -0.159289, -4.784354
- hands_position = -0.023465, 0.001777, 0.054063
- hands_position_16x9 = -0.023465, 0.001777, 0.054063
- lowered_hud_offset_pos = 0.108771, 0.02004, -0.02
- lowered_hud_offset_pos_16x9 = 0.108771, 0.02004, -0.02
- lowered_hud_offset_rot = -0.094308, -0.710934, 0.685156
- lowered_hud_offset_rot_16x9 = -0.094308, -0.710934, 0.685156
-
-![wpn_toz194_hud]
- aim_hud_offset_pos = -0.047189, 0.066443, -0.005648
- aim_hud_offset_pos_16x9 = -0.047189, 0.066443, -0.005648
- aim_hud_offset_rot = 0.011512, 0.012908, -0.115533
- aim_hud_offset_rot_16x9 = 0.011512, 0.012908, -0.115533
- hands_orientation = 0.708269, 0.779389, -7.554839
- hands_orientation_16x9 = 0.708269, 0.779389, -7.554839
- hands_position = -0.013039, -0.072871, 0.003939
- hands_position_16x9 = -0.013039, -0.072871, 0.003939
- lowered_hud_offset_rot = 0.1, -0.4, 0.2
- lowered_hud_offset_rot_16x9 = 0.1, -0.4, 0.2
-
-![wpn_wincheaster1300]
- fire_point = 0, 0.158, 0.647
- fire_point2 = 0, 0.158, 0.647
- position = -0.024, -0.097, 0
- shell_point = 0, 0.18, 0.647
- strap_position = -0.26, -0.1, 0.05
-
-![wpn_toz34]
- position = -0.023, -0.14, 0
-
-![wpn_toz34_hud]
- aim_hud_offset_pos = -0.046582, 0.044456, -0.08
- aim_hud_offset_pos_16x9 = -0.046582, 0.044456, -0.08
- aim_hud_offset_rot = 0.004462, 0.018404, -0.073391
- aim_hud_offset_rot_16x9 = 0.004462, 0.018404, -0.073391
- hands_orientation = 1.015046, 0.135983, -3.549867
- hands_orientation_16x9 = 1.015046, 0.135983, -3.549867
- hands_position = -0.011895, 0.002573, -0.102835
- hands_position_16x9 = -0.011895, 0.002573, -0.102835
- lowered_hud_offset_pos = 0.124027, 0.008828, 0
- lowered_hud_offset_pos_16x9 = 0.124027, 0.008828, 0
- lowered_hud_offset_rot = 0.055469, -0.607629, 0.347472
- lowered_hud_offset_rot_16x9 = 0.055469, -0.607629, 0.347472
-
-![wpn_saiga12s_m1]
- shell_point = 0, 0.138, 0.07
- strap_position = -0.26, -0.1, 0.05
-
-![wpn_saiga12s_m1_hud]
- aim_hud_offset_pos = -0.037025, 0.036572, -0.005726
- aim_hud_offset_pos_16x9 = -0.037025, 0.036572, -0.005726
- aim_hud_offset_rot = 0.034253, 0.028845, -0.087036
- aim_hud_offset_rot_16x9 = 0.034253, 0.028845, -0.087036
- hands_orientation = 1.418723, 2.100001, -5.085872
- hands_orientation_16x9 = 1.418723, 2.100001, -5.085872
- hands_position = -0.01774, -0.034569, -0.217075
- hands_position_16x9 = -0.01774, -0.034569, -0.217075
- lowered_hud_offset_pos = 0.029277, -4.4e-05, 0.017286
- lowered_hud_offset_pos_16x9 = 0.029277, -4.4e-05, 0.017286
- lowered_hud_offset_rot = 0.094313, -0.726398, 0.49538
- lowered_hud_offset_rot_16x9 = 0.094313, -0.726398, 0.49538
-
-![wpn_saiga12s_m1_pka]
- shell_point = 0, 0.138, 0.07
- strap_position = -0.26, -0.1, 0.05
-
-![wpn_saiga12s_m1_pka_hud]
- aim_hud_offset_pos = -0.04598, 0.031176, -0.005726
- aim_hud_offset_pos_16x9 = -0.04598, 0.031176, -0.005726
- aim_hud_offset_rot = 0.02523, 0.040207, -0.057597
- aim_hud_offset_rot_16x9 = 0.02523, 0.040207, -0.057597
- hands_orientation = 1.418723, 2.100001, -3.276805
- hands_orientation_16x9 = 1.418723, 2.100001, -3.276805
- hands_position = -0.000303, -0.053054, -0.217075
- hands_position_16x9 = -0.000303, -0.053054, -0.217075
- lowered_hud_offset_pos = 0.029277, -4.4e-05, 0.017286
- lowered_hud_offset_pos_16x9 = 0.029277, -4.4e-05, 0.017286
- lowered_hud_offset_rot = 0.094313, -0.726398, 0.49538
- lowered_hud_offset_rot_16x9 = 0.094313, -0.726398, 0.49538
-
-![wpn_mp153_bas]
- shell_point = 0, 0.18, 0.647
- strap_position = -0.26, -0.1, 0.05
-
-![wpn_mp153_bas_hud]
- aim_hud_offset_pos = -0.02942, 0.042306, -0.0261
- aim_hud_offset_pos_16x9 = -0.02942, 0.042306, -0.0261
- aim_hud_offset_rot = 0.016287, 0.01109, -0.027672
- aim_hud_offset_rot_16x9 = 0.016287, 0.01109, -0.027672
- fire_point = 0, 0, 0.2
- hands_orientation = 0.546986, 1.653293, -2.729784
- hands_orientation_16x9 = 0.546986, 1.653293, -2.729784
- hands_position = -0.023656, -0.011448, -0.007362
- hands_position_16x9 = -0.023656, -0.011448, -0.007362
- item_orientation = -0.046126, -1.000036, -0.02495
- lowered_hud_offset_pos = 0.081491, 0.013924, 0.007814
- lowered_hud_offset_pos_16x9 = 0.081491, 0.013924, 0.007814
- lowered_hud_offset_rot = 0.1, -0.8, 0.39369
- lowered_hud_offset_rot_16x9 = 0.1, -0.8, 0.39369
-
![wpn_ks23]
fire_point = 0, 0, 0.647
orientation = 0, 0.08, 0
@@ -156,3 +57,114 @@
lowered_hud_offset_pos_16x9 = 0.060263, 0.003466, 0.042665
lowered_hud_offset_rot = 0.1, -0.8, 0.493955
lowered_hud_offset_rot_16x9 = 0.1, -0.8, 0.493955
+
+![wpn_mp153_bas]
+ shell_point = 0, 0.18, 0.647
+ strap_position = -0.26, -0.1, 0.05
+
+![wpn_mp153_bas_hud]
+ aim_hud_offset_pos = -0.02942, 0.042306, -0.0261
+ aim_hud_offset_pos_16x9 = -0.02942, 0.042306, -0.0261
+ aim_hud_offset_rot = 0.016287, 0.01109, -0.027672
+ aim_hud_offset_rot_16x9 = 0.016287, 0.01109, -0.027672
+ fire_point = 0, 0, 0.2
+ hands_orientation = 0.546986, 1.653293, -2.729784
+ hands_orientation_16x9 = 0.546986, 1.653293, -2.729784
+ hands_position = -0.023656, -0.011448, -0.007362
+ hands_position_16x9 = -0.023656, -0.011448, -0.007362
+ item_orientation = -0.046126, -1.000036, -0.02495
+ lowered_hud_offset_pos = 0.081491, 0.013924, 0.007814
+ lowered_hud_offset_pos_16x9 = 0.081491, 0.013924, 0.007814
+ lowered_hud_offset_rot = 0.1, -0.8, 0.39369
+ lowered_hud_offset_rot_16x9 = 0.1, -0.8, 0.39369
+
+![wpn_saiga12s_m1]
+ shell_point = 0, 0.138, 0.07
+ strap_position = -0.26, -0.1, 0.05
+
+![wpn_saiga12s_m1_hud]
+ aim_hud_offset_pos = -0.037025, 0.036572, -0.005726
+ aim_hud_offset_pos_16x9 = -0.037025, 0.036572, -0.005726
+ aim_hud_offset_rot = 0.034253, 0.028845, -0.087036
+ aim_hud_offset_rot_16x9 = 0.034253, 0.028845, -0.087036
+ hands_orientation = 1.418723, 2.100001, -5.085872
+ hands_orientation_16x9 = 1.418723, 2.100001, -5.085872
+ hands_position = -0.01774, -0.034569, -0.217075
+ hands_position_16x9 = -0.01774, -0.034569, -0.217075
+ lowered_hud_offset_pos = 0.029277, -4.4e-05, 0.017286
+ lowered_hud_offset_pos_16x9 = 0.029277, -4.4e-05, 0.017286
+ lowered_hud_offset_rot = 0.094313, -0.726398, 0.49538
+ lowered_hud_offset_rot_16x9 = 0.094313, -0.726398, 0.49538
+
+![wpn_saiga12s_m1_pka]
+ shell_point = 0, 0.138, 0.07
+ strap_position = -0.26, -0.1, 0.05
+
+![wpn_saiga12s_m1_pka_hud]
+ aim_hud_offset_pos = -0.04598, 0.031176, -0.005726
+ aim_hud_offset_pos_16x9 = -0.04598, 0.031176, -0.005726
+ aim_hud_offset_rot = 0.02523, 0.040207, -0.057597
+ aim_hud_offset_rot_16x9 = 0.02523, 0.040207, -0.057597
+ hands_orientation = 1.418723, 2.100001, -3.276805
+ hands_orientation_16x9 = 1.418723, 2.100001, -3.276805
+ hands_position = -0.000303, -0.053054, -0.217075
+ hands_position_16x9 = -0.000303, -0.053054, -0.217075
+ lowered_hud_offset_pos = 0.029277, -4.4e-05, 0.017286
+ lowered_hud_offset_pos_16x9 = 0.029277, -4.4e-05, 0.017286
+ lowered_hud_offset_rot = 0.094313, -0.726398, 0.49538
+ lowered_hud_offset_rot_16x9 = 0.094313, -0.726398, 0.49538
+![wpn_spas12]
+ fire_point = 0, 0.133, 0.686
+ fire_point2 = 0, 0.103, 0.686
+ position = -0.024, -0.081, 0
+ shell_point = 0, 0.138, 0.07
+ strap_position = -0.26, -0.1, 0.05
+
+![wpn_spas12_hud]
+ aim_hud_offset_pos = -0.040185, 0.044069, -0.061513
+ aim_hud_offset_pos_16x9 = -0.040185, 0.044069, -0.061513
+ aim_hud_offset_rot = 0.017184, 0.014279, -0.114453
+ aim_hud_offset_rot_16x9 = 0.017184, 0.014279, -0.114453
+ hands_orientation = 1.988269, -0.159289, -4.784354
+ hands_orientation_16x9 = 1.988269, -0.159289, -4.784354
+ hands_position = -0.023465, 0.001777, 0.054063
+ hands_position_16x9 = -0.023465, 0.001777, 0.054063
+ lowered_hud_offset_pos = 0.108771, 0.02004, -0.02
+ lowered_hud_offset_pos_16x9 = 0.108771, 0.02004, -0.02
+ lowered_hud_offset_rot = -0.094308, -0.710934, 0.685156
+ lowered_hud_offset_rot_16x9 = -0.094308, -0.710934, 0.685156
+![wpn_toz194_hud]
+ aim_hud_offset_pos = -0.047189, 0.066443, -0.005648
+ aim_hud_offset_pos_16x9 = -0.047189, 0.066443, -0.005648
+ aim_hud_offset_rot = 0.011512, 0.012908, -0.115533
+ aim_hud_offset_rot_16x9 = 0.011512, 0.012908, -0.115533
+ hands_orientation = 0.708269, 0.779389, -7.554839
+ hands_orientation_16x9 = 0.708269, 0.779389, -7.554839
+ hands_position = -0.013039, -0.072871, 0.003939
+ hands_position_16x9 = -0.013039, -0.072871, 0.003939
+ lowered_hud_offset_rot = 0.1, -0.4, 0.2
+ lowered_hud_offset_rot_16x9 = 0.1, -0.4, 0.2
+
+![wpn_toz34]
+ position = -0.023, -0.14, 0
+
+![wpn_toz34_hud]
+ aim_hud_offset_pos = -0.046582, 0.044456, -0.08
+ aim_hud_offset_pos_16x9 = -0.046582, 0.044456, -0.08
+ aim_hud_offset_rot = 0.004462, 0.018404, -0.073391
+ aim_hud_offset_rot_16x9 = 0.004462, 0.018404, -0.073391
+ hands_orientation = 1.015046, 0.135983, -3.549867
+ hands_orientation_16x9 = 1.015046, 0.135983, -3.549867
+ hands_position = -0.011895, 0.002573, -0.102835
+ hands_position_16x9 = -0.011895, 0.002573, -0.102835
+ lowered_hud_offset_pos = 0.124027, 0.008828, 0
+ lowered_hud_offset_pos_16x9 = 0.124027, 0.008828, 0
+ lowered_hud_offset_rot = 0.055469, -0.607629, 0.347472
+ lowered_hud_offset_rot_16x9 = 0.055469, -0.607629, 0.347472
+
+![wpn_wincheaster1300]
+ fire_point = 0, 0.158, 0.647
+ fire_point2 = 0, 0.158, 0.647
+ position = -0.024, -0.097, 0
+ shell_point = 0, 0.18, 0.647
+ strap_position = -0.26, -0.1, 0.05
diff --git a/mods/[REQUIRED] Weapon Repositions/gamedata/configs/mod_system_ewr_smgs.ltx b/mods/[REQUIRED] Weapon Repositions/gamedata/configs/mod_system_ewr_smgs.ltx
index 7c978c90..17b3093d 100644
--- a/mods/[REQUIRED] Weapon Repositions/gamedata/configs/mod_system_ewr_smgs.ltx
+++ b/mods/[REQUIRED] Weapon Repositions/gamedata/configs/mod_system_ewr_smgs.ltx
@@ -38,6 +38,59 @@
aim_hud_offset_pos_16x9 = -0.04723, 0.015552, -0.0585
aim_hud_offset_rot = -0.002522, 0.003505, -0.135888
aim_hud_offset_rot_16x9 = -0.002522, 0.003505, -0.135888
+
+![wpn_ak74u_n1]
+ fire_point = 0, -0.05, 0.656
+ strap_position = -0.18, 0, 0
+
+![wpn_ak74u_n1_ekp8_02]
+ fire_point = 0, -0.05, 0.656
+ strap_position = -0.18, 0, 0
+
+![wpn_ak74u_n1_ekp8_02_hud]
+ aim_hud_offset_pos = -0.039426, 0.012512, -0.054479
+ aim_hud_offset_pos_16x9 = -0.039426, 0.012512, -0.054479
+ aim_hud_offset_rot = 0.039508, 0.036265, -0.068767
+ aim_hud_offset_rot_16x9 = 0.039508, 0.036265, -0.068767
+ hands_orientation = 1.953032, 2.24016, -3.928803
+ hands_orientation_16x9 = 1.953032, 2.24016, -3.928803
+ hands_position = -0.021994, -0.024698, -0.0336
+ hands_position_16x9 = -0.021994, -0.024698, -0.0336
+ lowered_hud_offset_pos = 0.030245, 0.014084, 0
+ lowered_hud_offset_pos_16x9 = 0.030245, 0.014084, 0
+ lowered_hud_offset_rot = 0.1, -0.8, 0.53591
+ lowered_hud_offset_rot_16x9 = 0.1, -0.8, 0.53591
+
+![wpn_ak74u_n1_hud]
+ aim_hud_offset_pos = -0.042565, 0.038679, -0.054479
+ aim_hud_offset_pos_16x9 = -0.042565, 0.038679, -0.054479
+ aim_hud_offset_rot = 0.039508, 0.036265, -0.068767
+ aim_hud_offset_rot_16x9 = 0.039508, 0.036265, -0.068767
+ hands_orientation = 1.953032, 2.24016, -3.928803
+ hands_orientation_16x9 = 1.953032, 2.24016, -3.928803
+ hands_position = -0.021994, -0.024698, -0.0336
+ hands_position_16x9 = -0.021994, -0.024698, -0.0336
+ lowered_hud_offset_pos = 0.030245, 0.014084, 0
+ lowered_hud_offset_pos_16x9 = 0.030245, 0.014084, 0
+ lowered_hud_offset_rot = 0.1, -0.8, 0.53591
+ lowered_hud_offset_rot_16x9 = 0.1, -0.8, 0.53591
+
+![wpn_aks74]
+ position = -0.026, -0.175, 0
+
+![wpn_aks74_hud]
+ aim_hud_offset_pos = -0.055975, 0.035975, -0.1
+ aim_hud_offset_pos_16x9 = -0.055975, 0.035975, -0.1
+ aim_hud_offset_rot = 0.004854, 0.007486, -0.097423
+ aim_hud_offset_rot_16x9 = 0.004854, 0.007486, -0.097423
+ hands_orientation = 0.411734, 0.492665, -5.723024
+ hands_orientation_16x9 = 0.411734, 0.492665, -5.723024
+ hands_position = 0.058399, -0.030831, 0.026049
+ hands_position_16x9 = 0.058399, -0.030831, 0.026049
+ lowered_hud_offset_pos = 0.067864, 0.009549, 0
+ lowered_hud_offset_pos_16x9 = 0.067864, 0.009549, 0
+ lowered_hud_offset_rot = 0.077949, -0.677864, 0.416444
+ lowered_hud_offset_rot_16x9 = 0.077949, -0.677864, 0.416444
![wpn_aks74_1p29]
position = -0.026, -0.175, 0
@@ -73,6 +126,24 @@
lowered_hud_offset_rot = 0.1, -0.8, 0.378759
lowered_hud_offset_rot_16x9 = 0.1, -0.8, 0.378759
+![wpn_bizon]
+ position = -0.026, -0.175, 0
+ shell_point = 0, 0.188, 0.082
+
+![wpn_bizon_hud]
+ aim_hud_offset_pos = -0.040812, 0.024034, -0.092584
+ aim_hud_offset_pos_16x9 = -0.040812, 0.024034, -0.092584
+ aim_hud_offset_rot = -0.019194, 0.000484, -0.057242
+ aim_hud_offset_rot_16x9 = -0.019194, 0.000484, -0.057242
+ hands_orientation = 0.043069, 0.059792, -3.101779
+ hands_orientation_16x9 = 0.043069, 0.059792, -3.101779
+ hands_position = -0.049654, -0.006337, 0.067551
+ hands_position_16x9 = -0.049654, -0.006337, 0.067551
+ lowered_hud_offset_pos = 0.104848, 0.033987, 0.002628
+ lowered_hud_offset_pos_16x9 = 0.104848, 0.033987, 0.002628
+ lowered_hud_offset_rot = 0.237224, -0.679576, 0.175647
+ lowered_hud_offset_rot_16x9 = 0.237224, -0.679576, 0.175647
+
![wpn_vz61_scorpion_m1]
fire_point = 0, 0.188, 0.392
fire_point2 = 0, 0.188, 0.392
@@ -187,56 +258,3 @@
lowered_hud_offset_pos_16x9 = 0.032109, 0.028295, 0
lowered_hud_offset_rot = 0.234321, -0.643519, 0.347458
lowered_hud_offset_rot_16x9 = 0.234321, -0.643519, 0.347458
-
-![wpn_aks74]
- position = -0.026, -0.175, 0
-
-![wpn_aks74_hud]
- aim_hud_offset_pos = -0.055975, 0.035975, -0.1
- aim_hud_offset_pos_16x9 = -0.055975, 0.035975, -0.1
- aim_hud_offset_rot = 0.004854, 0.007486, -0.097423
- aim_hud_offset_rot_16x9 = 0.004854, 0.007486, -0.097423
- hands_orientation = 0.411734, 0.492665, -5.723024
- hands_orientation_16x9 = 0.411734, 0.492665, -5.723024
- hands_position = 0.058399, -0.030831, 0.026049
- hands_position_16x9 = 0.058399, -0.030831, 0.026049
- lowered_hud_offset_pos = 0.067864, 0.009549, 0
- lowered_hud_offset_pos_16x9 = 0.067864, 0.009549, 0
- lowered_hud_offset_rot = 0.077949, -0.677864, 0.416444
- lowered_hud_offset_rot_16x9 = 0.077949, -0.677864, 0.416444
-
-![wpn_ak74u_n1]
- fire_point = 0, -0.05, 0.656
- strap_position = -0.18, 0, 0
-
-![wpn_ak74u_n1_ekp8_02]
- fire_point = 0, -0.05, 0.656
- strap_position = -0.18, 0, 0
-
-![wpn_ak74u_n1_ekp8_02_hud]
- aim_hud_offset_pos = -0.039426, 0.012512, -0.054479
- aim_hud_offset_pos_16x9 = -0.039426, 0.012512, -0.054479
- aim_hud_offset_rot = 0.039508, 0.036265, -0.068767
- aim_hud_offset_rot_16x9 = 0.039508, 0.036265, -0.068767
- hands_orientation = 1.953032, 2.24016, -3.928803
- hands_orientation_16x9 = 1.953032, 2.24016, -3.928803
- hands_position = -0.021994, -0.024698, -0.0336
- hands_position_16x9 = -0.021994, -0.024698, -0.0336
- lowered_hud_offset_pos = 0.030245, 0.014084, 0
- lowered_hud_offset_pos_16x9 = 0.030245, 0.014084, 0
- lowered_hud_offset_rot = 0.1, -0.8, 0.53591
- lowered_hud_offset_rot_16x9 = 0.1, -0.8, 0.53591
-
-![wpn_ak74u_n1_hud]
- aim_hud_offset_pos = -0.042565, 0.038679, -0.054479
- aim_hud_offset_pos_16x9 = -0.042565, 0.038679, -0.054479
- aim_hud_offset_rot = 0.039508, 0.036265, -0.068767
- aim_hud_offset_rot_16x9 = 0.039508, 0.036265, -0.068767
- hands_orientation = 1.953032, 2.24016, -3.928803
- hands_orientation_16x9 = 1.953032, 2.24016, -3.928803
- hands_position = -0.021994, -0.024698, -0.0336
- hands_position_16x9 = -0.021994, -0.024698, -0.0336
- lowered_hud_offset_pos = 0.030245, 0.014084, 0
- lowered_hud_offset_pos_16x9 = 0.030245, 0.014084, 0
- lowered_hud_offset_rot = 0.1, -0.8, 0.53591
- lowered_hud_offset_rot_16x9 = 0.1, -0.8, 0.53591
diff --git a/profiles/Default/modlist.txt b/profiles/Default/modlist.txt
index 04fa062f..1148d5a7 100644
--- a/profiles/Default/modlist.txt
+++ b/profiles/Default/modlist.txt
@@ -11,6 +11,7 @@
+[OPTIONAL] Classic Radio
+[OPTIONAL] PDA Playlist Framework
+[OPTIONAL] Configurable Freelook
++[OPTIONAL] Exit Save
+[REQUIRED] UI Rework Main Menu Replacer
+[REQUIRED] Weapon Repositions
+[REQUIRED] Modpack Data
@@ -26,7 +27,7 @@
+Binocular Renaimation
-Last Load and Overrides_separator
+Redone Radar and Red Forest - Duty Expansion Patch
-+New Levels - Arrival Patch
+-New Levels - Arrival Patch
-Patches and Compatibility_separator
+Usable Bar Doors
+Alternate Fake Start
@@ -42,6 +43,8 @@
-Weather and Environment_separator
+UI Rework G.A.M.M.A. Style - Soulslike Gamemode Patch
+UI Rework G.A.M.M.A. Style
++HUD Icons Time
++Save Profiles
+Underrail Cursors
+Hide Tooltip
+Instant Tooltip
@@ -107,13 +110,14 @@
+Anomaly Magazines Redux
+Western Goods - Readables Extended
+Western Goods
++Even More Hideout Furniture
++Hideout Furniture Preview Gizmo
+Hideout Furniture Fix
+Hideout Furniture Expansion
+Hideout Furniture
+Classes and Talents
+Devices of Anomaly Redone - Dosimeter Enhanced
+Devices of Anomaly Redone
-+Anomaly Ballistics Overhaul
+Weapon Parts Overhaul
+Tosox Mini Mod Repo
+Nitpicker's Modpack
@@ -123,20 +127,10 @@
+Arszis Radiation Overhaul - Demonized Edition
+Body Health System Realistic Overhaul
+Groks Body Health System Redux
-+Arrival - Busy Hands Bug Fix
-+Arrival
+-Arrival - Busy Hands Bug Fix
+-Arrival
-Gameplay Overhauls_separator
-+RGD-2 Smoke Grenade
-+Glowsticks Reanimated
-+Glowsticks
-+ACE! 52
-+Tommy Gun Drop
-+Boomsticks and Sharpsticks - Mark Switch
-+Boomsticks and Sharpsticks - Patch 25
-+Boomsticks and Sharpsticks
--New Weapons and Items_separator
-+HIP HD Model
--Character and NPC Visuals_separator
++NPC Wounded Redone
+EFT Footsteps and Tinnitsus
+NPC Dont Attack Boxes
+And Who To Shoot
@@ -159,6 +153,17 @@
+NPC Close Combat Enhanced
+AI Combat Pack
-AI and NPC Tweaks_separator
++RGD-2 Smoke Grenade
++Glowsticks Reanimated
++Glowsticks
++ACE! 52
++Tommy Gun Drop
++Boomsticks and Sharpsticks - Mark Switch
++Boomsticks and Sharpsticks - Patch 25
++Boomsticks and Sharpsticks
+-New Weapons and Items_separator
++Placeable Campfires
++Zone Customization Project
+Mutant Loot Chance
+Bullet Time
+Correct Weapon Distance
@@ -194,6 +199,8 @@
+Armor Rebalance
+TBs Coordinate Based Safe Zones
-Gameplay Tweaks_separator
++HIP HD Model
+-Character and NPC Visuals_separator
+Headlamp Reanimated
+Enjoy Cigarettes
+Asnens and Groks Better Cigarettes Animations
@@ -242,6 +249,7 @@
+I.N.E.R.T.I.A. - Camera Reanimation Project
+Blindsides Reanimation Pack
-Animations and Skeletons_separator
++REPACK Doors
+Drunk's Miserable Masks
+Simple Flashlight Replacer
+HQ Glass Overlay
diff --git a/profiles/Default/modlist.txt.2024_04_05_03_33_31 b/profiles/Default/modlist.txt.2024_04_05_03_33_31
new file mode 100644
index 00000000..4a6262ad
--- /dev/null
+++ b/profiles/Default/modlist.txt.2024_04_05_03_33_31
@@ -0,0 +1,295 @@
+# This file was automatically generated by Mod Organizer.
+-Unmanaged_separator
+-[DEV] Alternate Crouching
+-[DEV] Custom Traders
+-[DEV] Backpack Drops
++Divergent - Developer Workspace_separator
+-[DEV] Configuration Files
+-Dvergent - Developer Addons_separator
+-[DEPRECATED] EGUI Main Menu Replacer
+-Divergent - Deprecated Addons_separator
++[OPTIONAL] Classic Radio
++[OPTIONAL] PDA Playlist Framework
++[OPTIONAL] Configurable Freelook
++[OPTIONAL] Exit Save
++[REQUIRED] UI Rework Main Menu Replacer
++[REQUIRED] Weapon Repositions
++[REQUIRED] Modpack Data
+-Divergent - Custom Addons_separator
++Atmospherics
++Shaders Look Better
++Screen Space Shaders
++Aydins Grass Tweaks - SSS Terrain LOD Compatiblity
++Beefs NVGs - Improved
++Shader Driven Scopes
++Enhanced Shaders and Color Grading
++bhsro_surgerykit
++Binocular Renaimation
+-Last Load and Overrides_separator
++Redone Radar and Red Forest - Duty Expansion Patch
++New Levels - Arrival Patch
+-Patches and Compatibility_separator
++Usable Bar Doors
++Alternate Fake Start
++Redone Radar and Red Forest
++Redone Limansk and Hospital
++Redone Pripyat and Juipiter
++Redone Collection
++Extra Level Transitions - Bonus Transitions
++Extra Level Transitions
++New Levels - UI Fixes
++New Levels
+-Locations and Levels_separator
+-Weather and Environment_separator
++UI Rework G.A.M.M.A. Style - Soulslike Gamemode Patch
++UI Rework G.A.M.M.A. Style
++HUD Icons Time
++Save Profiles
++Underrail Cursors
++Hide Tooltip
++Instant Tooltip
++Advanced Map Scale In The PDA
++Anomaly Popup Messages
++Draggable HUD Editor
++Crafting Info in Tooltips
++Keep Crafting Window Open
++Personal Adjustable Waypoint
++Show All Faction Relations in PDA
++High Resolution PDA Maps
++Display Campfires On Map
++Sorting Plus
++Quick Action Wheel
++Device Selector Key
++Anomaly Barter
++PDA Hacking
++The Collector
++PDA Taskboard
++Better Stats Bars
++Dialog Dynamic UI
++Hunger Thirst and Sleep Bars
++Utjans QoL Bundle
++Utjans Item UI Improvements
++Maid's Vanilla HD Icons
++Portraits Overhaul
+-Interface and HUD_separator
++Parallax Reflex Sights
++Mark Switch
++Blood Pools
++Shell Physical Particles
++Volumetric Smoke for Agroprom Underground
++Smooth Campfire
++Dismemberment
++Hollywood FX
++Visuals and Effects_separator
++Sound Clues for HTS
++Footsies
++Ledge Climbing Sounds Redone
++Anomaly Footstep Redone
++Gear Rustle Redone
++Return Menu Music
++Bullet Shell Sounds
++JSRS Sound Mod - Blindside Patch
++JSRS Sound Mod
++EFT Aim Rattle
++Anomaly Bullet Cracks and Impacts Redone
++Fairouziyat Music Playlist
++PDA Radios Extended
++Anomaly Radios Extended
++Desmans Horror Overhaul
++Soundscape Overhaul
+-Sounds and Music_separator
++iTheon New Tasks
++Duty Expansion
+-Quests and Stories_separator
++Jabbers Soulslike Gamemode
++Selfkill
++Blackjack
++Stealth Overhaul
++OneKey Weapon Controls
++More Melee Features
++Anomaly Magazines Redux
++Western Goods - Readables Extended
++Western Goods
++Even More Hideout Furniture
++Hideout Furniture Preview Gizmo
++Hideout Furniture Fix
++Hideout Furniture Expansion
++Hideout Furniture
++Classes and Talents
++Devices of Anomaly Redone - Dosimeter Enhanced
++Devices of Anomaly Redone
++Weapon Parts Overhaul
++Tosox Mini Mod Repo
++Nitpicker's Modpack
++TBs Angry Chimera Growls
++Fair Fast Travel
++Yet Another Campfire Saving
++Arszis Radiation Overhaul - Demonized Edition
++Body Health System Realistic Overhaul
++Groks Body Health System Redux
++Arrival - Busy Hands Bug Fix
++Arrival
+-Gameplay Overhauls_separator
++NPC Wounded Redone
++EFT Footsteps and Tinnitsus
++NPC Dont Attack Boxes
++And Who To Shoot
++Higher Rank NPC Disable Headlights
++NPCs Die in Anomalies
++Night Mutants
++Dynamic NPC Armor Visuals
++TBs Companions Deactivate Headlamps When in Stealth
++He is With Me
++HG Companion - Companions Obey All Commands Fix
++HG Companion
++Companions Obey All Commands
++Semi-Radiant AI
++Get Out of My Way
++Random NPC Voices
++NPC Looting Fix
++More Aggressive NPC Looting
++NPCs Die in Emissions
++NPC Fleeing
++NPC Close Combat Enhanced
++AI Combat Pack
+-AI and NPC Tweaks_separator
++RGD-2 Smoke Grenade
++Glowsticks Reanimated
++Glowsticks
++ACE! 52
++Tommy Gun Drop
++Boomsticks and Sharpsticks - Mark Switch
++Boomsticks and Sharpsticks - Patch 25
++Boomsticks and Sharpsticks
+-New Weapons and Items_separator
++Placeable Campfires
++Zone Customization Project
++Mutant Loot Chance
++Bullet Time
++Correct Weapon Distance
++Anomaly Speed
++Gotta Go Fast Extended
++Grok Gotta Go Fast
++Banjajis Task Givers Demise
++Activated Charcoal
++Inspect Weapon
++Better Smoke Grenades
++Neutral Zone
++Zone Quit
++Lootboxes
++More Dynamic Items
++Zone Recycle Bin
++Transition Between Locations Without Confirmation
++Free Zoom
++More Starting Locations
++Fluid Aim
++Toggle Scope
++Immersive Sleep
++Weapons Drop on Bodies
++Fillable Canteens
++Overheat Gunsmoke
++Stashes From Journals
++Stalker Notes
++Persistent PDA Radio
++PDA To Previous Weapon
++Ledge Climbing Mantling
++Weapon Cover Tilt
++Enhanced Recoil Revised
++Powered Exo-Skeletons
++Armor Rebalance
++TBs Coordinate Based Safe Zones
+-Gameplay Tweaks_separator
++HIP HD Model
+-Character and NPC Visuals_separator
++Headlamp Reanimated
++Enjoy Cigarettes
++Asnens and Groks Better Cigarettes Animations
++FDDA Enhanced Animations - Medical and Exo
++FDDA Enhanced Animations - Food and Drinks
++ReType 63 Reanimation
++Spas-12 Reanimation
++Fort Reanimation
++UMP Reanimation
++L96 Reanimation
++Pretty Reanimated Pistols
++MP5 Reanimation
++MP7 Reanimation
++SVD Reanimation
++Armsel Protecta Reanimation
++RG6 Reanimation
++FN F200 Reanimation
++Bizon Reanimation
++Remington 700 Reanimation
++M79 Reanimation
++Gunslinger Gauss Reanimation
++WA2000 Reanimation
++M14 Reanimation
++FN Fal Reanimation
++RPD Reanimation
++Type89 Reanimation
++SV98 TRG42 Reanimation
++M249 Reanimation
++MP153 Reanimation
++M24 and M98B Reanimation
++Gewehr Reanimation
++M82 Reanimation
++Death Animations
++Haxs Bolt Reanimation
++Barrys Better Axes
++Barrys Better Knives
++Gunslinger PDA Animation
++No Injure Animations
++Immersive Skinning
++Gesture System
++FDDA
++New Walking and Running Animations
++Headgear Animations
++Outfit Animations
++Lower Weapon Sprint
++I.N.E.R.T.I.A. - Camera Reanimation Project
++Blindsides Reanimation Pack
+-Animations and Skeletons_separator
++REPACK Doors
++Drunk's Miserable Masks
++Simple Flashlight Replacer
++HQ Glass Overlay
++MP7 Replacement
++1st Person Visible Body
++Bullethole Impacts
++HD Zombies
++Alternative Bloodsuckers
++Alternative Boars
++Alternative Pseudodogs and Psy-Dogs
++Alternative Blind Dogs
++Alternative Cats
++Alternative Fleshes
++High Resolution Mutants
++HD Mutants
++Nicer Flashlights
++DNPCAV HD Variety
++Anomaly HD Models
++T.H.A.P. re-Rework
++T.H.A.P. Rework
++Vehicle Textures Redux
++Aydin's Grass Tweaks
++Zone Reality Remade
++Global Textures Reworked - Optimized
++C.O.N.T.R.A.S.T.I.V.I.T.Y
+-Models and Textures_separator
++Meadow Terrain Material Mask Fix
++Long Repair Fix
++Fixed Artefact Collision and Visuals
++Fixed Vanilla Models and Textures
++Vanilla Weapons Resmoothed and Relensed
++Smaller Stalker Radius
++Companion Disguise Patch Fix
++Barrier Defense Task Emission Fix
++Busy Hands Detection and Blame
++Fix Actor Effect
+-Bug Fixes and Optimizations_separator
++MCM Key Wrapper
++Mod Configuration Menu
++Anomaly Addon Dependencies
++Anomaly Dependencies
++Modded Executables
+-Core and Framework_separator
diff --git a/profiles/Default/modlist.txt.2024_04_05_03_33_33 b/profiles/Default/modlist.txt.2024_04_05_03_33_33
new file mode 100644
index 00000000..4a6262ad
--- /dev/null
+++ b/profiles/Default/modlist.txt.2024_04_05_03_33_33
@@ -0,0 +1,295 @@
+# This file was automatically generated by Mod Organizer.
+-Unmanaged_separator
+-[DEV] Alternate Crouching
+-[DEV] Custom Traders
+-[DEV] Backpack Drops
++Divergent - Developer Workspace_separator
+-[DEV] Configuration Files
+-Dvergent - Developer Addons_separator
+-[DEPRECATED] EGUI Main Menu Replacer
+-Divergent - Deprecated Addons_separator
++[OPTIONAL] Classic Radio
++[OPTIONAL] PDA Playlist Framework
++[OPTIONAL] Configurable Freelook
++[OPTIONAL] Exit Save
++[REQUIRED] UI Rework Main Menu Replacer
++[REQUIRED] Weapon Repositions
++[REQUIRED] Modpack Data
+-Divergent - Custom Addons_separator
++Atmospherics
++Shaders Look Better
++Screen Space Shaders
++Aydins Grass Tweaks - SSS Terrain LOD Compatiblity
++Beefs NVGs - Improved
++Shader Driven Scopes
++Enhanced Shaders and Color Grading
++bhsro_surgerykit
++Binocular Renaimation
+-Last Load and Overrides_separator
++Redone Radar and Red Forest - Duty Expansion Patch
++New Levels - Arrival Patch
+-Patches and Compatibility_separator
++Usable Bar Doors
++Alternate Fake Start
++Redone Radar and Red Forest
++Redone Limansk and Hospital
++Redone Pripyat and Juipiter
++Redone Collection
++Extra Level Transitions - Bonus Transitions
++Extra Level Transitions
++New Levels - UI Fixes
++New Levels
+-Locations and Levels_separator
+-Weather and Environment_separator
++UI Rework G.A.M.M.A. Style - Soulslike Gamemode Patch
++UI Rework G.A.M.M.A. Style
++HUD Icons Time
++Save Profiles
++Underrail Cursors
++Hide Tooltip
++Instant Tooltip
++Advanced Map Scale In The PDA
++Anomaly Popup Messages
++Draggable HUD Editor
++Crafting Info in Tooltips
++Keep Crafting Window Open
++Personal Adjustable Waypoint
++Show All Faction Relations in PDA
++High Resolution PDA Maps
++Display Campfires On Map
++Sorting Plus
++Quick Action Wheel
++Device Selector Key
++Anomaly Barter
++PDA Hacking
++The Collector
++PDA Taskboard
++Better Stats Bars
++Dialog Dynamic UI
++Hunger Thirst and Sleep Bars
++Utjans QoL Bundle
++Utjans Item UI Improvements
++Maid's Vanilla HD Icons
++Portraits Overhaul
+-Interface and HUD_separator
++Parallax Reflex Sights
++Mark Switch
++Blood Pools
++Shell Physical Particles
++Volumetric Smoke for Agroprom Underground
++Smooth Campfire
++Dismemberment
++Hollywood FX
++Visuals and Effects_separator
++Sound Clues for HTS
++Footsies
++Ledge Climbing Sounds Redone
++Anomaly Footstep Redone
++Gear Rustle Redone
++Return Menu Music
++Bullet Shell Sounds
++JSRS Sound Mod - Blindside Patch
++JSRS Sound Mod
++EFT Aim Rattle
++Anomaly Bullet Cracks and Impacts Redone
++Fairouziyat Music Playlist
++PDA Radios Extended
++Anomaly Radios Extended
++Desmans Horror Overhaul
++Soundscape Overhaul
+-Sounds and Music_separator
++iTheon New Tasks
++Duty Expansion
+-Quests and Stories_separator
++Jabbers Soulslike Gamemode
++Selfkill
++Blackjack
++Stealth Overhaul
++OneKey Weapon Controls
++More Melee Features
++Anomaly Magazines Redux
++Western Goods - Readables Extended
++Western Goods
++Even More Hideout Furniture
++Hideout Furniture Preview Gizmo
++Hideout Furniture Fix
++Hideout Furniture Expansion
++Hideout Furniture
++Classes and Talents
++Devices of Anomaly Redone - Dosimeter Enhanced
++Devices of Anomaly Redone
++Weapon Parts Overhaul
++Tosox Mini Mod Repo
++Nitpicker's Modpack
++TBs Angry Chimera Growls
++Fair Fast Travel
++Yet Another Campfire Saving
++Arszis Radiation Overhaul - Demonized Edition
++Body Health System Realistic Overhaul
++Groks Body Health System Redux
++Arrival - Busy Hands Bug Fix
++Arrival
+-Gameplay Overhauls_separator
++NPC Wounded Redone
++EFT Footsteps and Tinnitsus
++NPC Dont Attack Boxes
++And Who To Shoot
++Higher Rank NPC Disable Headlights
++NPCs Die in Anomalies
++Night Mutants
++Dynamic NPC Armor Visuals
++TBs Companions Deactivate Headlamps When in Stealth
++He is With Me
++HG Companion - Companions Obey All Commands Fix
++HG Companion
++Companions Obey All Commands
++Semi-Radiant AI
++Get Out of My Way
++Random NPC Voices
++NPC Looting Fix
++More Aggressive NPC Looting
++NPCs Die in Emissions
++NPC Fleeing
++NPC Close Combat Enhanced
++AI Combat Pack
+-AI and NPC Tweaks_separator
++RGD-2 Smoke Grenade
++Glowsticks Reanimated
++Glowsticks
++ACE! 52
++Tommy Gun Drop
++Boomsticks and Sharpsticks - Mark Switch
++Boomsticks and Sharpsticks - Patch 25
++Boomsticks and Sharpsticks
+-New Weapons and Items_separator
++Placeable Campfires
++Zone Customization Project
++Mutant Loot Chance
++Bullet Time
++Correct Weapon Distance
++Anomaly Speed
++Gotta Go Fast Extended
++Grok Gotta Go Fast
++Banjajis Task Givers Demise
++Activated Charcoal
++Inspect Weapon
++Better Smoke Grenades
++Neutral Zone
++Zone Quit
++Lootboxes
++More Dynamic Items
++Zone Recycle Bin
++Transition Between Locations Without Confirmation
++Free Zoom
++More Starting Locations
++Fluid Aim
++Toggle Scope
++Immersive Sleep
++Weapons Drop on Bodies
++Fillable Canteens
++Overheat Gunsmoke
++Stashes From Journals
++Stalker Notes
++Persistent PDA Radio
++PDA To Previous Weapon
++Ledge Climbing Mantling
++Weapon Cover Tilt
++Enhanced Recoil Revised
++Powered Exo-Skeletons
++Armor Rebalance
++TBs Coordinate Based Safe Zones
+-Gameplay Tweaks_separator
++HIP HD Model
+-Character and NPC Visuals_separator
++Headlamp Reanimated
++Enjoy Cigarettes
++Asnens and Groks Better Cigarettes Animations
++FDDA Enhanced Animations - Medical and Exo
++FDDA Enhanced Animations - Food and Drinks
++ReType 63 Reanimation
++Spas-12 Reanimation
++Fort Reanimation
++UMP Reanimation
++L96 Reanimation
++Pretty Reanimated Pistols
++MP5 Reanimation
++MP7 Reanimation
++SVD Reanimation
++Armsel Protecta Reanimation
++RG6 Reanimation
++FN F200 Reanimation
++Bizon Reanimation
++Remington 700 Reanimation
++M79 Reanimation
++Gunslinger Gauss Reanimation
++WA2000 Reanimation
++M14 Reanimation
++FN Fal Reanimation
++RPD Reanimation
++Type89 Reanimation
++SV98 TRG42 Reanimation
++M249 Reanimation
++MP153 Reanimation
++M24 and M98B Reanimation
++Gewehr Reanimation
++M82 Reanimation
++Death Animations
++Haxs Bolt Reanimation
++Barrys Better Axes
++Barrys Better Knives
++Gunslinger PDA Animation
++No Injure Animations
++Immersive Skinning
++Gesture System
++FDDA
++New Walking and Running Animations
++Headgear Animations
++Outfit Animations
++Lower Weapon Sprint
++I.N.E.R.T.I.A. - Camera Reanimation Project
++Blindsides Reanimation Pack
+-Animations and Skeletons_separator
++REPACK Doors
++Drunk's Miserable Masks
++Simple Flashlight Replacer
++HQ Glass Overlay
++MP7 Replacement
++1st Person Visible Body
++Bullethole Impacts
++HD Zombies
++Alternative Bloodsuckers
++Alternative Boars
++Alternative Pseudodogs and Psy-Dogs
++Alternative Blind Dogs
++Alternative Cats
++Alternative Fleshes
++High Resolution Mutants
++HD Mutants
++Nicer Flashlights
++DNPCAV HD Variety
++Anomaly HD Models
++T.H.A.P. re-Rework
++T.H.A.P. Rework
++Vehicle Textures Redux
++Aydin's Grass Tweaks
++Zone Reality Remade
++Global Textures Reworked - Optimized
++C.O.N.T.R.A.S.T.I.V.I.T.Y
+-Models and Textures_separator
++Meadow Terrain Material Mask Fix
++Long Repair Fix
++Fixed Artefact Collision and Visuals
++Fixed Vanilla Models and Textures
++Vanilla Weapons Resmoothed and Relensed
++Smaller Stalker Radius
++Companion Disguise Patch Fix
++Barrier Defense Task Emission Fix
++Busy Hands Detection and Blame
++Fix Actor Effect
+-Bug Fixes and Optimizations_separator
++MCM Key Wrapper
++Mod Configuration Menu
++Anomaly Addon Dependencies
++Anomaly Dependencies
++Modded Executables
+-Core and Framework_separator