diff --git a/mods/Alternate Fake Start/gamedata/levels/fake_start/build.lights b/mods/Alternate Fake Start/gamedata/levels/fake_start/build.lights
new file mode 100644
index 00000000..ce306f8d
Binary files /dev/null and b/mods/Alternate Fake Start/gamedata/levels/fake_start/build.lights differ
diff --git a/mods/Alternate Fake Start/gamedata/levels/fake_start/level b/mods/Alternate Fake Start/gamedata/levels/fake_start/level
new file mode 100644
index 00000000..e1b81dd6
Binary files /dev/null and b/mods/Alternate Fake Start/gamedata/levels/fake_start/level differ
diff --git a/mods/Alternate Fake Start/gamedata/levels/fake_start/level.ai b/mods/Alternate Fake Start/gamedata/levels/fake_start/level.ai
new file mode 100644
index 00000000..28c3e35a
Binary files /dev/null and b/mods/Alternate Fake Start/gamedata/levels/fake_start/level.ai differ
diff --git a/mods/Alternate Fake Start/gamedata/levels/fake_start/level.cform b/mods/Alternate Fake Start/gamedata/levels/fake_start/level.cform
new file mode 100644
index 00000000..57409420
Binary files /dev/null and b/mods/Alternate Fake Start/gamedata/levels/fake_start/level.cform differ
diff --git a/mods/Alternate Fake Start/gamedata/levels/fake_start/level.env_mod b/mods/Alternate Fake Start/gamedata/levels/fake_start/level.env_mod
new file mode 100644
index 00000000..5d40ce18
Binary files /dev/null and b/mods/Alternate Fake Start/gamedata/levels/fake_start/level.env_mod differ
diff --git a/mods/Alternate Fake Start/gamedata/levels/fake_start/level.fog_vol b/mods/Alternate Fake Start/gamedata/levels/fake_start/level.fog_vol
new file mode 100644
index 00000000..f8287f3d
Binary files /dev/null and b/mods/Alternate Fake Start/gamedata/levels/fake_start/level.fog_vol differ
diff --git a/mods/Alternate Fake Start/gamedata/levels/fake_start/level.game b/mods/Alternate Fake Start/gamedata/levels/fake_start/level.game
new file mode 100644
index 00000000..2455db72
Binary files /dev/null and b/mods/Alternate Fake Start/gamedata/levels/fake_start/level.game differ
diff --git a/mods/Alternate Fake Start/gamedata/levels/fake_start/level.geom b/mods/Alternate Fake Start/gamedata/levels/fake_start/level.geom
new file mode 100644
index 00000000..2df2dda9
Binary files /dev/null and b/mods/Alternate Fake Start/gamedata/levels/fake_start/level.geom differ
diff --git a/mods/Alternate Fake Start/gamedata/levels/fake_start/level.geomx b/mods/Alternate Fake Start/gamedata/levels/fake_start/level.geomx
new file mode 100644
index 00000000..d37f38b4
Binary files /dev/null and b/mods/Alternate Fake Start/gamedata/levels/fake_start/level.geomx differ
diff --git a/mods/Alternate Fake Start/gamedata/levels/fake_start/level.ltx b/mods/Alternate Fake Start/gamedata/levels/fake_start/level.ltx
new file mode 100644
index 00000000..a54623d5
--- /dev/null
+++ b/mods/Alternate Fake Start/gamedata/levels/fake_start/level.ltx
@@ -0,0 +1,12 @@
+[map_usage]
+ver=1.000000
+;
+[level_map]
+bound_rect = -100.293232,-99.596800,99.794720,99.680464
+texture = map\map_fake_start
+;
+;
+[sub_level_map]
+0 = 255
+1 = 255
+2 = 255
diff --git a/mods/Alternate Fake Start/gamedata/levels/fake_start/level.spawn b/mods/Alternate Fake Start/gamedata/levels/fake_start/level.spawn
new file mode 100644
index 00000000..63368341
Binary files /dev/null and b/mods/Alternate Fake Start/gamedata/levels/fake_start/level.spawn differ
diff --git a/mods/Alternate Fake Start/gamedata/levels/fake_start/level_lods.dds b/mods/Alternate Fake Start/gamedata/levels/fake_start/level_lods.dds
new file mode 100644
index 00000000..cda70579
--- /dev/null
+++ b/mods/Alternate Fake Start/gamedata/levels/fake_start/level_lods.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:3d68f2a99ceeee013255ab57b2ed3e14e5be3960cb99018b7331c0dc82cd9dab
+size 43920
diff --git a/mods/Alternate Fake Start/gamedata/levels/fake_start/level_lods_nm.dds b/mods/Alternate Fake Start/gamedata/levels/fake_start/level_lods_nm.dds
new file mode 100644
index 00000000..74765460
--- /dev/null
+++ b/mods/Alternate Fake Start/gamedata/levels/fake_start/level_lods_nm.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:684f2969e99b8c0a887bbdaa67d0d491dbbd8a997eb12969eb25f48fccbbb0fc
+size 43920
diff --git a/mods/Alternate Fake Start/gamedata/levels/fake_start/level_stat.tga b/mods/Alternate Fake Start/gamedata/levels/fake_start/level_stat.tga
new file mode 100644
index 00000000..532b7463
Binary files /dev/null and b/mods/Alternate Fake Start/gamedata/levels/fake_start/level_stat.tga differ
diff --git a/mods/Alternate Fake Start/gamedata/levels/fake_start/level_stat.txt b/mods/Alternate Fake Start/gamedata/levels/fake_start/level_stat.txt
new file mode 100644
index 00000000..e4f95c69
--- /dev/null
+++ b/mods/Alternate Fake Start/gamedata/levels/fake_start/level_stat.txt
@@ -0,0 +1,5 @@
+Map size X x Z: [201 x 200]
+Max static vertex per m^2: 2181
+Total static vertices: 55642
+Max mu vertex per m^2: 150
+Total mu vertices: 1352
diff --git a/mods/Alternate Fake Start/gamedata/levels/fake_start/lmap#1_1.dds b/mods/Alternate Fake Start/gamedata/levels/fake_start/lmap#1_1.dds
new file mode 100644
index 00000000..a562b92b
--- /dev/null
+++ b/mods/Alternate Fake Start/gamedata/levels/fake_start/lmap#1_1.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d1954fb202b79de008859879a32283d403dd221dae0b568a94695bed70debaea
+size 1048704
diff --git a/mods/Alternate Fake Start/gamedata/levels/fake_start/lmap#1_2.dds b/mods/Alternate Fake Start/gamedata/levels/fake_start/lmap#1_2.dds
new file mode 100644
index 00000000..b7e25b59
--- /dev/null
+++ b/mods/Alternate Fake Start/gamedata/levels/fake_start/lmap#1_2.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d0054be30973d5d51c412c560fd98351dcc5187f1c3821abd1c40a16cb0c2ea4
+size 1048704
diff --git a/mods/Alternate Fake Start/gamedata/levels/fake_start/lmap#2_1.dds b/mods/Alternate Fake Start/gamedata/levels/fake_start/lmap#2_1.dds
new file mode 100644
index 00000000..8d281dcf
--- /dev/null
+++ b/mods/Alternate Fake Start/gamedata/levels/fake_start/lmap#2_1.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:558aec978a9b7e019a437e631af1bca0baf706b6049a1569ffb93980cee8eba0
+size 1048704
diff --git a/mods/Alternate Fake Start/gamedata/levels/fake_start/lmap#2_2.dds b/mods/Alternate Fake Start/gamedata/levels/fake_start/lmap#2_2.dds
new file mode 100644
index 00000000..b652f94f
--- /dev/null
+++ b/mods/Alternate Fake Start/gamedata/levels/fake_start/lmap#2_2.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:662555a59855889ca95123e589026acc67eb54260d17a8596c938d35ad97cc03
+size 1048704
diff --git a/mods/Alternate Fake Start/gamedata/levels/fake_start/terrain/terrain_prypiat.dds b/mods/Alternate Fake Start/gamedata/levels/fake_start/terrain/terrain_prypiat.dds
new file mode 100644
index 00000000..27b576eb
--- /dev/null
+++ b/mods/Alternate Fake Start/gamedata/levels/fake_start/terrain/terrain_prypiat.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:9719063193d0782380d950799442fff5fccf58ed8b309940e186498772a1c2cf
+size 4194432
diff --git a/mods/Alternate Fake Start/gamedata/levels/fake_start/terrain/terrain_prypiat_lm.dds b/mods/Alternate Fake Start/gamedata/levels/fake_start/terrain/terrain_prypiat_lm.dds
new file mode 100644
index 00000000..98118618
--- /dev/null
+++ b/mods/Alternate Fake Start/gamedata/levels/fake_start/terrain/terrain_prypiat_lm.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a3592fd4a57202886df686a9fca5a15ddf19f99f40e308387878879162958f9b
+size 4194432
diff --git a/mods/Alternate Fake Start/meta.ini b/mods/Alternate Fake Start/meta.ini
new file mode 100644
index 00000000..7ccd4423
--- /dev/null
+++ b/mods/Alternate Fake Start/meta.ini
@@ -0,0 +1,28 @@
+[General]
+gameName=stalkeranomaly
+modid=0
+version=d2024.3.19.0
+newestVersion=
+category="-1,"
+nexusFileStatus=1
+installationFile=Alternate_Fake_Start.rar
+repository=Nexus
+ignoredVersion=
+comments=
+notes=
+nexusDescription=
+url=
+hasCustomURL=false
+lastNexusQuery=
+lastNexusUpdate=
+nexusLastModified=2024-03-19T12:50:33Z
+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/Aydin's Grass Tweaks/gamedata/levels/jupiter/build_details.dds b/mods/Aydin's Grass Tweaks/gamedata/levels/jupiter/build_details.dds
new file mode 100644
index 00000000..a27a0869
--- /dev/null
+++ b/mods/Aydin's Grass Tweaks/gamedata/levels/jupiter/build_details.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:10a55fcff42533d468933498299f959d8ad96cf5d62a70b64c2b5b89301bbd91
+size 22369776
diff --git a/mods/Aydin's Grass Tweaks/gamedata/levels/jupiter/terrain/terrain_jupiter.dds b/mods/Aydin's Grass Tweaks/gamedata/levels/jupiter/terrain/terrain_jupiter.dds
new file mode 100644
index 00000000..84051b33
--- /dev/null
+++ b/mods/Aydin's Grass Tweaks/gamedata/levels/jupiter/terrain/terrain_jupiter.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:e0cd8d676dcc1689f61e1f7c4c1a640189881227f8393bb952ecc9dc247ed942
+size 67108992
diff --git a/mods/Aydin's Grass Tweaks/gamedata/levels/jupiter_underground/build_details.dds b/mods/Aydin's Grass Tweaks/gamedata/levels/jupiter_underground/build_details.dds
new file mode 100644
index 00000000..0135335e
--- /dev/null
+++ b/mods/Aydin's Grass Tweaks/gamedata/levels/jupiter_underground/build_details.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:dc9b0c4460fc47810e59e84b4d637b4869de7a60af835ed705ed87a441b4cfc2
+size 2796368
diff --git a/mods/Aydin's Grass Tweaks/gamedata/levels/k00_marsh/build_details.dds b/mods/Aydin's Grass Tweaks/gamedata/levels/k00_marsh/build_details.dds
new file mode 100644
index 00000000..d452018e
--- /dev/null
+++ b/mods/Aydin's Grass Tweaks/gamedata/levels/k00_marsh/build_details.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:38e98a2f9ac9e47bb765db205482c126b00815310b3abafe48790ec97bdbe84d
+size 22369776
diff --git a/mods/Aydin's Grass Tweaks/gamedata/levels/k00_marsh/terrain/terrain_marsh.dds b/mods/Aydin's Grass Tweaks/gamedata/levels/k00_marsh/terrain/terrain_marsh.dds
new file mode 100644
index 00000000..f7bf05a8
--- /dev/null
+++ b/mods/Aydin's Grass Tweaks/gamedata/levels/k00_marsh/terrain/terrain_marsh.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:52d855091f69a9b518d0685da18115143a71c2b720207dba603cecb4d063bc91
+size 16777344
diff --git a/mods/Aydin's Grass Tweaks/gamedata/levels/k01_darkscape/build_details.dds b/mods/Aydin's Grass Tweaks/gamedata/levels/k01_darkscape/build_details.dds
new file mode 100644
index 00000000..a2b5048f
--- /dev/null
+++ b/mods/Aydin's Grass Tweaks/gamedata/levels/k01_darkscape/build_details.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:b98f80301ddd8e06810bb2dab5f4a88ed010909228e8d62892751b4e103eb314
+size 11184976
diff --git a/mods/Aydin's Grass Tweaks/gamedata/levels/k01_darkscape/terrain/terrain_darkcape.dds b/mods/Aydin's Grass Tweaks/gamedata/levels/k01_darkscape/terrain/terrain_darkcape.dds
new file mode 100644
index 00000000..9a2bb0fb
--- /dev/null
+++ b/mods/Aydin's Grass Tweaks/gamedata/levels/k01_darkscape/terrain/terrain_darkcape.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:3a61df7dfc77173b5e0d92e998f7007dbf6fa36e7ad23dee80e1d06daae21b4e
+size 16777344
diff --git a/mods/Aydin's Grass Tweaks/gamedata/levels/k02_trucks_cemetery/build_details.dds b/mods/Aydin's Grass Tweaks/gamedata/levels/k02_trucks_cemetery/build_details.dds
new file mode 100644
index 00000000..9214a079
--- /dev/null
+++ b/mods/Aydin's Grass Tweaks/gamedata/levels/k02_trucks_cemetery/build_details.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:6b4dfef56b386fa0d9ee503e7bc3014c145dcf40c5e1373929a2f1a3e27232b8
+size 11184976
diff --git a/mods/Aydin's Grass Tweaks/gamedata/levels/k02_trucks_cemetery/terrain/terrain_poligon2.dds b/mods/Aydin's Grass Tweaks/gamedata/levels/k02_trucks_cemetery/terrain/terrain_poligon2.dds
new file mode 100644
index 00000000..01d02dca
--- /dev/null
+++ b/mods/Aydin's Grass Tweaks/gamedata/levels/k02_trucks_cemetery/terrain/terrain_poligon2.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:4a1012086e6329c241583a761273623eec9321c9c91106cc3483a6de030e1def
+size 16777344
diff --git a/mods/Aydin's Grass Tweaks/gamedata/levels/l01_escape/build_details.dds b/mods/Aydin's Grass Tweaks/gamedata/levels/l01_escape/build_details.dds
new file mode 100644
index 00000000..12ab0131
--- /dev/null
+++ b/mods/Aydin's Grass Tweaks/gamedata/levels/l01_escape/build_details.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:e1b88f3a49e13f0f4a600a30bec40d7d473caece5ee72803f51829d470eac8a5
+size 22369776
diff --git a/mods/Aydin's Grass Tweaks/gamedata/levels/l01_escape/terrain/terrain_escape.dds b/mods/Aydin's Grass Tweaks/gamedata/levels/l01_escape/terrain/terrain_escape.dds
new file mode 100644
index 00000000..d8e89f00
--- /dev/null
+++ b/mods/Aydin's Grass Tweaks/gamedata/levels/l01_escape/terrain/terrain_escape.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:48d4e6aa96618db85d533f187a8c2379c67fca13cb1fa6dce0c96ffc45f108d7
+size 16777344
diff --git a/mods/Aydin's Grass Tweaks/gamedata/levels/l02_garbage/build_details.dds b/mods/Aydin's Grass Tweaks/gamedata/levels/l02_garbage/build_details.dds
new file mode 100644
index 00000000..9c72ad3f
--- /dev/null
+++ b/mods/Aydin's Grass Tweaks/gamedata/levels/l02_garbage/build_details.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:7b2f108570f86afd0b86acddb6b08b3b1f9e9fbcf0b54c213f653414edeac421
+size 22369776
diff --git a/mods/Aydin's Grass Tweaks/gamedata/levels/l02_garbage/terrain/terrain_garbage_new.dds b/mods/Aydin's Grass Tweaks/gamedata/levels/l02_garbage/terrain/terrain_garbage_new.dds
new file mode 100644
index 00000000..25c06f01
--- /dev/null
+++ b/mods/Aydin's Grass Tweaks/gamedata/levels/l02_garbage/terrain/terrain_garbage_new.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:be006dd72fb1e6e7ec4c59e76b1e559e65d5115f683fec2c3f4d4d5f91e643bb
+size 1048704
diff --git a/mods/Aydin's Grass Tweaks/gamedata/levels/l02_garbage/terrain/terrain_garbage_new_lm.dds b/mods/Aydin's Grass Tweaks/gamedata/levels/l02_garbage/terrain/terrain_garbage_new_lm.dds
new file mode 100644
index 00000000..665b5ad6
--- /dev/null
+++ b/mods/Aydin's Grass Tweaks/gamedata/levels/l02_garbage/terrain/terrain_garbage_new_lm.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:1638b37848615fed01e0f281494ff0718205bed774d941d68c1480b69162f17b
+size 1048704
diff --git a/mods/Aydin's Grass Tweaks/gamedata/levels/l03_agroprom/build_details.dds b/mods/Aydin's Grass Tweaks/gamedata/levels/l03_agroprom/build_details.dds
new file mode 100644
index 00000000..4f9b8711
--- /dev/null
+++ b/mods/Aydin's Grass Tweaks/gamedata/levels/l03_agroprom/build_details.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:b229e7dbd4c858d2abef3dc0277e707b75c3c58a2e9c231ee4389b4d1dea3aff
+size 22369776
diff --git a/mods/Aydin's Grass Tweaks/gamedata/levels/l03_agroprom/terrain/terrain_agroprom.dds b/mods/Aydin's Grass Tweaks/gamedata/levels/l03_agroprom/terrain/terrain_agroprom.dds
new file mode 100644
index 00000000..aada1530
--- /dev/null
+++ b/mods/Aydin's Grass Tweaks/gamedata/levels/l03_agroprom/terrain/terrain_agroprom.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:08c775640fb5cc1334c7fef5d287fe93c5a88a19dfad94231bd591f8af32aae1
+size 16777344
diff --git a/mods/Aydin's Grass Tweaks/gamedata/levels/l04_darkvalley/build_details.dds b/mods/Aydin's Grass Tweaks/gamedata/levels/l04_darkvalley/build_details.dds
new file mode 100644
index 00000000..12ab0131
--- /dev/null
+++ b/mods/Aydin's Grass Tweaks/gamedata/levels/l04_darkvalley/build_details.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:e1b88f3a49e13f0f4a600a30bec40d7d473caece5ee72803f51829d470eac8a5
+size 22369776
diff --git a/mods/Aydin's Grass Tweaks/gamedata/levels/l04_darkvalley/terrain/terrain_darkvalley.dds b/mods/Aydin's Grass Tweaks/gamedata/levels/l04_darkvalley/terrain/terrain_darkvalley.dds
new file mode 100644
index 00000000..c66eb9ac
--- /dev/null
+++ b/mods/Aydin's Grass Tweaks/gamedata/levels/l04_darkvalley/terrain/terrain_darkvalley.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a8cb97943c6a08fa6a9debeee2b9fb7e93887c75311426f6823d157cff9c4202
+size 16777344
diff --git a/mods/Aydin's Grass Tweaks/gamedata/levels/l05_bar/build_details.dds b/mods/Aydin's Grass Tweaks/gamedata/levels/l05_bar/build_details.dds
new file mode 100644
index 00000000..a27a0869
--- /dev/null
+++ b/mods/Aydin's Grass Tweaks/gamedata/levels/l05_bar/build_details.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:10a55fcff42533d468933498299f959d8ad96cf5d62a70b64c2b5b89301bbd91
+size 22369776
diff --git a/mods/Aydin's Grass Tweaks/gamedata/levels/l05_bar/terrain/terrain_bar.dds b/mods/Aydin's Grass Tweaks/gamedata/levels/l05_bar/terrain/terrain_bar.dds
new file mode 100644
index 00000000..d9a8e6cf
--- /dev/null
+++ b/mods/Aydin's Grass Tweaks/gamedata/levels/l05_bar/terrain/terrain_bar.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:2ae998259750c060bbc52cb099f8c1575ea28034accf9cbdc439ccc23343ce82
+size 16777344
diff --git a/mods/Aydin's Grass Tweaks/gamedata/levels/l06_rostok/build_details.dds b/mods/Aydin's Grass Tweaks/gamedata/levels/l06_rostok/build_details.dds
new file mode 100644
index 00000000..a27a0869
--- /dev/null
+++ b/mods/Aydin's Grass Tweaks/gamedata/levels/l06_rostok/build_details.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:10a55fcff42533d468933498299f959d8ad96cf5d62a70b64c2b5b89301bbd91
+size 22369776
diff --git a/mods/Aydin's Grass Tweaks/gamedata/levels/l06_rostok/terrain/terrain_bar.dds b/mods/Aydin's Grass Tweaks/gamedata/levels/l06_rostok/terrain/terrain_bar.dds
new file mode 100644
index 00000000..122751ed
--- /dev/null
+++ b/mods/Aydin's Grass Tweaks/gamedata/levels/l06_rostok/terrain/terrain_bar.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:9770ab59e310579a23472c402e0c6cfb801334eddc9d712c791c796fe16b9740
+size 16777344
diff --git a/mods/Aydin's Grass Tweaks/gamedata/levels/l07_military/build_details.dds b/mods/Aydin's Grass Tweaks/gamedata/levels/l07_military/build_details.dds
new file mode 100644
index 00000000..7a3e05bb
--- /dev/null
+++ b/mods/Aydin's Grass Tweaks/gamedata/levels/l07_military/build_details.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:7159838496edae347583d36563d0bc6fea4b4269926d6170ae73e25e71f86ca3
+size 22369776
diff --git a/mods/Aydin's Grass Tweaks/gamedata/levels/l07_military/terrain/terrain_military_1.dds b/mods/Aydin's Grass Tweaks/gamedata/levels/l07_military/terrain/terrain_military_1.dds
new file mode 100644
index 00000000..62092804
--- /dev/null
+++ b/mods/Aydin's Grass Tweaks/gamedata/levels/l07_military/terrain/terrain_military_1.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:0a7f3ec3592a6f8c4c05e561cc7d93c1eef436b98cf72d479ac142f16c03988c
+size 16777344
diff --git a/mods/Aydin's Grass Tweaks/gamedata/levels/l08_yantar/build_details.dds b/mods/Aydin's Grass Tweaks/gamedata/levels/l08_yantar/build_details.dds
new file mode 100644
index 00000000..5df2ac35
--- /dev/null
+++ b/mods/Aydin's Grass Tweaks/gamedata/levels/l08_yantar/build_details.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:f735155cf40d9a7e2981318648b52cc72cd4eafb3a77eb4fa3d17d06499691da
+size 22369776
diff --git a/mods/Aydin's Grass Tweaks/gamedata/levels/l08_yantar/terrain/terrain_yantar.dds b/mods/Aydin's Grass Tweaks/gamedata/levels/l08_yantar/terrain/terrain_yantar.dds
new file mode 100644
index 00000000..1715fe5f
--- /dev/null
+++ b/mods/Aydin's Grass Tweaks/gamedata/levels/l08_yantar/terrain/terrain_yantar.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:e6797206f529f842cb767d3bc27bd8615df0ea984f93831a019099aa2c325243
+size 1048704
diff --git a/mods/Aydin's Grass Tweaks/gamedata/levels/l08_yantar/terrain/terrain_yantar_lm.dds b/mods/Aydin's Grass Tweaks/gamedata/levels/l08_yantar/terrain/terrain_yantar_lm.dds
new file mode 100644
index 00000000..b5f644a5
--- /dev/null
+++ b/mods/Aydin's Grass Tweaks/gamedata/levels/l08_yantar/terrain/terrain_yantar_lm.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:b53340c169629383b7f4587b7bbbbebccf24e085e7fb2c345fb282609505e919
+size 1048704
diff --git a/mods/Aydin's Grass Tweaks/gamedata/levels/l09_deadcity/build_details.dds b/mods/Aydin's Grass Tweaks/gamedata/levels/l09_deadcity/build_details.dds
new file mode 100644
index 00000000..74e377e6
--- /dev/null
+++ b/mods/Aydin's Grass Tweaks/gamedata/levels/l09_deadcity/build_details.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:9d0f84608d4c1b0b219a6f3caad64326a78ad120c955792877fe32a5260f8347
+size 11184976
diff --git a/mods/Aydin's Grass Tweaks/gamedata/levels/l09_deadcity/terrain/terrain_gr.dds b/mods/Aydin's Grass Tweaks/gamedata/levels/l09_deadcity/terrain/terrain_gr.dds
new file mode 100644
index 00000000..bf626d12
--- /dev/null
+++ b/mods/Aydin's Grass Tweaks/gamedata/levels/l09_deadcity/terrain/terrain_gr.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:0e768f558cd7b141f28c5af89bec313d38b9e860ebf7f84a11bc739740fec660
+size 16777344
diff --git a/mods/Aydin's Grass Tweaks/gamedata/levels/l10_limansk/build_details.dds b/mods/Aydin's Grass Tweaks/gamedata/levels/l10_limansk/build_details.dds
new file mode 100644
index 00000000..4a011329
--- /dev/null
+++ b/mods/Aydin's Grass Tweaks/gamedata/levels/l10_limansk/build_details.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:adcaf57d7ab378d4fef9062c62b8a76567c7ed282bbb1d4df8f856cc31805dd5
+size 11184976
diff --git a/mods/Aydin's Grass Tweaks/gamedata/levels/l10_limansk/terrain/terrain_limansk.dds b/mods/Aydin's Grass Tweaks/gamedata/levels/l10_limansk/terrain/terrain_limansk.dds
new file mode 100644
index 00000000..bb7243bf
--- /dev/null
+++ b/mods/Aydin's Grass Tweaks/gamedata/levels/l10_limansk/terrain/terrain_limansk.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:9c7deec545528dada8ce816b2cba30e19b8e208e266871c9f24862c96c8f835e
+size 16777344
diff --git a/mods/Aydin's Grass Tweaks/gamedata/levels/l10_radar/build_details.dds b/mods/Aydin's Grass Tweaks/gamedata/levels/l10_radar/build_details.dds
new file mode 100644
index 00000000..a27a0869
--- /dev/null
+++ b/mods/Aydin's Grass Tweaks/gamedata/levels/l10_radar/build_details.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:10a55fcff42533d468933498299f959d8ad96cf5d62a70b64c2b5b89301bbd91
+size 22369776
diff --git a/mods/Aydin's Grass Tweaks/gamedata/levels/l10_radar/terrain/terrain_radar_2.dds b/mods/Aydin's Grass Tweaks/gamedata/levels/l10_radar/terrain/terrain_radar_2.dds
new file mode 100644
index 00000000..39820e0e
--- /dev/null
+++ b/mods/Aydin's Grass Tweaks/gamedata/levels/l10_radar/terrain/terrain_radar_2.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:02b928cee1e033c2412ecbb4643ee9c63e9603dd152efafa3e6c406458c9ec26
+size 16777344
diff --git a/mods/Aydin's Grass Tweaks/gamedata/levels/l10_red_forest/build_details.dds b/mods/Aydin's Grass Tweaks/gamedata/levels/l10_red_forest/build_details.dds
new file mode 100644
index 00000000..af082df3
--- /dev/null
+++ b/mods/Aydin's Grass Tweaks/gamedata/levels/l10_red_forest/build_details.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:ce13be216f7f8645d0239d6efdcd748cd515b90a1a3045d0e1519f132d3df081
+size 11184976
diff --git a/mods/Aydin's Grass Tweaks/gamedata/levels/l10_red_forest/terrain/terrain_red_forest.dds b/mods/Aydin's Grass Tweaks/gamedata/levels/l10_red_forest/terrain/terrain_red_forest.dds
new file mode 100644
index 00000000..ea94c1b6
--- /dev/null
+++ b/mods/Aydin's Grass Tweaks/gamedata/levels/l10_red_forest/terrain/terrain_red_forest.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:75ecb853057d75bb7f4421fb6baa6c9afb93de48dada22b8106cf2fb53f25439
+size 4194432
diff --git a/mods/Aydin's Grass Tweaks/gamedata/levels/l11_hospital/build_details.dds b/mods/Aydin's Grass Tweaks/gamedata/levels/l11_hospital/build_details.dds
new file mode 100644
index 00000000..4650730f
--- /dev/null
+++ b/mods/Aydin's Grass Tweaks/gamedata/levels/l11_hospital/build_details.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:bb864e1ce71e0a0417ce0013fceace959fad34f8b0edd36502d16cc47583a642
+size 1398256
diff --git a/mods/Aydin's Grass Tweaks/gamedata/levels/l11_hospital/terrain/terrain_dry_gully_1.dds b/mods/Aydin's Grass Tweaks/gamedata/levels/l11_hospital/terrain/terrain_dry_gully_1.dds
new file mode 100644
index 00000000..4a373583
--- /dev/null
+++ b/mods/Aydin's Grass Tweaks/gamedata/levels/l11_hospital/terrain/terrain_dry_gully_1.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:28b9cb8d5fd0fd3b892f300c848d67155f4d363e4afaaff1417d9791bfde7c05
+size 4194432
diff --git a/mods/Aydin's Grass Tweaks/gamedata/levels/l11_pripyat/build_details.dds b/mods/Aydin's Grass Tweaks/gamedata/levels/l11_pripyat/build_details.dds
new file mode 100644
index 00000000..78f48af1
--- /dev/null
+++ b/mods/Aydin's Grass Tweaks/gamedata/levels/l11_pripyat/build_details.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d5eb54ab2c6552e25b756527f92c407f6893291221a02aca8e10d833259f4995
+size 22369776
diff --git a/mods/Aydin's Grass Tweaks/gamedata/levels/l11_pripyat/terrain/terrain_prypiat.dds b/mods/Aydin's Grass Tweaks/gamedata/levels/l11_pripyat/terrain/terrain_prypiat.dds
new file mode 100644
index 00000000..487244e6
--- /dev/null
+++ b/mods/Aydin's Grass Tweaks/gamedata/levels/l11_pripyat/terrain/terrain_prypiat.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:ffb4666a78fcace96d54c1980bbbfbd2ac747dce7e934b87f746b86f4f9a91bd
+size 16777344
diff --git a/mods/Aydin's Grass Tweaks/gamedata/levels/l12_stancia/build_details.dds b/mods/Aydin's Grass Tweaks/gamedata/levels/l12_stancia/build_details.dds
new file mode 100644
index 00000000..e5f0d8b3
--- /dev/null
+++ b/mods/Aydin's Grass Tweaks/gamedata/levels/l12_stancia/build_details.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:13e1a00d72037f524aa21d155c6ea5dcd774812c01d5335ea13622f2fd6109da
+size 11184976
diff --git a/mods/Aydin's Grass Tweaks/gamedata/levels/l12_stancia/terrain/terrain_stancia_land.dds b/mods/Aydin's Grass Tweaks/gamedata/levels/l12_stancia/terrain/terrain_stancia_land.dds
new file mode 100644
index 00000000..d868e7de
--- /dev/null
+++ b/mods/Aydin's Grass Tweaks/gamedata/levels/l12_stancia/terrain/terrain_stancia_land.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:9c80d28531f13e7e1d03c2290d6d2c68f60763189a47cab276dde8da57af2cb3
+size 16777344
diff --git a/mods/Aydin's Grass Tweaks/gamedata/levels/l12_stancia_2/build_details.dds b/mods/Aydin's Grass Tweaks/gamedata/levels/l12_stancia_2/build_details.dds
new file mode 100644
index 00000000..e5f0d8b3
--- /dev/null
+++ b/mods/Aydin's Grass Tweaks/gamedata/levels/l12_stancia_2/build_details.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:13e1a00d72037f524aa21d155c6ea5dcd774812c01d5335ea13622f2fd6109da
+size 11184976
diff --git a/mods/Aydin's Grass Tweaks/gamedata/levels/l12_stancia_2/terrain/terrain_stancia_land.dds b/mods/Aydin's Grass Tweaks/gamedata/levels/l12_stancia_2/terrain/terrain_stancia_land.dds
new file mode 100644
index 00000000..3584d505
--- /dev/null
+++ b/mods/Aydin's Grass Tweaks/gamedata/levels/l12_stancia_2/terrain/terrain_stancia_land.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:9931856866c77cfdf2f3740275767be705298efc0c9041a92f3fe32eec0af527
+size 16777344
diff --git a/mods/Aydin's Grass Tweaks/gamedata/levels/l13_generators/build_details.dds b/mods/Aydin's Grass Tweaks/gamedata/levels/l13_generators/build_details.dds
new file mode 100644
index 00000000..4dea233b
--- /dev/null
+++ b/mods/Aydin's Grass Tweaks/gamedata/levels/l13_generators/build_details.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:c3cb0f0237a4d60fc458411d1d807031275bc74c49a8c282785cd4e30d934b1b
+size 11184976
diff --git a/mods/Aydin's Grass Tweaks/gamedata/levels/l13_generators/terrain/terrain_frodo_gen.dds b/mods/Aydin's Grass Tweaks/gamedata/levels/l13_generators/terrain/terrain_frodo_gen.dds
new file mode 100644
index 00000000..92c40f66
--- /dev/null
+++ b/mods/Aydin's Grass Tweaks/gamedata/levels/l13_generators/terrain/terrain_frodo_gen.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:77883c5c07971483453421108173da20a160ca715632a7e9044df44b731856f3
+size 16777344
diff --git a/mods/Aydin's Grass Tweaks/gamedata/levels/pripyat/build_details.dds b/mods/Aydin's Grass Tweaks/gamedata/levels/pripyat/build_details.dds
new file mode 100644
index 00000000..78f48af1
--- /dev/null
+++ b/mods/Aydin's Grass Tweaks/gamedata/levels/pripyat/build_details.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d5eb54ab2c6552e25b756527f92c407f6893291221a02aca8e10d833259f4995
+size 22369776
diff --git a/mods/Aydin's Grass Tweaks/gamedata/levels/pripyat/terrain/terrain_pripyat.dds b/mods/Aydin's Grass Tweaks/gamedata/levels/pripyat/terrain/terrain_pripyat.dds
new file mode 100644
index 00000000..268c4be4
--- /dev/null
+++ b/mods/Aydin's Grass Tweaks/gamedata/levels/pripyat/terrain/terrain_pripyat.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:8434a3507a767151ec4987cbf85ef4145e86310bab32785d8eb7f4818c64caf3
+size 67108992
diff --git a/mods/Aydin's Grass Tweaks/gamedata/levels/y04_pole/build_details.dds b/mods/Aydin's Grass Tweaks/gamedata/levels/y04_pole/build_details.dds
new file mode 100644
index 00000000..290c27fd
--- /dev/null
+++ b/mods/Aydin's Grass Tweaks/gamedata/levels/y04_pole/build_details.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d1cc7a3e5f8bfd73b4bd5d73087ec7082dd01839024826d96cca6a3aea4329ed
+size 2796344
diff --git a/mods/Aydin's Grass Tweaks/gamedata/levels/y04_pole/terrain/terrain_pole.dds b/mods/Aydin's Grass Tweaks/gamedata/levels/y04_pole/terrain/terrain_pole.dds
new file mode 100644
index 00000000..51def263
--- /dev/null
+++ b/mods/Aydin's Grass Tweaks/gamedata/levels/y04_pole/terrain/terrain_pole.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:c5d9dcd5015b0201bdcf8e98bcfda642be447d939275c7b44d108fdc29e4703b
+size 16777344
diff --git a/mods/Aydin's Grass Tweaks/gamedata/levels/y04_pole/terrain/terrain_pole_lm.dds b/mods/Aydin's Grass Tweaks/gamedata/levels/y04_pole/terrain/terrain_pole_lm.dds
new file mode 100644
index 00000000..ac3b7d22
--- /dev/null
+++ b/mods/Aydin's Grass Tweaks/gamedata/levels/y04_pole/terrain/terrain_pole_lm.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:af4916135e6c55c52fc23e8073956c8db9915175fad8fb83a82ebd40a99740aa
+size 4194432
diff --git a/mods/Aydin's Grass Tweaks/gamedata/levels/zaton/build_details.dds b/mods/Aydin's Grass Tweaks/gamedata/levels/zaton/build_details.dds
new file mode 100644
index 00000000..6e2b23d9
--- /dev/null
+++ b/mods/Aydin's Grass Tweaks/gamedata/levels/zaton/build_details.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:569688497dac53b3dcaf3aee98bfdd2a9a610617c66f2efd2f0378d83b6b882c
+size 22369776
diff --git a/mods/Aydin's Grass Tweaks/gamedata/levels/zaton/terrain/terrain_zaton.dds b/mods/Aydin's Grass Tweaks/gamedata/levels/zaton/terrain/terrain_zaton.dds
new file mode 100644
index 00000000..78f3b83e
--- /dev/null
+++ b/mods/Aydin's Grass Tweaks/gamedata/levels/zaton/terrain/terrain_zaton.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:819b65c80bc1c1ddb32bcdf6e442ad440c7004bc7fc91c2b5311d6af5d796bee
+size 67108992
diff --git a/mods/Aydin's Grass Tweaks/gamedata/textures/detail/detail_grnd_grass.dds b/mods/Aydin's Grass Tweaks/gamedata/textures/detail/detail_grnd_grass.dds
new file mode 100644
index 00000000..53f93945
--- /dev/null
+++ b/mods/Aydin's Grass Tweaks/gamedata/textures/detail/detail_grnd_grass.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:5c736dc3049b5e3773d6a563253caf38e9378168af4ed561957a2c8aa1d218b3
+size 22369776
diff --git a/mods/Aydin's Grass Tweaks/gamedata/textures/detail/detail_grnd_grass_bump#.dds b/mods/Aydin's Grass Tweaks/gamedata/textures/detail/detail_grnd_grass_bump#.dds
new file mode 100644
index 00000000..f94fcaa7
--- /dev/null
+++ b/mods/Aydin's Grass Tweaks/gamedata/textures/detail/detail_grnd_grass_bump#.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d0e2db358dfa19665521a85368caa30a71587e70651ac36da7614d987c356958
+size 1398256
diff --git a/mods/Aydin's Grass Tweaks/gamedata/textures/detail/detail_grnd_grass_bump.dds b/mods/Aydin's Grass Tweaks/gamedata/textures/detail/detail_grnd_grass_bump.dds
new file mode 100644
index 00000000..6620ba9d
--- /dev/null
+++ b/mods/Aydin's Grass Tweaks/gamedata/textures/detail/detail_grnd_grass_bump.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d61687504d539f1b7ba899399d633d99fe5a0333c96eaab4157e1a7feb3ae014
+size 22369776
diff --git a/mods/Aydin's Grass Tweaks/gamedata/textures/detail/ground_grass_01.dds b/mods/Aydin's Grass Tweaks/gamedata/textures/detail/ground_grass_01.dds
new file mode 100644
index 00000000..04e92a18
--- /dev/null
+++ b/mods/Aydin's Grass Tweaks/gamedata/textures/detail/ground_grass_01.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:3e6f78f4476c5c52fa6be87a3204655752e5da36029345fd2c75fd0fac022c5e
+size 22369776
diff --git a/mods/Aydin's Grass Tweaks/gamedata/textures/detail/ground_grass_01_bump.dds b/mods/Aydin's Grass Tweaks/gamedata/textures/detail/ground_grass_01_bump.dds
new file mode 100644
index 00000000..99a2466e
--- /dev/null
+++ b/mods/Aydin's Grass Tweaks/gamedata/textures/detail/ground_grass_01_bump.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:34e6b9d81d780c22a2813a529886add62687918dce1398f5557fa51435176962
+size 22369776
diff --git a/mods/Aydin's Grass Tweaks/gamedata/textures/detail/ground_grass_02.dds b/mods/Aydin's Grass Tweaks/gamedata/textures/detail/ground_grass_02.dds
new file mode 100644
index 00000000..ce2119ca
--- /dev/null
+++ b/mods/Aydin's Grass Tweaks/gamedata/textures/detail/ground_grass_02.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:2ee5b424a72c605078bd3a0f336d9fa0ce6c0ebf52eca60df7b0c963a576bba0
+size 22369776
diff --git a/mods/Aydin's Grass Tweaks/gamedata/textures/detail/ground_grass_02_bump.dds b/mods/Aydin's Grass Tweaks/gamedata/textures/detail/ground_grass_02_bump.dds
new file mode 100644
index 00000000..71ed5844
--- /dev/null
+++ b/mods/Aydin's Grass Tweaks/gamedata/textures/detail/ground_grass_02_bump.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d63d20d4cffd6f7cecb6ee771237ba16ef89459eae1eee494ffdb74afb2ce129
+size 22369776
diff --git a/mods/Aydin's Grass Tweaks/gamedata/textures/detail/ground_grass_03.dds b/mods/Aydin's Grass Tweaks/gamedata/textures/detail/ground_grass_03.dds
new file mode 100644
index 00000000..651194da
--- /dev/null
+++ b/mods/Aydin's Grass Tweaks/gamedata/textures/detail/ground_grass_03.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:33674433fab8a339bac5f73554557ed3f384921753990c57a8e1a36413b74177
+size 22369776
diff --git a/mods/Aydin's Grass Tweaks/gamedata/textures/detail/ground_grass_03_bump.dds b/mods/Aydin's Grass Tweaks/gamedata/textures/detail/ground_grass_03_bump.dds
new file mode 100644
index 00000000..8a6ffbda
--- /dev/null
+++ b/mods/Aydin's Grass Tweaks/gamedata/textures/detail/ground_grass_03_bump.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:bbefce12bec0d8d818e05c320e570bdfcb0877eed2707b6c77c84feb124e7b2f
+size 22369776
diff --git a/mods/Aydin's Grass Tweaks/gamedata/textures/detail/ground_grass_04.dds b/mods/Aydin's Grass Tweaks/gamedata/textures/detail/ground_grass_04.dds
new file mode 100644
index 00000000..18c85dc0
--- /dev/null
+++ b/mods/Aydin's Grass Tweaks/gamedata/textures/detail/ground_grass_04.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:1b14f2622a9bfc1db259c40351a4def2121303e1c3ff7cefcc0caffd9d995a1a
+size 22369776
diff --git a/mods/Aydin's Grass Tweaks/gamedata/textures/detail/ground_grass_04_bump.dds b/mods/Aydin's Grass Tweaks/gamedata/textures/detail/ground_grass_04_bump.dds
new file mode 100644
index 00000000..6e18730c
--- /dev/null
+++ b/mods/Aydin's Grass Tweaks/gamedata/textures/detail/ground_grass_04_bump.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:48511c6cc1e0167b3b1ecb39a832adcdb6c537cc660b340d615b98a656748414
+size 22369776
diff --git a/mods/Aydin's Grass Tweaks/gamedata/textures/detail/ground_grass_04a.dds b/mods/Aydin's Grass Tweaks/gamedata/textures/detail/ground_grass_04a.dds
new file mode 100644
index 00000000..73a92c8a
--- /dev/null
+++ b/mods/Aydin's Grass Tweaks/gamedata/textures/detail/ground_grass_04a.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:0411edcc048b59168c27ee98fb14ad72c1bb211e70a955beec1eb2b33d6b501a
+size 22369776
diff --git a/mods/Aydin's Grass Tweaks/gamedata/textures/lfo/lfo_trees/adler/trees_atp_alder.dds b/mods/Aydin's Grass Tweaks/gamedata/textures/lfo/lfo_trees/adler/trees_atp_alder.dds
new file mode 100644
index 00000000..aef0fc02
--- /dev/null
+++ b/mods/Aydin's Grass Tweaks/gamedata/textures/lfo/lfo_trees/adler/trees_atp_alder.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:814d62af3e586c5ba27c381d82fd02fa7aa6e86956904ac0d664e1d32abcf474
+size 1398256
diff --git a/mods/Aydin's Grass Tweaks/gamedata/textures/lfo/lfo_trees/adler/trees_atp_alder_0001.dds b/mods/Aydin's Grass Tweaks/gamedata/textures/lfo/lfo_trees/adler/trees_atp_alder_0001.dds
new file mode 100644
index 00000000..55274452
--- /dev/null
+++ b/mods/Aydin's Grass Tweaks/gamedata/textures/lfo/lfo_trees/adler/trees_atp_alder_0001.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:48706c8d1c91876365e05ca191436741cb090a12c53b83bb3e6c074944b4abf0
+size 1398256
diff --git a/mods/Aydin's Grass Tweaks/gamedata/textures/lfo/lfo_trees/adler/trees_atp_alder_a.dds b/mods/Aydin's Grass Tweaks/gamedata/textures/lfo/lfo_trees/adler/trees_atp_alder_a.dds
new file mode 100644
index 00000000..639aa41e
--- /dev/null
+++ b/mods/Aydin's Grass Tweaks/gamedata/textures/lfo/lfo_trees/adler/trees_atp_alder_a.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:f4a165edcc6345dc92402eeabfba90956b398ed40bd90935106b65f319258faa
+size 1398256
diff --git a/mods/Aydin's Grass Tweaks/gamedata/textures/lfo/lfo_trees/birch/trees_atp_birch.dds b/mods/Aydin's Grass Tweaks/gamedata/textures/lfo/lfo_trees/birch/trees_atp_birch.dds
new file mode 100644
index 00000000..082118e8
--- /dev/null
+++ b/mods/Aydin's Grass Tweaks/gamedata/textures/lfo/lfo_trees/birch/trees_atp_birch.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:2959e16ac73ade6c7a3f26b284a297e820290bb01c0291f11f573bcbad039c2f
+size 2796368
diff --git a/mods/Aydin's Grass Tweaks/gamedata/textures/lfo/lfo_trees/birch/trees_atp_birch_0001.dds b/mods/Aydin's Grass Tweaks/gamedata/textures/lfo/lfo_trees/birch/trees_atp_birch_0001.dds
new file mode 100644
index 00000000..b9f88bbf
--- /dev/null
+++ b/mods/Aydin's Grass Tweaks/gamedata/textures/lfo/lfo_trees/birch/trees_atp_birch_0001.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:45e6384a7009bdbfa96048141783c16b287711c13e2a4dcd9ee74138ea12816e
+size 2796368
diff --git a/mods/Aydin's Grass Tweaks/gamedata/textures/lfo/lfo_trees/birch/trees_atp_birch_a.dds b/mods/Aydin's Grass Tweaks/gamedata/textures/lfo/lfo_trees/birch/trees_atp_birch_a.dds
new file mode 100644
index 00000000..a0145bed
--- /dev/null
+++ b/mods/Aydin's Grass Tweaks/gamedata/textures/lfo/lfo_trees/birch/trees_atp_birch_a.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:17cebd04fae50efb002362d666424332629e84f0b8ead7a43773e59f42ef3ac2
+size 2796368
diff --git a/mods/Aydin's Grass Tweaks/gamedata/textures/lfo/lfo_trees/bushes/trees_bushes_00.dds b/mods/Aydin's Grass Tweaks/gamedata/textures/lfo/lfo_trees/bushes/trees_bushes_00.dds
new file mode 100644
index 00000000..ff9c20a9
--- /dev/null
+++ b/mods/Aydin's Grass Tweaks/gamedata/textures/lfo/lfo_trees/bushes/trees_bushes_00.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:c363912db42519dbbfd23d0f87c50822153179fa42dfc0cd60ee43dbab80134e
+size 5592560
diff --git a/mods/Aydin's Grass Tweaks/gamedata/textures/lfo/lfo_trees/bushes/trees_bushes_0001.dds b/mods/Aydin's Grass Tweaks/gamedata/textures/lfo/lfo_trees/bushes/trees_bushes_0001.dds
new file mode 100644
index 00000000..209e7718
--- /dev/null
+++ b/mods/Aydin's Grass Tweaks/gamedata/textures/lfo/lfo_trees/bushes/trees_bushes_0001.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:48f39d6b781db51ae5e8c192a5dd07c80439f9abf56ffbd8d4e67abf7cec88ae
+size 5592560
diff --git a/mods/Aydin's Grass Tweaks/gamedata/textures/lfo/lfo_trees/bushes/trees_bushes_0001_a.dds b/mods/Aydin's Grass Tweaks/gamedata/textures/lfo/lfo_trees/bushes/trees_bushes_0001_a.dds
new file mode 100644
index 00000000..229d49b1
--- /dev/null
+++ b/mods/Aydin's Grass Tweaks/gamedata/textures/lfo/lfo_trees/bushes/trees_bushes_0001_a.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:31d9edf946ff30e5e3f381c6de443648c110ddc6480b3871a7b4e1670201591c
+size 5592560
diff --git a/mods/Aydin's Grass Tweaks/gamedata/textures/lfo/lfo_trees/bushes/trees_bushes_01.dds b/mods/Aydin's Grass Tweaks/gamedata/textures/lfo/lfo_trees/bushes/trees_bushes_01.dds
new file mode 100644
index 00000000..ab2137e1
--- /dev/null
+++ b/mods/Aydin's Grass Tweaks/gamedata/textures/lfo/lfo_trees/bushes/trees_bushes_01.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:5abce875e4f1d30b628420871e0fbca57ac688cf0fc23aea5973598b37aa3371
+size 5592560
diff --git a/mods/Aydin's Grass Tweaks/gamedata/textures/lfo/lfo_trees/bushes/trees_bushes_02.dds b/mods/Aydin's Grass Tweaks/gamedata/textures/lfo/lfo_trees/bushes/trees_bushes_02.dds
new file mode 100644
index 00000000..a17082e6
--- /dev/null
+++ b/mods/Aydin's Grass Tweaks/gamedata/textures/lfo/lfo_trees/bushes/trees_bushes_02.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:2510a9a762552b100c9ffae4068e98de11ca180dd49cc3449189f9dba7c6c0fc
+size 5592560
diff --git a/mods/Aydin's Grass Tweaks/gamedata/textures/lfo/lfo_trees/bushes/trees_bushes_dead.dds b/mods/Aydin's Grass Tweaks/gamedata/textures/lfo/lfo_trees/bushes/trees_bushes_dead.dds
new file mode 100644
index 00000000..eae1dad2
--- /dev/null
+++ b/mods/Aydin's Grass Tweaks/gamedata/textures/lfo/lfo_trees/bushes/trees_bushes_dead.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:75a249fb96e0be7c3c0987beb0a39642bb006e8aeca601d0a55dd91a836aba25
+size 5592544
diff --git a/mods/Aydin's Grass Tweaks/gamedata/textures/lfo/lfo_trees/bushes/trees_bushes_dead_a.dds b/mods/Aydin's Grass Tweaks/gamedata/textures/lfo/lfo_trees/bushes/trees_bushes_dead_a.dds
new file mode 100644
index 00000000..a3612450
--- /dev/null
+++ b/mods/Aydin's Grass Tweaks/gamedata/textures/lfo/lfo_trees/bushes/trees_bushes_dead_a.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:26becb202c32f0a25c3972dd70e2073617eaa2779e6f5aa44d0a87488a06fb6b
+size 5592544
diff --git a/mods/Aydin's Grass Tweaks/gamedata/textures/lfo/lfo_trees/bushes/trees_bushes_red_forest_a.dds b/mods/Aydin's Grass Tweaks/gamedata/textures/lfo/lfo_trees/bushes/trees_bushes_red_forest_a.dds
new file mode 100644
index 00000000..0b90249d
--- /dev/null
+++ b/mods/Aydin's Grass Tweaks/gamedata/textures/lfo/lfo_trees/bushes/trees_bushes_red_forest_a.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:b32925bd215552d10ccfbece632e338ebd81994005830a92f6d8d150f26d1aea
+size 5592544
diff --git a/mods/Aydin's Grass Tweaks/gamedata/textures/lfo/lfo_trees/bushes/trees_bushes_red_forest_b.dds b/mods/Aydin's Grass Tweaks/gamedata/textures/lfo/lfo_trees/bushes/trees_bushes_red_forest_b.dds
new file mode 100644
index 00000000..ffc10555
--- /dev/null
+++ b/mods/Aydin's Grass Tweaks/gamedata/textures/lfo/lfo_trees/bushes/trees_bushes_red_forest_b.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:6807f89e85869eaf3b183da693ad33088b6f8f73c22102b4247d8b99bb3cfb76
+size 5592544
diff --git a/mods/Aydin's Grass Tweaks/gamedata/textures/lfo/lfo_trees/bushes/trees_bushes_vetka_dead.dds b/mods/Aydin's Grass Tweaks/gamedata/textures/lfo/lfo_trees/bushes/trees_bushes_vetka_dead.dds
new file mode 100644
index 00000000..e36dc3c0
--- /dev/null
+++ b/mods/Aydin's Grass Tweaks/gamedata/textures/lfo/lfo_trees/bushes/trees_bushes_vetka_dead.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:5fcc2b5dd9b2e80fdb005d428295d9e1a7f4399c1e17d75feae1cffd37f00d79
+size 5592544
diff --git a/mods/Aydin's Grass Tweaks/gamedata/textures/lfo/lfo_trees/cherry/trees_atp_cherry.dds b/mods/Aydin's Grass Tweaks/gamedata/textures/lfo/lfo_trees/cherry/trees_atp_cherry.dds
new file mode 100644
index 00000000..45ffa713
--- /dev/null
+++ b/mods/Aydin's Grass Tweaks/gamedata/textures/lfo/lfo_trees/cherry/trees_atp_cherry.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:1018033adbd1970d2d1d7785dc44cf0041ed2e8551097fbe08c23e848269cb0f
+size 1398256
diff --git a/mods/Aydin's Grass Tweaks/gamedata/textures/lfo/lfo_trees/cherry/trees_atp_cherry_0001.dds b/mods/Aydin's Grass Tweaks/gamedata/textures/lfo/lfo_trees/cherry/trees_atp_cherry_0001.dds
new file mode 100644
index 00000000..2d847420
--- /dev/null
+++ b/mods/Aydin's Grass Tweaks/gamedata/textures/lfo/lfo_trees/cherry/trees_atp_cherry_0001.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:6395f3cbf97dcc770743c2515f6f8710ab8591225fcbbbe460c7a1ae2f56f354
+size 1398256
diff --git a/mods/Aydin's Grass Tweaks/gamedata/textures/lfo/lfo_trees/cherry/trees_atp_cherry_a.dds b/mods/Aydin's Grass Tweaks/gamedata/textures/lfo/lfo_trees/cherry/trees_atp_cherry_a.dds
new file mode 100644
index 00000000..07a38aa1
--- /dev/null
+++ b/mods/Aydin's Grass Tweaks/gamedata/textures/lfo/lfo_trees/cherry/trees_atp_cherry_a.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:39ed5c3955542ca144e46202b9b63f780cbe57eccccd3150835ac69ca67f3b07
+size 1398256
diff --git a/mods/Aydin's Grass Tweaks/gamedata/textures/lfo/lfo_trees/cluster/trees_atp_cluster_alder_a.dds b/mods/Aydin's Grass Tweaks/gamedata/textures/lfo/lfo_trees/cluster/trees_atp_cluster_alder_a.dds
new file mode 100644
index 00000000..0729aca6
--- /dev/null
+++ b/mods/Aydin's Grass Tweaks/gamedata/textures/lfo/lfo_trees/cluster/trees_atp_cluster_alder_a.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:81bae630c369d72973578a12ac65ccde02e3174e44b4c8f4929013633da810f0
+size 1398256
diff --git a/mods/Aydin's Grass Tweaks/gamedata/textures/lfo/lfo_trees/cluster/trees_atp_cluster_alder_b.dds b/mods/Aydin's Grass Tweaks/gamedata/textures/lfo/lfo_trees/cluster/trees_atp_cluster_alder_b.dds
new file mode 100644
index 00000000..3a33f68c
--- /dev/null
+++ b/mods/Aydin's Grass Tweaks/gamedata/textures/lfo/lfo_trees/cluster/trees_atp_cluster_alder_b.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:62dfb44373dc5e223f555dca2e62345872e63710cb492eb9954996ea3e0c6bc7
+size 1398256
diff --git a/mods/Aydin's Grass Tweaks/gamedata/textures/lfo/lfo_trees/cluster/trees_atp_cluster_cherry_branch_a.dds b/mods/Aydin's Grass Tweaks/gamedata/textures/lfo/lfo_trees/cluster/trees_atp_cluster_cherry_branch_a.dds
new file mode 100644
index 00000000..fafd2902
--- /dev/null
+++ b/mods/Aydin's Grass Tweaks/gamedata/textures/lfo/lfo_trees/cluster/trees_atp_cluster_cherry_branch_a.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:7e8574d9b3cfd7b8736124995a595d1f2049946035e6de1d1de791854a2c0f5e
+size 1398256
diff --git a/mods/Aydin's Grass Tweaks/gamedata/textures/lfo/lfo_trees/cluster/trees_atp_cluster_cherry_branch_b.dds b/mods/Aydin's Grass Tweaks/gamedata/textures/lfo/lfo_trees/cluster/trees_atp_cluster_cherry_branch_b.dds
new file mode 100644
index 00000000..6d6201f1
--- /dev/null
+++ b/mods/Aydin's Grass Tweaks/gamedata/textures/lfo/lfo_trees/cluster/trees_atp_cluster_cherry_branch_b.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:dcd165db718bde4447dfcdc3685b05a92fffa482809a80fc10dd1783b0b1a6d3
+size 1398256
diff --git a/mods/Aydin's Grass Tweaks/gamedata/textures/lfo/lfo_trees/oak/trees_atp_oak.dds b/mods/Aydin's Grass Tweaks/gamedata/textures/lfo/lfo_trees/oak/trees_atp_oak.dds
new file mode 100644
index 00000000..6119da1e
--- /dev/null
+++ b/mods/Aydin's Grass Tweaks/gamedata/textures/lfo/lfo_trees/oak/trees_atp_oak.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:09d40af563f81a5764abae77cb53fc86ef0362d3c97bceaf619792a6f556f806
+size 1398256
diff --git a/mods/Aydin's Grass Tweaks/gamedata/textures/lfo/lfo_trees/oak/trees_atp_oak_a.dds b/mods/Aydin's Grass Tweaks/gamedata/textures/lfo/lfo_trees/oak/trees_atp_oak_a.dds
new file mode 100644
index 00000000..9ea7bdd8
--- /dev/null
+++ b/mods/Aydin's Grass Tweaks/gamedata/textures/lfo/lfo_trees/oak/trees_atp_oak_a.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:de09df076d5b3ef63d7d17e2590951b6dc22209ffb274a3f489f9b2f8282435d
+size 1398256
diff --git a/mods/Aydin's Grass Tweaks/gamedata/textures/lfo/lfo_trees/oak/trees_atp_oak_b.dds b/mods/Aydin's Grass Tweaks/gamedata/textures/lfo/lfo_trees/oak/trees_atp_oak_b.dds
new file mode 100644
index 00000000..65f80519
--- /dev/null
+++ b/mods/Aydin's Grass Tweaks/gamedata/textures/lfo/lfo_trees/oak/trees_atp_oak_b.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:fa9eb3ccd085e83894aa3d4fcf8e6b13b26e05a212e61be1fd0795bbd2f69802
+size 1398256
diff --git a/mods/Aydin's Grass Tweaks/gamedata/textures/lfo/lfo_trees/oak/trees_atp_oak_branch.dds b/mods/Aydin's Grass Tweaks/gamedata/textures/lfo/lfo_trees/oak/trees_atp_oak_branch.dds
new file mode 100644
index 00000000..cccb64b1
--- /dev/null
+++ b/mods/Aydin's Grass Tweaks/gamedata/textures/lfo/lfo_trees/oak/trees_atp_oak_branch.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a6a47b5c3c48db563277566e8f5b564df9586402f41f195345f9efb25f62b161
+size 2796368
diff --git a/mods/Aydin's Grass Tweaks/gamedata/textures/lfo/lfo_trees/oak/trees_atp_oak_branch_a.dds b/mods/Aydin's Grass Tweaks/gamedata/textures/lfo/lfo_trees/oak/trees_atp_oak_branch_a.dds
new file mode 100644
index 00000000..17005a9b
--- /dev/null
+++ b/mods/Aydin's Grass Tweaks/gamedata/textures/lfo/lfo_trees/oak/trees_atp_oak_branch_a.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:91b6346c29befbc8db48edb09b179d9392a0f0cc39d58bfa7f73dd07e613feb2
+size 2796368
diff --git a/mods/Aydin's Grass Tweaks/gamedata/textures/lfo/lfo_trees/oak/trees_atp_oak_c.dds b/mods/Aydin's Grass Tweaks/gamedata/textures/lfo/lfo_trees/oak/trees_atp_oak_c.dds
new file mode 100644
index 00000000..6e7df7d8
--- /dev/null
+++ b/mods/Aydin's Grass Tweaks/gamedata/textures/lfo/lfo_trees/oak/trees_atp_oak_c.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:6dc34dcb2189cdfd81d59169b70ec080f3c9a772e1abc87faa00aed13765e8fb
+size 1398256
diff --git a/mods/Aydin's Grass Tweaks/gamedata/textures/lfo/lfo_trees/pine/trees_atp_pine.dds b/mods/Aydin's Grass Tweaks/gamedata/textures/lfo/lfo_trees/pine/trees_atp_pine.dds
new file mode 100644
index 00000000..dddc7056
--- /dev/null
+++ b/mods/Aydin's Grass Tweaks/gamedata/textures/lfo/lfo_trees/pine/trees_atp_pine.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:dc93ab662c980690412a0f780a2cbf35c42e11ca5356bf4436fe47e8c38189f4
+size 5592560
diff --git a/mods/Aydin's Grass Tweaks/gamedata/textures/lfo/lfo_trees/pine/trees_atp_pine_0001.dds b/mods/Aydin's Grass Tweaks/gamedata/textures/lfo/lfo_trees/pine/trees_atp_pine_0001.dds
new file mode 100644
index 00000000..a6662a01
--- /dev/null
+++ b/mods/Aydin's Grass Tweaks/gamedata/textures/lfo/lfo_trees/pine/trees_atp_pine_0001.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:82b8fa6f3cf32b717b04d96761d067aa7dc88abe6cd7f1fda075674dbda7a072
+size 5592560
diff --git a/mods/Aydin's Grass Tweaks/gamedata/textures/lfo/lfo_trees/poplar/trees_atp_poplar.dds b/mods/Aydin's Grass Tweaks/gamedata/textures/lfo/lfo_trees/poplar/trees_atp_poplar.dds
new file mode 100644
index 00000000..e4dadfce
--- /dev/null
+++ b/mods/Aydin's Grass Tweaks/gamedata/textures/lfo/lfo_trees/poplar/trees_atp_poplar.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:35fb24a5da0773c04c4b4dc809f10eca6f5e854619f920b4d325545d2105c20c
+size 11184976
diff --git a/mods/Aydin's Grass Tweaks/gamedata/textures/lfo/lfo_trees/poplar/trees_atp_poplar_0001.dds b/mods/Aydin's Grass Tweaks/gamedata/textures/lfo/lfo_trees/poplar/trees_atp_poplar_0001.dds
new file mode 100644
index 00000000..6be6dcfe
--- /dev/null
+++ b/mods/Aydin's Grass Tweaks/gamedata/textures/lfo/lfo_trees/poplar/trees_atp_poplar_0001.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:0d8460b09457eee7eb1b5305c0ab8c0e67361c97cb6dee72d2833063d1aecf83
+size 11184976
diff --git a/mods/Aydin's Grass Tweaks/gamedata/textures/lfo/lfo_trees/poplar/trees_atp_poplar_a.dds b/mods/Aydin's Grass Tweaks/gamedata/textures/lfo/lfo_trees/poplar/trees_atp_poplar_a.dds
new file mode 100644
index 00000000..7035f9c0
--- /dev/null
+++ b/mods/Aydin's Grass Tweaks/gamedata/textures/lfo/lfo_trees/poplar/trees_atp_poplar_a.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:1a5ae3fddb08482f19105d86f35a7a2d02320bcd736a837d54366c1763632075
+size 11184976
diff --git a/mods/Aydin's Grass Tweaks/gamedata/textures/lfo/lfo_trees/spruce/trees_atp_spruce_dead.dds b/mods/Aydin's Grass Tweaks/gamedata/textures/lfo/lfo_trees/spruce/trees_atp_spruce_dead.dds
new file mode 100644
index 00000000..2865bded
--- /dev/null
+++ b/mods/Aydin's Grass Tweaks/gamedata/textures/lfo/lfo_trees/spruce/trees_atp_spruce_dead.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:2929a14289a6f3b1dd79bffcb6ff601cb4a2300571346c83f4adf3022eb164e2
+size 5592544
diff --git a/mods/Aydin's Grass Tweaks/gamedata/textures/lfo/lfo_trees/willow/trees_atp_willow_00.dds b/mods/Aydin's Grass Tweaks/gamedata/textures/lfo/lfo_trees/willow/trees_atp_willow_00.dds
new file mode 100644
index 00000000..0caca081
--- /dev/null
+++ b/mods/Aydin's Grass Tweaks/gamedata/textures/lfo/lfo_trees/willow/trees_atp_willow_00.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:6acc9d6e0959d97b9e6ff17981a8605bf0b133fe769e656137c488f3612c29c5
+size 5592592
diff --git a/mods/Aydin's Grass Tweaks/gamedata/textures/lfo/lfo_trees/willow/trees_atp_willow_01.dds b/mods/Aydin's Grass Tweaks/gamedata/textures/lfo/lfo_trees/willow/trees_atp_willow_01.dds
new file mode 100644
index 00000000..3b2d58af
--- /dev/null
+++ b/mods/Aydin's Grass Tweaks/gamedata/textures/lfo/lfo_trees/willow/trees_atp_willow_01.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a5944931e9ec6c963fd28e961b3c788c92e857e10696fee9ec1d855c2fdd9d43
+size 5592592
diff --git a/mods/Aydin's Grass Tweaks/gamedata/textures/lfo/lftrees_dub_red.dds b/mods/Aydin's Grass Tweaks/gamedata/textures/lfo/lftrees_dub_red.dds
new file mode 100644
index 00000000..c10b6695
--- /dev/null
+++ b/mods/Aydin's Grass Tweaks/gamedata/textures/lfo/lftrees_dub_red.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:e5743bdf86d65c98c156816352a41019c9995dbb24d70d9982f32329c22c0c68
+size 5592560
diff --git a/mods/Aydin's Grass Tweaks/gamedata/textures/lfo/lftrees_forestwall1.dds b/mods/Aydin's Grass Tweaks/gamedata/textures/lfo/lftrees_forestwall1.dds
new file mode 100644
index 00000000..51520c18
--- /dev/null
+++ b/mods/Aydin's Grass Tweaks/gamedata/textures/lfo/lftrees_forestwall1.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:3e7e7aad8671c6a81d3130d3849ef06a40f07617aedb2c57dcfb258c2b6aae6b
+size 699216
diff --git a/mods/Aydin's Grass Tweaks/gamedata/textures/lfo/lftrees_forestwall2.dds b/mods/Aydin's Grass Tweaks/gamedata/textures/lfo/lftrees_forestwall2.dds
new file mode 100644
index 00000000..9027f685
--- /dev/null
+++ b/mods/Aydin's Grass Tweaks/gamedata/textures/lfo/lftrees_forestwall2.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:6746311aea2651405ae575aa44fae4098d12c912562e8111c2b360bc300de0f6
+size 699216
diff --git a/mods/Aydin's Grass Tweaks/gamedata/textures/lfo/lftrees_kamish_big_01.dds b/mods/Aydin's Grass Tweaks/gamedata/textures/lfo/lftrees_kamish_big_01.dds
new file mode 100644
index 00000000..8c66fe26
--- /dev/null
+++ b/mods/Aydin's Grass Tweaks/gamedata/textures/lfo/lftrees_kamish_big_01.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:bcabc48a81ae389f3024cf08bc8fa9fb10648cb0ae2b344e198bb8b5c5ceb8e3
+size 1398256
diff --git a/mods/Aydin's Grass Tweaks/gamedata/textures/lfo/lftrees_kamish_big_02.dds b/mods/Aydin's Grass Tweaks/gamedata/textures/lfo/lftrees_kamish_big_02.dds
new file mode 100644
index 00000000..5b0841b1
--- /dev/null
+++ b/mods/Aydin's Grass Tweaks/gamedata/textures/lfo/lftrees_kamish_big_02.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:b7fd1d4443e494541ae9adb7e1c212f973ecc1f18f6fbed9c345b80dd37b52b3
+size 1398256
diff --git a/mods/Aydin's Grass Tweaks/gamedata/textures/lfo/lftrees_kamish_sux.dds b/mods/Aydin's Grass Tweaks/gamedata/textures/lfo/lftrees_kamish_sux.dds
new file mode 100644
index 00000000..402a4860
--- /dev/null
+++ b/mods/Aydin's Grass Tweaks/gamedata/textures/lfo/lftrees_kamish_sux.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:9ff8e1cf966fe6686956289b3b86a8d51c6658027357f978d020a99e2d89d4f5
+size 1398256
diff --git a/mods/Aydin's Grass Tweaks/gamedata/textures/lfo/lftrees_kamysh.dds b/mods/Aydin's Grass Tweaks/gamedata/textures/lfo/lftrees_kamysh.dds
new file mode 100644
index 00000000..fa3cb247
--- /dev/null
+++ b/mods/Aydin's Grass Tweaks/gamedata/textures/lfo/lftrees_kamysh.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:cc2f9fd20dde66b955415213e5bad0b252cb292aece06fd996a44682cc9c026b
+size 2796368
diff --git a/mods/Aydin's Grass Tweaks/gamedata/textures/lfo/lftrees_orex_red_dry.dds b/mods/Aydin's Grass Tweaks/gamedata/textures/lfo/lftrees_orex_red_dry.dds
new file mode 100644
index 00000000..89c2fdef
--- /dev/null
+++ b/mods/Aydin's Grass Tweaks/gamedata/textures/lfo/lftrees_orex_red_dry.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:f19326d6e5fd8112e5f29974a6d5b2d94cfe66f20b870d8f7bda1ee59951cd4f
+size 5592560
diff --git a/mods/Aydin's Grass Tweaks/gamedata/textures/lfo/lftrees_osoka_sux.dds b/mods/Aydin's Grass Tweaks/gamedata/textures/lfo/lftrees_osoka_sux.dds
new file mode 100644
index 00000000..09202a77
--- /dev/null
+++ b/mods/Aydin's Grass Tweaks/gamedata/textures/lfo/lftrees_osoka_sux.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:60a4eb59622526002341ae7285ff9f9df5748f78434e6f3f5c9d1c3c7fb2ce51
+size 5592560
diff --git a/mods/Aydin's Grass Tweaks/gamedata/textures/lfo/lftrees_vetka.dds b/mods/Aydin's Grass Tweaks/gamedata/textures/lfo/lftrees_vetka.dds
new file mode 100644
index 00000000..cf0a8223
--- /dev/null
+++ b/mods/Aydin's Grass Tweaks/gamedata/textures/lfo/lftrees_vetka.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:bbe3305506873e864152763c85ad69cf3c66df373aae723c5cb0418178eae555
+size 5592560
diff --git a/mods/Aydin's Grass Tweaks/gamedata/textures/lfo/lftrees_vetkabig_rotten.dds b/mods/Aydin's Grass Tweaks/gamedata/textures/lfo/lftrees_vetkabig_rotten.dds
new file mode 100644
index 00000000..053b87ce
--- /dev/null
+++ b/mods/Aydin's Grass Tweaks/gamedata/textures/lfo/lftrees_vetkabig_rotten.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:8a9c1ec3e23924324cbac32d96d815092517fba722026e7af8024e00dc2d4ebc
+size 5592560
diff --git a/mods/Aydin's Grass Tweaks/gamedata/textures/lfo/lftrees_vetkagreen1.dds b/mods/Aydin's Grass Tweaks/gamedata/textures/lfo/lftrees_vetkagreen1.dds
new file mode 100644
index 00000000..5539fca3
--- /dev/null
+++ b/mods/Aydin's Grass Tweaks/gamedata/textures/lfo/lftrees_vetkagreen1.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d32c8db2e3376dd5eb313734a3b5d0116c3436700ec7365f65dc25398c0374a1
+size 5592560
diff --git a/mods/Aydin's Grass Tweaks/meta.ini b/mods/Aydin's Grass Tweaks/meta.ini
new file mode 100644
index 00000000..c9a146b8
--- /dev/null
+++ b/mods/Aydin's Grass Tweaks/meta.ini
@@ -0,0 +1,28 @@
+[General]
+gameName=stalkeranomaly
+modid=0
+version=4.0.0.0
+newestVersion=
+category="-1,"
+nexusFileStatus=1
+installationFile=Aydins_Grass_Tweaks_4.0.7z
+repository=Nexus
+ignoredVersion=
+comments=
+notes=
+nexusDescription=
+url=https://www.moddb.com/mods/stalker-anomaly/addons/aydins-grass-tweaks-40
+hasCustomURL=true
+lastNexusQuery=
+lastNexusUpdate=
+nexusLastModified=2024-03-19T10:22:25Z
+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/Aydins Grass Tweaks - SSS Terrain LOD Compatiblity/gamedata/textures/terrain/default_lod_textures.dds b/mods/Aydins Grass Tweaks - SSS Terrain LOD Compatiblity/gamedata/textures/terrain/default_lod_textures.dds
new file mode 100644
index 00000000..a4bb7ecc
--- /dev/null
+++ b/mods/Aydins Grass Tweaks - SSS Terrain LOD Compatiblity/gamedata/textures/terrain/default_lod_textures.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:6c4afbe1eff63028e67d0c5aae6198dea7d42d4246cf9d9cddd273664f437c83
+size 1048704
diff --git a/mods/Aydins Grass Tweaks - SSS Terrain LOD Compatiblity/gamedata/textures/terrain/terrain_agroprom_puddles_mask.dds b/mods/Aydins Grass Tweaks - SSS Terrain LOD Compatiblity/gamedata/textures/terrain/terrain_agroprom_puddles_mask.dds
new file mode 100644
index 00000000..a8293fdf
--- /dev/null
+++ b/mods/Aydins Grass Tweaks - SSS Terrain LOD Compatiblity/gamedata/textures/terrain/terrain_agroprom_puddles_mask.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d7a069e37b584c78f718b26ce23b239dc60bf5696b51e5f470dc8e932a75617e
+size 699192
diff --git a/mods/Aydins Grass Tweaks - SSS Terrain LOD Compatiblity/gamedata/textures/terrain/terrain_bar_lod_textures.dds b/mods/Aydins Grass Tweaks - SSS Terrain LOD Compatiblity/gamedata/textures/terrain/terrain_bar_lod_textures.dds
new file mode 100644
index 00000000..a9e31040
--- /dev/null
+++ b/mods/Aydins Grass Tweaks - SSS Terrain LOD Compatiblity/gamedata/textures/terrain/terrain_bar_lod_textures.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d6ece2946c2c912c5e910b7f8610683940d17d1f9000d1315709878d75be347a
+size 1048704
diff --git a/mods/Aydins Grass Tweaks - SSS Terrain LOD Compatiblity/gamedata/textures/terrain/terrain_darkcape_puddles_mask.dds b/mods/Aydins Grass Tweaks - SSS Terrain LOD Compatiblity/gamedata/textures/terrain/terrain_darkcape_puddles_mask.dds
new file mode 100644
index 00000000..719dbe4a
--- /dev/null
+++ b/mods/Aydins Grass Tweaks - SSS Terrain LOD Compatiblity/gamedata/textures/terrain/terrain_darkcape_puddles_mask.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:909c90cc8134f5348df9f56923b3d3770d8412a467a2c71d170fcb6ca8998775
+size 699192
diff --git a/mods/Aydins Grass Tweaks - SSS Terrain LOD Compatiblity/gamedata/textures/terrain/terrain_darkvalley_lod_textures.dds b/mods/Aydins Grass Tweaks - SSS Terrain LOD Compatiblity/gamedata/textures/terrain/terrain_darkvalley_lod_textures.dds
new file mode 100644
index 00000000..a9e31040
--- /dev/null
+++ b/mods/Aydins Grass Tweaks - SSS Terrain LOD Compatiblity/gamedata/textures/terrain/terrain_darkvalley_lod_textures.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d6ece2946c2c912c5e910b7f8610683940d17d1f9000d1315709878d75be347a
+size 1048704
diff --git a/mods/Aydins Grass Tweaks - SSS Terrain LOD Compatiblity/gamedata/textures/terrain/terrain_darkvalley_puddles_mask.dds b/mods/Aydins Grass Tweaks - SSS Terrain LOD Compatiblity/gamedata/textures/terrain/terrain_darkvalley_puddles_mask.dds
new file mode 100644
index 00000000..c92e355f
--- /dev/null
+++ b/mods/Aydins Grass Tweaks - SSS Terrain LOD Compatiblity/gamedata/textures/terrain/terrain_darkvalley_puddles_mask.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:e8849e53a6fb62ac1cb9d062ed3bd0e9ed28a777f96e7d79ca339ff505a0161d
+size 699192
diff --git a/mods/Aydins Grass Tweaks - SSS Terrain LOD Compatiblity/gamedata/textures/terrain/terrain_dry_gully_1_lod_textures.dds b/mods/Aydins Grass Tweaks - SSS Terrain LOD Compatiblity/gamedata/textures/terrain/terrain_dry_gully_1_lod_textures.dds
new file mode 100644
index 00000000..a9e31040
--- /dev/null
+++ b/mods/Aydins Grass Tweaks - SSS Terrain LOD Compatiblity/gamedata/textures/terrain/terrain_dry_gully_1_lod_textures.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d6ece2946c2c912c5e910b7f8610683940d17d1f9000d1315709878d75be347a
+size 1048704
diff --git a/mods/Aydins Grass Tweaks - SSS Terrain LOD Compatiblity/gamedata/textures/terrain/terrain_escape_lod_textures.dds b/mods/Aydins Grass Tweaks - SSS Terrain LOD Compatiblity/gamedata/textures/terrain/terrain_escape_lod_textures.dds
new file mode 100644
index 00000000..15e97907
--- /dev/null
+++ b/mods/Aydins Grass Tweaks - SSS Terrain LOD Compatiblity/gamedata/textures/terrain/terrain_escape_lod_textures.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:8b15cde9028f688f509c2145a1accaa3bcf5984f3bd51dcab5b4848e4aaac390
+size 1048704
diff --git a/mods/Aydins Grass Tweaks - SSS Terrain LOD Compatiblity/gamedata/textures/terrain/terrain_frodo_gen_puddles_mask.dds b/mods/Aydins Grass Tweaks - SSS Terrain LOD Compatiblity/gamedata/textures/terrain/terrain_frodo_gen_puddles_mask.dds
new file mode 100644
index 00000000..2cbfc6e2
--- /dev/null
+++ b/mods/Aydins Grass Tweaks - SSS Terrain LOD Compatiblity/gamedata/textures/terrain/terrain_frodo_gen_puddles_mask.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:9bc7315db23684bd662e67baa943f02e30db5156f5561ccb44249a0189139409
+size 699192
diff --git a/mods/Aydins Grass Tweaks - SSS Terrain LOD Compatiblity/gamedata/textures/terrain/terrain_garbage_new_lod_textures.dds b/mods/Aydins Grass Tweaks - SSS Terrain LOD Compatiblity/gamedata/textures/terrain/terrain_garbage_new_lod_textures.dds
new file mode 100644
index 00000000..e7d5bd5f
--- /dev/null
+++ b/mods/Aydins Grass Tweaks - SSS Terrain LOD Compatiblity/gamedata/textures/terrain/terrain_garbage_new_lod_textures.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a2614405a107097ad85b4e7240e87e30f6c05c3f8501f6aa7a5f69faf7a05bba
+size 1048704
diff --git a/mods/Aydins Grass Tweaks - SSS Terrain LOD Compatiblity/gamedata/textures/terrain/terrain_garbage_new_puddles_mask.dds b/mods/Aydins Grass Tweaks - SSS Terrain LOD Compatiblity/gamedata/textures/terrain/terrain_garbage_new_puddles_mask.dds
new file mode 100644
index 00000000..8c849afa
--- /dev/null
+++ b/mods/Aydins Grass Tweaks - SSS Terrain LOD Compatiblity/gamedata/textures/terrain/terrain_garbage_new_puddles_mask.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:1d3f0df98673e09f486872b03043fbf6b55ffb808cc85d2964dd0e1ed28ca3b9
+size 699192
diff --git a/mods/Aydins Grass Tweaks - SSS Terrain LOD Compatiblity/gamedata/textures/terrain/terrain_gr.thm b/mods/Aydins Grass Tweaks - SSS Terrain LOD Compatiblity/gamedata/textures/terrain/terrain_gr.thm
new file mode 100644
index 00000000..3ec97a34
--- /dev/null
+++ b/mods/Aydins Grass Tweaks - SSS Terrain LOD Compatiblity/gamedata/textures/terrain/terrain_gr.thm
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:b52255c4ed86e204ac89d4efed029be15dad59b0a034263ec487337ada953abf
+size 144
diff --git a/mods/Aydins Grass Tweaks - SSS Terrain LOD Compatiblity/gamedata/textures/terrain/terrain_jupiter_lod_textures.dds b/mods/Aydins Grass Tweaks - SSS Terrain LOD Compatiblity/gamedata/textures/terrain/terrain_jupiter_lod_textures.dds
new file mode 100644
index 00000000..4fbd4825
--- /dev/null
+++ b/mods/Aydins Grass Tweaks - SSS Terrain LOD Compatiblity/gamedata/textures/terrain/terrain_jupiter_lod_textures.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:3407f6e97d2a5b746620bde1e2b042a7eede48e9586f41572149676c23f326ff
+size 1048704
diff --git a/mods/Aydins Grass Tweaks - SSS Terrain LOD Compatiblity/gamedata/textures/terrain/terrain_jupiter_puddles_mask.dds b/mods/Aydins Grass Tweaks - SSS Terrain LOD Compatiblity/gamedata/textures/terrain/terrain_jupiter_puddles_mask.dds
new file mode 100644
index 00000000..6b1a0bcd
--- /dev/null
+++ b/mods/Aydins Grass Tweaks - SSS Terrain LOD Compatiblity/gamedata/textures/terrain/terrain_jupiter_puddles_mask.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:5b7abaa06dcd74ea090c4539b9756529b7e82e965e84c8c26781a4eeeca763ee
+size 699192
diff --git a/mods/Aydins Grass Tweaks - SSS Terrain LOD Compatiblity/gamedata/textures/terrain/terrain_limansk_puddles_mask.dds b/mods/Aydins Grass Tweaks - SSS Terrain LOD Compatiblity/gamedata/textures/terrain/terrain_limansk_puddles_mask.dds
new file mode 100644
index 00000000..c7614012
--- /dev/null
+++ b/mods/Aydins Grass Tweaks - SSS Terrain LOD Compatiblity/gamedata/textures/terrain/terrain_limansk_puddles_mask.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:eafcdd93860c253b93efd3b54362245301830dffed8d584836c33ae5e770b838
+size 699192
diff --git a/mods/Aydins Grass Tweaks - SSS Terrain LOD Compatiblity/gamedata/textures/terrain/terrain_marsh_lod_textures.dds b/mods/Aydins Grass Tweaks - SSS Terrain LOD Compatiblity/gamedata/textures/terrain/terrain_marsh_lod_textures.dds
new file mode 100644
index 00000000..82cdb48c
--- /dev/null
+++ b/mods/Aydins Grass Tweaks - SSS Terrain LOD Compatiblity/gamedata/textures/terrain/terrain_marsh_lod_textures.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:9486f851f09cd2ca3214384a423d652d453e9bc3ee36a724f8c2c587b4007747
+size 1048704
diff --git a/mods/Aydins Grass Tweaks - SSS Terrain LOD Compatiblity/gamedata/textures/terrain/terrain_marsh_puddles_mask.dds b/mods/Aydins Grass Tweaks - SSS Terrain LOD Compatiblity/gamedata/textures/terrain/terrain_marsh_puddles_mask.dds
new file mode 100644
index 00000000..7a7a8811
--- /dev/null
+++ b/mods/Aydins Grass Tweaks - SSS Terrain LOD Compatiblity/gamedata/textures/terrain/terrain_marsh_puddles_mask.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:fb92e63f6bc8232063070bdeedd4ea9457b553b9eb57dbef21be94350613e1be
+size 699192
diff --git a/mods/Aydins Grass Tweaks - SSS Terrain LOD Compatiblity/gamedata/textures/terrain/terrain_military_1_puddles_mask.dds b/mods/Aydins Grass Tweaks - SSS Terrain LOD Compatiblity/gamedata/textures/terrain/terrain_military_1_puddles_mask.dds
new file mode 100644
index 00000000..fda2bf3a
--- /dev/null
+++ b/mods/Aydins Grass Tweaks - SSS Terrain LOD Compatiblity/gamedata/textures/terrain/terrain_military_1_puddles_mask.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:ab3751c09d692cca26072db86b58509e2e645d9ef8ae26166022720e9b993109
+size 699192
diff --git a/mods/Aydins Grass Tweaks - SSS Terrain LOD Compatiblity/gamedata/textures/terrain/terrain_pole.thm b/mods/Aydins Grass Tweaks - SSS Terrain LOD Compatiblity/gamedata/textures/terrain/terrain_pole.thm
new file mode 100644
index 00000000..f796eaee
--- /dev/null
+++ b/mods/Aydins Grass Tweaks - SSS Terrain LOD Compatiblity/gamedata/textures/terrain/terrain_pole.thm
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:2f7d01c1f3c10ef6e61de291fc6ee5852772f9874681b07dc175ffb72b192c9b
+size 144
diff --git a/mods/Aydins Grass Tweaks - SSS Terrain LOD Compatiblity/gamedata/textures/terrain/terrain_pole_lod_textures.dds b/mods/Aydins Grass Tweaks - SSS Terrain LOD Compatiblity/gamedata/textures/terrain/terrain_pole_lod_textures.dds
new file mode 100644
index 00000000..a9e31040
--- /dev/null
+++ b/mods/Aydins Grass Tweaks - SSS Terrain LOD Compatiblity/gamedata/textures/terrain/terrain_pole_lod_textures.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d6ece2946c2c912c5e910b7f8610683940d17d1f9000d1315709878d75be347a
+size 1048704
diff --git a/mods/Aydins Grass Tweaks - SSS Terrain LOD Compatiblity/gamedata/textures/terrain/terrain_poligon2_lod_textures.dds b/mods/Aydins Grass Tweaks - SSS Terrain LOD Compatiblity/gamedata/textures/terrain/terrain_poligon2_lod_textures.dds
new file mode 100644
index 00000000..a9e31040
--- /dev/null
+++ b/mods/Aydins Grass Tweaks - SSS Terrain LOD Compatiblity/gamedata/textures/terrain/terrain_poligon2_lod_textures.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d6ece2946c2c912c5e910b7f8610683940d17d1f9000d1315709878d75be347a
+size 1048704
diff --git a/mods/Aydins Grass Tweaks - SSS Terrain LOD Compatiblity/gamedata/textures/terrain/terrain_pripyat_puddles_mask.dds b/mods/Aydins Grass Tweaks - SSS Terrain LOD Compatiblity/gamedata/textures/terrain/terrain_pripyat_puddles_mask.dds
new file mode 100644
index 00000000..793f09bc
--- /dev/null
+++ b/mods/Aydins Grass Tweaks - SSS Terrain LOD Compatiblity/gamedata/textures/terrain/terrain_pripyat_puddles_mask.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:eee930003ed8b6bc6d42ab14b7b08f48743f44078f75422f75a0cfea4d94eb4e
+size 699192
diff --git a/mods/Aydins Grass Tweaks - SSS Terrain LOD Compatiblity/gamedata/textures/terrain/terrain_radar_2_lod_textures.dds b/mods/Aydins Grass Tweaks - SSS Terrain LOD Compatiblity/gamedata/textures/terrain/terrain_radar_2_lod_textures.dds
new file mode 100644
index 00000000..a9e31040
--- /dev/null
+++ b/mods/Aydins Grass Tweaks - SSS Terrain LOD Compatiblity/gamedata/textures/terrain/terrain_radar_2_lod_textures.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d6ece2946c2c912c5e910b7f8610683940d17d1f9000d1315709878d75be347a
+size 1048704
diff --git a/mods/Aydins Grass Tweaks - SSS Terrain LOD Compatiblity/gamedata/textures/terrain/terrain_red_forest_lod_textures.dds b/mods/Aydins Grass Tweaks - SSS Terrain LOD Compatiblity/gamedata/textures/terrain/terrain_red_forest_lod_textures.dds
new file mode 100644
index 00000000..c32e7f07
--- /dev/null
+++ b/mods/Aydins Grass Tweaks - SSS Terrain LOD Compatiblity/gamedata/textures/terrain/terrain_red_forest_lod_textures.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:ef881fed874a3f986b046ee8973e02379d20d952c5baf400962799f203004755
+size 1048704
diff --git a/mods/Aydins Grass Tweaks - SSS Terrain LOD Compatiblity/gamedata/textures/terrain/terrain_red_forest_puddles_mask.dds b/mods/Aydins Grass Tweaks - SSS Terrain LOD Compatiblity/gamedata/textures/terrain/terrain_red_forest_puddles_mask.dds
new file mode 100644
index 00000000..68584099
--- /dev/null
+++ b/mods/Aydins Grass Tweaks - SSS Terrain LOD Compatiblity/gamedata/textures/terrain/terrain_red_forest_puddles_mask.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:0b09540c075e8879a807e807d7a1b0563a4776dad4fd80a3ce2d3e7d25db5fa0
+size 699192
diff --git a/mods/Aydins Grass Tweaks - SSS Terrain LOD Compatiblity/gamedata/textures/terrain/terrain_yantar_lod_textures.dds b/mods/Aydins Grass Tweaks - SSS Terrain LOD Compatiblity/gamedata/textures/terrain/terrain_yantar_lod_textures.dds
new file mode 100644
index 00000000..c32e7f07
--- /dev/null
+++ b/mods/Aydins Grass Tweaks - SSS Terrain LOD Compatiblity/gamedata/textures/terrain/terrain_yantar_lod_textures.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:ef881fed874a3f986b046ee8973e02379d20d952c5baf400962799f203004755
+size 1048704
diff --git a/mods/Aydins Grass Tweaks - SSS Terrain LOD Compatiblity/gamedata/textures/terrain/terrain_yantar_puddles_mask.dds b/mods/Aydins Grass Tweaks - SSS Terrain LOD Compatiblity/gamedata/textures/terrain/terrain_yantar_puddles_mask.dds
new file mode 100644
index 00000000..d324ffac
--- /dev/null
+++ b/mods/Aydins Grass Tweaks - SSS Terrain LOD Compatiblity/gamedata/textures/terrain/terrain_yantar_puddles_mask.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d4e47951183d551be1faaa27191af3f4296093240ce47e0903cf2e90df59aa87
+size 699192
diff --git a/mods/Aydins Grass Tweaks - SSS Terrain LOD Compatiblity/gamedata/textures/terrain/terrain_zaton.thm b/mods/Aydins Grass Tweaks - SSS Terrain LOD Compatiblity/gamedata/textures/terrain/terrain_zaton.thm
new file mode 100644
index 00000000..87f96974
--- /dev/null
+++ b/mods/Aydins Grass Tweaks - SSS Terrain LOD Compatiblity/gamedata/textures/terrain/terrain_zaton.thm
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:af4d1a19e73bd794291f80e750213490f3ff8e2d5ad82bc643f0c7a28f2cfe37
+size 144
diff --git a/mods/Aydins Grass Tweaks - SSS Terrain LOD Compatiblity/gamedata/textures/terrain/terrain_zaton_lod_textures.dds b/mods/Aydins Grass Tweaks - SSS Terrain LOD Compatiblity/gamedata/textures/terrain/terrain_zaton_lod_textures.dds
new file mode 100644
index 00000000..6b1afdf1
--- /dev/null
+++ b/mods/Aydins Grass Tweaks - SSS Terrain LOD Compatiblity/gamedata/textures/terrain/terrain_zaton_lod_textures.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:f9c81062b493292420a4d8ee8f0118e198900940dab96721318708d6456132c8
+size 1048704
diff --git a/mods/Aydins Grass Tweaks - SSS Terrain LOD Compatiblity/gamedata/textures/terrain/terrain_zaton_puddles_mask.dds b/mods/Aydins Grass Tweaks - SSS Terrain LOD Compatiblity/gamedata/textures/terrain/terrain_zaton_puddles_mask.dds
new file mode 100644
index 00000000..88acd9ce
--- /dev/null
+++ b/mods/Aydins Grass Tweaks - SSS Terrain LOD Compatiblity/gamedata/textures/terrain/terrain_zaton_puddles_mask.dds
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:ee07714eaddf767f506552be503d729a961a474ce86949ea598fecd2804cce93
+size 699192
diff --git a/mods/Aydins Grass Tweaks - SSS Terrain LOD Compatiblity/meta.ini b/mods/Aydins Grass Tweaks - SSS Terrain LOD Compatiblity/meta.ini
new file mode 100644
index 00000000..1a999353
--- /dev/null
+++ b/mods/Aydins Grass Tweaks - SSS Terrain LOD Compatiblity/meta.ini
@@ -0,0 +1,28 @@
+[General]
+gameName=stalkeranomaly
+modid=0
+version=1.0.0.0
+newestVersion=
+category="-1,"
+nexusFileStatus=1
+installationFile=Aydins_Grass_Tweaks_SSS_Terrain_LOD_compatiblity.rar
+repository=Nexus
+ignoredVersion=
+comments=
+notes=
+nexusDescription=
+url=
+hasCustomURL=true
+lastNexusQuery=
+lastNexusUpdate=
+nexusLastModified=2024-03-19T10:38:53Z
+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/Footsies/gamedata/configs/mod_system_footsies_v2.ltx b/mods/Footsies/gamedata/configs/mod_system_footsies_v2.ltx
new file mode 100644
index 00000000..bc88b019
--- /dev/null
+++ b/mods/Footsies/gamedata/configs/mod_system_footsies_v2.ltx
@@ -0,0 +1,420 @@
+![m_flesh_e]
+material = creatures\human
+
+![m_flesh_step_params]
+stand_walk_fwd_0 = 7, 0.01, 1.0, 0.43, 0.7, 0.20, 1.0, 0.66, 1.0
+stand_walk_fwd_dmg_0 = 6, 0.96, 1.0, 0.00, 0.0, 0.20, 1.0, 0.66, 1.0
+stand_run_0 = 6, 0.01, 1.0, 0.95, 0.7, 0.80, 1.0, 0.85, 1.0
+stand_run_dmg_0 = 6, 0.01, 1.0, 0.00, 0.0, 0.80, 1.0, 0.85, 1.0
+stand_crawl_0 = 1, 0.70, 0.2, 0.14, 0.2, 0.64, 0.2, 0.20, 0.2
+stand_drag_0 = 1, 0.52, 1.0, 1.00, 0.7, 0.68, 1.0, 0.18, 1.0
+stand_jump_left_0 = 1, 0.55, 1.0, 0.65, 0.7, 0.70, 1.0, 0.70, 1.0
+stand_jump_right_0 = 1, 0.75, 1.0, 0.70, 0.7, 0.65, 1.0, 0.80, 1.0
+stand_run_look_left_0 = 1, 0.01, 1.0, 0.95, 0.7, 0.80, 1.0, 0.80, 1.0
+stand_run_look_right_0 = 1, 0.01, 1.0, 0.95, 0.7, 0.80, 1.0, 0.85, 1.0
+stand_turn_ls_0 = 1, 0.60, 1.0, 0.30, 0.7, 0.63, 1.0, 0.33, 1.0
+stand_turn_rs_0 = 1, 0.46, 1.0, 0.76, 0.7, 0.43, 1.0, 0.76, 1.0
+lie_stand_up_0 = 1, 0.44, 1.0, 0.56, 0.7, 0.44, 1.0, 0.30, 1.0
+stand_attack_0 = 1, 0.30, 1.0, 0.56, 0.7, 0.00, 0.0, 0.00, 0.0
+stand_attack_1 = 1, 0.63, 1.0, 0.97, 0.7, 0.00, 0.0, 0.00, 0.0
+stand_attack_2 = 1, 0.70, 1.0, 0.97, 0.7, 0.00, 0.0, 0.00, 0.0
+stand_attack_3 = 1, 0.70, 1.0, 0.97, 0.7, 0.00, 0.0, 0.00, 0.0
+stand_check_corpse_0 = 1, 0.19, 1.0, 0.60, 0.7, 0.28, 1.0, 0.00, 0.0
+stand_eat_1 = 1, 0.27, 1.0, 0.84, 0.7, 0.00, 0.0, 0.00, 0.0
+stand_idle_1 = 1, 0.68, 1.0, 0.97, 0.7, 0.58, 1.0, 0.77, 1.0
+stand_idle_2 = 1, 0.64, 1.0, 0.00, 0.0, 0.00, 0.0, 0.00, 0.0
+stand_lie_down_0 = 1, 0.26, 1.0, 0.41, 0.7, 0.66, 1.0, 0.54, 1.0
+stand_look_around_0 = 1, 0.00, 0.0, 0.00, 0.0, 0.22, 1.0, 0.88, 1.0
+stand_to_eat_0 = 1, 0.40, 1.0, 0.97, 0.7, 0.70, 1.0, 0.40, 1.0
+
+![m_bloodsucker_e]
+material = creatures\human
+
+![m_bloodsucker_step_params]
+stand_run_0 = 1, 0.10, 0.2, 0.60, 0.2
+stand_run_dmg_0 = 1, 0.01, 0.2, 0.36, 0.2
+stand_walk_fwd_0 = 1, 0.90, 0.2, 0.40, 0.2
+stand_walk_fwd_dmg_0 = 1, 0.01, 0.2, 0.45, 0.2
+stand_steal_0 = 2, 0.01, 0.1, 0.51, 0.1
+stand_run_turn_left_0 = 1, 0.10, 0.2, 0.60, 0.2
+stand_run_turn_right_0 = 1, 0.10, 0.2, 0.60, 0.2
+stand_turn_ls_0 = 1, 0.60, 0.2, 1.00, 0.2
+stand_turn_rs_0 = 1, 0.60, 0.2, 1.00, 0.2
+sit_eat_0 = 1, 0.06, 0.2, 0.00, 0.0
+sit_sleep_down_0 = 1, 0.36, 0.2, 0.97, 0.2
+sit_stand_up_0 = 1, 0.97, 0.2, 0.54, 0.2
+stand_attack_0 = 1, 0.00, 0.0, 0.81, 0.2
+stand_attack_1 = 1, 0.00, 0.0, 0.62, 0.2
+stand_attack_2 = 1, 0.00, 0.0, 0.62, 0.2
+stand_attack_run_0 = 2, 0.60, 0.2, 0.10, 0.2
+stand_check_corpse_0 = 1, 0.44, 0.2, 0.33, 0.2
+stand_scared_0 = 1, 0.64, 0.2, 0.24, 0.2
+stand_threaten_0 = 1, 0.00, 0.0, 0.97, 0.2
+stand_to_aggressive_0 = 1, 0.00, 0.0, 0.63, 0.2
+vampire_2 = 1, 0.44, 0.2, 0.87, 0.2
+
+![m_dog_e]
+material = creatures\human
+
+![m_dog_step_params]
+stand_walk_fwd_0 = 1, 0.36, 0.35, 0.86, 0.30, 0.76, 0.35, 0.23, 0.35
+stand_walk_dmg_0 = 1, 0.15, 0.35, 0.70, 0.30, 0.46, 0.35, 0.97, 0.35
+stand_run_0 = 1, 0.50, 0.35, 0.40, 0.30, 0.85, 0.35, 0.97, 0.35
+stand_run_dmg_0 = 1, 0.24, 0.35, 0.01, 0.00, 0.88, 0.35, 0.75, 0.35
+stand_steal_0 = 1, 0.15, 0.20, 0.75, 0.20, 0.35, 0.20, 0.95, 0.20
+stand_drag_0 = 1, 0.96, 0.35, 0.46, 0.30, 0.50, 0.35, 0.97, 0.35
+stand_jump_left_0 = 1, 0.60, 0.35, 0.50, 0.30, 0.53, 0.35, 0.60, 0.35
+stand_jump_right_0 = 1, 0.60, 0.35, 0.68, 0.30, 0.84, 0.35, 0.76, 0.35
+stand_run_turn_left_0 = 1, 0.15, 0.35, 0.01, 0.30, 0.50, 0.35, 0.65, 0.35
+stand_run_turn_right_0 = 1, 0.15, 0.35, 0.01, 0.30, 0.50, 0.35, 0.65, 0.35
+stand_turn_ls_0 = 1, 0.60, 0.35, 0.97, 0.30, 0.46, 0.35, 0.83, 0.35
+stand_turn_rs_0 = 1, 0.97, 0.35, 0.60, 0.30, 0.97, 0.35, 0.46, 0.35
+jump_ataka_02 = 1, 0.97, 0.35, 0.40, 0.30, 0.00, 0.00, 0.00, 0.00
+critical_hit_head_0 = 1, 0.97, 0.35, 0.15, 0.30, 0.00, 0.00, 0.00, 0.00
+lie_to_sit_0 = 1, 0.52, 0.35, 0.97, 0.30, 0.00, 0.00, 0.00, 0.00
+sit_lie_down_0 = 1, 0.97, 0.35, 0.52, 0.30, 0.00, 0.00, 0.00, 0.00
+sit_stand_up_0 = 1, 0.00, 0.00, 0.00, 0.00, 0.97, 0.35, 0.77, 0.35
+stand_attack_0 = 1, 0.97, 0.35, 0.40, 0.30, 0.00, 0.00, 0.00, 0.00
+stand_attack_1 = 1, 0.40, 0.35, 0.40, 0.30, 0.80, 0.35, 0.73, 0.35
+stand_attack_2 = 1, 0.84, 0.35, 0.44, 0.30, 0.97, 0.35, 0.00, 0.00
+stand_attack_3 = 1, 0.38, 0.35, 0.38, 0.30, 0.80, 0.35, 0.97, 0.35
+stand_eat_0 = 1, 0.11, 0.35, 0.23, 0.30, 0.79, 0.35, 0.93, 0.35
+stand_idle_dmg_1 = 1, 0.64, 0.35, 0.37, 0.30, 0.00, 0.00, 0.00, 0.00
+stand_idle_dmg_2 = 1, 0.00, 0.00, 0.18, 0.30, 0.00, 0.00, 0.00, 0.00
+stand_sit_down_0 = 1, 0.37, 0.30, 0.53, 0.30, 0.63, 0.35, 0.63, 0.35
+stand_threaten_0 = 1, 0.18, 0.35, 0.28, 0.30, 0.77, 0.35, 0.97, 0.35
+
+![m_boar_e]
+material = creatures\human
+
+![m_boar_step_params]
+stand_walk_fwd_0 = 5, 0.92, 1.0, 0.45, 0.7, 0.10, 1.0, 0.60, 1.0
+stand_walk_fwd_dmg_0 = 4, 0.01, 1.0, 0.00, 0.0, 0.10, 1.0, 0.62, 1.0
+stand_run_fwd_0 = 1, 0.35, 1.0, 0.55, 0.7, 0.01, 1.0, 0.90, 1.0
+stand_run_dmg_0 = 4, 0.30, 1.0, 0.00, 0.0, 0.16, 1.0, 0.01, 1.0
+stand_steal_0 = 2, 0.88, 0.2, 0.37, 0.2, 0.13, 0.2, 0.56, 0.2
+stand_drag_0 = 1, 0.01, 1.0, 0.52, 0.7, 0.01, 1.0, 0.34, 1.0
+stand_jump_left_0 = 1, 0.72, 1.0, 0.78, 0.7, 0.90, 1.0, 0.42, 1.0
+stand_jump_right_0 = 1, 0.76, 1.0, 0.66, 0.7, 0.78, 1.0, 0.72, 1.0
+stand_run_look_left_0 = 1, 0.40, 1.0, 0.55, 0.7, 0.01, 1.0, 0.90, 1.0
+stand_run_look_right_0 = 1, 0.40, 1.0, 0.55, 0.7, 0.01, 1.0, 0.90, 1.0
+stand_turn_ls_0 = 1, 0.35, 1.0, 0.70, 0.7, 0.25, 1.0, 0.62, 1.0
+stand_turn_rs_0 = 1, 0.80, 1.0, 0.55, 0.7, 0.45, 1.0, 0.50, 1.0
+lie_eat_0 = 1, 0.00, 0.0, 0.38, 0.7, 0.00, 0.0, 0.00, 0.0
+lie_stand_up_0 = 1, 0.31, 1.0, 0.87, 0.7, 0.94, 1.0, 0.74, 1.0
+lie_to_sleep_0 = 1, 0.62, 1.0, 0.97, 0.7, 0.00, 0.0, 0.00, 0.0
+stand_attack_0 = 1, 0.00, 0.0, 0.70, 0.7, 0.00, 0.0, 0.00, 0.0
+stand_attack_1 = 1, 0.90, 1.0, 0.53, 0.7, 0.00, 0.0, 0.00, 0.0
+stand_attack_2 = 1, 0.90, 1.0, 0.53, 0.7, 0.00, 0.0, 0.00, 0.0
+stand_attack_run_0 = 2, 0.40, 1.0, 0.55, 0.7, 0.01, 1.0, 0.90, 1.0
+stand_attack_run_left_0 = 2, 0.40, 1.0, 0.55, 0.7, 0.01, 1.0, 0.90, 1.0
+stand_attack_run_right_0 = 2, 0.40, 1.0, 0.55, 0.7, 0.01, 1.0, 0.90, 1.0
+stand_check_corpse_0 = 1, 0.67, 1.0, 0.53, 0.7, 0.92, 1.0, 0.00, 0.0
+stand_eat_1 = 1, 0.00, 0.0, 0.82, 0.7, 0.00, 0.0, 0.00, 0.0
+stand_idle_2 = 1, 0.32, 1.0, 0.24, 0.7, 0.91, 1.0, 0.73, 1.0
+stand_lie_down_0 = 1, 0.39, 1.0, 0.17, 0.7, 0.60, 1.0, 0.82, 1.0
+stand_scared_0 = 1, 0.06, 1.0, 0.90, 0.7, 0.05, 1.0, 0.88, 1.0
+
+![m_pseudodog_e]
+material = creatures\human
+
+![m_pseudodog_step_params]
+stand_walk_fwd_0 = 1, 0.65, 0.5, 0.55, 0.5, 0.45, 0.5, 0.30, 0.5
+stand_walk_dmg_0 = 5, 0.55, 0.5, 0.95, 0.5, 0.45, 0.5, 0.01, 0.5
+stand_run_0 = 1, 0.30, 0.5, 0.25, 0.5, 0.65, 0.5, 0.65, 0.5
+stand_run_dmg_0 = 5, 0.37, 0.5, 0.19, 0.5, 0.62, 0.5, 0.56, 0.5
+stand_drag_0 = 5, 0.45, 0.5, 0.95, 0.5, 0.27, 0.5, 0.77, 0.5
+stand_run_turn_left_0 = 1, 0.01, 0.5, 0.97, 0.5, 0.50, 0.5, 0.55, 0.5
+stand_run_turn_right_0 = 1, 0.01, 0.5, 0.97, 0.5, 0.50, 0.5, 0.55, 0.5
+stand_jump_left_0 = 1, 0.65, 0.5, 0.65, 0.5, 0.95, 0.5, 0.95, 0.5
+stand_jump_right_0 = 1, 0.65, 0.5, 0.65, 0.5, 0.95, 0.5, 0.95, 0.5
+stand_steal_0 = 1, 0.26, 0.2, 0.76, 0.2, 0.52, 0.2, 0.01, 0.2
+stand_turn_ls_0 = 1, 0.43, 0.5, 0.73, 0.5, 0.53, 0.5, 0.93, 0.5
+stand_turn_rs_0 = 1, 0.73, 0.5, 0.43, 0.5, 0.93, 0.5, 0.53, 0.5
+lie_to_sleep_0 = 1, 0.52, 0.5, 0.00, 0.0, 0.00, 0.0, 0.00, 0.0
+lie_to_stand_up_0 = 1, 0.32, 0.5, 0.52, 0.5, 0.72, 0.5, 0.82, 0.5
+run_jamp_0 = 1, 0.30, 0.5, 0.20, 0.5, 0.65, 0.5, 0.65, 0.5
+run_jamp_1 = 1, 0.30, 0.5, 0.20, 0.5, 0.65, 0.5, 0.65, 0.5
+run_jamp_2 = 1, 0.01, 0.5, 0.17, 0.5, 0.50, 0.5, 0.61, 0.5
+sit_idle_1 = 1, 0.76, 0.5, 0.00, 0.0, 0.80, 0.5, 0.00, 0.0
+sit_lie_down_0 = 1, 0.88, 0.5, 0.46, 0.5, 0.00, 0.0, 0.00, 0.0
+sit_stand_up_0 = 1, 0.00, 0.0, 0.00, 0.0, 0.32, 0.5, 0.52, 0.5
+stand_check_corpse_0 = 1, 0.97, 0.5, 0.00, 0.0, 0.84, 0.5, 0.00, 0.0
+stand_attack = 1, 0.97, 0.5, 0.00, 0.0, 0.00, 0.0, 0.00, 0.0
+stand_idle_1 = 1, 0.97, 0.5, 0.00, 0.0, 0.00, 0.0, 0.00, 0.0
+stand_idle_scared_0 = 1, 0.27, 0.5, 0.40, 0.5, 0.71, 0.5, 0.95, 0.5
+stand_idle_threaten_0 = 2, 0.24, 0.5, 0.42, 0.5, 0.77, 0.5, 0.90, 0.5
+stand_sit_down_0 = 1, 0.35, 0.5, 0.35, 0.5, 0.28, 0.5, 0.52, 0.5
+stand_sniff_0 = 1, 0.19, 0.5, 0.92, 0.5, 0.00, 0.0, 0.00, 0.0
+
+![m_gigant_e]
+sound_threaten_hit = footsies\giant\clap_1
+HugeKick_Particles = explosions\explosion_04
+
+![m_gigant_step_params]
+stand_walk_fwd_0 = 1, 0.10, 1.0, 0.60, 1.0
+stand_walk_fwd_dmg_0 = 1, 0.58, 1.0, 0.01, 1.0
+stand_run_fwd_0 = 1, 0.01, 1.0, 0.53, 1.0
+stand_run_dmg_0 = 1, 0.96, 1.0, 0.36, 1.0
+stand_steal_0 = 1, 0.87, 0.2, 0.37, 0.2
+stand_run_look_left_0 = 1, 0.01, 1.0, 0.53, 1.0
+stand_run_look_right_0 = 1, 0.01, 1.0, 0.53, 1.0
+stand_turn_ls_0 = 1, 0.53, 1.0, 0.97, 1.0
+stand_turn_rs_0 = 1, 0.97, 1.0, 0.53, 1.0
+jump_attack_0 = 1, 0.01, 1.0, 0.55, 1.0
+jump_attack_1 = 1, 0.73, 1.0, 0.00, 0.0
+jump_attack_2 = 2, 0.01, 1.0, 0.50, 1.0
+lie_to_sleep_0 = 1, 0.53, 1.0, 0.89, 1.0
+run_jamp_0 = 3, 0.01, 1.0, 0.44, 1.0
+stand_attack_0 = 1, 0.46, 1.0, 0.73, 1.0
+stand_attack_1 = 1, 0.46, 1.0, 0.73, 1.0
+stand_attack_2 = 1, 0.46, 1.0, 0.73, 1.0
+stand_attack_run_0 = 1, 0.01, 1.0, 0.57, 1.0
+stand_check_corpse_0 = 1, 0.00, 0.0, 0.91, 1.0
+stand_idle_0 = 1, 0.81, 1.0, 0.70, 1.0
+stand_lie_down_0 = 1, 0.70, 1.0, 0.91, 1.0
+stand_look_around_0 = 1, 0.81, 1.0, 0.47, 1.0
+stand_scared_0 = 2, 0.01, 1.0, 0.97, 1.0
+stand_sit_down_0 = 1, 0.50, 1.0, 0.84, 1.0
+
+![m_snork_e]
+material = creatures\human
+
+![m_snork_step_params]
+stand_walk_fwd_0 = 1, 0.40, 1.0, 0.97, 1.0, 0.42, 1.0, 0.93, 1.0
+stand_walk_damaged_0 = 1, 0.38, 1.0, 0.62, 1.0, 0.32, 1.0, 0.00, 0.0
+stand_run_0 = 1, 0.77, 1.0, 0.70, 1.0, 0.47, 1.0, 0.60, 1.0
+stand_run_damaged_0 = 1, 0.87, 1.0, 0.57, 1.0, 0.30, 1.0, 0.00, 0.0
+stand_steal_0 = 3, 0.53, 1.0, 0.01, 1.0, 0.40, 1.0, 0.90, 1.0
+stand_drag_0 = 1, 0.00, 0.0, 0.00, 0.0, 1.00, 1.0, 0.95, 1.0
+stand_run_look_left_0 = 1, 0.77, 1.0, 0.70, 1.0, 0.47, 1.0, 0.60, 1.0
+stand_run_look_right_0 = 1, 0.77, 1.0, 0.70, 1.0, 0.47, 1.0, 0.60, 1.0
+stand_turn_ls_0 = 1, 0.85, 1.0, 0.95, 1.0, 0.80, 1.0, 0.80, 1.0
+stand_turn_rs_0 = 1, 0.80, 1.0, 0.90, 1.0, 0.80, 1.0, 0.80, 1.0
+stand_attack_0 = 1, 0.95, 1.0, 0.00, 0.0, 0.83, 1.0, 0.00, 0.0
+stand_attack_1 = 1, 0.30, 1.0, 0.89, 1.0, 0.97, 1.0, 0.00, 0.0
+stand_attack_2_1 = 1, 0.97, 1.0, 0.97, 1.0, 0.22, 1.0, 0.97, 1.0
+stand_attack_2_2 = 1, 0.97, 1.0, 0.97, 1.0, 0.22, 1.0, 0.97, 1.0
+stand_run_attack_left_0 = 1, 0.97, 1.0, 0.97, 1.0, 0.22, 1.0, 0.97, 1.0
+stand_run_attack_right_0 = 1, 0.97, 1.0, 0.97, 1.0, 0.22, 1.0, 0.97, 1.0
+stand_check_corpse_0 = 1, 0.23, 1.0, 0.86, 1.0, 0.96, 1.0, 0.16, 1.0
+stand_look_around_0 = 1, 0.09, 1.0, 0.05, 1.0, 0.54, 1.0, 0.64, 1.0
+stand_scared_0 = 1, 0.05, 1.0, 0.09, 1.0, 0.90, 1.0, 0.97, 1.0
+stand_threaten_0 = 1, 0.50, 1.0, 1.00, 1.0, 0.81, 1.0, 0.07, 1.0
+
+![m_tushkano_e]
+material = creatures\human
+
+![m_tushkano_step_params]
+stand_walk_fwd_0 = 1, 0.01, 0.1, 0.01, 0.1, 0.63, 0.2, 0.63, 0.2
+stand_walk_fwd_1 = 1, 0.14, 0.1, 0.66, 0.1, 0.12, 0.2, 0.66, 0.2
+stand_walk_fwd_dmg_0 = 1, 0.00, 0.0, 0.01, 0.1, 0.50, 0.2, 0.63, 0.2
+stand_run_0 = 1, 0.31, 0.1, 0.44, 0.1, 0.97, 0.2, 0.44, 0.2
+stand_run_1 = 1, 0.00, 0.0, 0.00, 0.0, 0.97, 0.2, 0.44, 0.2
+stand_ran_dmg_0 = 1, 0.00, 0.0, 0.36, 0.1, 0.12, 0.2, 0.01, 0.2
+stand_jump_turn_left_0 = 1, 0.00, 0.0, 0.00, 0.0, 0.70, 0.2, 0.70, 0.2
+stand_jump_turn_right_0 = 1, 0.00, 0.0, 0.00, 0.0, 0.70, 0.2, 0.70, 0.2
+stand_turn_left_0 = 1, 0.00, 0.0, 0.00, 0.0, 0.01, 0.2, 0.50, 0.2
+stand_turn_right_0 = 1, 0.00, 0.0, 0.00, 0.0, 0.50, 0.2, 0.01, 0.2
+sleep_stand_up_0 = 1, 0.00, 0.0, 0.00, 0.0, 0.80, 0.2, 0.80, 0.2
+stand_attack_0 = 1, 0.00, 0.0, 0.00, 0.0, 0.78, 0.2, 0.78, 0.2
+stand_attack_1 = 1, 0.00, 0.0, 0.00, 0.0, 0.78, 0.2, 0.78, 0.2
+stand_attack_2 = 1, 0.00, 0.0, 0.00, 0.0, 0.77, 0.2, 0.70, 0.2
+stand_check_corpse_0 = 1, 0.32, 0.1, 0.78, 0.1, 0.30, 0.2, 0.96, 0.2
+stand_eat_0 = 1, 0.00, 0.0, 0.33, 0.1, 0.00, 0.0, 0.00, 0.0
+stand_scared_0 = 1, 0.04, 0.1, 0.04, 0.1, 0.97, 0.2, 0.97, 0.2
+stand_to_sleep_0 = 1, 0.52, 0.1, 0.52, 0.1, 0.80, 0.2, 0.40, 0.2
+
+![m_chimera_e]
+material = creatures\human
+
+![m_chimera_step_params]
+stand_walk_fwd_0 = 6, 0.53, 0.5, 0.01, 0.3, 0.53, 0.3, 0.01, 0.5
+stand_walk_fwd_dmg_0 = 6, 0.63, 0.5, 0.96, 0.3, 0.36, 0.3, 0.97, 0.2
+stand_run_fwd_0 = 5, 0.15, 0.5, 0.25, 0.2, 0.01, 0.2, 0.90, 0.5
+stand_run_dmg_0 = 5, 0.15, 0.5, 0.40, 0.2, 0.01, 0.2, 0.01, 0.0
+stand_drag_0 = 3, 0.52, 0.5, 0.97, 0.3, 0.62, 0.3, 0.14, 0.5
+stand_steal_0 = 3, 0.18, 0.2, 0.68, 0.2, 0.15, 0.2, 0.68, 0.2
+stand_run_look_left_0 = 1, 0.40, 0.5, 0.55, 0.3, 0.01, 1.0, 0.90, 0.5
+stand_run_look_right_0 = 1, 0.40, 0.5, 0.55, 0.3, 0.01, 1.0, 0.90, 0.5
+stand_turn_ls_0 = 1, 0.30, 0.5, 0.66, 0.3, 0.30, 0.3, 0.66, 0.5
+stand_turn_rs_0 = 1, 0.66, 0.5, 0.40, 0.3, 0.56, 0.3, 0.30, 0.5
+jump_attack_1 = 4, 0.05, 0.5, 0.10, 0.3, 0.79, 0.3, 0.95, 0.5
+jump_attack_2 = 4, 0.05, 0.5, 0.10, 0.3, 0.79, 0.3, 0.95, 0.5
+lie_idle_0 = 1, 0.93, 0.5, 0.59, 0.3, 0.00, 0.0, 0.00, 0.0
+lie_sit_up_0 = 1, 0.71, 0.5, 0.35, 0.3, 0.00, 0.0, 0.00, 0.0
+sit_idle_1 = 1, 0.00, 0.0, 0.00, 0.0, 0.00, 0.0, 0.83, 0.5
+sit_sleep_down_0 = 1, 0.88, 0.5, 0.53, 0.3, 0.00, 0.0, 0.88, 0.5
+sleep_lie_up_0 = 1, 0.26, 0.5, 0.26, 0.3, 0.00, 0.0, 0.00, 0.0
+stand_attack_0 = 1, 0.63, 0.5, 0.00, 0.0, 0.00, 0.0, 0.00, 0.0
+stand_attack_1 = 1, 0.70, 0.5, 0.97, 0.3, 0.57, 0.3, 0.87, 0.5
+stand_run_attack_0 = 1, 0.80, 0.5, 0.75, 0.3, 0.55, 0.3, 0.40, 0.5
+stand_check_corpse_0 = 1, 0.00, 0.0, 0.83, 0.3, 0.00, 0.0, 0.00, 0.0
+stand_eat_1 = 1, 0.67, 0.5, 0.00, 0.0, 0.00, 0.0, 0.00, 0.0
+stand_eat_2 = 1, 0.00, 0.0, 0.00, 0.0, 0.21, 0.3, 0.74, 0.5
+stand_eat_to_drag_0 = 1, 0.53, 0.5, 0.80, 0.3, 0.53, 0.3, 0.90, 0.5
+stand_idle_0 = 1, 0.00, 0.0, 0.84, 0.3, 0.00, 0.0, 0.00, 0.0
+stand_idle_1 = 1, 0.53, 0.5, 0.79, 0.3, 0.00, 0.0, 0.00, 0.0
+stand_idle_2 = 1, 0.20, 0.5, 0.59, 0.3, 0.67, 1.0, 0.97, 0.5
+stand_sit_down_0 = 1, 0.85, 0.5, 0.00, 0.0, 0.57, 1.0, 0.27, 0.5
+!stand_walk_0
+
+![m_burer_e]
+material = creatures\human
+
+![m_burer_step_params]
+stand_walk_fwd_0 = 5, 0.01, 0.5, 0.52, 0.4
+stand_walk_fwd_dmg_0 = 4, 0.01, 0.5, 0.52, 0.4
+stand_run_fwd_0 = 5, 0.14, 0.5, 0.63, 0.4
+stand_run_dmg_0 = 5, 0.17, 0.5, 0.65, 0.4
+stand_attack_0 = 5, 0.17, 0.5, 0.65, 0.4
+stand_stamina_attack_0 = 5, 0.17, 0.5, 0.65, 0.4
+stand_steal_0 = 5, 0.95, 0.2, 0.43, 0.2
+stand_turn_ls_0 = 1, 0.56, 0.5, 0.82, 0.4
+stand_turn_rs_0 = 1, 0.76, 0.5, 0.52, 0.4
+sit_stand_up_0 = 1, 0.28, 0.5, 0.48, 0.4
+stand_gravi_0 = 1, 0.67, 0.5, 0.00, 0.0
+stand_gravi_2 = 1, 0.97, 0.5, 0.00, 0.0
+stand_sit_down_0 = 1, 0.68, 0.5, 0.50, 0.4
+
+![zombie_protections]
+material = creatures\human
+
+![m_zombie_step_params]
+stand_walk_fwd_0 = 3, 0.01, 0.3, 0.52, 0.4
+stand_walk_fwd_1 = 3, 0.01, 0.3, 0.57, 0.4
+stand_walk_dmg_0 = 1, 0.01, 0.3, 0.25, 0.4
+stand_run_0 = 3, 0.01, 0.3, 0.60, 0.3
+stand_run_1 = 3, 0.01, 0.3, 0.60, 0.3
+stand_run_2 = 2, 0.01, 0.3, 0.60, 0.3
+stand_run_dmg_0 = 1, 0.01, 0.3, 0.25, 0.3
+stand_turn_ls_0 = 1, 0.42, 0.3, 0.82, 0.4
+stand_turn_rs_0 = 1, 0.72, 0.3, 0.42, 0.4
+stand_attack_0 = 3, 0.01, 0.3, 0.52, 0.4
+stand_attack_1 = 3, 0.01, 0.3, 0.52, 0.4
+stand_attack_2 = 3, 0.01, 0.3, 0.52, 0.4
+stand_attack_3 = 3, 0.01, 0.3, 0.52, 0.4
+!stand_run_fwd_0
+
+![zombie_weak]
+material = creatures\human
+
+![fracture_normal]
+material = creatures\human
+
+![fracture_normal_step_params]
+stand_walk_fwd_0 = 1, 0.00, 0.0, 0.00, 0.0, 0.52, 0.7, 0.01, 0.4
+stand_walk_fwd_dmg_0 = 1, 0.00, 0.0, 0.82, 0.4, 0.01, 0.7, 0.42, 0.4
+stand_run_0 = 1, 0.60, 0.7, 0.36, 0.3, 0.32, 0.7, 0.12, 0.3
+stand_run_dmg_0 = 1, 0.00, 0.0, 0.10, 0.3, 0.10, 0.7, 0.80, 0.3
+stand_crawl_0 = 1, 0.56, 0.2, 0.01, 0.2, 0.53, 0.2, 0.01, 0.2
+stand_drag_0 = 1, 0.01, 0.7, 0.00, 0.0, 0.01, 0.7, 0.52, 0.4
+stand_run_look_left_0 = 1, 0.40, 0.7, 0.16, 0.3, 0.12, 0.7, 0.92, 0.3
+stand_run_look_right_0 = 1, 0.40, 0.7, 0.16, 0.3, 0.12, 0.7, 0.92, 0.3
+stand_turn_ls_0 = 1, 0.00, 0.0, 0.00, 0.0, 0.80, 0.7, 0.40, 0.3
+stand_turn_rs_0 = 1, 0.00, 0.0, 0.00, 0.0, 0.40, 0.7, 0.80, 0.3
+eat_stand_up_0 = 1, 0.60, 0.7, 0.40, 0.4, 0.90, 0.7, 0.97, 0.4
+sit_stand_up_0 = 1, 0.22, 0.7, 0.38, 0.4, 0.82, 0.7, 0.97, 0.4
+stand_attack_0 = 1, 0.97, 0.7, 0.90, 0.4, 0.48, 0.7, 0.97, 0.4
+stand_attack_1 = 1, 0.97, 0.7, 0.90, 0.4, 0.48, 0.7, 0.97, 0.4
+stand_attack_2 = 1, 0.97, 0.7, 0.90, 0.4, 0.48, 0.7, 0.97, 0.4
+stand_attack_3 = 1, 0.78, 0.7, 0.97, 0.4, 0.00, 0.0, 0.00, 0.0
+stand_attack_to_stand_idle_0 = 1, 0.00, 0.0, 0.00, 0.0, 0.44, 0.7, 0.97, 0.4
+stand_check_corpse_0 = 1, 0.17, 0.7, 0.25, 0.4, 0.38, 0.7, 0.00, 0.0
+stand_idle_1 = 1, 0.06, 0.7, 0.00, 0.0, 0.00, 0.0, 0.63, 0.4
+stand_idle_2 = 1, 0.44, 0.7, 0.87, 0.4, 0.25, 0.7, 0.80, 0.4
+stand_idle_to_stand_attack_0 = 1, 0.85, 0.7, 0.97, 0.4, 0.00, 0.0, 0.97, 0.4
+stand_run_attack_0 = 1, 0.00, 0.0, 0.16, 0.4, 0.12, 0.7, 0.92, 0.4
+stand_sit_down_0 = 1, 0.85, 0.7, 0.53, 0.4, 0.43, 0.7, 0.27, 0.4
+stand_threaten_0 = 1, 0.79, 0.7, 0.77, 0.4, 0.08, 0.7, 0.97, 0.4
+stand_to_eat_0 = 1, 0.74, 0.7, 0.97, 0.4, 0.53, 0.7, 0.00, 0.0
+!stand_run_fwd_0
+
+![cat_test]
+material = creatures\human
+
+![cat_step_params]
+stand_walk_fwd_0 = 3, 0.70, 1.0, 0.25, 0.7, 0.90, 1.0, 0.40, 1.0
+stand_walk_dmg_0 = 3, 0.80, 1.0, 0.25, 0.7, 0.70, 1.0, 0.20, 0.5
+stand_run_fwd_0 = 1, 0.97, 1.0, 0.25, 0.7, 0.50, 1.0, 0.40, 1.0
+stand_run_dmg_0 = 4, 0.50, 1.0, 0.20, 0.7, 0.50, 1.0, 0.70, 0.0
+stand_steal_0 = 1, 0.70, 0.2, 0.27, 0.2, 0.80, 0.2, 0.40, 0.2
+stand_drag_0 = 1, 0.70, 1.0, 0.47, 0.7, 0.20, 1.0, 0.40, 1.0
+stand_jump_ls_0 = 1, 0.60, 1.0, 0.68, 0.7, 0.70, 1.0, 0.60, 1.0
+stand_jump_rs_0 = 1, 0.60, 1.0, 0.60, 0.7, 0.70, 1.0, 0.80, 1.0
+stand_run_look_left_0 = 1, 0.97, 1.0, 0.24, 0.7, 0.60, 1.0, 0.40, 1.0
+stand_run_look_right_0 = 1, 0.97, 1.0, 0.20, 0.7, 0.40, 1.0, 0.50, 1.0
+stand_turn_ls_0 = 1, 0.30, 1.0, 0.60, 0.7, 0.70, 1.0, 0.01, 1.0
+stand_turn_rs_0 = 1, 0.60, 1.0, 0.40, 0.7, 0.01, 1.0, 0.80, 1.0
+jump_attack_2 = 1, 0.60, 1.0, 0.68, 0.7, 0.70, 1.0, 0.60, 1.0
+stand_run_attack_0 = 1, 0.46, 1.0, 0.86, 0.7, 0.93, 1.0, 0.97, 1.0
+lie_idle_0 = 1, 0.00, 0.0, 0.97, 0.7, 0.00, 0.0, 0.00, 0.0
+lie_stand_up_0 = 1, 0.97, 1.0, 0.72, 0.7, 0.32, 1.0, 0.42, 1.0
+sleep_to_lie_0 = 1, 0.50, 1.0, 0.97, 0.7, 0.00, 0.0, 0.97, 1.0
+stand_attack_0 = 1, 0.46, 1.0, 0.86, 0.7, 0.93, 1.0, 0.97, 1.0
+stand_attack_1 = 1, 0.83, 1.0, 0.63, 0.7, 0.00, 0.0, 0.00, 0.0
+stand_attack_rat_0 = 1, 0.00, 0.0, 0.97, 0.7, 0.00, 0.0, 0.00, 0.0
+stand_check_corpse_0 = 1, 0.57, 1.0, 0.97, 0.7, 0.00, 0.0, 0.00, 0.0
+stand_eat_0 = 1, 0.10, 1.0, 0.18, 0.7, 0.89, 1.0, 0.77, 1.0
+stand_lie_down_0 = 1, 0.60, 1.0, 0.97, 0.7, 0.34, 1.0, 0.34, 1.0
+stand_look_around_0 = 1, 0.12, 1.0, 0.85, 0.7, 0.97, 1.0, 0.00, 0.0
+stand_threaten_0 = 1, 0.23, 1.0, 0.97, 0.7, 0.00, 0.0, 0.00, 0.0
+!stand_run_0
+
+![m_rat_e]
+material = creatures\human
+
+![rat_step_params]
+stand_walk_fwd_0 = 1, 0.01, 0.1, 0.01, 0.1, 0.63, 0.2, 0.63, 0.2
+stand_walk_fwd_1 = 1, 0.14, 0.1, 0.66, 0.1, 0.12, 0.2, 0.66, 0.2
+stand_walk_fwd_dmg_0 = 1, 0.00, 0.0, 0.01, 0.1, 0.50, 0.2, 0.63, 0.2
+stand_run_0 = 1, 0.31, 0.1, 0.44, 0.1, 0.97, 0.2, 0.44, 0.2
+stand_run_1 = 1, 0.00, 0.0, 0.00, 0.0, 0.97, 0.2, 0.44, 0.2
+stand_ran_dmg_0 = 1, 0.00, 0.0, 0.36, 0.1, 0.12, 0.2, 0.01, 0.2
+stand_jump_turn_left_0 = 1, 0.00, 0.0, 0.00, 0.0, 0.70, 0.2, 0.70, 0.2
+stand_jump_turn_right_0 = 1, 0.00, 0.0, 0.00, 0.0, 0.70, 0.2, 0.70, 0.2
+stand_turn_left_0 = 1, 0.00, 0.0, 0.00, 0.0, 0.01, 0.2, 0.50, 0.2
+stand_turn_right_0 = 1, 0.00, 0.0, 0.00, 0.0, 0.50, 0.2, 0.01, 0.2
+sleep_stand_up_0 = 1, 0.00, 0.0, 0.00, 0.0, 0.80, 0.2, 0.80, 0.2
+stand_attack_0 = 1, 0.00, 0.0, 0.00, 0.0, 0.78, 0.2, 0.78, 0.2
+stand_attack_1 = 1, 0.00, 0.0, 0.00, 0.0, 0.78, 0.2, 0.78, 0.2
+stand_attack_2 = 1, 0.00, 0.0, 0.00, 0.0, 0.77, 0.2, 0.70, 0.2
+stand_check_corpse_0 = 1, 0.32, 0.1, 0.78, 0.1, 0.30, 0.2, 0.96, 0.2
+stand_eat_0 = 1, 0.00, 0.0, 0.33, 0.1, 0.00, 0.0, 0.00, 0.0
+stand_scared_0 = 1, 0.04, 0.1, 0.04, 0.1, 0.97, 0.2, 0.97, 0.2
+stand_to_sleep_0 = 1, 0.52, 0.1, 0.52, 0.1, 0.80, 0.2, 0.40, 0.2
+
+![m_lurker_e]
+material = creatures\human
+
+![m_lurker_step_params]
+stand_walk_fwd_0 = 6, 0.53, 0.5, 0.01, 0.3, 0.53, 0.3, 0.01, 0.5
+stand_walk_fwd_dmg_0 = 6, 0.63, 0.5, 0.96, 0.3, 0.36, 0.3, 0.97, 0.2
+stand_run_fwd_0 = 5, 0.15, 0.5, 0.25, 0.2, 0.01, 0.2, 0.90, 0.5
+stand_run_dmg_0 = 5, 0.15, 0.5, 0.40, 0.2, 0.01, 0.2, 0.01, 0.0
+stand_drag_0 = 3, 0.52, 0.5, 0.97, 0.3, 0.62, 0.3, 0.14, 0.5
+stand_steal_0 = 3, 0.18, 0.2, 0.68, 0.2, 0.15, 0.2, 0.68, 0.2
+stand_run_look_left_0 = 1, 0.40, 0.5, 0.55, 0.3, 0.01, 1.0, 0.90, 0.5
+stand_run_look_right_0 = 1, 0.40, 0.5, 0.55, 0.3, 0.01, 1.0, 0.90, 0.5
+stand_turn_ls_0 = 1, 0.30, 0.5, 0.66, 0.3, 0.30, 0.3, 0.66, 0.5
+stand_turn_rs_0 = 1, 0.66, 0.5, 0.40, 0.3, 0.56, 0.3, 0.30, 0.5
+jump_attack_1 = 4, 0.05, 0.5, 0.10, 0.3, 0.79, 0.3, 0.95, 0.5
+jump_attack_2 = 4, 0.05, 0.5, 0.10, 0.3, 0.79, 0.3, 0.95, 0.5
+lie_idle_0 = 1, 0.93, 0.5, 0.59, 0.3, 0.00, 0.0, 0.00, 0.0
+lie_sit_up_0 = 1, 0.71, 0.5, 0.35, 0.3, 0.00, 0.0, 0.00, 0.0
+sit_idle_1 = 1, 0.00, 0.0, 0.00, 0.0, 0.00, 0.0, 0.83, 0.5
+sit_sleep_down_0 = 1, 0.88, 0.5, 0.53, 0.3, 0.00, 0.0, 0.88, 0.5
+sleep_lie_up_0 = 1, 0.26, 0.5, 0.26, 0.3, 0.00, 0.0, 0.00, 0.0
+stand_attack_0 = 1, 0.63, 0.5, 0.00, 0.0, 0.00, 0.0, 0.00, 0.0
+stand_attack_1 = 1, 0.70, 0.5, 0.97, 0.3, 0.57, 0.3, 0.87, 0.5
+stand_run_attack_0 = 1, 0.80, 0.5, 0.75, 0.3, 0.55, 0.3, 0.40, 0.5
+stand_check_corpse_0 = 1, 0.00, 0.0, 0.83, 0.3, 0.00, 0.0, 0.00, 0.0
+stand_eat_1 = 1, 0.67, 0.5, 0.00, 0.0, 0.00, 0.0, 0.00, 0.0
+stand_eat_2 = 1, 0.00, 0.0, 0.00, 0.0, 0.21, 0.3, 0.74, 0.5
+stand_eat_to_drag_0 = 1, 0.53, 0.5, 0.80, 0.3, 0.53, 0.3, 0.90, 0.5
+stand_idle_0 = 1, 0.00, 0.0, 0.84, 0.3, 0.00, 0.0, 0.00, 0.0
+stand_idle_1 = 1, 0.53, 0.5, 0.79, 0.3, 0.00, 0.0, 0.00, 0.0
+stand_idle_2 = 1, 0.20, 0.5, 0.59, 0.3, 0.67, 1.0, 0.97, 0.5
+stand_sit_down_0 = 1, 0.85, 0.5, 0.00, 0.0, 0.57, 1.0, 0.27, 0.5
+!stand_walk_0
+
diff --git a/mods/Footsies/gamedata/sounds/footsies/giant/clap_1.ogg b/mods/Footsies/gamedata/sounds/footsies/giant/clap_1.ogg
new file mode 100644
index 00000000..af88427d
--- /dev/null
+++ b/mods/Footsies/gamedata/sounds/footsies/giant/clap_1.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:c75ed68e6f98ba73988fefdbb98e3dbc94797305391f0c4bfed0a70ca8df0a0b
+size 165758
diff --git a/mods/Footsies/gamedata/sounds/material/hoof/step/hoof_ground_1.ogg b/mods/Footsies/gamedata/sounds/material/hoof/step/hoof_ground_1.ogg
new file mode 100644
index 00000000..c5e662a6
--- /dev/null
+++ b/mods/Footsies/gamedata/sounds/material/hoof/step/hoof_ground_1.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a4c0e8b097fcf226dbf1303c9f332207ea3bf68bec850400f9e1bf2f4f6aed28
+size 6328
diff --git a/mods/Footsies/gamedata/sounds/material/hoof/step/hoof_ground_2.ogg b/mods/Footsies/gamedata/sounds/material/hoof/step/hoof_ground_2.ogg
new file mode 100644
index 00000000..6e81c137
--- /dev/null
+++ b/mods/Footsies/gamedata/sounds/material/hoof/step/hoof_ground_2.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:83b66897154001beffcf5753b7270d712f366b87f032c0583a41f2167c5b7abb
+size 6635
diff --git a/mods/Footsies/gamedata/sounds/material/hoof/step/hoof_ground_3.ogg b/mods/Footsies/gamedata/sounds/material/hoof/step/hoof_ground_3.ogg
new file mode 100644
index 00000000..86f298f2
--- /dev/null
+++ b/mods/Footsies/gamedata/sounds/material/hoof/step/hoof_ground_3.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:5acefc77faf21afd832ee0de229ce1a3c9769a91a584dc18be9d68a8fc622b9d
+size 6523
diff --git a/mods/Footsies/gamedata/sounds/material/hoof/step/hoof_ground_4.ogg b/mods/Footsies/gamedata/sounds/material/hoof/step/hoof_ground_4.ogg
new file mode 100644
index 00000000..ecc3a1ed
--- /dev/null
+++ b/mods/Footsies/gamedata/sounds/material/hoof/step/hoof_ground_4.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a2f2ae61307d3d1fd6dc5dda4e843769aa397450d04eef60dd971bf3824b1645
+size 6680
diff --git a/mods/Footsies/gamedata/sounds/material/human/step/asphalt01gr.ogg b/mods/Footsies/gamedata/sounds/material/human/step/asphalt01gr.ogg
new file mode 100644
index 00000000..5cbb8ae2
--- /dev/null
+++ b/mods/Footsies/gamedata/sounds/material/human/step/asphalt01gr.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:8532a969f196b84df5c26135a4a23219fbfc246e235193688a2db065fe5612f9
+size 5516
diff --git a/mods/Footsies/gamedata/sounds/material/human/step/asphalt02gr.ogg b/mods/Footsies/gamedata/sounds/material/human/step/asphalt02gr.ogg
new file mode 100644
index 00000000..490c4496
--- /dev/null
+++ b/mods/Footsies/gamedata/sounds/material/human/step/asphalt02gr.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:65006bd7662ac87b5d1f7deeedad084145983bf09aca46b99558820c9d6c2f6f
+size 5698
diff --git a/mods/Footsies/gamedata/sounds/material/human/step/bush01gr.ogg b/mods/Footsies/gamedata/sounds/material/human/step/bush01gr.ogg
new file mode 100644
index 00000000..98a747d2
--- /dev/null
+++ b/mods/Footsies/gamedata/sounds/material/human/step/bush01gr.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:2e6f489e44db1f020fdd045a2357a7055da509725f628fb4fabb75b838637340
+size 8626
diff --git a/mods/Footsies/gamedata/sounds/material/human/step/bush02gr.ogg b/mods/Footsies/gamedata/sounds/material/human/step/bush02gr.ogg
new file mode 100644
index 00000000..98a747d2
--- /dev/null
+++ b/mods/Footsies/gamedata/sounds/material/human/step/bush02gr.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:2e6f489e44db1f020fdd045a2357a7055da509725f628fb4fabb75b838637340
+size 8626
diff --git a/mods/Footsies/gamedata/sounds/material/human/step/bush03gr.ogg b/mods/Footsies/gamedata/sounds/material/human/step/bush03gr.ogg
new file mode 100644
index 00000000..98a747d2
--- /dev/null
+++ b/mods/Footsies/gamedata/sounds/material/human/step/bush03gr.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:2e6f489e44db1f020fdd045a2357a7055da509725f628fb4fabb75b838637340
+size 8626
diff --git a/mods/Footsies/gamedata/sounds/material/human/step/bush04gr.ogg b/mods/Footsies/gamedata/sounds/material/human/step/bush04gr.ogg
new file mode 100644
index 00000000..d5da3ffe
--- /dev/null
+++ b/mods/Footsies/gamedata/sounds/material/human/step/bush04gr.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:11881346e83e7f10aa1a6508e114b2f8dfa39cfbf1ae069b30577628b1099de7
+size 10261
diff --git a/mods/Footsies/gamedata/sounds/material/human/step/bush05gr.ogg b/mods/Footsies/gamedata/sounds/material/human/step/bush05gr.ogg
new file mode 100644
index 00000000..d5da3ffe
--- /dev/null
+++ b/mods/Footsies/gamedata/sounds/material/human/step/bush05gr.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:11881346e83e7f10aa1a6508e114b2f8dfa39cfbf1ae069b30577628b1099de7
+size 10261
diff --git a/mods/Footsies/gamedata/sounds/material/human/step/bush06gr.ogg b/mods/Footsies/gamedata/sounds/material/human/step/bush06gr.ogg
new file mode 100644
index 00000000..d5da3ffe
--- /dev/null
+++ b/mods/Footsies/gamedata/sounds/material/human/step/bush06gr.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:11881346e83e7f10aa1a6508e114b2f8dfa39cfbf1ae069b30577628b1099de7
+size 10261
diff --git a/mods/Footsies/gamedata/sounds/material/human/step/bushes1.ogg b/mods/Footsies/gamedata/sounds/material/human/step/bushes1.ogg
new file mode 100644
index 00000000..d01cdc15
--- /dev/null
+++ b/mods/Footsies/gamedata/sounds/material/human/step/bushes1.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:45e97da75370e92599a46e35cf122053c84039a81ad50e5deff0fd932c06d41a
+size 21099
diff --git a/mods/Footsies/gamedata/sounds/material/human/step/bushes2.ogg b/mods/Footsies/gamedata/sounds/material/human/step/bushes2.ogg
new file mode 100644
index 00000000..88dd877b
--- /dev/null
+++ b/mods/Footsies/gamedata/sounds/material/human/step/bushes2.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:423ebd8465129dab50ecf699964774b1b5579ed67d2a1da1d8a414f5361ffebf
+size 29669
diff --git a/mods/Footsies/gamedata/sounds/material/human/step/default1.ogg b/mods/Footsies/gamedata/sounds/material/human/step/default1.ogg
new file mode 100644
index 00000000..7b6e2361
--- /dev/null
+++ b/mods/Footsies/gamedata/sounds/material/human/step/default1.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:569833ded8dd242a423cdc63385b1d3a7dceceda6184a90b6de69c708e86c1ed
+size 19615
diff --git a/mods/Footsies/gamedata/sounds/material/human/step/default2.ogg b/mods/Footsies/gamedata/sounds/material/human/step/default2.ogg
new file mode 100644
index 00000000..6a7a90f0
--- /dev/null
+++ b/mods/Footsies/gamedata/sounds/material/human/step/default2.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:ea4c45d29374f105fb6579646f81368d767909339edd03dadc26d335e9e53a4b
+size 18259
diff --git a/mods/Footsies/gamedata/sounds/material/human/step/default3.ogg b/mods/Footsies/gamedata/sounds/material/human/step/default3.ogg
new file mode 100644
index 00000000..005dc2af
--- /dev/null
+++ b/mods/Footsies/gamedata/sounds/material/human/step/default3.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:61a5085a14497808fd133b470fb74f6600d6c46d8fe150cb122cc422a16a4e11
+size 20182
diff --git a/mods/Footsies/gamedata/sounds/material/human/step/default4.ogg b/mods/Footsies/gamedata/sounds/material/human/step/default4.ogg
new file mode 100644
index 00000000..36cbc0f3
--- /dev/null
+++ b/mods/Footsies/gamedata/sounds/material/human/step/default4.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:e0a4d7b1349d8e5865ddb2848b93b092ddfe9e3ae0c01902b34489f7d9d27afa
+size 18894
diff --git a/mods/Footsies/gamedata/sounds/material/human/step/dirt01gr.ogg b/mods/Footsies/gamedata/sounds/material/human/step/dirt01gr.ogg
new file mode 100644
index 00000000..b874a53f
--- /dev/null
+++ b/mods/Footsies/gamedata/sounds/material/human/step/dirt01gr.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:023a8daaf3032f5f359f1142aac42dfe9022b83bf2be0c7b4817eb4249f58fd7
+size 7999
diff --git a/mods/Footsies/gamedata/sounds/material/human/step/dirt02gr.ogg b/mods/Footsies/gamedata/sounds/material/human/step/dirt02gr.ogg
new file mode 100644
index 00000000..b82d3b83
--- /dev/null
+++ b/mods/Footsies/gamedata/sounds/material/human/step/dirt02gr.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:c0471208663ea2ad34e14516cd2d3a42baf830fed105f7ca57a56af6aa527c52
+size 7712
diff --git a/mods/Footsies/gamedata/sounds/material/human/step/earth01gr.ogg b/mods/Footsies/gamedata/sounds/material/human/step/earth01gr.ogg
new file mode 100644
index 00000000..f08e44d3
--- /dev/null
+++ b/mods/Footsies/gamedata/sounds/material/human/step/earth01gr.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:80b183ee8642f24da3b1b47d71f514c4f1d2cf2f0f0c29be51b159622ee73132
+size 5925
diff --git a/mods/Footsies/gamedata/sounds/material/human/step/earth02gr.ogg b/mods/Footsies/gamedata/sounds/material/human/step/earth02gr.ogg
new file mode 100644
index 00000000..a7963019
--- /dev/null
+++ b/mods/Footsies/gamedata/sounds/material/human/step/earth02gr.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:e9d3268fae87f73afed62f877eb0595e056b55ae73e64712af2504bf8f133e04
+size 5698
diff --git a/mods/Footsies/gamedata/sounds/material/human/step/earth1.ogg b/mods/Footsies/gamedata/sounds/material/human/step/earth1.ogg
new file mode 100644
index 00000000..affe5da0
--- /dev/null
+++ b/mods/Footsies/gamedata/sounds/material/human/step/earth1.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:325172fd4f08edc715a38174b9425cca75076c3ec72f3c628248e61643405ba9
+size 34573
diff --git a/mods/Footsies/gamedata/sounds/material/human/step/earth2.ogg b/mods/Footsies/gamedata/sounds/material/human/step/earth2.ogg
new file mode 100644
index 00000000..9ffdfb40
--- /dev/null
+++ b/mods/Footsies/gamedata/sounds/material/human/step/earth2.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:65bc882b1de1d65c00693129089584d0a041eb7615aa7473506e1ce8a5caf539
+size 14683
diff --git a/mods/Footsies/gamedata/sounds/material/human/step/earth3.ogg b/mods/Footsies/gamedata/sounds/material/human/step/earth3.ogg
new file mode 100644
index 00000000..d519cdaf
--- /dev/null
+++ b/mods/Footsies/gamedata/sounds/material/human/step/earth3.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a19e17524ba3e5cb25f33a0164cd5af6a63aa36aabd9176732ff04a6f804ba53
+size 30176
diff --git a/mods/Footsies/gamedata/sounds/material/human/step/earth4.ogg b/mods/Footsies/gamedata/sounds/material/human/step/earth4.ogg
new file mode 100644
index 00000000..2944f674
--- /dev/null
+++ b/mods/Footsies/gamedata/sounds/material/human/step/earth4.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d72f18676983816858d506eaf0be6352e766aa1df9445cf62c1010adecef9077
+size 14050
diff --git a/mods/Footsies/gamedata/sounds/material/human/step/grass01.ogg b/mods/Footsies/gamedata/sounds/material/human/step/grass01.ogg
new file mode 100644
index 00000000..08123c27
--- /dev/null
+++ b/mods/Footsies/gamedata/sounds/material/human/step/grass01.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:159e76b28225ab0d8e2767a755198aead0bb32884a2b556b8534ea82df536f38
+size 5710
diff --git a/mods/Footsies/gamedata/sounds/material/human/step/grass01gr.ogg b/mods/Footsies/gamedata/sounds/material/human/step/grass01gr.ogg
new file mode 100644
index 00000000..4731b526
--- /dev/null
+++ b/mods/Footsies/gamedata/sounds/material/human/step/grass01gr.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:c0408465574df93b1b4b71b31c07f47575be73948d244971f210a8f114e20d2f
+size 6410
diff --git a/mods/Footsies/gamedata/sounds/material/human/step/grass02.ogg b/mods/Footsies/gamedata/sounds/material/human/step/grass02.ogg
new file mode 100644
index 00000000..954485af
--- /dev/null
+++ b/mods/Footsies/gamedata/sounds/material/human/step/grass02.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:b7bf3ae37b394f44d335ca814833cc515cbbe4aef9759fc7b4fa0a7d29ccd6f3
+size 5884
diff --git a/mods/Footsies/gamedata/sounds/material/human/step/grass02gr.ogg b/mods/Footsies/gamedata/sounds/material/human/step/grass02gr.ogg
new file mode 100644
index 00000000..bda4c3fb
--- /dev/null
+++ b/mods/Footsies/gamedata/sounds/material/human/step/grass02gr.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:0b87d92ce380722ee9854fd872e6f4aa1c3ced22922d1582f70b7a4d5762e653
+size 6422
diff --git a/mods/Footsies/gamedata/sounds/material/human/step/grass03.ogg b/mods/Footsies/gamedata/sounds/material/human/step/grass03.ogg
new file mode 100644
index 00000000..a6593fd1
--- /dev/null
+++ b/mods/Footsies/gamedata/sounds/material/human/step/grass03.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:56cd6fb78cc8782764274d44ef1b8456133ce3ca883db7955f986a61312beec8
+size 6394
diff --git a/mods/Footsies/gamedata/sounds/material/human/step/grass04.ogg b/mods/Footsies/gamedata/sounds/material/human/step/grass04.ogg
new file mode 100644
index 00000000..0f85b87c
--- /dev/null
+++ b/mods/Footsies/gamedata/sounds/material/human/step/grass04.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:ec722d76996a98d5c0b5d34bd0e33938c841e3dfbcd1680d53360bfb039ad67d
+size 5701
diff --git a/mods/Footsies/gamedata/sounds/material/human/step/grass1.ogg b/mods/Footsies/gamedata/sounds/material/human/step/grass1.ogg
new file mode 100644
index 00000000..02ff8f8d
--- /dev/null
+++ b/mods/Footsies/gamedata/sounds/material/human/step/grass1.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:21b752d85469b673135d35f82c1f278a919e6cd3d72b4ebbe4105b43a5f524db
+size 26188
diff --git a/mods/Footsies/gamedata/sounds/material/human/step/grass1_org.ogg b/mods/Footsies/gamedata/sounds/material/human/step/grass1_org.ogg
new file mode 100644
index 00000000..f956e0fa
--- /dev/null
+++ b/mods/Footsies/gamedata/sounds/material/human/step/grass1_org.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:710477cd319c7e27a143d386e94d9727c473690a7bcc973851dff01162fe9ca2
+size 11425
diff --git a/mods/Footsies/gamedata/sounds/material/human/step/grass2.ogg b/mods/Footsies/gamedata/sounds/material/human/step/grass2.ogg
new file mode 100644
index 00000000..b784dbc8
--- /dev/null
+++ b/mods/Footsies/gamedata/sounds/material/human/step/grass2.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:147d5b56f1e6192daa666971bae68ea5d60fbb762389756876cd97be01f3180a
+size 26339
diff --git a/mods/Footsies/gamedata/sounds/material/human/step/grass2_org.ogg b/mods/Footsies/gamedata/sounds/material/human/step/grass2_org.ogg
new file mode 100644
index 00000000..defec2e2
--- /dev/null
+++ b/mods/Footsies/gamedata/sounds/material/human/step/grass2_org.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:1cc9b1d0704bd51e1c764a16496091b09dd5b7e945a24cf84b09ccf5b66b1afb
+size 13035
diff --git a/mods/Footsies/gamedata/sounds/material/human/step/grass3.ogg b/mods/Footsies/gamedata/sounds/material/human/step/grass3.ogg
new file mode 100644
index 00000000..f51c5dad
--- /dev/null
+++ b/mods/Footsies/gamedata/sounds/material/human/step/grass3.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:c4de9a0532f1b69b8341451aca89a6cabd206bb6c238b3f257d7565452ae52a6
+size 24155
diff --git a/mods/Footsies/gamedata/sounds/material/human/step/grass3_org.ogg b/mods/Footsies/gamedata/sounds/material/human/step/grass3_org.ogg
new file mode 100644
index 00000000..0cbbca41
--- /dev/null
+++ b/mods/Footsies/gamedata/sounds/material/human/step/grass3_org.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:da041f05eaa676c0e888ca6aa861ff937af72e203882a6e77bddcc69ad91716f
+size 12005
diff --git a/mods/Footsies/gamedata/sounds/material/human/step/grass4.ogg b/mods/Footsies/gamedata/sounds/material/human/step/grass4.ogg
new file mode 100644
index 00000000..890f6484
--- /dev/null
+++ b/mods/Footsies/gamedata/sounds/material/human/step/grass4.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:e7603985bf91fae1c259ec3b9671042a5a9c7e7804d812da614a2075cda085b7
+size 28613
diff --git a/mods/Footsies/gamedata/sounds/material/human/step/grass4_org.ogg b/mods/Footsies/gamedata/sounds/material/human/step/grass4_org.ogg
new file mode 100644
index 00000000..1f68d477
--- /dev/null
+++ b/mods/Footsies/gamedata/sounds/material/human/step/grass4_org.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:f7f63a3f9864650f75284133f06a3d7e7e94c3fe710a5d889c8e0e2607390e0d
+size 13772
diff --git a/mods/Footsies/gamedata/sounds/material/human/step/gravel01gr.ogg b/mods/Footsies/gamedata/sounds/material/human/step/gravel01gr.ogg
new file mode 100644
index 00000000..4494c637
--- /dev/null
+++ b/mods/Footsies/gamedata/sounds/material/human/step/gravel01gr.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:02da3b19f2645bc8fe941a9e4554c122c8c628703b38063af1cbf6654e1c6de7
+size 6841
diff --git a/mods/Footsies/gamedata/sounds/material/human/step/gravel02gr.ogg b/mods/Footsies/gamedata/sounds/material/human/step/gravel02gr.ogg
new file mode 100644
index 00000000..fea56f9a
--- /dev/null
+++ b/mods/Footsies/gamedata/sounds/material/human/step/gravel02gr.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:508cf4b7174973a5615501e7c0fd3977865272099174707d030dee97d85cf3ce
+size 6841
diff --git a/mods/Footsies/gamedata/sounds/material/human/step/gravel1.ogg b/mods/Footsies/gamedata/sounds/material/human/step/gravel1.ogg
new file mode 100644
index 00000000..f56da364
--- /dev/null
+++ b/mods/Footsies/gamedata/sounds/material/human/step/gravel1.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:4e0368fbd6cb432df6f3f2f76db4f8a647f5e3419817e17242587dde02571ff5
+size 15278
diff --git a/mods/Footsies/gamedata/sounds/material/human/step/gravel2.ogg b/mods/Footsies/gamedata/sounds/material/human/step/gravel2.ogg
new file mode 100644
index 00000000..72e91e13
--- /dev/null
+++ b/mods/Footsies/gamedata/sounds/material/human/step/gravel2.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:937171a6fe8fb60046249ec0889096bce8732d5cf9d15170c615c41cb91400da
+size 13274
diff --git a/mods/Footsies/gamedata/sounds/material/human/step/metal_plate1.ogg b/mods/Footsies/gamedata/sounds/material/human/step/metal_plate1.ogg
new file mode 100644
index 00000000..9bad659e
--- /dev/null
+++ b/mods/Footsies/gamedata/sounds/material/human/step/metal_plate1.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:e146fed097ee7f81797e9901ccf2dedf8a3fda5f6b3d9f7522608d79257404cf
+size 15301
diff --git a/mods/Footsies/gamedata/sounds/material/human/step/metal_plate2.ogg b/mods/Footsies/gamedata/sounds/material/human/step/metal_plate2.ogg
new file mode 100644
index 00000000..8fd8529a
--- /dev/null
+++ b/mods/Footsies/gamedata/sounds/material/human/step/metal_plate2.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:c0d519556e1ecca8e523d5604a93ff72739953fb31319aef376b53e35cf6fba6
+size 14071
diff --git a/mods/Footsies/gamedata/sounds/material/human/step/metal_plate3.ogg b/mods/Footsies/gamedata/sounds/material/human/step/metal_plate3.ogg
new file mode 100644
index 00000000..c6a7c0aa
--- /dev/null
+++ b/mods/Footsies/gamedata/sounds/material/human/step/metal_plate3.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:583a3c93cc9e905ad35c21bf6d29f5b3a540fa2a3e62585f6acbafc09340b75c
+size 15238
diff --git a/mods/Footsies/gamedata/sounds/material/human/step/metal_plate4.ogg b/mods/Footsies/gamedata/sounds/material/human/step/metal_plate4.ogg
new file mode 100644
index 00000000..77bf5c3a
--- /dev/null
+++ b/mods/Footsies/gamedata/sounds/material/human/step/metal_plate4.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:7ba63e9008cf3493190696748a784e130ac2a1b9f92bdd86716d9228abe0a8e4
+size 12257
diff --git a/mods/Footsies/gamedata/sounds/material/human/step/metall01gr.ogg b/mods/Footsies/gamedata/sounds/material/human/step/metall01gr.ogg
new file mode 100644
index 00000000..e1fcc38b
--- /dev/null
+++ b/mods/Footsies/gamedata/sounds/material/human/step/metall01gr.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:34093f9025a075bec2ba38ddaf2d0b553819389414307ca7a6f37d7de38c6b8a
+size 6375
diff --git a/mods/Footsies/gamedata/sounds/material/human/step/metall02gr.ogg b/mods/Footsies/gamedata/sounds/material/human/step/metall02gr.ogg
new file mode 100644
index 00000000..18dc3b4f
--- /dev/null
+++ b/mods/Footsies/gamedata/sounds/material/human/step/metall02gr.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:22658fa2177f564cffa5b100c7726393d32ede7cd23ef4b911e720c4373da946
+size 6096
diff --git a/mods/Footsies/gamedata/sounds/material/human/step/metall03gr.ogg b/mods/Footsies/gamedata/sounds/material/human/step/metall03gr.ogg
new file mode 100644
index 00000000..822f9554
--- /dev/null
+++ b/mods/Footsies/gamedata/sounds/material/human/step/metall03gr.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:951f90142b2627ecd3d48d64f3ff8d4e7c85e75c6c660f154837b95d2153611a
+size 6226
diff --git a/mods/Footsies/gamedata/sounds/material/human/step/metall04gr.ogg b/mods/Footsies/gamedata/sounds/material/human/step/metall04gr.ogg
new file mode 100644
index 00000000..7d72e29f
--- /dev/null
+++ b/mods/Footsies/gamedata/sounds/material/human/step/metall04gr.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:2901ad19b9de43a01466559a428fb61703b10d295c74013900395d43b8c54cc5
+size 6077
diff --git a/mods/Footsies/gamedata/sounds/material/human/step/n_default_1.ogg b/mods/Footsies/gamedata/sounds/material/human/step/n_default_1.ogg
new file mode 100644
index 00000000..a320d82e
--- /dev/null
+++ b/mods/Footsies/gamedata/sounds/material/human/step/n_default_1.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:66cedc32cf39e236634aabf1196dff418f78370915b1cc42e24d5a5382c136ef
+size 17675
diff --git a/mods/Footsies/gamedata/sounds/material/human/step/n_default_2.ogg b/mods/Footsies/gamedata/sounds/material/human/step/n_default_2.ogg
new file mode 100644
index 00000000..0e83d758
--- /dev/null
+++ b/mods/Footsies/gamedata/sounds/material/human/step/n_default_2.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:69500b02ebde31ec87cc2fd2de413b583346af8f26cc79cb1d2b3a87f0173043
+size 16723
diff --git a/mods/Footsies/gamedata/sounds/material/human/step/n_default_3.ogg b/mods/Footsies/gamedata/sounds/material/human/step/n_default_3.ogg
new file mode 100644
index 00000000..198c3d56
--- /dev/null
+++ b/mods/Footsies/gamedata/sounds/material/human/step/n_default_3.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a698cfb210ab9187de9b839bc8e50cfe4be5b31d586e18b849f5747b489001e2
+size 20577
diff --git a/mods/Footsies/gamedata/sounds/material/human/step/n_default_4.ogg b/mods/Footsies/gamedata/sounds/material/human/step/n_default_4.ogg
new file mode 100644
index 00000000..86c5c21a
--- /dev/null
+++ b/mods/Footsies/gamedata/sounds/material/human/step/n_default_4.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:01891e94728d98f5d4fbb7fdad7cebabab7f088b3d6893415f756bcadaf28aa3
+size 19302
diff --git a/mods/Footsies/gamedata/sounds/material/human/step/n_earth_1.ogg b/mods/Footsies/gamedata/sounds/material/human/step/n_earth_1.ogg
new file mode 100644
index 00000000..73d95aab
--- /dev/null
+++ b/mods/Footsies/gamedata/sounds/material/human/step/n_earth_1.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:cb72d7c01827a2d21a7ec3036bd2e811ab085f36965428b9864633b227aa1cf3
+size 20005
diff --git a/mods/Footsies/gamedata/sounds/material/human/step/n_earth_2.ogg b/mods/Footsies/gamedata/sounds/material/human/step/n_earth_2.ogg
new file mode 100644
index 00000000..26a11894
--- /dev/null
+++ b/mods/Footsies/gamedata/sounds/material/human/step/n_earth_2.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:acf14651454e5599ce6f08159d8f44ef735b9022d51e55a297a2250fb95a0259
+size 20095
diff --git a/mods/Footsies/gamedata/sounds/material/human/step/n_earth_3.ogg b/mods/Footsies/gamedata/sounds/material/human/step/n_earth_3.ogg
new file mode 100644
index 00000000..72b09a2f
--- /dev/null
+++ b/mods/Footsies/gamedata/sounds/material/human/step/n_earth_3.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:0845a4623051a2183a6375c3a3d8cd83f249d84799de74c60c1be587d164fb08
+size 19591
diff --git a/mods/Footsies/gamedata/sounds/material/human/step/n_earth_4.ogg b/mods/Footsies/gamedata/sounds/material/human/step/n_earth_4.ogg
new file mode 100644
index 00000000..91616cf9
--- /dev/null
+++ b/mods/Footsies/gamedata/sounds/material/human/step/n_earth_4.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:119f85d60e8f2113495341514e0fb982ba805558e678b870893a21d104c77b2e
+size 19860
diff --git a/mods/Footsies/gamedata/sounds/material/human/step/n_grass_1.ogg b/mods/Footsies/gamedata/sounds/material/human/step/n_grass_1.ogg
new file mode 100644
index 00000000..60e07d6a
--- /dev/null
+++ b/mods/Footsies/gamedata/sounds/material/human/step/n_grass_1.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:5df6e9eb613d54ae77fb3112c6cb3cc28ff50ea16226227510d60f59e83f05cf
+size 19567
diff --git a/mods/Footsies/gamedata/sounds/material/human/step/n_grass_2.ogg b/mods/Footsies/gamedata/sounds/material/human/step/n_grass_2.ogg
new file mode 100644
index 00000000..17473de0
--- /dev/null
+++ b/mods/Footsies/gamedata/sounds/material/human/step/n_grass_2.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:ba4e77bc8e68db5dd976172c25d3a0b3d34a65e21c253e1220eba3c312792b5c
+size 19162
diff --git a/mods/Footsies/gamedata/sounds/material/human/step/n_grass_3.ogg b/mods/Footsies/gamedata/sounds/material/human/step/n_grass_3.ogg
new file mode 100644
index 00000000..93e82857
--- /dev/null
+++ b/mods/Footsies/gamedata/sounds/material/human/step/n_grass_3.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:c209786984148bef0f5e079d81385651f7659316841291ddc2f0b1c059826270
+size 21166
diff --git a/mods/Footsies/gamedata/sounds/material/human/step/n_grass_4.ogg b/mods/Footsies/gamedata/sounds/material/human/step/n_grass_4.ogg
new file mode 100644
index 00000000..f42c1ee6
--- /dev/null
+++ b/mods/Footsies/gamedata/sounds/material/human/step/n_grass_4.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d06123bc1aca90de8e656247169246002488d85cc28ed0d9d3d6527f8b2b12ee
+size 19232
diff --git a/mods/Footsies/gamedata/sounds/material/human/step/n_gravel_1.ogg b/mods/Footsies/gamedata/sounds/material/human/step/n_gravel_1.ogg
new file mode 100644
index 00000000..26a9cf9c
--- /dev/null
+++ b/mods/Footsies/gamedata/sounds/material/human/step/n_gravel_1.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d1e295d06d0c2a7ad43464579544cb1cdb8a990b3ced1891f18da143b7aaede1
+size 18687
diff --git a/mods/Footsies/gamedata/sounds/material/human/step/n_gravel_2.ogg b/mods/Footsies/gamedata/sounds/material/human/step/n_gravel_2.ogg
new file mode 100644
index 00000000..97c5c6a4
--- /dev/null
+++ b/mods/Footsies/gamedata/sounds/material/human/step/n_gravel_2.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:dece76d6a291fa61e0b6df95438416f77f57e714e7cf58a54142f78fa490d318
+size 16464
diff --git a/mods/Footsies/gamedata/sounds/material/human/step/n_gravel_3.ogg b/mods/Footsies/gamedata/sounds/material/human/step/n_gravel_3.ogg
new file mode 100644
index 00000000..d9aece7b
--- /dev/null
+++ b/mods/Footsies/gamedata/sounds/material/human/step/n_gravel_3.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:6e48b8a16c7f97593e75f5f28ee6b5c03698eaaa6d5693a7045f0335b21a8674
+size 15501
diff --git a/mods/Footsies/gamedata/sounds/material/human/step/n_gravel_4.ogg b/mods/Footsies/gamedata/sounds/material/human/step/n_gravel_4.ogg
new file mode 100644
index 00000000..dee7ce10
--- /dev/null
+++ b/mods/Footsies/gamedata/sounds/material/human/step/n_gravel_4.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:c38234e36731920a9c05d8f5c0704478182d5ac7b129564d9a271c286d94a38a
+size 16382
diff --git a/mods/Footsies/gamedata/sounds/material/human/step/n_metal_plate_1.ogg b/mods/Footsies/gamedata/sounds/material/human/step/n_metal_plate_1.ogg
new file mode 100644
index 00000000..86bafc54
--- /dev/null
+++ b/mods/Footsies/gamedata/sounds/material/human/step/n_metal_plate_1.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:fbc1ed261eea3fa388b9a723b853e0aef8fa8bf1580f216daa0c9045faa1a0e3
+size 16070
diff --git a/mods/Footsies/gamedata/sounds/material/human/step/n_metal_plate_2.ogg b/mods/Footsies/gamedata/sounds/material/human/step/n_metal_plate_2.ogg
new file mode 100644
index 00000000..befcb233
--- /dev/null
+++ b/mods/Footsies/gamedata/sounds/material/human/step/n_metal_plate_2.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:4dedc7707e4bab6745b5b8b148d735be87d1cd6e84e7f1e4900d85067b96b632
+size 19413
diff --git a/mods/Footsies/gamedata/sounds/material/human/step/n_metal_plate_3.ogg b/mods/Footsies/gamedata/sounds/material/human/step/n_metal_plate_3.ogg
new file mode 100644
index 00000000..8bcd57cf
--- /dev/null
+++ b/mods/Footsies/gamedata/sounds/material/human/step/n_metal_plate_3.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:fb009f47320e03f7b74761e77e021aeb207138ec936f931b7ad8d1245529b868
+size 14019
diff --git a/mods/Footsies/gamedata/sounds/material/human/step/n_metal_plate_4.ogg b/mods/Footsies/gamedata/sounds/material/human/step/n_metal_plate_4.ogg
new file mode 100644
index 00000000..772a2a7c
--- /dev/null
+++ b/mods/Footsies/gamedata/sounds/material/human/step/n_metal_plate_4.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:288ddd50f75aff74945e0de62ca589bd29a08086071840e82865517dc370b917
+size 15559
diff --git a/mods/Footsies/gamedata/sounds/material/human/step/n_soft_1.ogg b/mods/Footsies/gamedata/sounds/material/human/step/n_soft_1.ogg
new file mode 100644
index 00000000..c7d8a53d
--- /dev/null
+++ b/mods/Footsies/gamedata/sounds/material/human/step/n_soft_1.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:f2f27c27a110df9565920944b0fcc0570ffee765d6dd613f7e3fea808505f430
+size 7400
diff --git a/mods/Footsies/gamedata/sounds/material/human/step/n_soft_2.ogg b/mods/Footsies/gamedata/sounds/material/human/step/n_soft_2.ogg
new file mode 100644
index 00000000..327f11e8
--- /dev/null
+++ b/mods/Footsies/gamedata/sounds/material/human/step/n_soft_2.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:bb7cd2fc0cccb839a8229eb09f41458dd52a72f0cd02cca85dd296f75c4ca1a4
+size 7491
diff --git a/mods/Footsies/gamedata/sounds/material/human/step/n_soft_3.ogg b/mods/Footsies/gamedata/sounds/material/human/step/n_soft_3.ogg
new file mode 100644
index 00000000..fc7f5cbc
--- /dev/null
+++ b/mods/Footsies/gamedata/sounds/material/human/step/n_soft_3.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:f9bf868afe53852890ba439a736c3e03664e7090d967542a3a53fd8cb25882ff
+size 7404
diff --git a/mods/Footsies/gamedata/sounds/material/human/step/n_soft_4.ogg b/mods/Footsies/gamedata/sounds/material/human/step/n_soft_4.ogg
new file mode 100644
index 00000000..00022aa9
--- /dev/null
+++ b/mods/Footsies/gamedata/sounds/material/human/step/n_soft_4.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a7de7640f60a8dae3cd31d808e569feb46d6a9251f830b9b41161adb443491cd
+size 6874
diff --git a/mods/Footsies/gamedata/sounds/material/human/step/n_tin_1.ogg b/mods/Footsies/gamedata/sounds/material/human/step/n_tin_1.ogg
new file mode 100644
index 00000000..86bafc54
--- /dev/null
+++ b/mods/Footsies/gamedata/sounds/material/human/step/n_tin_1.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:fbc1ed261eea3fa388b9a723b853e0aef8fa8bf1580f216daa0c9045faa1a0e3
+size 16070
diff --git a/mods/Footsies/gamedata/sounds/material/human/step/n_tin_2.ogg b/mods/Footsies/gamedata/sounds/material/human/step/n_tin_2.ogg
new file mode 100644
index 00000000..befcb233
--- /dev/null
+++ b/mods/Footsies/gamedata/sounds/material/human/step/n_tin_2.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:4dedc7707e4bab6745b5b8b148d735be87d1cd6e84e7f1e4900d85067b96b632
+size 19413
diff --git a/mods/Footsies/gamedata/sounds/material/human/step/n_tin_3.ogg b/mods/Footsies/gamedata/sounds/material/human/step/n_tin_3.ogg
new file mode 100644
index 00000000..8bcd57cf
--- /dev/null
+++ b/mods/Footsies/gamedata/sounds/material/human/step/n_tin_3.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:fb009f47320e03f7b74761e77e021aeb207138ec936f931b7ad8d1245529b868
+size 14019
diff --git a/mods/Footsies/gamedata/sounds/material/human/step/n_tin_4.ogg b/mods/Footsies/gamedata/sounds/material/human/step/n_tin_4.ogg
new file mode 100644
index 00000000..772a2a7c
--- /dev/null
+++ b/mods/Footsies/gamedata/sounds/material/human/step/n_tin_4.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:288ddd50f75aff74945e0de62ca589bd29a08086071840e82865517dc370b917
+size 15559
diff --git a/mods/Footsies/gamedata/sounds/material/human/step/n_water_1.ogg b/mods/Footsies/gamedata/sounds/material/human/step/n_water_1.ogg
new file mode 100644
index 00000000..3335f18c
--- /dev/null
+++ b/mods/Footsies/gamedata/sounds/material/human/step/n_water_1.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:8a9bca5278943cdfca5cb1579ca16207af673a7ca04bc61fe7ecc76489b30e52
+size 12153
diff --git a/mods/Footsies/gamedata/sounds/material/human/step/n_water_2.ogg b/mods/Footsies/gamedata/sounds/material/human/step/n_water_2.ogg
new file mode 100644
index 00000000..bafb7cfd
--- /dev/null
+++ b/mods/Footsies/gamedata/sounds/material/human/step/n_water_2.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:21a07ed298520744d4fc67f7206646c65cb1c0d8ce4fb7be97cc790ffc81dc8a
+size 10894
diff --git a/mods/Footsies/gamedata/sounds/material/human/step/n_water_3.ogg b/mods/Footsies/gamedata/sounds/material/human/step/n_water_3.ogg
new file mode 100644
index 00000000..b3928a37
--- /dev/null
+++ b/mods/Footsies/gamedata/sounds/material/human/step/n_water_3.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:65dfa678a46c6c26b88267410729909907a5f378c8b4fc1b5b0200ae96fc84d1
+size 11349
diff --git a/mods/Footsies/gamedata/sounds/material/human/step/n_water_4.ogg b/mods/Footsies/gamedata/sounds/material/human/step/n_water_4.ogg
new file mode 100644
index 00000000..e873a102
--- /dev/null
+++ b/mods/Footsies/gamedata/sounds/material/human/step/n_water_4.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d9da17414d8c3b06b13d42a19003ea0dbedf36cc7bd78f0acfcb1a564db38ab6
+size 11442
diff --git a/mods/Footsies/gamedata/sounds/material/human/step/n_wood_1.ogg b/mods/Footsies/gamedata/sounds/material/human/step/n_wood_1.ogg
new file mode 100644
index 00000000..e8ca1dd8
--- /dev/null
+++ b/mods/Footsies/gamedata/sounds/material/human/step/n_wood_1.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:cda6603e208f2076a49cf5bb82d0976cf790887c32611de9dc977112fe87a592
+size 6590
diff --git a/mods/Footsies/gamedata/sounds/material/human/step/n_wood_2.ogg b/mods/Footsies/gamedata/sounds/material/human/step/n_wood_2.ogg
new file mode 100644
index 00000000..b1bab151
--- /dev/null
+++ b/mods/Footsies/gamedata/sounds/material/human/step/n_wood_2.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:c5d0317d21130591036a2cc8bfade6e0a30389450280ea4c380e56d0ad9a01be
+size 6218
diff --git a/mods/Footsies/gamedata/sounds/material/human/step/n_wood_3.ogg b/mods/Footsies/gamedata/sounds/material/human/step/n_wood_3.ogg
new file mode 100644
index 00000000..2d325e46
--- /dev/null
+++ b/mods/Footsies/gamedata/sounds/material/human/step/n_wood_3.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:c75b333727214856b2d8b82ff12562decb89912d1d93062b60e04ef349637d94
+size 8723
diff --git a/mods/Footsies/gamedata/sounds/material/human/step/n_wood_4.ogg b/mods/Footsies/gamedata/sounds/material/human/step/n_wood_4.ogg
new file mode 100644
index 00000000..51fa3a3b
--- /dev/null
+++ b/mods/Footsies/gamedata/sounds/material/human/step/n_wood_4.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:6c7ed13e4d043b7d5e92acb1f7e8d18513b1b54d5fe87beb0045f66cdce75c99
+size 7163
diff --git a/mods/Footsies/gamedata/sounds/material/human/step/new_gravel1.ogg b/mods/Footsies/gamedata/sounds/material/human/step/new_gravel1.ogg
new file mode 100644
index 00000000..75afec86
--- /dev/null
+++ b/mods/Footsies/gamedata/sounds/material/human/step/new_gravel1.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:5b7cae81b03cf90b4e8a8c72761190c8a53a4f4f07daf478ac85ebfd82dad64c
+size 6081
diff --git a/mods/Footsies/gamedata/sounds/material/human/step/new_gravel2.ogg b/mods/Footsies/gamedata/sounds/material/human/step/new_gravel2.ogg
new file mode 100644
index 00000000..6b5016a0
--- /dev/null
+++ b/mods/Footsies/gamedata/sounds/material/human/step/new_gravel2.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:41a3f9e9507d315c8cbe0da6afe74b9090f36cb9e0482679f1bc644ad0d9c4f4
+size 5711
diff --git a/mods/Footsies/gamedata/sounds/material/human/step/new_wood1.ogg b/mods/Footsies/gamedata/sounds/material/human/step/new_wood1.ogg
new file mode 100644
index 00000000..20e17a85
--- /dev/null
+++ b/mods/Footsies/gamedata/sounds/material/human/step/new_wood1.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:83af90125dcfa980a292dabfe1ac9c56e6f6652cbc9dc1c6898d7deb6d8374ab
+size 15058
diff --git a/mods/Footsies/gamedata/sounds/material/human/step/new_wood2.ogg b/mods/Footsies/gamedata/sounds/material/human/step/new_wood2.ogg
new file mode 100644
index 00000000..c7767d1a
--- /dev/null
+++ b/mods/Footsies/gamedata/sounds/material/human/step/new_wood2.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:db9ac52ebcb7a4d776b2ab9dfe05fc39788414a1b336e1012fa7486741326b58
+size 14088
diff --git a/mods/Footsies/gamedata/sounds/material/human/step/new_wood3.ogg b/mods/Footsies/gamedata/sounds/material/human/step/new_wood3.ogg
new file mode 100644
index 00000000..cbfb937e
--- /dev/null
+++ b/mods/Footsies/gamedata/sounds/material/human/step/new_wood3.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:304d5b24256da263a134c7bd557512083571daf89d998b1c4fe8e654a35558b6
+size 16826
diff --git a/mods/Footsies/gamedata/sounds/material/human/step/new_wood4.ogg b/mods/Footsies/gamedata/sounds/material/human/step/new_wood4.ogg
new file mode 100644
index 00000000..274f4ebc
--- /dev/null
+++ b/mods/Footsies/gamedata/sounds/material/human/step/new_wood4.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:f14eafb0f2e0e23b103abf414417e9bb47db589a010e9fc6e24365ceb47c1c2d
+size 17147
diff --git a/mods/Footsies/gamedata/sounds/material/human/step/t_asphalt1.ogg b/mods/Footsies/gamedata/sounds/material/human/step/t_asphalt1.ogg
new file mode 100644
index 00000000..5cbb8ae2
--- /dev/null
+++ b/mods/Footsies/gamedata/sounds/material/human/step/t_asphalt1.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:8532a969f196b84df5c26135a4a23219fbfc246e235193688a2db065fe5612f9
+size 5516
diff --git a/mods/Footsies/gamedata/sounds/material/human/step/t_asphalt2.ogg b/mods/Footsies/gamedata/sounds/material/human/step/t_asphalt2.ogg
new file mode 100644
index 00000000..490c4496
--- /dev/null
+++ b/mods/Footsies/gamedata/sounds/material/human/step/t_asphalt2.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:65006bd7662ac87b5d1f7deeedad084145983bf09aca46b99558820c9d6c2f6f
+size 5698
diff --git a/mods/Footsies/gamedata/sounds/material/human/step/t_asphalt3.ogg b/mods/Footsies/gamedata/sounds/material/human/step/t_asphalt3.ogg
new file mode 100644
index 00000000..4b677524
--- /dev/null
+++ b/mods/Footsies/gamedata/sounds/material/human/step/t_asphalt3.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:da57d6bcd9b3a5a6fa1d338d9862728e2e695aea85c8696e0a494a0e84423710
+size 5344
diff --git a/mods/Footsies/gamedata/sounds/material/human/step/t_asphalt4.ogg b/mods/Footsies/gamedata/sounds/material/human/step/t_asphalt4.ogg
new file mode 100644
index 00000000..9a96d0a5
--- /dev/null
+++ b/mods/Footsies/gamedata/sounds/material/human/step/t_asphalt4.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:0dbde0a6aaa0fb1af10eff3d4ad0ed1bd7d6fef427e35c28c700b2c2eeb3795b
+size 5332
diff --git a/mods/Footsies/gamedata/sounds/material/human/step/t_bush1.ogg b/mods/Footsies/gamedata/sounds/material/human/step/t_bush1.ogg
new file mode 100644
index 00000000..5dde0135
--- /dev/null
+++ b/mods/Footsies/gamedata/sounds/material/human/step/t_bush1.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:c80343004bc88ee8496ae5b841113cbd7a95e5e505183d86b7c0df1ac5d2cc38
+size 6122
diff --git a/mods/Footsies/gamedata/sounds/material/human/step/t_bush2.ogg b/mods/Footsies/gamedata/sounds/material/human/step/t_bush2.ogg
new file mode 100644
index 00000000..155ccb15
--- /dev/null
+++ b/mods/Footsies/gamedata/sounds/material/human/step/t_bush2.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:ac80ebdd2667d2883998cae19ea08f848a748ee6796edced7d28d50cb239ef18
+size 6148
diff --git a/mods/Footsies/gamedata/sounds/material/human/step/t_bush3.ogg b/mods/Footsies/gamedata/sounds/material/human/step/t_bush3.ogg
new file mode 100644
index 00000000..d90ccb4a
--- /dev/null
+++ b/mods/Footsies/gamedata/sounds/material/human/step/t_bush3.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d456a8e45f14ac48eeaf54c84f86fc9f15c7db94e4aea0084a343b4fa4d8f58c
+size 6296
diff --git a/mods/Footsies/gamedata/sounds/material/human/step/t_bush4.ogg b/mods/Footsies/gamedata/sounds/material/human/step/t_bush4.ogg
new file mode 100644
index 00000000..bb0991ea
--- /dev/null
+++ b/mods/Footsies/gamedata/sounds/material/human/step/t_bush4.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:83d4ced1eb9d5d44ce89b183ea2d80a503a77c9308faf19ba56972df3f5c5fd2
+size 6011
diff --git a/mods/Footsies/gamedata/sounds/material/human/step/t_concrete1.ogg b/mods/Footsies/gamedata/sounds/material/human/step/t_concrete1.ogg
new file mode 100644
index 00000000..96777c8b
--- /dev/null
+++ b/mods/Footsies/gamedata/sounds/material/human/step/t_concrete1.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:46d6ecc68abc105e9ce92a23e5f6ff813b7fb517f71416d97a5ff07d58ce7f54
+size 5289
diff --git a/mods/Footsies/gamedata/sounds/material/human/step/t_concrete2.ogg b/mods/Footsies/gamedata/sounds/material/human/step/t_concrete2.ogg
new file mode 100644
index 00000000..8114efdc
--- /dev/null
+++ b/mods/Footsies/gamedata/sounds/material/human/step/t_concrete2.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:087d600582fcd444f85a7cfe73a5088069c305fd825dc12a22fe9a4f246efbc8
+size 5330
diff --git a/mods/Footsies/gamedata/sounds/material/human/step/t_concrete3.ogg b/mods/Footsies/gamedata/sounds/material/human/step/t_concrete3.ogg
new file mode 100644
index 00000000..c2bb7570
--- /dev/null
+++ b/mods/Footsies/gamedata/sounds/material/human/step/t_concrete3.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:28bc550740396d368f0e44da258d1de086025bca86f7d57323a954533a1a8a3a
+size 5277
diff --git a/mods/Footsies/gamedata/sounds/material/human/step/t_concrete4.ogg b/mods/Footsies/gamedata/sounds/material/human/step/t_concrete4.ogg
new file mode 100644
index 00000000..fdc03978
--- /dev/null
+++ b/mods/Footsies/gamedata/sounds/material/human/step/t_concrete4.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:3fa3c7d3d390c0608006e6fa80d74a21083adc325aabab6e8705e72fc5ec4ed3
+size 4959
diff --git a/mods/Footsies/gamedata/sounds/material/human/step/t_earth1.ogg b/mods/Footsies/gamedata/sounds/material/human/step/t_earth1.ogg
new file mode 100644
index 00000000..ce9df150
--- /dev/null
+++ b/mods/Footsies/gamedata/sounds/material/human/step/t_earth1.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:e86bafb23a523b4d38ae9abe01b60c6e55c343bb75d23c1b89a3e27b96a7f055
+size 5188
diff --git a/mods/Footsies/gamedata/sounds/material/human/step/t_earth2.ogg b/mods/Footsies/gamedata/sounds/material/human/step/t_earth2.ogg
new file mode 100644
index 00000000..1050067f
--- /dev/null
+++ b/mods/Footsies/gamedata/sounds/material/human/step/t_earth2.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:925f616f6b69b86f00e9398146ca5f6dcbb714532d454dc526e4c73796eb8263
+size 5542
diff --git a/mods/Footsies/gamedata/sounds/material/human/step/t_earth3.ogg b/mods/Footsies/gamedata/sounds/material/human/step/t_earth3.ogg
new file mode 100644
index 00000000..d65b5119
--- /dev/null
+++ b/mods/Footsies/gamedata/sounds/material/human/step/t_earth3.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:cc52d2f73d5fba36b651e5b128bcc9b3acfd708f5409286175d927991627e8a2
+size 5381
diff --git a/mods/Footsies/gamedata/sounds/material/human/step/t_earth4.ogg b/mods/Footsies/gamedata/sounds/material/human/step/t_earth4.ogg
new file mode 100644
index 00000000..f07ac3cd
--- /dev/null
+++ b/mods/Footsies/gamedata/sounds/material/human/step/t_earth4.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:41704b9468d5e0e6c6c4b0552ad1f0ff1225124d97250f4e4dc81cdd0337a3fc
+size 5429
diff --git a/mods/Footsies/gamedata/sounds/material/human/step/t_floortile1.ogg b/mods/Footsies/gamedata/sounds/material/human/step/t_floortile1.ogg
new file mode 100644
index 00000000..afd0a660
--- /dev/null
+++ b/mods/Footsies/gamedata/sounds/material/human/step/t_floortile1.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:627ba33819972ad7d69ef2530ebb33da2f22d02b422d6488aa91327ed918b854
+size 5138
diff --git a/mods/Footsies/gamedata/sounds/material/human/step/t_floortile2.ogg b/mods/Footsies/gamedata/sounds/material/human/step/t_floortile2.ogg
new file mode 100644
index 00000000..978d8fcd
--- /dev/null
+++ b/mods/Footsies/gamedata/sounds/material/human/step/t_floortile2.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:e1cb7cbe1d4a23ee7391a0240fb4d4c7ac6632d69746c87913de37ae6e98397d
+size 5539
diff --git a/mods/Footsies/gamedata/sounds/material/human/step/t_floortile3.ogg b/mods/Footsies/gamedata/sounds/material/human/step/t_floortile3.ogg
new file mode 100644
index 00000000..2d8e9eb0
--- /dev/null
+++ b/mods/Footsies/gamedata/sounds/material/human/step/t_floortile3.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:ac4618f8dba5b10d876d4c07012c7ea692d93ec3a6cf50ab4210a2d2740e8eae
+size 5182
diff --git a/mods/Footsies/gamedata/sounds/material/human/step/t_floortile4.ogg b/mods/Footsies/gamedata/sounds/material/human/step/t_floortile4.ogg
new file mode 100644
index 00000000..2757e93d
--- /dev/null
+++ b/mods/Footsies/gamedata/sounds/material/human/step/t_floortile4.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:5dba3aa0355b1e551c65d52110d192e5e95a1552c3996e6a5d58866e6851ab56
+size 5562
diff --git a/mods/Footsies/gamedata/sounds/material/human/step/t_grass1.ogg b/mods/Footsies/gamedata/sounds/material/human/step/t_grass1.ogg
new file mode 100644
index 00000000..1e5d593b
--- /dev/null
+++ b/mods/Footsies/gamedata/sounds/material/human/step/t_grass1.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a1865c6babb9104710d462a0f1b4319f95623615eb0c233606e97c7367931a2b
+size 5910
diff --git a/mods/Footsies/gamedata/sounds/material/human/step/t_grass2.ogg b/mods/Footsies/gamedata/sounds/material/human/step/t_grass2.ogg
new file mode 100644
index 00000000..a651a5a2
--- /dev/null
+++ b/mods/Footsies/gamedata/sounds/material/human/step/t_grass2.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:031aab46b9378acbe7e24460ad45acb5a60f3e5500af9ddc04833a40d271efff
+size 6167
diff --git a/mods/Footsies/gamedata/sounds/material/human/step/t_grass3.ogg b/mods/Footsies/gamedata/sounds/material/human/step/t_grass3.ogg
new file mode 100644
index 00000000..17671543
--- /dev/null
+++ b/mods/Footsies/gamedata/sounds/material/human/step/t_grass3.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:0cb894624c6cf50b5d3b86847a4ab930f6c50757776ba38bd62e280412b0470e
+size 5948
diff --git a/mods/Footsies/gamedata/sounds/material/human/step/t_grass4.ogg b/mods/Footsies/gamedata/sounds/material/human/step/t_grass4.ogg
new file mode 100644
index 00000000..6cffb437
--- /dev/null
+++ b/mods/Footsies/gamedata/sounds/material/human/step/t_grass4.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:1e8c702f087041079de1c0e455e6404df12b6928fc4ace627e488927943c4ece
+size 6068
diff --git a/mods/Footsies/gamedata/sounds/material/human/step/t_gravel1.ogg b/mods/Footsies/gamedata/sounds/material/human/step/t_gravel1.ogg
new file mode 100644
index 00000000..6c1fdb00
--- /dev/null
+++ b/mods/Footsies/gamedata/sounds/material/human/step/t_gravel1.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:afb6f4b94cc33a9167f4dc593d9c409fcb7af35dc3a6c1e398a20a15bde9054d
+size 5850
diff --git a/mods/Footsies/gamedata/sounds/material/human/step/t_gravel2.ogg b/mods/Footsies/gamedata/sounds/material/human/step/t_gravel2.ogg
new file mode 100644
index 00000000..9a5bf9fb
--- /dev/null
+++ b/mods/Footsies/gamedata/sounds/material/human/step/t_gravel2.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:bfbafc20a8eb54d4cae8e22cf142af6d881d7c4472bfab5a316d319bf9622e11
+size 5627
diff --git a/mods/Footsies/gamedata/sounds/material/human/step/t_gravel3.ogg b/mods/Footsies/gamedata/sounds/material/human/step/t_gravel3.ogg
new file mode 100644
index 00000000..095c62e9
--- /dev/null
+++ b/mods/Footsies/gamedata/sounds/material/human/step/t_gravel3.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:0166d8a17bb53928c97beddd05d8967a773b7b199d84de1e0ecc76f40507a071
+size 5963
diff --git a/mods/Footsies/gamedata/sounds/material/human/step/t_gravel4.ogg b/mods/Footsies/gamedata/sounds/material/human/step/t_gravel4.ogg
new file mode 100644
index 00000000..ecc316d0
--- /dev/null
+++ b/mods/Footsies/gamedata/sounds/material/human/step/t_gravel4.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:300765d5bd730a9421fce956c91a7e466719aba299f18d5174ff8c0105b6cc46
+size 5919
diff --git a/mods/Footsies/gamedata/sounds/material/human/step/t_water1.ogg b/mods/Footsies/gamedata/sounds/material/human/step/t_water1.ogg
new file mode 100644
index 00000000..16633727
--- /dev/null
+++ b/mods/Footsies/gamedata/sounds/material/human/step/t_water1.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:dd00e29ed4ad41038fec9362553f208b80189750aa03b4d11df271aa927bd3d1
+size 12153
diff --git a/mods/Footsies/gamedata/sounds/material/human/step/t_water2.ogg b/mods/Footsies/gamedata/sounds/material/human/step/t_water2.ogg
new file mode 100644
index 00000000..56d9350e
--- /dev/null
+++ b/mods/Footsies/gamedata/sounds/material/human/step/t_water2.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:64347aedeccb1f38c34e86cfdf7d6d55a5ce0b62d176312dc3c9f3e3770f72b0
+size 10894
diff --git a/mods/Footsies/gamedata/sounds/material/human/step/t_water3.ogg b/mods/Footsies/gamedata/sounds/material/human/step/t_water3.ogg
new file mode 100644
index 00000000..51e98de0
--- /dev/null
+++ b/mods/Footsies/gamedata/sounds/material/human/step/t_water3.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:458c0e1b01a22f245bb88958db3f1c419275899d5e5cebd8599d55b4ca143cc1
+size 11349
diff --git a/mods/Footsies/gamedata/sounds/material/human/step/t_water4.ogg b/mods/Footsies/gamedata/sounds/material/human/step/t_water4.ogg
new file mode 100644
index 00000000..480c4e9b
--- /dev/null
+++ b/mods/Footsies/gamedata/sounds/material/human/step/t_water4.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:53ee12e618cbd37d1bb7b69210cd5e52b4091c668274362154c1d0b9cb453c89
+size 11442
diff --git a/mods/Footsies/gamedata/sounds/material/human/step/t_wood1.ogg b/mods/Footsies/gamedata/sounds/material/human/step/t_wood1.ogg
new file mode 100644
index 00000000..db6c9a23
--- /dev/null
+++ b/mods/Footsies/gamedata/sounds/material/human/step/t_wood1.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:b9fb986b3c8a019ec1d22f8db9f917ad25184c5df758fcf56894c636d7d4c172
+size 5308
diff --git a/mods/Footsies/gamedata/sounds/material/human/step/t_wood2.ogg b/mods/Footsies/gamedata/sounds/material/human/step/t_wood2.ogg
new file mode 100644
index 00000000..e2f5122e
--- /dev/null
+++ b/mods/Footsies/gamedata/sounds/material/human/step/t_wood2.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:9010f80d1bf2b827d25ddbc613f1fb8fbb54fbc471958d3f857ca3e94a1cb1ae
+size 5525
diff --git a/mods/Footsies/gamedata/sounds/material/human/step/t_wood3.ogg b/mods/Footsies/gamedata/sounds/material/human/step/t_wood3.ogg
new file mode 100644
index 00000000..e1881ae6
--- /dev/null
+++ b/mods/Footsies/gamedata/sounds/material/human/step/t_wood3.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:beb40b983a17c0488aac2419ae222f4d00f28f48975237e85eb823238bf145ae
+size 5510
diff --git a/mods/Footsies/gamedata/sounds/material/human/step/t_wood4.ogg b/mods/Footsies/gamedata/sounds/material/human/step/t_wood4.ogg
new file mode 100644
index 00000000..b74f530b
--- /dev/null
+++ b/mods/Footsies/gamedata/sounds/material/human/step/t_wood4.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d029d8f5ba2050f03142fd79081601ebeaba56669dd55b263f941f8ec63ca0e7
+size 5445
diff --git a/mods/Footsies/gamedata/sounds/material/human/step/test_asphalt01.ogg b/mods/Footsies/gamedata/sounds/material/human/step/test_asphalt01.ogg
new file mode 100644
index 00000000..d4c8cf68
--- /dev/null
+++ b/mods/Footsies/gamedata/sounds/material/human/step/test_asphalt01.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:f506374e5390af662725ee9708c764eb1c21ff1ab9d5fd09a1b00b190cff1ba1
+size 6254
diff --git a/mods/Footsies/gamedata/sounds/material/human/step/test_asphalt02.ogg b/mods/Footsies/gamedata/sounds/material/human/step/test_asphalt02.ogg
new file mode 100644
index 00000000..a8446a0e
--- /dev/null
+++ b/mods/Footsies/gamedata/sounds/material/human/step/test_asphalt02.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:8c7dde57b70461492fdf6592deade8f70afad153ef0e953b2c94b686ecc6f787
+size 6334
diff --git a/mods/Footsies/gamedata/sounds/material/human/step/test_asphalt_short01.ogg b/mods/Footsies/gamedata/sounds/material/human/step/test_asphalt_short01.ogg
new file mode 100644
index 00000000..58228263
--- /dev/null
+++ b/mods/Footsies/gamedata/sounds/material/human/step/test_asphalt_short01.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:1dda8635f5a35bdf8f6f3811ccd63c7f4f5113f80c0ce22642a6ca31b48ec6ae
+size 5919
diff --git a/mods/Footsies/gamedata/sounds/material/human/step/test_asphalt_short02.ogg b/mods/Footsies/gamedata/sounds/material/human/step/test_asphalt_short02.ogg
new file mode 100644
index 00000000..122c8dbf
--- /dev/null
+++ b/mods/Footsies/gamedata/sounds/material/human/step/test_asphalt_short02.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:8da6c4d1337aeb2e92c46b98cb268f8997ccf2856ce7229cdc8ce649dec11e10
+size 6043
diff --git a/mods/Footsies/gamedata/sounds/material/human/step/test_concrete01.ogg b/mods/Footsies/gamedata/sounds/material/human/step/test_concrete01.ogg
new file mode 100644
index 00000000..5b88fd0b
--- /dev/null
+++ b/mods/Footsies/gamedata/sounds/material/human/step/test_concrete01.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:f2055f2690c0139ee2b7c5c21b1e6989461d05a1c210ce833ac7a5cc80e54f12
+size 5759
diff --git a/mods/Footsies/gamedata/sounds/material/human/step/test_concrete02.ogg b/mods/Footsies/gamedata/sounds/material/human/step/test_concrete02.ogg
new file mode 100644
index 00000000..4920293c
--- /dev/null
+++ b/mods/Footsies/gamedata/sounds/material/human/step/test_concrete02.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:0d4187254f1217a0083442ed487de9d1f66a35b8b6bf70d98cf476534fb786e0
+size 5843
diff --git a/mods/Footsies/gamedata/sounds/material/human/step/test_rabica1.ogg b/mods/Footsies/gamedata/sounds/material/human/step/test_rabica1.ogg
new file mode 100644
index 00000000..0c5095a7
--- /dev/null
+++ b/mods/Footsies/gamedata/sounds/material/human/step/test_rabica1.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:2beec7ddee82128721799177d11d0fbbfd007fbad1cbd168f70d7437f5142daa
+size 6890
diff --git a/mods/Footsies/gamedata/sounds/material/human/step/test_rabica2.ogg b/mods/Footsies/gamedata/sounds/material/human/step/test_rabica2.ogg
new file mode 100644
index 00000000..507f6f28
--- /dev/null
+++ b/mods/Footsies/gamedata/sounds/material/human/step/test_rabica2.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:6b0b158904fb0fd6ecbc3c7e714c6bd88c33b41303838cf22a2c02c86b5a1d53
+size 6654
diff --git a/mods/Footsies/gamedata/sounds/material/human/step/test_rabica3.ogg b/mods/Footsies/gamedata/sounds/material/human/step/test_rabica3.ogg
new file mode 100644
index 00000000..485243ca
--- /dev/null
+++ b/mods/Footsies/gamedata/sounds/material/human/step/test_rabica3.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:7217d688c64dd12844e10d682da79584294032524e7ef306f1ce821ad5400dfa
+size 8499
diff --git a/mods/Footsies/gamedata/sounds/material/human/step/test_rabica4.ogg b/mods/Footsies/gamedata/sounds/material/human/step/test_rabica4.ogg
new file mode 100644
index 00000000..8771cc6c
--- /dev/null
+++ b/mods/Footsies/gamedata/sounds/material/human/step/test_rabica4.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:6eaf344be6ecc21eaaaeab34f41b278e971c1c43ee015afc01828552f11ce702
+size 8118
diff --git a/mods/Footsies/gamedata/sounds/material/human/step/tin1.ogg b/mods/Footsies/gamedata/sounds/material/human/step/tin1.ogg
new file mode 100644
index 00000000..8049d97e
--- /dev/null
+++ b/mods/Footsies/gamedata/sounds/material/human/step/tin1.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:462703f1f7cfebad01c9484455f7718b55b058947e45506707b3c5f434b0f3f4
+size 15957
diff --git a/mods/Footsies/gamedata/sounds/material/human/step/tin2.ogg b/mods/Footsies/gamedata/sounds/material/human/step/tin2.ogg
new file mode 100644
index 00000000..bf277a41
--- /dev/null
+++ b/mods/Footsies/gamedata/sounds/material/human/step/tin2.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:3a50bde50979aad440da85371614c936456890dcd54627347ed226d65a5426f7
+size 14892
diff --git a/mods/Footsies/gamedata/sounds/material/human/step/tin3.ogg b/mods/Footsies/gamedata/sounds/material/human/step/tin3.ogg
new file mode 100644
index 00000000..2b4d4b68
--- /dev/null
+++ b/mods/Footsies/gamedata/sounds/material/human/step/tin3.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:dc25739b0063d5e1fa7e52e1417b150da3d717a7d5fd7563169b243e869e91e2
+size 15319
diff --git a/mods/Footsies/gamedata/sounds/material/human/step/tin4.ogg b/mods/Footsies/gamedata/sounds/material/human/step/tin4.ogg
new file mode 100644
index 00000000..8f44a08b
--- /dev/null
+++ b/mods/Footsies/gamedata/sounds/material/human/step/tin4.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:9798e9236fe55b3c675ab9702e6d807a432e4f583514d04297bc2c7c5c07bb9f
+size 15319
diff --git a/mods/Footsies/gamedata/sounds/material/human/step/tmp_default1.ogg b/mods/Footsies/gamedata/sounds/material/human/step/tmp_default1.ogg
new file mode 100644
index 00000000..60e07d6a
--- /dev/null
+++ b/mods/Footsies/gamedata/sounds/material/human/step/tmp_default1.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:5df6e9eb613d54ae77fb3112c6cb3cc28ff50ea16226227510d60f59e83f05cf
+size 19567
diff --git a/mods/Footsies/gamedata/sounds/material/human/step/tmp_default2.ogg b/mods/Footsies/gamedata/sounds/material/human/step/tmp_default2.ogg
new file mode 100644
index 00000000..17473de0
--- /dev/null
+++ b/mods/Footsies/gamedata/sounds/material/human/step/tmp_default2.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:ba4e77bc8e68db5dd976172c25d3a0b3d34a65e21c253e1220eba3c312792b5c
+size 19162
diff --git a/mods/Footsies/gamedata/sounds/material/human/step/tmp_default3.ogg b/mods/Footsies/gamedata/sounds/material/human/step/tmp_default3.ogg
new file mode 100644
index 00000000..93e82857
--- /dev/null
+++ b/mods/Footsies/gamedata/sounds/material/human/step/tmp_default3.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:c209786984148bef0f5e079d81385651f7659316841291ddc2f0b1c059826270
+size 21166
diff --git a/mods/Footsies/gamedata/sounds/material/human/step/tmp_default4.ogg b/mods/Footsies/gamedata/sounds/material/human/step/tmp_default4.ogg
new file mode 100644
index 00000000..f42c1ee6
--- /dev/null
+++ b/mods/Footsies/gamedata/sounds/material/human/step/tmp_default4.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d06123bc1aca90de8e656247169246002488d85cc28ed0d9d3d6527f8b2b12ee
+size 19232
diff --git a/mods/Footsies/gamedata/sounds/material/human/step/water01gr.ogg b/mods/Footsies/gamedata/sounds/material/human/step/water01gr.ogg
new file mode 100644
index 00000000..f6defe26
--- /dev/null
+++ b/mods/Footsies/gamedata/sounds/material/human/step/water01gr.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a5e282a6c30326bb01c91a0969d9483dcfcc5ccfb7f7b1e6b1009d5fe555c54a
+size 8319
diff --git a/mods/Footsies/gamedata/sounds/material/human/step/water02gr.ogg b/mods/Footsies/gamedata/sounds/material/human/step/water02gr.ogg
new file mode 100644
index 00000000..e8ba1a77
--- /dev/null
+++ b/mods/Footsies/gamedata/sounds/material/human/step/water02gr.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:2708dda347393eeec9287e678c09d3893fa70fc130c966ebf9523fc9ccfcd629
+size 8823
diff --git a/mods/Footsies/gamedata/sounds/material/human/step/wood01gr.ogg b/mods/Footsies/gamedata/sounds/material/human/step/wood01gr.ogg
new file mode 100644
index 00000000..9d6dd9c1
--- /dev/null
+++ b/mods/Footsies/gamedata/sounds/material/human/step/wood01gr.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:83ec77c02281cc5f4b4ab09763e756b2ae1efd0656519dbeb37de62dfed96123
+size 5584
diff --git a/mods/Footsies/gamedata/sounds/material/human/step/wood02gr.ogg b/mods/Footsies/gamedata/sounds/material/human/step/wood02gr.ogg
new file mode 100644
index 00000000..e183771a
--- /dev/null
+++ b/mods/Footsies/gamedata/sounds/material/human/step/wood02gr.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:88b3f32e2de2c7127265ab68ea5aac27ed96442c7dcba18e72d4cd54a2dd7faf
+size 5635
diff --git a/mods/Footsies/gamedata/sounds/material/human/step/wood03gr.ogg b/mods/Footsies/gamedata/sounds/material/human/step/wood03gr.ogg
new file mode 100644
index 00000000..a62c3b15
--- /dev/null
+++ b/mods/Footsies/gamedata/sounds/material/human/step/wood03gr.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:1a3ef19c42743d4f6e39a73eee137388256d312db1dbc73ec09682fca46263e3
+size 5448
diff --git a/mods/Footsies/gamedata/sounds/material/human/step/wood04gr.ogg b/mods/Footsies/gamedata/sounds/material/human/step/wood04gr.ogg
new file mode 100644
index 00000000..d60707d1
--- /dev/null
+++ b/mods/Footsies/gamedata/sounds/material/human/step/wood04gr.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:f89f99f509e6b78b6c70826b373aefeb8580752bb36f749bb719f91594db5dc9
+size 5451
diff --git a/mods/Footsies/gamedata/sounds/material/human/step/wpn_large1.ogg b/mods/Footsies/gamedata/sounds/material/human/step/wpn_large1.ogg
new file mode 100644
index 00000000..a9f9e722
--- /dev/null
+++ b/mods/Footsies/gamedata/sounds/material/human/step/wpn_large1.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:9db364bcd8fa997f073f583ac5284d2dc3b23c78c748976da18a2a19c715a315
+size 15620
diff --git a/mods/Footsies/gamedata/sounds/material/human/step/wpn_large2.ogg b/mods/Footsies/gamedata/sounds/material/human/step/wpn_large2.ogg
new file mode 100644
index 00000000..753340bf
--- /dev/null
+++ b/mods/Footsies/gamedata/sounds/material/human/step/wpn_large2.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d19421dd285e9691b752e42d01e7264d82e81d291dd5ff8c9b0725a148a9c3a2
+size 16233
diff --git a/mods/Footsies/gamedata/sounds/material/human/step/wpn_small1.ogg b/mods/Footsies/gamedata/sounds/material/human/step/wpn_small1.ogg
new file mode 100644
index 00000000..89a6d29b
--- /dev/null
+++ b/mods/Footsies/gamedata/sounds/material/human/step/wpn_small1.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:3708786f6fec4e2f7fe0872c7e6e4aea2778a0b73c41ec22193039bed023e16a
+size 11494
diff --git a/mods/Footsies/gamedata/sounds/material/human/step/wpn_small2.ogg b/mods/Footsies/gamedata/sounds/material/human/step/wpn_small2.ogg
new file mode 100644
index 00000000..a92d24a5
--- /dev/null
+++ b/mods/Footsies/gamedata/sounds/material/human/step/wpn_small2.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:85f3a4be3db6801ce794b6499a593901e3cebfd4dd3cb228a17a646f714f9591
+size 11809
diff --git a/mods/Footsies/gamedata/sounds/material/large/large_step1.ogg b/mods/Footsies/gamedata/sounds/material/large/large_step1.ogg
new file mode 100644
index 00000000..ffea81a6
--- /dev/null
+++ b/mods/Footsies/gamedata/sounds/material/large/large_step1.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:4b87c2f2c9216ff7670a4076a5108d94703168ce61c53a59383d87906fb1bcb7
+size 28312
diff --git a/mods/Footsies/gamedata/sounds/material/large/large_step2.ogg b/mods/Footsies/gamedata/sounds/material/large/large_step2.ogg
new file mode 100644
index 00000000..c6735e0b
--- /dev/null
+++ b/mods/Footsies/gamedata/sounds/material/large/large_step2.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:3402ab66f89fa1337a48d34b41852e590340931fc0352d7c06fd2e3c1386804e
+size 41398
diff --git a/mods/Footsies/gamedata/sounds/material/medium/paw_earth1.ogg b/mods/Footsies/gamedata/sounds/material/medium/paw_earth1.ogg
new file mode 100644
index 00000000..30a9dfa6
--- /dev/null
+++ b/mods/Footsies/gamedata/sounds/material/medium/paw_earth1.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:f03f1275d7bf4206bbd597edde460f1e22928c3c096e7108b7edc20ef5fbe4b7
+size 5539
diff --git a/mods/Footsies/gamedata/sounds/material/medium/paw_earth2.ogg b/mods/Footsies/gamedata/sounds/material/medium/paw_earth2.ogg
new file mode 100644
index 00000000..5d19dc31
--- /dev/null
+++ b/mods/Footsies/gamedata/sounds/material/medium/paw_earth2.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:dd0d992bdabd86e93be281750faaaf49ae495c41dfcb6ca14ebcfdafbfbc53a2
+size 6094
diff --git a/mods/Footsies/gamedata/sounds/material/medium/paw_earth3.ogg b/mods/Footsies/gamedata/sounds/material/medium/paw_earth3.ogg
new file mode 100644
index 00000000..09774e9d
--- /dev/null
+++ b/mods/Footsies/gamedata/sounds/material/medium/paw_earth3.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:49b94493a9bc76edf71d3a4fe8acf9b3e91217d6d941dbe7b88530feaacbe2a8
+size 5745
diff --git a/mods/Footsies/gamedata/sounds/material/medium/paw_earth4.ogg b/mods/Footsies/gamedata/sounds/material/medium/paw_earth4.ogg
new file mode 100644
index 00000000..55d5a910
--- /dev/null
+++ b/mods/Footsies/gamedata/sounds/material/medium/paw_earth4.ogg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:beb23898674fb910681376a5a67795d1374359e4337fbdae2b29fc7dfcff0adb
+size 5704
diff --git a/mods/Footsies/meta.ini b/mods/Footsies/meta.ini
new file mode 100644
index 00000000..da2b429a
--- /dev/null
+++ b/mods/Footsies/meta.ini
@@ -0,0 +1,28 @@
+[General]
+gameName=stalkeranomaly
+modid=0
+version=d2024.3.19.0
+newestVersion=
+category="-1,"
+nexusFileStatus=1
+installationFile=Footsies_v2_1.5.2_DLTX.7z
+repository=Nexus
+ignoredVersion=
+comments=
+notes=
+nexusDescription=
+url=
+hasCustomURL=false
+lastNexusQuery=
+lastNexusUpdate=
+nexusLastModified=2024-03-19T06:43:05Z
+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/Glowsticks Reanimated/gamedata/scripts/zz_glowstick_mcm.script b/mods/Glowsticks Reanimated/gamedata/scripts/zz_glowstick_mcm.script
index af5a5d05..194d4594 100644
--- a/mods/Glowsticks Reanimated/gamedata/scripts/zz_glowstick_mcm.script
+++ b/mods/Glowsticks Reanimated/gamedata/scripts/zz_glowstick_mcm.script
@@ -1020,14 +1020,14 @@ function ui_mm_faction_select.UINewGame.LoadLoadout(self, rand)
if (sections_table[i] ~= inv_sect_list[#inv_sect_list]) then
i_size = i_size + 1
load_sect_list[i_size] = sections_table[i]
- load_point_list[i_size] = 150
+ load_point_list[i_size] = 2
end
end
-- Add flashlight
i_size = i_size + 1
load_sect_list[i_size] = "device_flashlight"
- load_point_list[i_size] = 300
+ load_point_list[i_size] = 4
-- Reinit inventories to apply the changes
self.CC["inventory"]:Reinit(inv_sect_list, inv_point_list)
diff --git a/mods/Tommy Gun Drop/gamedata/scripts/wpn_thompson_mcm.script b/mods/Tommy Gun Drop/gamedata/scripts/wpn_thompson_mcm.script
index 00fb28c8..d1042474 100644
--- a/mods/Tommy Gun Drop/gamedata/scripts/wpn_thompson_mcm.script
+++ b/mods/Tommy Gun Drop/gamedata/scripts/wpn_thompson_mcm.script
@@ -2,7 +2,7 @@ local loadouts = new_game_loadout_injector_mcm
loadouts.add_item({
section = "wpn_thompson_m1a1",
- points = 200,
+ points = 15,
faction = {
"stalker",
"freedom",
diff --git a/mods/Western Goods/gamedata/configs/items/settings/mod_new_game_loadouts_western_goods.ltx b/mods/Western Goods/gamedata/configs/items/settings/mod_new_game_loadouts_western_goods.ltx
index 67f28f21..81d0d8bf 100644
--- a/mods/Western Goods/gamedata/configs/items/settings/mod_new_game_loadouts_western_goods.ltx
+++ b/mods/Western Goods/gamedata/configs/items/settings/mod_new_game_loadouts_western_goods.ltx
@@ -10,22 +10,22 @@
;;====================================================================================================================;;
![shared]
-wg_gps = true,1,100
+wg_gps = true,1,12
![isg_loadout]
-wg_cola_bottle = true,1,25
+wg_cola_bottle = true,1,4
![killer_loadout]
-wg_cola_bottle = true,1,50
+wg_cola_bottle = true,1,4
![freedom_loadout]
-wg_sprite_can = true,1,50
+wg_sprite_can = true,1,4
![monolith_loadout]
-wg_redbull_can = true,1,50
+wg_redbull_can = true,1,4
![bandit_loadout]
-wg_rockstar_energy_can = true,1,50
+wg_rockstar_energy_can = true,1,4
![renegade_loadout]
-wg_beer_86_can = true,1,50
\ No newline at end of file
+wg_beer_86_can = true,1,4
\ No newline at end of file
diff --git a/mods/[DEV] Backpack Drops/gamedata/configs/items/settings/mod_death_outfits_backpack_drops.ltx b/mods/[DEV] Backpack Drops/gamedata/configs/items/settings/mod_death_outfits_backpack_drops.ltx
new file mode 100644
index 00000000..22e00178
--- /dev/null
+++ b/mods/[DEV] Backpack Drops/gamedata/configs/items/settings/mod_death_outfits_backpack_drops.ltx
@@ -0,0 +1,71 @@
+![outfit_by_visual]
+; Mercenaries
+stalker_merc_6 = light_merc_outfit,helm_metro,equ_small_military_pack
+stalker_merc_4 = light_merc_outfit,helm_metro,equ_small_military_pack
+stalker_merc_2 = light_merc_outfit,helm_metro,equ_small_military_pack
+stalker_merc_10 = light_merc_outfit,helm_metro,equ_small_military_pack
+
+; Military
+stalker_soldier_1_helm_battle = army_outfit,helm_battle,equ_small_military_pack
+stalker_soldier_1_helm_battle_nogas = army_outfit,helm_battle,equ_small_military_pack
+stalker_soldier_1_helm_tactic_nogas = army_outfit,helm_tactic,equ_small_military_pack
+stalker_soldier_1 = army_outfit,helm_bandana,equ_small_military_pack
+stalker_soldier1b = army_outfit,helm_bandana,equ_small_military_pack
+stalker_soldier1c = army_outfit,helm_bandana,equ_small_military_pack
+stalker_soldier1d = army_outfit,helm_bandana,equ_small_military_pack
+stalker_soldier1e = army_outfit,helm_bandana,equ_small_military_pack
+stalker_soldier1f = army_outfit,helm_bandana,equ_small_military_pack
+stalker_soldier1g = army_outfit,helm_bandana,equ_small_military_pack
+soldier_bandana = army_outfit,helm_bandana,equ_small_military_pack
+soldier_bandana_1 = army_outfit,helm_bandana,equ_small_military_pack
+soldier_bandana_2 = army_outfit,helm_bandana,equ_small_military_pack
+soldier_bandana_3 = army_outfit,helm_bandana,equ_small_military_pack
+soldier_bandana_4 = army_outfit,helm_bandana,equ_small_military_pack
+soldier_bandana_5 = army_outfit,helm_bandana,equ_small_military_pack
+soldier_bandana_6 = army_outfit,helm_bandana,equ_small_military_pack
+soldier_obichniy = army_outfit,helm_bandana,equ_small_military_pack
+stalker_soldier_6_helm_tactic_nogas = army_outfit,helm_tactic,equ_small_military_pack
+stalker_soldier_6_helm_battle_nogas = army_outfit,helm_battle,equ_small_military_pack
+stalker_soldier_6_helm_battle = army_outfit,helm_battle,equ_small_military_pack
+stalker_soldier_2 = army_outfit,helm_tactic,equ_small_military_pack
+stalker_soldier_2_face_1 = army_outfit,equ_small_military_pack
+stalker_soldier_5_beret = army_outfit,equ_small_military_pack
+stalker_soldier5a_beret = army_outfit,equ_small_military_pack
+stalker_soldier5b_beret = army_outfit,equ_small_military_pack
+stalker_soldier5c_beret = army_outfit,equ_small_military_pack
+stalker_soldier5d_beret = army_outfit,equ_small_military_pack
+stalker_soldier5e_beret = army_outfit,equ_small_military_pack
+stalker_soldier5f_beret = army_outfit,equ_small_military_pack
+stalker_soldier5g_beret = army_outfit,equ_small_military_pack
+stalker_soldier5h_beret = army_outfit,equ_small_military_pack
+stalker_soldier5i_beret = army_outfit,equ_small_military_pack
+stalker_soldier5j_beret = army_outfit,equ_small_military_pack
+stalker_soldier5k_beret = army_outfit,equ_small_military_pack
+
+; Bandits
+stalker_bandit_1 = bandit_novice_outfit,helm_cloth_mask,equ_tourist_pack
+stalker_bandit_1_mask = bandit_novice_outfit,helm_rp_bala,equ_tourist_pack
+stalker_bandit_1_gas = bandit_novice_outfit,helm_respirator,equ_tourist_pack
+stalker_bandit1a = bandit_novice_outfit,helm_cloth_mask,equ_tourist_pack
+stalker_bandit1a_mask = bandit_novice_outfit,helm_rp_bala,equ_tourist_pack
+stalker_bandit1a_gas = bandit_novice_outfit,helm_respirator,equ_tourist_pack
+stalker_bandit1b = bandit_novice_outfit_alt,helm_cloth_mask,equ_tourist_pack
+stalker_bandit1b_mask = bandit_novice_outfit_alt,helm_rp_bala,equ_tourist_pack
+stalker_bandit1b_gas = bandit_novice_outfit_alt,helm_respirator,equ_tourist_pack
+stalker_bandit1c = bandit_novice_outfit,helm_cloth_mask,equ_tourist_pack
+stalker_bandit1c_mask = bandit_novice_outfit,helm_rp_bala,equ_tourist_pack
+stalker_bandit1c_gas = bandit_novice_outfit,helm_respirator,equ_tourist_pack
+stalker_bandit_a = bandit_novice_outfit,helm_cloth_mask,equ_tourist_pack
+stalker_bandita2 = bandit_novice_outfit_alt,helm_cloth_mask,equ_tourist_pack
+stalker_bandita3 = bandit_novice_outfit,helm_cloth_mask,equ_tourist_pack
+
+stalker_band_2_mask = banditmerc_outfit,helm_m40,equ_tourist_pack
+stalker_band2a_mask = banditmerc_outfit,helm_m40,equ_tourist_pack
+stalker_bandit_2 = banditmerc_outfit,helm_cloth_mask,equ_tourist_pack
+stalker_bandit2a = banditmerc_outfit,helm_cloth_mask,equ_tourist_pack
+stalker_bandit_2_mask = banditmerc_outfit,helm_rp_bala,equ_tourist_pack
+stalker_bandit2a_mask = banditmerc_outfit,helm_rp_bala,equ_tourist_pack
+
+stalker_bandit_2a_gp5 = bandit_nbc_outfit,equ_tourist_pack ;,helm_respirator_gp5
+
+stalker_bandit_2a = bandit_sun_outfit,helm_resp,equ_tourist_pack
\ No newline at end of file
diff --git a/mods/[DEV] Backpack Drops/gamedata/scripts/xcvb_backpack_drop.script b/mods/[DEV] Backpack Drops/gamedata/scripts/xcvb_backpack_drop.script
new file mode 100644
index 00000000..f79d87d1
--- /dev/null
+++ b/mods/[DEV] Backpack Drops/gamedata/scripts/xcvb_backpack_drop.script
@@ -0,0 +1,13 @@
+VanillaCosmetics = death_manager.spawn_cosmetics
+function death_manager.spawn_cosmetics(npc, npc_id, npc_comm, npc_rank, visual, rand_condition)
+ VanillaCosmetics(npc, npc_id, npc_comm, npc_rank, visual, rand_condition)
+
+ -- backpacks
+ local viz = visual or npc:get_visual_name()
+ local tbl = viz and death_manager.get_outfit_by_npc_visual(viz)
+ if not tbl then return end
+ local bp_sec = tbl[3] or tbl[2]
+ if not (bp_sec and IsItem("backpack", bp_sec)) then return end
+
+ death_manager.spawn_with_condition(npc, bp_sec, 0.99999)
+end
diff --git a/mods/[DEV] Backpack Drops/meta.ini b/mods/[DEV] Backpack Drops/meta.ini
new file mode 100644
index 00000000..55a1c1d9
--- /dev/null
+++ b/mods/[DEV] Backpack Drops/meta.ini
@@ -0,0 +1,9 @@
+[General]
+modid=0
+version=
+newestVersion=
+category=0
+installationFile=
+
+[installedFiles]
+size=0
diff --git a/mods/[DEV] Brotherhood/Brotherhood ReadMe.txt b/mods/[DEV] Brotherhood/Brotherhood ReadMe.txt
new file mode 100644
index 00000000..cf48b812
--- /dev/null
+++ b/mods/[DEV] Brotherhood/Brotherhood ReadMe.txt
@@ -0,0 +1,60 @@
+Stalker-Anomaly-Brotherhood
+
+
+Thank you for downloading my mod project. For the moment it's still in the early phase of developpment - as such it's not ready for distribution and is meant to be beta tested.
+
+Special thanks to the Anomaly discord coder community which helped me throughout this project, especially
+
+- xcvb for always helping out and providing some scripts used in this mod
+- NLTP-ASHES for sharing his huge knowledge
+- GhenTuong for being an inspiration and a reference, and providing some scripts used in this mod
+- RavenAscendant for helping out if I had a question
+- igigog for helping out if I had a question
+- demonized for helping out if I had a question
+
+and not to forget, the devs of Anomaly themselves who made all of this possible.
+
+
+
+
+# Compatibility:
+
+- DLTX adaptation will follow soon
+
+- For the moment I recommend playing this mod without any other mods - at least none which would be in conflict. If you really want to use other mods, use this guide to make your own compatibility patch.
+
+- If you want to use other mods which use these three files, you have to include my mod too. You can do this by opening the concerned file with notepad++ and adding the required lines
+
+ - configs > creatures > spawn_section.ltx
+ #include "spawn_sections_brotherhood.ltx"
+
+ - configs > creatures > monsters.ltx
+ #include "m_z_legendary.ltx"
+ - configs > system.ltx
+
+ - [dialogs] dialogs_brotherhood, dialogs_brotherhood_ms, dialogs_brotherhood_nr
+ - [profiles] npc_profile_brotherhood
+ character_desc_brotherhood
+
+- If the other mod also uses the following files, it becomes more problematic and you will need to find my added code lines and paste them into the other file (you can find it by comparing the two files in notepad++ and adding mine):
+
+ - configs > gameplay > character_desc_[base mod].xml
+
+ I added some dialogues to existing characters, of course they have to be added if the files are overwritten (list might follow)
+
+ - configs > scripts >
+
+ - obviously very problematic, will have to make a whole list or learn DLTX. I strongly recommend not using any mods which would tamper with these files.
+
+
+
+ - gamedata > scripts > actor_effects.script
+
+ - I disabled the create stash animation for the backpack for a quest (by adding --):
+
+ - line 1747 to 1749 : --elseif (id == ruck_last_backpack) then
+ --ruck_last_backpack = -1
+ --play_anm = true
+
+ - this means, if a mod also modified actor_effects and is loaded after my mod - you might get problems (or not - tell me)
+ - you can "patch" this by diasbling these three lines in the other mod
diff --git a/mods/[DEV] Brotherhood/Brotherhood mod version.txt b/mods/[DEV] Brotherhood/Brotherhood mod version.txt
new file mode 100644
index 00000000..08686c6d
--- /dev/null
+++ b/mods/[DEV] Brotherhood/Brotherhood mod version.txt
@@ -0,0 +1 @@
+Brotherhood version 0.5.7.6.2
\ No newline at end of file
diff --git a/mods/[DEV] Brotherhood/Brotherhood patch notes - spoilers.txt b/mods/[DEV] Brotherhood/Brotherhood patch notes - spoilers.txt
new file mode 100644
index 00000000..b409def6
--- /dev/null
+++ b/mods/[DEV] Brotherhood/Brotherhood patch notes - spoilers.txt
@@ -0,0 +1,92 @@
+Patch Notes:
+
+v 0.5.7.6.2
+
+- Russian language added
+
+v 0.5.7.6
+
+- added Alyosha's second quest
+- fixed the Forester Bloodsucker bug which didn't spawn the Bloodsuckers if you were too far away
+
+v 0.5.7.5.1
+
+- fixed the infinite trapper bait bug
+
+v 0.5.7.5
+
+- fixed the Bezsonik crash
+
+v 0.5.7.3
+
+- added two "random encounter": one in Rostok one in the Great Swamp
+- added a Legendary Mutant hunt (Butcher)
+- added scopes to the Mutanthammer
+- fixed some typos
+
+v 0.5.7.2
+- patched a wrong node in Hawaiians dialogue
+
+v 0.5.7
+
+- added some new random events and missions
+- fixed the Railway Bridge smart spawn (only works if mission has not been completed yet)
+- buffed Vlad and Drakul
+- reworked the Butcher Agroprom mission
+- patched quest description not showing for the second stage of the second Chris quest (Market Share)
+- patched quest description for Vybegallo
+- patched dialogue with Mercenary switching (Market Share)
+
+
+v 0.5.2.8
+
+- removed file responsible for Hawaiian's trade problems
+- patched bandits respawning after finishing the bloody railway bridge quest
+
+v 0.5.2.7
+
+- Forester takes back his coat
+ - if you already finished the mission or failed then you have to disable the info
+ - for successful mission: disable_info("forester_legendary_5_done")
+
+
+V 0.5.2.6
+
+ - patched Bellerophon not coming with you
+ - if Vybegallo is dead he won't call for help anymore
+ - programmed alternative if Bellerophon died
+ - buffed the reward for the Duty Brotherhood missions
+
+V 0.5.2.4
+
+- patched Vybgeallo Pseudogiant Hand - now you can give it to him
+
+V 0.5.2.3.
+
+- buffed health of Vlad and Drakul
+- changed Vybegallo visual to the same as Ozerskiy
+- patched the remark crash
+
+V 0.5.2.2
+
+- patched the brotherhood_timer crash
+
+V 0.5.2.1
+
+- patched the Sakharov crash
+
+- patched the Voronin quest
+
+
+
+V 0.5.2.
+
+- patched task_brotherhood:
+ - added a proper task functor to give_dolg_bloodsucker_village_1 and give_dolg_bloodsucker_village_2
+
+- patched the Aspirin dialogue, which was not curtailed behind a condition (thus not following the flow of the quest chain)
+
+- deleted jup_b202_stalker_barmen.ltx in configs > scripts > jupiter -- this file is not necessary
+
+- corrected some typos in the dialogues
+
diff --git a/mods/[DEV] Brotherhood/gamedata/configs/creatures/m_z_legendary.ltx b/mods/[DEV] Brotherhood/gamedata/configs/creatures/m_z_legendary.ltx
new file mode 100644
index 00000000..0db9da69
--- /dev/null
+++ b/mods/[DEV] Brotherhood/gamedata/configs/creatures/m_z_legendary.ltx
@@ -0,0 +1,245 @@
+;===========================================================================
+; BLOODSUCKERS Vlad and Drakul
+;===========================================================================
+
+[bloodsucker_vlad]:m_bloodsucker_e
+$spawn = "monsters\bloodsuckers\bloodsucker_03_strong"
+visual = monsters\krovosos\krovosos_strong
+corpse_visual = monsters\krovosos\krovosos_dead
+icon = ui_npc_monster_krovosos_strong
+Predator_Visual = monsters\krovosos\krovosos_strong_xray
+panic_threshold = 0.05
+rank = 16
+immunities_sect = bloodsucker_immunities_vlad
+attack_params = bloodsucker_attack_params_vlad
+spec_rank = strong
+community = bloodsucker
+invisibility_activate_delay = 1500
+protections_sect = bloodsucker_protections
+
+MaxHealthValue = 3 ; range [0..200]
+
+skin_armor = 0.7
+
+[bloodsucker_immunities_vlad]
+burn_immunity = 2.2 ; 5.0 ; = 0.75 ;Factors of immunity
+strike_immunity = 0.60
+shock_immunity = 2.7 ; = 0.7
+wound_immunity = 0.35
+radiation_immunity = 0.0
+telepatic_immunity = 0.0
+chemical_burn_immunity = 0.65 ; = 3.0 ; = 0.75
+explosion_immunity = 0.55
+fire_wound_immunity = 0.3
+
+[bloodsucker_attack_params_vlad]
+;---------------------------------------------------------------------------------------------------------------------------------------------
+; anim | time[0..1] | hit_power | impulse | impulse_dir (x,y,z) | Field of hit_test (left,right, top, bottom) | Test Dist
+;---------------------------------------------------------------------------------------------------------------------------------------------
+;Left hand Strike
+stand_attack_0 = 0.20, 2.35, 65, 3.5, 2.0, 0.5, -1.0, 1.0, -1.0, 1.0, 2.5
+;Both hands Strike
+stand_attack_1 = 0.20, 2.5, 75, 0.0, 2.0, 4.0, -0.8, 0.8, -1.2, 1.2, 2.5
+;Right hand Strike
+stand_attack_2 = 0.20, 2.35, 65, -4.0, 2.5, 0.50, -1.0, 1.0, -1.0, 1.0, 2.5
+;Right hand Strike
+vampire_2 = 0.40, 2.15, 75, 0.0, 2.5, 4.50, -1.2, 1.2, -1.2, 1.2, 4.5
+
+
+stand_run_attack_left_0 = 0.20, 2.05, 65, 3.5, 2.0, 0.5, -1.0, 1.0, -1.0, 1.0, 2.5
+stand_run_attack_right_0 = 0.20, 2.05, 65, 3.5, 2.0, 0.5, -1.0, 1.0, -1.0, 1.0, 2.5
+
+;----------------------------------------------------------------------------
+; Movement::Velocities & Acceleration
+;----------------------------------------------------------------------------
+; speed factors linear | angular_real | angular_path | min | max
+Velocity_Stand = 0, 5.0, 5.0, 1, 1
+Velocity_RunFwdNormal = 8.2, 5.0, 5.0, 0.5, 1
+Velocity_RunFwdDamaged = 5.0, 5.0, 5.0, 0.5, 1
+Velocity_WalkFwdNormal = 2.15, 5.0, 5.0, 0.2, 2.0
+Velocity_WalkFwdDamaged = 1.4, 5.0, 5.0, 0.2, 2.0
+Velocity_Drag = 1.5, 4.0, 4.0, 1, 1
+Velocity_Steal = 0.7, 4.0, 4.0, 1, 1
+
+; Speed factors while invisible
+Velocity_Invisible_Linear = 6.5
+Velocity_Invisible_Angular = 3.5
+
+; acceleration
+Accel_Generic = 1.5
+Accel_Calm = 2.5
+Accel_Aggressive = 20.0
+
+[bloodsucker_drakul]:m_bloodsucker_e
+$spawn = "monsters\bloodsuckers\bloodsucker_03_strong"
+visual = monsters\krovosos\krovosos_strong
+corpse_visual = monsters\krovosos\krovosos_dead
+icon = ui_npc_monster_krovosos_strong
+Predator_Visual = monsters\krovosos\krovosos_strong_xray
+panic_threshold = 0.05
+rank = 16
+immunities_sect = bloodsucker_immunities_drakul
+attack_params = bloodsucker_attack_params_drakul
+spec_rank = strong
+community = bloodsucker
+invisibility_activate_delay = 1500
+protections_sect = bloodsucker_protections
+
+MaxHealthValue = 3.8 ; range [0..200]
+
+skin_armor = 1
+
+[bloodsucker_immunities_drakul]
+burn_immunity = 2.2 ; 5.0 ; = 0.75 ;Factors of immunity
+strike_immunity = 0.50
+shock_immunity = 2.7 ; = 1
+wound_immunity = 0.2
+radiation_immunity = 0.0
+telepatic_immunity = 0.0
+chemical_burn_immunity = 1 ; = 3.0 ; = 0.75
+explosion_immunity = 0.5
+fire_wound_immunity = 0.15
+
+[bloodsucker_attack_params_drakul]
+;---------------------------------------------------------------------------------------------------------------------------------------------
+; anim | time[0..1] | hit_power | impulse | impulse_dir (x,y,z) | Field of hit_test (left,right, top, bottom) | Test Dist
+;---------------------------------------------------------------------------------------------------------------------------------------------
+;Left hand Strike
+stand_attack_0 = 0.30, 1.5, 65, 3.5, 2.0, 0.5, -1.0, 1.0, -1.0, 1.0, 2.5
+;Both hands Strike
+stand_attack_1 = 0.30, 1.7, 75, 0.0, 2.0, 4.0, -0.8, 0.8, -1.2, 1.2, 2.5
+;Right hand Strike
+stand_attack_2 = 0.30, 1.5, 65, -4.0, 2.5, 0.50, -1.0, 1.0, -1.0, 1.0, 2.5
+;Right hand Strike
+vampire_2 = 0.60, 1.3, 75, 0.0, 2.5, 4.50, -1.2, 1.2, -1.2, 1.2, 4.5
+
+
+stand_run_attack_left_0 = 0.30, 1.05, 65, 3.5, 2.0, 0.5, -1.0, 1.0, -1.0, 1.0, 2.5
+stand_run_attack_right_0 = 0.30, 1.05, 65, 3.5, 2.0, 0.5, -1.0, 1.0, -1.0, 1.0, 2.5
+
+;----------------------------------------------------------------------------
+; Movement::Velocities & Acceleration
+;----------------------------------------------------------------------------
+; speed factors linear | angular_real | angular_path | min | max
+Velocity_Stand = 0, 5.0, 5.0, 1, 1
+Velocity_RunFwdNormal = 8.2, 5.0, 5.0, 0.5, 1
+Velocity_RunFwdDamaged = 5.0, 5.0, 5.0, 0.5, 1
+Velocity_WalkFwdNormal = 2.15, 5.0, 5.0, 0.2, 2.0
+Velocity_WalkFwdDamaged = 1.4, 5.0, 5.0, 0.2, 2.0
+Velocity_Drag = 1.5, 4.0, 4.0, 1, 1
+Velocity_Steal = 0.7, 4.0, 4.0, 1, 1
+
+; Speed factors while invisible
+Velocity_Invisible_Linear = 6.5
+Velocity_Invisible_Angular = 3.5
+
+; acceleration
+Accel_Generic = 1.5
+Accel_Calm = 2.5
+Accel_Aggressive = 20.0
+
+;===========================================================================
+; Boars Calydonian Boar and his guards
+;===========================================================================
+
+
+[boar_calydonian]:boar_01a_hard
+$spawn = "monsters\boars\boar_01a_hard"
+visual = monsters\mutant_boar\mutant_boar_strong
+;corpse_visual = monsters\mutant_boar\mutant_boar_big_dead
+
+immunities_sect = boar_immunities_calydonian
+attack_params = boar_attack_params_calydonian
+
+
+[boar_immunities_calydonian]
+burn_immunity = 0.86 ; = 0.2 ;коэффициенты иммунитета
+strike_immunity = 0.25
+shock_immunity = 0.44 ; = 0.25
+wound_immunity = 0.1
+radiation_immunity = 0.0
+telepatic_immunity = 0.0
+chemical_burn_immunity = 1.00 ; = 3.0 ; = 0.2
+explosion_immunity = 0.4
+fire_wound_immunity = 0.08
+
+[boar_attack_params_calydonian]
+;---------------------------------------------------------------------------------------------------------------------------------------------
+; anim | time[0..1] | hit_power | impulse | impulse_dir (x,y,z) | Field of hit_test (left,right, bottom, top ) | Test Dist
+;---------------------------------------------------------------------------------------------------------------------------------------------
+;Bite
+stand_attack_0 = 0.20, 1, 50, 0.0, 0.5, 0.5, -1.0, 1.0, -1.0, 1.0, 2.3
+;Bite2
+stand_attack_1 = 0.20, 1, 50, 0.0, 0.5, 0.5, -1.0, 1.0, -1.0, 1.0, 2.3
+;Right Leg Attack
+stand_attack_2 = 0.20, 1, 50, 0.0, 1.0, 2.0, -0.8, 0.8, -1.0, 1.0, 2.5
+stand_attack_run_0 = 0.40, 2.3, 390, 0.0, 1.0, 2.0, -1.0, 1.0, -1.0, 1.0, 3.2
+stand_attack_run_left_0 = 0.40, 1.5, 390, 0.0, 1.0, 2.0, -1.0, 1.0, -1.0, 1.0, 3.2
+stand_attack_run_right_0 = 0.40, 1.5, 390, 0.0, 1.0, 2.0, -1.0, 1.0, -1.0, 1.0, 3.2
+
+; speed factors linear | angular_real | angular_path | min | max
+Velocity_Stand = 0, 3.4, 3.0, 1, 1
+Velocity_RunFwdNormal = 8.0, 3.0, 2.8, 0.4, 1
+Velocity_RunFwdDamaged = 6.5, 3.0, 2.8, 0.2, 1
+Velocity_WalkFwdDamaged = 1.3, 3.0, 2.8, 0.2, 2.0
+Velocity_WalkFwdNormal = 1.75, 3.0, 2.8, 0.02, 3.0
+Velocity_Drag = -1.0, 1.0, 1.0, 1, 1
+Velocity_Steal = 1.5, 3.0, 2.5, 1, 1
+
+; acceleration
+Accel_Generic = 1.0
+Accel_Calm = 2.0
+Accel_Aggressive = 3.5
+skin_armor = 2
+
+
+
+[boar_calydonian_guard]:boar_01a_hard
+$spawn = "monsters\boars\boar_01a_hard"
+visual = monsters\mutant_boar\mutant_boar_strong
+;corpse_visual = monsters\mutant_boar\mutant_boar_big_dead
+
+
+immunities_sect = boar_immunities_calydonian_guard
+attack_params = boar_attack_params_calydonian_guard
+
+
+[boar_immunities_calydonian_guard]
+burn_immunity = 0.96 ; = 0.2 ;коэффициенты иммунитета
+strike_immunity = 0.25
+shock_immunity = 0.74 ; = 0.25
+wound_immunity = 02
+radiation_immunity = 0.0
+telepatic_immunity = 0.0
+chemical_burn_immunity = 1.66 ; = 3.0 ; = 0.2
+explosion_immunity = 0.5
+fire_wound_immunity = 0.25
+
+[boar_attack_params_calydonian_guard]
+;---------------------------------------------------------------------------------------------------------------------------------------------
+; anim | time[0..1] | hit_power | impulse | impulse_dir (x,y,z) | Field of hit_test (left,right, bottom, top ) | Test Dist
+;---------------------------------------------------------------------------------------------------------------------------------------------
+;Bite
+stand_attack_0 = 0.20, 0.8, 50, 0.0, 0.5, 0.5, -1.0, 1.0, -1.0, 1.0, 2.3
+;Bite2
+stand_attack_1 = 0.20, 0.8, 50, 0.0, 0.5, 0.5, -1.0, 1.0, -1.0, 1.0, 2.3
+;Right Leg Attack
+stand_attack_2 = 0.20, 0.8, 50, 0.0, 1.0, 2.0, -0.8, 0.8, -1.0, 1.0, 2.5
+stand_attack_run_0 = 0.30, 1.25, 350, 0.0, 1.0, 2.0, -1.0, 1.0, -1.0, 1.0, 3.2
+stand_attack_run_left_0 = 0.30, 1.1, 350, 0.0, 1.0, 2.0, -1.0, 1.0, -1.0, 1.0, 3.2
+stand_attack_run_right_0 = 0.30, 1.1, 350, 0.0, 1.0, 2.0, -1.0, 1.0, -1.0, 1.0, 3.2
+
+; speed factors linear | angular_real | angular_path | min | max
+Velocity_Stand = 0, 3.4, 3.0, 1, 1
+Velocity_RunFwdNormal = 8.0, 3.0, 2.8, 0.4, 1
+Velocity_RunFwdDamaged = 6.5, 3.0, 2.8, 0.2, 1
+Velocity_WalkFwdDamaged = 1.3, 3.0, 2.8, 0.2, 2.0
+Velocity_WalkFwdNormal = 1.75, 3.0, 2.8, 0.02, 3.0
+Velocity_Drag = -1.0, 1.0, 1.0, 1, 1
+Velocity_Steal = 1.5, 3.0, 2.5, 1, 1
+
+; acceleration
+Accel_Generic = 1.0
+Accel_Calm = 2.0
+Accel_Aggressive = 3.5
+skin_armor = 1.5
\ No newline at end of file
diff --git a/mods/[DEV] Brotherhood/gamedata/configs/creatures/monsters.ltx b/mods/[DEV] Brotherhood/gamedata/configs/creatures/monsters.ltx
new file mode 100644
index 00000000..ebe60d76
--- /dev/null
+++ b/mods/[DEV] Brotherhood/gamedata/configs/creatures/monsters.ltx
@@ -0,0 +1,35 @@
+#include "m_flesh.ltx"
+#include "m_bloodsucker.ltx"
+#include "m_dog.ltx"
+#include "m_boar.ltx"
+#include "m_pseudodog.ltx"
+#include "m_giant.ltx"
+#include "m_controller.ltx"
+#include "m_poltergeist.ltx"
+#include "m_snork.ltx"
+#include "m_crow.ltx"
+#include "m_tushkano.ltx"
+#include "m_phantom.ltx"
+#include "m_chimera.ltx"
+#include "m_burer.ltx"
+#include "m_zombie.ltx"
+#include "m_fracture.ltx"
+#include "m_cat.ltx"
+#include "m_rat.ltx"
+#include "m_borya.ltx"
+#include "m_bibliotekar.ltx"
+;#include "m_poltergeist_build_kea.ltx"
+;--new files, created by Tronex
+#include "m_karlik.ltx"
+#include "m_lurker.ltx"
+#include "m_psysucker.ltx"
+#include "m_gigant_jumper.ltx"
+;--- Catilina - Stories from the Zone ---;
+#include "m_z_legendary.ltx"
+
+[monsters_common]
+ corpse_remove_game_time_interval = 65535 ; in hours
+ stay_after_death_time_interval = 65535 ; in hours
+
+ script_move_min_offset_from_leader = 3
+ script_move_max_offset_from_leader = 8
\ No newline at end of file
diff --git a/mods/[DEV] Brotherhood/gamedata/configs/creatures/spawn_sections.ltx b/mods/[DEV] Brotherhood/gamedata/configs/creatures/spawn_sections.ltx
new file mode 100644
index 00000000..5c03dc10
--- /dev/null
+++ b/mods/[DEV] Brotherhood/gamedata/configs/creatures/spawn_sections.ltx
@@ -0,0 +1,30 @@
+#include "spawn_sections_general.ltx"
+#include "spawn_sections_marsh.ltx"
+#include "spawn_sections_agroprom.ltx"
+#include "spawn_sections_agroprom_underground.ltx"
+#include "spawn_sections_darkscape.ltx"
+#include "spawn_sections_darkvalley.ltx"
+#include "spawn_sections_bar.ltx"
+#include "spawn_sections_escape.ltx"
+#include "spawn_sections_garbage.ltx"
+#include "spawn_sections_red_forest.ltx"
+#include "spawn_sections_hospital.ltx"
+#include "spawn_sections_yantar.ltx"
+#include "spawn_sections_military.ltx"
+#include "spawn_sections_deadcity.ltx"
+#include "spawn_sections_truck.ltx"
+#include "spawn_sections_zaton.ltx"
+#include "spawn_sections_pripyat.ltx"
+#include "spawn_sections_jupiter.ltx"
+#include "spawn_sections_labx8.ltx"
+#include "spawn_sections_labx18.ltx"
+#include "spawn_sections_labx16.ltx"
+#include "spawn_sections_bunker.ltx"
+#include "spawn_sections_sarcofag.ltx"
+#include "spawn_sections_underpass.ltx"
+#include "spawn_sections_monolith_control.ltx"
+#include "spawn_sections_warlab.ltx"
+#include "spawn_sections_mlr.ltx"
+#include "spawn_sections_lostzone.ltx"
+
+#include "spawn_sections_brotherhood.ltx"
\ No newline at end of file
diff --git a/mods/[DEV] Brotherhood/gamedata/configs/creatures/spawn_sections_brotherhood.ltx b/mods/[DEV] Brotherhood/gamedata/configs/creatures/spawn_sections_brotherhood.ltx
new file mode 100644
index 00000000..953726e7
--- /dev/null
+++ b/mods/[DEV] Brotherhood/gamedata/configs/creatures/spawn_sections_brotherhood.ltx
@@ -0,0 +1,357 @@
+
+
+[vybegallo]:stalker_strong
+$spawn = "respawn\vybegallo"
+character_profile = vybegallo
+community = ecolog
+story_id = vybegallo
+
+[bellerophon]:stalker_strong
+character_profile = bellerophon
+community = stalker
+story_id = bellerophon
+
+[sarpedon]:stalker_strong
+character_profile = sarpedon
+community = stalker
+story_id = sarpedon
+
+[hunter_orion]:stalker_strong
+character_profile = hunter_orion
+community = stalker
+story_id = hunter_orion
+
+[assault_stalker_leader_esc_5_9]:stalker_strong
+character_profile = assault_stalker_leader_esc_5_9
+community = stalker
+story_id = assault_stalker_leader_esc_5_9
+
+[assault_csky_leader_esc_5_7]:stalker_strong
+character_profile = assault_csky_leader_esc_5_7
+community = csky
+story_id = assault_csky_leader_esc_5_7
+
+[zaton_brokkr]:stalker_strong
+character_profile = zaton_brokkr
+community = ecolog
+story_id = zaton_brokkr
+
+[nr_sorokin]:stalker_strong
+character_profile = nr_sorokin
+community = stalker
+story_id = nr_sorokin
+
+[nr_scamlok]:stalker_strong
+character_profile = nr_scamlok
+community = stalker
+story_id = nr_scamlok
+
+
+[zaton_eitri]:stalker_strong
+character_profile = zaton_eitri
+community = ecolog
+story_id = zaton_eitri
+
+[marlo_stanfield]:stalker_strong
+character_profile = marlo_stanfield
+community = stalker
+story_id = marlo_stanfield
+
+[chris_partlow]:stalker_strong
+character_profile = chris_partlow
+community = stalker
+story_id = chris_partlow
+
+[paranoia_man]:stalker_strong
+character_profile = paranoia_man
+community = stalker
+story_id = paranoia_man
+
+[zaton_mercenary_1]:stalker_strong
+character_profile = zaton_mercenary_1
+community = killer
+story_id = zaton_mercenary_1
+
+[zaton_mercenary_courrier_1]:stalker_strong
+character_profile = zaton_mercenary_courrier_1
+community = killer
+story_id = zaton_mercenary_courrier_1
+
+[zaton_mercenary_2]:stalker_strong
+character_profile = zaton_mercenary_2
+community = killer
+story_id = zaton_mercenary_2
+
+[anna_morphine]:stalker_strong
+character_profile = anna_morphine
+community = stalker
+story_id = anna_morphine
+
+[ecologist_sidorovich]:stalker_strong
+character_profile = ecologist_sidorovich
+community = ecolog
+story_id = ecologist_sidorovich
+
+[alyosha_shyogolov]:stalker_strong
+character_profile = alyosha_shyogolov
+community = ecolog
+story_id = alyosha_shyogolov
+
+[bh_mozgotlen]:stalker_zombied
+character_profile = bh_mozgotlen
+community = zombied
+story_id = bh_mozgotlen
+
+[bh_rat_guards_naruchnik]:stalker_strong
+character_profile = bh_rat_guards_naruchnik
+community = stalker
+story_id = bh_rat_guards_naruchnik
+
+[bh_rat_trap_leader]:stalker_strong
+character_profile = bh_rat_trap_leader
+community = bandit
+story_id = bh_rat_trap_leader
+
+[nr_vova_bandit_1]:stalker_strong
+character_profile = nr_vova_bandit_1
+community = bandit
+story_id = nr_vova_bandit_1
+
+[nr_pasha_bandit_2]:stalker_strong
+character_profile = nr_pasha_bandit_2
+community = bandit
+story_id = nr_pasha_bandit_2
+
+[erast_fandorin]:stalker_strong
+character_profile = erast_fandorin
+community = stalker
+story_id = erast_fandorin
+
+[flavio_becca]:stalker_strong
+character_profile = flavio_becca
+community = ecolog
+story_id = flavio_becca
+
+[nr_ecologist_rydzyk]:stalker_strong
+character_profile = nr_ecologist_rydzyk
+community = ecolog
+story_id = nr_ecologist_rydzyk
+
+[nr_ecologist_1]:stalker_strong
+character_profile = nr_ecologist_1
+community = ecolog
+story_id = nr_ecologist_1
+
+[nr_ecologist_2]:stalker_strong
+character_profile = nr_ecologist_2
+community = ecolog
+story_id = nr_ecologist_2
+
+[nr_ecologist_3]:stalker_strong
+character_profile = nr_ecologist_3
+community = ecolog
+story_id = nr_ecologist_3
+
+[nr_ambush_1]:stalker_strong
+character_profile = nr_ambush_1
+community = army
+story_id = nr_ambush_1
+
+[nr_ambush_2]:stalker
+character_profile = nr_ambush_2
+community = army
+story_id = nr_ambush_2
+
+[nr_ambush_3]:stalker
+character_profile = nr_ambush_3
+community = army
+story_id = nr_ambush_3
+
+[nr_ambush_4]:stalker
+character_profile = nr_ambush_4
+community = army
+story_id = nr_ambush_4
+
+[nr_ambush_5]:stalker
+character_profile = nr_ambush_5
+community = army
+story_id = nr_ambush_5
+
+[zaton_achilles]:stalker_strong
+character_profile = zaton_achilles
+community = stalker
+story_id = zaton_achilles
+
+[sasha_tolstoy]:stalker_strong
+character_profile = sasha_tolstoy
+community = csky
+story_id = sasha_tolstoy
+
+[nr_iliaz]:stalker_strong
+character_profile = nr_iliaz
+community = stalker
+story_id = nr_iliaz
+
+[nr_bezsonik]:stalker_strong
+character_profile = nr_bezsonik
+community = freedom
+story_id = nr_bezsonik
+
+[bh_gutalin]:stalker_strong
+character_profile = bh_gutalin
+community = stalker
+story_id = bh_gutalin
+
+[butcher_tug_1]:stalker_strong
+character_profile = butcher_tug_1
+community = stalker
+story_id = butcher_tug_1
+
+
+[butcher_tug_2]:stalker_strong
+character_profile = butcher_tug_2
+community = stalker
+story_id = butcher_tug_2
+
+[dolg_vadim_bloodsucker]:stalker
+character_profile = dolg_vadim_bloodsucker
+community = dolg
+story_id = dolg_vadim_bloodsucker
+
+[dolg_sergey_bloodsucker]:stalker
+character_profile = dolg_sergey_bloodsucker
+community = dolg
+story_id = dolg_sergey_bloodsucker
+
+[dolg_sasha_bloodsucker]:stalker
+character_profile = dolg_sasha_bloodsucker
+community = dolg
+story_id = dolg_sasha_bloodsucker
+
+[dolg_artyom_bloodsucker]:stalker
+character_profile = dolg_artyom_bloodsucker
+community = dolg
+story_id = dolg_artyom_bloodsucker
+
+[dolg_ilya_bloodsucker]:stalker_strong
+character_profile = dolg_ilya_bloodsucker
+community = dolg
+story_id = dolg_ilya_bloodsucker
+
+
+[jupiter_monk]:stalker_strong
+character_profile = jupiter_monk
+community = stalker
+story_id = jupiter_monk
+
+[controller_victim_1]:stalker_strong
+character_profile = controller_victim_1
+community = stalker
+story_id = controller_victim_1
+
+[nr_dead_convict_1]:stalker_ragdoll
+character_profile = nr_dead_convict_1
+community = stalker
+story_id = nr_dead_convict_1
+
+
+[nr_dead_convict_2]:stalker
+character_profile = nr_dead_convict_2
+community = freedom
+story_id = nr_dead_convict_2
+
+[nr_executioner_1]:stalker_strong
+character_profile = nr_executioner_1
+community = stalker
+story_id = nr_executioner_1
+
+[nr_executioner_2]:stalker_strong
+character_profile = nr_executioner_2
+community = stalker
+story_id = nr_executioner_2
+
+[nr_executioner_3]:stalker_strong
+character_profile = nr_executioner_3
+community = stalker
+story_id = nr_executioner_3
+
+[nr_loyshik]:stalker_strong
+character_profile = nr_loyshik
+community = freedom
+story_id = nr_loyshik
+
+[bh_shlitzer]:stalker_strong
+character_profile = bh_shlitzer
+community = stalker
+story_id = bh_shlitzer
+
+[bh_badger]:stalker_strong
+character_profile = bh_badger
+community = army
+story_id = bh_badger
+
+[bh_ironchain]:stalker_strong
+character_profile = bh_ironchain
+community = stalker
+story_id = bh_ironchain
+
+[nr_trapper_missing_hunter_1]:stalker_strong
+character_profile = nr_trapper_missing_hunter_1
+community = stalker
+story_id = nr_trapper_missing_hunter_1
+
+[nr_trapper_missing_hunter_2]:stalker_strong
+character_profile = nr_trapper_missing_hunter_2
+community = stalker
+story_id = nr_trapper_missing_hunter_2
+
+[nr_trapper_missing_hunter_3]:stalker_strong
+character_profile = nr_trapper_missing_hunter_3
+community = stalker
+story_id = nr_trapper_missing_hunter_3
+
+[nr_sasha_baltunov]:stalker_strong
+character_profile = nr_sasha_baltunov
+community = stalker
+story_id = nr_sasha_baltunov
+
+[nr_starik_murdered]:stalker_strong
+character_profile = nr_starik_murdered
+community = csky
+story_id = nr_starik_murdered
+
+
+
+
+
+
+
+
+
+
+----- Atomic Crusader
+
+[ac_pri_medic_monolith]:stalker_strong
+character_profile = ac_pri_medic_monolith
+community = monolith
+story_id = ac_pri_medic_monolith
+
+[ac_blue_winter]:stalker_strong
+character_profile = ac_blue_winter
+community = monolith
+story_id = ac_blue_winter
+
+[ac_balthazar]:stalker_strong
+character_profile = ac_balthazar
+community = monolith
+story_id = ac_balthazar
+
+[ac_caspar]:stalker_strong
+character_profile = ac_caspar
+community = monolith
+story_id = ac_caspar
+
+[ac_melchior]:stalker_strong
+character_profile = ac_melchior
+community = monolith
+story_id = ac_melchior
\ No newline at end of file
diff --git a/mods/[DEV] Brotherhood/gamedata/configs/gameplay/character_desc_bar.xml b/mods/[DEV] Brotherhood/gamedata/configs/gameplay/character_desc_bar.xml
new file mode 100644
index 00000000..f0b8c153
--- /dev/null
+++ b/mods/[DEV] Brotherhood/gamedata/configs/gameplay/character_desc_bar.xml
@@ -0,0 +1,1557 @@
+
+
+
+
+
+
+ bar_barmen_name
+ ui_inGame2_barman
+
+ bar_barmen_bio
+ bar_visitors_barman_stalker_trader
+ trader
+ stalker_terrain
+
+ 18490
+ 2408
+ actors\barman\barman
+
+ -1
+
+ bar_visitors_barman_stalker_trader_start_dialog
+ dm_init_batender
+
+ barkeep_living_legend
+ barkeep_100rads
+
+ dm_ordered_task_dialog
+ dm_ordered_task_completed_dialog
+ dm_ordered_task_cancel_dialog
+ dm_important_documents
+
+ debt_register
+ debt_pay_off
+ buy_route
+
+
+
+ dm_broker_dialog
+
+
+ devushka_4_help
+ devushka_help
+
+
+ barman_north_0
+ barkeep_scamlok_believe_0
+ barkeep_scamlok_scammer_0
+ nr_sahsa_baltun_barkeep_0
+
+ actor_break_dialog
+
+
+
+
+
+ bar_bar_guard_name
+ ui_inGame2_garik_guard
+
+ bar_bar_guard_bio
+ bar_visitors_garik_stalker_guard
+ stalker stalker_terrain
+
+ 11327
+ 976
+ actors\stalker_neutral\stalker_bar_security
+ characters_voice\human\stalker_1\
+ -1
+
+ [spawn] \n
+ wpn_ak74 \n
+ ammo_5.45x39_fmj \n
+
+
+#include "gameplay\character_criticals.xml"
+#include "gameplay\character_dialogs.xml"
+
+ actor_break_dialog
+
+
+
+
+
+ bar_bar_guard2_name
+ ui_inGame2_zhorik_guard
+
+ bar_bar_guard2_bio
+ bar_visitors_zhorik_stalker_guard2
+ stalker stalker_terrain
+
+ 10516
+ 817
+ actors\stalker_neutral\stalker_bar_security
+ characters_voice\human\stalker_1\
+ -1
+
+ [spawn] \n
+ wpn_ak74 \n
+ ammo_5.45x39_fmj \n
+
+#include "gameplay\character_criticals.xml"
+#include "gameplay\character_dialogs.xml"
+
+
+
+
+
+ bar_voronin_name
+ ui_inGame2_voronin
+
+ bar_voronin_bio
+ bar_dolg_leader
+ dolg stalker_terrain
+
+ 18546
+ 1215
+ actors\stalker_dolg\stalker_do_komandir
+ characters_voice\human\dolg_1\
+ 0
+
+ [spawn] \n
+ wpn_sig220 \n
+ ammo_11.43x23_hydro \n
+ wpn_val \n
+ ammo_9x39_pab9 = 1 \n
+#include "gameplay\supplies\character_food.xml"
+#include "gameplay\supplies\character_drugs.xml"
+
+#include "gameplay\character_criticals.xml"
+ hello_dialog
+
+ voronin_living_legend
+ voronin_living_legend_finish
+ voronin_mortal_sin
+ voronin_mortal_sin_envoy
+ voronin_mortal_sin_report
+ voronin_mortal_sin_ambush
+ voronin_mortal_sin_zone_hero
+ voronin_operation_afterglow
+ voronin_operation_afterglow_transmission_report
+
+ dm_important_documents
+ dm_lifestyle
+ story_dolg_lider_mlr
+ dm_ordered_task_dialog
+ dm_ordered_task_completed_dialog
+
+
+ voronin_bloodsucker_snitch_0
+ voronin_bloodsucker_botched_0
+ voronin_bloodsucker_botched_1
+ voronin_bloodsucker_botched_2
+ voronin_bloodsucker_botched_2_alt
+ voronin_bloodsucker_botched_3
+
+ actor_break_dialog
+
+
+
+
+
+ bar_kicenko_name
+ ui_inGame2_kitsenko
+
+ sim_dolg_veteran_bio
+ bar_zastava_2_commander
+ dolg stalker_terrain
+
+ 14034
+ 524
+ actors\stalker_dolg\stalker_do_balon_5
+ characters_voice\human\dolg_1\
+ 0
+
+ [spawn] \n
+ wpn_walther \n
+ ammo_9x19_fmj \n
+ wpn_abakan \n
+ ammo_5.45x39_fmj \n
+ detector_advanced \n
+ device_torch \n
+#include "gameplay\supplies\character_food.xml"
+#include "gameplay\supplies\character_drugs.xml"
+
+#include "gameplay\character_criticals.xml"
+#include "gameplay\character_dialogs.xml"
+
+
+
+ st_bar_duty_security_squad_leader_name
+ ui_inGame2_Dolg_4
+
+ . .
+ bar_duty_security_squad_leader
+ dolg stalker_terrain
+ characters_voice\human\dolg_1\
+ 10668
+ 2303
+
+ actors\stalker_dolg\stalker_dolg_4
+
+ [spawn] \n
+ wpn_groza = 1 \n
+ ammo_9x39_pab9 = 1 \n
+ wpn_usp \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\supplies\character_drugs_mil.xml"
+
+#include "gameplay\character_criticals.xml"
+#include "gameplay\character_dialogs_no_guide.xml"
+
+
+
+
+
+ GENERATE_NAME_stalker
+ ui_inGame2_Dolg_3
+
+ . .
+ bar_dolg_general_zoneguard_stalker
+ dolg
+ stalker_terrain
+
+ 10084
+ -2060
+ actors\stalker_dolg\stalker_dolg_3
+ characters_voice\human\dolg_1\
+ 0
+
+ [spawn] \n
+ wpn_walther \n
+ ammo_9x19_fmj \n
+ wpn_abakan \n
+ ammo_5.45x39_fmj \n
+ device_torch \n
+#include "gameplay\supplies\character_items.xml"
+#include "gameplay\supplies\character_food.xml"
+#include "gameplay\supplies\character_drugs.xml"
+
+#include "gameplay\character_criticals.xml"
+#include "gameplay\character_dialogs.xml"
+ dm_broker_dialog
+ actor_break_dialog
+
+
+
+
+
+ bar_petrenko_name
+ ui_inGame2_petrenko
+
+ bar_petrenko_bio
+ bar_dolg_general_petrenko_stalker
+ dolg
+ stalker_terrain
+
+ 14676
+ 270
+ actors\stalker_dolg\stalker_do_balon_3
+ characters_voice\human\dolg_1\
+ 0
+
+ [spawn] \n
+ wpn_walther \n
+ ammo_9x19_fmj \n
+ wpn_groza \n
+ ammo_9x39_ap \n
+#include "gameplay\supplies\character_food.xml"
+#include "gameplay\supplies\character_drugs.xml"
+
+#include "gameplay\character_criticals.xml"
+
+ dm_init_trader
+ petrenko_questlines_about_dialog
+ drx_sl_bar_dolg_general_petrenko_stalker_game_start_dialog_1
+ drx_sl_cf_task_completed_dialog
+ drx_sl_task_completed_dialog
+ dm_ordered_task_completed_dialog
+ drx_sl_bar_dolg_general_petrenko_stalker_meet_dialog
+ dm_ordered_task_dialog
+ drx_sl_change_faction_dialog
+ buy_route
+ actor_break_dialog
+
+
+
+
+
+ bar_visitors_stalker_mechanic_name
+ ui_inGame2_dolg_tech
+
+ . .
+ bar_visitors_stalker_mechanic
+ dolg
+ stalker_terrain
+
+ characters_voice\human\dolg_1\
+ 1692
+ 376
+
+ actors\stalker_dolg\stalker_dolg_mehanik
+
+#include "gameplay\character_criticals.xml"
+ dm_init_trader
+ dm_init_mechanic
+ bar_visitors_stalker_mechanic_start
+
+ story_dolg_m
+
+ drx_sl_task_completed_dialog
+ dm_ordered_task_completed_dialog
+ drx_sl_bar_visitors_stalker_mechanic_meet_dialog
+ drx_sl_mechanic_task_dialog
+ dm_tech_repair
+ dm_encrypted_pda
+ zat_b3_stalker_tech_drink_1
+ zat_b3_stalker_tech_drink_2
+ zat_b3_stalker_tech_drink_3
+ awr_tech_dialog_drink_1
+ actor_break_dialog
+
+
+
+
+
+
+ GENERATE_NAME_sergeant
+ ui_inGame2_Dolg_3
+
+ An experienced stalker. No detailed information is available.
+
+ bodyguard_duty_medic_bar_general
+ dolg
+ stalker_terrain
+ characters_voice\human\dolg_1\
+
+ 3000
+
+ 900
+
+ actors\stalker_dolg\stalker_dolg_3
+
+
+ [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"
+ actor_break_dialog
+
+
+
+
+
+ bar_informator_mlr_name
+ ui_inGame2_bandit_4
+
+ An experienced stalker. No detailed information is available.
+
+ bar_informator_mlr
+ trader
+ stalker_terrain
+
+
+ 5000
+
+ 1000
+
+ actors\stalker_bandit\stalker_bandit_4
+
+
+ [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"
+ talk_to_inf_trader
+ talk_to_maps
+ buy_information_from_trader
+ inf_trader_buy_transitions
+ top_10_task_about_dialog
+ top_10_task_finish_dialog
+ dm_bribe
+ actor_break_dialog
+
+
+
+
+
+ bar_dolg_medic_name
+ ui_inGame2_medicine
+
+ No available Information.
+
+ bar_dolg_medic
+ dolg
+ stalker_terrain
+
+
+ 1000
+ 1500
+
+ actors\stalker_dolg\stalker_dolg_2a_face_medicine
+ characters_voice\human\dolg_1\
+ 0
+
+
+ [spawn] \n
+ wpn_walther \n
+ ammo_9x19_fmj \n
+#include "gameplay\supplies\character_food.xml" \n
+#include "gameplay\supplies\character_drugs.xml"
+
+
+#include "gameplay\character_criticals.xml">
+
+ zat_b22_stalker_medic_start
+ dm_init_medic
+ dm_medic_general
+ bar_dolg_medic_talking
+ dm_ordered_task_dialog
+ dm_ordered_task_completed_dialog
+
+
+ bar_dolg_medic_hunter_0
+ bar_dolg_medic_hunter_0_time
+ bar_dolg_medic_hunter_0_no
+ bar_dolg_medic_hunter_0_yes
+ bar_dolg_medic_hunter_1
+ bar_dolg_medic_hunter_2
+ bar_dolg_medic_hunter_3
+ bar_dolg_medic_hunter_4
+ bar_dolg_medic_hunter_0_snitch
+ bar_dolg_medic_hunter_about_artyom
+ bar_dolg_medic_hunter_5
+
+
+ actor_break_dialog
+
+
+
+
+
+
+
+
+ guid_bar_stalker_navigator_name
+ ui_inGame2_neutral_2_mask
+
+ No information is available.
+
+ guid_bar_stalker_navigator
+ stalker stalker_terrain
+ characters_voice\human\stalker_3\
+
+ 5800
+
+ 1000
+
+ actors\stalker_neutral\stalker_neutral2d_mask
+
+ [spawn] \n
+ wpn_vintorez \n
+ ammo_9x39_pab9 = 2 \n
+ wpn_beretta \n
+ ammo_9x19_fmj = 2 \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_bar
+ travel_guid_bar
+ meet_guid_bar_list
+ actor_break_dialog
+
+
+
+
+
+
+
+
+
+
+ bar_arny_name
+ ui_inGame2_arnie
+
+ . .
+ bar_arena_manager
+ trader stalker_terrain
+
+ 6290
+ 265
+ actors\neytral\stalker_neytral_balon_6
+ characters_voice\human\stalker_1\
+ -1
+
+ [spawn] \n
+ wpn_lr300 \n
+ ammo_5.56x45_ap = 1 \n
+#include "gameplay\supplies\character_food.xml"
+#include "gameplay\supplies\character_drugs.xml"
+
+#include "gameplay\character_criticals.xml"
+
+
+ bar_arena_manager_start
+ bar_arena_manager_rules
+ bar_arena_manager_info
+ bar_arena_man_job
+ bar_arena_manager_game
+ actor_break_dialog
+
+
+
+
+ bar_lelik_name
+ ui_inGame2_lelik_guard
+
+ . .
+ bar_arena_guard
+ stalker stalker_terrain
+
+ 10425
+ 847
+ actors\stalker_neutral\stalker_bar_security
+ characters_voice\human\stalker_1\
+ -1
+
+ [spawn] \n
+ wpn_ak74 \n
+ ammo_5.45x39_fmj \n
+#include "gameplay\supplies\character_food.xml"
+#include "gameplay\supplies\character_drugs.xml"
+
+#include "gameplay\character_criticals.xml"
+#include "gameplay\character_dialogs.xml"
+
+
+
+
+
+ bar_beast_name
+ ui_inGame2_Zombied_4
+
+ . .
+ bar_arena_savage
+ arena_enemy stalker_terrain
+
+ 17925
+ -1269
+ actors\stalker_zombied\stalker_zombied_4
+ characters_voice\human\zombied_3\
+ 0
+
+ [spawn] \n
+ wpn_spas12 \n
+ ammo_12x70_buck \n
+
+#include "gameplay\character_criticals.xml"
+#include "gameplay\character_dialogs.xml"
+
+
+
+
+
+
+ GENERATE_NAME_stalker
+ ui_inGame2_neutral_1
+
+ bar_arena_stalker
+ bar_arena_stalker_1
+ arena_enemy stalker_terrain
+ 1648
+ 2487
+ characters_voice\human\stalker_1\
+ -1
+ actors\stalker_neutral\stalker_neutral_1
+
+ [spawn] \n
+ wpn_pm \n
+ ammo_9x18_fmj = 1 \n
+ device_torch \n
+#include "gameplay\supplies\character_drugs.xml"
+
+#include "gameplay\character_criticals.xml"
+
+
+
+
+ GENERATE_NAME_stalker
+ ui_inGame2_neutral_2_mask
+
+ bar_arena_stalker
+ bar_arena_stalker_2
+ arena_enemy stalker_terrain
+ 1956
+ 2099
+ actors\stalker_neutral\stalker_neutral2g_mask
+ characters_voice\human\stalker_3\
+ -1
+
+ [spawn] \n
+ wpn_mp5 \n
+ ammo_9x19_pbp = 1 \n
+#include "gameplay\supplies\character_drugs.xml"
+
+#include "gameplay\character_criticals.xml"
+
+
+
+
+ GENERATE_NAME_stalker
+ ui_inGame2_neutral_2_mask
+
+ bar_arena_stalker
+ bar_arena_stalker_3_1
+ arena_enemy stalker_terrain
+ 2517
+ -253
+ actors\stalker_neutral\stalker_neutral_2_mas3
+ characters_voice\human\stalker_2\
+ -1
+
+ [spawn] \n
+ wpn_toz34 \n
+ ammo_12x76_zhekan = 1 \n
+#include "gameplay\supplies\character_drugs.xml"
+
+#include "gameplay\character_criticals.xml"
+
+
+
+ GENERATE_NAME_stalker
+ ui_inGame2_neutral_2_mask
+
+ bar_arena_stalker
+ bar_arena_stalker_3_2
+ arena_enemy stalker_terrain
+ 1968
+ -1138
+ actors\stalker_neutral\stalker_neutral2g_mask
+ characters_voice\human\stalker_3\
+ -1
+
+ [spawn] \n
+ wpn_toz34 \n
+ ammo_12x76_zhekan = 1 \n
+#include "gameplay\supplies\character_drugs.xml"
+
+#include "gameplay\character_criticals.xml"
+
+
+
+
+
+ GENERATE_NAME_bandit
+ ui_inGame2_bandit_1_mask
+
+ bar_arena_stalker
+ bar_arena_stalker_4_1
+ arena_enemy stalker_terrain
+ 1874
+ 128
+ actors\stalker_bandit\stalker_bandit1b_mask
+ characters_voice\human\bandit_2\
+ -1
+
+ [spawn] \n
+ wpn_spas12 \n
+ ammo_12x70_buck = 1 \n
+#include "gameplay\supplies\character_drugs.xml"
+
+#include "gameplay\character_criticals.xml"
+
+
+
+ GENERATE_NAME_bandit
+ ui_inGame2_bandit_2
+
+ bar_arena_stalker
+ bar_arena_stalker_4_2
+ arena_enemy stalker_terrain
+ 1905
+ -377
+ actors\stalker_bandit\stalker_bandit_2
+ characters_voice\human\bandit_3\
+ -1
+
+ [spawn] \n
+ wpn_ak74 = 1, 0, 1, 0 \n
+ ammo_5.45x39_ap = 1 \n
+#include "gameplay\supplies\character_drugs.xml"
+
+#include "gameplay\character_criticals.xml"
+
+
+
+ GENERATE_NAME_bandit
+ ui_inGame2_bandit_1b
+
+ bar_arena_stalker
+ bar_arena_stalker_4_3
+ arena_enemy stalker_terrain
+ 7337
+ -2143
+ actors\stalker_bandit\stalker_bandit1b
+ characters_voice\human\bandit_1\
+ -1
+
+ [spawn] \n
+ wpn_ak74 = 1, 0, 1, 0 \n
+ ammo_5.45x39_ap = 1 \n
+#include "gameplay\supplies\character_drugs.xml"
+
+#include "gameplay\character_criticals.xml"
+
+
+
+
+ GENERATE_NAME_stalker
+ ui_inGame2_neutral_1
+
+ bar_arena_stalker
+ bar_arena_stalker_4_4
+ stalker stalker_terrain
+ 12378
+ -911
+ characters_voice\human\stalker_1\
+ -1
+ actors\stalker_neutral\stalker_neutral1a
+
+ [spawn] \n
+ wpn_bm16 \n
+ ammo_12x70_buck \n
+ device_torch \n
+#include "gameplay\supplies\character_drugs.xml"
+
+#include "gameplay\character_criticals.xml"
+
+
+
+ GENERATE_NAME_stalker
+ ui_inGame2_neutral_1
+
+ bar_arena_stalker
+ bar_arena_stalker_4_5
+ stalker stalker_terrain
+ 9629
+ 2016
+ characters_voice\human\stalker_1\
+ -1
+ actors\stalker_neutral\stalker_neutral1b
+
+ [spawn] \n
+ wpn_ak74u \n
+ ammo_5.45x39_fmj \n
+ device_torch \n
+#include "gameplay\supplies\character_drugs.xml"
+
+#include "gameplay\character_criticals.xml"
+
+
+
+
+ GENERATE_NAME_stalker
+ ui_inGame2_Soldier_4
+
+ bar_arena_stalker
+ Soldier_military
+ bar_arena_stalker_5_1
+ arena_enemy
+ stalker_terrain
+ characters_voice\human\military_3\
+ -1
+ 5697
+ 324
+ actors\stalker_soldier\stalker_soldier_4
+
+ [spawn] \n
+ wpn_val \n
+ ammo_9x39_pab9 = 1 \n
+
+#include "gameplay\character_criticals.xml"
+
+
+
+ GENERATE_NAME_stalker
+ ui_inGame2_Soldier_4
+
+ bar_arena_stalker
+ Soldier_military
+ bar_arena_stalker_5_2
+ arena_enemy stalker_terrain
+ characters_voice\human\military_3\
+ -1
+ 6474
+ -23
+ actors\stalker_soldier\stalker_soldier_4
+
+ [spawn] \n
+ wpn_groza \n
+ ammo_9x39_pab9 = 1 \n
+
+#include "gameplay\character_criticals.xml"
+
+
+
+
+ GENERATE_NAME_stalker
+ ui_inGame2_bandit_3
+
+ sim_bandit_general_bio
+ bar_arena_stalker_6_1
+ arena_enemy stalker_terrain
+ 2254
+ 340
+ actors\stalker_bandit\stalker_bandit_3
+ characters_voice\human\bandit_2\
+ -1
+
+ [spawn] \n
+ wpn_bm16 \n
+ ammo_12x70_buck \n
+#include "gameplay\supplies\character_drugs.xml"
+
+#include "gameplay\character_criticals.xml"
+
+
+
+ GENERATE_NAME_stalker
+ ui_inGame2_bandit_4
+
+ sim_bandit_general_bio
+ bar_arena_stalker_6_2
+ arena_enemy stalker_terrain
+ 1190
+ 601
+ actors\stalker_bandit\stalker_bandit_4
+ characters_voice\human\bandit_2\
+ -1
+
+ [spawn] \n
+ wpn_toz34 \n
+ ammo_12x70_buck = 1 \n
+#include "gameplay\supplies\character_drugs.xml"
+
+#include "gameplay\character_criticals.xml"
+
+
+
+ GENERATE_NAME_stalker
+ ui_inGame2_bandit_4
+
+ sim_bandit_general_bio
+ bar_arena_stalker_6_3
+ arena_enemy stalker_terrain
+ 1176
+ -928
+ actors\stalker_bandit\stalker_bandit_4
+ characters_voice\human\bandit_2\
+ -1
+
+ [spawn] \n
+ wpn_ak74u \n
+ ammo_5.45x39_fmj \n
+#include "gameplay\supplies\character_drugs.xml"
+
+#include "gameplay\character_criticals.xml"
+
+
+
+ GENERATE_NAME_stalker
+ ui_inGame2_bandit_5
+
+ sim_bandit_general_bio
+ bar_arena_stalker_6_4
+ arena_enemy stalker_terrain
+ 697
+ 2189
+ actors\stalker_bandit\stalker_bandit5a
+ characters_voice\human\bandit_2\
+ -1
+
+ [spawn] \n
+ wpn_mp5 \n
+ ammo_9x19_pbp = 1 \n
+#include "gameplay\supplies\character_drugs.xml"
+
+#include "gameplay\character_criticals.xml"
+
+
+
+ GENERATE_NAME_stalker
+ ui_inGame2_bandit_exo
+
+ sim_bandit_general_bio
+ bar_arena_stalker_6_5
+ arena_enemy stalker_terrain
+ 10947
+ -918
+ actors\stalker_neutral\stalker_neutral4a
+ characters_voice\human\bandit_2\
+ -1
+
+ [spawn] \n
+ wpn_ak74 = 1, 0, 1, 0 \n
+ ammo_5.45x39_ap = 1 \n
+#include "gameplay\supplies\character_drugs.xml"
+
+#include "gameplay\character_criticals.xml"
+
+
+
+ GENERATE_NAME_stalker
+ ui_inGame2_bandit_exo
+
+ sim_bandit_general_bio
+ bar_arena_stalker_6_6
+ arena_enemy stalker_terrain
+ 10708
+ 2459
+ actors\stalker_neutral\stalker_neutral4a
+ characters_voice\human\bandit_2\
+ -1
+
+ [spawn] \n
+ wpn_ak74 = 1, 0, 1, 0 \n
+ ammo_5.45x39_ap = 1 \n
+#include "gameplay\supplies\character_drugs.xml"
+
+#include "gameplay\character_criticals.xml"
+
+
+
+
+ GENERATE_NAME_stalker
+ ui_inGame2_neutral_4
+
+ sim_stalker_master_bio
+ bar_arena_stalker_7
+ arena_enemy stalker_terrain
+ 11726
+ 1833
+ characters_voice\human\stalker_3\
+ 0
+ actors\stalker_neutral\stalker_neutral_4
+
+ [spawn] \n
+ wpn_fn2000 \n
+ ammo_5.56x45_ap = 1 \n
+ device_torch \n
+#include "gameplay\supplies\character_drugs.xml"
+
+#include "gameplay\character_criticals.xml"
+
+
+
+
+ GENERATE_NAME_stalker
+ ui_inGame2_neutral_4
+
+ sim_stalker_master_bio
+ bar_arena_stalker_8_1
+ arena_enemy stalker_terrain
+ 12997
+ 1730
+ characters_voice\human\stalker_3\
+ 0
+ actors\stalker_neutral\stalker_neutral_4
+
+ [spawn] \n
+ wpn_g36 \n
+ ammo_5.56x45_ss190 = 1 \n
+#include "gameplay\supplies\character_drugs.xml"
+
+#include "gameplay\character_criticals.xml"
+
+
+
+ GENERATE_NAME_stalker
+ ui_inGame2_neutral_4
+
+ sim_stalker_master_bio
+ bar_arena_stalker_8_2
+ arena_enemy stalker_terrain
+ 11915
+ -2205
+ characters_voice\human\stalker_3\
+ 0
+ actors\stalker_neutral\stalker_neutral_4
+
+ [spawn] \n
+ wpn_g36 \n
+ ammo_5.56x45_ss190 = 1 \n
+#include "gameplay\supplies\character_drugs.xml"
+
+#include "gameplay\character_criticals.xml"
+
+
+
+ GENERATE_NAME_stalker
+ ui_inGame2_neutral_4
+
+ sim_stalker_master_bio
+ bar_arena_stalker_8_3
+ arena_enemy stalker_terrain
+ 12527
+ 972
+ characters_voice\human\stalker_3\
+ 0
+ actors\stalker_neutral\stalker_neutral_4
+
+ [spawn] \n
+ wpn_g36 \n
+ ammo_5.56x45_ss190 = 1 \n
+#include "gameplay\supplies\character_drugs.xml"
+
+#include "gameplay\character_criticals.xml"
+
+
+
+ GENERATE_NAME_stalker
+ ui_inGame2_neutral_4
+
+ sim_stalker_master_bio
+ bar_arena_stalker_8_4
+ arena_enemy stalker_terrain
+ 12191
+ -433
+ characters_voice\human\stalker_3\
+ 0
+ actors\stalker_neutral\stalker_neutral_4
+
+ [spawn] \n
+ wpn_g36 \n
+ ammo_5.56x45_ss190 = 1 \n
+#include "gameplay\supplies\character_drugs.xml"
+
+#include "gameplay\character_criticals.xml"
+
+
+
+
+
+
+
+ GENERATE_NAME_sergeant
+ ui_inGame2_Dolg_2
+
+ An experienced stalker. No detailed information is available.
+ total_duty_one_h
+ dolg
+ stalker_terrain
+ characters_voice\human\dolg_1\
+ 993
+ 558
+
+ actors\stalker_dolg\stalker_dolg2a
+
+ [spawn] \n
+ wpn_abakan \n
+ ammo_5.45x39_fmj = 1 \n
+#include "gameplay\supplies\character_items_2.xml"
+#include "gameplay\supplies\character_drugs_2.xml"
+
+
+#include "gameplay\character_criticals.xml"
+#include "gameplay\character_dialogs.xml"
+
+
+
+ GENERATE_NAME_stalker
+ ui_inGame2_Freedom_2
+
+ An experienced stalker. No detailed information is available.
+ total_freeman_one_h
+ freedom
+ stalker_terrain
+ characters_voice\human\freedom_3\
+ 910
+ 1898
+
+ actors\stalker_freedom\stalker_freedom2a
+
+ [spawn] \n
+ wpn_abakan \n
+ ammo_5.45x39_fmj = 1 \n
+#include "gameplay\supplies\character_items_2.xml"
+#include "gameplay\supplies\character_food.xml"
+#include "gameplay\supplies\character_drugs_2.xml"
+
+
+#include "gameplay\character_criticals.xml"
+#include "gameplay\character_dialogs.xml"
+
+
+
+ GENERATE_NAME_stalker
+ ui_inGame2_neutral_2_mask
+
+ An experienced stalker. No detailed information is available.
+ total_stalker_left_one
+ stalker
+ stalker_terrain
+ characters_voice\human\stalker_2\
+ 2950
+
+ 1230
+ actors\stalker_neutral\stalker_neutral_2_mask
+
+ [spawn] \n
+ wpn_ak74 \n
+ ammo_5.45x39_fmj = 1 \n
+#include "gameplay\supplies\character_items_2.xml"
+#include "gameplay\supplies\character_food.xml"
+#include "gameplay\supplies\character_drugs_2.xml"
+
+#include "gameplay\character_criticals.xml"
+#include "gameplay\character_dialogs.xml"
+
+
+
+ GENERATE_NAME_stalker
+ ui_inGame2_neutral_2
+
+ An experienced stalker. No detailed information is available.
+ total_stalker_right_one
+ stalker
+ stalker_terrain
+ characters_voice\human\stalker_3\
+ 2518
+
+ 2144
+ actors\stalker_neutral\stalker_neutral_2
+
+ [spawn] \n
+ wpn_ak74 \n
+ ammo_5.45x39_fmj = 1 \n
+#include "gameplay\supplies\character_items_2.xml"
+#include "gameplay\supplies\character_food.xml"
+#include "gameplay\supplies\character_drugs_2.xml"
+
+#include "gameplay\character_criticals.xml"
+#include "gameplay\character_dialogs.xml"
+
+
+
+ GENERATE_NAME_stalker
+ ui_inGame2_neutral_2
+
+ An experienced stalker. No detailed information is available.
+ total_group_stalkers_1
+ stalker
+ stalker_terrain
+ characters_voice\human\stalker_3\
+ 2051
+
+ -234
+ actors\stalker_neutral\stalker_neutral2c
+
+ [spawn] \n
+ wpn_ak74u \n
+ ammo_5.45x39_fmj = 3 \n
+#include "gameplay\supplies\character_items_2.xml"
+#include "gameplay\supplies\character_food.xml"
+#include "gameplay\supplies\character_drugs_2.xml"
+
+#include "gameplay\character_criticals.xml"
+#include "gameplay\character_dialogs.xml"
+
+
+
+ GENERATE_NAME_stalker
+ ui_inGame2_neutral_2
+
+ An experienced stalker. No detailed information is available.
+ total_group_stalkers_2
+ stalker
+ stalker_terrain
+ characters_voice\human\stalker_3\
+ 2228
+
+ 1478
+ actors\stalker_neutral\stalker_neutral2d
+
+ [spawn] \n
+ wpn_ak74u \n
+ ammo_5.45x39_fmj = 3 \n
+#include "gameplay\supplies\character_items_2.xml"
+#include "gameplay\supplies\character_food.xml"
+#include "gameplay\supplies\character_drugs_2.xml"
+
+#include "gameplay\character_criticals.xml"
+#include "gameplay\character_dialogs.xml"
+
+
+
+ GENERATE_NAME_stalker
+ ui_inGame2_neutral_1_gas
+
+ An experienced stalker. No detailed information is available.
+ total_group_stalkers_3
+ stalker
+ stalker_terrain
+ characters_voice\human\stalker_3\
+ 831
+
+ -853
+ actors\stalker_neutral\stalker_neutral1c_gas
+
+ [spawn] \n
+ wpn_toz34 \n
+ ammo_12x70_buck = 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"
+#include "gameplay\character_dialogs.xml"
+
+
+
+ GENERATE_NAME_stalker
+ ui_inGame2_neutral_1_mask
+
+ An experienced stalker. No detailed information is available.
+ total_group_stalkers_4
+ stalker
+ stalker_terrain
+ characters_voice\human\stalker_1\
+ 332
+
+ -1087
+ actors\stalker_neutral\stalker_neutral1f_mask
+
+ [spawn] \n
+ wpn_toz34 \n
+ ammo_12x70_buck = 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"
+#include "gameplay\character_dialogs.xml"
+
+
+
+ GENERATE_NAME_bandit
+ ui_inGame2_bandit2a_old
+
+ An experienced stalker. No detailed information is available.
+ total_group_bandits_1
+ bandit
+ stalker_terrain
+ characters_voice\human\bandit_3\
+ 6305
+ 646
+
+ actors\stalker_bandit\stalker_bandit2a_old
+
+ [spawn] \n
+ wpn_ak74u \n
+ ammo_5.45x39_fmj = 3 \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"
+#include "gameplay\character_dialogs.xml"
+
+
+
+ GENERATE_NAME_bandit
+ ui_inGame2_bandit_2_mask
+
+ An experienced stalker. No detailed information is available.
+ total_group_bandits_2
+ bandit
+ stalker_terrain
+ characters_voice\human\bandit_1\
+ 1997
+ -2072
+
+ actors\stalker_bandit\stalker_bandit2a_mask
+
+ [spawn] \n
+ wpn_ak74u \n
+ ammo_5.45x39_fmj = 3 \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"
+#include "gameplay\character_dialogs.xml"
+
+
+
+ GENERATE_NAME_bandit
+ ui_inGame2_bandit_1_mask
+
+ An experienced stalker. No detailed information is available.
+ total_group_bandits_3
+ bandit
+ stalker_terrain
+ characters_voice\human\bandit_2\
+ 448
+ 2490
+
+ actors\stalker_bandit\stalker_bandit1b_mask
+
+ [spawn] \n
+ wpn_toz34 \n
+ ammo_12x70_buck = 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"
+#include "gameplay\character_dialogs.xml"
+
+
+
+ GENERATE_NAME_bandit
+ ui_inGame2_bandit_1
+
+ An experienced stalker. No detailed information is available.
+ total_group_bandits_4
+ bandit
+ stalker_terrain
+ characters_voice\human\bandit_1\
+ 206
+ 1253
+
+ actors\stalker_bandit\stalker_bandit_1
+
+ [spawn] \n
+ wpn_toz34 \n
+ ammo_12x70_buck = 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"
+#include "gameplay\character_dialogs.xml"
+
+
+
+ GENERATE_NAME_stalker
+ ui_inGame2_neutral_2_mask
+
+ An experienced stalker. No detailed information is available.
+ total_stalker_one_n
+ stalker
+ stalker_terrain
+ characters_voice\human\stalker_2\
+ 2448
+
+ -1333
+ actors\stalker_neutral\stalker_neutral2b_mask
+
+ [spawn] \n
+ wpn_groza \n
+ ammo_9x39_pab9 = 3 \n
+#include "gameplay\supplies\character_items_2.xml"
+#include "gameplay\supplies\character_food.xml"
+#include "gameplay\supplies\character_drugs_2.xml"
+
+#include "gameplay\character_criticals.xml"
+#include "gameplay\character_dialogs.xml"
+
+
+
+ GENERATE_NAME_senior_sergeant
+ ui_inGame2_Soldier_2
+
+ An experienced stalker. No detailed information is available.
+ total_soldier_one_n
+ army
+ stalker_terrain
+ characters_voice\human\military_1\
+ 3435
+ 298
+ actors\stalker_soldier\stalker_soldier_2
+
+ [spawn] \n
+ wpn_groza \n
+ ammo_9x39_pab9 = 3 \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"
+#include "gameplay\character_dialogs.xml"
+
+
+
+ GENERATE_NAME_stalker
+ ui_inGame2_neutral_2_mask
+
+ An experienced stalker. No detailed information is available.
+ total_stalker_one_with_mutant
+ stalker
+ stalker_terrain
+ characters_voice\human\stalker_2\
+ 2448
+
+ -1333
+ actors\stalker_neutral\stalker_neutral2b_mask
+
+ [spawn] \n
+ wpn_fort \n
+ ammo_9x18_fmj = 1 \n
+#include "gameplay\supplies\character_items_2.xml"
+#include "gameplay\supplies\character_food.xml"
+#include "gameplay\supplies\character_drugs_2.xml"
+
+#include "gameplay\character_criticals.xml"
+#include "gameplay\character_dialogs.xml"
+
+
+
+ GENERATE_NAME_sergeant
+ ui_inGame2_Dolg_3
+
+ An experienced stalker. No detailed information is available.
+ total_duty_one_with_zombies
+ dolg
+ stalker_terrain
+ characters_voice\human\dolg_1\
+ 993
+ 558
+
+ actors\stalker_dolg\stalker_dolg_3
+
+ [spawn] \n
+ wpn_wincheaster1300 \n
+ ammo_12x70_buck = 1 \n
+#include "gameplay\supplies\character_items_2.xml"
+#include "gameplay\supplies\character_drugs_2.xml"
+
+
+#include "gameplay\character_criticals.xml"
+#include "gameplay\character_dialogs.xml"
+
+
+
+ GENERATE_NAME_bandit
+ ui_inGame2_bandit_3
+
+ An experienced stalker. No detailed information is available.
+ total_group_bandits_with_bloodsucker_1
+ bandit
+ stalker_terrain
+ characters_voice\human\bandit_2\
+ 206
+ 1253
+
+ actors\stalker_bandit\stalker_bandit3c
+
+ [spawn] \n
+ wpn_toz34 \n
+ ammo_12x70_buck = 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"
+#include "gameplay\character_dialogs.xml"
+
+
+
+ GENERATE_NAME_bandit
+ ui_inGame2_bandit_3_mask
+
+ An experienced stalker. No detailed information is available.
+ total_group_bandits_with_bloodsucker_2
+ bandit
+ stalker_terrain
+ characters_voice\human\bandit_2\
+ 206
+ 1253
+
+ actors\stalker_bandit\stalker_bandit3a
+
+ [spawn] \n
+ wpn_toz34 \n
+ ammo_12x70_buck = 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"
+#include "gameplay\character_dialogs.xml"
+
+
+
+ GENERATE_NAME_senior_sergeant
+ ui_inGame2_Soldier_2
+
+ An experienced stalker. No detailed information is available.
+ total_two_soldiers_with_burer_1
+ army
+ stalker_terrain
+ characters_voice\human\military_1\
+ 3435
+ 298
+ actors\stalker_soldier\stalker_soldier_2
+
+ [spawn] \n
+ wpn_ak74 \n
+ ammo_5.45x39_fmj = 3 \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"
+#include "gameplay\character_dialogs.xml"
+
+
+
+ GENERATE_NAME_senior_sergeant
+ ui_inGame2_Soldier_2
+
+ An experienced stalker. No detailed information is available.
+ total_two_soldiers_with_burer_2
+ army
+ stalker_terrain
+ characters_voice\human\military_1\
+ 3435
+ 298
+ actors\stalker_soldier\stalker_soldier_2
+
+ [spawn] \n
+ wpn_ak74 \n
+ ammo_5.45x39_fmj = 3 \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"
+#include "gameplay\character_dialogs.xml"
+
+
+
diff --git a/mods/[DEV] Brotherhood/gamedata/configs/gameplay/character_desc_brotherhood.xml b/mods/[DEV] Brotherhood/gamedata/configs/gameplay/character_desc_brotherhood.xml
new file mode 100644
index 00000000..191ff1b2
--- /dev/null
+++ b/mods/[DEV] Brotherhood/gamedata/configs/gameplay/character_desc_brotherhood.xml
@@ -0,0 +1,1813 @@
+
+
+
+
+ vybegallo_name
+ ui_inGame2_Ozerskiy
+
+
+ vybegallo
+ ecolog stalker_terrain
+ 20
+
+ -500
+ actors\stalker_ucheniy\stalker_ucheniy_1_face_2
+ characters_voice\human\ecolog_3\
+ 1
+
+ [spawn] \n
+ wpn_protecta \n
+ ammo_12x76_zhekan = 2 \n
+ wpn_walther \n
+ ammo_9x19_fmj \n
+ detector_simple \n
+
+#include "gameplay\character_criticals.xml"
+ vybegallo_start_dialog
+ vybegallo_1
+ vybegallo_2
+ vybegallo_3
+ vybegallo_4
+ vybegallo_5
+
+ actor_break_dialog
+
+
+
+
+ bellerophon_name
+ ui_inGame2_nosorog
+
+
+ bellerophon
+ stalker stalker_terrain
+ 17860
+
+ 5000
+ actors\stalker_neutral\stalker_soldierb4
+ characters_voice\human\stalker_3\
+ 1
+
+ [spawn] \n
+ wpn_rpk74 \n
+ ammo_5.45x39_fmj = 3 \n
+ wpn_tt33 \n
+
+ detector_simple \n
+
+
+ bellerophon_start_dialog
+ about_bellerophon
+ bellerophon_1
+ bellerophon_2
+ bellerophon_3
+ bellerophon_4
+ bellerophon_5
+ bellerophon_6
+ bellerophon_7
+ bellerophon_8
+ bellerophon_9
+
+
+ actor_break_dialog
+
+
+
+ sarpedon_name
+ ui_inGame2_nosorog
+
+
+ sarpedon
+ stalker stalker_terrain
+ 10860
+
+ 2000
+ actors\stalker_neutral\stalker_soldierb4
+ characters_voice\human\stalker_3\
+ 1
+
+ [spawn] \n
+ wpn_rpk74 \n
+ ammo_5.45x39_fmj = 3 \n
+ wpn_tt33 \n
+
+ detector_simple \n
+
+
+ bellerophon_3
+ bellerophon_4
+
+ actor_break_dialog
+
+
+
+
+
+
+ hunter_orion_name
+ ui_inGame2_neutral_2_old
+
+ hunter_orion
+ stalker stalker_terrain
+
+ stalker_terrain
+ 9457
+ 430
+
+ characters_voice\human\stalker_3\
+ -1
+ actors\stalker_neutral\stalker_neutral_2_old
+
+ [spawn] \n
+ wpn_pm \n
+ ammo_9x18_fmj = 2 \n
+ wpn_saiga12s_mutanthammer \n
+ hand_radio \n
+
+#include "gameplay\character_criticals.xml"
+
+
+
+ actor_break_dialog
+
+
+
+
+
+
+
+----- Cordon -----
+
+
+ assault_stalker_leader_esc_5_9_name
+ ui_inGame2_neutral_2
+
+ assault_stalker_leader_esc_5_9
+ stalker stalker_terrain
+
+ stalker_terrain
+ 6053
+ 830
+
+ characters_voice\human\stalker_1\
+ -1
+ actors\stalker_neutral\stalker_neutral2e
+
+ [spawn] \n
+ wpn_pm \n
+ ammo_9x18_fmj = 2 \n
+ wpn_ak74_old \n
+ ammo_5.45x39_fmj = 3 \n
+ device_torch \n
+ hand_radio \n
+
+#include "gameplay\character_criticals.xml"
+
+ assault_stalker_leader_esc_5_9_start_dialog
+ assault_stalker_leader_esc_5_9_1
+ assault_stalker_leader_esc_5_9_2
+
+ actor_break_dialog
+
+
+
+ assault_csky_leader_esc_5_7_name
+ ui_inGame2_csky_sun
+
+ assault_csky_leader_esc_5_7
+ csky stalker_terrain
+
+ stalker_terrain
+ 7853
+ 1131
+
+ characters_voice\human\csky_1\
+ -1
+ actors\stalker_nebo\stalker_nebo_smask2
+
+ [spawn] \n
+ wpn_pm \n
+ ammo_9x18_fmj = 2 \n
+ wpn_ak74_old \n
+ ammo_5.45x39_fmj = 3 \n
+ device_torch \n
+ hand_radio \n
+
+#include "gameplay\character_criticals.xml"
+
+ assault_csky_leader_esc_5_7_start_dialog
+ assault_csky_leader_esc_5_7_1
+
+ actor_break_dialog
+
+
+
+
+---Zaton---
+-- Brokkr and Eitri--
+
+ zaton_brokkr_name
+ ui_inGame2_neutral_1
+
+ zaton_brokkr
+ ecolog stalker_terrain
+
+ stalker_terrain
+ 5647
+ 830
+
+ characters_voice\human\stalker_1\
+ -1
+ actors\stalker_neutral\stalker_neutral_1
+
+ [spawn] \n
+ wpn_pm \n
+ ammo_9x18_fmj = 2 \n
+ wpn_ak74_old \n
+ ammo_5.45x39_fmj = 3 \n
+ device_torch \n
+ hand_radio \n
+
+#include "gameplay\character_criticals.xml"
+
+ zaton_brokkr_start_dialog
+
+ actor_break_dialog
+
+
+
+ zaton_eitri_name
+ ui_inGame2_neutral_1
+
+ zaton_eitri
+ stalker stalker_terrain
+
+ stalker_terrain
+ 5026
+ 830
+
+ characters_voice\human\stalker_1\
+ -1
+ actors\stalker_neutral\stalker_neutral_1
+
+ [spawn] \n
+ wpn_pm \n
+ ammo_9x18_fmj = 2 \n
+ wpn_ak74_old \n
+ ammo_5.45x39_fmj = 3 \n
+ device_torch \n
+ hand_radio \n
+
+#include "gameplay\character_criticals.xml"
+
+ zaton_eitri_start_dialog
+
+ actor_break_dialog
+
+
+
+ marlo_stanfield_name
+ ui_inGame2_neutral_1
+
+ marlo_stanfield
+ stalker stalker_terrain
+
+ stalker_terrain
+ 19026
+ -2870
+
+ characters_voice\human\stalker_1\
+ -1
+ actors\stalker_neutral\stalker_neutral_1
+
+ [spawn] \n
+ wpn_pm \n
+ ammo_9x18_fmj = 2 \n
+ wpn_ak74_old \n
+ ammo_5.45x39_fmj = 3 \n
+ device_torch \n
+ hand_radio \n
+
+#include "gameplay\character_criticals.xml"
+
+ marlo_stanfield_start_dialog
+ marlo_stanfield_0
+ marlo_stanfield_1
+ marlo_stanfield_2
+
+
+ actor_break_dialog
+
+
+
+ chris_partlow_name
+ ui_inGame2_neutral_2_gp5
+
+ chris_partlow
+ stalker stalker_terrain
+
+ stalker_terrain
+ 18620
+ 430
+
+ characters_voice\human\stalker_3\
+ -1
+ actors\stalker_neutral\stalker_neutral2a_gp5
+
+ [spawn] \n
+ wpn_pm \n
+ ammo_9x18_fmj = 2 \n
+ wpn_ak74_old \n
+ ammo_5.45x39_fmj = 3 \n
+ device_torch \n
+ hand_radio \n
+
+#include "gameplay\character_criticals.xml"
+
+ chris_partlow_start_dialog
+ chris_partlow_1
+ chris_partlow_2
+ chris_partlow_3
+ chris_partlow_4
+ chris_partlow_4bis
+ chris_partlow_5
+ chris_partlow_6
+
+ actor_break_dialog
+
+
+
+ paranoia_man_name
+ ui_inGame2_neutral_2_gp5
+
+ paranoia_man
+ stalker stalker_terrain
+
+ stalker_terrain
+ 12026
+ -2830
+
+ characters_voice\human\stalker_3\
+ -1
+ actors\stalker_neutral\stalker_neutral2a_gp5
+
+ [spawn] \n
+ wpn_pm \n
+ ammo_9x18_fmj = 2 \n
+ wpn_ak74_old \n
+ ammo_5.45x39_fmj = 3 \n
+ device_torch \n
+ hand_radio \n
+
+#include "gameplay\character_criticals.xml"
+
+ paranoia_man_start_dialog
+
+ actor_break_dialog
+
+
+
+
+ zaton_mercenary_1_name
+ ui_inGame2_loner_light_metro_suit
+
+ zaton_mercenary_1
+ killer stalker_terrain
+
+ stalker_terrain
+ 2526
+ -2830
+
+ characters_voice\human\killer_3\
+ -1
+ actors\stalker_merc\stalker_merc_6
+
+ [spawn] \n
+ itm_pda_mercenary_1 \n
+ vodka2 = 2 \n
+ wpn_pm \n
+ ammo_9x18_fmj = 2 \n
+ wpn_ak74_old \n
+ ammo_5.45x39_fmj = 3 \n
+ device_torch \n
+ hand_radio \n
+
+#include "gameplay\character_criticals.xml"
+
+ zaton_mercenary_1_start_dialog
+
+ actor_break_dialog
+
+
+
+ zaton_mercenary_courrier_1_name
+ ui_inGame2_loner_light_metro_suit
+
+ zaton_mercenary_courrier_1
+ killer stalker_terrain
+
+ stalker_terrain
+ 13526
+ -830
+
+ characters_voice\human\killer_3\
+ -1
+ actors\stalker_merc\stalker_merc_6
+
+ [spawn] \n
+ itm_usb_mercenary_1 \n
+ wpn_pm \n
+ ammo_9x18_fmj = 2 \n
+ wpn_ak74_old \n
+ ammo_5.45x39_fmj = 3 \n
+ device_torch \n
+ hand_radio \n
+
+#include "gameplay\character_criticals.xml"
+
+ zaton_mercenary_1_start_dialog
+
+ actor_break_dialog
+
+
+
+ zaton_mercenary_2_name
+ ui_inGame2_loner_light_metro_suit
+
+ zaton_mercenary_2
+ killer stalker_terrain
+
+ stalker_terrain
+ 13526
+ -3830
+
+ characters_voice\human\killer_3\
+ -1
+ actors\stalker_merc\stalker_merc_6
+
+ [spawn] \n
+ itm_pda_mercenary_1 \n
+ vodka2 = 2 \n
+ wpn_pm \n
+ ammo_9x18_fmj = 2 \n
+ wpn_ak74_old \n
+ ammo_5.45x39_fmj = 3 \n
+ device_torch \n
+ hand_radio \n
+
+#include "gameplay\character_criticals.xml"
+
+ zaton_mercenary_2_start_dialog
+
+ actor_break_dialog
+
+
+
+ jupiter_monk_name
+ ui_inGame2_neutral_2_gp5
+
+ jupiter_monk
+ stalker stalker_terrain
+
+ stalker_terrain
+ 15026
+ -2830
+
+ characters_voice\human\stalker_3\
+ -1
+ actors\stalker_neutral\stalker_neutral2a_gp5
+
+ [spawn] \n
+ wpn_pm \n
+ ammo_9x18_fmj = 2 \n
+ wpn_ak74_old \n
+ ammo_5.45x39_fmj = 3 \n
+ device_torch \n
+ hand_radio \n
+
+#include "gameplay\character_criticals.xml"
+
+ jupiter_monk_start_dialog
+
+ actor_break_dialog
+
+
+
+
+ zaton_achilles_name
+ ui_inGame2_nosorog
+
+
+ zaton_achilles
+ stalker stalker_terrain
+ 18351
+
+ 2568
+ actors\stalker_soldier\stalker_soldier4nosorog
+ characters_voice\human\stalker_3\
+ 1
+
+ [spawn] \n
+ wpn_ak74_old \n
+ ammo_5.45x39_fmj = 3 \n
+ wpn_desert_eagle \n
+ ammo_357_hp_mag \n
+ detector_simple \n
+
+
+ zaton_achilles_start_dialog
+ zaton_achilles_0
+ actor_break_dialog
+
+
+
+
+
+ anna_morphine_name
+ ui_inGame2_Hip
+
+
+ anna_morphine
+ stalker stalker_terrain
+ characters_voice\human\woman\
+ 260
+ 1600
+ actors\mnp_npc_remeik\girl
+
+ [spawn] \n
+ wpn_pm \n
+ ammo_9x18_pmm = 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"
+ anna_morphine_start
+ anna_morphine_0
+ actor_break_dialog
+
+
+
+
+
+
+ ecologist_sidorovich_name
+ ui_inGame2_ecolog_orange
+
+
+ ecologist_sidorovich
+ ecolog stalker_terrain
+ 20
+
+ 345
+ actors\stalker_ecologist\stalker_ecolog
+ characters_voice\human\ecolog_3\
+ 1
+
+ [spawn] \n
+ wpn_protecta \n
+ ammo_12x76_zhekan = 2 \n
+ wpn_walther \n
+ ammo_9x19_fmj \n
+ detector_simple \n
+
+#include "gameplay\character_criticals.xml"
+ ecologist_sidorovich_start_dialog
+ ecologist_sidorovich_0
+ ecologist_sidorovich_1
+
+ actor_break_dialog
+
+
+---- Alyosha Shyogolov ----
+
+
+
+ alyosha_shyogolov_name
+ ui_inGame2_nosorog
+
+
+ alyosha_shyogolov
+ ecolog stalker_terrain
+ 20
+
+ 108
+ actors\stalker_soldier\stalker_soldier4nosorog
+ characters_voice\human\stalker_3\
+ 1
+
+ [spawn] \n
+ wpn_scar \n
+ ammo_7.62x51_fmj = 2 \n
+ wpn_desert_eagle \n
+ ammo_357_hp_mag \n
+ detector_simple \n
+
+
+ alyosha_shyogolov_start_dialog
+ alyosha_shyogolov_0
+ alyosha_shyogolov_2
+
+
+
+ actor_break_dialog
+
+
+
+
+ bh_mozgotlen_name
+ ui_inGame2_Zombied_1_Mask
+
+ bh_mozgotlen
+ zombied stalker_terrain
+
+ stalker_terrain
+ 926
+ 3830
+
+ characters_voice\human\zombied_1\
+ -1
+ actors\stalker_zombak\stalker_zombied_ecolog_blue_1
+
+ #include "gameplay\loadouts\zombied_base.ltx"
+ #include "gameplay\loadouts\zombied_tier_1.ltx"
+ [spawn] \n
+
+
+
+ #include "gameplay\character_criticals.xml"
+ #include "gameplay\character_dialogs.xml"
+
+
+
+
+
+
+ erast_fandorin_name
+ ui_inGame2_neutral_2
+
+
+ erast_fandorin
+ ecolog stalker_terrain
+ 20115
+
+ 3108
+ actors\stalker_ecologist\stalker_ecolog_guard3_mask
+ characters_voice\human\stalker_3\
+ 1
+
+ [spawn] \n
+ wpn_saiga12s \n
+
+ wpn_desert_eagle \n
+ ammo_357_hp_mag \n
+ detector_simple \n
+
+
+
+ erast_fandorin_0
+ erast_fandorin_1
+
+
+ actor_break_dialog
+
+
+
+ flavio_becca_name
+ ui_inGame2_Dolg_4
+
+ flavio_becca
+ stalker stalker_terrain
+
+ stalker_terrain
+ 18234
+ -30
+
+ characters_voice\human\ecolog_3\
+ -1
+ actors\stalker_ecologist\stalker_ecolog_exo
+
+ [spawn] \n
+
+ hand_radio \n
+
+#include "gameplay\character_criticals.xml"
+
+
+ alyosha_shyogolov_5
+
+
+ actor_break_dialog
+
+
+
+ nr_ecologist_rydzyk_name
+ ui_inGame2_neutral_2_gp5
+
+ nr_ecologist_rydzyk
+ ecolog stalker_terrain
+
+ stalker_terrain
+ 16221
+ 44
+
+ characters_voice\human\ecolog_3\
+ -1
+ actors\stalker_ecologist\stalker_ecolog_exolight
+
+ [spawn] \n
+
+ hand_radio \n
+
+#include "gameplay\character_criticals.xml"
+ nr_ecologist_rydzyk_0
+
+ actor_break_dialog
+
+
+
+ nr_ecologist_1_name
+ ui_inGame2_neutral_tactic
+
+ nr_ecologist_1
+ ecolog stalker_terrain
+
+ stalker_terrain
+ 1202
+ 440
+
+ characters_voice\human\ecolog_3\
+ -1
+ actors\stalker_ecologist\stalker_ecolog_guard2_tactical
+
+ [spawn] \n
+
+ hand_radio \n
+
+#include "gameplay\character_criticals.xml"
+
+ nr_ecologist_1_0
+ actor_break_dialog
+
+
+
+ nr_ecologist_2_name
+ ui_inGame2_neutral_2_gp5
+
+ nr_ecologist_2
+ ecolog stalker_terrain
+
+ stalker_terrain
+ 1409
+ 870
+
+ characters_voice\human\ecolog_3\
+ -1
+ actors\stalker_ecologist\stalker_ecolog_guard3_merc
+
+ [spawn] \n
+
+ hand_radio \n
+
+#include "gameplay\character_criticals.xml"
+ nr_ecologist_2_0
+
+ actor_break_dialog
+
+
+
+ nr_ecologist_3_name
+ ui_inGame2_stalker_ecolog_proto
+
+ nr_ecologist_3
+ ecolog stalker_terrain
+
+ stalker_terrain
+ 1002
+ 805
+
+ characters_voice\human\ecolog_3\
+ -1
+ actors\stalker_ecologist\stalker_ecologist_proto
+
+ [spawn] \n
+
+ hand_radio \n
+
+#include "gameplay\character_criticals.xml"
+
+
+ actor_break_dialog
+
+
+
+ nr_vova_bandit_1_name
+ ui_inGame2_bandit_6l
+
+ nr_vova_bandit_1
+ bandit stalker_terrain
+
+ stalker_terrain
+ 1203
+ -930
+
+ characters_voice\human\bandit_3\
+ -1
+ actors\stalker_bandit\stalker_bandit6d
+
+ [spawn] \n
+ wpn_abakan \n
+ hand_radio \n
+
+#include "gameplay\character_criticals.xml"
+
+ actor_break_dialog
+
+
+
+ nr_pasha_bandit_2_name
+ ui_inGame2_bandit_6l
+
+ nr_pasha_bandit_2
+ bandit stalker_terrain
+
+ stalker_terrain
+ 1132
+ -911
+
+ characters_voice\human\bandit_3\
+ -1
+ actors\stalker_bandit\stalker_bandit6d
+
+ [spawn] \n
+ wpn_ak74_old \n
+ hand_radio \n
+
+#include "gameplay\character_criticals.xml"
+
+ actor_break_dialog
+
+
+
+
+
+ nr_ambush_1_name
+ ui_inGame2_neutral_tactic
+
+
+ nr_ambush_1
+ army stalker_terrain
+ 2012
+
+ -2630
+ characters_voice\human\military_3\
+ actors\stalker_soldier\stalker_soldier_4_helm_tactic
+ 1
+
+ [spawn] \n
+ wpn_saiga12s \n
+
+
+
+
+
+
+ nr_ambush_2_name
+ ui_inGame2_neutral_tactic
+
+
+ nr_ambush_2
+ army stalker_terrain
+ 20
+
+ -23
+ characters_voice\human\military_3\
+ actors\stalker_soldier\stalker_soldier_4_helm_tactic
+ 1
+
+ [spawn] \n
+ wpn_abakan \n
+
+
+
+
+
+
+ nr_ambush_3_name
+ ui_inGame2_neutral_tactic
+
+
+ nr_ambush_3
+ army stalker_terrain
+ 1730
+
+ -621
+ characters_voice\human\military_3\
+ actors\stalker_soldier\stalker_soldier_4_helm_tactic
+ 1
+
+ [spawn] \n
+ wpn_abakan \n
+
+
+
+
+
+
+ nr_ambush_4_name
+ ui_inGame2_neutral_tactic
+
+
+ nr_ambush_4
+ army stalker_terrain
+ 1890
+
+ 50
+ characters_voice\human\military_3\
+ actors\stalker_soldier\stalker_soldier_4_helm_tactic
+ 1
+
+ [spawn] \n
+ wpn_abakan \n
+
+
+
+
+
+
+ nr_ambush_5_name
+ ui_inGame2_neutral_tactic
+
+
+ nr_ambush_5
+ army stalker_terrain
+ 1675
+
+ 123
+ characters_voice\human\military_3\
+ actors\stalker_soldier\stalker_soldier_4_helm_tactic
+ 1
+
+ [spawn] \n
+ wpn_abakan \n
+
+
+
+
+
+
+--- Larik
+
+
+
+ sasha_tolstoy_name
+ ui_inGame2_csky_1_1
+
+ sasha_tolstoy
+ stalker stalker_terrain
+
+ stalker_terrain
+ 10026
+ 830
+
+ characters_voice\human\stalker_3\
+ -1
+ actors\stalker_nebo\stalker_nebo_1
+
+ [spawn] \n
+ wpn_pm \n
+ ammo_9x18_fmj = 2 \n
+ wpn_ak74_old \n
+ ammo_5.45x39_fmj = 3 \n
+ device_torch \n
+ vodka \n
+ hand_radio \n
+
+#include "gameplay\character_criticals.xml"
+
+
+ sasha_tolstoy_1
+ sasha_tolstoy_2
+ sasha_tolstoy_3
+ actor_break_dialog
+
+
+
+
+
+ dolg_vadim_bloodsucker_name
+ ui_inGame2_Dolg_0
+
+ dolg_vadim_bloodsucker
+ dolg stalker_terrain
+
+ stalker_terrain
+ 7026
+ 1830
+
+ characters_voice\human\stalker_3\
+ -1
+ actors\stalker_dolg\stalker_dolg_0
+
+ [spawn] \n
+
+ device_torch_dummy \n
+ hand_radio \n
+
+#include "gameplay\character_criticals.xml"
+
+ dolg_vadim_bloodsucker_start_dialog
+
+ actor_break_dialog
+
+
+
+ dolg_sergey_bloodsucker_name
+ ui_inGame2_Dolg_1
+
+ dolg_sergey_bloodsucker
+ dolg stalker_terrain
+
+ stalker_terrain
+ 6526
+ 830
+
+ characters_voice\human\stalker_3\
+ -1
+ actors\stalker_dolg\stalker_dolg_2_old
+
+ [spawn] \n
+
+ device_torch_dummy \n
+ hand_radio \n
+
+#include "gameplay\character_criticals.xml"
+
+ dolg_sergey_bloodsucker_start_dialog
+
+ actor_break_dialog
+
+
+
+ dolg_sasha_bloodsucker_name
+ ui_inGame2_Dolg_1
+
+ dolg_sasha_bloodsucker
+ dolg stalker_terrain
+
+ stalker_terrain
+ 5026
+ -830
+
+ characters_voice\human\stalker_3\
+ -1
+ actors\stalker_dolg\stalker_dolg1b
+
+ [spawn] \n
+
+ device_torch_nv_1 \n
+ hand_radio \n
+
+#include "gameplay\character_criticals.xml"
+
+ dolg_sergey_bloodsucker_start_dialog
+
+ actor_break_dialog
+
+
+
+ dolg_artyom_bloodsucker_name
+ ui_inGame2_Dolg_1
+
+ dolg_artyom_bloodsucker
+ dolg stalker_terrain
+
+ stalker_terrain
+ 5026
+ 830
+
+ characters_voice\human\stalker_3\
+ -1
+ actors\stalker_dolg\stalker_dolg1b
+
+ [spawn] \n
+
+
+ hand_radio \n
+
+#include "gameplay\character_criticals.xml"
+
+ dolg_artyom_bloodsucker_start_dialog
+ dolg_artyom_bloodsucker_0
+
+ actor_break_dialog
+
+
+
+ dolg_ilya_bloodsucker_name
+ ui_inGame2_Dolg_4e
+
+ dolg_ilya_bloodsucker
+ dolg stalker_terrain
+
+ stalker_terrain
+ 5026
+ 830
+
+ characters_voice\human\stalker_3\
+ -1
+ actors\stalker_dolg\stalker_dolgexo_4
+
+ [spawn] \n
+ wpn_mossberg590 \n
+ hand_radio \n
+
+#include "gameplay\character_criticals.xml"
+
+ dolg_ilya_bloodsucker_start_dialog
+
+ actor_break_dialog
+
+
+---- Northern Rush ---
+
+
+ nr_sorokin_name
+ ui_inGame2_neutral_2_gp5
+
+ nr_sorokin
+ stalker stalker_terrain
+
+ stalker_terrain
+ 100
+ 30
+
+ characters_voice\human\stalker_3\
+ -1
+ actors\stalker_neutral\stalker_neutral2a_gp5
+
+ [spawn] \n
+
+ hand_radio \n
+
+#include "gameplay\character_criticals.xml"
+
+ nr_sorokin_start_dialog
+ nr_sorokin
+ nr_sorokin_1
+ nr_sorokin_2
+ nr_sorokin_3
+ actor_break_dialog
+
+
+
+ nr_scamlok_name
+ ui_inGame2_strelok_ico
+
+
+
+ nr_scamlok
+ stalker
+ stalker_terrain
+ characters_voice\human\stalker_2\
+ 30056
+ 1250
+ actors\stalker_neutral\stalker_neutral_strelok
+
+ [spawn] \n
+ wpn_sig550_sniper = 1 \n
+ ammo_5.56x45_ap = 3 \n
+ wpn_colt1911 = 1 \n
+ ammo_11.43x23_fmj = 1
+ grenade_f1 = 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"
+ nr_scamlok_start_dialog
+ actor_break_dialog
+
+
+
+ nr_iliaz_name
+ ui_inGame2_neutral_1
+
+
+ nr_iliaz
+ stalker stalker_terrain
+ 500
+
+ 121
+ actors\stalker_neutral\stalker_neutral_1
+ characters_voice\human\stalker_3\
+ 1
+
+ [spawn] \n
+ wpn_bm16 \n
+
+
+ nr_iliaz_0
+ nr_iliaz_1
+ nr_iliaz_2
+ nr_iliaz_3
+ nr_iliaz_4
+
+ actor_break_dialog
+
+
+
+
+ nr_bezsonik_name
+ ui_inGame2_Freedom_3
+
+
+ nr_bezsonik
+ freedom stalker_terrain
+ 1602
+
+ 121
+ actors\stalker_freedom\stalker_freedom_3_helm_battle
+ characters_voice\human\freedom_3\
+ 1
+
+ [spawn] \n
+
+
+
+ nr_bezsonik_start_dialog
+ nr_bezsonik_0
+
+
+ actor_break_dialog
+
+
+
+
+ butcher_tug_1_name
+ ui_inGame2_bandit_exo
+
+ butcher_tug_1
+ stalker stalker_terrain
+
+ stalker_terrain
+ 1732
+ -1645
+
+ characters_voice\human\bandit_2\
+ -1
+ actors\stalker_neutral\stalker_neutral4a
+
+ [spawn] \n
+ wpn_ak74_old \n
+ hand_radio \n
+
+#include "gameplay\character_criticals.xml"
+
+ actor_break_dialog
+
+
+
+ butcher_tug_2_name
+ ui_inGame2_bandit_heavy
+
+ butcher_tug_2
+ stalker stalker_terrain
+
+ stalker_terrain
+ 1692
+ -1535
+
+ characters_voice\human\bandit_2\
+ -1
+ actors\stalker_bandit\stalker_band_ha
+
+ [spawn] \n
+ wpn_ak74_old \n
+ hand_radio \n
+
+#include "gameplay\character_criticals.xml"
+
+ actor_break_dialog
+
+
+
+
+ bh_gutalin_name
+ ui_inGame2_neutral_2
+
+ bh_gutalin
+ stalker stalker_terrain
+
+ stalker_terrain
+ 17826
+ 2830
+
+ characters_voice\human\stalker_3\
+ -1
+ actors\stalker_neutral\stalker_exo_proto
+
+ [spawn] \n
+ wpn_pm \n
+ ammo_9x18_fmj = 2 \n
+ wpn_mossberg590 \n
+ device_torch \n
+ vodka_quality = 2 \n
+ beer = 4 \n
+
+#include "gameplay\character_criticals.xml"
+
+ bh_gutalin_start_dialog
+ dm_init_stalker_trade_brotherhood
+ actor_break_dialog
+
+
+
+
+
+ controller_victim_1_name
+ ui_inGame2_neutral_2_gp5
+
+ controller_victim_1
+ stalker stalker_terrain
+
+ stalker_terrain
+ 12026
+ -2830
+
+ characters_voice\human\stalker_3\
+ -1
+ actors\stalker_neutral\stalker_neutral2a_gp5
+
+ [spawn] \n
+ wpn_pm \n
+ ammo_9x18_fmj = 2 \n
+ wpn_ak74_old \n
+ ammo_5.45x39_fmj = 3 \n
+ device_torch \n
+ hand_radio \n
+
+#include "gameplay\character_criticals.xml"
+
+
+
+ actor_break_dialog
+
+
+
+
+ nr_dead_convict_1_name
+ ui_inGame2_neutral_2_gp5
+
+ nr_dead_convict_1
+ stalker stalker_terrain
+
+ stalker_terrain
+ 12026
+ -2830
+
+ characters_voice\human\stalker_3\
+ -1
+ actors\stalker_neutral\stalker_neutral2a_gp5
+
+
+
+
+
+
+
+ actor_break_dialog
+
+
+--- Yak
+
+
+ nr_dead_convict_2_name
+ ui_inGame2_Freedom_2_mask
+
+ nr_dead_convict_2
+ freedom stalker_terrain
+
+ stalker_terrain
+ 13026
+ -1830
+
+ characters_voice\human\freedom_1\
+ -1
+ actors\stalker_freedom\stalker_freedom2a_mas2
+
+ [spawn] \n
+ bullet_yak \n
+
+
+
+
+
+ actor_break_dialog
+
+
+
+ nr_executioner_1_name
+ ui_inGame2_neutral_2
+
+
+ nr_executioner_1
+ stalker stalker_terrain
+ 15487
+
+ 321
+ actors\stalker_neutral\stalker_neutral2a_old
+ characters_voice\human\stalker_3\
+ 1
+
+ [spawn] \n
+ wpn_akms \n
+
+
+
+ actor_break_dialog
+
+
+
+ nr_executioner_2_name
+ ui_inGame2_neutral_2
+
+
+ nr_executioner_2
+ stalker stalker_terrain
+ 16417
+
+ 897
+ actors\stalker_neutral\stalker_neutral_15
+ characters_voice\human\stalker_3\
+ 1
+
+ [spawn] \n
+ wpn_mp153 \n
+
+
+
+ actor_break_dialog
+
+
+--- Barka
+
+
+ nr_executioner_3_name
+ ui_inGame2_neutral_2
+
+
+ nr_executioner_3
+ stalker stalker_terrain
+ 17417
+
+ -103
+ actors\stalker_neutral\stalker_neutral_9d
+ characters_voice\human\stalker_3\
+ 1
+
+ [spawn] \n
+ wpn_mp5sd_new \n
+
+ nr_barka_0
+ nr_barka_1
+
+
+
+ actor_break_dialog
+
+
+--- Lyoshik
+
+
+ nr_loyshik_name
+ ui_inGame2_Freedom_2_mask
+
+ nr_loyshik
+ freedom stalker_terrain
+
+ stalker_terrain
+ 13026
+ -1830
+
+ characters_voice\human\freedom_1\
+ -1
+ actors\stalker_freedom\stalker_freedom2a_mas2
+
+ [spawn] \n
+ wpn_akms \n
+
+
+
+
+
+ actor_break_dialog
+
+
+
+------ Cordon Shlitzer
+
+
+ bh_badger_name
+ ui_inGame2_Soldier_2
+
+
+ bh_badger
+ army stalker_terrain
+ 6675
+ stalker_terrain
+
+ -756
+ characters_voice\human\military_3\
+ actors\stalker_soldier\stalker_soldier_2
+ 1
+
+ [spawn] \n
+
+
+
+#include "gameplay\character_criticals.xml"
+
+
+ actor_break_dialog
+
+
+
+
+ bh_shlitzer_name
+ ui_inGame2_neutral_2_mask
+
+ bh_shlitzer
+ stalker stalker_terrain
+
+ stalker_terrain
+ 6053
+ -830
+
+ characters_voice\human\stalker_1\
+ -1
+ actors\stalker_neutral\stalker_neutral2e_mas3
+
+ [spawn] \n
+
+
+#include "gameplay\character_criticals.xml"
+ bh_shlitzer_start
+ bh_shlitzer_0
+ bh_shlitzer_3
+ bh_shlitzer_1
+ bh_shlitzer_2
+
+ actor_break_dialog
+
+
+
+ bh_ironchain_name
+ ui_inGame2_bandit_2
+
+ bh_ironchain
+ stalker stalker_terrain
+
+ stalker_terrain
+ 12053
+ -3330
+
+ characters_voice\human\bandit_3\
+ -1
+ actors\stalker_bandit\stalker_bandit2a
+
+ [spawn] \n
+ quest_package_shlitzer_2 \n
+
+
+
+#include "gameplay\character_criticals.xml"
+
+ bh_ironchain_start
+
+ actor_break_dialog
+
+
+
+ nr_trapper_missing_hunter_1_name
+ ui_inGame2_neutral_2_gp5
+
+ nr_trapper_missing_hunter_1
+ stalker stalker_terrain
+
+ stalker_terrain
+ 16826
+ 2830
+
+ characters_voice\human\stalker_3\
+ -1
+ actors\stalker_neutral\stalker_neutral2a_gp5
+
+ [spawn] \n
+
+
+#include "gameplay\character_criticals.xml"
+
+
+
+ actor_break_dialog
+
+
+
+ nr_trapper_missing_hunter_2_name
+ ui_inGame2_neutral_2
+
+ nr_trapper_missing_hunter_2
+ stalker stalker_terrain
+
+ stalker_terrain
+ 17826
+ 3830
+
+ characters_voice\human\stalker_3\
+ -1
+ actors\stalker_neutral\stalker_neutral2a
+
+ [spawn] \n
+ wpn_g3 \n
+
+#include "gameplay\character_criticals.xml"
+
+
+
+ actor_break_dialog
+
+
+
+ nr_trapper_missing_hunter_3_name
+ ui_inGame2_neutral_2_mask
+
+ nr_trapper_missing_hunter_3
+ stalker stalker_terrain
+
+ stalker_terrain
+ 15826
+ 830
+
+ characters_voice\human\stalker_3\
+ -1
+ actors\stalker_neutral\stalker_neutral2gmask2
+
+ [spawn] \n
+
+
+#include "gameplay\character_criticals.xml"
+
+
+
+ actor_break_dialog
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+---- random events npc
+
+
+ nr_sasha_baltunov_name
+ ui_inGame2_neutral_2
+
+ nr_sasha_baltunov
+ stalker stalker_terrain
+
+ stalker_terrain
+ 15826
+ 3830
+
+ characters_voice\human\stalker_3\
+ -1
+ actors\stalker_neutral\stalker_neutral2a
+
+ [spawn] \n
+
+
+#include "gameplay\character_criticals.xml"
+
+ nr_sahsa_baltun_start
+
+ actor_break_dialog
+
+
+
+ nr_starik_murdered_name
+ ui_inGame2_csky_oldgas
+
+ nr_starik_murdered
+ csky stalker_terrain
+
+ stalker_terrain
+ 18026
+ 3830
+
+ characters_voice\human\stalker_3\
+ -1
+ actors\stalker_nebo\stalker_nebo_s_old
+
+ [spawn] \n
+ nr_starik_murdered_diary \n
+
+#include "gameplay\character_criticals.xml"
+
+ actor_break_dialog
+
+
+---- Like rats in a trap
+
+
+ bh_rat_guards_naruchnik_name
+ ui_inGame2_neutral_2
+
+
+ bh_rat_guards_naruchnik
+ stalker stalker_terrain
+ 13200
+
+ 621
+ actors\stalker_neutral\stalker_neutral2b
+ characters_voice\human\stalker_3\
+ 1
+
+ [spawn] \n
+
+
+
+ bh_rat_guards_naruchnik_0
+
+
+ actor_break_dialog
+
+
+
+ bh_rat_trap_leader_name
+ ui_inGame2_bandit_2
+
+ bh_rat_trap_leader
+ bandit stalker_terrain
+
+ stalker_terrain
+ 12121
+ -3330
+
+ characters_voice\human\bandit_3\
+ -1
+ actors\stalker_bandit\stalker_bandit2a
+
+ [spawn] \n
+
+
+
+
+#include "gameplay\character_criticals.xml"
+
+ bh_rat_trap_leader_start
+
+ actor_break_dialog
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/mods/[DEV] Brotherhood/gamedata/configs/gameplay/character_desc_brotherhood_ac.xml b/mods/[DEV] Brotherhood/gamedata/configs/gameplay/character_desc_brotherhood_ac.xml
new file mode 100644
index 00000000..3b7c7478
--- /dev/null
+++ b/mods/[DEV] Brotherhood/gamedata/configs/gameplay/character_desc_brotherhood_ac.xml
@@ -0,0 +1,154 @@
+
+
+
+--- medic Monolith ---
+
+
+ ac_pri_medic_monolith_name
+ ui_npc_u_stalker_mo_head_1
+
+
+
+ ac_pri_medic_monolith
+ monolith
+ stalker_terrain
+ characters_voice\human\freedom_1\
+ 9389
+ 2309
+
+ actors\stalker_monolith\stalker_mo_head_1
+
+ [spawn] \n
+
+#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"
+
+
+
+
+
+
+
+
+
+ ac_blue_winter_name
+ ui_inGame2_monolit_1
+
+
+ ac_blue_winter
+ monolithstalker_terrain
+ characters_voice\human\monolith_3\
+
+ 18780
+
+ 2500
+
+ actors\stalker_monolith\stalker_monolith_1
+
+
+ [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"
+
+ ac_blue_winter_0
+ ac_blue_winter_1
+ ac_blue_winter_2
+
+ actor_break_dialog
+
+
+
+ ac_balthazar_name
+ ui_inGame2_monolith_proto
+
+
+ ac_balthazar
+ monolithstalker_terrain
+ characters_voice\human\monolith_3\
+
+ 16730
+
+ 1000
+
+ actors\stalker_monolith\stalker_monolith_4_proto
+
+
+ [spawn] \n
+ wpn_rpk74 \n
+ ammo_5.45x39_fmj = 3 \n
+
+
+#include "gameplay\character_criticals.xml"
+
+ actor_break_dialog
+
+
+
+ ac_melchior_name
+ ui_inGame2_monolit_3a
+
+
+ ac_melchior
+ monolithstalker_terrain
+ characters_voice\human\monolith_3\
+
+ 18030
+
+ 1000
+
+ actors\stalker_monolith\stalker_monolith3a
+
+
+ [spawn] \n
+ wpn_val = 1 \n
+ ammo_9x39_ap = 1 \n
+
+
+#include "gameplay\character_criticals.xml"
+
+ actor_break_dialog
+
+
+
+ ac_caspar_name
+ ui_inGame2_monolit_3
+
+
+ ac_caspar
+ monolithstalker_terrain
+ characters_voice\human\monolith_3\
+
+ 16670
+
+ 1000
+
+ actors\stalker_monolith\stalker_monolith3b
+
+
+ [spawn] \n
+ wpn_saiga12s = 1 \n
+
+
+
+#include "gameplay\character_criticals.xml"
+
+ actor_break_dialog
+
+
+
+
+
+
+
+
+
diff --git a/mods/[DEV] Brotherhood/gamedata/configs/gameplay/character_desc_escape.xml b/mods/[DEV] Brotherhood/gamedata/configs/gameplay/character_desc_escape.xml
new file mode 100644
index 00000000..babd031d
--- /dev/null
+++ b/mods/[DEV] Brotherhood/gamedata/configs/gameplay/character_desc_escape.xml
@@ -0,0 +1,340 @@
+
+
+
+
+
+
+ escape_trader_name
+ ui_inGame2_sid
+ escape_trader_bio
+ trader
+ trader
+
+ stalker_terrain
+ actors\stalker_trader\stalker_trader_1
+ 18846
+ 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
+
+ devushka_3_quest
+
+
+
+
+ sidorovich_gutalin_0
+ sidorovich_gutalin_1
+ sidorovich_railway_1
+ sidorovich_railway_2
+ sidorovich_railway_3
+ sidorovich_railway_4
+
+
+
+
+ actor_break_dialog
+
+
+
+
+ esc_wolf_name
+ ui_inGame2_wolf
+ esc_wolf_bio
+ esc_2_12_stalker_wolf
+ stalker stalker_terrain
+
+ stalker_terrain
+ 17568
+ 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
+ 12103
+ 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
+
+
+ fanatic_north_0
+ fanatic_gutalin_0
+
+
+ actor_break_dialog
+
+
+
+
+ devushka
+ ui_inGame2_Hip
+
+ Hip
+ devushka
+ stalker stalker_terrain
+ characters_voice\human\woman\
+ 160
+ 900
+ actors\mnp_npc_remeik\girl
+
+ [spawn] \n
+ wpn_pm \n
+ ammo_9x18_pmm = 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"
+ 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/[DEV] Brotherhood/gamedata/configs/gameplay/character_desc_garbage.xml b/mods/[DEV] Brotherhood/gamedata/configs/gameplay/character_desc_garbage.xml
new file mode 100644
index 00000000..3bef547b
--- /dev/null
+++ b/mods/[DEV] Brotherhood/gamedata/configs/gameplay/character_desc_garbage.xml
@@ -0,0 +1,136 @@
+
+
+
+
+
+ hunter_gar_trader_name
+ ui_inGame2_bandit_4
+
+ No information is available.
+
+ hunter_gar_trader
+ trader stalker_terrain
+ characters_voice\human\stalker_3\
+
+ 5800
+
+ 1700
+
+ actors\neytral\stalker_plash_1
+
+ [spawn] \n
+ wpn_bm16 \n
+ ammo_12x70_buck = 2 \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
+ hunter_trader_meet
+ dm_ordered_task_dialog
+ dm_ordered_task_completed_dialog
+ about_baraholka_hunter_trader
+ dm_lifestyle
+
+
+ butcher_1
+ butcher_1_time
+ butcher_1_done
+ butcher_2
+ butcher_2_time
+ butcher_2_done
+ butcher_3
+ butcher_3_time
+ butcher_3_done
+ butcher_4
+ butcher_4_time
+ butcher_4_done
+ butcher_4_alt_done
+ butcher_5
+ butcher_5_alt
+
+ butcher_bellerophon_0
+ butcher_legendary_0
+ butcher_legendary_1
+ butcher_legendary_2
+ butcher_legendary_3
+
+ actor_break_dialog
+
+
+
+
+
+ GENERATE_NAME_stalker
+ ui_inGame2_neutral_2_old
+
+ An experienced stalker. No detailed information is available.
+
+ baraholka_trader
+ traderstalker_terrain
+ characters_voice\human\stalker_3\
+
+ 2000
+
+ 500
+
+ actors\stalker_neutral\stalker_neutral_2_old
+
+
+ [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
+ dm_broker_dialog
+ baraholka_trader_talking
+ actor_break_dialog
+
+
+
+
+
+ GENERATE_NAME_stalker
+ ui_inGame2_neutral_0
+
+ An experienced stalker. No detailed information is available.
+
+ baraholka_trader_night
+ traderstalker_terrain
+ characters_voice\human\stalker_3\
+
+ 3000
+
+ 1000
+
+ actors\stalker_neutral\stalker_neutral0b
+
+
+ [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
+ dm_ordered_task_dialog
+ dm_ordered_task_completed_dialog
+
+ dm_broker_dialog
+
+
+ actor_break_dialog
+
+
+
diff --git a/mods/[DEV] Brotherhood/gamedata/configs/gameplay/character_desc_jupiter.xml b/mods/[DEV] Brotherhood/gamedata/configs/gameplay/character_desc_jupiter.xml
new file mode 100644
index 00000000..eaef06bf
--- /dev/null
+++ b/mods/[DEV] Brotherhood/gamedata/configs/gameplay/character_desc_jupiter.xml
@@ -0,0 +1,756 @@
+
+
+
+
+
+ jup_a6_freedom_trader_ashot_name
+ ui_inGame2_ashot
+
+ . .
+ jup_a6_freedom_trader_ashot
+ freedom stalker_terrain
+ characters_voice\human\freedom_3\
+ 9033
+ 2342
+
+ actors\stalker_freedom\stalker_freedom_ashot
+
+
+ jup_a6_freedom_trader_ashot_start
+ dm_init_trader
+ actor_break_dialog
+
+#include "gameplay\character_criticals.xml"
+
+
+
+
+ jup_b19_freedom_yar_name
+ ui_inGame2_Dyadka_Yar
+
+
+ . .
+ jup_b19_freedom_yar
+ freedom
+ stalker_terrain
+ characters_voice\human\freedom_1\
+ 7655
+ 2485
+
+ 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_items_3.xml"
+#include "gameplay\supplies\character_food.xml"
+#include "gameplay\supplies\character_drugs_3.xml"
+#include "gameplay\supplies\character_drugs_sci.xml"
+
+
+ jup_b19_freedom_yar_start
+ dm_init_trader
+ dm_init_mechanic
+ dm_broker_dialog
+ actor_break_dialog
+
+#include "gameplay\character_criticals.xml"
+
+
+
+
+ jup_a6_freedom_leader
+ ui_inGame2_Loki
+
+
+ . .
+ jup_a6_freedom_leader
+ freedom
+ stalker_terrain
+ characters_voice\human\freedom_1\
+ 10889
+ 1944
+
+ actors\stalker_freedom\stalker_freedom_3_face_1
+
+ [spawn] \n
+ hand_radio \n
+ wpn_colt1911 \n
+ ammo_11.43x23_hydro = 1 \n
+#include "gameplay\supplies\character_items_3.xml"
+#include "gameplay\supplies\character_food.xml"
+#include "gameplay\supplies\character_drugs_4.xml"
+#include "gameplay\supplies\character_drugs_sci.xml"
+
+#include "gameplay\character_criticals.xml"
+
+ jup_a6_freedom_leader_start_dialog
+ loki_st
+ drx_sl_task_completed_dialog
+ drx_sl_jup_a6_freedom_leader_meet_dialog
+ jup_a6_freedom_leader_duty_founder_pda
+ jup_a6_freedom_leader_duty_sell_founder_pda
+ jup_a6_freedom_leader_pripyat_group
+ jup_a6_freedom_leader_b4_monolith_squad_dialog
+ jup_a6_freedom_leader_b4_monolith_squad_dialog_redy_to_go
+ jup_a6_freedom_leader_b207_hiding_place
+ jup_a6_freedom_leader_employ_stalkers
+ jup_a6_freedom_leader_b106_info_about_soroka
+ jup_a6_freedom_leader_about_stolen_items
+ jup_a6_freedom_leader_a9_sell_info
+ jup_a6_freedom_leader_about_you
+ devushka_loki_help
+ actor_break_dialog
+
+
+
+
+
+ guid_jup_stalker_garik
+ ui_inGame2_Garik
+
+ An experienced stalker. No detailed information is available.
+
+ guid_jup_stalker_garik
+ stalker
+ stalker_terrain
+ characters_voice\human\stalker_1\
+
+ 8000
+
+ 1600
+
+ actors\stalker_neutral\stalker_neutral_2_face_4
+
+
+ [spawn] \n
+ wpn_vintorez \n
+ ammo_9x39_ap = 1 \n
+ wpn_colt1911 \n
+ ammo_11.43x23_fmj = 1 \n
+ grenade_f1 = 2 \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_jup
+ travel_guid_jup
+ meet_guid_jup_list
+ actor_break_dialog
+
+
+
+
+ jup_b217_stalker_tech
+ ui_inGame2_Azot
+
+
+ . .
+ jup_b217_stalker_tech
+ stalker
+
+ stalker_terrain
+ characters_voice\human\dolg_1\
+ 3338
+ 1755
+
+ actors\stalker_neutral\stalker_neutral_nauchniy_face_3
+
+ [spawn] \n
+ wpn_fort \n
+ ammo_9x18_pmm = 1 \n
+#include "gameplay\supplies\character_items_2.xml"
+#include "gameplay\supplies\character_food.xml"
+#include "gameplay\supplies\character_drugs_3.xml"
+
+ dm_init_trader
+ dm_init_mechanic
+ dm_ordered_task_completed_dialog
+ drx_sl_mechanic_task_dialog
+ dm_tech_repair
+
+
+ nr_nitro_barka_0
+ nr_nitro_barka_1
+
+
+
+ actor_break_dialog
+
+#include "gameplay\character_criticals.xml"
+
+
+
+
+ jup_b220_trapper
+ ui_inGame2_Zveroboy
+
+
+ . .
+ jup_b220_trapper
+ stalker
+ stalker_terrain
+ characters_voice\human\stalker_2\
+ 7971
+ 1304
+
+ actors\stalker_neutral\stalker_neutral_2_face_7
+
+ [spawn] \n
+ wpn_wincheaster1300_trapper \n
+ ammo_12x70_buck = 1 \n
+ wpn_colt1911 \n
+ ammo_11.43x23_fmj = 1 \n
+#include "gameplay\supplies\character_items_3.xml"
+#include "gameplay\supplies\character_food.xml"
+#include "gameplay\supplies\character_drugs_4.xml"
+
+#include "gameplay\character_criticals.xml"
+ jup_trapper_about_himself
+ jup_trapper_about_retire
+ dm_ordered_task_completed_dialog
+ dm_ordered_task_dialog
+ dm_lifestyle
+
+
+ nr_trapper_intro_0
+ trapper_chimera_0
+ trapper_chimera_1
+ trapper_chimera_2
+ trapper_chimera_3
+ trapper_chimera_5
+ trapper_chimera_5_alt
+ trapper_chimera_6
+ trapper_chimera_7
+ trapper_chimera_8
+ trapper_chimera_9
+ trapper_chimera_10
+
+ trapper_missing_men_0
+ trapper_missing_men_1
+
+
+ trapper_chimera_4
+ actor_break_dialog
+
+
+
+
+
+ jup_a6_stalker_barmen
+ ui_inGame2_Gavaets
+
+
+ . .
+ jup_a6_stalker_barmen
+ trader
+ stalker_terrain
+ characters_voice\human\stalker_1\
+ 7507
+
+ 1402
+ actors\stalker_neutral\stalker_neutral_2_face_3
+
+ kolbasa_strange = 3 \n
+#include "gameplay\supplies\character_items_3.xml"
+#include "gameplay\supplies\character_food.xml"
+#include "gameplay\supplies\character_drugs_4.xml"
+
+ jup_a6_stalker_barmen_start_dialog
+ dm_init_batender
+ hawaiian_yanov
+ buy_route
+
+
+
+ hawaiian_about_marlo
+
+
+ nr_hawaiian_0
+ nr_hawaiian_scamlok_0
+
+ actor_break_dialog
+#include "gameplay\character_criticals.xml"
+
+
+
+
+ jup_a6_stalker_medik
+ ui_inGame2_Kostoprav
+
+
+ . .
+ jup_a6_stalker_medik
+ stalker
+ stalker_terrain
+ characters_voice\human\stalker_2\
+ 2727
+
+ 598
+ actors\stalker_neutral\stalker_neutral_1_face_2
+
+ [spawn] \n
+ wpn_ak74u \n
+ ammo_5.45x39_fmj = 1 \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_4.xml"
+
+ zat_b22_stalker_medic_start
+ dm_init_medic
+ dm_medic_general
+ dm_ordered_task_dialog
+ dm_ordered_task_completed_dialog
+ actor_break_dialog
+#include "gameplay\character_criticals.xml"
+
+
+
+
+
+ jup_b6_scientist_novikov
+ ui_inGame2_eco_tech
+
+
+ . .
+ jup_b6_scientist_tech
+ ecolog
+
+ stalker_terrain
+ characters_voice\human\stalker_2\
+ 2560
+ 957
+
+ actors\stalker_ecologist\stalker_ecolog_tookarev
+
+ [spawn] \n
+
+#include "gameplay\character_criticals.xml"
+
+ jup_b6_scientist_medic_start
+ dm_init_trader
+ dm_init_mechanic
+ drx_sl_task_completed_dialog
+ dm_ordered_task_completed_dialog
+ drx_sl_jup_b6_scientist_tech_meet_dialog
+ dm_ordered_task_dialog
+ dm_tech_repair
+ actor_break_dialog
+
+
+
+
+
+ jup_b6_scientist_nuclear_physicist
+ ui_inGame2_German
+
+
+ . .
+ jup_b6_scientist_nuclear_physicist
+ ecolog
+ stalker_terrain
+ characters_voice\human\stalker_2\
+ 3815
+ 431
+
+ actors\stalker_ucheniy\stalker_ucheniy_1_face_1
+
+ [spawn] \n
+
+ jup_b6_scientist_nuclear_physicist_start
+ dm_init_trader
+ hermann_lab
+ dm_lifestyle
+
+ dm_ordered_task_dialog
+ dm_ordered_task_completed_dialog
+ dm_ordered_task_cancel_dialog
+
+ actor_break_dialog
+#include "gameplay\character_criticals.xml"
+
+
+
+
+ jup_b6_scientist_biochemist
+ ui_inGame2_Ozerskiy
+
+
+ . .
+ jup_b6_scientist_biochemist
+ ecolog
+ stalker_terrain
+ characters_voice\human\stalker_2\
+ 1864
+ 300
+
+ actors\stalker_ucheniy\stalker_ucheniy_1_face_2
+
+ [spawn] \n
+
+ jup_b16_biochemist_oasis_start
+ ozersky_oasis
+ actor_break_dialog
+#include "gameplay\character_criticals.xml"
+
+
+
+
+
+ jup_cont_mech_bandit_name
+ ui_inGame2_Nile
+
+ .
+
+ jup_cont_mech_bandit
+ banditstalker_terrain
+ characters_voice\human\bandit_1\
+
+
+ 1600
+
+ -1200
+
+ actors\mnp_npc_remeik\bandit_mechanic_td
+
+
+ [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
+ dm_encrypted_pda
+ awr_tech_dialog_drink_1
+ actor_break_dialog
+
+
+
+
+ jup_cont_trader_bandit_name
+ ui_inGame2_Klenov
+
+ .
+
+ jup_cont_trader_bandit
+ banditstalker_terrain
+ characters_voice\human\bandit_2\
+
+ 2500
+
+ -1600
+
+ actors\mnp_npc_remeik\bandit_trader_td
+
+
+ [spawn] \n
+ wpn_spas12 \n
+ ammo_12x70_buck = 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_jup_cont_trader_bandit_meet_dialog
+ buy_route
+ actor_break_dialog
+
+
+
+ st_jup_a12_bandit_chief
+ ui_inGame2_bandit_3_mask
+
+
+ . .
+ jup_a12_bandit_chief
+ bandit
+ stalker_terrain
+ characters_voice\human\bandit_1\
+ 2990
+ 211
+
+ actors\stalker_bandit\stalker_bandit_3_mask
+
+ [spawn] \n
+ wpn_hpsa \n
+ ammo_9x19_pbp = 1 \n
+#include "gameplay\supplies\character_items_nd.xml"
+#include "gameplay\supplies\character_food.xml"
+#include "gameplay\supplies\character_drugs_3.xml"
+
+ jup_a12_bandit_chief_dialog
+ jup_a12_bandit_chief_actor_self_dialog
+ actor_break_dialog
+#include "gameplay\character_criticals.xml"
+
+
+
+ GENERATE_NAME_bandit
+ ui_inGame2_bandit_1
+
+
+ . .
+ jup_a12_bandit_guard
+ bandit
+ stalker_terrain
+ characters_voice\human\bandit_2\
+ 288
+ 144
+
+ actors\stalker_bandit\stalker_bandit_1
+
+ [spawn] \n
+ wpn_mp5 \n
+ ammo_9x19_fmj = 1 \n
+ wpn_pm \n
+ ammo_9x18_fmj = 1 \n
+#include "gameplay\supplies\character_items_nd.xml"
+#include "gameplay\supplies\character_food.xml"
+#include "gameplay\supplies\character_drugs_2.xml"
+
+ actor_break_dialog
+#include "gameplay\character_criticals.xml"
+
+
+
+ st_jup_a12_bandit_cashier
+ ui_inGame2_bandit_2
+
+
+ . .
+ jup_a12_bandit_cashier
+ bandit
+ stalker_terrain
+ characters_voice\human\bandit_2\
+ 1597
+ 1114
+
+ actors\stalker_bandit\stalker_bandit_2
+
+ [spawn] \n
+ wpn_wincheaster1300 \n
+ ammo_12x70_buck = 1 \n
+ wpn_fort \n
+ ammo_9x18_fmj = 1 \n
+#include "gameplay\supplies\character_items_nd.xml"
+#include "gameplay\supplies\character_food.xml"
+#include "gameplay\supplies\character_drugs.xml"
+
+ actor_break_dialog
+#include "gameplay\character_criticals.xml"
+
+
+
+
+
+ GENERATE_NAME_stalker
+ ui_inGame2_monolit_2
+
+ Monolith Mechanic.
+
+ mechanic_monolith_jup_depo
+ monolithstalker_terrain
+
+ characters_voice\human\monolith_3\
+
+ 5000
+ 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_jup_depo_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
+
+
+
+
+ GENERATE_NAME_stalker
+ ui_inGame2_rabbit
+
+
+ Monolith, supplying his brothers with equipment.
+
+ trader_monolith_jup_depo
+ monolith stalker_terrain
+ characters_voice\human\monolith_3\
+
+ 5000
+
+ -500
+
+
+ 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
+ meet_guid_jupdepo_mon
+ meet_guid_jupdepo_mon_list
+ travel_guid_jupdepo_mon_mon
+ buy_route
+ actor_break_dialog
+
+
+
+
+ jup_b1_stalker_1
+ ui_inGame2_neutral_2_mask
+
+
+ . .
+ jup_b1_stalker_1
+ stalker
+ stalker_terrain
+ characters_voice\human\stalker_1\
+ 1980
+ 1039
+ actors\stalker_neutral\stalker_neutral_2_mask
+
+ [spawn] \n
+ anomaly_scaner \n
+ wpn_ak74 \n
+ ammo_5.45x39_fmj = 1 \n
+ wpn_pm = 1 \n
+ ammo_9x18_fmj = 1 \n
+ detector_simple \n
+#include "gameplay\supplies\character_items_nd.xml"
+#include "gameplay\supplies\character_food.xml"
+#include "gameplay\supplies\character_drugs_4.xml"
+#include "gameplay\supplies\character_drugs_sci.xml"
+
+ actor_break_dialog
+#include "gameplay\character_criticals.xml"
+
+
+
+
+ jup_b1_stalker_2
+ ui_inGame2_neutral_2
+
+
+ . .
+ jup_b1_stalker_2
+ stalker
+ stalker_terrain
+ characters_voice\human\stalker_1\
+ 2449
+ 299
+ actors\stalker_neutral\stalker_neutral_2
+
+ [spawn] \n
+ anomaly_scaner \n
+ wpn_wincheaster1300 \n
+ ammo_12x76_zhekan = 1 \n
+ wpn_beretta \n
+ ammo_9x19_fmj = 1 \n
+#include "gameplay\supplies\character_items_nd.xml"
+#include "gameplay\supplies\character_food.xml"
+#include "gameplay\supplies\character_drugs_4.xml"
+#include "gameplay\supplies\character_drugs_sci.xml"
+
+ actor_break_dialog
+#include "gameplay\character_criticals.xml"
+#include "gameplay\character_dialogs_no_guide.xml"
+
+
+
+
+ jup_b1_stalker_3
+ ui_inGame2_neutral_2
+
+
+ . .
+ jup_b1_stalker_3
+ stalker
+ stalker_terrain
+ characters_voice\human\stalker_3\
+ 2462
+ 1723
+ actors\stalker_neutral\stalker_neutral_2
+
+ [spawn] \n
+ anomaly_scaner \n
+ wpn_ak74u \n
+ ammo_5.45x39_fmj = 1 \n
+ wpn_fort \n
+ ammo_9x18_fmj = 1 \n
+#include "gameplay\supplies\character_items_nd.xml"
+#include "gameplay\supplies\character_food.xml"
+#include "gameplay\supplies\character_drugs_4.xml"
+#include "gameplay\supplies\character_drugs_sci.xml"
+
+ actor_break_dialog
+#include "gameplay\character_criticals.xml"
+#include "gameplay\character_dialogs_no_guide.xml"
+
+
+
+
+ jup_b1_stalker_4
+ ui_inGame2_neutral_2
+
+
+ . .
+ jup_b1_stalker_4
+ stalker
+ stalker_terrain
+ characters_voice\human\stalker_2\
+ 2175
+ -1620
+ actors\stalker_neutral\stalker_neutral_2
+
+ [spawn] \n
+ anomaly_scaner \n
+ wpn_ak74u \n
+ ammo_5.45x39_fmj = 1 \n
+ wpn_fort \n
+ ammo_9x18_fmj = 1 \n
+#include "gameplay\supplies\character_items_nd.xml"
+#include "gameplay\supplies\character_food.xml"
+#include "gameplay\supplies\character_drugs_4.xml"
+#include "gameplay\supplies\character_drugs_sci.xml"
+
+ actor_break_dialog
+#include "gameplay\character_criticals.xml"
+#include "gameplay\character_dialogs_no_guide.xml"
+
+
diff --git a/mods/[DEV] Brotherhood/gamedata/configs/gameplay/character_desc_pripyat.xml b/mods/[DEV] Brotherhood/gamedata/configs/gameplay/character_desc_pripyat.xml
new file mode 100644
index 00000000..c4d0df53
--- /dev/null
+++ b/mods/[DEV] Brotherhood/gamedata/configs/gameplay/character_desc_pripyat.xml
@@ -0,0 +1,563 @@
+
+
+
+
+
+ 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\
+
+ 21256
+ -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
+
+
+ ac_charon_0
+ ac_charon_1
+
+ 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/[DEV] Brotherhood/gamedata/configs/gameplay/character_desc_red_forest.xml b/mods/[DEV] Brotherhood/gamedata/configs/gameplay/character_desc_red_forest.xml
new file mode 100644
index 00000000..58e8b5c8
--- /dev/null
+++ b/mods/[DEV] Brotherhood/gamedata/configs/gameplay/character_desc_red_forest.xml
@@ -0,0 +1,174 @@
+
+
+
+
+
+
+ red_forester_name
+ ui_inGame2_forester
+ red_forester_name
+ red_forester
+ trader
+
+ stalker_terrain
+ 18451
+ 2425
+
+ actors\stalker_lesnik\stalker_lesnik_1
+
+ [spawn] \n
+#include "gameplay\supplies\character_items.xml"
+#include "gameplay\supplies\character_food.xml"
+#include "gameplay\supplies\character_drugs.xml"
+
+
+ red_forester_hello_dialog
+ dm_init_trader
+ dm_init_mechanic
+ red_forester_who_are_you
+ red_forester_mortal_sin
+
+ red_forester_about_zone
+ red_forester_about_forest
+
+ buy_route
+ dm_tech_repair
+ awr_tech_dialog_drink_1
+
+ forester_legendary_0
+ forester_legendary_1
+ forester_legendary_2
+ forester_legendary_5
+ forester_legendary_4
+ forester_mutanthammer
+ forester_legendary_3
+
+
+
+
+ actor_break_dialog
+
+
+
+
+
+ GENERATE_NAME_stalker
+ ui_inGame2_rabbit
+
+ Детальная No information is available.
+
+ monolith_bridge_trader_mlr
+ monolithstalker_terrain
+ characters_voice\human\monolith_3\
+
+ 4500
+
+ -800
+
+ 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
+ dm_ordered_task_dialog
+ dm_ordered_task_completed_dialog
+
+ meet_guid_red_forest_mon
+ meet_guid_red_forest_mon_list
+ travel_guid_red_forest_mon
+ buy_route
+ actor_break_dialog
+
+
+
+
+
+ red_greh_trader_name
+ ui_inGame2_Stribog
+
+ Детальная No information is available.
+
+ red_greh_trader
+ grehstalker_terrain
+ characters_voice\human\greh_1\
+
+ 4500
+
+ -1800
+
+ actors\stalker_greh\stalker_greh_trader
+
+
+ [spawn] \n
+ wpn_ak74m_camo = 1 \n
+ ammo_5.45x39_ap = 2 \n
+ wpn_mp443 = 1 \n
+ ammo_9x18_fmj = 2 \n
+#include "gameplay\supplies\character_items.xml"
+#include "gameplay\supplies\character_food.xml"
+#include "gameplay\supplies\character_drugs.xml"
+
+#include "gameplay\character_criticals.xml"
+ red_greh_trader_start_dialog
+ red_greh_trader_st
+ dm_init_trader
+ drx_sl_red_greh_trader_game_start_dialog_1
+ drx_sl_cf_task_completed_dialog
+ drx_sl_task_completed_dialog
+ dm_ordered_task_completed_dialog
+ drx_sl_red_greh_trader_meet_dialog
+ dm_ordered_task_dialog
+ dm_broker_dialog
+ buy_route
+ drx_sl_change_faction_dialog
+ actor_break_dialog
+
+
+
+
+ red_greh_tech_name
+ ui_inGame2_Dazhbog
+
+ Детальная No information is available.
+
+ red_greh_tech
+ grehstalker_terrain
+ characters_voice\human\greh_1\
+
+ 6300
+
+ -400
+
+ actors\stalker_greh\stalker_greh_tech
+
+
+ [spawn] \n
+ wpn_mp133 = 1 \n
+ ammo_12x76_zhekan = 2 \n
+ wpn_gsh18 = 1 \n
+ ammo_9x19_fmj = 2 \n
+#include "gameplay\supplies\character_items.xml"
+#include "gameplay\supplies\character_food.xml"
+#include "gameplay\supplies\character_drugs.xml"
+
+#include "gameplay\character_criticals.xml"
+ red_greh_tech_start_dialog
+ red_greh_tech_st
+ dm_init_trader
+ dm_init_mechanic
+ drx_sl_task_completed_dialog
+ dm_ordered_task_completed_dialog
+ drx_sl_red_greh_tech_meet_dialog
+ drx_sl_mechanic_task_dialog
+ dm_tech_repair
+ dm_encrypted_pda
+ actor_break_dialog
+
+
diff --git a/mods/[DEV] Brotherhood/gamedata/configs/gameplay/character_desc_yantar.xml b/mods/[DEV] Brotherhood/gamedata/configs/gameplay/character_desc_yantar.xml
new file mode 100644
index 00000000..d7849ed3
--- /dev/null
+++ b/mods/[DEV] Brotherhood/gamedata/configs/gameplay/character_desc_yantar.xml
@@ -0,0 +1,362 @@
+
+
+
+
+
+
+ yan_st_sakharov_name
+ ui_inGame2_sakharov
+
+
+ yan_stalker_sakharov
+ ecolog stalker_terrain
+ characters_voice\human\stalker_1\
+ 16743
+ 1874
+
+ actors\stalker_ucheniy\stalker_ucheniy_1
+ 0
+
+ [spawn] \n
+ good_psy_helmet \n
+ hand_radio = 1 \n
+#include "gameplay\supplies\character_food.xml"
+#include "gameplay\supplies\character_drugs.xml"
+
+#include "gameplay\character_criticals.xml"
+
+ yan_stalker_sakharov_start
+ dm_init_trader
+ sakharov_questlines_about_dialog
+ drx_sl_yan_stalker_sakharov_game_start_dialog_1
+
+ sakharov_living_legend
+ sakharov_living_legend_finish
+ sakharov_mortal_sin
+ sakharov_mortal_sin_envoy
+ sakharov_mortal_sin_report
+ sakharov_mortal_sin_ambush
+ sakharov_mortal_sin_zone_hero
+ sakharov_operation_afterglow
+ sakharov_operation_afterglow_transmission_report
+
+ dm_important_documents
+ dm_lifestyle
+ drx_sl_cf_task_completed_dialog
+ drx_sl_task_completed_dialog
+ dm_ordered_task_completed_dialog
+ drx_sl_yan_stalker_sakharov_meet_dialog
+ yan_stalker_sakharov_about_brain_scorcher
+ yan_stalker_sakharov_bad_psi_helmet
+ yan_stalker_sakharov_good_psi_helmet
+ yan_stalker_sakharov_upgrade_psi_helmet
+ dm_ordered_task_dialog
+ buy_route
+ drx_sl_change_faction_dialog
+
+
+ sakharov_vybegallo_1
+ sakharov_vybegallo_2
+ sakharov_vybegallo_3
+ sakharov_vybegallo_4
+
+
+
+
+
+
+ actor_break_dialog
+
+
+
+
+
+
+ yan_kruglov_name
+ ui_inGame2_ecolog_green
+
+ yan_kruglov_bio
+ yan_ecolog_kruglov
+ ecolog stalker_terrain
+
+ 2071
+ -603
+ actors\stalker_ecologist\stalker_ecolog_military
+ characters_voice\human\ecolog_3\
+ 1
+
+ [spawn] \n
+ wpn_protecta \n
+ ammo_12x76_zhekan = 2 \n
+ wpn_walther \n
+ ammo_9x19_fmj \n
+ detector_simple \n
+
+#include "gameplay\character_criticals.xml"
+ yan_ecolog_kruglov_start_dialog
+ dm_init_trader
+ dm_add_repair
+ actor_break_dialog
+
+
+
+
+
+ yan_semenov_name
+ ui_inGame2_ecolog_orange
+
+ yan_semenov_bio
+ yan_ecolog_semenov
+ ecolog stalker_terrain
+
+ 354
+ -1809
+ actors\stalker_ecologist\stalker_ecolog
+ characters_voice\human\ecolog_3\
+ 1
+
+ [spawn] \n
+ wpn_protecta \n
+ ammo_12x76_zhekan = 2 \n
+ wpn_walther \n
+ ammo_9x19_fmj \n
+ detector_simple \n
+
+#include "gameplay\character_criticals.xml"
+
+ yan_ecolog_semenov_start_dialog
+ dm_ordered_task_completed_dialog
+ dm_ordered_task_dialog
+ dm_is_actor_companion_dialog
+ dm_companion_patrol
+ dm_companion_leave
+ actor_break_dialog
+
+
+
+
+
+ yan_vasilyev_name
+ ui_inGame2_ecolog_orange
+
+ yan_vasilyev_bio
+ yan_ecolog_vasilyev
+ ecolog stalker_terrain
+ 20
+ 768
+ actors\stalker_ecologist\stalker_ecolog
+ characters_voice\human\ecolog_3\
+ 1
+
+ [spawn] \n
+ wpn_protecta \n
+ ammo_12x76_zhekan = 2 \n
+ wpn_walther \n
+ ammo_9x19_fmj \n
+ detector_simple \n
+
+#include "gameplay\character_criticals.xml"
+ yan_ecolog_vasilyev_start_dialog
+ actor_break_dialog
+
+
+
+
+
+ yan_merc_01
+ ui_inGame2_merc_4
+
+
+ . .
+ yan_merc_01
+ ecolog
+ stalker_terrain
+ characters_voice\human\killer_3\
+ 11650
+ 1373
+ actors\stalker_merc\stalker_merc_4
+
+ [spawn] \n
+ wpn_g36 \n
+ ammo_5.56x45_ap = 1 \n
+ wpn_usp = 1 \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"
+
+ yan_merc_guards_start
+ actor_break_dialog
+#include "gameplay\character_criticals.xml"
+
+
+
+ yan_merc_02
+ ui_inGame2_merc_2
+
+
+ . .
+ yan_merc_02
+ ecolog
+ stalker_terrain
+ characters_voice\human\killer_3\
+ 6042
+ 39
+ actors\stalker_merc\stalker_merc_2
+
+ [spawn] \n
+ wpn_l85 \n
+ ammo_5.56x45_ap = 1 \n
+ wpn_sig220 \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_4.xml"
+#include "gameplay\supplies\character_drugs_sci.xml"
+
+ yan_merc_guards_start
+ actor_break_dialog
+#include "gameplay\character_criticals.xml"
+
+
+
+ yan_merc_03
+ ui_inGame2_merc_2
+
+
+ . .
+ yan_merc_03
+ ecolog
+ stalker_terrain
+ characters_voice\human\killer_3\
+ 5144
+ 837
+ actors\stalker_merc\stalker_merc_2
+
+ [spawn] \n
+ wpn_l85 \n
+ ammo_5.56x45_ap = 1 \n
+ wpn_sig220 \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_3.xml"
+#include "gameplay\supplies\character_drugs_sci.xml"
+
+ yan_merc_guards_start
+ actor_break_dialog
+#include "gameplay\character_criticals.xml"
+
+
+
+ yan_ghost_name
+ ui_inGame2_ghost
+
+ sim_stalker_veteran_bio
+ yan_ghost
+ stalker
+ stalker_terrain
+ 19994
+ 2239
+ actors\stalker_neutral\stalker_prizrak
+ characters_voice\human\stalker_1\
+ 1
+
+ [spawn] \n
+ wpn_walther \n
+ ammo_9x19_fmj \n
+ main_story_3_lab_x16_documents \n
+ stalker_outfit \n
+
+
+
+
+
+
+ mechanic_army_yan_mlr_name
+ ui_inGame2_Soldier_3
+
+ No information is available.
+
+ mechanic_army_yan_mlr
+ ecolog
+ stalker_terrain
+
+ characters_voice\human\military_3\
+
+ 3500
+
+ 1500
+
+ actors\stalker_soldier\stalker_soldier_3
+
+
+ [spawn] \n
+ wpn_abakan \n
+ ammo_5.45x39_fmj = 3 \n
+ wpn_fort \n
+ ammo_9x18_fmj = 3 \n
+ detector_elite = 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
+ dm_init_mechanic
+ drx_sl_task_completed_dialog
+ dm_ordered_task_completed_dialog
+ army_yan_mec_about_tool
+ drx_sl_mechanic_task_dialog
+ dm_tech_repair
+ dm_encrypted_pda
+ awr_tech_dialog_drink_1
+ actor_break_dialog
+
+
+
+
+
+ yan_povar_army_mlr_name
+ ui_inGame2_Soldier_1
+
+ No information is available.
+
+ yan_povar_army_mlr
+ ecologstalker_terrain
+ characters_voice\human\military_1\
+
+ 600
+
+ 998
+
+ actors\stalker_soldier\stalker_soldier1b
+
+
+ [spawn] \n
+ wpn_fort \n
+ ammo_9x18_fmj = 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_batender
+ meet_povar_army
+ barter_povar_army
+ remember_dyx_barter
+
+
+
+ nr_spirit_corruption_0
+
+
+
+
+ actor_break_dialog
+
+
+
diff --git a/mods/[DEV] Brotherhood/gamedata/configs/gameplay/dialogs_brotherhood.xml b/mods/[DEV] Brotherhood/gamedata/configs/gameplay/dialogs_brotherhood.xml
new file mode 100644
index 00000000..b0934e42
--- /dev/null
+++ b/mods/[DEV] Brotherhood/gamedata/configs/gameplay/dialogs_brotherhood.xml
@@ -0,0 +1,4977 @@
+
+
+
+
+--To do:
+---- add to barman_north_0 condition of brainscorcher
+---- add to fanatic_north_0 condition of brainscorcher
+---- add disable_info agr_snork_infestion to last brotherhood agroprom quest done
+---- Vybgeallo bugfix?
+----sakharov_vybegallo_1 I added dont_has_info>vybegallo_quest_1_done 3229~
+----phrase id="8"> dont_has_info>vybegallo_quest_1_done 2959~
+
+
+
+Custom trade dialogue
+
+
+
+
+
+
+---- Hunter Guild ----
+
+
+
+
+
+-- Butcher --
+
+
+
+
+
+--Quest1--
+
+
+
+
+
+
+--Quest2--
+
+
+
+
+
+
+agr_snork_infestion
+--Quest3--
+
+
+
+
+
+
+
+
+--- Quest 4 ---
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+---- Brotherhood 5 ----
+
+
+
+
+
+
+
+
+---- Bellerophon Quests ----
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+--- Butcher Legendary ---
+
+
+
+
+
+
+
+
+
+
+ ---- Dolg Hunter Questline---
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+-- Artyom Morphine --
+
+
+
+
+------- Forester --------
+
+
+
+
+
+
+---Sidequest---
+---Alyosha Shyogolov---
+
+
+
+
+
+
+
+
+
+
+------ Forester ------
+
+
+
+
+
+---- Legendary Hunter ----
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+--Vybegallo--
+
+
+
+
+
+--- Quest 1 ---
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+---Sidorovich---
+
+-- take the railway bridge --
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+----- Rush to the North -----
+
+
+
+
+
+
+
+
+---- Smuggling/ Shlitzer
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/mods/[DEV] Brotherhood/gamedata/configs/gameplay/dialogs_brotherhood_ac.xml b/mods/[DEV] Brotherhood/gamedata/configs/gameplay/dialogs_brotherhood_ac.xml
new file mode 100644
index 00000000..736be055
--- /dev/null
+++ b/mods/[DEV] Brotherhood/gamedata/configs/gameplay/dialogs_brotherhood_ac.xml
@@ -0,0 +1,194 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/mods/[DEV] Brotherhood/gamedata/configs/gameplay/dialogs_brotherhood_ms.xml b/mods/[DEV] Brotherhood/gamedata/configs/gameplay/dialogs_brotherhood_ms.xml
new file mode 100644
index 00000000..86284fcb
--- /dev/null
+++ b/mods/[DEV] Brotherhood/gamedata/configs/gameplay/dialogs_brotherhood_ms.xml
@@ -0,0 +1,1123 @@
+
+
+
+
+---------------------------------------
+;Catilina's Stories from the Zone
+;Market Share Questline
+;
+---------------------------------------
+
+
+
+
+---- Marlo and Chris----
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+----- Sidorovich ------
+
+
+
+
+----- Quest 1 ------
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+---- Quest 3 -----
+
+
+
+
+
+
+
+---Stage II---
+---Market Share Takeover---
+
+--Marlo--
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/mods/[DEV] Brotherhood/gamedata/configs/gameplay/dialogs_brotherhood_nr.xml b/mods/[DEV] Brotherhood/gamedata/configs/gameplay/dialogs_brotherhood_nr.xml
new file mode 100644
index 00000000..bb31ef73
--- /dev/null
+++ b/mods/[DEV] Brotherhood/gamedata/configs/gameplay/dialogs_brotherhood_nr.xml
@@ -0,0 +1,2898 @@
+
+
+
+----to be done: alyosha_shyogolov_4 - add has_info from conversation before
+
+
+---- Alyosha -----
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+---- Ecologists corruption dialogues
+
+
+
+
+
+
+
+
+---barkeep ---
+
+
+
+
+
+
+
+-- scamlok--
+
+
+
+
+
+
+
+
+
+
+
+
+
+--- Scamlok ---
+
+
+
+
+---- Fanat training rookies ----
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+----- Strange Meat
+
+--- Barka
+
+-- Execution
+
+
+
+
+
+
+
+
+
+--- Hawaiian
+
+
+
+
+
+--- Nitro
+
+
+
+
+
+
+
+
+
+
+
+---- Gutalin
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+---- Trapper
+
+-- prelude quest 1
+
+
+
+
+
+
+
+
+
+-- giving quest 1
+
+
+
+-- quest 1 extra info
+
+
+
+-- finishing quest 1
+
+
+
+-- extra bait
+
+
+
+-- quest 2
+
+
+
+
+
+--quest 2 extra info
+
+
+
+--quest 2 done
+
+
+
+
+
+
+
+
+
+
+
+
+----- Random Events
+
+---Sasha Baltun
+
+
+
+
+
+
+
+
+
+
+
diff --git a/mods/[DEV] Brotherhood/gamedata/configs/gameplay/npc_profile_brotherhood.xml b/mods/[DEV] Brotherhood/gamedata/configs/gameplay/npc_profile_brotherhood.xml
new file mode 100644
index 00000000..ced72caf
--- /dev/null
+++ b/mods/[DEV] Brotherhood/gamedata/configs/gameplay/npc_profile_brotherhood.xml
@@ -0,0 +1,255 @@
+
+
+
+
+
+ vybegallo
+
+
+
+ bellerophon
+
+
+
+ sarpedon
+
+
+
+
+ hunter_orion
+
+
+ nr_sorokin
+
+
+
+
+ assault_stalker_leader_esc_5_9
+
+
+ assault_csky_leader_esc_5_7
+
+
+
+ nr_scamlok
+
+
+
+
+ zaton_brokkr
+
+
+ zaton_eitri
+
+
+ marlo_Stanfield
+
+
+ chris_partlow
+
+
+ paranoia_man
+
+
+ zaton_mercenary_1
+
+
+ zaton_mercenary_courrier_1
+
+
+ zaton_mercenary_2
+
+
+
+ anna_morphine
+
+
+
+ ecologist_sidorovich
+
+
+
+ alyosha_shyogolov
+
+
+ nr_vova_bandit_1
+
+
+ nr_pasha_bandit_2
+
+
+
+ bh_mozgotlen
+
+
+
+ bh_rat_guards_naruchnik
+
+
+
+ bh_rat_trap_leader
+
+
+
+ erast_fandorin
+
+
+
+ flavio_becca
+
+
+
+ nr_ecologist_rydzyk
+
+
+
+ nr_ecologist_1
+
+
+ nr_ecologist_2
+
+
+ nr_ecologist_3
+
+
+
+ nr_ambush_1
+
+
+ nr_ambush_2
+
+
+ nr_ambush_3
+
+
+ nr_ambush_4
+
+
+ nr_ambush_5
+
+
+
+
+
+ zaton_achilles
+
+
+ sasha_tolstoy
+
+
+
+ dolg_vadim_bloodsucker
+
+
+ dolg_sergey_bloodsucker
+
+
+ dolg_sasha_bloodsucker
+
+
+ dolg_artyom_bloodsucker
+
+
+ dolg_ilya_bloodsucker
+
+
+
+ jupiter_monk
+
+
+
+ nr_iliaz
+
+
+
+ butcher_tug_1
+
+
+
+ butcher_tug_2
+
+
+
+
+ bh_gutalin
+
+
+
+
+ controller_victim_1
+
+
+
+ nr_dead_convict_2
+
+
+
+ nr_dead_convict_1
+
+
+
+ nr_executioner_2
+
+
+
+ nr_executioner_1
+
+
+ nr_executioner_3
+
+
+
+ nr_lyoshik
+
+
+
+ bh_badger
+
+
+
+ bh_shlitzer
+
+
+ nr_bezsonik
+
+
+
+ bh_ironchain
+
+
+ nr_trapper_missing_hunter_1
+
+
+ nr_trapper_missing_hunter_2
+
+
+ nr_trapper_missing_hunter_3
+
+
+ nr_sasha_baltunov
+
+
+ nr_starik_murdered
+
+
+
+
+---- Atomic Crusader ----
+
+
+ ac_pri_medic_monolith
+
+
+ ac_blue_winter
+
+
+ ac_balthazar
+
+
+ ac_melchior
+
+
+ ac_caspar
+
+
+
diff --git a/mods/[DEV] Brotherhood/gamedata/configs/items/items/items_s_brotherhood.ltx b/mods/[DEV] Brotherhood/gamedata/configs/items/items/items_s_brotherhood.ltx
new file mode 100644
index 00000000..61f6fe45
--- /dev/null
+++ b/mods/[DEV] Brotherhood/gamedata/configs/items/items/items_s_brotherhood.ltx
@@ -0,0 +1,461 @@
+;;--;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;--;;;;;;; Items for Stories from the Zone ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;--;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+;;-- Section configs for 'cooking kits' - items which initiate the manual cooking UI. Kits are allowed to use other items as 'materials' boosting cooking efficiency. 19.10.2013 ponney68
+
+
+;;--==========================< Strange Sausage >=============================
+[kolbasa_strange]:booster
+$spawn = "food and drugs\kolbasa_strange"
+visual = dynamics\devices\dev_kolbasa\dev_kolbasa.ogf
+kind = i_food
+description = st_kolbasa_strange_descr
+cost = 437
+inv_name = st_kolbasa_strange
+inv_name_short = st_kolbasa_strange
+inv_weight = 0.328
+inv_grid_width = 1
+inv_grid_height = 1
+inv_grid_x = 2
+inv_grid_y = 63
+attach_angle_offset = 0.440521, 1.378287, -0.644026
+attach_position_offset = 0.104196, -0.010821, 0.076969
+attach_bone_name = bip01_r_hand
+auto_attach = false
+bone_name = bip01_r_hand
+position_offset = 0.0,0.0,0.0 0.117
+angle_offset = 1.570790,1.570790,3.92699
+eat_health = -0.048
+eat_satiety = 0.732
+eat_sleepiness = 0.0192
+eat_thirstiness = 0.6
+use_sound = interface\inv_eat_paperwrap
+
+[kolbasa_strange_tried]:booster
+$spawn = "food and drugs\kolbasa_strange"
+visual = dynamics\devices\dev_kolbasa\dev_kolbasa.ogf
+kind = i_food
+description = st_kolbasa_strange_tried_descr
+cost = 275
+inv_name = st_kolbasa_strange_tried
+inv_name_short = st_kolbasa_strange_tried
+inv_weight = 0.18
+inv_grid_width = 1
+inv_grid_height = 1
+inv_grid_x = 2
+inv_grid_y = 63
+attach_angle_offset = 0.440521, 1.378287, -0.644026
+attach_position_offset = 0.104196, -0.010821, 0.076969
+attach_bone_name = bip01_r_hand
+auto_attach = false
+bone_name = bip01_r_hand
+position_offset = 0.0,0.0,0.0 0.117
+angle_offset = 1.570790,1.570790,3.92699
+eat_health = -0.048
+eat_satiety = 0.36
+eat_sleepiness = 0.0192
+eat_thirstiness = 0.6
+use_sound = interface\inv_eat_paperwrap
+
+[kolbasa_strange_unpacked]:kolbasa_strange
+$spawn = "devices\monster_items\kolbasa_strange_unpacked"
+kind = i_mutant_raw
+visual = dynamics\zpf\raw_tushkano.ogf
+inv_weight = 0.280
+inv_name = st_kolbasa_strange_unpacked
+inv_name_short = st_kolbasa_strange_unpacked
+description = st_kolbasa_strange_unpacked_description
+inv_grid_x = 5
+inv_grid_y = 34
+cost = 330
+eat_health = -0.048
+eat_satiety = 0.48
+eat_sleepiness = 0.0192
+eat_thirstiness = 0.6
+use_sound = interface\inv_eat_mutant_food
+repair_part_bonus = 0.01
+attach_angle_offset = 0.440521, 1.378287, -0.644026
+attach_position_offset = 0.104196, -0.010821, 0.076969
+attach_bone_name = bip01_r_hand
+position_offset = 0.0,0.0,0.0 0.117
+angle_offset = 1.570790,1.570790,3.92699
+
+[kolbasa_strange_tried_unpacked]:kolbasa_strange_tried
+$spawn = "devices\monster_items\kolbasa_strange_unpacked"
+kind = i_mutant_raw
+visual = dynamics\zpf\raw_tushkano.ogf
+inv_weight = 0.280
+inv_name = st_kolbasa_strange_tried_unpacked
+inv_name_short = st_kolbasa_strange_tried_unpacked
+description = st_kolbasa_strange_tried_unpacked_description
+inv_grid_x = 5
+inv_grid_y = 34
+cost = 160
+eat_health = -0.048
+eat_satiety = 0.28
+eat_sleepiness = 0.0192
+eat_thirstiness = 0.6
+use_sound = interface\inv_eat_mutant_food
+repair_part_bonus = 0.01
+attach_angle_offset = 0.440521, 1.378287, -0.644026
+attach_position_offset = 0.104196, -0.010821, 0.076969
+attach_bone_name = bip01_r_hand
+position_offset = 0.0,0.0,0.0 0.117
+angle_offset = 1.570790,1.570790,3.92699
+
+[kolbasa_strange_paper]:tch_quest
+kind = i_quest
+can_trade = false
+quest_item = true
+inv_grid_x = 0
+inv_grid_y = 14
+cost = 0
+visual = dynamics\equipments\quest\notes_letter_1.ogf
+description = st_kolbasa_strange_paper_descr
+inv_name = st_kolbasa_strange_paper_name
+inv_name_short = st_kolbasa_strange_paper_name
+
+
+[bullet_yak]:tch_quest
+visual = dynamics\equipments\trade\ammo.ogf
+description = st_bullet_yak_descr
+inv_name = st_bullet_yak
+inv_name_short = st_bullet_yak
+inv_grid_width = 1
+inv_grid_height = 1
+inv_grid_x = 0
+inv_grid_y = 46
+cost = 0
+inv_weight = 0.13
+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
+can_trade = false
+kind = i_quest
+quest_item = true
+
+[bullet_yak_identify]:tch_quest
+visual = dynamics\equipments\trade\ammo.ogf
+description = st_bullet_yak_identify_descr
+inv_name = st_bullet_yak_identify
+inv_name_short = st_bullet_yak_identify
+inv_grid_width = 1
+inv_grid_height = 1
+inv_grid_x = 0
+inv_grid_y = 46
+cost = 0
+inv_weight = 0.13
+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
+can_trade = false
+kind = i_quest
+quest_item = true
+
+
+;;--==========================< Shlitzer Questline >=============================
+[quest_package_shlitzer]:tch_quest
+
+kind = i_quest
+visual = dynamics\equipments\trade\kit_hunt.ogf
+story_id = quest_package_shlitzer
+;quest_item = true
+inv_weight = 15.42
+inv_grid_width = 2
+inv_grid_height = 2
+inv_grid_x = 4
+inv_grid_y = 77
+inv_name = quest_package_shlitzer_name
+inv_name_short = quest_package_shlitzer_name
+description = quest_package_shlitzer_desc
+can_trade = false
+cost = 0
+
+[quest_package_shlitzer_2]:tch_quest
+
+kind = i_quest
+visual = dynamics\equipments\blue_box.ogf
+story_id = quest_package_shlitzer_2
+quest_item = true
+inv_weight = 18.23
+inv_grid_width = 2
+inv_grid_height = 2
+inv_grid_x = 4
+inv_grid_y = 77
+inv_name = st_quest_package_shlitzer_2_name
+inv_name_short = st_quest_package_shlitzer_2_name
+description = st_quest_package_shlitzer_2_desc
+can_trade = false
+cost = 0
+
+;;--==========================< Brotherhood Questline >=============================
+[quest_package_vybegallo]:tch_quest
+$spawn = "quest_items\quest_package_vybegallo"
+kind = i_quest
+visual = dynamics\equipments\trade\kit_hunt.ogf
+story_id = quest_package_vybegallo
+;quest_item = true
+inv_weight = 5.42
+inv_grid_width = 2
+inv_grid_height = 2
+inv_grid_x = 4
+inv_grid_y = 77
+inv_name = quest_package_vybegallo_name
+inv_name_short = quest_package_vybegallo_name
+description = quest_package_vybegallo_desc
+can_trade = false
+cost = 0
+
+
+
+
+
+
+
+
+----- Market Share -----
+
+[itm_pda_mercenary_1]:tch_quest
+
+kind = i_quest
+visual = dynamics\devices\dev_pda\dev_pda.ogf
+can_trade = false
+quest_item = true
+description = st_pda_mercenary_1_descr
+inv_name = st_pda_mercenary_1_name
+inv_name_short = st_pda_mercenary_1_name
+cost = 0
+inv_grid_x = 7
+inv_grid_y = 3
+upgr_icon_path = ui\actor_items\ui_actor_items_1
+upgr_icon_x = 150
+upgr_icon_y = 0
+upgr_icon_width = 150
+upgr_icon_height = 100
+
+[itm_usb_mercenary_1]:tch_quest
+quest_item = true
+can_trade = false
+description = st_itm_usb_mercenary_1_descr
+inv_grid_x = 8
+inv_grid_y = 3
+inv_name = st_itm_usb_mercenary_1_name
+inv_name_short = st_itm_usb_mercenary_1_name
+kind = i_device
+
+[ms_owl_documents_1]:tch_quest
+
+kind = i_quest
+can_trade = false
+quest_item = true
+visual = dynamics\equipments\quest\notes_document_case_2.ogf
+description = st_ms_owl_documents_1_desc
+inv_name = st_ms_owl_documents_1_name
+inv_name_short = st_ms_owl_documents_1_name
+inv_weight = 0.5
+inv_grid_width = 2
+inv_grid_height = 1
+inv_grid_x = 2
+inv_grid_y = 15
+cost = 0
+story_id = ms_owl_documents_1
+
+[quest_package_mercenary_1]:tch_quest
+
+kind = i_quest
+visual = dynamics\equipments\blue_box.ogf
+story_id = quest_package_mercenary_1
+quest_item = true
+inv_weight = 15.42
+inv_grid_width = 2
+inv_grid_height = 2
+inv_grid_x = 4
+inv_grid_y = 77
+inv_name = st_quest_package_mercenary_name
+inv_name_short = st_quest_package_mercenary_name
+description = st_quest_package_mercenary_desc
+can_trade = false
+cost = 0
+
+[quest_package_mercenary_2]:quest_package_mercenary_1
+story_id = quest_package_mercenary_2
+inv_weight = 16.21
+
+[quest_package_mercenary_3]:quest_package_mercenary_1
+story_id = quest_package_mercenary_3
+inv_weight = 13.76
+
+[quest_package_mercenary_4]:quest_package_mercenary_1
+story_id = quest_package_mercenary_4
+inv_weight = 20.65
+
+[quest_package_mercenary_5]:quest_package_mercenary_1
+story_id = quest_package_mercenary_5
+inv_weight = 17.58
+
+[quest_package_mercenary_6]:quest_package_mercenary_1
+story_id = quest_package_mercenary_6
+inv_weight = 18.79
+
+
+
+
+
+
+------Vybegallo------
+
+
+
+[sakharov_order_vybegallo]:tch_quest
+kind = i_quest
+can_trade = false
+quest_item = true
+inv_grid_x = 0
+inv_grid_y = 14
+cost = 0
+visual = dynamics\equipments\trade\book1.ogf
+description = st_sakharov_order_vybegallo_descr
+inv_name = st_sakharov_order_vybegallo_name
+inv_name_short = st_sakharov_order_vybegallo_name
+
+[vybegallo_order_mercenary]:tch_quest
+kind = i_quest
+can_trade = false
+quest_item = true
+inv_grid_x = 3
+inv_grid_y = 14
+cost = 0
+visual = dynamics\equipments\quest\notes_letter_1.ogf
+description = st_vybegallo_order_mercenary_descr
+inv_name = st_vybegallo_order_mercenary_name
+inv_name_short = st_vybegallo_order_mercenary_name
+
+[af_grid_prototype]:af_base
+$spawn = "artefacts\af_grid_up_s"
+kind = i_attach
+class = SCRPTART ; будет подпрыгивать
+visual = dynamics\equipments\aa\frames
+description = st_af_grid_prototype_descr
+inv_name = st_af_grid_prototype_name
+inv_name_short = st_af_grid_prototype_name
+inv_weight = 1.00
+inv_grid_x = 2
+inv_grid_y = 19
+inv_grid_width = 1
+inv_grid_height = 1
+cost = 24800 ; 6200
+1icon_layer_x = 0
+1icon_layer_y = 0
+1icon_layer_scale = 1
+1icon_layer = tch_upgr_ico
+jump_height = 0.0
+;particles = artefact\af_thermal_idle
+det_show_particles = artefact\af_thermal_show
+det_hide_particles = artefact\af_thermal_hide
+particles_bone = joint2
+af_rank = 0
+lights_enabled = false
+trail_light_color = 0.9,0.4,0.2
+trail_light_range = 2.0
+attach_angle_offset = 1.922,1.551,-0.740
+attach_position_offset = 0.15,0.002,0.25
+attach_bone_name = bip01_r_hand
+auto_attach = false
+;скорости увеличения (уменьшения)
+health_restore_speed = 0
+radiation_restore_speed = 0
+satiety_restore_speed = 0
+power_restore_speed = 0
+bleeding_restore_speed = 0
+hit_absorbation_sect = af_grid_up_absorbation
+additional_inventory_weight = 10.97 ;20.97
+additional_inventory_weight2 = 10.97 ;20.97
+artefact_activation_seq = af_activation_bold
+repair_part_bonus = 0.11
+tier = 6
+[af_grid_up_s_absorbation]
+burn_immunity = 0 ;коэффициенты иммунитета
+strike_immunity = 0
+shock_immunity = -0.032
+wound_immunity = 0
+radiation_immunity = 0
+telepatic_immunity = 0.00862 ; 200 mT
+chemical_burn_immunity = 0
+explosion_immunity = 0
+fire_wound_immunity = 0
+
+
+
+
+
+------Trapper------
+
+[radio_micro_quest]:tch_quest, booster
+visual = dynamics\equipments\trade\radio.ogf
+cost = 1770
+inv_name = st_radio_micro_quest
+inv_name_short = st_radio_micro_quest
+story_id = radio_micro_quest
+class = WP_SCOPE
+description = st_radio_micro_quest_descr
+inv_weight = 0.4
+inv_grid_width = 1
+inv_grid_height = 1
+inv_grid_x = 5
+inv_grid_y = 42
+attach_angle_offset = 0.000000, -1.204452, -1.262921
+attach_position_offset = 0.081856, -0.035081, 0.011694
+attach_bone_name = bip01_l_hand
+auto_attach = false
+remove_after_use = false
+tier = 3
+
+
+[quest_chimera_bait_brotherhood]:tch_quest
+$spawn = "quest_items\quest_chimera_bait_brotherhood"
+visual = dynamics\equipments\trade\kit_hunt.ogf
+story_id = quest_chimera_bait_brotherhood
+class = WP_SCOPE
+story_id = quest_chimera_bait_brotherhood
+inv_weight = 5.42
+inv_grid_width = 2
+inv_grid_height = 2
+inv_grid_x = 4
+inv_grid_y = 77
+inv_name = quest_chimera_bait_brotherhood_name
+inv_name_short = quest_chimera_bait_brotherhood_name
+description = quest_chimera_bait_brotherhood_desc
+can_trade = false
+cost = 0
+
+
+
+--- random
+
+[nr_starik_murdered_diary]:tch_quest
+can_trade = false
+inv_grid_x = 0
+inv_grid_y = 14
+cost = 0
+visual = dynamics\equipments\trade\book1.ogf
+description = st_nr_starik_murdered_diary_descr
+inv_name = st_nr_starik_murdered_diary_name
+inv_name_short = st_nr_starik_murdered_diary_name
+
+
+--- Alyosha
+[bh_mozgotlen_documents]:tch_quest
+inv_grid_x = 0
+inv_grid_y = 14
+cost = 0
+visual = dynamics\equipments\trade\book1.ogf
+description = st_bh_mozgotlen_documents_descr
+inv_name = st_bh_mozgotlen_documents_name
+inv_name_short = st_bh_mozgotlen_documents_name
+kind = i_quest
+can_trade = false
+quest_item = true
+cost = 0
\ No newline at end of file
diff --git a/mods/[DEV] Brotherhood/gamedata/configs/items/outfits/o_z_brotherhood_outfits.ltx b/mods/[DEV] Brotherhood/gamedata/configs/items/outfits/o_z_brotherhood_outfits.ltx
new file mode 100644
index 00000000..d126b228
--- /dev/null
+++ b/mods/[DEV] Brotherhood/gamedata/configs/items/outfits/o_z_brotherhood_outfits.ltx
@@ -0,0 +1,58 @@
+
+;;--==========================< Brotherhood Questline >=============================
+;--------------------------------------------------------------------------
+
+
+
+[trenchcoat_green_outfit_brotherhood_forester]:outfit_base
+
+ kind = i_quest
+ can_trade = false
+ quest_item = true
+ class = EQU_STLK
+ ef_equipment_type = 3
+ visual = dynamics\outfit\bandit_commander_outfit
+ actor_visual = actors\stalker_bandit\stalker_bandit4b.ogf
+ npc_visual = actors\stalker_bandit\stalker_bandit4b.ogf
+ player_hud_section = actor_hud_bandit_trench
+ character_portrait = ui_inGame2_bandit_6d
+ full_icon_name = npc_icon_dolg_outfit
+ full_scale_icon = 8, 11
+
+ inv_name = st_trenchcoat_green_outfit_brotherhood_forester_name
+ inv_name_short = st_trenchcoat_green_outfit_brotherhood_forester_name
+ description = st_trenchcoat_green_outfit_brotherhood_forester_descr
+ inv_grid_x = 84
+ inv_grid_y = 18
+ upgr_icon_x = 1262
+ upgr_icon_y = 511
+ upgr_icon_width = 303
+ upgr_icon_height = 166
+ upgrades = up_gr_firstab_ps5_1, up_gr_seconab_ps5_1, up_gr_thirdab_ps5_1
+ installed_upgrades =
+ upgrade_scheme = up_scheme_ps5_1
+
+ community =
+ kind = o_medium
+ cost = 45370
+ inv_weight = 5
+ additional_inventory_weight = 6
+ additional_inventory_weight2 = 6
+ artefact_count = 2
+ immunities_sect = sect_trenchcoat_brown_outfit_immunities
+ repair_type = outfit_medium
+ ;repair_part_bonus = 0.21
+ hit_fraction_actor = 0.45
+ bones_koeff_protection = actor_armor_duty_suit
+ control_inertion_factor = 1.2
+ power_loss = 0.05
+
+ burn_protection = 0.15
+ shock_protection = 0.45
+ radiation_protection = 0.0115
+ chemical_burn_protection = 0.042
+ telepatic_protection = 0.034
+ strike_protection = 0.40
+ explosion_protection = 0.5
+ wound_protection = 0.45
+ fire_wound_protection = 0.3
diff --git a/mods/[DEV] Brotherhood/gamedata/configs/items/settings/parts_brotherhood.ltx b/mods/[DEV] Brotherhood/gamedata/configs/items/settings/parts_brotherhood.ltx
new file mode 100644
index 00000000..93d63709
--- /dev/null
+++ b/mods/[DEV] Brotherhood/gamedata/configs/items/settings/parts_brotherhood.ltx
@@ -0,0 +1,9 @@
+;-------------------------------------------------
+
+; Comrade Catilina - Brotherhood
+;
+;--------------------------------------------------
+
+[nor_parts_list]
+kolbasa_strange= kolbasa_strange_unpacked, kolbasa_strange_paper, breadold
+kolbasa_strange_tried = kolbasa_strange_tried_unpacked, kolbasa_strange_paper, breadold
\ No newline at end of file
diff --git a/mods/[DEV] Brotherhood/gamedata/configs/items/weapons/w_z_brotherhood.ltx b/mods/[DEV] Brotherhood/gamedata/configs/items/weapons/w_z_brotherhood.ltx
new file mode 100644
index 00000000..5b8813df
--- /dev/null
+++ b/mods/[DEV] Brotherhood/gamedata/configs/items/weapons/w_z_brotherhood.ltx
@@ -0,0 +1,150 @@
+--- maybe condition decay is too fast? it's 35 instead of 20 (og saiga12)
+
+
+
+;------------------------------------------------------------------------------------------------
+[wpn_saiga12s_mutanthammer]:wpn_saiga12s
+parent_section = wpn_saiga12s_mutanthammer
+GroupControlSection = spawn_group
+discovery_dependency =
+$npc = off
+$prefetch = 8
+$spawn = "weapons\ak-74"
+scheduled = off
+
+inv_name = st_wpn_saiga12s_mutanthammer_name
+inv_name_short = st_wpn_saiga12s_mutanthammer_name
+description = st_wpn_saiga12s_mutanthammer_descr
+
+kind = w_shotgun
+inv_weight = 2.81
+cost = 41250
+repair_type = shotgun
+weapon_class = shotgun
+
+
+
+condition_queue_shot_dec = 0.0035
+condition_shot_dec = 0.0035
+
+[wpn_saiga12s_mutanthammer_hud]:wpn_saiga12s_hud
+item_visual = anomaly_weapons\wpn_saiga\wpn_saiga12s_hud.ogf
+
+[wpn_saiga12s_mutanthammer_1p29]:wpn_saiga12s_mutanthammer
+1icon_layer = 1p29
+1icon_layer_x = 71
+1icon_layer_y = -2
+inv_weight = 3.61
+hud = wpn_saiga12s_mutanthammer_1p29_hud
+visual = dynamics\weapons\wpn_saiga\wpn_saiga12s_1p29.ogf
+scope_status = 1
+scope_dynamic_zoom = off
+scope_texture = wpn_crosshair_1p29
+scope_zoom_factor = 15
+
+zoom_rotate_time = 0.3
+
+
+[wpn_saiga12s_mutanthammer_1p29_hud]:wpn_saiga12s_hud
+item_visual = anomaly_weapons\wpn_saiga\wpn_saiga12s_1p29_hud.ogf
+
+[wpn_saiga12s_mutanthammer_kobra]:wpn_saiga12s_mutanthammer
+1icon_layer = kobra
+1icon_layer_x = 81
+1icon_layer_y = 0
+inv_weight = 3.21
+
+hud = wpn_saiga12s_mutanthammer_kobra_hud
+visual = dynamics\weapons\wpn_saiga\wpn_saiga12s_kobra.ogf
+
+
+[wpn_saiga12s_mutanthammer_kobra_hud]:wpn_saiga12s_1p29_hud
+item_visual = anomaly_weapons\wpn_saiga\wpn_saiga12s_kobra_hud.ogf
+
+[wpn_saiga12s_mutanthammer_ps01]:wpn_saiga12s_mutanthammer
+1icon_layer = ps01
+1icon_layer_x = 48
+1icon_layer_y = 0
+
+inv_weight = 3.41
+
+scope_status = 1
+scope_dynamic_zoom = off
+scope_texture = wpn_crosshair_pso1
+scope_zoom_factor = 15
+;------------------------------------------------------------------------------------------------
+SVD Cyclops
+;------------------------------------------------------------------------------------------------
+
+[wpn_svd_cyclops]:wpn_svd
+parent_section = wpn_svd_cyclops
+inv_name = st_wpn_svd_cyclops_name
+inv_name_short = st_wpn_svd_cyclops_name
+description = st_wpn_svd_cyclops_descr
+inv_weight = 3.41
+cost = 50120
+hit_impulse = 45
+hit_power = 1.2, 1.2, 1.2, 1.2
+hit_type = fire_wound
+fire_distance = 1150
+bullet_speed = 835
+rpm = 55
+rpm_empty_click = 200
+
+[wpn_svd_cyclops_hud]:wpn_svd_hud
+item_visual = anomaly_weapons\wpn_svd\wpn_svd_hud.ogf
+
+;------------------------------------------------------------------------------------------------
+[wpn_svd_cyclops_1p29]:wpn_svd_cyclops
+1icon_layer = 1p29
+1icon_layer_x = 58
+1icon_layer_y = 8
+
+inv_weight = 4.21
+
+hud = wpn_svd_cyclops_1p29_hud
+visual = dynamics\weapons\wpn_svd\wpn_svd_1p29.ogf
+
+scope_status = 1
+scope_texture = wpn_crosshair_1p29
+scope_zoom_factor = 15
+
+zoom_rotate_time = 0.3
+
+
+[wpn_svd_cyclops_1p29_hud]:wpn_svd_1p29_hud
+item_visual = anomaly_weapons\wpn_svd\wpn_svd_1p29_hud.ogf
+;------------------------------------------------------------------------------------------------
+[wpn_svd_cyclops_kobra]:wpn_svd_cyclops
+1icon_layer = kobra
+1icon_layer_x = 64
+1icon_layer_y = 10
+
+inv_weight = 3.82
+
+hud = wpn_svd_cyclops_kobra_hud
+visual = dynamics\weapons\wpn_svd\wpn_svd_kobra.ogf
+
+scope_status = 0
+scope_dynamic_zoom = off
+
+[wpn_svd_cyclops_kobra_hud]:wpn_svd_kobra_hud
+item_visual = anomaly_weapons\wpn_svd\wpn_svd_kobra_hud.ogf
+
+;------------------------------------------------------------------------------------------------
+[wpn_svd_cyclops_ps01]:wpn_svd_cyclops
+1icon_layer = ps01
+1icon_layer_x = 33
+1icon_layer_y = 9
+
+inv_weight = 4.01
+
+hud = wpn_svd_cyclops_pso1_hud
+
+scope_status = 1
+scope_dynamic_zoom = on
+scope_texture = wpn_crosshair_pso1
+scope_zoom_factor = 15
+
+
+[wpn_svd_cyclops_pso1_hud]:wpn_svd_hud
diff --git a/mods/[DEV] Brotherhood/gamedata/configs/misc/simulation_objects_props.ltx b/mods/[DEV] Brotherhood/gamedata/configs/misc/simulation_objects_props.ltx
new file mode 100644
index 00000000..115be15e
--- /dev/null
+++ b/mods/[DEV] Brotherhood/gamedata/configs/misc/simulation_objects_props.ltx
@@ -0,0 +1,2677 @@
+;-- NOTE: make sure all smarts here inhirit one of the base sections, they should have all properties
+
+[default]
+base = 0
+territory = 0
+resource = 0
+surge = 0
+lair = 0
+actor = 0
+squad = 0
+
+bandit = 0
+dolg = 0
+ecolog = 0
+freedom = 0
+killer = 0
+army = 0
+monolith = 0
+stalker = 0
+csky = 0
+zombied = 0
+
+greh = 0
+isg = 0
+renegade = 0
+
+greh_npc = 0
+army_npc = 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
+
+army_heli = 0
+monolith_heli = 0
+killer_heli = 0
+stalker_heli = 0
+bandit_heli = 0
+csky_heli = 0
+freedom_heli = 0
+dolg_heli = 0
+ecolog_heli = 0
+renegade_heli = 0
+greh_heli = 0
+isg_heli = 0
+
+
+all = 0
+all_stalker = 0
+all_monster = 0
+
+[default_resource]:default
+resource = 1
+territory = 1
+ecolog = 1
+stalker = 1
+csky = 1
+
+[default_base]:default
+base = 1
+
+[default_lair]:default
+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 = 1
+
+[weak_lair]:default
+lair = 1
+territory = 1
+zoo_monster = 1
+monster = 1
+monster_predatory_day = 1
+monster_predatory_night = 0
+monster_vegetarian = 1
+monster_zombied_day = 0
+monster_zombied_night = 0
+monster_special = 0
+
+[default_territory]:default
+territory = 1
+all = 1
+
+[default_squad]:default
+sim_avail = false
+squad = 1
+all = 1
+
+[actor]:default
+sim_avail = true
+actor = 1
+all = 1
+
+;----------- << MARSH >> ------------
+;unique starting base
+[mar_smart_terrain_base]:default_base
+sim_avail = true
+ecolog = 1
+stalker = 1
+surge = 1
+csky = 2
+
+[mar_smart_terrain_doc]:default_base
+sim_avail = false
+
+[mar_smart_terrain_doc_2]:default_base
+sim_avail = false
+
+;--------- SIMULATION --------
+;NW fishing village, bandits
+[mar_smart_terrain_3_3]:default_base
+sim_avail = true
+surge = 1
+bandit = 1
+renegade = 1
+
+[mar_smart_terrain_3_7]:weak_lair
+sim_avail = true
+stalker = 1
+csky = 1
+ecolog = 1
+
+[mar_smart_terrain_3_10]:weak_lair
+sim_avail = true
+
+;NW village, military
+[mar_smart_terrain_4_5]:weak_lair
+sim_avail = true
+surge = 1
+bandit = 1
+lair = 1
+stalker = 1
+renegade = 1
+
+[mar_smart_terrain_4_7]:weak_lair
+sim_avail = true
+bandit = 1
+stalker = 1
+renegade = 1
+
+;Center, pumping station
+[mar_smart_terrain_5_8]:default_base
+sim_avail = {+pump_station_defense_task_smart_reserved} false, true
+ecolog = 1
+stalker = 1
+bandit = 1
+csky = 1
+killer = 1
+surge = 1
+renegade = 1
+
+;South, fishing village
+[mar_smart_terrain_5_12]:default_base
+sim_avail = {+faction_base_defense_active} false, true
+stalker = 1
+bandit = 1
+renegade = 1
+csky = 1
+surge = 1
+lair = 1
+
+
+[mar_smart_terrain_6_4]:weak_lair
+sim_avail = true
+
+[mar_smart_terrain_6_7]:weak_lair
+sim_avail = true
+
+[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
+lair = 1
+csky = 1
+bandit = 1
+renegade = 1
+monster = 1
+monster_predatory_day = 1
+monster_predatory_night = 1
+monster_vegetarian = 1
+
+[mar_smart_terrain_7_3]:weak_lair
+sim_avail = true
+bandit = 1
+renegade = 1
+stalker = 1
+
+[mar_smart_terrain_7_7]:weak_lair
+sim_avail = true
+
+[mar_smart_terrain_8_4]:weak_lair
+sim_avail = true
+
+[mar_smart_terrain_8_8]:default_resource
+sim_avail = true
+lair = 1
+bandit = 1
+renegade = 1
+ecolog = 1
+stalker = 1
+csky = 1
+freedom = 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
+bandit = 1
+renegade = 1
+stalker = 1
+csky = 1
+
+;NE car repair, military
+[mar_smart_terrain_10_5]:default_base
+sim_avail = true
+surge = 1
+army = 1
+army_heli = 1
+
+[mar_smart_terrain_10_7]:weak_lair
+sim_avail = true
+
+[mar_smart_terrain_10_10]:default_resource
+sim_avail = true
+lair = 1
+ecolog = 1
+stalker = 1
+csky = 1
+
+[mar_smart_terrain_11_3]:default_resource
+sim_avail = true
+lair = 1
+
+;NE village, exit1 to Escape
+[mar_smart_terrain_11_11]:default_base
+sim_avail = true
+surge = 1
+stalker = 1
+bandit = 1
+renegade = 1
+csky = 1
+ecolog = 1
+killer = 1
+freedom = 1
+dolg = 1
+
+;NE village, exit2 to Escape
+[mar_smart_terrain_12_2]:default_resource
+sim_avail = true
+lair = 1
+base = 1
+surge = 1
+stalker = 1
+bandit = 1
+renegade = 1
+csky = 1
+ecolog = 1
+
+;--------- << ESCAPE >> ----------------
+;--------- SIMULATION --------
+;sim smarties
+;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 = 1
+
+;military base
+[esc_smart_terrain_3_16]:default_base
+sim_avail = true
+surge = 1
+army_heli = 1
+army = 1
+
+;car repair
+[esc_smart_terrain_7_11]:default_base
+sim_avail = true
+surge = 1
+bandit = 1
+stalker = 1
+
+;
+[esc_smart_terrain_4_9]:default_lair
+sim_avail = true
+surge = 1
+bandit = 1
+stalker = 1
+
+;cordon-garbage building
+[esc_smart_terrain_5_2]:default_base
+sim_avail = true
+surge = 1
+army_heli = 1
+army = 1
+stalker = 1
+bandit = 1
+
+;farmhouse
+[esc_smart_terrain_5_7]:default_base
+sim_avail = true
+surge = 1
+stalker = 1
+csky = 1
+bandit = 1
+
+;mill
+[esc_smart_terrain_5_9]:weak_lair
+sim_avail = true
+surge = 1
+bandit = 1
+freedom = 1
+killer = 1
+
+;fox house
+[esc_smart_terrain_6_6]:default_lair
+sim_avail = true
+surge = 1
+bandit = 1
+stalker = 1
+
+[esc_smart_terrain_1_11]:default_resource
+sim_avail = true
+stalker = 1
+csky = 1
+ecolog = 1
+
+[esc_smart_terrain_2_14]:weak_lair
+sim_avail = true
+
+[esc_smart_terrain_3_7]:weak_lair
+sim_avail = true
+csky = 1
+stalker = 1
+
+[esc_smart_terrain_4_11]:weak_lair
+sim_avail = true
+stalker = 1
+monster = 1
+monster_vegetarian = 1
+
+[esc_smart_terrain_4_13]:weak_lair
+sim_avail = true
+
+[esc_smart_terrain_5_12]:weak_lair
+sim_avail = true
+stalker = 1
+
+
+[esc_smart_terrain_5_4]:weak_lair
+sim_avail = true
+
+[esc_smart_terrain_5_6]:weak_lair
+sim_avail = true
+
+;ruined rail bridge
+[esc_smart_terrain_6_8]:default_base
+sim_avail = true
+surge = 1
+all = 0
+army = 1
+bandit = 1
+
+[esc_smart_terrain_8_10]:default_lair
+sim_avail = true
+
+[esc_smart_terrain_8_9]:weak_lair
+sim_avail = true
+stalker = 1
+
+[esc_smart_terrain_9_7]:default_lair
+sim_avail = true
+
+[esc_smart_terrain_9_10]:weak_lair
+sim_avail = true
+
+
+;----------- << GARBAGE >> ------------
+;--------- SIMULATION --------
+;sim smarties
+
+;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
+bandit = 1
+dolg = 1
+stalker = 1
+
+;camp near tunnel
+[gar_smart_terrain_2_4]:weak_lair
+sim_avail = true
+surge = 1
+bandit = 1
+
+;hangar
+[gar_smart_terrain_3_5]:default_base
+sim_avail = true
+surge = 1
+stalker = 1
+dolg = 1
+csky = 1
+
+[gar_smart_terrain_3_7]:default_resource
+sim_avail = true
+stalker = 1
+ecolog = 1
+
+[gar_smart_terrain_4_2]:default_lair
+sim_avail = true
+stalker = 1
+
+[gar_smart_terrain_4_5]:weak_lair
+sim_avail = true
+bandit = 1
+
+;outpost to Bar
+[gar_smart_terrain_5_2]:default_base
+sim_avail = true
+surge = 2
+stalker = 1
+dolg = 2
+freedom = 1
+csky = 1
+killer = 2
+bandit = 2
+;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 = 1
+bandit = 1
+ecolog = 1
+
+[gar_smart_terrain_5_8]:weak_lair ;created by tronex, test
+sim_avail = true
+stalker = 1
+bandit = 1
+
+[gar_smart_terrain_6_1]:weak_lair
+sim_avail = true
+
+;ruined building
+[gar_smart_terrain_6_3]:default_base
+sim_avail = true
+surge = 1
+stalker = 1
+csky = 1
+
+[gar_smart_terrain_6_6]:default_lair
+sim_avail = true
+
+[gar_smart_terrain_6_7]:default_lair
+sim_avail = true
+stalker = 1
+resource = 1
+
+[gar_smart_terrain_7_4]:default_lair
+sim_avail = true
+;stalker = 1
+
+[gar_smart_terrain_8_3]:weak_lair ;created by tronex, test
+sim_avail = true
+bandit = 1
+dolg = 1
+
+[gar_smart_terrain_8_5]:default_lair
+sim_avail = true
+
+;----------- << DARKSCAPE >> ------------
+;--------- SIMULATION --------
+;sim smarties
+;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
+renegade = 1
+dolg = 1
+killer = 1
+
+;camp under rocks
+[ds2_lager_st]:default_base
+sim_avail = true
+surge = 1
+bandit = 1
+renegade = 1
+freedom = 1
+stalker = 1
+killer = 1
+dolg = 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 = 1
+
+
+[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
+
+[ds_ptr]:weak_lair
+sim_avail = true
+surge = 1
+bandit = 1
+renegade = 1
+killer = 2
+stalker = 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
+
+
+;--------- SIMULATION --------
+;sim smarties
+;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 = 1
+stalker = 1
+csky = 1
+freedom = 1
+
+;bigger base, courtyard
+[agr_smart_terrain_1_6]:default_base
+sim_avail = true
+surge = 1
+army = 1
+lair = 1
+
+;bigger base, gate
+[agr_smart_terrain_1_6_near_1]:default_base
+sim_avail = true
+surge = 1
+army = 1
+
+;bigger base, inside building
+[agr_smart_terrain_1_6_near_2]:default_base
+sim_avail = 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 = 2
+csky = 1
+ecolog = 1
+
+;smaller base, courtyard
+[agr_smart_terrain_4_4_near_1]:default_base
+sim_avail = true
+surge = 1
+stalker = 1
+csky = 1
+ecolog = 1
+bandit = 1
+freedom = 1
+
+;smaller base, hole in the fence
+[agr_smart_terrain_4_4_near_2]:default_base
+sim_avail = true
+surge = 1
+stalker = 1
+csky = 1
+ecolog = 1
+
+;smaller base, gate
+[agr_smart_terrain_4_4_near_3]:default_base
+sim_avail = true
+surge = 1
+stalker = 1
+csky = 1
+ecolog = 1
+bandit = 1
+freedom = 1
+
+[agr_smart_terrain_4_6]:default_lair
+sim_avail = true
+army = 1
+
+[agr_smart_terrain_5_2]:default_lair
+sim_avail = true
+dolg = 1
+stalker = 1
+
+;camp near tunnel
+[agr_smart_terrain_5_3]:default_lair
+sim_avail = true
+
+[agr_smart_terrain_5_4]:default_lair ;Created by Tronex, test
+sim_avail = true
+
+[agr_smart_terrain_5_7]:default_lair
+sim_avail = true
+csky = 1
+dolg = 1
+stalker = 1
+
+;tunnel
+[agr_smart_terrain_6_4]:default_base
+sim_avail = true
+surge = 1
+stalker = 1
+ecolog = 1
+csky = 1
+zombied = 1
+
+[agr_smart_terrain_6_6]:weak_lair ;Created by Tronex, test
+sim_avail = true
+
+; camp at level changer to garbage
+; TODO disable/replace bugged jobs
+[agr_smart_terrain_7_4]:default_lair
+sim_avail = false
+stalker = 1
+army = 1
+bandit = 1
+
+[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_territory
+sim_avail = {+agr_u_bandits_dead} true, false
+lair = 1
+stalker = 1
+;army = 1
+bandit = 1
+
+[agr_u_bloodsucker]:default_lair
+sim_avail = {+agru_add_reward} true, false
+
+[agr_u_bloodsucker_2]:default_lair
+sim_avail = {+agru_add_reward_1} true, false
+territory = 1
+stalker = 1
+;army = 1
+
+[agr_u_monsters]:default_lair
+sim_avail = {+agru_controller_death} true, false
+
+[agr_u_soldiers]:default_territory
+sim_avail = {+agr_u_soldiers_dead +agru_end_poltergeist_squad_dead} true, false
+
+
+;----------- << DARK VALLEY >> ------------
+;--------- SIMULATION --------
+;sim smarties
+;smaller base, x18 entrance building
+[val_smart_terrain_1_2]:default_base
+sim_avail = true
+surge = 1
+army = 1
+army_heli = 1
+
+; camp on hills between farm and central lake
+[val_smart_terrain_3_0]:default_lair
+sim_avail = true
+bandit = 1
+
+;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 = 1
+
+;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]:default_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]:default_lair
+sim_avail = true
+
+;bigger base, SOC bandits, CS freedom, inside outer building
+[val_smart_terrain_7_3]:default_base
+sim_avail = true
+surge = 1
+bandit = 2
+
+;bigger base, SOC bandits, CS freedom, inside central building
+[val_smart_terrain_7_4]:default_base
+sim_avail = true
+surge = 1
+bandit = 1
+lair = 1
+
+;bigger base, SOC bandits, CS freedom, courtyard
+[val_smart_terrain_7_5]:default_base
+sim_avail = true
+surge = 1
+bandit = 1
+
+;north island in lake
+[val_smart_terrain_7_8]:default_territory
+sim_avail = true
+
+;camp near level changer to darkscape
+[val_smart_terrain_7_11]:weak_lair
+sim_avail = true
+bandit = 1
+
+[val_smart_terrain_8_6]:default_territory
+sim_avail = true
+bandit = 1
+stalker = 1
+killer = 1
+dolg = 1
+freedom = 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
+
+[val_smart_terrain_8_7]:weak_lair
+sim_avail = true
+
+;south island in lake
+[val_smart_terrain_8_9]:default_lair
+sim_avail = true
+
+[val_smart_terrain_9_10]:default_lair
+sim_avail = true
+resource = 1
+stalker = 1
+csky = 1
+
+[val_smart_terrain_9_2]:default_lair
+sim_avail = {+faction_base_defense_active} false, true
+
+[val_smart_terrain_9_4]:default_territory
+sim_avail = true
+surge = 1
+bandit = 1
+stalker = 1
+killer = 1
+dolg = 1
+freedom = 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
+
+;camp near x-18 building
+[val_smart_terrain_9_6]:default_territory
+sim_avail = true
+surge = 1
+bandit = 1
+stalker = 1
+killer = 1
+dolg = 1
+freedom = 1
+
+;--------- LAB X-18 SMART TERRAINS --------
+[dar_angar]:default_lair
+sim_avail = {+dar_military_scout_squad_killed} true, false
+army = 1
+ecolog = 1
+stalker = 1
+territory = 1
+
+[dar_control_poltergeist]:default_lair
+sim_avail = {+dar_military_scout_squad_killed} true, false
+
+[dar_military_scout]:default_territory
+sim_avail = false
+
+[dar_poltergeist_ring]:default_lair
+sim_avail = false
+
+[dar_poltergeist_tele]:default_lair
+sim_avail = false
+
+[dar_poltergeist_tele_round]:default_lair
+sim_avail = false
+
+[dar_smart_snork]:default_lair
+sim_avail = {+dar_military_scout_squad_killed} true, false
+;army = 1
+ecolog = 1
+stalker = 1
+territory = 1
+
+
+;----------- << BAR >> ------------
+;--------- SIMULATION --------
+;sim smarties
+[bar_zastava_dogs_lair]:default_lair
+sim_avail = {+faction_base_defense_active} false, true
+territory = 0
+dolg = 1
+stalker = 1
+
+[bar_zastava_dogs_lair_2]:default_lair
+sim_avail = {+faction_base_defense_active} false, true
+territory = 0
+dolg = 1
+stalker = 1
+
+[bar_dolg_bunker]:default_base
+sim_avail = true
+surge = 1
+dolg = 1
+
+[bar_dolg_general]:default_base
+sim_avail = true
+surge = 1
+dolg = 1
+
+[bar_visitors]:default_base
+sim_avail = true
+surge = 1
+stalker = 1
+csky = 1
+ecolog = 1
+dolg = 1
+
+;unique smarties, sim after guards die
+[bar_zastava]:default_base
+sim_avail = {!squad_exist(bar_duty_security_squad_leader_squad)} true, false
+surge = 1
+dolg = 1
+lair = 1
+
+[bar_zastava_2]:default_base
+sim_avail = {!squad_exist(bar_zastava_2_commander_squad)} true, false
+surge = 1
+dolg = 1
+lair = 1
+
+;----------- << ROSTOK (WILD TERRITORY) >> ------------
+;--------- SIMULATION --------
+;sim smarties
+[ros_smart_killers1]:default_base
+sim_avail = true
+surge = 1
+killer = 2
+stalker = 1
+bandit = 1
+dolg = 2
+
+[ros_smart_monster4]:default_lair
+sim_avail = true
+territory = 0
+resource = 1
+ecolog = 1
+stalker = 1
+
+[ros_smart_monster5]:default_lair
+sim_avail = true
+territory = 0
+stalker = 1
+dolg = 1
+resource = 1
+ecolog = 1
+
+[ros_smart_monster7]:weak_lair ;edited so rare monsters don't come here
+sim_avail = true
+territory = 1
+resource = 1
+ecolog = 1
+stalker = 1
+
+[ros_smart_poltergeist2]:default_lair
+sim_avail = true
+territory = 0
+
+[ros_smart_snork1]:default_lair
+sim_avail = true
+territory = 0
+dolg = 1
+stalker = 1
+
+[ros_smart_stalker_killers1]:default_base
+sim_avail = true
+surge = 1
+killer = 1
+
+[ros_smart_stalker1]:default_base
+sim_avail = true
+stalker = 1
+ecolog = 1
+csky = 1
+dolg = 1
+
+;----------- << YANTAR >> ------------
+;--------- SIMULATION --------
+;sim smarties
+[yan_smart_terrain_1_6]:default_lair
+sim_avail = true
+resource = 1
+ecolog = 1
+stalker = 1
+freedom = 1
+zombied = 1
+
+;x-16 entrance yard, building
+[yan_smart_terrain_2_4]:default_lair
+sim_avail = true
+territory = 1
+surge = 1
+
+;x-16 entrance yard, gate
+[yan_smart_terrain_2_5]:default_lair
+sim_avail = true
+territory = 1
+surge = 1
+resource = 1
+ecolog = 1
+stalker = 1
+freedom = 1
+
+;x-16 entrance yard
+[yan_smart_terrain_3_4]:default_lair
+sim_avail = true
+territory = 1
+surge = 1
+
+;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_lair
+sim_avail = true
+ecolog = 1
+stalker = 1
+csky = 1
+freedom = 1
+resource = 1
+
+[yan_smart_terrain_4_4]:default_lair
+sim_avail = {+faction_base_defense_active} false, true
+territory = 0
+zombied = 1
+
+[yan_smart_terrain_4_5]:default_lair
+sim_avail = true
+
+[yan_smart_terrain_5_3]:default_lair
+sim_avail = true
+territory = 1
+resource = 1
+ecolog = 1
+stalker = 1
+csky = 1
+
+;camp near small tunnel
+[yan_smart_terrain_5_5]:default_base
+sim_avail = {+faction_base_defense_active} false, true
+surge = 1
+stalker = 1
+ecolog = 1
+csky = 1
+zombied = 1
+
+[yan_smart_terrain_6_2]:default_lair
+sim_avail = {+faction_base_defense_active} false, true
+territory = 0
+zombied = 1
+csky = 1
+
+;scientist base
+[yan_smart_terrain_6_4]:default_base
+sim_avail = true
+surge = 1
+stalker = 1
+ecolog = 1
+csky = 1
+zombied = 1
+
+[yan_smart_terrain_zombi_spawn]:default_lair
+sim_avail = true
+territory = 1
+zombied = 1
+
+[yan_smart_terrain_snork_u]:default_lair
+sim_avail = {+yantar_tunnel_finish} true, false
+
+
+;----------- << LAB X-16 SMARTIES >> ------------
+[x162_st_burer]:default_lair
+sim_avail = {+yan_kill_brain_done} true, false
+monolith = 1
+ecolog = 1
+stalker = 1
+army = 1
+territory = 1
+
+[x162_st_gigant]:default_lair
+sim_avail = {+yan_kill_brain_done} true, false
+monolith = 1
+ecolog = 1
+stalker = 1
+army = 1
+territory = 1
+
+[x162_st_snork]:default_lair
+sim_avail = {+yan_kill_brain_done} true, false
+
+[x162_st_poltergeist]:default_lair
+sim_avail = {+yan_kill_brain_done} true, false
+
+
+;----------- << ARMY WAREHOUSES >> ------------
+;--------- SIMULATION --------
+[mil_smart_terrain_2_1]:default_lair
+sim_avail = true
+
+;SOC bloodsuckers village, Freedom camp
+[mil_smart_terrain_2_10]:default_base
+sim_avail = true
+surge = 1
+freedom = 5
+dolg = 5
+monolith = 1
+bandit = 1
+
+;SOC merc outpost to Dead City
+[mil_smart_terrain_2_2]:default_base
+sim_avail = true
+killer = 5
+stalker = 1
+bandit = 1
+csky = 1
+freedom = 1
+dolg = 1
+monolith = 0
+
+;SOC empty farmhouse north
+[mil_smart_terrain_2_4]:default_base
+sim_avail = true
+surge = 1
+stalker = 1
+ecolog = 1
+csky = 1
+freedom = 1
+dolg = 2
+killer = 2
+bandit = 1
+renegade = 1
+
+[mil_smart_terrain_2_6]:default_lair
+sim_avail = true
+monolith = 1
+
+;SOC Freedom outpost to Radar, barrier
+[mil_smart_terrain_3_8]:default_base
+sim_avail = true
+freedom = 5
+dolg = 1
+monolith = 2
+
+;SOC bloodsuckers village
+[mil_smart_terrain_4_2]:default_lair
+sim_avail = true
+surge = 1
+
+;SOC bloodsuckers village, water tower
+[mil_smart_terrain_4_3]:default_lair
+sim_avail = true
+surge = 1
+freedom = 2
+stalker = 1
+resource = 1
+
+[mil_smart_terrain_4_5]:default_base
+sim_avail = true
+surge = 1
+stalker = 1
+freedom = 5
+dolg = 2
+bandit = 1
+monolith = 1
+
+[mil_smart_terrain_4_7]:default_lair
+sim_avail = {+faction_base_defense_active} false, true
+territory = 1
+
+;SOC Freedom outpost to Radar, wagon
+[mil_smart_terrain_4_8]:default_base
+sim_avail = true
+surge = 1
+stalker = 1
+freedom = 5
+dolg = 2
+bandit = 1
+monolith = 1
+
+;SOC Freedom base, near kitchen
+[mil_smart_terrain_7_10]:default_base
+sim_avail = true
+surge = 1
+;stalker = 1
+freedom = 5
+dolg = 0
+;bandit = 1
+monolith = 0
+
+;SOC Freedom base, near sleep barracks
+[mil_smart_terrain_7_12]:default_base
+sim_avail = true
+surge = 1
+;stalker = 1
+freedom = 5
+dolg = 0
+;bandit = 1
+monolith = 0
+
+;SOC Duty farm
+[mil_smart_terrain_7_4]:default_base
+sim_avail = true
+surge = 1
+stalker = 1
+freedom = 1
+dolg = 5
+bandit = 1
+monolith = 0
+
+;SOC Freedom base, main
+[mil_smart_terrain_7_7]:default_base
+sim_avail = true
+surge = 1
+;stalker = 1
+;csky = 1
+freedom = 5
+dolg = 0
+;bandit = 1
+monolith = 0
+;lair = 1
+
+;SOC Freedom base, entrance
+[mil_smart_terrain_7_8]:default_base
+sim_avail = true
+surge = 1
+;stalker = 1
+;ecolog = 1
+;csky = 1
+freedom = 5
+dolg = 0
+;bandit = 1
+monolith = 0
+
+[mil_smart_terrain_8_3]:weak_lair
+sim_avail = true
+freedom = 1
+monolith = 0
+
+;----------- << RED FOREST >> ------------
+;--------- SIMULATION --------
+;Limansk enterance
+[red_bridge_bandit_smart_skirmish]:default_base ;mlr
+sim_avail = true
+;all = 1
+
+;Stancia1 exit camp
+[red_smart_terrain_3_1]:default_base
+sim_avail = true
+
+;underground mine
+[red_smart_terrain_3_2]:default_resource
+sim_avail = true
+;lair = 1
+surge = 1
+greh = 1
+
+
+[red_smart_terrain_3_3]:default_lair
+sim_avail = true
+
+;Camp near Forester's house - at red forest gate
+[red_smart_terrain_4_2]:default_base
+sim_avail = true
+surge = 1
+all = 1
+army_heli = 1
+
+[red_smart_terrain_4_3]:default_lair
+sim_avail = true
+
+[red_smart_terrain_4_5]:default_lair
+sim_avail = true
+resource = 2
+
+[red_smart_terrain_5_5]:default_lair
+sim_avail = true
+
+[red_smart_terrain_5_6]:default_lair
+sim_avail = true
+
+;deeper forest - anomaly field with weird rocks
+[red_smart_terrain_6_3]:default_lair
+sim_avail = true
+resource = 2
+stalker = 1
+ecolog = 2
+
+[red_smart_terrain_6_6]:default_lair
+sim_avail = true
+
+;bridge - forest side
+[red_smart_terrain_bridge]:default_base
+sim_avail = true
+surge = 1
+all = 1
+
+;deeper forest - near T72 tank
+[red_smart_terrain_monsters]:default_lair
+sim_avail = true
+resource = 2
+
+;tunnel to deeper forest - little mine
+[red_smart_terrain_monsters_2]:default_lair
+sim_avail = true
+
+[red_smart_terrain_monsters_3]:default_lair
+sim_avail = true
+
+;----------- << LIMANSK >> ------------
+;--------- SIMULATION --------
+;tunnel near Limansk-Red Forest lc
+[lim_smart_terrain_1]:weak_lair ;trx edited
+sim_avail = true
+surge = 1
+stalker = 1
+csky = 1
+killer = 1
+bandit = 1
+
+[lim_smart_terrain_10]:default_base
+sim_avail = true
+surge = 1
+stalker = 1
+csky = 1
+ecolog = 1
+monolith = 1
+killer = 1
+monolith_heli = 1
+
+[lim_smart_terrain_3]:default_base
+sim_avail = true
+surge = 1
+stalker = 1
+csky = 1
+ecolog = 1
+killer = 1
+
+[lim_smart_terrain_4]:default_base
+sim_avail = true
+resource = 1
+surge = 1
+stalker = 1
+csky = 1
+ecolog = 1
+monolith = 1
+killer = 1
+bandit = 1
+
+[lim_smart_terrain_5]:default_base
+sim_avail = true
+surge = 1
+stalker = 1
+csky = 1
+ecolog = 1
+monolith = 1
+killer = 1
+
+
+[lim_smart_terrain_6]:default_base
+sim_avail = true
+surge = 1
+stalker = 1
+csky = 1
+monolith = 1
+monolith_heli = 1
+
+[lim_smart_terrain_7]:default_lair
+sim_avail = true
+
+[lim_smart_terrain_8]:default_lair
+sim_avail = true
+
+;construction site
+[lim_smart_terrain_9]:default_base
+sim_avail = true
+surge = 1
+stalker = 1
+csky = 1
+monolith = 1
+killer = 0
+monolith_heli = 1
+
+;----------- << HOSPITAL >> ------------
+;--------- SIMULATION --------
+[katacomb_smart_terrain]:default_base
+sim_avail = true
+surge = 1
+monolith = 1
+monolith_heli = 1
+
+
+;----------- << DEAD CITY >> ------------
+;--------- SIMULATION --------
+[cit_bandits]:default_lair
+sim_avail = true
+surge = 1
+;bandit = 1
+;army = 1
+;killer = 1
+;monolith = 1
+
+[cit_bandits_2]:default_lair
+sim_avail = true
+
+[cit_kanaliz1]:default_lair
+sim_avail = true
+
+[cit_kanaliz2]:default_lair
+sim_avail = true
+
+[cit_killers]:default_base
+sim_avail = true
+surge = 1
+killer = 5
+
+[cit_killers_2]:default_lair
+sim_avail = true
+killer = 1
+
+
+[cit_killers_vs_bandits]:default_base
+sim_avail = true
+lair = 1
+surge = 1
+bandit = 1
+army = 1
+killer = 2
+;monolith = 1
+zombied = 1
+
+; bugged npc jobs/nothing in here, use only for mutants
+[zombie_smart_ds_mlr_1]:default_lair
+sim_avail = true
+
+; bugged npc jobs, use only for mutants
+[zombie_smart_ds_mlr_2]:default_lair
+sim_avail = true
+
+;----------- << RADAR >> ------------
+;--------- SIMULATION --------
+[rad2_loner_0000]:default_base
+sim_avail = true
+monolith = 1
+
+[rad2_loner_0001]:default_base
+sim_avail = true
+surge = 1
+monolith = 1
+
+[rad2_loner_0002]:default_base
+sim_avail = true
+monolith = 1
+
+[rad2_prip_teleport]:default_base
+sim_avail = true
+surge = 1
+stalker = 1
+csky = 0
+ecolog = 0
+monolith = 1
+killer = 0
+
+;bugged jobs, do not use
+[rad2_rad_prip_road]:default
+sim_avail = false
+
+[rad_after_valley]:default_lair
+sim_avail = true
+territory = 1
+zombied = 1
+[rad_antenna_camper]:default_base
+sim_avail = true
+surge = 1
+
+[rad_antenna_monolith]:default_base
+sim_avail = true
+surge = 1
+monolith = 1
+monolith_heli = 1
+
+[rad_antenna_patrol]:default_base
+sim_avail = true
+surge = 1
+monolith = 1
+
+[rad_bloodsucker]:default_lair
+sim_avail = true
+monolith = 0
+zombied = 1
+
+[rad_entrance]:weak_lair ;trx edited
+sim_avail = true
+surge = 1
+zombied = 1
+
+[rad_pseudodogs]: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
+
+[rad_snork1]:default_lair
+sim_avail = true
+monolith = 0
+zombied = 1
+
+[rad_snork2]:default_lair
+sim_avail = true
+monolith = 0
+zombied = 1
+
+[rad_valley]:default_lair
+sim_avail = true
+surge = 1
+monolith = 0
+zombied = 1
+
+[rad_valley_dogs]:default_base
+sim_avail = true
+zombied = 1
+monolith = 1
+
+[rad_zombied1]:default_lair
+sim_avail = true
+monolith = 0
+zombied = 1
+
+[rad_zombied2]:default_lair
+sim_avail = true
+surge = 1
+monolith = 0
+zombied = 1
+
+; too close to level changer
+[rad_freedom_vs_duty]:default
+sim_avail = false
+
+;bugged jobs, do not use
+[rad_rusty_forest_center]:default
+sim_avail = false
+
+;----------- << BUNKER-LAB X-19 SMARTIES >> ------------
+[bun_krovosos_nest]:default_lair
+sim_avail = true
+territory = 1
+
+[bun2_st_bloodsucker]:default_lair
+sim_avail = {+bar_deactivate_radar_done} true, false
+monolith = 1
+ecolog = 1
+stalker = 1
+;army = 1
+territory = 1
+
+[bun2_tushkano_lair]:default_lair
+sim_avail = {+bar_deactivate_radar_done} true, false
+monolith = 1
+ecolog = 1
+stalker = 1
+;army = 1
+territory = 1
+
+
+;----------- << PRIPYAT >> ------------
+;--------- SIMULATION --------
+[pri_depot]:default_base
+sim_avail = true
+surge = 1
+monolith = 1
+monolith_heli = 1
+
+;palace of culture, near pri_monolith, unsure if used of unported mlr stuff
+;there's a special job for a special npc but dunno if it's ever used
+; just in case, do not use until tested properly
+[mlr_terrain]:default
+sim_avail = false
+
+[pri_monolith]:default_base
+sim_avail = true
+surge = 1
+
+[pri_smart_bloodsucker_lair1]:default_lair
+sim_avail = true
+territory = 1
+surge = 1
+
+[pri_smart_controler_lair1]:default_lair
+sim_avail = true
+surge = 1
+
+[pri_smart_controler_lair2]:default_lair
+sim_avail = true
+territory = 0
+
+[pri_smart_giant_lair1]:default_lair
+sim_avail = true
+surge = 1
+
+[pri_smart_monolith_stalker2]:default_lair
+sim_avail = true
+
+[pri_smart_monolith_stalker3]:default_lair
+sim_avail = true
+
+[pri_smart_monolith_stalker4]:default_lair
+sim_avail = true
+
+[pri_smart_monolith_stalker6]:default_base
+sim_avail = true
+monolith = 1
+monolith_heli = 1
+
+[pri_smart_monster_lair1]:default_lair
+sim_avail = true
+territory = 0
+
+[pri_smart_neutral_stalker1]:default_base
+sim_avail = true
+stalker = 1
+dolg = 1
+freedom = 1
+ecolog = 1
+csky = 1
+
+[pri_smart_pseudodog_lair1]:default_lair
+sim_avail = true
+territory = 0
+
+[pri_smart_snork_lair1]:default_lair
+sim_avail = true
+surge = 1
+
+[pri_smart_snork_lair2]:default_lair
+sim_avail = true
+territory = 0
+
+[pri_smart_tushkano_lair1]:default_lair
+sim_avail = true
+surge = 1
+
+; do not use, TODO some jobs to fix
+[hotel_poless_smart_alife]:default_lair
+sim_avail = false
+
+; do not use, snipers in inacessible buldings/roofs
+; maybe useful for tasks or static squad but not for general use
+; TODO also a couple of jobs to disable just in case (sitting on ground)
+[monolith_snipers_smart_1_mlr]:default_lair
+sim_avail = false
+
+
+;----------- << STANCIA_1 >> ------------
+;--------- SIMULATION --------
+[aes_smart_terrain_monolit_blockpost]:default_base
+sim_avail = true
+monolith = 1
+monolith_heli = 1
+
+[aes_smart_terrain_monolit_blockpost2]:default_lair
+sim_avail = true
+
+[aes_smart_terrain_monolit_blockpost4]:default_base
+sim_avail = true
+surge = 1
+monolith = 1
+monolith_heli = 1
+
+[aes_smart_terrain_monsters1]:default_lair
+sim_avail = true
+territory = 0
+
+[aes_smart_terrain_monsters2]:default_lair
+sim_avail = true
+territory = 0
+
+[aes_smart_terrain_monsters3]:default_lair
+sim_avail = true
+
+[aes_smart_terrain_monsters4]:default_lair
+sim_avail = true
+
+[aes_smart_terran_soldier]:default_base
+sim_avail = true
+army = 1
+army_heli = 1
+
+
+[aes_smart_terran_soldier2]:default_lair
+sim_avail = true
+all = 0
+army = 1
+
+;----------- << SARCOFAG >> ------------
+
+[sar_monolith_general]:default_territory
+sim_avail = {+sar_secret_door_find} true, false
+monolith = 1
+stalker = 1
+;army = 1
+ecolog = 1
+lair = 1
+
+[sar_monolith_sklad]:default_territory
+sim_avail = {+sar_secret_door_find} true, false
+lair = 1
+
+[sar_monolith_poltergeists]:default_lair
+sim_avail = {+sar_secret_door_find} true, false
+
+[sar_monolith_bloodsuckers]:default_lair
+sim_avail = {+sar_secret_door_find} true, false
+monolith = 1
+stalker = 1
+;army = 1
+ecolog = 1
+territory = 1
+
+;----------- << MONOLITH CONTROL >> ------------
+[sar_monolith_guard]:default_territory
+sim_avail = {+sar_monolith_generator_find} true, false
+monolith = 1
+stalker = 1
+;army = 1
+ecolog = 1
+lair = 1
+
+[sar_monolith_zombies]:default_lair
+sim_avail = {+sar_monolith_generator_find} true, false
+monolith = 1
+stalker = 1
+;army = 1
+ecolog = 1
+territory = 1
+
+;----------- << STANCIA_2 >> ------------
+;--------- SIMULATION --------
+[aes2_monolith_camp1]:default_base
+sim_avail = true
+monolith = 1
+monolith_heli = 1
+
+[aes2_monolith_camp2]:default_base
+sim_avail = true
+monolith = 1
+monolith_heli = 1
+
+[aes2_monolith_camp3]:default_base
+sim_avail = true
+monolith = 1
+monolith_heli = 1
+
+[aes2_monolith_camp4]:default_base
+sim_avail = true
+monolith = 1
+monolith_heli = 1
+
+[aes2_monolith_snipers_1]:default_lair
+sim_avail = true
+
+[aes2_monolith_snipers_2]:default_lair
+sim_avail = true
+
+[aes2_monolith_snipers_3]:default_lair
+sim_avail = true
+
+[aes2_monsters1]:default_lair
+sim_avail = true
+
+[aes2_monsters2]:default_lair
+sim_avail = true
+
+
+;----------- << GENERATORS >> ------------
+;--------- SIMULATION --------
+[gen_smart_terrain_lab_entrance]:default_base
+sim_avail = true
+surge = 1
+monolith = 1
+monolith_heli = 1
+
+[gen_smart_terrain_cemetery]:default_lair
+sim_avail = true
+
+[gen_smart_terrain_forest]:default_lair
+sim_avail = true
+
+[gen_smart_terrain_junk]:default_lair
+sim_avail = true
+
+[gen_smart_terrain_lab_entrance_2]:default_lair
+sim_avail = true
+
+[gen_smart_terrain_military]:default_lair
+sim_avail = true
+
+[gen_smart_terrain_urod]:default_lair
+sim_avail = true
+
+;----------- << WARLAB >> ------------
+[warlab_common_consciousness_smart_terrain]:default_base
+sim_avail = false
+
+
+;--------------------------------------------------------------------------------
+;----------- << Zaton >> ------------
+
+;base
+[zat_stalker_base_smart]:default_base
+sim_avail = true
+surge = 1
+stalker = 1
+csky = 1
+dolg = 1
+monolith = 0
+bandit = 0
+renegade = 0
+
+;no sim
+[zat_medic_home_smart]:default_territory
+sim_avail = false
+
+[zat_b7_stalker_raider]:default_territory
+sim_avail = false
+
+;technical, but with sim available, surge too
+[zat_b33]:default_lair
+sim_avail = false
+
+[zat_a23_smart_terrain]:default_territory
+sim_avail = false
+
+;surge
+[zat_b7]:default_territory
+sim_avail = true
+surge = 1
+
+[zat_b40_smart_terrain]:default_base
+sim_avail = true
+surge = 1
+killer = 1
+
+[zat_b28]:default_lair
+sim_avail = false
+surge = 1
+
+;!!!
+[zat_b42_smart_terrain]:default_territory
+sim_avail = true
+surge = 1
+territory = 1
+
+[zat_b18]:default
+sim_avail = false
+surge = 1
+
+[zat_b101]:default_resource
+sim_avail = true
+surge = 1
+territory = 1
+
+[zat_b38u]:default_territory
+sim_avail = false
+
+[zat_b38]:default_territory
+sim_avail = true
+surge = 1
+
+;regular smarts
+[zat_b5_smart_terrain]:default_territory
+sim_avail = true
+surge = 1
+
+[zat_b106_smart_terrain]:default_lair
+sim_avail = true
+
+[zat_b52]:default_territory
+sim_avail = true
+territory = 1
+
+[zat_b103_merc_smart]:default_territory
+sim_avail = true
+surge = 1
+
+[zat_b104_zombied]:default_lair
+sim_avail = true
+
+[zat_b14_smart_terrain]:default_resource
+sim_avail = true
+
+[zat_b20_smart_terrain]:default_resource
+sim_avail = true
+territory = 1
+
+[zat_b53]:default_resource
+sim_avail = true
+territory = 1
+
+[zat_b12]:default_lair
+sim_avail = true
+
+[zat_b54]:default_resource
+sim_avail = true
+territory = 1
+
+[zat_b55]:default_resource
+sim_avail = true
+territory = 1
+
+[zat_b100]:default_resource
+sim_avail = true
+surge = 1
+
+[zat_b39]:default_resource
+sim_avail = true
+territory = 1
+lair = 1
+
+
+[zat_b56]:default_resource
+sim_avail = true
+
+[zat_a1]:default_territory
+sim_avail = true
+territory = 1
+
+;--------- SIMULATION --------
+
+[zat_sim_1]:default_lair
+sim_avail = true
+territory = 1
+
+[zat_sim_2]:default_territory
+sim_avail = true
+territory = 1
+
+[zat_sim_3]:default_lair
+sim_avail = true
+territory = 1
+
+[zat_sim_4]:default_lair
+sim_avail = true
+territory = 1
+
+[zat_sim_5]:default_lair
+sim_avail = true
+territory = 1
+
+[zat_sim_6]:default_territory
+sim_avail = true
+territory = 1
+
+[zat_sim_7]:default_lair
+sim_avail = true
+territory = 1
+
+[zat_sim_8]:default_lair
+sim_avail = true
+territory = 1
+
+[zat_sim_9]:default_lair
+sim_avail = true
+territory = 1
+
+[zat_sim_10]:default_lair
+sim_avail = true
+territory = 1
+
+[zat_sim_11]:default_territory
+sim_avail = true
+territory = 1
+
+[zat_sim_12]:default_territory
+sim_avail = true
+territory = 1
+
+[zat_sim_13]:default_territory
+sim_avail = true
+territory = 1
+
+[zat_sim_14]:default_lair
+sim_avail = true
+territory = 1
+
+[zat_sim_15]:default_lair
+sim_avail = true
+territory = 1
+
+[zat_sim_16]:default_lair
+sim_avail = true
+territory = 1
+
+[zat_sim_17]:default_lair
+sim_avail = true
+territory = 1
+
+[zat_sim_18]:default_lair
+sim_avail = true
+territory = 1
+
+[zat_sim_19]:default_territory
+sim_avail = true
+territory = 1
+
+[zat_sim_20]:default_lair
+sim_avail = true
+territory = 1
+
+[zat_sim_21]:default_lair
+sim_avail = true
+territory = 1
+
+[zat_sim_22]:default_lair
+sim_avail = true
+territory = 1
+
+[zat_sim_23]:default_lair
+sim_avail = true
+territory = 1
+
+[zat_sim_24]:default_lair
+sim_avail = true
+territory = 1
+
+[zat_sim_25]:default_lair
+sim_avail = true
+territory = 1
+
+[zat_sim_26]:default_lair
+sim_avail = true
+territory = 1
+
+[zat_sim_27]:default_territory
+sim_avail = true
+territory = 1
+
+[zat_sim_28]:default_territory
+sim_avail = true
+
+[zat_sim_29]:default_territory
+sim_avail = true
+
+[zat_sim_30]:default_territory
+sim_avail = true
+
+;--------------------------------------------------------------------------------
+;----------- << Jupiter >> ------------
+
+[jup_a10_smart_terrain]:default_base
+sim_avail = true
+surge = 1
+stalker = 1
+bandit = 1
+csky = 1
+dolg = 1
+freedom = 1
+renegade = 1
+
+[jup_a12]:default_territory
+sim_avail = true
+surge = 1
+bandit = 2
+renegade = 1
+
+[jup_a6]:default_base
+sim_avail = true
+surge = 1
+stalker = 1
+csky = 0
+ecolog = 1
+freedom = 1
+monolith = 0
+bandit = 0
+dolg = 0
+
+[jup_b1]:default_territory
+sim_avail = true
+surge = 1
+
+[jup_b19]:default_base
+sim_avail = true
+zombied = 1
+
+[jup_b200]:default_base
+sim_avail = true
+surge = 1
+territory = 1
+stalker = 1
+bandit = 1
+csky = 1
+dolg = 1
+freedom = 1
+
+[jup_b202]:default_territory
+sim_avail = true
+
+[jup_b203]:default_territory
+sim_avail = {+jup_b16_oasis_artifact_spawn} true, false
+surge = 1
+
+[jup_b204]:default_territory
+sim_avail = true
+
+[jup_b205_smart_terrain]:default_lair
+sim_avail = true
+surge = 1
+
+[jup_b206]:default_resource
+sim_avail = true
+
+[jup_b207]:default_territory
+sim_avail = true
+
+; pretty much overlaps jup_b208, do not use
+[depo_terrain]:default
+sim_avail = false
+
+[jup_b208]:default_territory
+sim_avail = {+lttz_hb_isg_leader_in_jup -lttz_hb_leaving_jup_done} false, true
+surge = 1
+
+[jup_b209]:default_resource
+sim_avail = true
+
+[jup_b211]:default_resource
+sim_avail = true
+
+[jup_b212]:default_territory
+sim_avail = true
+
+[jup_b25]:default_resource
+sim_avail = true
+
+[jup_b32]:default_resource
+sim_avail = true
+
+[jup_b4]:default_territory
+sim_avail = true
+
+[jup_b41]:default_base
+sim_avail = true
+surge = 1
+stalker = 1
+bandit = 0
+csky = 1
+dolg = 0
+freedom = 0
+killer = 1
+ecolog = 1
+monolith = 0
+
+[jup_b46]:default_territory
+sim_avail = true
+
+[jup_b47]:default_territory
+sim_avail = true
+
+[jup_b6_anom_2]:default_resource
+sim_avail = true
+
+;technical
+
+[jup_b200_tushkan_smart_terrain]:default_lair
+sim_avail = true
+
+[jup_b207_depot_attack]:default_territory
+sim_avail = false
+
+[jup_b219]:default_territory
+sim_avail = false
+
+[jup_b8_smart_terrain]:default_territory
+sim_avail = false
+
+[jup_b205_smart_terrain_tushkano]:default_territory
+sim_avail = true
+
+[jup_a12_merc]:default_territory
+sim_avail = false
+
+[jup_a9]:default_lair
+sim_avail = false
+
+;--------- SIMULATION --------
+
+[jup_sim_1]:weak_lair
+sim_avail = true
+
+[jup_sim_2]:default_lair ;edited
+sim_avail = true
+
+[jup_sim_3]:default_lair
+sim_avail = true
+
+[jup_sim_4]:weak_lair
+sim_avail = true
+
+[jup_sim_5]:weak_lair
+sim_avail = true
+
+[jup_sim_6]:default_territory
+sim_avail = true
+
+[jup_sim_7]:weak_lair
+sim_avail = true
+
+[jup_sim_8]:weak_lair
+sim_avail = true
+
+[jup_sim_9]:default_lair
+sim_avail = true
+
+[jup_sim_10]:weak_lair
+sim_avail = true
+
+[jup_sim_11]:weak_lair
+sim_avail = true
+
+[jup_sim_12]:default_lair
+sim_avail = true
+
+[jup_sim_13]:weak_lair
+sim_avail = true
+
+[jup_sim_14]:weak_lair
+sim_avail = true
+
+[jup_sim_15]:default_lair
+sim_avail = true
+
+[jup_sim_16]:weak_lair
+sim_avail = true
+
+[jup_sim_17]:weak_lair
+sim_avail = true
+resource = 2
+
+[jup_sim_18]:default_lair
+sim_avail = true
+
+[jup_sim_19]:weak_lair
+sim_avail = true
+
+[jup_sim_20]:weak_lair
+sim_avail = true
+
+[jup_sim_21]:default_lair
+sim_avail = true
+
+; --------------------------- Pripyat ------------------------------------
+; --------------------------------------------------------------------------
+
+[pri_a15]:default_territory
+sim_avail = true
+
+[pri_a16]:default_base
+sim_avail = true
+stalker = 1
+bandit = 1
+csky = 1
+dolg = 1
+freedom = 1
+
+[pri_a17]:default_territory
+sim_avail = true
+
+[pri_a18_smart_terrain]:default_base
+sim_avail = true
+surge = 1
+monolith = 0
+
+[pri_a21_smart_terrain]:default_territory
+sim_avail = true
+surge = 1
+
+[pri_a22_smart_terrain]:default_territory
+sim_avail = true
+
+[pri_a25_smart_terrain]:default_territory
+sim_avail = true
+
+[pri_b301]:default_resource
+sim_avail = true
+surge = 1
+
+[pri_b302]:default_resource
+sim_avail = true
+
+[pri_b303]:default_resource
+sim_avail = true
+surge = 1
+
+[pri_b304]:default_territory
+sim_avail = true
+surge = 1
+
+[pri_b306]:default_resource
+sim_avail = true
+surge = 1
+
+[pri_b307]:default_resource
+sim_avail = true
+
+[pri_b35_mercs]:default_territory
+sim_avail = true
+surge = 1
+
+[pri_b36_smart_terrain]:default_territory
+sim_avail = true
+surge = 1
+zombied = 1
+monolith = 1
+
+[pri_sim_1]:default_lair
+sim_avail = true
+surge = 1
+
+[pri_sim_2]:default_lair
+sim_avail = true
+
+[pri_sim_3]:default_lair
+sim_avail = true
+
+[pri_sim_4]:default_lair
+sim_avail = true
+
+[pri_sim_5]:default_lair
+sim_avail = true
+
+[pri_sim_6]:default_lair
+sim_avail = true
+
+[pri_sim_7]:default_lair
+sim_avail = true
+
+[pri_sim_8]:default_lair
+sim_avail = true
+
+[pri_sim_9]:default_lair
+sim_avail = true
+
+[pri_sim_10]:default_lair
+sim_avail = true
+
+[pri_sim_11]:default_lair
+sim_avail = true
+
+[pri_sim_12]:default_lair
+sim_avail = true
+
+[pri_b35_military]:default_territory
+sim_avail = true
+surge = 1
+
+[pri_b305_dogs]:default_territory
+sim_avail = false
+
+[pri_b304_monsters_smart_terrain]:default_territory
+sim_avail = true
+
+[pri_a20]:default_territory
+sim_avail = true
+
+[pri_a28_heli]:default_territory
+sim_avail = true
+
+[pri_a28_base]:default_territory
+sim_avail = true
+
+[pri_a28_shop]:default_territory
+sim_avail = true
+
+[pri_a28_arch]:default_territory
+sim_avail = true
+
+[pri_a28_school]:default_territory
+sim_avail = true
+
+[pri_a28_evac]:default_territory
+sim_avail = true
+
+;lab x8 building, bugged and overlapping jobs, do not use
+[kbo_terrain]:default_territory
+sim_avail = false
+
+;lab X-8
+[lx8_smart_terrain]:default_territory
+sim_avail = {+lx8_actor_in_lab +actor_left_labx8} true, false
+all = 1
+lair = 1
+
+
+;underpass
+[pas_b400_elevator]:default_lair
+sim_avail = {+actor_pass_jupiter_exit_find +actor_pass_pripyat_exit_find} true, false
+
+[pas_b400_track]:default_lair
+sim_avail = {+actor_pass_jupiter_exit_find +actor_pass_pripyat_exit_find} true, false
+all = 1
+territory = 1
+
+[pas_b400_downstairs]:default_lair
+sim_avail = {+actor_pass_jupiter_exit_find +actor_pass_pripyat_exit_find} true, false
+
+[pas_b400_tunnel]:default_lair
+sim_avail = {+actor_pass_jupiter_exit_find +actor_pass_pripyat_exit_find} true, false
+
+[pas_b400_hall]:default_lair
+sim_avail = {+actor_pass_jupiter_exit_find +actor_pass_pripyat_exit_find} true, false
+all = 1
+
+[pas_b400_way]:default_lair
+sim_avail = {+actor_pass_jupiter_exit_find +actor_pass_pripyat_exit_find} true, false
+
+[pas_b400_canalisation]:default_lair
+sim_avail = {+actor_pass_jupiter_exit_find +actor_pass_pripyat_exit_find} true, false
+
+[pas_b400_fake]:default_lair
+sim_avail = {+actor_pass_jupiter_exit_find +actor_pass_pripyat_exit_find} true, false
+
+
+;--<< TRUCKS CEMETERY >>--
+
+[trc_sim_1]:default_base
+sim_avail = true
+lair = 1
+stalker = 1
+bandit = 1
+dolg = 1
+freedom = 1
+army = 1
+
+
+[trc_sim_2]:default_base
+sim_avail = true
+surge = 1
+stalker = 1
+bandit = 1
+dolg = 1
+freedom = 1
+army = 1
+
+[trc_sim_3]:default_lair
+sim_avail = true
+dolg = 2
+zombied = 1
+
+[trc_sim_4]:default_lair
+sim_avail = true
+ecolog = 1
+stalker = 1
+resource = 2
+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
+dolg = 1
+freedom = 1
+ecolog = 1
+csky = 1
+zombied = 1
+
+[trc_sim_9]:default_lair
+sim_avail = true
+
+[trc_sim_10]:default_lair
+sim_avail = true
+ecolog = 1
+stalker = 1
+resource = 1
+csky = 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
+dolg = 1
+stalker = 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
+stalker = 1
+zombied = 1
+
+[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
+
+
+;-- for MLR 6.2
+[pol_sim_1]:default
+sim_avail = false
+
+[pol_smart_terrain_1_1]:default
+sim_avail = false
+
+[pol_smart_terrain_1_2]:default
+sim_avail = false
+
+[pol_smart_terrain_1_3]:default
+sim_avail = false
+resource = 1
+
+[pol_smart_terrain_2_1]:default
+sim_avail = false
+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 = false
+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
\ No newline at end of file
diff --git a/mods/[DEV] Brotherhood/gamedata/configs/misc/squad_descr/squad_descr_brotherhood.ltx b/mods/[DEV] Brotherhood/gamedata/configs/misc/squad_descr/squad_descr_brotherhood.ltx
new file mode 100644
index 00000000..fae2607c
--- /dev/null
+++ b/mods/[DEV] Brotherhood/gamedata/configs/misc/squad_descr/squad_descr_brotherhood.ltx
@@ -0,0 +1,1153 @@
+;--------------------------
+;-- Catilina's Stories from the Zone
+;-- Special Characters
+;
+;--------------------------
+
+--- Brotherhood ---
+
+[bellerophon_squad]:online_offline_group
+faction = stalker
+npc = bellerophon
+npc_in_squad = 1, 1
+target_smart = {+relocation_bellerophon_1} yan_smart_terrain_6_4, {+relocation_ilya_1_init} agr_smart_terrain_4_4, gar_smart_terrain_3_5
+story_id = bellerophon_squad
+on_death = %+bellerophon_dead%
+
+[sarpedon_squad]:online_offline_group
+faction = stalker
+npc = sarpedon
+npc_in_squad = 1, 1
+target_smart = agr_smart_terrain_4_4
+story_id = sarpedon_squad
+on_death = %+sarpedon_dead%
+
+[satisfied_man]:online_offline_group
+faction = monster_special
+npc = gigant_strong
+npc_in_squad = 1, 1
+target_smart = actor
+on_death = %+satisfied_man_dead%
+
+[bellerophon_chimera_1]:online_offline_group
+faction = monster_special
+npc = chimera_strong
+npc_in_squad = 1, 1
+target_smart = actor
+on_death = %+bellerophon_chimera_1_dead%
+
+
+---- Trapper Quests ----
+
+[trapper_chimera_1]:online_offline_group
+faction = monster_special
+npc = chimera_strong
+story_id = trapper_chimera_1
+npc_in_squad = 1, 1
+logic = scripts\brotherhood\nr_trapper_chimera_1_logic.ltx
+on_death = %+trapper_chimera_1_dead%
+
+[trapper_chimera_2]:online_offline_group
+faction = monster_special
+npc = chimera_strong
+story_id = trapper_chimera_2
+npc_in_squad = 1, 1
+logic = scripts\brotherhood\nr_trapper_chimera_2_logic.ltx
+on_death = %+trapper_chimera_2_dead%
+
+
+---- Butcher Quests -----
+
+
+[pack_dogs_1]:online_offline_group
+faction = monster_special
+npc = dog_strong_black, dog_strong_bulterier, dog_strong_brown, dog_weak_white, dog_weak_white, dog_weak_red, dog_normal_white, dog_normal_white, dog_normal_bulterier, dog_normal_brown, pseudodog_grey_strong, pseudodog_weak
+npc_in_squad = 12, 12
+target_smart = mar_smart_terrain_6_4
+on_death = %+pack_dogs_1_dead%
+
+[pack_boars_1]:online_offline_group
+faction = monster_special
+npc = boar_01a_hard, boar_01a_weak, boar_01a_weak, boar_strong, boar_normal
+npc_in_squad = 5, 5
+target_smart = gar_smart_terrain_6_6
+on_death = %+pack_boars_1_dead%
+
+[pack_snorks_1]:online_offline_group
+faction = monster_special
+npc = snork_strong3, snork_normal3, snork_normal2, snork_weak3, snork_weak3
+npc_in_squad = 5, 5
+target_smart = gar_smart_terrain_1_7
+on_death = %+pack_snorks_1_dead%
+
+[pack_snorks_2]:online_offline_group
+faction = monster_special
+npc = snork_strong3, snork_normal3, snork_normal2, snork_weak3, snork_strong3, snork_strong3, snork_strong3, snork_weak3, snork_normal3, snork_normal2
+npc_in_squad = 10, 10
+target_smart = agr_smart_terrain_7_5
+on_death = %+pack_snorks_2_dead%
+
+[pack_snorks_smart_1]:online_offline_group
+faction = monster_special
+npc = snork_strong3, snork_normal3, snork_weak3
+npc_in_squad = 3, 3
+
+[pack_snorks_smart_2_strong]:online_offline_group
+faction = monster_special
+npc = snork_strong3, snork_normal3, snork_weak3, snork_strong3, snork_normal3
+npc_in_squad = 5, 5
+
+[pack_snorks_smart_3_weak]:online_offline_group
+faction = monster_special
+npc = snork_strong3, snork_strong3
+npc_in_squad = 2, 2
+
+
+--- Brotherhood Agroprom underground ----
+[hunter_orion_squad]:online_offline_group
+faction = stalker
+npc = hunter_orion
+npc_in_squad = 1, 1
+story_id = hunter_orion_squad
+on_death = %+hunter_orion_dead%
+
+
+[pack_agru_mutants_1]:online_offline_group
+faction = monster_special
+npc = snork_strong3, snork_normal3, snork_strong3, snork_normal3, snork_normal2
+npc_in_squad = 5, 5
+target_smart = actor
+
+
+[pack_agru_mutants_2]:online_offline_group
+faction = monster_special
+npc = bloodsucker_black_strong
+npc_in_squad = 1, 1
+target_smart = actor
+
+[pack_agru_mutants_3]:online_offline_group
+faction = monster_special
+npc = snork_strong3, snork_normal3, snork_strong3, snork_strong3
+npc_in_squad = 4, 4
+target_smart = actor
+
+[pack_agru_mutants_4]:online_offline_group
+faction = monster_special
+npc = snork_strong3, snork_normal3, snork_strong3, snork_weak3, snork_normal3
+npc_in_squad = 5, 5
+target_smart = actor
+
+[pack_agru_controller_1]:online_offline_group
+faction = monster_special
+npc = m_controller_normal
+npc_in_squad = 1, 1
+target_smart = agr_u_monsters
+on_death = %+brotherhood_agru_controller_dead%
+
+[pack_agru_burer_1]:online_offline_group
+faction = monster_special
+npc = burer_normal
+npc_in_squad = 1, 1
+target_smart = agr_u_monsters
+on_death = %+pack_agru_burer_1_dead%
+
+[pack_agru_burer_2]:online_offline_group
+faction = monster_special
+npc = burer_normal
+npc_in_squad = 1, 1
+target_smart = agr_u_monsters
+on_death = %+pack_agru_burer_2_dead%
+
+[pack_agru_burer_3]:online_offline_group
+faction = monster_special
+npc = burer_normal
+npc_in_squad = 1, 1
+target_smart = agr_u_monsters
+on_death = %+pack_agru_burer_3_dead%
+
+[vybegallo_squad]:online_offline_group
+faction = ecolog
+npc = vybegallo
+npc_in_squad = 1, 1
+story_id = vybegallo_squad
+target_smart = {+vybegallo_hiding} agr_u_soldiers, agr_smart_terrain_4_4
+on_death = %+vybegallo_dead%
+
+
+
+---Dolg Butcher ---
+
+[pack_bloodsuckers_dolg_1]:online_offline_group
+faction = monster_special
+npc = bloodsucker_black_strong, bloodsucker_black_strong, bloodsucker_black_normal
+npc_in_squad = 3, 3
+target_smart = mil_smart_terrain_4_2
+on_death = %+pack_bloodsuckers_dolg_1_dead%
+
+[pack_bloodsuckers_dolg_2]:online_offline_group
+faction = monster_special
+npc = bloodsucker_red_weak, bloodsucker_black_normal, bloodsucker_black_normal
+npc_in_squad = 3, 3
+target_smart = mil_smart_terrain_4_3
+on_death = %+pack_bloodsuckers_dolg_2_dead%
+
+[pack_bloodsuckers_dolg_3]:online_offline_group
+faction = monster_special
+npc = bloodsucker_red_weak, bloodsucker_black_strong, bloodsucker_black_normal
+npc_in_squad = 3, 3
+target_smart = mil_smart_terrain_2_10
+on_death = %+pack_bloodsuckers_dolg_3_dead%
+
+
+[dolg_sergey_bloodsucker_squad]:online_offline_group
+faction = dolg
+npc = dolg_sergey_bloodsucker
+npc_in_squad = 1, 1
+
+[dolg_sasha_bloodsucker_squad]:online_offline_group
+faction = dolg
+npc = dolg_sasha_bloodsucker
+npc_in_squad = 1, 1
+
+[dolg_vadim_bloodsucker_squad]:online_offline_group
+faction = dolg
+npc = dolg_vadim_bloodsucker
+npc_in_squad = 1, 1
+
+[dolg_artyom_bloodsucker_squad]:online_offline_group
+faction = dolg
+npc = dolg_artyom_bloodsucker
+npc_in_squad = 1, 1
+target_smart = bar_dolg_general
+
+[dolg_ilya_bloodsucker_og_squad]:online_offline_group
+faction = dolg
+npc = dolg_ilya_bloodsucker
+target_smart = actor
+story_id = dolg_ilya_bloodsucker_og_squad
+on_death = %+dolg_ilya_squad_dead%
+
+
+
+[dolg_ilya_bloodsucker_squad]:online_offline_group
+faction = dolg
+npc = sim_default_duty_3, sim_default_duty_3
+npc_in_squad = 2, 2
+target_smart = actor
+story_id = dolg_ilya_bloodsucker_squad
+
+
+
+[dolg_ilya_bloodsucker_2_squad]:online_offline_group
+faction = dolg
+npc_random = sim_default_duty_3, sim_default_duty_4, sim_default_duty_4, sim_default_duty_3
+npc_in_squad = 4, 4
+target_smart = actor
+story_id = dolg_ilya_bloodsucker_2_squad
+
+---- Legendaries ----
+
+---- Calydonian Boar ----
+
+[legendary_pack_boars_1]:online_offline_group
+faction = monster_special
+npc_random = boar_01a_hard, boar_strong, boar_02a_hard, boar_02a_hard
+npc_in_squad = 4, 4
+target_smart = mar_smart_terrain_7_7
+story_id = legendary_pack_boars_1
+on_death = %+legendary_pack_boars_1_dead%
+
+[legendary_pack_boars_2]:online_offline_group
+faction = monster_special
+npc = boar_01a_hard, boar_strong, boar_normal, boar_normal
+npc_in_squad = 4, 4
+target_smart = mar_smart_terrain_6_7
+story_id = legendary_pack_boars_2
+on_death = %+legendary_pack_boars_2_dead%
+
+[legendary_pack_boars_3]:online_offline_group
+faction = monster_special
+npc = boar_strong, boar_01a_hard, boar_02a_hard
+npc_in_squad = 3, 3
+target_smart = mar_smart_terrain_4_7
+story_id = legendary_pack_boars_3
+on_death = %+legendary_pack_boars_3_dead%
+
+[legendary_pack_boars_calydonian]:online_offline_group
+faction = monster_special
+npc = boar_calydonian
+npc_in_squad = 1, 1
+target_smart = actor
+story_id = legendary_pack_boars_calydonian
+on_death = %+legendary_pack_boars_calydonian_dead%
+
+[legendary_pack_boars_calydonian_guard]:online_offline_group
+faction = monster_special
+npc = boar_calydonian_guard, boar_calydonian_guard, boar_calydonian_guard, boar_calydonian_guard
+npc_in_squad = 4, 4
+target_smart = actor
+story_id = legendary_pack_boars_calydonian_guard
+on_death = %+legendary_pack_boars_calydonian_guard_dead%
+
+[legendary_pack_boars_reinf_1]:online_offline_group
+faction = monster_special
+npc = boar_01a_hard, boar_strong, boar_02a_hard, boar_02a_hard
+npc_in_squad = 4, 4
+target_smart = actor
+story_id = legendary_pack_boars_reinf_1
+on_death = %+legendary_pack_boars_reinf_1_dead%
+
+[legendary_pack_boars_reinf_2]:online_offline_group
+faction = monster_special
+npc = boar_01a_hard, boar_strong, boar_normal, boar_normal
+npc_in_squad = 3, 3
+target_smart = actor
+story_id = legendary_pack_boars_reinf_2
+on_death = %+legendary_pack_boars_reinf_2_dead%
+
+[legendary_pack_boars_reinf_3]:online_offline_group
+faction = monster_special
+npc = boar_strong, boar_01a_hard, boar_02a_hard, boar_strong, boar_strong
+npc_in_squad = 5, 5
+target_smart = actor
+story_id = legendary_pack_boars_reinf_3
+on_death = %+legendary_pack_boars_reinf_3_dead%
+
+
+
+---- Vlad and Drakul ----
+
+[legendary_bloodsucker_1]:online_offline_group
+faction = monster_special
+npc = bloodsucker_black_strong
+npc_in_squad = 1, 1
+target_smart = red_smart_terrain_monsters
+on_death = %+legendary_bloodsucker_1_dead%
+
+[legendary_bloodsucker_2]:online_offline_group
+faction = monster_special
+npc = bloodsucker_black_strong
+npc_in_squad = 1, 1
+target_smart = red_smart_terrain_monsters
+on_death = %+legendary_bloodsucker_2_dead%
+
+[legendary_bloodsucker_3]:online_offline_group
+faction = monster_special
+npc = bloodsucker_black_strong
+npc_in_squad = 1, 1
+target_smart = red_smart_terrain_monsters
+on_death = %+legendary_bloodsucker_3_dead%
+
+[legendary_bloodsucker_4]:online_offline_group
+faction = monster_special
+npc = bloodsucker_red_strong
+npc_in_squad = 1, 1
+target_smart = red_smart_terrain_monsters
+on_death = %+legendary_bloodsucker_4_dead%
+
+[legendary_bloodsucker_v]:online_offline_group
+faction = monster_special
+npc = bloodsucker_vlad, bloodsucker_drakul
+npc_in_squad = 2, 2
+target_smart = red_smart_terrain_monsters
+on_death = %+legendary_bloodsucker_v_dead%
+
+[legendary_bloodsucker_d]:online_offline_group
+faction = monster_special
+npc = bloodsucker_drakul
+npc_in_squad = 1, 1
+target_smart = red_smart_terrain_monsters
+on_death = %+legendary_bloodsucker_d_dead%
+
+[legendary_bloodsucker_5]:online_offline_group
+faction = monster_special
+npc = bloodsucker_black_strong
+npc_in_squad = 1, 1
+target_smart = red_smart_terrain_monsters
+on_death = %+legendary_bloodsucker_5_dead%
+
+[legendary_bloodsucker_6]:online_offline_group
+faction = monster_special
+npc = bloodsucker_red_strong
+npc_in_squad = 1, 1
+target_smart = red_smart_terrain_monsters
+on_death = %+legendary_bloodsucker_6_dead%
+----Sidorovich----
+
+[bandit_guards_esc_6_8_basic]:online_offline_group
+faction = bandit
+npc_random = sim_default_bandit_1, sim_default_bandit_2, sim_default_bandit_3, sim_default_bandit_3, sim_default_bandit_3, sim_default_bandit_2, sim_default_bandit_1
+npc_in_squad = 5, 7
+target_smart = esc_smart_terrain_6_8
+
+[bandit_guards_esc_6_8]:online_offline_group
+faction = bandit
+npc = sim_default_bandit_1, sim_default_bandit_2, sim_default_bandit_3, sim_default_bandit_3, sim_default_bandit_3, sim_default_bandit_2, sim_default_bandit_1
+npc_in_squad = 7, 7
+target_smart = esc_smart_terrain_6_8
+on_death = %+bandit_guards_esc_6_8_dead%
+
+[bandit_reinforcment_esc_6_8]:online_offline_group
+faction = bandit
+npc = sim_default_bandit_1, sim_default_bandit_1, sim_default_bandit_2, sim_default_bandit_2, sim_default_bandit_3
+npc_in_squad = 5, 5
+target_smart = esc_smart_terrain_7_11
+on_death = %+bandit_reinforcment_esc_6_8_dead%
+
+[bandit_reinforcment_esc_7_11]:online_offline_group
+faction = bandit
+npc = sim_default_bandit_1, sim_default_bandit_1, sim_default_bandit_2, sim_default_bandit_2, sim_default_bandit_3
+npc_in_squad = 5, 5
+target_smart = esc_smart_terrain_7_11
+on_death = %+bandit_reinforcment_esc_7_11_dead%
+
+[csky_assault_esc_5_7]:online_offline_group
+faction = csky
+npc = sim_default_csky_3, sim_default_csky_3, sim_default_csky_2
+npc_in_squad = 3
+target_smart = {+bandit_guards_esc_6_8_dead} esc_smart_terrain_6_8, esc_smart_terrain_5_7
+
+[csky_assault_esc_5_7_leader]:online_offline_group
+faction = csky
+npc = assault_csky_leader_esc_5_7
+npc_in_squad = 1
+target_smart = {+castor_pollox_relocation_init} esc_smart_terrain_5_7,{+bandit_guards_esc_6_8_dead} esc_smart_terrain_6_8, esc_smart_terrain_5_7
+
+[stalker_assault_esc_5_9]:online_offline_group
+faction = stalker
+npc = sim_default_stalker_2, sim_default_stalker_1, sim_default_stalker_1
+npc_in_squad = 3
+target_smart = {+bandit_guards_esc_6_8_dead} esc_smart_terrain_6_8, esc_smart_terrain_4_9
+
+[stalker_assault_esc_5_9_leader]:online_offline_group
+faction = stalker
+npc = assault_stalker_leader_esc_5_9
+npc_in_squad = 1
+target_smart = {+castor_pollox_relocation_init} esc_smart_terrain_5_7,{+bandit_guards_esc_6_8_dead} esc_smart_terrain_6_8, esc_smart_terrain_4_9
+
+
+[csky_guards_esc_6_8]:online_offline_group
+faction = csky
+npc_random = sim_default_csky_3, sim_default_csky_2
+npc_in_squad = 2, 2
+target_smart = esc_smart_terrain_6_8
+
+[stalker_guards_1_esc_6_8]:online_offline_group
+faction = stalker
+npc_random = sim_default_stalker_3, sim_default_stalker_2, sim_default_stalker_1
+npc_in_squad = 2, 2
+target_smart = esc_smart_terrain_6_8
+
+[stalker_guards_2_esc_6_8]:online_offline_group
+faction = stalker
+npc_random = sim_default_stalker_3, sim_default_stalker_2, sim_default_stalker_1
+npc_in_squad = 2, 2
+target_smart = esc_smart_terrain_6_8
+
+
+
+----- Fake Artifact -----
+
+
+[zaton_brokkr_squad]:online_offline_group
+faction = ecolog
+npc = zaton_brokkr
+npc_in_squad = 1, 1
+story_id = zaton_brokkr_squad
+target_smart = jup_b41
+
+[zaton_eitri_squad]:online_offline_group
+faction = ecolog
+npc = zaton_eitri
+npc_in_squad = 1, 1
+story_id = zaton_eitri_squad
+target_smart = zat_stalker_base_smart
+
+[ecologist_sidorovich_squad]:online_offline_group
+faction = ecolog
+npc = ecologist_sidorovich
+npc_in_squad = 1, 1
+story_id = ecologist_sidorovich_squad
+target_smart = esc_smart_terrain_2_12
+
+[bandit_debt_tambov_1]:online_offline_group
+faction = bandit
+npc_random = sim_default_bandit_2, sim_default_bandit_3, sim_default_bandit_3, sim_default_bandit_3, sim_default_bandit_4, sim_default_bandit_2
+npc_in_squad = 5, 5
+target_smart = val_smart_terrain_4_0
+on_death = %+bandit_debt_tambov_1_dead%
+
+[bandit_debt_tambov_2]:online_offline_group
+faction = bandit
+npc_random = sim_default_bandit_2, sim_default_bandit_3, sim_default_bandit_3, sim_default_bandit_3, sim_default_bandit_4, sim_default_bandit_2
+npc_in_squad = 5, 5
+target_smart = val_smart_terrain_4_0
+on_death = %+bandit_debt_tambov_2_dead%
+
+
+
+
+
+
+---Market Share---
+
+[marlo_stanfield_squad]:online_offline_group
+faction = stalker
+npc = marlo_stanfield
+npc_in_squad = 1, 1
+story_id = marlo_stanfield_squad
+
+[chris_partlow_squad]:online_offline_group
+faction = stalker
+npc = chris_partlow
+npc_in_squad = 1, 1
+story_id = chris_partlow_squad
+
+[zaton_mercenary_1_squad]:online_offline_group
+faction = killer
+npc = zaton_mercenary_1
+npc_in_squad = 1, 1
+story_id = zaton_mercenary_1_squad
+target_smart = zat_b40_smart_terrain
+on_death = %+zaton_mercenary_1_dead%
+
+[zaton_mercenary_courrier_1_squad]:online_offline_group
+faction = killer
+npc = zaton_mercenary_courrier_1, sim_default_killer_3, sim_default_killer_3
+npc_in_squad = 3, 3
+story_id = zaton_mercenary_courrier_1_squad
+target_smart = jup_sim_2
+on_death = %+zaton_mercenary_courrier_1_dead =zaton_mercenary_courrier_deathrattle()%
+
+[zaton_mercenary_2_squad]:online_offline_group
+faction = killer
+npc = zaton_mercenary_2
+npc_in_squad = 1, 1
+story_id = zaton_mercenary_2_squad
+target_smart = zat_b40_smart_terrain
+on_death = %+zaton_mercenary_2_dead%
+
+[jupiter_mercenary_1_squad]:online_offline_group
+faction = killer
+npc = sim_default_killer_3, sim_default_killer_3, sim_default_killer_4, sim_default_killer_4, sim_default_killer_4, sim_default_killer_4
+npc_in_squad = 6, 6
+story_id = jupiter_mercenary_1_squad
+target_smart = jup_b207
+on_death = %=spawn_reinforcment_mercenary_1 +jupiter_mercenary_1_squad_dead%
+
+[jupiter_mercenary_2_squad]:online_offline_group
+faction = killer
+npc = sim_default_killer_3, sim_default_killer_3, sim_default_killer_4, sim_default_killer_4, sim_default_killer_4, sim_default_killer_4
+npc_in_squad = 6, 6
+story_id = jupiter_mercenary_2_squad
+target_smart = jup_b202
+on_death = %+jupiter_mercenary_2_squad_dead%
+
+[jupiter_stalker_assault_leader_squad]:online_offline_group
+faction = stalker
+npc = jupiter_monk
+story_id = jupiter_stalker_assault_leader_squad
+target_smart = jup_a6
+
+[jupiter_stalker_assault_1_squad]:online_offline_group
+faction = stalker
+npc = sim_default_stalker_3, sim_default_stalker_4, sim_default_stalker_3, sim_default_stalker_4
+npc_in_squad = 4, 4
+story_id = jupiter_stalker_assault_1_squad
+target_smart = jup_a6
+
+[zaton_achilles_squad]:online_offline_group
+faction = stalker
+npc = zaton_achilles
+npc_in_squad = 1, 1
+story_id = zaton_achilles_squad
+target_smart = jup_b41
+on_death = %+zaton_achilles_dead%
+
+---Paranoia---
+[paranoia_man_squad]:online_offline_group
+faction = stalker
+npc = paranoia_man
+npc_in_squad = 1, 1
+story_id = paranoia_man_squad
+
+
+
+
+
+
+--- Morphine ----
+[anna_morphine_squad]:online_offline_group
+faction = stalker
+npc = anna_morphine
+npc_in_squad = 1, 1
+story_id = anna_morphine_squad
+target_smart = jup_a6
+
+
+
+--- Alyosha Shyogolov ---
+
+-- Quest 1 --
+
+[alyosha_shyogolov_squad]:online_offline_group
+faction = ecolog
+npc = alyosha_shyogolov
+npc_in_squad = 1, 1
+story_id = alyosha_shyogolov_squad
+target_smart = {+relocated_alyosha_shyogolov_3} zat_stalker_base_smart, {+relocated_alyosha_shyogolov_2} jup_a9, {+relocated_alyosha_shyogolov_1} jup_a6, {+alyosha_shyogolov_1_you_arrived} agr_smart_terrain_4_4, agr_smart_terrain_6_4
+on_death = %+alyosha_shyogolov_dead%
+
+[shyogolov_pack_snorks_1]:online_offline_group
+faction = monster_special
+npc = snork_weak3, snork_weak3
+npc_in_squad = 2, 2
+target_smart = agr_smart_terrain_5_3
+on_death = %+shyogolov_pack_snorks_1_dead%
+
+[bh_mozgotlen_squad]:online_offline_group
+faction = zombied
+npc = bh_mozgotlen
+npc_in_squad = 1, 1
+story_id = bh_mozgotlen_squad
+target_smart = agr_smart_terrain_5_7
+on_death = %+bh_mozgotlen_squad_dead%
+
+[bh_mozgotlen_squad_2]:online_offline_group
+faction = zombied
+npc = sim_default_zombied_3, sim_default_zombied_1, sim_default_zombied_2
+npc_in_squad = 3, 3
+story_id = bh_mozgotlen_squad_2
+target_smart = agr_smart_terrain_5_7
+
+
+[bh_alyosha_zombie_squad_1]:online_offline_group
+faction = zombied
+npc_random = sim_default_zombied_2, sim_default_zombied_3, sim_default_zombied_4
+npc_in_squad = 3, 4
+target_smart = agr_smart_terrain_4_6
+
+[bh_alyosha_zombie_squad_2]:online_offline_group
+faction = zombied
+npc_random = sim_default_zombied_2, sim_default_zombied_3, sim_default_zombied_4
+npc_in_squad = 3, 4
+target_smart = mar_smart_terrain_7_3
+
+-- Quest 2 --
+
+[nr_bandits_1_squad]:online_offline_group
+faction = bandit
+npc = nr_vova_bandit_1, sim_default_bandit_3, sim_default_bandit_3, sim_default_bandit_4
+npc_in_squad = 4, 4
+target_smart = jup_sim_13
+on_death = %+nr_bandits_1_squad_dead%
+
+[nr_bandits_2_squad]:online_offline_group
+faction = bandit
+npc = nr_pasha_bandit_2, sim_default_bandit_3, sim_default_bandit_4
+npc_in_squad = 3, 3
+target_smart = jup_sim_13
+on_death = %+nr_bandits_2_squad_dead%
+
+-- Quest 3 --
+
+[erast_fandorin_squad]:online_offline_group
+faction = stalker
+npc = erast_fandorin
+npc_in_squad = 1, 1
+target_smart = {+erast_fandorin_relocation_1} jup_b47, {+erast_fandorin_relocation_2} jup_b41, yan_smart_terrain_6_4
+story_id = erast_fandorin_squad
+on_death = %+erast_fandorin_dead%
+
+[flavio_becca_squad]:online_offline_group
+faction = ecolog
+npc = flavio_becca
+npc_in_squad = 1, 1
+target_smart = jup_b41
+story_id = flavio_becca_squad
+on_death = %+flavio_becca_dead%
+
+[nr_ecologist_rydzyk_squad]:online_offline_group
+faction = ecolog
+npc = nr_ecologist_rydzyk
+npc_in_squad = 1, 1
+target_smart = {+nr_ecologist_rydzyk_relocation_1} jup_b41, yan_smart_terrain_6_4
+story_id = nr_ecologist_rydzyk_squad
+on_death = %+nr_ecologist_rydzyk_dead%
+
+[nr_ecologist_1_squad]:online_offline_group
+faction = ecolog
+npc = nr_ecologist_1
+npc_in_squad = 1, 1
+target_smart = {+nr_ecologist_1_relocation_1} jup_b41, yan_smart_terrain_6_4
+story_id = nr_ecologist_1_squad
+on_death = %+nr_ecologist_1_dead%
+
+[nr_ecologist_2_squad]:online_offline_group
+faction = ecolog
+npc = nr_ecologist_2
+npc_in_squad = 1, 1
+target_smart = {+nr_ecologist_2_relocation_1} jup_b41, yan_smart_terrain_6_4
+story_id = nr_ecologist_2_squad
+on_death = %+nr_ecologist_2_dead%
+
+[nr_ecologist_3_squad]:online_offline_group
+faction = ecolog
+npc = nr_ecologist_3
+npc_in_squad = 1, 1
+target_smart = jup_b41
+story_id = nr_ecologist_3_squad
+on_death = %+nr_ecologist_3_dead%
+
+
+[nr_ambush_squad_1]:online_offline_group
+faction = army
+npc = sim_default_military_4, sim_default_military_3, sim_default_military_2, sim_default_military_3, sim_default_military_4, sim_default_military_4
+npc_in_squad = 6, 6
+target_smart = actor
+story_id = nr_ambush_squad_1
+
+[nr_ambush_squad_2]:online_offline_group
+faction = army
+npc = sim_default_military_4, sim_default_military_4, sim_default_military_3, sim_default_military_3, sim_default_military_4, sim_default_military_4
+npc_in_squad = 6, 6
+target_smart = actor
+story_id = nr_ambush_squad_2
+
+[nr_ambush_squad_3]:online_offline_group
+faction = army
+npc = sim_default_military_4, sim_default_military_3, sim_default_military_3
+npc_in_squad = 3, 3
+target_smart = actor
+story_id = nr_ambush_squad_3
+
+[nr_ambush_squad_4]:online_offline_group
+faction = army
+npc = nr_ambush_1
+npc_in_squad = 1, 1
+
+story_id = nr_ambush_squad_4
+
+[nr_ambush_squad_5]:online_offline_group
+faction = army
+npc = nr_ambush_2
+npc_in_squad = 1, 1
+
+story_id = nr_ambush_squad_5
+
+[nr_ambush_squad_6]:online_offline_group
+faction = army
+npc = nr_ambush_3
+npc_in_squad = 1, 1
+
+story_id = nr_ambush_squad_6
+
+[nr_ambush_squad_7]:online_offline_group
+faction = army
+npc = nr_ambush_4
+npc_in_squad = 1, 1
+
+story_id = nr_ambush_squad_7
+
+[nr_ambush_squad_8]:online_offline_group
+faction = army
+npc = nr_ambush_5
+npc_in_squad = 1, 1
+
+story_id = nr_ambush_squad_8
+
+
+
+
+----- Misc ----
+
+[sasha_tolstoy_squad]:online_offline_group
+faction = csky
+npc = sasha_tolstoy
+npc_in_squad = 1, 1
+story_id = sasha_tolstoy_squad
+target_smart = mar_smart_terrain_base
+
+[nr_sorokin_squad]:online_offline_group
+faction = stalker
+npc = nr_sorokin
+npc_in_squad = 1, 1
+story_id = nr_sorokin_squad
+target_smart = {+sorokin_1_you_arrived} jup_a6, bar_visitors
+on_death = %+nr_sorokin_dead%
+
+[nr_scamlok_squad]:online_offline_group
+faction = stalker
+npc = nr_scamlok
+npc_in_squad = 1, 1
+story_id = nr_scamlok_squad
+target_smart = bar_dolg_general
+on_death = %+nr_scamlok_dead%
+
+[nr_iliaz_squad]:online_offline_group
+faction = stalker
+npc = nr_iliaz
+npc_in_squad = 1, 1
+story_id = nr_iliaz_squad
+target_smart = {+nr_ilyaz_artfiact_hunt_1} esc_smart_terrain_1_11, esc_smart_terrain_2_12
+on_death = %+nr_iliaz_squad_dead%
+
+[nr_iliaz_boar_squad]:online_offline_group
+faction = monster_special
+npc = boar_01a_weak, boar_01a_weak, boar_strong, boar_normal
+npc_in_squad = 4, 4
+target_smart = esc_smart_terrain_5_12
+on_death = %+nr_iliaz_boar_squad_dead%
+
+
+--- random events
+
+[bh_gutalin_squad]:online_offline_group
+faction = stalker
+npc = bh_gutalin
+npc_in_squad = 1, 1
+story_id = bh_gutalin_squad
+target_smart = {+bh_gutalin_relocation_init} esc_smart_terrain_2_12, {+bh_gutalin_start_dialog_done} gar_smart_terrain_5_2, actor
+on_death = %+bh_gutalin_squad_dead%
+
+[nr_sasha_baltunov_squad]:online_offline_group
+faction = stalker
+npc = nr_sasha_baltunov
+npc_in_squad = 1, 1
+story_id = nr_sasha_baltunov_squad
+target_smart = bar_visitors
+on_death = %+nr_sasha_baltunov_squad_dead%
+
+[nr_sasha_baltunov_squad_2]:online_offline_group
+faction = stalker
+npc = nr_sasha_baltunov
+npc_in_squad = 1, 1
+story_id = nr_sasha_baltunov_squad_2
+target_smart = bar_visitors
+on_death = %+nr_sasha_baltunov_squad_2_dead%
+
+[pack_random_controller_1]:online_offline_group
+faction = monster_special
+npc = m_controller_normal
+npc_in_squad = 1, 1
+target_smart = jup_b203
+on_death = %+pack_random_controller_1_dead%
+
+[controller_victim_1_squad]:online_offline_group
+faction = stalker
+npc = controller_victim_1
+npc_in_squad = 1, 1
+target_smart = jup_b203
+on_death = %+controller_victim_1_squad_dead%
+
+[nr_bezsonik_squad]:online_offline_group
+faction = freedom
+npc = nr_bezsonik
+npc_in_squad = 1, 1
+story_id = nr_bezsonik_squad
+target_smart = mil_smart_terrain_7_12
+on_death = %+nr_bezsonik_dead%
+
+[pack_dogs_bezsonik_1]:online_offline_group
+faction = monster_special
+npc_random = dog_strong_black, dog_strong_bulterier, dog_strong_brown, dog_weak_white, dog_weak_white, dog_weak_red, dog_normal_white, dog_normal_white, dog_normal_bulterier, dog_normal_brown, pseudodog_grey_strong, pseudodog_weak
+npc_in_squad = 6, 8
+target_smart = mil_smart_terrain_8_3
+on_death = %+pack_dogs_bezsonik_1_dead%
+
+[butcher_tug_1_squad]:online_offline_group
+faction = stalker
+npc = butcher_tug_1
+npc_in_squad = 1, 1
+story_id = butcher_tug_1_squad
+target_smart = gar_smart_terrain_3_5
+on_death = %+butcher_tug_1_squad_dead%
+
+[butcher_tug_2_squad]:online_offline_group
+faction = stalker
+npc = butcher_tug_2
+npc_in_squad = 1, 1
+story_id = butcher_tug_2_squad
+target_smart = gar_smart_terrain_3_5
+on_death = %+butcher_tug_2_squad_dead%
+
+[nr_dead_convict_1_squad]:online_offline_group
+faction = stalker
+npc = nr_dead_convict_1
+npc_in_squad = 1, 1
+target_smart = jup_a6
+story_id = nr_dead_convict_1_squad
+on_death = %+nr_dead_convict_1_squad_dead -nr_execution_firing_1%
+
+[nr_dead_convict_2_squad]:online_offline_group
+faction = freedom
+npc = nr_dead_convict_2
+npc_in_squad = 1, 1
+target_smart = jup_a6
+story_id = nr_dead_convict_2_squad
+on_death = %+nr_dead_convict_2_squad_dead%
+
+[nr_executioner_1_squad]:online_offline_group
+faction = stalker
+npc = nr_executioner_1
+npc_in_squad = 1, 1
+target_smart = jup_a6
+story_id = nr_executioner_1_squad
+on_death = %+nr_executioner_1_squad_dead%
+
+[nr_executioner_2_squad]:online_offline_group
+faction = stalker
+npc = nr_executioner_2
+npc_in_squad = 1, 1
+target_smart = jup_a6
+story_id = nr_executioner_2_squad
+on_death = %+nr_executioner_2_squad_dead%
+
+[nr_executioner_3_squad]:online_offline_group
+faction = stalker
+npc = nr_executioner_3
+npc_in_squad = 1, 1
+target_smart = jup_a6
+story_id = nr_executioner_3_squad
+on_death = %+nr_executioner_3_squad_dead%
+
+[nr_lyoshik_squad]:online_offline_group
+faction = freedom
+npc = nr_lyoshik
+npc_in_squad = 1, 1
+story_id = nr_lyoshik_squad
+target_smart = mil_smart_terrain_7_12
+on_death = %+nr_lyoshik_squad_dead%
+
+
+[bh_badger_squad]:online_offline_group
+faction = army
+relationship = {+bh_shlitzer_smuggling_done} neutral, enemy
+npc = bh_badger
+npc_in_squad = 1, 1
+story_id = bh_badger_squad
+target_smart = esc_smart_terrain_3_16
+on_death = %+bh_badger_squad_dead%
+
+[bh_shlitzer_squad]:online_offline_group
+faction = stalker
+npc = bh_shlitzer
+npc_in_squad = 1, 1
+story_id = bh_shlitzer_squad
+target_smart = esc_smart_terrain_2_12
+on_death = %+bh_shlitzer_squad_dead%
+
+[bh_ironchain_squad]:online_offline_group
+faction = stalker
+npc = bh_ironchain
+npc_in_squad = 1, 1
+relationship = {+bh_ironchain_deal_gone_wrong} enemy, neutral
+story_id = bh_ironchain_squad
+target_smart = esc_smart_terrain_6_6
+on_death = %+bh_ironchain_squad_dead%
+
+[bh_ironchain_2_squad]:online_offline_group
+faction = bandit
+npc = sim_default_bandit_1, sim_default_bandit_2, sim_default_bandit_3, sim_default_bandit_1
+npc_in_squad = 4, 4
+relationship = {+bh_ironchain_deal_gone_wrong} enemy, neutral
+story_id = bh_ironchain_2_squad
+target_smart = esc_smart_terrain_6_6
+on_death = %+bh_ironchain_2_squad_dead%
+
+[bh_lockdown_9_10_squad]:online_offline_group
+faction = army
+npc = sim_default_military_2, sim_default_military_2, sim_default_military_1, sim_default_military_3
+npc_in_squad = 4, 4
+target_smart = esc_smart_terrain_9_10
+story_id = bh_lockdown_9_10_squad
+on_death = %+bh_lockdown_9_10_squad_dead%
+
+[bh_lockdown_3_7_squad]:online_offline_group
+faction = army
+npc = sim_default_military_2, sim_default_military_2, sim_default_military_1, sim_default_military_3
+npc_in_squad = 4, 4
+target_smart = esc_smart_terrain_3_7
+story_id = bh_lockdown_3_7_squad
+on_death = %+bh_lockdown_3_7_squad_dead%
+
+[bh_lockdown_3_7_squad_2]:online_offline_group
+faction = army
+npc = sim_default_military_2, sim_default_military_2, sim_default_military_3
+npc_in_squad = 3, 3
+target_smart = esc_smart_terrain_3_7
+story_id = bh_lockdown_3_7_squad_2
+on_death = %+bh_lockdown_3_7_squad_2_dead%
+
+[bh_lockdown_5_2_squad]:online_offline_group
+faction = army
+npc = sim_default_military_2, sim_default_military_2, sim_default_military_3, sim_default_military_3
+npc_in_squad = 4, 4
+target_smart = esc_smart_terrain_5_2
+story_id = bh_lockdown_5_2_squad
+on_death = %+bh_lockdown_5_2_squad_dead%
+
+[bh_lockdown_2_14_squad]:online_offline_group
+faction = army
+npc = sim_default_military_2, sim_default_military_2, sim_default_military_3, sim_default_military_3
+npc_in_squad = 4, 4
+target_smart = esc_smart_terrain_2_14
+story_id = bh_lockdown_2_14_squad
+on_death = %+bh_lockdown_2_14_squad_dead%
+
+[bh_lockdown_6_8_squad]:online_offline_group
+faction = army
+npc = sim_default_military_2, sim_default_military_2, sim_default_military_3, sim_default_military_3
+npc_in_squad = 4, 4
+target_smart = esc_smart_terrain_6_8
+story_id = bh_lockdown_6_8_squad
+on_death = %+bh_lockdown_6_8_squad_dead%
+
+
+[bh_lockdown_execution_squad]:online_offline_group
+faction = army
+npc = sim_default_military_3
+npc_in_squad = 1, 1
+target_smart = esc_smart_terrain_3_16
+story_id = bh_lockdown_execution_squad
+on_death = %+bh_lockdown_execution_squad_dead%
+
+[bh_lockdown_execution_squad_2]:online_offline_group
+faction = army
+npc = sim_default_military_2
+npc_in_squad = 1, 1
+target_smart = esc_smart_terrain_3_16
+story_id = bh_lockdown_execution_squad_2
+on_death = %+bh_lockdown_execution_squad_2_dead%
+
+[nr_trapper_missing_hunter_1_squad]:online_offline_group
+faction = stalker
+npc = nr_trapper_missing_hunter_1
+npc_in_squad = 1, 1
+target_smart =
+story_id = nr_trapper_missing_hunter_1_squad
+on_death = %+nr_trapper_missing_hunter_1_squad_dead%
+
+[nr_trapper_missing_hunter_2_squad]:online_offline_group
+faction = stalker
+npc = nr_trapper_missing_hunter_2
+npc_in_squad = 1, 1
+target_smart =
+story_id = nr_trapper_missing_hunter_2_squad
+on_death = %+nr_trapper_missing_hunter_2_squad_dead%
+
+[nr_trapper_missing_hunter_3_squad]:online_offline_group
+faction = stalker
+npc = nr_trapper_missing_hunter_3
+npc_in_squad = 1, 1
+target_smart =
+story_id = nr_trapper_missing_hunter_3_squad
+on_death = %+nr_trapper_missing_hunter_3_squad_dead%
+
+[pack_trapper_burer_1]:online_offline_group
+faction = monster_special
+npc = burer_normal
+npc_in_squad = 1, 1
+target_smart = jup_b208
+on_death = %+pack_trapper_burer_1_dead%
+
+[pack_trapper_burer_2]:online_offline_group
+faction = monster_special
+npc = burer_normal
+npc_in_squad = 1, 1
+target_smart = jup_b208
+on_death = %+pack_trapper_burer_2_dead%
+
+[pack_trapper_gigant_1]:online_offline_group
+faction = monster_special
+npc = gigant_strong
+npc_in_squad = 1, 1
+target_smart = jup_b208
+on_death = %+pack_trapper_gigant_1_dead%
+
+[pack_trapper_bloodsucker_1]:online_offline_group
+faction = monster_special
+npc = bloodsucker_black_strong
+npc_in_squad = 1, 1
+target_smart = actor
+on_death = %+pack_trapper_bloodsucker_1_dead%
+
+[pack_trapper_bloodsucker_2]:online_offline_group
+faction = monster_special
+npc = bloodsucker_black_strong
+npc_in_squad = 1, 1
+target_smart = actor
+on_death = %+pack_trapper_bloodsucker_2_dead%
+
+[pack_trapper_controller_1]:online_offline_group
+faction = monster_special
+npc = m_controller_normal
+npc_in_squad = 1, 1
+target_smart = actor
+on_death = %+pack_trapper_controller_1_dead%
+
+[pack_trapper_snorks_1]:online_offline_group
+faction = monster_special
+npc = snork_strong3, snork_normal3,snork_strong3, snork_normal3
+npc_in_squad = 4, 4
+target_smart = actor
+on_death = %+pack_trapper_snorks_1_dead%
+
+
+[nr_starik_murder_bandit_1_squad]:online_offline_group
+faction = bandit
+npc = sim_default_bandit_2
+npc_in_squad = 1, 1
+story_id = nr_starik_murder_bandit_1_squad
+target_smart = mar_smart_terrain_4_5
+on_death = %+nr_starik_murder_bandit_1_squad_dead%
+
+[nr_starik_murder_bandit_2_squad]:online_offline_group
+faction = bandit
+npc = sim_default_bandit_2
+npc_in_squad = 1, 1
+story_id = nr_starik_murder_bandit_2_squad
+target_smart = mar_smart_terrain_4_5
+on_death = %+nr_starik_murder_bandit_2_squad_dead%
+
+[nr_starik_murdered_squad]:online_offline_group
+faction = csky
+npc = nr_starik_murdered
+npc_in_squad = 1, 1
+story_id = nr_starik_murdered_squad
+target_smart = mar_smart_terrain_4_5
+on_death = %+nr_starik_murdered_squad_dead%
+
+--- Like Rats in a Trap
+
+[bh_rat_guards_1_squad]:online_offline_group
+faction = stalker
+npc = sim_default_stalker_2, sim_default_stalker_2, sim_default_stalker_3, sim_default_stalker_2, sim_default_stalker_2
+npc_in_squad = 5, 5
+story_id = bh_rat_guards_1_squad
+target_smart = agr_smart_terrain_4_4
+on_death = %+bh_rat_guards_1_squad_dead%
+
+[bh_rat_guards_2_squad]:online_offline_group
+faction = stalker
+npc = bh_rat_guards_naruchnik
+npc_in_squad = 1, 1
+story_id = bh_rat_guards_2_squad
+target_smart = agr_smart_terrain_4_4
+on_death = %+bh_rat_guards_2_squad_dead%
+
+[bh_agr_u_bandits_leader_squad]:online_offline_group
+faction = bandit
+npc = bh_rat_trap_leader
+npc_in_squad = 1, 1
+story_id = bh_agr_u_bandits_leader_squad
+target_smart = agr_u_bandits
+on_death = %+bh_agr_u_bandits_leader_squad_dead%
+
+[bh_agr_u_bandits_1_squad]:online_offline_group
+faction = bandit
+npc = sim_default_bandit_2, sim_default_bandit_1, sim_default_bandit_1, sim_default_bandit_3, sim_default_bandit_3
+npc_in_squad = 5, 5
+story_id = bh_agr_u_bandits_1_squad
+target_smart = agr_u_bandits
+on_death = %+bh_agr_u_bandits_1_squad_dead%
\ No newline at end of file
diff --git a/mods/[DEV] Brotherhood/gamedata/configs/misc/squad_descr/squad_descr_brotherhood_ac.ltx b/mods/[DEV] Brotherhood/gamedata/configs/misc/squad_descr/squad_descr_brotherhood_ac.ltx
new file mode 100644
index 00000000..87bf7bf9
--- /dev/null
+++ b/mods/[DEV] Brotherhood/gamedata/configs/misc/squad_descr/squad_descr_brotherhood_ac.ltx
@@ -0,0 +1,101 @@
+;--------------------------
+;-- Catilina's Stories from the Zone
+;-- Special Characters
+;
+;--------------------------
+
+--- Atomic Crusader ---
+
+--- Special NPCs ---
+
+[ac_pri_medic_monolith_squad]:online_offline_group
+faction = monolith
+npc = ac_pri_medic_monolith
+npc_in_squad = 1, 1
+target_smart = pri_monolith
+story_id = ac_pri_medic_monolith_squad
+on_death = %+ac_pri_medic_monolith_squad_dead%
+
+
+
+[ac_blue_winter_squad]:online_offline_group
+faction = monolith
+npc = ac_blue_winter
+npc_in_squad = 1, 1
+target_smart = {+ac_task_3_active} pri_a21_smart_terrain, {+ac_blue_winter_3_done} pri_a25_smart_terrain, pri_monolith
+story_id = ac_blue_winter_squad
+on_death = %+ac_blue_winter_squad_dead%
+
+[ac_balthazar_squad]:online_offline_group
+faction = monolith
+npc = ac_balthazar
+npc_in_squad = 1, 1
+target_smart = {+ac_task_3_active} pri_a21_smart_terrain, {+ac_blue_winter_3_done} pri_a25_smart_terrain, pri_monolith
+story_id = ac_balthazar_squad
+on_death = %+ac_balthazar_squad_dead%
+
+
+[ac_caspar_squad]:online_offline_group
+faction = monolith
+npc = ac_caspar
+npc_in_squad = 1, 1
+target_smart = {+ac_task_3_active} pri_a21_smart_terrain, {+ac_blue_winter_3_done} pri_a25_smart_terrain, pri_sim_3
+story_id = ac_caspar_squad
+on_death = %+ac_caspar_squad_dead%
+
+[ac_melchior_squad]:online_offline_group
+faction = monolith
+npc = ac_melchior
+npc_in_squad = 1, 1
+target_smart = {+ac_task_3_active} pri_a21_smart_terrain, {+ac_blue_winter_3_done} pri_a25_smart_terrain, pri_sim_3
+story_id = ac_melchior_squad
+on_death = %+ac_melchior_squad_dead%
+
+--- NPCs
+
+[pri_ac_a25_guard_1]:online_offline_group
+faction = monolith
+npc = sim_default_monolith_3, sim_default_monolith_2, sim_default_monolith_3, sim_default_monolith_4
+npc_in_squad = 3, 4
+target_smart = pri_a25_smart_terrain
+story_id = pri_ac_a25_guard_1
+on_death = %+pri_ac_a25_guard_1_dead%
+
+[pri_ac_a25_guard_2]:online_offline_group
+faction = monolith
+npc = sim_default_monolith_4, sim_default_monolith_3, sim_default_monolith_3, sim_default_monolith_4
+npc_in_squad = 3, 4
+target_smart = pri_a25_smart_terrain
+story_id = pri_ac_a25_guard_2
+on_death = %+pri_ac_a25_guard_2_dead%
+
+[ac_task_3_stalker_squad]:online_offline_group
+faction = stalker
+npc = sim_default_stalker_4, sim_default_stalker_4, sim_default_stalker_4, sim_default_stalker_4
+npc_in_squad = 4
+story_id = ac_task_3_stalker_squad
+target_smart = {+ac_task_3_pos_5} pri_b304_monsters_smart_terrain, pri_a16
+
+--- Mutants
+
+[pack_ac_snorks_1]:online_offline_group
+faction = monster_special
+npc = snork_strong3, snork_normal3, snork_normal3
+npc_in_squad = 3, 3
+target_smart = pri_a25_smart_terrain
+on_death = %+pack_ac_snorks_1_dead%
+
+[pack_ac_snorks_2]:online_offline_group
+faction = monster_special
+npc = snork_strong3, snork_normal3, snork_strong3
+npc_in_squad = 3, 3
+target_smart = pri_a25_smart_terrain
+on_death = %+pack_ac_snorks_2_dead%
+
+[ac_pri_a25_poltergeist_1_squad]:online_offline_group
+faction = monster
+npc = m_poltergeist_normal_tele
+npc_in_squad = 1, 1
+target_smart = pri_a25_smart_terrain
+story_id = ac_pri_a25_poltergeist_1_squad
+on_death = %+ac_pri_a25_poltergeist_1_squad_dead%
\ No newline at end of file
diff --git a/mods/[DEV] Brotherhood/gamedata/configs/misc/task/tm_brotherhood.ltx b/mods/[DEV] Brotherhood/gamedata/configs/misc/task/tm_brotherhood.ltx
new file mode 100644
index 00000000..123e4019
--- /dev/null
+++ b/mods/[DEV] Brotherhood/gamedata/configs/misc/task/tm_brotherhood.ltx
@@ -0,0 +1,809 @@
+;==============================================================
+;
+; TASKS PROVIDED FOR STORIES FROM THE ZONE (Name might be subject to changes)
+; Anomaly 1.5.2.
+;
+; Made by: Catilina
+;
+;==============================================================
+;------------------------------------------------------------------------------------------
+; Brotherhood QUESTLINES
+;------------------------------------------------------------------------------------------
+
+
+[give_task_kill_pack_dogs_1]
+icon = ui_inGame2_Laboratoriya_X8
+prior = 75
+storyline = false
+
+title = give_task_kill_pack_dogs_1_name
+target =
+descr = {+delievered_package_vybegallo} give_task_kill_pack_dogs_3_descr, {=actor_has_item(quest_package_vybegallo)} give_task_kill_pack_dogs_2_descr, give_task_kill_pack_dogs_1_descr
+status_functor = give_task_kill_pack_dogs_1_status_f
+
+condlist_0 = {+butcher_1_done} complete
+on_init =
+on_complete = %=inc_faction_goodwill_to_actor(stalker:10) =inc_faction_goodwill_to_actor(csky:5)%
+
+[give_task_kill_pack_boars_1]
+icon = ui_inGame2_Laboratoriya_X8
+prior = 75
+storyline = false
+
+title = give_task_kill_pack_boars_1_name
+target =
+descr = {+pack_boars_1_dead} give_task_kill_pack_boars_2_descr, give_task_kill_pack_boars_1_descr
+status_functor = give_task_kill_pack_boars_1_status_f
+
+condlist_0 = {+butcher_2_done} complete
+on_init =
+on_complete = %=reward_money(5000) =reward_item(meat_boar_a) =inc_faction_goodwill_to_actor(stalker:25) =inc_faction_goodwill_to_actor(dolg:10)%
+
+[give_task_kill_pack_snorks_1]
+icon = ui_inGame2_Laboratoriya_X8
+prior = 75
+storyline = false
+
+title = give_task_kill_pack_snorks_1_name
+target =
+descr = {+pack_snorks_1_dead} give_task_kill_pack_snorks_2_descr, give_task_kill_pack_snorks_1_descr
+status_functor = give_task_kill_pack_snorks_1_status_f
+
+condlist_0 = {+butcher_3_done} complete
+on_init =
+on_complete = %=reward_money(5000) =reward_item(meat_flesh_a) =inc_faction_goodwill_to_actor(stalker:25) =inc_faction_goodwill_to_actor(dolg:10)%
+
+[give_task_kill_pack_snorks_2]
+icon = ui_inGame2_Laboratoriya_X8
+prior = 75
+storyline = false
+
+title = give_task_kill_pack_snorks_2_name
+target =
+descr = {+bellerophon_2_done} give_task_kill_pack_snorks_2_3_descr, {+pack_snorks_2_dead -bellerophon_dead} give_task_kill_pack_snorks_2_2_descr, give_task_kill_pack_snorks_2_1_descr
+status_functor = give_task_kill_pack_snorks_2_status_f
+
+condlist_0 = {+butcher_4_done} complete
+on_init =
+on_complete = %=reward_money(7000) =reward_item(meat_flesh_a) =inc_faction_goodwill_to_actor(stalker:25) =inc_faction_goodwill_to_actor(dolg:10)%
+
+[give_rescue_orion_quest]
+icon = ui_inGame2_Laboratoriya_X8
+prior = 75
+storyline = false
+
+title = give_rescue_orion_quest_name
+target =
+descr = {+brotherhood_agru_controller_dead +bellerophon_dead} give_rescue_orion_quest_3_alt_descr, {+brotherhood_agru_controller_dead} give_rescue_orion_quest_3_descr, {+bellerophon_3_done} give_rescue_orion_quest_2_descr, {+bellerophon_dead} give_rescue_orion_quest_1_alt_descr, give_rescue_orion_quest_1_descr
+status_functor = give_rescue_orion_quest_status_f
+
+condlist_0 = {+butcher_5_done} complete
+on_init = %=spawn_hunter_orion_dead%
+on_complete = %=inc_faction_goodwill_to_actor(stalker:80) =inc_faction_goodwill_to_actor(dolg:10)%
+
+
+ ;-------------;
+ ; Dolg Quests ;
+ ;-------------;
+[give_meet_aspirin_quest_1]
+icon = ui_iconsTotal_bar_crazy_veterans_quest
+prior = 20
+storyline = false
+
+title = give_meet_aspirin_quest_1_name
+target =
+descr = give_meet_aspirin_quest_1_descr
+
+condlist_0 = {+give_meet_aspirin_quest_1_done} complete
+
+[give_meet_aspirin_quest_2]
+icon = ui_iconsTotal_bar_crazy_veterans_quest
+prior = 20
+storyline = false
+
+title = give_meet_aspirin_quest_2_name
+target =
+descr = give_meet_aspirin_quest_2_descr
+
+condlist_0 = {+give_meet_aspirin_quest_2_done} complete
+
+[give_meet_voronin_quest_1]
+icon = ui_iconsTotal_bar_crazy_veterans_quest
+prior = 20
+storyline = false
+
+title = give_meet_voronin_quest_1_name
+target =
+descr = give_meet_voronin_quest_1_descr
+
+condlist_0 = {+give_meet_voronin_quest_1_done} complete
+
+[give_dolg_bloodsucker_village_1]
+icon = ui_inGame2_Laboratoriya_X8
+prior = 75
+storyline = false
+
+title = give_dolg_bloodsucker_village_1_name
+target =
+descr = {+give_dolg_bloodsucker_village_1_out_of_time} give_dolg_bloodsucker_village_1_3_descr, {+pack_bloodsuckers_dolg_1_all_dead} give_dolg_bloodsucker_village_1_2_descr, give_dolg_bloodsucker_village_1_1_descr
+status_functor = give_dolg_bloodsucker_village_1_status_f
+
+condlist_0 = {+give_dolg_bloodsucker_village_1_done} complete
+condlist_1 = {+give_dolg_bloodsucker_village_1_out_of_time} fail
+on_init = %=clear_smart_terrain(mil_smart_terrain_4_2:true) =clear_smart_terrain(mil_smart_terrain_4_3:true) =clear_smart_terrain(mil_smart_terrain_2_10:true)%
+on_complete = %=reward_money(8500) =inc_faction_goodwill_to_actor(dolg:120)%
+on_fail = %+give_dolg_bloodsucker_village_1_fail%
+
+[give_dolg_bloodsucker_village_2]
+icon = ui_inGame2_Laboratoriya_X8
+prior = 75
+storyline = false
+
+title = give_dolg_bloodsucker_village_2_name
+target =
+descr = {+bloodsucker_raid_has_killer_patch_fail} give_dolg_bloodsucker_village_2_3_descr, {+bloodsucker_raid_has_killer_patch_done} give_dolg_bloodsucker_village_2_2_descr, give_dolg_bloodsucker_village_2_1_descr
+status_functor = give_dolg_bloodsucker_village_2_status_f
+
+condlist_0 = {+give_dolg_bloodsucker_village_2_done} complete
+condlist_1 = {+give_dolg_bloodsucker_village_2_day} fail
+on_init = %=clear_smart_terrain(mil_smart_terrain_4_2:true) =clear_smart_terrain(mil_smart_terrain_4_3:true) =clear_smart_terrain(mil_smart_terrain_2_10:true) =spawn_dolg_vadim_bloodsucker_dead =spawn_dolg_sasha_bloodsucker_dead =spawn_dolg_sergey_bloodsucker_dead%
+on_complete = %=inc_faction_goodwill_to_actor(dolg:-110)%
+on_fail = %=reward_money(4000)%
+
+[give_dolg_bloodsucker_village_3]
+icon = ui_iconsTotal_bar_crazy_veterans_quest
+prior = 140
+storyline = true
+
+title = give_dolg_bloodsucker_village_3_name
+target =
+descr = give_dolg_bloodsucker_village_3_1_descr
+status_functor = give_dolg_bloodsucker_village_3_status_f
+
+on_init = %=clear_smart_terrain(mil_smart_terrain_8_3:true) =clear_smart_terrain(mil_smart_terrain_7_4:true)%
+condlist_0 = {+dolg_ilya_bloodsucker_start_dialog_done} complete
+on_complete =
+
+
+
+ ;------------------;
+ ; Legendary Quests ;
+ ;------------------;
+
+[give_forester_hunt_vlad_drakul]
+icon = ui_iconsTotal_bar_crazy_veterans_quest
+prior = 140
+storyline = true
+
+title = give_forester_hunt_vlad_drakul_name
+target =
+descr = {+forester_news_legendary_3} give_forester_hunt_vlad_drakul_3_descr, {+legendary_bloodsucker_vlad_drakul_dead} give_forester_hunt_vlad_drakul_2_descr, give_forester_hunt_vlad_drakul_1_descr
+status_functor = give_hunt_legendary_1_status_f
+
+on_init =
+condlist_0 = {+give_forester_hunt_vlad_drakul_done} complete
+condlist_1 = {+give_forester_hunt_vlad_drakul_fail} fail
+on_complete = %=reward_item(vodka_quality) =inc_faction_goodwill_to_actor(stalker:75)%
+on_fail =
+
+[give_butcher_legendary_1]
+icon = ui_iconsTotal_bar_crazy_veterans_quest
+prior = 140
+storyline = true
+
+title = give_butcher_legendary_1_name
+target =
+descr = {+legendary_pack_boars_calydonian_dead} give_butcher_legendary_1_2_descr, give_butcher_legendary_1_1_descr
+status_functor = give_hunt_legendary_2_status_f
+
+on_init =
+condlist_0 = {+give_butcher_legendary_1_done} complete
+condlist_1 = {+player_fled_from_calydonian_boar} fail
+
+on_complete = %=reward_item(vodka_quality) =inc_faction_goodwill_to_actor(stalker:50) =inc_faction_goodwill_to_actor(csky:50) =reward_money(10000)%
+on_fail = %=release_legendary_hunt_2()%
+
+
+
+;------------------------------------------------------------------------------------------
+; Doctor Alyosha Shyogolov QUESTLINES
+;------------------------------------------------------------------------------------------
+
+[give_alyosha_shyogolov_trouble_1]
+icon = ui_iconsTotal_bar_crazy_veterans_quest
+prior = 140
+storyline = true
+
+title = give_alyosha_shyogolov_trouble_1_name
+target =
+descr = {+alyosha_shyogolov_1_you_arrived} give_alyosha_shyogolov_trouble_1_3_descr, {+alyosha_shyogolov_1_go} give_alyosha_shyogolov_trouble_1_2_descr, give_alyosha_shyogolov_trouble_1_1_descr
+status_functor = give_alyosha_shyogolov_trouble_1_status_f
+
+on_init = %=clear_smart_terrain(agr_smart_terrain_6_4:true) =create_squad(alyosha_shyogolov_squad:agr_smart_terrain_6_4) =clear_smart_terrain(agr_smart_terrain_5_3:true)%
+condlist_0 = {+alyosha_shyogolov_0_new_done} complete
+on_complete =
+
+[give_alyosha_shyogolov_trouble_2]
+icon = ui_iconsTotal_bar_crazy_veterans_quest
+prior = 140
+storyline = true
+
+title = give_alyosha_shyogolov_trouble_2_name
+target =
+descr = {=actor_has_item(bh_mozgotlen_documents)} give_alyosha_shyogolov_trouble_2_2_descr, give_alyosha_shyogolov_trouble_2_1_descr
+status_functor = give_alyosha_shyogolov_trouble_2_status_f
+
+on_init = %=clear_smart_terrain(agr_smart_terrain_5_7:true) =clear_smart_terrain(agr_smart_terrain_4_6:true) =clear_smart_terrain(mar_smart_terrain_7_3:true)%
+condlist_0 = {+give_alyosha_shyogolov_trouble_2_done} complete
+on_complete =
+
+
+[give_alyosha_shyogolov_trouble_3]
+icon = ui_iconsTotal_bar_crazy_veterans_quest
+prior = 140
+storyline = true
+
+title = give_alyosha_shyogolov_trouble_3_name
+target =
+descr = {+nr_bandits_squads_dead_1} give_alyosha_shyogolov_trouble_3_3_descr, {+alyosha_shyogolov_retreat_1} give_alyosha_shyogolov_trouble_3_2_descr, give_alyosha_shyogolov_trouble_3_1_descr
+status_functor = give_alyosha_shyogolov_trouble_3_status_f
+
+on_init = %=clear_smart_terrain(jup_sim_13:true)%
+condlist_0 = {+alyosha_shyogolov_trouble_3_done} complete
+on_complete =
+
+
+
+[give_alyosha_shyogolov_trouble_4]
+icon = ui_iconsTotal_bar_crazy_veterans_quest
+prior = 140
+storyline = true
+
+title = give_alyosha_shyogolov_trouble_4_name
+target =
+descr =
+status_functor = give_alyosha_shyogolov_trouble_4_status_f
+
+on_init =
+condlist_0 = {+alyosha_shyogolov_trouble_4_done} complete
+on_complete =
+
+[give_alyosha_shyogolov_trouble_5]
+icon = ui_iconsTotal_bar_crazy_veterans_quest
+prior = 140
+storyline = true
+
+title = give_alyosha_shyogolov_trouble_5_name
+target =
+descr =
+status_functor = give_alyosha_shyogolov_trouble_5_status_f
+
+on_init =
+condlist_0 = {+alyosha_shyogolov_trouble_5_done} complete
+on_complete =
+;------------------------------------------------------------------------------------------
+; Vybegallo QUESTLINES
+;------------------------------------------------------------------------------------------
+
+[give_vybegallo_pseudogiant]
+icon = ui_icons_cordon22
+prior = 72
+storyline = false
+
+title = bring_pseudogiant_vybegallo_name
+descr = bring_part_vybegallo_descr
+target =
+
+condlist_0 = {+vybegallo_quest_1_done} complete
+condlist_1 = {+vybegallo_sakharov_order_done} fail
+
+[give_meet_vybegallo_quest]
+icon = ui_iconsTotal_bar_crazy_veterans_quest
+prior = 20
+storyline = true
+
+title = give_meet_vybegallo_quest_name
+target =
+descr = give_meet_vybegallo_quest_descr
+
+condlist_0 = {+give_meet_vybegallo_quest_done} complete
+
+
+[give_sakharov_order_vybegallo_quest]
+icon = ui_iconsTotal_bar_crazy_veterans_quest
+prior = 20
+storyline = true
+
+title = give_sakharov_order_vybegallo_quest_name
+target =
+descr = {+vybegallo_sakharov_order_done} give_sakharov_order_vybegallo_quest_2_descr, give_sakharov_order_vybegallo_quest_1_descr
+
+condlist_0 = {+give_sakharov_order_vybegallo_quest_done} complete
+on_complete = %=spawn_vybegallo_order_mercenary =spawn_vybegallo_order_mercenary_2 =reward_item(medkit) =reward_item(antirad) =reward_money(1000)%
+
+
+[give_vybegallo_must_die]
+icon = ui_iconsTotal_bar_crazy_veterans_quest
+prior = 99
+storyline = true
+
+title = give_vybegallo_must_die_name
+target =
+descr = {+vybegallo_dead} give_vybegallo_must_die_2_descr, give_vybegallo_must_die_1_descr
+
+condlist_0 = {+give_vybegallo_must_die_done} complete
+on_complete = %=reward_item(af_cooler_up) =reward_money(7500)%
+
+[give_vybegallo_satisfied_man]
+icon = ui_iconsTotal_bar_crazy_veterans_quest
+prior = 99
+storyline = true
+
+title = give_vybegallo_satisfied_man_name
+target =
+descr = {+satisfied_man_dead} give_vybegallo_satisfied_man_2_descr, give_vybegallo_satisfied_man_1_descr
+status_functor = give_vybegallo_satisfied_man_status_f
+
+condlist_0 = {+give_vybegallo_satisfied_man_done} complete
+on_complete = %=reward_money(10000)%
+
+ ;--------------------;
+ ; Bellerophon Quests ;
+ ;--------------------;
+[give_task_bellerophon_chimera_1]
+icon = ui_iconsTotal_bar_crazy_veterans_quest
+prior = 90
+storyline = true
+
+title = give_task_bellerophon_chimera_1_name
+target =
+descr = {+bellerophon_chimera_1_dead} give_task_bellerophon_chimera_1_3_descr, {+bellerophon_7_done} give_task_bellerophon_chimera_1_2_descr, give_task_bellerophon_chimera_1_1_descr
+status_functor = give_task_bellerophon_chimera_1_status_f
+
+condlist_0 = {+give_task_bellerophon_chimera_1_done} complete
+condlist_1 = {+bellerophon_dead} fail
+on_complete =
+
+ ;--------------------;
+ ; Trapper Quests ;
+ ;--------------------;
+
+[give_task_trapper_chimera_1]
+icon = ui_iconsTotal_bar_crazy_veterans_quest
+prior = 90
+storyline = false
+
+title = give_task_trapper_chimera_1_name
+target =
+descr = {+trapper_chimera_1_dead} give_task_trapper_chimera_1_4_descr, {+trapper_chimera_1_init} give_task_trapper_chimera_1_3_descr, {+trapper_chimera_1_done} give_task_trapper_chimera_1_2_descr, give_task_trapper_chimera_1_1_descr
+status_functor = give_task_trapper_chimera_1_status_f
+
+condlist_0 = {+give_task_trapper_chimera_1_done} complete
+on_complete = %=reward_money(8750) =inc_faction_goodwill_to_actor(stalker:55) =inc_faction_goodwill_to_actor(freedom:15)%
+
+[give_task_trapper_chimera_2]
+icon = ui_iconsTotal_bar_crazy_veterans_quest
+prior = 90
+storyline = false
+
+title = give_task_trapper_chimera_2_name
+target =
+descr = {+trapper_chimera_2_dead} give_task_trapper_chimera_2_6_descr, {+trapper_chimera_2_recording_done_success} give_task_trapper_chimera_2_5_descr, {+trapper_chimera_7_done} give_task_trapper_chimera_2_4_descr, {+trapper_chimera_record_in_place} give_task_trapper_chimera_2_3_descr, {+trapper_chimera_2_init} give_task_trapper_chimera_2_2_descr, {+trapper_chimera_2_back} give_task_trapper_chimera_2_7_descr, give_task_trapper_chimera_2_1_descr
+status_functor = give_task_trapper_chimera_2_status_f
+
+condlist_0 = {+give_task_trapper_chimera_2_done} complete
+on_complete = %=inc_faction_goodwill_to_actor(stalker:55) =inc_faction_goodwill_to_actor(freedom:15)%
+
+--- Missing Hunters
+[give_task_trapper_missing_hunter_1]
+icon = ui_iconsTotal_bar_crazy_veterans_quest
+prior = 90
+storyline = false
+
+title = give_task_trapper_missing_hunter_1_name
+target =
+descr = {+give_task_trapper_missing_hunter_1_all} give_task_trapper_missing_hunter_1_3_descr, {+trapper_missing_hunter_1_mutant_init} give_task_trapper_missing_hunter_1_2_descr, give_task_trapper_missing_hunter_1_1_descr
+status_functor = give_task_trapper_missing_hunter_1_status_f
+
+condlist_0 = {+give_task_trapper_missing_hunter_1_done} complete
+on_complete = %=reward_money(3750) =inc_faction_goodwill_to_actor(stalker:25) =inc_faction_goodwill_to_actor(freedom:15)%
+
+
+[give_task_trapper_missing_hunter_2]
+icon = ui_iconsTotal_bar_crazy_veterans_quest
+prior = 90
+storyline = false
+
+title = give_task_trapper_missing_hunter_2_name
+target =
+descr = {+give_task_trapper_missing_hunter_2_all} give_task_trapper_missing_hunter_2_4_descr, {+give_task_trapper_missing_hunter_2_mutants_dead} give_task_trapper_missing_hunter_2_3_descr, {+give_task_trapper_missing_hunter_2_found} give_task_trapper_missing_hunter_2_2_descr, give_task_trapper_missing_hunter_2_1_descr
+status_functor = give_task_trapper_missing_hunter_2_status_f
+
+condlist_0 = {+give_task_trapper_missing_hunter_2_done} complete
+on_complete = %=reward_money(5750) =inc_faction_goodwill_to_actor(stalker:45) =inc_faction_goodwill_to_actor(freedom:25)%
+
+
+[give_task_trapper_missing_hunter_3]
+icon = ui_iconsTotal_bar_crazy_veterans_quest
+prior = 90
+storyline = false
+
+title = give_task_trapper_missing_hunter_3_name
+target =
+descr = {+give_task_trapper_missing_hunter_3_mutants_dead} give_task_trapper_missing_hunter_3_3_descr, {+trapper_missing_hunter_3_mutant_init} give_task_trapper_missing_hunter_3_2_descr, give_task_trapper_missing_hunter_3_1_descr
+status_functor = give_task_trapper_missing_hunter_3_status_f
+
+condlist_0 = {+give_task_trapper_missing_hunter_3_done} complete
+on_complete = %=reward_money(4250) =inc_faction_goodwill_to_actor(stalker:25) =inc_faction_goodwill_to_actor(freedom:15)%
+;------------------------------------------------------------------------------------------
+; Cordon QUESTLINES
+;------------------------------------------------------------------------------------------
+
+[give_sidorovich_railway_assault]
+icon = ui_inGame2_Laboratoriya_X8
+prior = 75
+storyline = false
+
+title = give_sidorovich_railway_assault_name
+target =
+descr = {+bandit_reinforcment_esc_6_8_dead} give_sidorovich_railway_assault_5_descr, {+bandit_guards_esc_6_8_dead} give_sidorovich_railway_assault_4_descr, {+esc_railway_assault_go} give_sidorovich_railway_assault_3_descr, {+esc_railway_assault_ready} give_sidorovich_railway_assault_2_descr, give_sidorovich_railway_assault_1_descr
+status_functor = give_sidorovich_railway_assault_status_f
+
+
+condlist_0 = {+esc_railway_assault_done} complete
+on_init = %=clear_smart_terrain(esc_smart_terrain_5_9:true) =clear_smart_terrain(esc_smart_terrain_4_9:true) =create_squad(csky_assault_esc_5_7:esc_smart_terrain_5_7) =create_squad(csky_assault_esc_5_7_leader:esc_smart_terrain_5_7) =clear_smart_terrain(esc_smart_terrain_6_8:true) =create_squad(bandit_guards_esc_6_8:esc_smart_terrain_6_8)%
+on_complete = %=reward_money(3500) =inc_faction_goodwill_to_actor(stalker:25)%
+
+[give_sidorovich_railway_assault_2]
+icon = ui_inGame2_Laboratoriya_X8
+prior = 75
+storyline = false
+
+title = give_sidorovich_railway_assault_2_name
+target =
+descr = {+bandit_guards_esc_6_8_dead +bandit_reinforcment_esc_7_11_dead} give_sidorovich_railway_assault_2_3_descr, {+bandit_reinforcment_esc_7_11_dead} give_sidorovich_railway_assault_2_2_descr, give_sidorovich_railway_assault_2_1_descr
+status_functor = give_sidorovich_railway_assault_2_status_f
+
+
+condlist_0 = {+esc_railway_assault_done} complete
+on_init = %=clear_smart_terrain(esc_smart_terrain_7_11:true) =clear_smart_terrain(esc_smart_terrain_5_9:true) =clear_smart_terrain(esc_smart_terrain_4_9:true) =create_squad(csky_assault_esc_5_7:esc_smart_terrain_5_7) =create_squad(csky_assault_esc_5_7_leader:esc_smart_terrain_5_7) =clear_smart_terrain(esc_smart_terrain_6_8:true) =create_squad(bandit_guards_esc_6_8:esc_smart_terrain_6_8)%
+on_complete = %=reward_money(5000) =inc_faction_goodwill_to_actor(stalker:50)%
+
+[give_task_bh_gutalin_1]
+icon = ui_icons_cordon22
+prior = 80
+storyline = false
+
+title = give_task_bh_gutalin_1_name
+descr = {+bh_gutalin_squad_dead} give_task_bh_gutalin_1_2_descr, give_task_bh_gutalin_1_1_descr
+target =
+status_functor = give_task_bh_gutalin_1_status_f
+
+
+condlist_0 = {+give_task_bh_gutalin_1_done} complete
+on_init =
+on_complete = %=reward_money(2500) =reward_item(salmon) =reward_item(raisins) =reward_item(vodka_quality)%
+
+[give_shlitzer_smuggling_1]
+icon = ui_icons_cordon22
+prior = 80
+storyline = false
+
+title = give_shlitzer_smuggling_1_name
+descr = {+bh_badger_deal_done} give_shlitzer_smuggling_1_3_descr, {+bh_shlitzer_smuggling_done} give_shlitzer_smuggling_1_2_descr, give_shlitzer_smuggling_1_1_descr
+target =
+status_functor = give_shlitzer_smuggling_1_status_f
+
+
+condlist_0 = {+give_shlitzer_smuggling_1_done} complete
+condlist_1 = {+bh_shlitzer_fail_1} fail
+on_init = %=create_squad(bh_badger_squad:esc_smart_terrain_3_16)%
+on_complete = %=reset_bh_badger_logic%
+
+[give_shlitzer_smuggling_2]
+icon = ui_icons_cordon22
+prior = 80
+storyline = false
+
+title = give_shlitzer_smuggling_2_name
+descr = give_shlitzer_smuggling_2_1_descr
+target =
+status_functor = give_shlitzer_smuggling_2_status_f
+
+
+condlist_0 = {+give_shlitzer_smuggling_2_done} complete
+condlist_1 =
+on_init =
+on_complete =
+
+[give_shlitzer_smuggling_3]
+icon = ui_icons_cordon22
+prior = 80
+storyline = false
+
+title = give_shlitzer_smuggling_3_name
+descr = give_shlitzer_smuggling_3_1_descr
+target =
+status_functor = give_shlitzer_smuggling_3_status_f
+
+
+condlist_0 = {+give_shlitzer_smuggling_3_done} complete
+condlist_1 =
+on_init =
+on_complete =
+;------------------------------------------------------------------------------------------
+; Marketshare QUESTLINES
+;------------------------------------------------------------------------------------------
+[give_meet_marlo_chris_quest_1]
+icon = ui_iconsTotal_bar_crazy_veterans_quest
+prior = 100
+storyline = false
+
+title = give_meet_marlo_chris_quest_1_name
+target =
+descr = give_meet_marlo_chris_quest_1_descr
+
+condlist_0 = {+give_meet_marlo_chris_quest_1_done} complete
+
+[give_meet_marlo_chris_quest_2]
+icon = ui_iconsTotal_bar_crazy_veterans_quest
+prior = 100
+storyline = false
+
+title = give_meet_marlo_chris_quest_2_name
+target =
+descr = give_meet_marlo_chris_quest_2_descr
+
+condlist_0 = {+give_meet_marlo_chris_quest_2_done} complete
+
+[give_meet_marlo_chris_quest_3]
+icon = ui_iconsTotal_bar_crazy_veterans_quest
+prior = 100
+storyline = false
+
+title = give_meet_marlo_chris_quest_3_name
+target =
+descr = give_meet_marlo_chris_quest_3_descr
+
+condlist_0 = {+give_meet_marlo_chris_quest_3_done} complete
+
+[give_marlo_pda]
+icon = ui_icons_cordon22
+prior = 80
+storyline = false
+
+title = give_marlo_pda_name
+descr = {=actor_has_item(itm_pda_mercenary_1)} bring_pda_marlo_3_descr, {+zaton_mercenary_1_dead} bring_pda_marlo_2_descr, bring_pda_marlo_1_descr
+target =
+
+condlist_0 = {+give_marlo_pda_done} complete
+on_init =
+on_complete = %=reward_item(light_repair_kit) =reward_item(toolkit_r5)%
+
+[give_intercept_courrier_1]
+icon = ui_icons_cordon22
+prior = 80
+storyline = false
+
+title = give_intercept_courrier_1_name
+descr = {=actor_has_item(itm_usb_mercenary_1)} bring_usb_marlo_2_descr, bring_usb_marlo_1_descr
+target =
+
+condlist_0 = {+give_intercept_courrier_1_done} complete
+on_init = %=clear_smart_terrain(jup_sim_2:true) =create_squad(zaton_mercenary_courrier_1_squad:jup_sim_2)%
+on_complete =
+
+[give_intercept_courrier_2]
+icon = ui_icons_cordon22
+prior = 80
+storyline = false
+
+title = give_intercept_courrier_2_name
+descr = {+zaton_mercenary_2_delivered} bring_usb_marlo_2_2_descr, bring_usb_marlo_2_1_descr
+target =
+
+condlist_0 = {+give_intercept_courrier_2_done} complete
+on_init = %=create_squad(zaton_mercenary_2_squad:zat_b40_smart_terrain)%
+on_complete = %=reward_money(7000)%
+
+
+
+[give_intercept_delivery_1]
+icon = ui_icons_cordon22
+prior = 80
+storyline = false
+
+title = give_intercept_delivery_1_name
+descr = {+jupiter_mercenary_1_squad_dead} give_intercept_delivery_1_2_descr, give_intercept_delivery_1_1_descr
+target =
+
+
+condlist_0 = {+give_intercept_delivery_1_done} complete
+on_init = %=spawn_mercenary_supplies_1 =spawn_mercenary_supplies_2 =spawn_mercenary_supplies_3 =spawn_mercenary_supplies_4 =spawn_mercenary_supplies_5 =spawn_mercenary_supplies_6 =clear_smart_terrain(jup_b202:true) =clear_smart_terrain(jup_b207:true) =create_squad(jupiter_stalker_assault_leader_squad:jup_a6) =create_squad(jupiter_stalker_assault_1_squad:jup_a6) =create_squad(jupiter_mercenary_1_squad:jup_b207)%
+on_complete = %=reward_money(7000)%
+
+---- Stage 2 ----
+
+[give_hostile_takeover_main]
+icon = ui_icons_cordon22
+prior = 80
+storyline = false
+
+title = give_hostile_takeover_main_name
+descr = give_hostile_takeover_main_descr
+target =
+
+condlist_0 = {+give_hostile_takeover_main_done} complete
+on_init =
+on_complete =
+
+[give_diplomatic_takeover_main]
+icon = ui_icons_cordon22
+prior = 80
+storyline = false
+
+title = give_diplomatic_takeover_main_name
+descr = give_diplomatic_takeover_main_descr
+target =
+
+condlist_0 = {+give_diplomatic_takeover_main_done} complete
+on_init =
+on_complete =
+
+
+;------------------------------------------------------------------------------------------
+; Fake Artifact QUESTLINES
+;------------------------------------------------------------------------------------------
+[give_sidorovich_fake_artifact_1]
+icon = ui_icons_cordon22
+prior = 80
+storyline = false
+
+title = give_sidorovich_fake_artifact_1_name
+descr = give_sidorovich_fake_artifact_1_descr
+target =
+
+condlist_0 = {+give_sidorovich_fake_artifact_done} complete
+on_init = %=create_squad(ecologist_sidorovich_squad:esc_smart_terrain_2_12)%
+on_complete = %=reward_money(25000)%
+
+[give_tambov_debt_1]
+icon = ui_icons_cordon22
+prior = 80
+storyline = false
+
+title = give_tambov_debt_1_name
+descr = give_tambov_debt_1_descr
+target =
+
+condlist_0 = {+bandit_debt_tambov_1_dead} complete
+on_init = %=clear_smart_terrain(val_smart_terrain_4_0:true) =create_squad(bandit_debt_tambov_1:val_smart_terrain_4_0)%
+on_complete = %=tambov_debt_1_info()%
+
+[give_tambov_debt_2]
+icon = ui_icons_cordon22
+prior = 80
+storyline = false
+
+title = give_tambov_debt_2_name
+descr = {+bandit_debt_tambov_2_dead} give_tambov_debt_2_2_descr, give_tambov_debt_2_1_descr
+target = {+bandit_debt_tambov_2_dead} ecologist_sidorovich
+
+condlist_0 = {+give_tambov_debt_2_done} complete
+on_init = %=clear_smart_terrain(val_smart_terrain_4_0:true) =create_squad(bandit_debt_tambov_2:val_smart_terrain_4_0)%
+on_complete =
+
+
+;------------------------------------------------------------------------------------------
+; What a night QUESTLINES
+;------------------------------------------------------------------------------------------
+
+[give_what_a_night]
+icon = ui_icons_cordon22
+prior = 80
+storyline = false
+
+title = give_what_a_night_name
+descr = give_what_a_night_descr
+target =
+
+condlist_0 = {+give_what_a_night_done} complete
+on_init = %=spawn_blackout_knife =spawn_blackout_shotgun%
+on_complete =
+
+[give_task_bezsonik_1]
+icon = ui_icons_cordon22
+prior = 80
+storyline = false
+
+title = give_task_bezsonik_1_name
+descr = {+pack_dogs_bezsonik_1_dead}give_task_bezsonik_1_2_descr, give_task_bezsonik_1_1_descr
+target =
+status_functor = give_task_bezsonik_1_status_f
+
+
+condlist_0 = {+nr_bezsonik_0_done} complete
+on_init =
+on_complete =
+;------------------------------------------------------------------------------------------
+; Rush to the North
+;------------------------------------------------------------------------------------------
+
+[give_task_fanat_rookie_training_1]
+icon = ui_iconsTotal_bar_crazy_veterans_quest
+prior = 20
+storyline = true
+
+title = give_task_fanat_rookie_training_1_name
+target =
+descr = {+nr_iliaz_3_done} give_task_fanat_rookie_training_1_7_descr, {+nr_ilyaz_artifact_back} give_task_fanat_rookie_training_1_6_descr, {+nr_iliaz_2_done} give_task_fanat_rookie_training_1_5_descr, {+nr_iliaz_arrived_1} give_task_fanat_rookie_training_1_4_descr, {+nr_iliaz_1_done} give_task_fanat_rookie_training_1_3_descr, {+nr_iliaz_0_done} give_task_fanat_rookie_training_1_2_descr, give_task_fanat_rookie_training_1_1_descr
+status_functor = give_task_fanat_rookie_training_1_status_f
+
+condlist_0 = {+nr_iliaz_4_done} complete
+condlist_1 = {+nr_iliaz_squad_dead} fail
+on_complete = %=inc_faction_goodwill_to_actor(stalker:100)%
+
+[give_task_escort_sorokin_1]
+icon = ui_iconsTotal_bar_crazy_veterans_quest
+prior = 55
+storyline = true
+
+title = give_task_escort_sorokin_1_name
+target =
+descr = {+sorokin_1_you_arrived} give_task_escort_sorokin_1_2_descr, give_task_escort_sorokin_1_1_descr
+status_functor = give_task_escort_sorokin_1_status_f
+
+on_init =
+condlist_0 = {+nr_sorokin_2_done} complete
+on_complete =
+condlist_1 = {+nr_sorokin_dead} fail
+
+[give_task_join_scamlok_1]
+icon = ui_iconsTotal_bar_crazy_veterans_quest
+prior = 140
+storyline = true
+
+title = give_task_join_scamlok_1_name
+target =
+descr = {+nr_fool_you_arrived} give_task_join_scamlok_1_2_descr, give_task_join_scamlok_1_1_descr
+status_functor = give_task_join_scamlok_1_status_f
+
+on_init =
+condlist_0 = {+give_task_join_scamlok_1_done} complete
+on_complete =
+
+ ;--------------------;
+ ; Strange Meat ;
+ ;--------------------;
+[give_task_nr_strange_meat]
+icon = ui_iconsTotal_bar_crazy_veterans_quest
+prior = 140
+storyline = true
+
+title = give_task_nr_strange_meat_name
+target =
+descr = give_task_nr_strange_meat_1_descr
+status_functor = give_task_nr_strange_meat_status_f
+
+on_init = %=spawn_yak_dead%
+condlist_0 = {+give_task_nr_strange_meat_done} complete
+on_complete =
+
+ ;--------------------;
+ ; Like Rats ina Trap ;
+ ;--------------------;
+
+
+[give_like_rats_trap_1]
+icon = ui_iconsTotal_bar_crazy_veterans_quest
+prior = 75
+storyline = false
+
+title = give_like_rats_trap_1_name
+target =
+descr = give_like_rats_trap_1_1_descr
+status_functor = give_like_rats_trap_1_status_f
+
+on_init = %=clear_smart_terrain(agr_u_bandits:true) =create_squad(bh_agr_u_bandits_leader_squad:agr_u_bandits) =create_squad(bh_agr_u_bandits_1_squad:agr_u_bandits)%
+condlist_0 = {+give_like_rats_trap_1_done} complete
+on_complete =
\ No newline at end of file
diff --git a/mods/[DEV] Brotherhood/gamedata/configs/misc/task/tm_brotherhood_ac.ltx b/mods/[DEV] Brotherhood/gamedata/configs/misc/task/tm_brotherhood_ac.ltx
new file mode 100644
index 00000000..fc663072
--- /dev/null
+++ b/mods/[DEV] Brotherhood/gamedata/configs/misc/task/tm_brotherhood_ac.ltx
@@ -0,0 +1,49 @@
+;==============================================================
+;
+; TASKS PROVIDED FOR STORIES FROM THE ZONE (Name might be subject to changes)
+; Anomaly 1.5.2.
+;
+; Made by: Catilina
+;
+;==============================================================
+;------------------------------------------------------------------------------------------
+; Atomic Crusader QUESTLINES
+;------------------------------------------------------------------------------------------
+
+[give_task_father_charon_quest_1]
+icon = ui_iconsTotal_bar_crazy_veterans_quest
+prior = 20
+storyline = true
+
+title = give_task_father_charon_quest_1_name
+target =
+descr = give_task_father_charon_quest_1_descr
+
+condlist_0 = {+give_task_father_charon_quest_1_done} complete
+
+[give_task_blue_winter_quest_1]
+icon = ui_iconsTotal_bar_crazy_veterans_quest
+prior = 20
+storyline = true
+
+title = give_task_blue_winter_quest_1_name
+target =
+descr = {+ac_blue_winter_3_done} give_task_blue_winter_quest_1_5_descr, {+ac_task_1_everyone_dead} give_task_blue_winter_quest_1_4_descr, {+ac_blue_winter_task_1_stage_3} give_task_blue_winter_quest_1_3_descr, {+ac_blue_winter_1_done} give_task_blue_winter_quest_1_2_descr, give_task_blue_winter_quest_1_1_descr
+status_functor = give_task_blue_winter_quest_1_status_f
+
+condlist_0 = {+give_task_blue_winter_quest_1_done} complete
+on_complete = %=reward_money(3500)%
+
+
+[give_task_blue_winter_quest_3]
+icon = ui_iconsTotal_bar_crazy_veterans_quest
+prior = 20
+storyline = true
+
+title = give_task_blue_winter_quest_3_name
+target =
+descr = give_task_blue_winter_quest_3_1_descr
+status_functor = give_task_blue_winter_quest_3_status_f
+
+condlist_0 = {+give_task_blue_winter_quest_3_done} complete
+on_complete = %=reward_money(3500)%
diff --git a/mods/[DEV] Brotherhood/gamedata/configs/scripts/agroprom/smart/agr_smart_terrain_1_3.ltx b/mods/[DEV] Brotherhood/gamedata/configs/scripts/agroprom/smart/agr_smart_terrain_1_3.ltx
new file mode 100644
index 00000000..7404f828
--- /dev/null
+++ b/mods/[DEV] Brotherhood/gamedata/configs/scripts/agroprom/smart/agr_smart_terrain_1_3.ltx
@@ -0,0 +1,27 @@
+[smart_terrain] ;agr_smart_terrain_1_3 ;;, , .
+squad_id = 2
+max_population = {+agr_snork_infestion} 2, 1
+respawn_params = respawn@agr_smart_terrain_1_3
+respawn_idle = 86400
+
+
+
+[respawn@agr_smart_terrain_1_3] ;-- Type: spawn_all_weak
+spawn_all_weak
+spawn@snork_inf
+
+
+
+[spawn_all_weak] ;-- Zombies/Normal mutants - Rates of groups:(3 zombies + 1 tushkano + 3 dogs + 2 cats + 3 fleshes/boars)
+spawn_squads = 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 ;--spawn-all-weak
+spawn_num = 1
+
+[spawn@snork_inf]
+spawn_squads = pack_snorks_smart_1
+spawn_num = {+agr_snork_infestion} 1, 0
+
+
+[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/[DEV] Brotherhood/gamedata/configs/scripts/agroprom/smart/agr_smart_terrain_2_2.ltx b/mods/[DEV] Brotherhood/gamedata/configs/scripts/agroprom/smart/agr_smart_terrain_2_2.ltx
new file mode 100644
index 00000000..b4f5003d
--- /dev/null
+++ b/mods/[DEV] Brotherhood/gamedata/configs/scripts/agroprom/smart/agr_smart_terrain_2_2.ltx
@@ -0,0 +1,21 @@
+[smart_terrain]
+squad_id = 6
+max_population = {+agr_snork_infestion} 4, 3
+respawn_params = respawn@agr_smart_terrain_2_2
+respawn_idle = 86400
+
+
+
+[respawn@agr_smart_terrain_2_2] ;-- Type: spawn_mutants_rare
+spawn_mutants_rare
+spawn@snork_inf
+
+
+
+[spawn_mutants_rare]
+spawn_squads = simulation_fracture, simulation_lurker, simulation_snork, simulation_bloodsucker, simulation_psysucker ;--spawn-mutants-rare
+spawn_num = 1
+
+[spawn@snork_inf]
+spawn_squads = pack_snorks_smart_1
+spawn_num = {+agr_snork_infestion} 1, 0
\ No newline at end of file
diff --git a/mods/[DEV] Brotherhood/gamedata/configs/scripts/agroprom/smart/agr_smart_terrain_4_4.ltx b/mods/[DEV] Brotherhood/gamedata/configs/scripts/agroprom/smart/agr_smart_terrain_4_4.ltx
new file mode 100644
index 00000000..6a0f684e
--- /dev/null
+++ b/mods/[DEV] Brotherhood/gamedata/configs/scripts/agroprom/smart/agr_smart_terrain_4_4.ltx
@@ -0,0 +1,37 @@
+[smart_terrain]; agr_smart_terrain_4_4
+squad_id = 7
+max_population = 2
+respawn_params = respawn@agr_smart_terrain_4_4
+respawn_idle = 86400
+
+
+
+[respawn@agr_smart_terrain_4_4]
+spawn_stalker1
+
+
+
+[spawn_stalker1]
+spawn_squads = ecolog_sim_squad_advanced, duty_sim_squad_advanced
+spawn_num = {~50}1, 0
+
+
+
+[exclusive]
+;----StfZ
+sarpedon_logic = brotherhood\agroprom_logic.ltx
+bellerophon_logic_2 = garbage\brotherhood_logic.ltx
+alyosha_shyogolov_2 = brotherhood\agroprom_logic.ltx
+vybegallo = brotherhood\agroprom_logic.ltx
+bh_rat_guards_1 = brotherhood\agroprom_logic.ltx
+bh_rat_guards_2 = brotherhood\agroprom_logic.ltx
+bh_rat_guards_3 = brotherhood\agroprom_logic.ltx
+bh_rat_guards_4 = brotherhood\agroprom_logic.ltx
+bh_rat_guards_5 = brotherhood\agroprom_logic.ltx
+bh_rat_guards_6 = brotherhood\agroprom_logic.ltx
+;----StfZ
+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
\ No newline at end of file
diff --git a/mods/[DEV] Brotherhood/gamedata/configs/scripts/agroprom/smart/agr_smart_terrain_4_6.ltx b/mods/[DEV] Brotherhood/gamedata/configs/scripts/agroprom/smart/agr_smart_terrain_4_6.ltx
new file mode 100644
index 00000000..fb40c334
--- /dev/null
+++ b/mods/[DEV] Brotherhood/gamedata/configs/scripts/agroprom/smart/agr_smart_terrain_4_6.ltx
@@ -0,0 +1,31 @@
+[smart_terrain]
+squad_id = 11
+max_population = {+agr_snork_infestion} 4, 3
+respawn_params = respawn@agr_smart_terrain_4_6
+respawn_idle = 86400
+
+
+
+[respawn@agr_smart_terrain_4_6] ;-- Type: spawn_all_weak + spawn_all_normal
+spawn_all_weak
+spawn_all_normal
+spawn@snork_inf
+
+
+
+[spawn_all_weak] ;-- Zombies/Normal mutants - Rates of groups:(3 zombies + 1 tushkano + 3 dogs + 2 cats + 3 fleshes/boars)
+spawn_squads = 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 ;--spawn-all-weak
+spawn_num = 2
+
+[spawn_all_normal] ;-- Zombies/Normal/Rare mutants - Rates of groups: [10:5](3 zombies + 3 dogs + 1 cats + 3 fleshes/boars + 1 + 1 + 1 + 1 + 1)
+spawn_squads = 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, simulation_fracture, simulation_lurker, simulation_snork, simulation_bloodsucker, simulation_psysucker ;--spawn-all-normal
+spawn_num = 1
+
+[spawn@snork_inf]
+spawn_squads = pack_snorks_smart_3_weak
+spawn_num = {+agr_snork_infestion} 1, 0
+
+[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
\ No newline at end of file
diff --git a/mods/[DEV] Brotherhood/gamedata/configs/scripts/agroprom/smart/agr_smart_terrain_5_2.ltx b/mods/[DEV] Brotherhood/gamedata/configs/scripts/agroprom/smart/agr_smart_terrain_5_2.ltx
new file mode 100644
index 00000000..5aa93cf3
--- /dev/null
+++ b/mods/[DEV] Brotherhood/gamedata/configs/scripts/agroprom/smart/agr_smart_terrain_5_2.ltx
@@ -0,0 +1,25 @@
+[smart_terrain] ;agr_smart_terrain_5_2 ;;- -
+squad_id = 12
+max_population = {+agr_snork_infestion} 3, 2
+respawn_params = respawn@agr_smart_terrain_5_2
+respawn_idle = 86400
+
+
+
+[respawn@agr_smart_terrain_5_2] ;-- Type: c_2
+spawn_all_hard_c_2_1
+spawn_all_worst_c_2_2
+spawn@snork_inf
+
+
+[spawn_all_hard_c_2_1]
+spawn_squads = simulation_fracture, simulation_fracture, simulation_lurker, simulation_lurker_1_2, simulation_snork_2_3, simulation_snork_2_3, simulation_bloodsucker, simulation_bloodsucker_1_2, simulation_psysucker, simulation_chimera, simulation_psy_dog, simulation_poltergeist_tele, simulation_karlik, simulation_burer, simulation_controller ;--spawn-all-hard
+spawn_num = {!actor_week_in_zone(2)} 1, {=actor_week_in_zone(2)} 0
+
+[spawn_all_worst_c_2_2]
+spawn_squads = simulation_chimera, simulation_gigant, simulation_psy_dog_squad, simulation_poltergeist, simulation_karlik, simulation_burer, simulation_controller ;--spawn-all-worst
+spawn_num = {=actor_week_in_zone(2)} 1, {!actor_week_in_zone(2)} 0
+
+[spawn@snork_inf]
+spawn_squads = pack_snorks_smart_2_strong
+spawn_num = {+agr_snork_infestion} 1, 0
\ No newline at end of file
diff --git a/mods/[DEV] Brotherhood/gamedata/configs/scripts/agroprom/smart/agr_smart_terrain_5_4.ltx b/mods/[DEV] Brotherhood/gamedata/configs/scripts/agroprom/smart/agr_smart_terrain_5_4.ltx
new file mode 100644
index 00000000..5c6e0695
--- /dev/null
+++ b/mods/[DEV] Brotherhood/gamedata/configs/scripts/agroprom/smart/agr_smart_terrain_5_4.ltx
@@ -0,0 +1,24 @@
+[smart_terrain]
+squad_id = 17
+max_population = {+agr_snork_infestion} 2, 1
+respawn_params = respawn@agr_smart_terrain_5_4
+respawn_idle = 172800
+
+
+
+[respawn@agr_smart_terrain_5_4]
+spawn_mutants_psy
+spawn@snork_inf
+
+[spawn_mutants_psy]
+spawn_squads = simulation_psy_dog, simulation_poltergeist_tele, simulation_karlik, simulation_burer, simulation_controller ;--spawn-mutants-psy
+spawn_num = 1
+
+[spawn@snork_inf]
+spawn_squads = pack_snorks_smart_2_strong
+spawn_num = {+agr_snork_infestion} 1, 0
+
+[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/[DEV] Brotherhood/gamedata/configs/scripts/agroprom/smart/agr_smart_terrain_5_7.ltx b/mods/[DEV] Brotherhood/gamedata/configs/scripts/agroprom/smart/agr_smart_terrain_5_7.ltx
new file mode 100644
index 00000000..6562a196
--- /dev/null
+++ b/mods/[DEV] Brotherhood/gamedata/configs/scripts/agroprom/smart/agr_smart_terrain_5_7.ltx
@@ -0,0 +1,25 @@
+[smart_terrain]
+squad_id = 14
+max_population = {+agr_snork_infestion} 3, 2
+respawn_params = respawn@agr_smart_terrain_5_7
+respawn_idle = 86400
+
+
+
+[respawn@agr_smart_terrain_5_7] ;-- Type: spawn_all_weak + spawn_all_normal
+spawn_all_weak
+spawn_all_normal
+spawn@snork_inf
+
+
+[spawn_all_weak] ;-- Zombies/Normal mutants - Rates of groups:(3 zombies + 1 tushkano + 3 dogs + 2 cats + 3 fleshes/boars)
+spawn_squads = 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 ;--spawn-all-weak
+spawn_num = 1
+
+[spawn_all_normal] ;-- Zombies/Normal/Rare mutants - Rates of groups: [10:5](3 zombies + 3 dogs + 1 cats + 3 fleshes/boars + 1 + 1 + 1 + 1 + 1)
+spawn_squads = 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, simulation_fracture, simulation_lurker, simulation_snork, simulation_bloodsucker, simulation_psysucker ;--spawn-all-normal
+spawn_num = 1
+
+[spawn@snork_inf]
+spawn_squads = pack_snorks_smart_1
+spawn_num = {+agr_snork_infestion} 1, 0
\ No newline at end of file
diff --git a/mods/[DEV] Brotherhood/gamedata/configs/scripts/agroprom/smart/agr_smart_terrain_6_4.ltx b/mods/[DEV] Brotherhood/gamedata/configs/scripts/agroprom/smart/agr_smart_terrain_6_4.ltx
new file mode 100644
index 00000000..49fd836a
--- /dev/null
+++ b/mods/[DEV] Brotherhood/gamedata/configs/scripts/agroprom/smart/agr_smart_terrain_6_4.ltx
@@ -0,0 +1,26 @@
+[smart_terrain] ;agr_smart_terrain_6_4
+squad_id = 15
+max_population = 2
+respawn_params = respawn@agr_smart_terrain_6_4
+respawn_idle = 86400
+
+
+
+[respawn@agr_smart_terrain_6_4]
+spawn_all_normal
+
+
+
+[spawn_all_normal] ;-- Zombies/Normal/Rare mutants - Rates of groups: [10:5](3 zombies + 3 dogs + 1 cats + 3 fleshes/boars + 1 + 1 + 1 + 1 + 1)
+spawn_squads = 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, simulation_fracture, simulation_lurker, simulation_snork, simulation_bloodsucker, simulation_psysucker ;--spawn-all-normal
+spawn_num = 1
+
+
+
+[exclusive]
+alyosha_shyogolov = brotherhood\agroprom_logic.ltx
+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/[DEV] Brotherhood/gamedata/configs/scripts/agroprom/smart/agr_smart_terrain_7_5.ltx b/mods/[DEV] Brotherhood/gamedata/configs/scripts/agroprom/smart/agr_smart_terrain_7_5.ltx
new file mode 100644
index 00000000..599fa943
--- /dev/null
+++ b/mods/[DEV] Brotherhood/gamedata/configs/scripts/agroprom/smart/agr_smart_terrain_7_5.ltx
@@ -0,0 +1,20 @@
+[smart_terrain] ;agr_smart_terrain_7_5 ;; .
+squad_id = 16
+max_population = {+agr_snork_infestion} 3, 2
+respawn_params = respawn@agr_smart_terrain_7_5
+respawn_idle = 86400
+
+
+
+[respawn@agr_smart_terrain_7_5] ;-- Type: spawn_all_normal
+spawn_all_normal
+spawn@snork_inf
+
+
+[spawn_all_normal] ;-- Zombies/Normal/Rare mutants - Rates of groups: [10:5](3 zombies + 3 dogs + 1 cats + 3 fleshes/boars + 1 + 1 + 1 + 1 + 1)
+spawn_squads = 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, simulation_fracture, simulation_lurker, simulation_snork, simulation_bloodsucker, simulation_psysucker ;--spawn-all-normal
+spawn_num = 1
+
+[spawn@snork_inf]
+spawn_squads = pack_snorks_smart_2_strong
+spawn_num = {+agr_snork_infestion} 1, 0
\ No newline at end of file
diff --git a/mods/[DEV] Brotherhood/gamedata/configs/scripts/agroprom_underground/smart/agr_u_bandits.ltx b/mods/[DEV] Brotherhood/gamedata/configs/scripts/agroprom_underground/smart/agr_u_bandits.ltx
new file mode 100644
index 00000000..69d08685
--- /dev/null
+++ b/mods/[DEV] Brotherhood/gamedata/configs/scripts/agroprom_underground/smart/agr_u_bandits.ltx
@@ -0,0 +1,20 @@
+[smart_terrain]
+squad_id = 1
+max_population = 1
+
+[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
+
+
+bh_rat_trap_1 = brotherhood\agroprom_underground_logic.ltx
+bh_rat_trap_2 = brotherhood\agroprom_underground_logic.ltx
+bh_rat_trap_3 = brotherhood\agroprom_underground_logic.ltx
+bh_rat_trap_4 = brotherhood\agroprom_underground_logic.ltx
+bh_rat_trap_5 = brotherhood\agroprom_underground_logic.ltx
+bh_rat_trap_6 = brotherhood\agroprom_underground_logic.ltx
\ No newline at end of file
diff --git a/mods/[DEV] Brotherhood/gamedata/configs/scripts/agroprom_underground/smart/agr_u_soldiers.ltx b/mods/[DEV] Brotherhood/gamedata/configs/scripts/agroprom_underground/smart/agr_u_soldiers.ltx
new file mode 100644
index 00000000..732aad6e
--- /dev/null
+++ b/mods/[DEV] Brotherhood/gamedata/configs/scripts/agroprom_underground/smart/agr_u_soldiers.ltx
@@ -0,0 +1,32 @@
+[smart_terrain]
+squad_id = 5
+max_population = 2
+respawn_params = respawn@agr_u_soldiers
+respawn_idle = 60000
+respawn_radius = 300
+
+[respawn@agr_u_soldiers]
+spawn_controller
+
+[spawn_controller]
+spawn_squads = simulation_controller, simulation_psysucker, simulation_karlik, simulation_bur_5rat_day, simulation_contr_5zomb_weak
+spawn_num = {+agru_add_reward_2} 1, 0
+
+[exclusive]
+agr_u_soldiers_controller = agroprom_underground\agr_u_soldiers_controller.ltx
+agr_u_soldiers_squad_1 = agroprom_underground\agr_u_soldiers_logic.ltx
+agr_u_soldiers_squad_2 = agroprom_underground\agr_u_soldiers_logic.ltx
+agr_u_soldiers_squad_3 = agroprom_underground\agr_u_soldiers_logic.ltx
+agr_u_soldiers_squad_4 = agroprom_underground\agr_u_soldiers_logic.ltx
+agr_u_soldiers_squad_5 = agroprom_underground\agr_u_soldiers_logic.ltx
+agr_u_soldiers_squad_6 = agroprom_underground\agr_u_soldiers_logic.ltx
+agr_u_soldiers_squad_7 = agroprom_underground\agr_u_soldiers_logic.ltx
+agr_u_soldiers_squad_8 = agroprom_underground\agr_u_soldiers_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
+
+;----StfZ
+vybegallo_2 = agroprom\vybegallo.ltx
+;----StfZ
diff --git a/mods/[DEV] Brotherhood/gamedata/configs/scripts/bar/bar_visitors_radio.ltx b/mods/[DEV] Brotherhood/gamedata/configs/scripts/bar/bar_visitors_radio.ltx
new file mode 100644
index 00000000..f6ad0145
--- /dev/null
+++ b/mods/[DEV] Brotherhood/gamedata/configs/scripts/bar/bar_visitors_radio.ltx
@@ -0,0 +1,9 @@
+[logic]
+active = ph_sound
+
+[ph_sound]
+snd = {+sektor_gaza_kashey_done} bar_visitors_radio_2, bar_visitors_radio
+looped = false
+min_idle = 300
+max_idle = 500
+random = true
\ No newline at end of file
diff --git a/mods/[DEV] Brotherhood/gamedata/configs/scripts/bar/dolg_artyom_bloodsucker.ltx b/mods/[DEV] Brotherhood/gamedata/configs/scripts/bar/dolg_artyom_bloodsucker.ltx
new file mode 100644
index 00000000..2488dfbc
--- /dev/null
+++ b/mods/[DEV] Brotherhood/gamedata/configs/scripts/bar/dolg_artyom_bloodsucker.ltx
@@ -0,0 +1,17 @@
+[logic@dolg_artyom_bloodsucker]
+ suitable = {=check_npc_name(dolg_artyom_bloodsucker)} true
+ prior = 500
+ active = beh@dolg_artyom_bloodsucker_job
+
+[beh@dolg_artyom_bloodsucker_job]
+ gather_items_enabled = false
+ behaviour_state = beh_move
+
+ target = waypoint
+ 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
+
+ path_end = loop
+ pt1 = 100000,wounded_heavy | pos:212.5617980957,0.49726897478104,103.19502258301 look:212.55772590684,0.49726897478104,102.27910810709
+
diff --git a/mods/[DEV] Brotherhood/gamedata/configs/scripts/bar/smart/bar_dolg_general.ltx b/mods/[DEV] Brotherhood/gamedata/configs/scripts/bar/smart/bar_dolg_general.ltx
new file mode 100644
index 00000000..9023c0b1
--- /dev/null
+++ b/mods/[DEV] Brotherhood/gamedata/configs/scripts/bar/smart/bar_dolg_general.ltx
@@ -0,0 +1,33 @@
+[smart_terrain]
+squad_id = 2
+max_population = 4
+respawn_params = respawn@bar_dolg_general
+respawn_idle = 60000
+
+[respawn@bar_dolg_general]
+spawn_duty@advanced
+spawn_duty@veteran
+
+[spawn_duty@advanced]
+spawn_squads = duty_sim_squad_advanced, duty_sim_squad_advanced, duty_sim_squad_novice
+spawn_num = 2
+
+[spawn_duty@veteran]
+spawn_squads = duty_sim_squad_veteran
+spawn_num = 1
+
+[exclusive]
+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
+bar_dolg_general_zoneguard = bar\bar_dolg_general_logic.ltx
+bar_dolg_general_petrenko = bar\bar_dolg_general_logic.ltx
+;mlr
+bar_dolg_medic = bar\bar_dolg_medic_logic.ltx
+;mlr
+
+;SftZ
+dolg_artyom_bloodsucker = bar\dolg_artyom_bloodsucker.ltx
+nr_scamlok_1 = brotherhood\nr_bar_logic.ltx
+;SftZ
\ No newline at end of file
diff --git a/mods/[DEV] Brotherhood/gamedata/configs/scripts/bar/smart/bar_visitors.ltx b/mods/[DEV] Brotherhood/gamedata/configs/scripts/bar/smart/bar_visitors.ltx
new file mode 100644
index 00000000..60ce64fb
--- /dev/null
+++ b/mods/[DEV] Brotherhood/gamedata/configs/scripts/bar/smart/bar_visitors.ltx
@@ -0,0 +1,92 @@
+[smart_terrain]
+squad_id = 3
+max_population = 10
+min_population = 7
+respawn_params = respawn@bar_visitors
+respawn_idle = 86400
+
+[respawn@bar_visitors]
+spawn_stalker@advanced
+spawn_ecolog_base
+spawn_csky_merc_base
+
+[spawn_stalker@advanced]
+spawn_squads = stalker_sim_squad_veteran, stalker_sim_squad_advanced, stalker_sim_squad_advanced, stalker_sim_squad_advanced_3_4
+spawn_num = 2
+
+[spawn_ecolog_base]
+spawn_squads = ecolog_sim_squad_veteran, ecolog_sim_squad_advanced_1e_2es
+spawn_num = 1
+
+[spawn_csky_merc_base]
+spawn_squads = csky_sim_squad_advanced, csky_sim_squad_veteran
+spawn_num = 1
+
+
+
+
+[exclusive]
+bar_informator_mlr = bar\bar_visitors_other_logic.ltx
+guid_bar_stalker_navigator = bar\bar_visitors_other_logic.ltx
+bar_barman = bar\bar_barman.ltx
+bar_visitors_cardan_tech = bar\bar_visitors_cardan_logic.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
+
+bar_visitors_beh_trade_job_1 = bar\bar_visitors_logic.ltx
+bar_visitors_beh_tech_job_1 = bar\bar_visitors_cardan_logic.ltx
+
+
+---- brotherhood ----
+
+nr_sorokin = brotherhood\nr_bar_logic.ltx
+
+nr_sasha_baltunov = brotherhood\nr_bar_logic.ltx
\ No newline at end of file
diff --git a/mods/[DEV] Brotherhood/gamedata/configs/scripts/brotherhood/ac_pri_a25_logic.ltx b/mods/[DEV] Brotherhood/gamedata/configs/scripts/brotherhood/ac_pri_a25_logic.ltx
new file mode 100644
index 00000000..6f4dfd4f
--- /dev/null
+++ b/mods/[DEV] Brotherhood/gamedata/configs/scripts/brotherhood/ac_pri_a25_logic.ltx
@@ -0,0 +1,120 @@
+[logic@ac_melchior]
+suitable = {=check_npc_name(ac_melchior)} true
+active = beh@ac_melchior_1
+prior = 500
+
+[logic@ac_caspar]
+suitable = {=check_npc_name(ac_caspar)} true
+active = beh@ac_caspar_1
+prior = 500
+
+[logic@ac_balthazar]
+suitable = {=check_npc_name(ac_balthazar)} true
+active = beh@ac_balthazar_1
+prior = 500
+
+[logic@ac_blue_winter]
+suitable = {=check_npc_name(ac_blue_winter)} true
+active = beh@ac_blue_winter_1
+prior = 500
+
+
+
+[beh@nr_walk_base]
+ behaviour_state = beh_move
+ target = waypoint
+ path_end = loop
+
+[beh@ac_caspar_1]:beh@nr_walk_base
+ pt1 = 88860000,sit_ass | pos:-53.156787872314,4.2060189247131,-93.54833984375 look:-52.527411818504,4.2060189247131,-92.881023287773
+
+[beh@ac_melchior_1]:beh@nr_walk_base
+ pt1 = 88860000,sit_ass | pos:-46.812149047852,4.2095527648926,-91.175514221191 look:-47.609451711178,4.2095527648926,-91.699980020523
+
+[beh@ac_blue_winter_1]:beh@nr_walk_base
+ pt1 = 88860000,idle | pos:-45.612403869629,4.2090244293213,-96.229629516602 look:-46.410343647003,4.2090244293213,-95.707116961479
+
+[beh@ac_balthazar_1]:beh@nr_walk_base
+ pt1 = 88860000,guard | pos:-47.417106628418,4.2109375,-96.689498901367 look:-47.38382839784,4.2109375,-95.768560349941
+
+
+--- Guards etc
+[ac_monolith_guard_1]
+suitable = {=npc_community(monolith)} true
+active = beh@ac_monolith_guard_1
+prior = 65
+
+[ac_monolith_guard_2]
+suitable = {=npc_community(monolith)} true
+active = beh@ac_monolith_guard_2
+prior = 60
+
+[ac_monolith_guard_3]
+suitable = {=npc_community(monolith)} true
+active = beh@ac_monolith_guard_3
+prior = 60
+
+[ac_monolith_guard_4]
+suitable = {=npc_community(monolith)} true
+active = beh@ac_monolith_guard_4
+prior = 60
+
+[ac_monolith_guard_5]
+suitable = {=npc_community(monolith)} true
+active = beh@ac_monolith_guard_5
+prior = 60
+
+[ac_monolith_guard_6]
+suitable = {=npc_community(monolith)} true
+active = beh@ac_monolith_guard_6
+prior = 60
+
+[ac_monolith_guard_7]
+suitable = {=npc_community(monolith)} true
+active = beh@ac_monolith_guard_7
+prior = 60
+
+[ac_monolith_guard_8]
+suitable = {=npc_community(monolith)} true
+active = beh@ac_monolith_guard_8
+prior = 60
+
+[ac_monolith_guard_9]
+suitable = {=npc_community(monolith)} true
+active = beh@ac_monolith_guard_9
+prior = 60
+
+[ac_monolith_guard_10]
+suitable = {=npc_community(monolith)} true
+active = beh@ac_monolith_guard_10
+prior = 60
+
+[beh@ac_monolith_guard_1]:beh@nr_walk_base
+ pt1 = 88860000,guard | pos:-55.124950408936,-0.31158009171486,-86.411651611328 look:-54.401997089386,-0.31158009171486,-85.725204706192
+
+[beh@ac_monolith_guard_2]:beh@nr_walk_base
+ pt1 = 88860000,guard | pos:-51.308391571045,4.2109022140503,-107.42497253418 look:-51.12967929244,4.2109022140503,-108.40771448612
+
+[beh@ac_monolith_guard_3]:beh@nr_walk_base
+ pt1 = 88860000,guard | pos:-76.006576538086,4.2108345031738,-106.34118652344 look:-75.942655794322,4.2108345031738,-107.32756221294
+
+[beh@ac_monolith_guard_4]:beh@nr_walk_base
+ pt1 = 88860000,guard | pos:-80.548179626465,4.2099604606628,-106.4580078125 look:-80.798495650291,4.2099604606628,-107.41092896461
+
+[beh@ac_monolith_guard_5]:beh@nr_walk_base
+ pt1 = 88860000,guard | pos:-108.78719329834,4.2111105918884,-106.69918060303 look:-109.07465699315,4.2111105918884,-107.64432412386
+
+[beh@ac_monolith_guard_6]:beh@nr_walk_base
+ pt1 = 88860000,sit_ass | pos:-105.23497009277,4.2096700668335,-98.749618530273 look:-105.2419191869,4.2096700668335,-99.705528020859
+
+[beh@ac_monolith_guard_7]:beh@nr_walk_base
+ pt1 = 88860000,sit_ass | pos:-111.19422149658,4.211480140686,-99.175140380859 look:-110.43022841215,4.211480140686,-99.808866024017
+
+[beh@ac_monolith_guard_8]:beh@nr_walk_base
+ pt1 = 88860000,guard | pos:-106.43014526367,4.2230815887451,-91.983108520508 look:-106.26966485381,4.2230815887451,-91.008910417557
+
+[beh@ac_monolith_guard_9]:beh@nr_walk_base
+ pt1 = 88860000,guard | pos:-82.816474914551,0.84084087610245,-91.571136474609 look:-82.709020681679,0.84084087610245,-90.580922603607
+
+[beh@ac_monolith_guard_10]:beh@nr_walk_base
+ pt1 = 88860000,guard | pos:-51.532276153564,4.2088332176208,-90.798927307129 look:-51.169595360756,4.2088332176208,-89.876153707504
\ No newline at end of file
diff --git a/mods/[DEV] Brotherhood/gamedata/configs/scripts/brotherhood/ac_pri_monolith_smart_logic.ltx b/mods/[DEV] Brotherhood/gamedata/configs/scripts/brotherhood/ac_pri_monolith_smart_logic.ltx
new file mode 100644
index 00000000..458c7fed
--- /dev/null
+++ b/mods/[DEV] Brotherhood/gamedata/configs/scripts/brotherhood/ac_pri_monolith_smart_logic.ltx
@@ -0,0 +1,35 @@
+[logic@ac_pri_medic_monolith]
+ suitable = {=check_npc_name(ac_pri_medic_monolith)} true
+ prior = 500
+ active = beh@ac_pri_medic_monolith_job
+
+[beh@ac_pri_medic_monolith_job]
+ behaviour_state = beh_move
+ combat_ignore_cond = true
+ combat_ignore_keep_when_attacked = true
+ invulnerable = true
+ target = waypoint
+ path_end = loop
+ pt1 = 88860000,idle | pos:-18.209903717041,0.094873189926147,205.48162841797 look:-19.19679582119,0.094873189926147,205.37820041925
+
+[logic@ac_blue_winter]
+ suitable = {=check_npc_name(ac_blue_winter)} true
+ prior = 500
+ active = beh@ac_blue_winter_job
+
+[beh@ac_blue_winter_job]
+ behaviour_state = beh_move
+ target = waypoint
+ path_end = loop
+ pt1 = 88860000,idle | pos:-22.748683929443,0.10391688346863,208.33767700195 look:-22.7534353761,0.10391688346863,207.34607470036
+
+[logic@ac_balthazar]
+ suitable = {=check_npc_name(ac_balthazar)} true
+ prior = 500
+ active = beh@ac_balthazar_job
+
+[beh@ac_balthazar_job]
+ behaviour_state = beh_move
+ target = waypoint
+ path_end = loop
+ pt1 = 88860000,idle | pos:-24.652282714844,0.098858118057251,208.2882232666 look:-24.643940897658,0.098858118057251,207.29735052586
diff --git a/mods/[DEV] Brotherhood/gamedata/configs/scripts/brotherhood/ac_pri_task_3_logic.ltx b/mods/[DEV] Brotherhood/gamedata/configs/scripts/brotherhood/ac_pri_task_3_logic.ltx
new file mode 100644
index 00000000..569bd725
--- /dev/null
+++ b/mods/[DEV] Brotherhood/gamedata/configs/scripts/brotherhood/ac_pri_task_3_logic.ltx
@@ -0,0 +1,137 @@
+[logic@ac_melchior]
+suitable = {=check_npc_name(ac_melchior)} true
+active = beh@ac_melchior_1
+prior = 500
+
+[logic@ac_caspar]
+suitable = {=check_npc_name(ac_caspar)} true
+active = beh@ac_caspar_1
+prior = 500
+
+[logic@ac_balthazar]
+suitable = {=check_npc_name(ac_balthazar)} true
+active = beh@ac_balthazar_1
+prior = 500
+
+[logic@ac_blue_winter]
+suitable = {=check_npc_name(ac_blue_winter)} true
+active = beh@ac_blue_winter_1
+prior = 500
+
+
+
+[logic@ac_stalker_squad_1]
+suitable = {=target_squad_name(ac_task_3_stalker_squad)} true
+active = beh@ac_task_3_stalker_squad_1_1
+prior = 500
+
+[logic@ac_stalker_squad_2]
+suitable = {=target_squad_name(ac_task_3_stalker_squad)} true
+active = beh@ac_task_3_stalker_squad_2_1
+prior = 500
+
+[logic@ac_stalker_squad_3]
+suitable = {=target_squad_name(ac_task_3_stalker_squad)} true
+active = beh@ac_task_3_stalker_squad_3_1
+prior = 500
+
+[logic@ac_stalker_squad_4]
+suitable = {=target_squad_name(ac_task_3_stalker_squad)} true
+active = beh@ac_task_3_stalker_squad_4_1
+prior = 500
+
+
+
+[beh@ac_stalker_base]
+ behaviour_state = beh_move
+ target = waypoint
+ walk_dist = 100
+ jog_dist = 220
+
+ walk_anim = walk
+ jog_anim = walk
+ run_anim = walk
+ path_end = loop
+
+[beh@ac_stalker_base_2]
+ behaviour_state = beh_move
+ target = waypoint
+ path_end = loop
+
+[beh@ac_caspar_1]:beh@ac_stalker_base_2
+ on_info = {+ac_task_3_convo} beh@ac_caspar_2
+ pt1 = 88860000,guard | pos:-131.57495117188,-0.50764739513397,-199.29406738281 look:-131.51331664249,-0.50764739513397,-198.3104403615
+
+[beh@ac_melchior_1]:beh@ac_stalker_base_2
+ on_info = {+ac_task_3_convo} beh@ac_melchior_2
+ pt1 = 88860000,guard | pos:-138.35227966309,-0.25803527235985,-211.60403442383 look:-139.25367939472,-0.25803527235985,-212.01028260589
+
+[beh@ac_blue_winter_1]:beh@ac_stalker_base_2
+ on_info = {+ac_task_3_convo} beh@ac_blue_winter_2
+ pt1 = 88860000,guard | pos:-139.3289642334,-0.42204529047012,-204.6999206543 look:-138.76627629995,-0.42204529047012,-203.93811285496
+
+[beh@ac_balthazar_1]:beh@ac_stalker_base_2
+ on_info = {+ac_task_3_convo} beh@ac_balthazar_2
+ pt1 = 88860000,guard | pos:-135.96295166016,-0.37012958526611,-198.35459899902 look:-136.93641990423,-0.37012958526611,-198.15424960852
+
+[beh@ac_caspar_2]:beh@ac_stalker_base_2
+ on_info = {+ac_task_3_checkpoint} beh@ac_task_3_stalker_squad_1_3
+ pt1 = 88860000,guard | pos:-131.57495117188,-0.50764739513397,-199.29406738281 look:-131.51331664249,-0.50764739513397,-198.3104403615
+
+[beh@ac_melchior_2]:beh@ac_stalker_base_2
+ on_info = {+ac_task_3_checkpoint} beh@ac_task_3_stalker_squad_2_3
+ pt1 = 88860000,guard | pos:-138.35227966309,-0.25803527235985,-211.60403442383 look:-139.25367939472,-0.25803527235985,-212.01028260589
+
+[beh@ac_blue_winter_2]:beh@ac_stalker_base_2
+ on_info = {+ac_task_3_checkpoint} beh@ac_task_3_stalker_squad_3_3
+ pt1 = 88860000,guard | pos:-139.3289642334,-0.42204529047012,-204.6999206543 look:-138.76627629995,-0.42204529047012,-203.93811285496
+
+[beh@ac_balthazar_2]:beh@ac_stalker_base_2
+ on_info = {+ac_task_3_checkpoint} beh@ac_task_3_stalker_squad_4_3
+ pt1 = 88860000,guard | pos:-135.96295166016,-0.37012958526611,-198.35459899902 look:-136.93641990423,-0.37012958526611,-198.15424960852
+
+
+
+[beh@ac_task_3_stalker_squad_1_1]:beh@ac_stalker_base
+ on_info = {+ac_task_3_pos_2} beh@ac_task_3_stalker_squad_1_2
+ pt1 = 100000,guard | pos:49.821727752686,-0.49124795198441,-177.17810058594 look:48.922289013863,-0.49124795198441,-176.75973108411
+
+[beh@ac_task_3_stalker_squad_2_1]:beh@ac_stalker_base
+ on_info = {+ac_task_3_pos_2} beh@ac_task_3_stalker_squad_2_2
+ pt1 = 100000,guard | pos:49.821727752686,-0.49124795198441,-177.17810058594 look:48.922289013863,-0.49124795198441,-176.75973108411
+
+[beh@ac_task_3_stalker_squad_3_1]:beh@ac_stalker_base
+ on_info = {+ac_task_3_pos_2} beh@ac_task_3_stalker_squad_3_2
+ pt1 = 100000,guard | pos:49.821727752686,-0.49124795198441,-177.17810058594 look:48.922289013863,-0.49124795198441,-176.75973108411
+
+[beh@ac_task_3_stalker_squad_4_1]:beh@ac_stalker_base
+ on_info = {+ac_task_3_pos_2} beh@ac_task_3_stalker_squad_4_2
+ pt1 = 100000,guard | pos:49.821727752686,-0.49124795198441,-177.17810058594 look:48.922289013863,-0.49124795198441,-176.75973108411
+
+[beh@ac_task_3_stalker_squad_1_2]:beh@ac_stalker_base
+ on_info = {+ac_task_3_pos_3} beh@ac_task_3_stalker_squad_1_3
+ pt1 = 100000,guard | pos:-7.3301563262939,-0.17000591754913,-182.1794128418 look:-8.0076661705971,-0.17000591754913,-182.91228997707
+
+[beh@ac_task_3_stalker_squad_2_2]:beh@ac_stalker_base
+ on_info = {+ac_task_3_pos_3} beh@ac_task_3_stalker_squad_3_3
+ pt1 = 100000,guard | pos:-7.3301563262939,-0.17000591754913,-182.1794128418 look:-8.0076661705971,-0.17000591754913,-182.91228997707
+
+[beh@ac_task_3_stalker_squad_3_2]:beh@ac_stalker_base
+ on_info = {+ac_task_3_pos_3} beh@ac_task_3_stalker_squad_2_3
+ pt1 = 100000,guard | pos:-7.3301563262939,-0.17000591754913,-182.1794128418 look:-8.0076661705971,-0.17000591754913,-182.91228997707
+
+[beh@ac_task_3_stalker_squad_4_2]:beh@ac_stalker_base
+ on_info = {+ac_task_3_pos_3} beh@ac_task_3_stalker_squad_4_3
+ pt1 = 100000,guard | pos:-7.3301563262939,-0.17000591754913,-182.1794128418 look:-8.0076661705971,-0.17000591754913,-182.91228997707
+
+[beh@ac_task_3_stalker_squad_1_3]:beh@ac_stalker_base_2
+ pt1 = 100000,guard | pos:-100.89275360107,0.4929051399231,-246.49229431152 look:-100.1578400135,0.4929051399231,-245.81716191769
+
+[beh@ac_task_3_stalker_squad_2_3]:beh@ac_stalker_base_2
+ pt1 = 100000,guard | pos:-96.78392791748,0.50106275081635,-250.90139770508 look:-96.205705225468,0.50106275081635,-250.08557683229
+
+[beh@ac_task_3_stalker_squad_3_3]:beh@ac_stalker_base_2
+ pt1 = 100000,guard | pos:-100.38987731934,0.49906086921692,-256.96508789063 look:-99.719907879829,0.49906086921692,-256.22272455692
+
+[beh@ac_task_3_stalker_squad_4_3]:beh@ac_stalker_base_2
+ pt1 = 100000,guard | pos:-106.4303817749,0.49242794513702,-253.03691101074 look:-105.83987349272,0.49242794513702,-252.23677414656
\ No newline at end of file
diff --git a/mods/[DEV] Brotherhood/gamedata/configs/scripts/brotherhood/ac_task_pripyat_1_logic.ltx b/mods/[DEV] Brotherhood/gamedata/configs/scripts/brotherhood/ac_task_pripyat_1_logic.ltx
new file mode 100644
index 00000000..534e386e
--- /dev/null
+++ b/mods/[DEV] Brotherhood/gamedata/configs/scripts/brotherhood/ac_task_pripyat_1_logic.ltx
@@ -0,0 +1,26 @@
+[logic@ac_melchior]
+suitable = {=check_npc_name(ac_melchior)} true
+active = beh@ac_melchior_1
+prior = 500
+
+[logic@ac_caspar]
+suitable = {=check_npc_name(ac_caspar)} true
+active = beh@ac_caspar_1
+prior = 500
+
+[beh@nr_walk_base]
+ combat_ignore_cond = true
+ combat_ignore_keep_when_attacked = true
+ meet = no_meet
+ behaviour_state = beh_move
+ target = waypoint
+ path_end = loop
+
+
+
+
+[beh@ac_caspar_1]:beh@nr_walk_base
+ pt1 = 88860000,guard | pos:-94.403129577637,-0.46183437108994,-52.664867401123 look:-94.450965367258,-0.46183437108994,-51.712814569473
+
+[beh@ac_melchior_1]:beh@nr_walk_base
+ pt1 = 88860000,guard | pos:-96.955108642578,-0.46410083770752,-53.258888244629 look:-97.228635758162,-0.46410083770752,-52.309909939766
diff --git a/mods/[DEV] Brotherhood/gamedata/configs/scripts/brotherhood/agroprom_logic.ltx b/mods/[DEV] Brotherhood/gamedata/configs/scripts/brotherhood/agroprom_logic.ltx
new file mode 100644
index 00000000..2001f66d
--- /dev/null
+++ b/mods/[DEV] Brotherhood/gamedata/configs/scripts/brotherhood/agroprom_logic.ltx
@@ -0,0 +1,136 @@
+
+--- Vybegallo
+
+[logic@vybegallo]
+ suitable = {=check_npc_name(vybegallo)} true
+ prior = 500
+ active = beh@vybegallo_job
+
+[beh@vybegallo_job]
+ behaviour_state = beh_move
+ target = waypoint
+ path_end = loop
+ pt1 = 88860000,idle | pos:-0.96449947357178,2.4984850883484,5.1722574234009 look:-1.9572842717171,2.4984850883484,5.0705771446228
+
+[logic@vybegallo_2]
+ suitable = {=check_npc_name(vybegallo)} true
+ prior = 500
+ active = beh@vybegallo_job_2
+
+[beh@vybegallo_job_2]
+ behaviour_state = beh_move
+ target = waypoint
+ walk_anim = patrol
+ combat_ignore_cond = {=actor_true_enemy =check_enemy_name(actor)} false, true
+ combat_ignore_keep_when_attacked = false
+ invulnerable = {!actor_true_enemy} true, false
+ path_end = loop
+ pt1 = 88860000,idle | pos:42.025260925293,10.499049186707,16.939895629883 look:42.941039323807,10.499049186707,17.068541884422
+
+--- Alyosha
+
+[logic@alyosha_shyogolov]
+ suitable = {=check_npc_name(alyosha_shyogolov)} true
+ prior = 500
+ active = beh@alyosha_shyogolov_job
+
+[beh@alyosha_shyogolov_job]
+ behaviour_state = beh_move
+
+ target = waypoint
+ path_end = loop
+ pt1 = 88860000,guard | pos:252.66156005859,-0.2021781951189,76.431800842285 look:252.27964878082,-0.2021781951189,75.510967731476
+
+
+[logic@alyosha_shyogolov_2]
+ suitable = {=check_npc_name(alyosha_shyogolov)} true
+ prior = 500
+ active = beh@alyosha_shyogolov_job_2
+
+[beh@alyosha_shyogolov_job_2]
+ behaviour_state = beh_move
+ target = waypoint
+ path_end = loop
+ pt1 = 88860000,sit_ass_drink_vodka | pos:-6.3672633171082,7.4974012374878,4.344096660614 look:-5.3891610503197,7.4974012374878,4.4683983996511
+
+
+--- Sarpedon
+
+[logic@sarpedon_logic]
+ suitable = {=check_npc_name(sarpedon)} true
+ prior = 500
+ active = beh@sarpedon_job
+
+[beh@sarpedon_job]
+ gather_items_enabled = false
+ behaviour_state = beh_move
+ target = waypoint
+ walk_anim = patrol
+ 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
+
+ path_end = loop
+ pt1 = 100000,sit_ass | pos:20.758554458618,0.15221303701401,11.817081451416 look:19.781954109669,0.15221303701401,11.732858784497
+
+
+--- Like Rats in a Trap
+
+[logic@bh_rat_guards_1]
+ suitable = {=target_squad_name(bh_rat_guards_1_squad)} true
+ prior = 500
+ active = beh@bh_rat_guards_1_1_job
+
+[logic@bh_rat_guards_2]
+ suitable = {=target_squad_name(bh_rat_guards_1_squad)} true
+ prior = 500
+ active = beh@bh_rat_guards_2_1_job
+
+[logic@bh_rat_guards_3]
+ suitable = {=target_squad_name(bh_rat_guards_1_squad)} true
+ prior = 500
+ active = beh@bh_rat_guards_3_1_job
+
+[logic@bh_rat_guards_4]
+ suitable = {=check_npc_name(bh_rat_guards_naruchnik)} true
+ prior = 500
+ active = beh@bh_rat_guards_4_1_job
+
+[logic@bh_rat_guards_5]
+ suitable = {=target_squad_name(bh_rat_guards_1_squad)} true
+ prior = 500
+ active = beh@bh_rat_guards_5_1_job
+
+[logic@bh_rat_guards_6]
+ suitable = {=target_squad_name(bh_rat_guards_1_squad)} true
+ prior = 500
+ active = beh@bh_rat_guards_6_1_job
+
+[beh@rat_guards_base]
+ meet = no_meet
+ behaviour_state = beh_move
+ target = waypoint
+ walk_anim = patrol
+ path_end = loop
+
+[beh@bh_rat_guards_1_1_job]:beh@rat_guards_base
+ pt1 = 100000,guard | pos:-39.03401184082,-0.0018443763256073,43.549373626709 look:-39.030780088622,-0.0018443763256073,42.550311863422
+
+[beh@bh_rat_guards_2_1_job]:beh@rat_guards_base
+ pt1 = 100000,guard | pos:-73.328407287598,1.5947494506836,15.870664596558 look:-73.177272751927,1.5947494506836,14.899828910828
+
+[beh@bh_rat_guards_3_1_job]:beh@rat_guards_base
+ pt1 = 100000,guard | pos:-75.507743835449,1.7313983440399,8.8472261428833 look:-75.153992801905,1.7313983440399,9.7309593558311
+
+[beh@bh_rat_guards_4_1_job]
+ behaviour_state = beh_move
+ target = waypoint
+ walk_anim = patrol
+ path_end = loop
+ pt1 = 100000,guard | pos:-44.158550262451,-0.20010030269623,-5.9492511749268 look:-45.03028523922,-0.20010030269623,-5.4725189805031
+
+[beh@bh_rat_guards_5_1_job]:beh@rat_guards_base
+ pt1 = 100000,guard | pos:-44.264957427979,-0.2002044916153,-8.7417984008789 look:-45.08905673027,-0.2002044916153,-8.1764976978302
+
+[beh@bh_rat_guards_6_1_job]:beh@rat_guards_base
+ pt1 = 100000,guard | pos:-42.33907699585,-0.20185586810112,-4.5265274047852 look:-43.171230971813,-0.20185586810112,-3.9731520414352
\ No newline at end of file
diff --git a/mods/[DEV] Brotherhood/gamedata/configs/scripts/brotherhood/agroprom_underground_logic.ltx b/mods/[DEV] Brotherhood/gamedata/configs/scripts/brotherhood/agroprom_underground_logic.ltx
new file mode 100644
index 00000000..cd260144
--- /dev/null
+++ b/mods/[DEV] Brotherhood/gamedata/configs/scripts/brotherhood/agroprom_underground_logic.ltx
@@ -0,0 +1,61 @@
+
+--- Like Rats in a Trap
+
+[logic@bh_rat_trap_1]
+ suitable = {=target_squad_name(bh_agr_u_bandits_1_squad)} true
+ prior = 500
+ active = beh@bh_rat_trap_1_1_job
+
+[logic@bh_rat_trap_2]
+ suitable = {=target_squad_name(bh_agr_u_bandits_1_squad)} true
+ prior = 500
+ active = beh@bh_rat_trap_2_1_job
+
+[logic@bh_rat_trap_3]
+ suitable = {=target_squad_name(bh_agr_u_bandits_1_squad)} true
+ prior = 500
+ active = beh@bh_rat_trap_3_1_job
+
+[logic@bh_rat_trap_4]
+ suitable = {=target_squad_name(bh_agr_u_bandits_1_squad)} true
+ prior = 500
+ active = beh@bh_rat_trap_4_1_job
+
+[logic@bh_rat_trap_5]
+ suitable = {=target_squad_name(bh_agr_u_bandits_1_squad)} true
+ prior = 500
+ active = beh@bh_rat_trap_5_1_job
+
+[logic@bh_rat_trap_6]
+ suitable = {=target_squad_name(bh_agr_u_bandits_leader_squad)} true
+ prior = 500
+ active = beh@bh_rat_trap_6_1_job
+
+[beh@rat_trap_base]
+ combat_ignore_cond = {+bh_rat_trap_wrong} false, true
+ combat_ignore_keep_when_attacked = {+bh_rat_trap_wrong_wrong} false, true
+ behaviour_state = beh_move
+ target = waypoint
+ walk_anim = patrol
+ path_end = loop
+
+[beh@rat_trap_base_squad]:beh@rat_trap_base
+ meet = no_meet
+
+[beh@bh_rat_guards_1_1_job]:beh@rat_trap_base_squad
+ pt1 = 100000,guard | pos:44.07649230957,1.7319798469543,153.73095703125 look:43.815874963999,1.7319798469543,154.68956172466
+
+[beh@bh_rat_guards_2_1_job]:beh@rat_trap_base_squad
+ pt1 = 100000,guard | pos:44.055648803711,1.7313425540924,165.53575134277 look:43.855173543096,1.7313425540924,164.55952882767
+
+[beh@bh_rat_guards_3_1_job]:beh@rat_trap_base_squad
+ pt1 = 100000,guard | pos:64.069473266602,1.7085797786713,166.49966430664 look:64.989323079586,1.7085797786713,166.86394071579
+
+[beh@bh_rat_guards_4_1_job]:beh@rat_trap_base_squad
+ pt1 = 100000,guard | pos:59.699127197266,1.7820448875427,159.17863464355 look:60.470405995846,1.7820448875427,159.81399440765
+
+[beh@bh_rat_guards_5_1_job]:beh@rat_trap_base_squad
+ pt1 = 100000,guard | pos:68.050651550293,1.7445890903473,150.92826843262 look:68.912640213966,1.7445890903473,150.44776770473
+
+[beh@bh_rat_guards_6_1_job]:beh@rat_trap_base
+ pt1 = 100000,guard | pos:62.810642242432,1.7066581249237,159.26321411133 look:63.604858636856,1.7066581249237,159.87083989382
diff --git a/mods/[DEV] Brotherhood/gamedata/configs/scripts/brotherhood/brotherhood_jup_b203_zombied.ltx b/mods/[DEV] Brotherhood/gamedata/configs/scripts/brotherhood/brotherhood_jup_b203_zombied.ltx
new file mode 100644
index 00000000..6f6d4d61
--- /dev/null
+++ b/mods/[DEV] Brotherhood/gamedata/configs/scripts/brotherhood/brotherhood_jup_b203_zombied.ltx
@@ -0,0 +1,13 @@
+---Controller Ambush
+
+
+[logic@primankov]
+ suitable = {=check_npc_name(controller_victim_1)} true
+ prior = 500
+ active = beh@primankov_job
+
+[beh@primankov_job]
+ behaviour_state = beh_move
+ target = waypoint
+ path_end = loop
+ pt1 = 88860000,psy_pain | pos:-184.74633789063,0.75744158029556,-284.82553100586 look:-185.38510763645,0.75744158029556,-284.0565263629
diff --git a/mods/[DEV] Brotherhood/gamedata/configs/scripts/brotherhood/brotherhood_npc_nr_ambush_logic_1.ltx b/mods/[DEV] Brotherhood/gamedata/configs/scripts/brotherhood/brotherhood_npc_nr_ambush_logic_1.ltx
new file mode 100644
index 00000000..9fb22487
--- /dev/null
+++ b/mods/[DEV] Brotherhood/gamedata/configs/scripts/brotherhood/brotherhood_npc_nr_ambush_logic_1.ltx
@@ -0,0 +1,14 @@
+[logic]
+
+suitable = {=check_npc_name(nr_ambush_1)} true
+prior = 500
+active = beh@general
+
+
+[beh@general]
+actor_dialogs = actor_dialogs
+behavior_state = beh_wait
+target = waypoint
+path_end = loop
+pt1 = 600000,guard | pos:355.57171630859,27.977787017822,-239.86022949219 look:354.57521551847,27.977787017822,-239.87518584915
+
diff --git a/mods/[DEV] Brotherhood/gamedata/configs/scripts/brotherhood/brotherhood_npc_nr_ambush_logic_2.ltx b/mods/[DEV] Brotherhood/gamedata/configs/scripts/brotherhood/brotherhood_npc_nr_ambush_logic_2.ltx
new file mode 100644
index 00000000..dc7313d1
--- /dev/null
+++ b/mods/[DEV] Brotherhood/gamedata/configs/scripts/brotherhood/brotherhood_npc_nr_ambush_logic_2.ltx
@@ -0,0 +1,14 @@
+[logic]
+
+suitable = {=check_npc_name(nr_ambush_2)} true
+prior = 500
+active = beh@general
+
+
+[beh@general]
+actor_dialogs = actor_dialogs
+behavior_state = beh_wait
+target = waypoint
+path_end = loop
+pt1 = 600000,guard | pos:378.29794311523,27.978296279907,-235.07585144043 look:378.19198679924,27.978296279907,-236.06145858765
+
diff --git a/mods/[DEV] Brotherhood/gamedata/configs/scripts/brotherhood/brotherhood_npc_nr_ambush_logic_3.ltx b/mods/[DEV] Brotherhood/gamedata/configs/scripts/brotherhood/brotherhood_npc_nr_ambush_logic_3.ltx
new file mode 100644
index 00000000..d8af0d1f
--- /dev/null
+++ b/mods/[DEV] Brotherhood/gamedata/configs/scripts/brotherhood/brotherhood_npc_nr_ambush_logic_3.ltx
@@ -0,0 +1,14 @@
+[logic]
+
+suitable = {=check_npc_name(nr_ambush_3)} true
+prior = 500
+active = beh@general
+
+
+[beh@general]
+actor_dialogs = actor_dialogs
+behavior_state = beh_wait
+target = waypoint
+path_end = loop
+pt1 = 600000,guard | pos:314.48291015625,34.592678070068,-237.58148193359 look:314.48143742932,34.592678070068,-238.57651388645
+
diff --git a/mods/[DEV] Brotherhood/gamedata/configs/scripts/brotherhood/brotherhood_npc_nr_ambush_logic_4.ltx b/mods/[DEV] Brotherhood/gamedata/configs/scripts/brotherhood/brotherhood_npc_nr_ambush_logic_4.ltx
new file mode 100644
index 00000000..d3dfa8e0
--- /dev/null
+++ b/mods/[DEV] Brotherhood/gamedata/configs/scripts/brotherhood/brotherhood_npc_nr_ambush_logic_4.ltx
@@ -0,0 +1,14 @@
+[logic]
+
+suitable = {=check_npc_name(nr_ambush_4)} true
+prior = 500
+active = beh@general
+
+
+[beh@general]
+actor_dialogs = actor_dialogs
+behavior_state = beh_wait
+target = waypoint
+path_end = loop
+pt1 = 600000,guard | pos:331.10369873047,34.258598327637,-270.34857177734 look:331.10422963096,34.258598327637,-269.45186668634
+
diff --git a/mods/[DEV] Brotherhood/gamedata/configs/scripts/brotherhood/brotherhood_npc_nr_ambush_logic_5.ltx b/mods/[DEV] Brotherhood/gamedata/configs/scripts/brotherhood/brotherhood_npc_nr_ambush_logic_5.ltx
new file mode 100644
index 00000000..a052ea80
--- /dev/null
+++ b/mods/[DEV] Brotherhood/gamedata/configs/scripts/brotherhood/brotherhood_npc_nr_ambush_logic_5.ltx
@@ -0,0 +1,14 @@
+[logic]
+
+suitable = {=check_npc_name(nr_ambush_5)} true
+prior = 500
+active = beh@general
+
+
+[beh@general]
+actor_dialogs = actor_dialogs
+behavior_state = beh_wait
+target = waypoint
+path_end = loop
+pt1 = 600000,guard | pos:316.77917480469,34.714248657227,-237.42193603516 look:316.78955564555,34.714248657227,-238.33095598221
+
diff --git a/mods/[DEV] Brotherhood/gamedata/configs/scripts/brotherhood/esc_lockdown.ltx b/mods/[DEV] Brotherhood/gamedata/configs/scripts/brotherhood/esc_lockdown.ltx
new file mode 100644
index 00000000..e24727d5
--- /dev/null
+++ b/mods/[DEV] Brotherhood/gamedata/configs/scripts/brotherhood/esc_lockdown.ltx
@@ -0,0 +1,296 @@
+---Army Lockdown
+
+----- Army
+---esc_smart_terrain_2_14
+
+[logic@lockdown_1]
+suitable = {=target_squad_name(bh_lockdown_2_14_squad)} true
+active = beh@lockdown_1
+prior = 500
+
+[logic@lockdown_2]
+suitable = {=target_squad_name(bh_lockdown_2_14_squad)} true
+active = beh@lockdown_2
+prior = 500
+
+[logic@lockdown_3]
+suitable = {=target_squad_name(bh_lockdown_2_14_squad)} true
+active = beh@lockdown_3
+prior = 500
+
+[logic@lockdown_4]
+suitable = {=target_squad_name(bh_lockdown_2_14_squad)} true
+active = beh@lockdown_4
+prior = 500
+
+---esc_smart_terrain_3_7
+
+
+[logic@lockdown_5]
+suitable = {=target_squad_name(bh_lockdown_3_7_squad_2)} true
+active = beh@lockdown_5
+prior = 500
+
+[logic@lockdown_6]
+suitable = {=target_squad_name(bh_lockdown_3_7_squad_2)} true
+active = beh@lockdown_6
+prior = 500
+
+[logic@lockdown_7]
+suitable = {=target_squad_name(bh_lockdown_3_7_squad_2)} true
+active = beh@lockdown_7
+prior = 500
+
+[beh@base]
+dont_keep_items = false
+gather_items_enabled = true
+help_wounded_enabled = false
+corpse_detection_enabled = true
+combat_ignore_keep_when_attacked = false
+target = waypoint
+path_end = loop
+
+
+
+
+[beh@lockdown_1]:beh@base
+ pt1 = 88860000,guard | pos:-253.50274658203,-22.243406295776,-286.48861694336 look:-252.68155324459,-22.243406295776,-286.97953498363
+
+[beh@lockdown_2]:beh@base
+ pt1 = 88860000,guard | pos:-257.00210571289,-22.425817489624,-290.72033691406 look:-256.19569432735,-22.425817489624,-291.25655472279
+
+[beh@lockdown_3]:beh@base
+ pt1 = 88860000,guard | pos:-272.68029785156,-21.686435699463,-277.73001098633 look:-271.87927597761,-21.686435699463,-277.1834077239
+
+[beh@lockdown_4]:beh@base
+ pt1 = 88860000,guard | pos:-272.31967163086,-21.689016342163,-272.48538208008 look:-273.20427548885,-21.689016342163,-272.92851692438
+
+[beh@lockdown_5]:beh@base
+ pt1 = 88860000,guard | pos:-157.84831237793,-2.3343555927277,313.54577636719 look:-157.37061774731,-2.3343555927277,312.67782557011
+
+[beh@lockdown_6]:beh@base
+ pt1 = 88860000,guard | pos:-151.16990661621,-3.0027039051056,314.77722167969 look:-150.75950548053,-3.0027039051056,313.8678458333
+
+[beh@lockdown_7]:beh@base
+ pt1 = 88860000,guard | pos:-149.83219909668,-2.9718582630157,325.28405761719 look:-150.22746643424,-2.9718582630157,326.19464844465
+
+---- Stalker village
+
+[logic@stalker_lockdown_1]
+suitable = {+army_lockdown_active} true
+active = beh@stalker_lockdown_1
+prior = 980
+
+[logic@stalker_lockdown_2]
+suitable = {+army_lockdown_active} true
+active = beh@stalker_lockdown_2
+prior = 980
+
+[logic@stalker_lockdown_3]
+suitable = {+army_lockdown_active} true
+active = beh@stalker_lockdown_3
+prior = 980
+
+[logic@stalker_lockdown_4]
+suitable = {+army_lockdown_active} true
+active = beh@stalker_lockdown_4
+prior = 980
+
+[logic@stalker_lockdown_5]
+suitable = {+army_lockdown_active} true
+active = beh@stalker_lockdown_5
+prior = 980
+
+[logic@stalker_lockdown_6]
+suitable = {+army_lockdown_active} true
+active = beh@stalker_lockdown_6
+prior = 980
+
+[logic@stalker_lockdown_7]
+suitable = {+army_lockdown_active} true
+active = beh@stalker_lockdown_7
+prior = 980
+
+[logic@stalker_lockdown_8]
+suitable = {+army_lockdown_active} true
+active = beh@stalker_lockdown_8
+prior = 980
+
+[logic@stalker_lockdown_9]
+suitable = {+army_lockdown_active} true
+active = beh@stalker_lockdown_9
+prior = 980
+
+[logic@stalker_lockdown_10]
+suitable = {+army_lockdown_active} true
+active = beh@stalker_lockdown_12
+prior = 980
+
+[logic@stalker_lockdown_11]
+suitable = {=check_npc_name(esc_2_12_stalker_fanat) +army_lockdown_active} true
+active = beh@stalker_lockdown_10
+prior = 990
+
+[logic@stalker_lockdown_12]
+suitable = {=check_npc_name(esc_2_12_stalker_wolf) +army_lockdown_active} true
+active = beh@stalker_lockdown_11
+prior = 990
+
+[logic@stalker_lockdown_13]
+suitable = {+army_lockdown_active} true
+active = beh@stalker_lockdown_13
+prior = 950
+
+[logic@stalker_lockdown_14]
+suitable = {+army_lockdown_active} true
+active = beh@stalker_lockdown_14
+prior = 950
+
+[logic@stalker_lockdown_15]
+suitable = {+army_lockdown_active} true
+active = beh@stalker_lockdown_15
+prior = 950
+
+
+[beh@stalker_base1]
+ behaviour_state = beh_move
+ target = waypoint
+ path_end = loop
+
+[beh@stalker_base]:beh@stalker_base1
+ meet = no_meet
+
+[beh@stalker_lockdown_1]:beh@stalker_base
+ pt1 = 88860000,sit_ass | pos:-207.95452880859,-22.549293518066,-128.8483581543 look:-208.00271685794,-22.549293518066,-128.13234585524
+
+[beh@stalker_lockdown_2]:beh@stalker_base
+ pt1 = 88860000,sit_ass | pos:-205.44612121582,-22.545961380005,-128.9239654541 look:-205.42265072837,-22.545961380005,-128.10926455259
+
+[beh@stalker_lockdown_3]:beh@stalker_base
+ pt1 = 88860000,sit_ass | pos:-205.8454284668,-22.597984313965,-127.76307678223 look:-205.87773677707,-22.597984313965,-128.66031646729
+
+[beh@stalker_lockdown_4]:beh@stalker_base
+ pt1 = 88860000,sit_ass | pos:-201.59928894043,-22.293748855591,-127.64914703369 look:-201.86054000258,-22.293748855591,-128.5975586772
+
+[beh@stalker_lockdown_5]:beh@stalker_base
+ pt1 = 88860000,sit_ass | pos:-213.37600708008,-23.194629669189,-124.92739105225 look:-212.42892032862,-23.194629669189,-124.82814551145
+
+[beh@stalker_lockdown_6]:beh@stalker_base
+ pt1 = 88860000,sit_ass | pos:-213.83331298828,-23.195550918579,-122.38076019287 look:-213.25867366791,-23.195550918579,-123.08557617664
+
+[beh@stalker_lockdown_7]:beh@stalker_base
+ pt1 = 88860000,sit_ass | pos:-210.64294433594,-22.877895355225,-121.59774780273 look:-211.53942781687,-22.877895355225,-121.62897085957
+
+[beh@stalker_lockdown_8]:beh@stalker_base
+ pt1 = 88860000,sit_ass | pos:-210.89395141602,-22.890514373779,-123.01245880127 look:-211.76965814829,-22.890514373779,-122.98198455572
+
+[beh@stalker_lockdown_9]:beh@stalker_base
+ pt1 = 88860000,sit_ass | pos:-210.89686584473,-22.871044158936,-125.27816772461 look:-211.80926203728,-22.871044158936,-125.18921911716
+
+[beh@stalker_lockdown_10]:beh@stalker_base1
+ pt1 = 88860000,guard | pos:-210.65496826172,-23.193996429443,-129.35891723633 look:-210.78284063935,-23.193996429443,-130.34018409252
+
+[beh@stalker_lockdown_11]:beh@stalker_base1
+ pt1 = 88860000,guard | pos:-255.93208312988,-21.009017944336,-127.30093383789 look:-254.9332652092,-21.009017944336,-127.28773701284
+
+[beh@stalker_lockdown_12]:beh@stalker_base
+ pt1 = 88860000,sit_ass | pos:-223.49008178711,-19.854181289673,-164.21601867676 look:-222.51131898165,-19.854181289673,-164.17487579584
+
+[beh@stalker_lockdown_13]:beh@stalker_base
+ pt1 = 88860000,sit_ass | pos:-223.14724731445,-19.940927505493,-162.63453674316 look:-222.15914958715,-19.940927505493,-162.55491317064
+
+[beh@stalker_lockdown_14]:beh@stalker_base
+ pt1 = 88860000,sit_ass | pos:-219.69844055176,-19.94252204895,-164.51547241211 look:-220.69499152899,-19.94252204895,-164.53103899769
+
+[beh@stalker_lockdown_15]:beh@stalker_base
+ pt1 = 88860000,sit_ass | pos:-216.97019958496,-19.941274642944,-162.98168945313 look:-217.02342930436,-19.941274642944,-162.01859247684
+
+
+---Castor and Pollox
+[logic@castor_lockdown_1]
+suitable = {=check_npc_name(assault_csky_leader_esc_5_7)} true
+active = beh@castor_lockdown_1
+prior = 600
+
+[logic@pollox_lockdown_1]
+suitable = {=check_npc_name(assault_stalker_leader_esc_5_9)} true
+active = beh@pollox_lockdown_1
+prior = 600
+
+[beh@castor_lockdown_1]:beh@stalker_base1
+ pt1 = 88860000,idle | pos:5.9352240562439,0.86977106332779,295.33111572266 look:5.1028490662575,0.86977106332779,295.8562169075
+
+[beh@pollox_lockdown_1]:beh@stalker_base1
+ pt1 = 88860000,idle | pos:3.3982691764832,0.87022680044174,295.80453491211 look:4.3374879360199,0.87022680044174,295.50534999371
+
+
+--- execution
+
+[remark@general]
+gather_items_enabled = false
+help_wounded_enabled = false
+corpse_detection_enabled = false
+combat_ignore_cond = true
+meet = no_meet
+wounded = wounded@no_wound
+use_camp = false
+turn_on_campfire = false
+invulnerable = true
+combat_ignore_cond = true
+combat_ignore_keep_when_attacked = true
+
+[beh@general]
+behavior_state = beh_move
+target = waypoint
+
+[logic@bh_execution_lockdown_1]
+suitable = {=target_squad_name(bh_lockdown_execution_squad)} true
+active = remark@bh_execution_lockdown_1
+prior = 600
+
+[logic@bh_execution_lockdown_2]
+suitable = {=target_squad_name(bh_lockdown_execution_squad_2)} true
+active = remark@bh_execution_lockdown_3
+prior = 600
+
+[logic@bh_execution_lockdown_3]
+suitable = {=target_squad_name(bh_lockdown_execution_squad3)} true
+active = beh@bh_execution_lockdown_3
+prior = 1
+
+[beh@bh_execution_base]
+ behaviour_state = beh_move
+ meet = no_meet
+
+
+ target = waypoint
+ path_end = loop
+
+[beh@bh_execution_lockdown_1]:beh@bh_execution_base
+ pt1 = 88860000,threat | pos:-134.43222045898,-30.139472961426,-393.75299072266 look:-134.47776456922,-30.139472961426,-394.75123798847
+
+[beh@bh_execution_lockdown_2]:beh@bh_execution_base
+ pt1 = 88860000,threat | pos:-137.74774169922,-30.139163970947,-393.99801635742 look:-137.35763055086,-30.139163970947,-394.91864162683
+
+[beh@bh_execution_lockdown_3]:beh@bh_execution_base
+ pt1 = 88860000,guard_fire | pos:-140.60908508301,-40.138750076294,-345.00961303711 look:-137.08314865828,-30.138750076294,-395.85903972387
+
+[remark@bh_execution_lockdown_1]:remark@general
+anim = threat_na
+target = story | actor
+on_timer = 5 | remark@bh_execution_lockdown_2
+
+
+[remark@bh_execution_lockdown_2]:remark@general
+anim = assault_fire
+target = story | actor
+
+[remark@bh_execution_lockdown_3]:remark@general
+anim = threat_na
+target = story | actor
+on_timer = 5 | remark@bh_execution_lockdown_4
+
+
+[remark@bh_execution_lockdown_4]:remark@general
+anim = threat_fire
+target = story | actor
\ No newline at end of file
diff --git a/mods/[DEV] Brotherhood/gamedata/configs/scripts/brotherhood/esc_smuggling_logic.ltx b/mods/[DEV] Brotherhood/gamedata/configs/scripts/brotherhood/esc_smuggling_logic.ltx
new file mode 100644
index 00000000..37ac6013
--- /dev/null
+++ b/mods/[DEV] Brotherhood/gamedata/configs/scripts/brotherhood/esc_smuggling_logic.ltx
@@ -0,0 +1,57 @@
+---Ironchain Gang
+
+
+[logic@bh_ironchain_1]
+suitable = {=target_squad_name(bh_ironchain_2_squad)} true
+active = beh@bh_ironchain_1
+prior = 500
+
+[logic@bh_ironchain_2]
+suitable = {=target_squad_name(bh_ironchain_2_squad)} true
+active = beh@bh_ironchain_2
+prior = 500
+
+[logic@bh_ironchain_3]
+suitable = {=target_squad_name(bh_ironchain_2_squad)} true
+active = beh@bh_ironchain_3
+prior = 500
+
+[logic@bh_ironchain_4]
+suitable = {=target_squad_name(bh_ironchain_2_squad)} true
+active = beh@bh_ironchain_4
+prior = 500
+
+[logic@bh_ironchain_5]
+suitable = {=check_npc_name(bh_ironchain)} true
+active = beh@bh_ironchain_5
+prior = 500
+
+[beh@base]
+dont_keep_items = true
+gather_items_enabled = false
+help_wounded_enabled = false
+corpse_detection_enabled = false
+combat_ignore_keep_when_attacked = false
+target = waypoint
+path_end = loop
+combat_ignore_cond = {+bh_ironchain_deal_gone_wrong} false, true
+combat_ignore_keep_when_attacked = {+bh_ironchain_deal_gone_wrong} false, true
+
+[beh@gang]:beh@base
+meet = no_meet
+
+
+[beh@bh_ironchain_1]:beh@gang
+ pt1 = 88860000,guard | pos:140.30145263672,0.18399813771248,341.83569335938 look:141.26340097189,0.18399813771248,341.59942138195
+
+[beh@bh_ironchain_2]:beh@gang
+ pt1 = 88860000,guard | pos:140.52110290527,0.21439450979233,337.41455078125 look:141.50974929333,0.21439450979233,337.30890928209
+
+[beh@bh_ironchain_3]:beh@gang
+ pt1 = 88860000,guard | pos:133.84097290039,0.18276101350784,336.84924316406 look:133.87411888316,0.18276101350784,337.84488683939
+
+[beh@bh_ironchain_4]:beh@gang
+ pt1 = 88860000,guard | pos:135.92878723145,0.18073549866676,342.07440185547 look:134.947881639,0.18073549866676,341.95935965329
+
+[beh@bh_ironchain_5]:beh@base
+ pt1 = 88860000,guard | pos:134.19320678711,0.18283259868622,339.78994750977 look:133.19913303852,0.18283259868622,339.86729538441
\ No newline at end of file
diff --git a/mods/[DEV] Brotherhood/gamedata/configs/scripts/brotherhood/great_marsh_random_logic.ltx b/mods/[DEV] Brotherhood/gamedata/configs/scripts/brotherhood/great_marsh_random_logic.ltx
new file mode 100644
index 00000000..c6830ddf
--- /dev/null
+++ b/mods/[DEV] Brotherhood/gamedata/configs/scripts/brotherhood/great_marsh_random_logic.ltx
@@ -0,0 +1,31 @@
+[logic@nr_starik_murder_bandit_1]
+suitable = {=target_squad_name(nr_starik_murder_bandit_1_squad) -nr_starik_1_interrupted} true
+active = beh@nr_starik_murder_bandit_1
+prior = 500
+
+[logic@nr_starik_murder_bandit_2]
+suitable = {=target_squad_name(nr_starik_murder_bandit_2_squad) -nr_starik_1_interrupted} true
+active = beh@nr_starik_murder_bandit_2
+prior = 500
+
+[beh@nr_walk_base]
+ combat_ignore_cond = true
+ combat_ignore_keep_when_attacked = false
+ meet = meet
+ behaviour_state = beh_move
+ target = waypoint
+ walk_dist = 100
+ jog_dist = 220
+
+ walk_anim = walk
+ jog_anim = walk
+ run_anim = walk
+ path_end = loop
+
+
+
+
+[beh@nr_starik_murder_bandit_1]:beh@nr_walk_base
+ pt1 = 88860000,guard | pos:-41.259243011475,-1.13884806633,268.23779296875 look:-42.000157237053,-1.13884806633,267.92011845112
+[beh@nr_starik_murder_bandit_2]:beh@nr_walk_base
+ pt1 = 88860000,guard | pos:-43.523834228516,-1.2712132930756,268.31134033203 look:-43.092729508877,-1.2712132930756,267.55471074581
diff --git a/mods/[DEV] Brotherhood/gamedata/configs/scripts/brotherhood/military_checkpoint_logic.ltx b/mods/[DEV] Brotherhood/gamedata/configs/scripts/brotherhood/military_checkpoint_logic.ltx
new file mode 100644
index 00000000..c177f949
--- /dev/null
+++ b/mods/[DEV] Brotherhood/gamedata/configs/scripts/brotherhood/military_checkpoint_logic.ltx
@@ -0,0 +1,37 @@
+---Badger
+
+
+[logic@bh_badger]
+ suitable = {=check_npc_name(bh_badger)} true
+ prior = 500
+ active = beh@bh_badger_1_job
+
+[beh@nr_ilyaz_base]
+ meet = meet
+ behaviour_state = beh_move
+ target = waypoint
+ walk_dist = 100
+ jog_dist = 220
+
+ walk_anim = walk
+ jog_anim = walk
+ run_anim = walk
+ path_end = loop
+
+
+[beh@bh_badger_1_job]:beh@nr_ilyaz_base
+ on_info = {+bh_badger_guard_dutz_on} beh@bh_badger_2_job
+ pt1 = 88860000,sit_ass | pos:-124.4213104248,-30.051345825195,-373.82867431641 look:-124.48068100959,-30.051345825195,-374.8169683218
+
+[beh@bh_badger_2_job]:beh@nr_ilyaz_base
+ on_info = {-bh_badger_guard_dutz_on} beh@bh_badger_1_job
+ on_info2 = {+bh_badger_guard_dutz_on +bh_shlitzer_smuggling_done -bh_badger_deal_done} beh@bh_badger_3_job
+ pt1 = 88860000,guard | pos:-161,-30,-358 look:0.276,-0.092,0.957
+
+[beh@bh_badger_3_job]:beh@nr_ilyaz_base
+ on_info = {+bh_badger_deal_done} beh@bh_badger_2_job
+ pt1 = 88860000,idle | pos:-241.95616149902,-30.707180023193,-353.70162963867 look:-241.61646446586,-30.707180023193,-352.78583979607
+
+
+
+
\ No newline at end of file
diff --git a/mods/[DEV] Brotherhood/gamedata/configs/scripts/brotherhood/nr_alyosha_bandits.ltx b/mods/[DEV] Brotherhood/gamedata/configs/scripts/brotherhood/nr_alyosha_bandits.ltx
new file mode 100644
index 00000000..0c0200b7
--- /dev/null
+++ b/mods/[DEV] Brotherhood/gamedata/configs/scripts/brotherhood/nr_alyosha_bandits.ltx
@@ -0,0 +1,43 @@
+[logic@nr_alyosha_bandits_squad_1]
+suitable = {=target_squad_name(nr_bandits_1_squad)} true
+active = beh@nr_alyosha_bandits_assault
+prior = 500
+
+[logic@nr_alyosha_bandits_squad_2]
+suitable = {=target_squad_name(nr_bandits_1_squad)} true
+active = beh@nr_alyosha_bandits_assault
+prior = 500
+
+[logic@nr_alyosha_bandits_squad_3]
+suitable = {=target_squad_name(nr_bandits_1_squad)} true
+active = beh@nr_alyosha_bandits_assault
+prior = 500
+
+[logic@nr_alyosha_bandits_squad_4]
+suitable = {=target_squad_name(nr_bandits_1_squad)} true
+active = beh@nr_alyosha_bandits_assault
+prior = 500
+
+[logic@nr_alyosha_bandits_squad_5]
+suitable = {=target_squad_name(nr_bandits_2_squad)} true
+active = beh@nr_alyosha_bandits_assault
+prior = 500
+
+[logic@nr_alyosha_bandits_squad_6]
+suitable = {=target_squad_name(nr_bandits_2_squad)} true
+active = beh@nr_alyosha_bandits_assault
+prior = 500
+
+[logic@nr_alyosha_bandits_squad_7]
+suitable = {=target_squad_name(nr_bandits_2_squad)} true
+active = beh@nr_alyosha_bandits_assault
+prior = 500
+
+
+
+[beh@nr_alyosha_bandits_assault]
+ run_anim = rush
+ behaviour_state = beh_move
+ target = waypoint
+ path_end = loop
+ pt1 = 100000,idle | pos:-67.114974975586,3.663382768631,114.72267150879 look:-67.101200799458,3.663382768631,113.72375202179
\ No newline at end of file
diff --git a/mods/[DEV] Brotherhood/gamedata/configs/scripts/brotherhood/nr_army_warehouse_logic.ltx b/mods/[DEV] Brotherhood/gamedata/configs/scripts/brotherhood/nr_army_warehouse_logic.ltx
new file mode 100644
index 00000000..54ceb49c
--- /dev/null
+++ b/mods/[DEV] Brotherhood/gamedata/configs/scripts/brotherhood/nr_army_warehouse_logic.ltx
@@ -0,0 +1,46 @@
+----- Mercenaries
+
+
+
+[logic@nr_bezsonik]
+ suitable = {=check_npc_name(nr_bezsonik)} true
+ prior = 500
+ active = beh@nr_bezsonik_1_job
+
+[beh@nr_bezsonik_1_job]
+ behaviour_state = beh_move
+ target = waypoint
+ walk_anim = patrol
+ on_info = {+nr_bezsonik_move} beh@nr_bezsonik_2_job
+ path_end = loop
+ pt1 = 88860000,idle | pos:4.3408036231995,-8.8730173110962,3.7783288955688 look:3.5400252938271,-8.8730173110962,4.3764227628708
+
+
+[beh@nr_bezsonik_2_job]
+behaviour_state = beh_move
+target = waypoint
+walk_anim = patrol
+gather_items_enabled = false
+help_wounded_enabled = false
+corpse_detection_enabled = false
+invulnerable = false
+path_end = loop
+pt1 = 88860000,sit_ass_drink_vodka | pos:20.051500320435,-7.3409280776978,16.539705276489 look:19.263518929482,-7.3409280776978,16.513776063919
+
+
+[logic@nr_lyoshik]
+ suitable = {=check_npc_name(nr_lyoshik)} true
+ prior = 500
+ active = beh@nr_lyoshik_job
+
+
+[beh@nr_lyoshik_job]
+behaviour_state = beh_move
+target = waypoint
+walk_anim = patrol
+gather_items_enabled = false
+help_wounded_enabled = false
+corpse_detection_enabled = false
+invulnerable = false
+path_end = loop
+pt1 = 88860000,idle | pos:15.033114433289,-7.2893815040588,20.447532653809 look:15.054708955809,-7.2893815040588,21.447066128254
\ No newline at end of file
diff --git a/mods/[DEV] Brotherhood/gamedata/configs/scripts/brotherhood/nr_bar_logic.ltx b/mods/[DEV] Brotherhood/gamedata/configs/scripts/brotherhood/nr_bar_logic.ltx
new file mode 100644
index 00000000..bdf06522
--- /dev/null
+++ b/mods/[DEV] Brotherhood/gamedata/configs/scripts/brotherhood/nr_bar_logic.ltx
@@ -0,0 +1,51 @@
+[logic@nr_sorokin]
+ suitable = {=check_npc_name(nr_sorokin)} true
+ prior = 500
+ active = beh@nr_sorokin_job
+
+[beh@nr_sorokin_job]
+ behaviour_state = beh_move
+ target = waypoint
+ path_end = loop
+ pt1 = 88860000,idle | pos:131.9454498291,-4.8244047164917,25.538990020752 look:132.94496375322,-4.8244047164917,25.533007382881
+
+[logic@nr_scamlok_1]
+ suitable = {=check_npc_name(nr_scamlok)} true
+ prior = 500
+ active = beh@nr_scamlok_job
+
+[beh@nr_scamlok_job]
+ behaviour_state = beh_move
+ target = waypoint
+ 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
+ path_end = loop
+ pt1 = 88860000,idle | pos:109.44784545898,-0.012278616428375,127.16125488281 look:110.41980904341,-0.012278616428375,126.92711761594
+
+---- Sasha Baltunov
+
+[logic@nr_sasha_baltunov]
+ suitable = {=check_npc_name(nr_sasha_baltunov)} true
+ prior = 500
+ active = beh@nr_sasha_baltunov_1_job
+
+
+[beh@nr_walk_base]
+ meet = meet
+ behaviour_state = beh_move
+ target = waypoint
+ walk_dist = 100
+ jog_dist = 220
+
+ walk_anim = walk
+ jog_anim = walk
+ run_anim = walk
+ path_end = loop
+
+[beh@nr_sasha_baltunov_1_job]:beh@nr_walk_base
+ on_info = {+nr_sasha_baltunov_1_job_init} beh@nr_sasha_baltunov_2_job
+ pt1 = 88860000,idle | pos:125.42021179199,-4.3464636802673,28.191061019897 look:126.39852428436,-4.3464636802673,28.145230054855
+
+[beh@nr_sasha_baltunov_2_job]:beh@nr_walk_base
+ pt1 = 88860000,idle | pos:127.67053985596,-4.8243117332458,23.232620239258 look:128.07066076994,-4.8243117332458,22.330782175064
\ No newline at end of file
diff --git a/mods/[DEV] Brotherhood/gamedata/configs/scripts/brotherhood/nr_jupiter_a9_logic.ltx b/mods/[DEV] Brotherhood/gamedata/configs/scripts/brotherhood/nr_jupiter_a9_logic.ltx
new file mode 100644
index 00000000..937e2167
--- /dev/null
+++ b/mods/[DEV] Brotherhood/gamedata/configs/scripts/brotherhood/nr_jupiter_a9_logic.ltx
@@ -0,0 +1,10 @@
+[logic@alyosha_shyogolov_4]
+ suitable = {=check_npc_name(alyosha_shyogolov)} true
+ prior = 500
+ active = beh@alyosha_shyogolov_4_job
+
+[beh@alyosha_shyogolov_4_job]
+ behaviour_state = beh_move
+ target = waypoint
+ path_end = loop
+ pt1 = 88860000,idle | pos:270.51989746094,27.592041015625,-222.35821533203 look:269.53373754025,27.592041015625,-222.51029442251
diff --git a/mods/[DEV] Brotherhood/gamedata/configs/scripts/brotherhood/nr_jupiter_b47_logic.ltx b/mods/[DEV] Brotherhood/gamedata/configs/scripts/brotherhood/nr_jupiter_b47_logic.ltx
new file mode 100644
index 00000000..8ccc9704
--- /dev/null
+++ b/mods/[DEV] Brotherhood/gamedata/configs/scripts/brotherhood/nr_jupiter_b47_logic.ltx
@@ -0,0 +1,66 @@
+[logic@nr_erast_fandorin_2]
+ suitable = {=check_npc_name(erast_fandorin)} true
+ prior = 500
+ active = beh@nr_erast_fandorin_2_job
+
+[beh@nr_erast_fandorin_2_job]
+ behaviour_state = beh_move
+ target = waypoint
+ path_end = loop
+ pt1 = 88860000,idle | pos:337.31549072266,26.735898971558,-255.1216583252 look:336.32775199413,26.735898971558,-255.02598775178
+
+
+[logic@nr_ambush_1]
+ suitable = {=check_npc_name(nr_ambush_1)} true
+ prior = 500
+ active = beh@nr_ambush_1_job
+
+[beh@nr_ambush_1_job]
+ behaviour_state = beh_move
+ target = waypoint
+ path_end = loop
+ pt1 = 88860000,guard | pos:355.57171630859,27.977787017822,-239.86022949219 look:354.57521551847,27.977787017822,-239.87518584915
+
+[logic@nr_ambush_2]
+ suitable = {=check_npc_name(nr_ambush_2)} true
+ prior = 500
+ active = beh@nr_ambush_2_job
+
+[beh@nr_ambush_2_job]
+ behaviour_state = beh_move
+ target = waypoint
+ path_end = loop
+ pt1 = 88860000,guard | pos:378.29794311523,27.978296279907,-235.07585144043 look:378.19198679924,27.978296279907,-236.06145858765
+
+[logic@nr_ambush_3]
+ suitable = {=check_npc_name(nr_ambush_3)} true
+ prior = 500
+ active = beh@nr_ambush_3_job
+
+[beh@nr_ambush_3_job]
+ behaviour_state = beh_move
+ target = waypoint
+ path_end = loop
+ pt1 = 88860000,guard | pos:314.48291015625,34.592678070068,-237.58148193359 look:314.48143742932,34.592678070068,-238.57651388645
+
+[logic@nr_ambush_4]
+ suitable = {=check_npc_name(nr_ambush_4)} true
+ prior = 500
+ active = beh@nr_ambush_4_job
+
+[beh@nr_ambush_4_job]
+ behaviour_state = beh_move
+ target = waypoint
+ path_end = loop
+ pt1 = 88860000,guard | pos:331.10369873047,34.258598327637,-270.34857177734 look:331.10422963096,34.258598327637,-269.45186668634
+
+[logic@nr_ambush_5]
+ suitable = {=check_npc_name(nr_ambush_5)} true
+ prior = 500
+ active = beh@nr_ambush_5_job
+
+[beh@nr_ambush_5_job]
+ behaviour_state = beh_move
+ target = waypoint
+ path_end = loop
+ pt1 = 88860000,guard | pos:316.77917480469,34.714248657227,-237.42193603516 look:316.78955564555,34.714248657227,-238.33095598221
diff --git a/mods/[DEV] Brotherhood/gamedata/configs/scripts/brotherhood/nr_jupiter_logic.ltx b/mods/[DEV] Brotherhood/gamedata/configs/scripts/brotherhood/nr_jupiter_logic.ltx
new file mode 100644
index 00000000..dbb8b88c
--- /dev/null
+++ b/mods/[DEV] Brotherhood/gamedata/configs/scripts/brotherhood/nr_jupiter_logic.ltx
@@ -0,0 +1,143 @@
+[logic@nr_sorokin_2]
+ suitable = {=check_npc_name(nr_sorokin)} true
+ prior = 500
+ active = beh@nr_sorokin_job
+
+[beh@nr_sorokin_job]
+ behaviour_state = beh_move
+ target = waypoint
+ path_end = loop
+ pt1 = 88860000,idle | pos:-43.189586639404,3.4878842830658,202.7116394043 look:-43.271250747144,3.4878842830658,201.74094808102
+
+
+[logic@alyosha_shyogolov_3]
+ suitable = {=check_npc_name(alyosha_shyogolov)} true
+ prior = 500
+ active = beh@alyosha_shyogolov_3_job_1
+
+[beh@alyosha_shyogolov_3_job_1]
+ behaviour_state = beh_move
+ on_info = {+alyosha_shyogolov_retreat_1} beh@alyosha_shyogolov_3_job_2
+ 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
+ target = waypoint
+ path_end = loop
+ pt1 = 88860000,guard | pos:-67.114974975586,3.663382768631,114.72267150879 look:-67.101200799458,3.663382768631,113.72375202179
+
+[beh@alyosha_shyogolov_3_job_2]
+ meet = no_meet
+ behaviour_state = beh_move
+ on_info = {+nr_bandits_squads_dead_1} beh@alyosha_shyogolov_3_job_3
+ 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
+ target = waypoint
+ path_end = loop
+ pt1 = 88860000,idle | pos:-52.516330718994,3.487446308136,205.72317504883 look:-51.547375679016,3.487446308136,205.80064857006
+
+[beh@alyosha_shyogolov_3_job_3]
+
+ behaviour_state = beh_move
+
+ 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
+ target = waypoint
+ path_end = loop
+ pt1 = 88860000,idle | pos:-52.516330718994,3.487446308136,205.72317504883 look:-51.547375679016,3.487446308136,205.80064857006
+
+
+[logic@nr_dead_convict_1]
+ suitable = {=check_npc_name(nr_dead_convict_1)} true
+ prior = 500
+ active = beh@nr_dead_convict_1_job
+
+
+[beh@nr_dead_convict_1_job]
+
+ behaviour_state = beh_move
+ meet = no_meet
+ combat_ignore_cond = true
+ combat_ignore_keep_when_attacked = true
+
+ target = waypoint
+ path_end = loop
+ pt1 = 88860000,hands_up | pos:-53.964504241943,3.5118420124054,160.3719329834 look:-53.92770786956,3.5118420124054,159.37349265814
+ --pt1 = 88860000,hands_up | pos:-55.452903747559,3.5291602611542,160.1261138916 look:-55.420926552266,3.5291602611542,159.1291744709
+
+[logic@nr_dead_convict_2]
+ suitable = {=check_npc_name(nr_dead_convict_2)} true
+ prior = 500
+ active = beh@nr_dead_convict_2_job
+
+
+[beh@nr_dead_convict_2_job]
+
+ behaviour_state = beh_move
+ meet = no_meet
+ combat_ignore_cond = true
+ combat_ignore_keep_when_attacked = true
+
+ target = waypoint
+ path_end = loop
+ pt1 = 88860000,prisoner | pos:-58.915637969971,3.6456756591797,159.9506072998 look:-58.841192029417,3.6456756591797,158.96341890097
+
+[logic@nr_executioner_1]
+ suitable = {=check_npc_name(nr_executioner_1) -nr_dead_convict_1_squad_dead} true
+ prior = 500
+ active = beh@nr_executioner_1_job
+
+[logic@nr_executioner_2]
+ suitable = {=check_npc_name(nr_executioner_2) -nr_dead_convict_1_squad_dead} true
+ prior = 500
+ active = beh@nr_executioner_2_job
+
+[logic@nr_executioner_3]
+ suitable = {=check_npc_name(nr_executioner_3)} true
+ prior = 500
+ active = beh@nr_executioner_3_job
+
+[beh@nr_executione_base]
+ behaviour_state = beh_move
+ target = waypoint
+ walk_dist = 100
+ jog_dist = 220
+
+ walk_anim = walk
+ jog_anim = walk
+ run_anim = walk
+ path_end = loop
+
+[beh@nr_executioner_1_job]:beh@nr_executione_base
+ on_info = {+nr_execution_firing_1} beh@nr_executioner_firing_1_job
+ meet = no_meet
+ pt1 = 88860000,threat | pos:-53.715953826904,3.45143699646,167.76420593262 look:-53.922115325928,3.45143699646,166.79867982864
+
+[beh@nr_executioner_firing_1_job]:beh@nr_executione_base
+
+ meet = no_meet
+ pt1 = 88860000,guard_fire | pos:-53.715953826904,3.45143699646,167.76420593262 look:-53.922115325928,3.45143699646,166.79867982864
+
+
+[beh@nr_executioner_2_job]:beh@nr_executione_base
+ on_info = {+nr_execution_firing_1} beh@nr_executioner_firing_2_job
+ meet = no_meet
+ pt1 = 88860000,threat | pos:-56.438800811768,3.4529418945313,168.19071960449 look:-56.335878804326,3.4529418945313,167.20485597849
+
+[beh@nr_executioner_firing_2_job]:beh@nr_executione_base
+
+ meet = no_meet
+ pt1 = 88860000,threat_fire | pos:-56.438800811768,3.4529418945313,168.19071960449 look:-56.335878804326,3.4529418945313,167.20485597849
+
+
+
+[beh@nr_executioner_3_job]:beh@nr_executione_base
+ on_info = {+nr_dead_convict_1_squad_dead} beh@nr_executioner_3_2_job
+ combat_ignore_cond = true
+ combat_ignore_keep_when_attacked = true
+ pt1 = 88860000,guard | pos:-47.242031097412,3.4872958660126,161.45401000977 look:-48.236757516861,3.4872958660126,161.46631026175
+
+[beh@nr_executioner_3_2_job]:beh@nr_executione_base
+
+ pt1 = 88860000,idle | pos:-50.671684265137,3.4870896339417,187.31074523926 look:-50.674897092395,3.4870896339417,188.3059297204
\ No newline at end of file
diff --git a/mods/[DEV] Brotherhood/gamedata/configs/scripts/brotherhood/nr_jupiter_mobilelab.ltx b/mods/[DEV] Brotherhood/gamedata/configs/scripts/brotherhood/nr_jupiter_mobilelab.ltx
new file mode 100644
index 00000000..e235f47c
--- /dev/null
+++ b/mods/[DEV] Brotherhood/gamedata/configs/scripts/brotherhood/nr_jupiter_mobilelab.ltx
@@ -0,0 +1,89 @@
+[logic@erast_fandorin_2]
+ suitable = {=check_npc_name(erast_fandorin)} true
+ prior = 500
+ active = beh@nr_erast_fandorin_2_job
+
+[logic@flavio_becca]
+ suitable = {=check_npc_name(flavio_becca)} true
+ prior = 500
+ active = beh@flavio_becca_job_1
+
+[logic@nr_ecologist_rydzyk]
+ suitable = {=check_npc_name(nr_ecologist_rydzyk)} true
+ prior = 500
+ active = beh@nr_ecologist_rydzyk_job_1
+
+[logic@nr_ecologist_1]
+ suitable = {=check_npc_name(nr_ecologist_1)} true
+ prior = 500
+ active = beh@nr_ecologist_1_job_1
+
+[logic@nr_ecologist_2]
+ suitable = {=check_npc_name(nr_ecologist_2)} true
+ prior = 500
+ active = beh@nr_ecologist_2_job_1
+
+[logic@nr_ecologist_3]
+ suitable = {=check_npc_name(nr_ecologist_3)} true
+ prior = 500
+ active = beh@nr_ecologist_3_job_1
+
+
+
+[beh@base]
+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
+dont_keep_items = true
+gather_items_enabled = false
+help_wounded_enabled = false
+corpse_detection_enabled = false
+combat_ignore_keep_when_attacked = false
+target = waypoint
+path_end = loop
+behaviour_state = beh_move
+
+
+
+[beh@flavio_becca_job_1]:beh@base
+ on_info = {+northern_rush_dialogs_trigger_done -nr_corruption_done !surge_started =is_night} beh@flavio_becca_job_2
+ pt1 = 88860000,idle | pos:-219.03512573242,-3.5594117641449,79.986297607422 look:-218.10097187757,-3.5594117641449,79.936623685062
+
+[beh@nr_ecologist_rydzyk_job_1]:beh@base
+ on_info = {+northern_rush_dialogs_trigger_done -nr_corruption_done !surge_started =is_night} beh@nr_ecologist_rydzyk_job_2
+ pt1 = 88860000,idle | pos:-216.47917175293,-3.557053565979,79.757942199707 look:-217.44162404537,-3.557053565979,79.765188694
+
+[beh@nr_ecologist_1_job_1]:beh@base
+ on_info = {+northern_rush_dialogs_trigger_done -nr_corruption_done !surge_started =is_night} beh@nr_ecologist_1_job_2
+ pt1 = 88860000,idle | pos:-215.28471374512,-3.56827044487,75.60816192627 look:-216.28330546618,-3.56827044487,75.637223301455
+
+[beh@nr_ecologist_2_job_1]:beh@base
+ on_info = {+northern_rush_dialogs_trigger_done -nr_corruption_done !surge_started =is_night} beh@nr_ecologist_2_job_2
+ pt1 = 88860000,idle | pos:-213.26760864258,-3.5684111118317,68.279556274414 look:-213.26374466368,-3.5684111118317,69.278563261032
+
+[beh@nr_ecologist_3_job_1]:beh@base
+ on_info = {+northern_rush_dialogs_trigger_done -nr_corruption_done !surge_started =is_night} beh@nr_ecologist_3_job_2
+ pt1 = 88860000,idle | pos:-220.42057800293,-3.5371415615082,66.873374938965 look:-220.39999588579,-3.5371415615082,67.86948376894
+
+[beh@flavio_becca_job_2]:beh@base
+ on_info = {!is_night} beh@flavio_becca_job_1
+ pt1 = 88860000,sit_ass_drink_vodka | pos:-199.74822998047,-4.1867122650146,59.184242248535 look:-199.09686005116,-4.1867122650146,58.539527893066
+
+[beh@nr_ecologist_rydzyk_job_2]:beh@base
+ on_info = {!is_night} beh@nr_ecologist_rydzyk_job_1
+ pt1 = 88860000,sit_ass_drink_vodka | pos:-197.48492431641,-4.0895237922668,56.258228302002 look:-198.17211848497,-4.0895237922668,56.900286912918
+
+[beh@nr_ecologist_1_job_2]:beh@base
+ on_info = {!is_night} beh@nr_ecologist_1_job_1
+ pt1 = 88860000,sit_ass_guitar | pos:-198.02180480957,-4.3409023284912,60.582843780518 look:-198.61049228907,-4.3409023284912,59.887114226818
+
+[beh@nr_ecologist_2_job_2]:beh@base
+ on_info = {!is_night} beh@nr_ecologist_2_job_1
+ pt1 = 88860000,sit_ass_drink_vodka | pos:-196.62133789063,-4.300103187561,59.172569274902 look:-197.21002537012,-4.300103187561,58.476839780807
+
+[beh@nr_ecologist_3_job_2]:beh@base
+ on_info = {!is_night} beh@nr_ecologist_3_job_1
+ pt1 = 88860000,sit_ass_drink_vodka | pos:-199.2805480957,-4.0733647346497,57.096076965332 look:-198.7807956934,-4.0733647346497,57.950074791908
+
+[beh@nr_erast_fandorin_2_job]:beh@base
+ pt1 = 88860000,guard | pos:-207.43057250977,-3.7736539840698,71.709953308105 look:-206.4928894639,-3.7736539840698,71.451419830322
\ No newline at end of file
diff --git a/mods/[DEV] Brotherhood/gamedata/configs/scripts/brotherhood/nr_trapper_chimera_1_logic.ltx b/mods/[DEV] Brotherhood/gamedata/configs/scripts/brotherhood/nr_trapper_chimera_1_logic.ltx
new file mode 100644
index 00000000..a58f6615
--- /dev/null
+++ b/mods/[DEV] Brotherhood/gamedata/configs/scripts/brotherhood/nr_trapper_chimera_1_logic.ltx
@@ -0,0 +1,22 @@
+
+[section@squad]
+target@base = jup_sim_21
+
+[section@logic]
+logic@trapper_chimera_1
+
+[logic@base]
+suitable = {=npc_squad_name(trapper_chimera_1)} true
+monster_job = true
+
+[logic@trapper_chimera_1]:logic@base
+active = mob_home@point_a
+
+[mob_home@base]
+target = %=mutant_path()%
+path_end = loop
+
+[mob_home@point_a]:mob_home@base
+move_animation = run
+wait_animation = sleep
+pt1 = 88860000,idle | pos:-189.52851867676,3.3515679836273,394.25390625 look:-189.81469479203,3.3515679836273,393.30991244316
diff --git a/mods/[DEV] Brotherhood/gamedata/configs/scripts/brotherhood/nr_trapper_chimera_2_logic.ltx b/mods/[DEV] Brotherhood/gamedata/configs/scripts/brotherhood/nr_trapper_chimera_2_logic.ltx
new file mode 100644
index 00000000..b44683ad
--- /dev/null
+++ b/mods/[DEV] Brotherhood/gamedata/configs/scripts/brotherhood/nr_trapper_chimera_2_logic.ltx
@@ -0,0 +1,29 @@
+
+[section@squad]
+target@base = jup_b205_smart_terrain_tushkano
+
+[section@logic]
+logic@trapper_chimera_2
+
+[logic@base]
+suitable = {=npc_squad_name(trapper_chimera_2)} true
+monster_job = true
+
+[logic@trapper_chimera_2]:logic@base
+active = mob_home@point_a
+
+[mob_home@base]
+target = %=mutant_path()%
+path_end = loop
+
+[mob_home@point_a]:mob_home@base
+move_animation = run
+wait_animation = sleep
+on_info = {+trapper_chimera_2_bait_active} mob_home@point_b
+pt1 = 88860000,sleep | pos:-381.40188598633,2.6410093307495,2.5957698822021 look:-381.23918409646,2.6410093307495,1.855603158474
+
+[mob_home@point_b]:mob_home@base
+move_animation = run
+wait_animation = sleep
+on_info = {-trapper_chimera_2_bait_active} mob_home@point_a
+pt1 = 88860000,sleep | pos:-290.74948120117,7.8559045791626,-3.1653161048889 look:-291.61963200569,7.8559045791626,-3.1996148824692
diff --git a/mods/[DEV] Brotherhood/gamedata/configs/scripts/brotherhood/nr_yantar_logic.ltx b/mods/[DEV] Brotherhood/gamedata/configs/scripts/brotherhood/nr_yantar_logic.ltx
new file mode 100644
index 00000000..5e54fd64
--- /dev/null
+++ b/mods/[DEV] Brotherhood/gamedata/configs/scripts/brotherhood/nr_yantar_logic.ltx
@@ -0,0 +1,82 @@
+[logic@erast_fandorin_1]
+ suitable = {=check_npc_name(erast_fandorin)} true
+ prior = 500
+ active = beh@nr_erast_fandorin_job
+
+
+[beh@nr_erast_fandorin_job]
+
+ behaviour_state = beh_move
+
+ 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, {=check_enemy_name(actor)} false, true
+ target = waypoint
+ path_end = loop
+ pt1 = 88860000,idle | pos:32.644733428955,-11.733076095581,-278.20062255859 look:32.635128381662,-11.733076095581,-277.2018494606
+
+[logic@nr_ecologist_rydzyk]
+ suitable = {=check_npc_name(nr_ecologist_rydzyk)} true
+ prior = 500
+ active = beh@nr_ecologist_rydzyk_job
+
+
+[beh@nr_ecologist_rydzyk_job]
+
+ behaviour_state = beh_move
+
+ 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, {=check_enemy_name(actor)} false, true
+ target = waypoint
+ path_end = loop
+ pt1 = 88860000,idle | pos:34.447654724121,-11.879675865173,-247.45806884766 look:34.359435632825,-11.879675865173,-248.44870388508
+
+[logic@nr_ecologist_1]
+ suitable = {=check_npc_name(nr_ecologist_1)} true
+ prior = 500
+ active = beh@nr_ecologist_1_job
+
+
+[beh@nr_ecologist_1_job]
+
+ behaviour_state = beh_move
+
+ 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, {=check_enemy_name(actor)} false, true
+ target = waypoint
+ path_end = loop
+ pt1 = 88860000,sit_ass | pos:24.628534317017,-11.879796981812,-241.63436889648 look:25.315167486668,-11.879796981812,-242.24102640152
+
+[logic@nr_ecologist_2]
+ suitable = {=check_npc_name(nr_ecologist_2)} true
+ prior = 500
+ active = beh@nr_ecologist_2_job
+
+
+[beh@nr_ecologist_2_job]
+
+ behaviour_state = beh_move
+
+ 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, {=check_enemy_name(actor)} false, true
+ target = waypoint
+ path_end = loop
+ pt1 = 88860000,sit_ass | pos:27.540864944458,-11.88072013855,-240.82856750488 look:27.149089306593,-11.88072013855,-241.72887116671
+
+
+[logic@bellerophon_1]
+ suitable = {=check_npc_name(bellerophon)} true
+ prior = 500
+ active = beh@bellerophon_job
+
+
+[beh@bellerophon_job]
+
+ behaviour_state = beh_move
+
+ target = waypoint
+ path_end = loop
+ pt1 = 88860000,sit_ass | pos:30.001893997192,-11.701859474182,-278.17437744141 look:29.02092641592,-11.701859474182,-278.11900424957
\ No newline at end of file
diff --git a/mods/[DEV] Brotherhood/gamedata/configs/scripts/brotherhood/nr_zaton_logic.ltx b/mods/[DEV] Brotherhood/gamedata/configs/scripts/brotherhood/nr_zaton_logic.ltx
new file mode 100644
index 00000000..5fd78662
--- /dev/null
+++ b/mods/[DEV] Brotherhood/gamedata/configs/scripts/brotherhood/nr_zaton_logic.ltx
@@ -0,0 +1,16 @@
+
+[logic@alyosha_shyogolov_4]
+ suitable = {=check_npc_name(alyosha_shyogolov)} true
+ prior = 500
+ active = beh@alyosha_shyogolov_4_job
+
+[beh@alyosha_shyogolov_4_job]
+ behaviour_state = beh_move
+
+ 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
+ target = waypoint
+ path_end = loop
+ pt1 = 88860000,idle | pos:126.01683807373,-7.3208603858948,190.79092407227 look:125.96493332088,-7.3208603858948,189.79253232479
+
\ No newline at end of file
diff --git a/mods/[DEV] Brotherhood/gamedata/configs/scripts/brotherhood/rookie_village_logic.ltx b/mods/[DEV] Brotherhood/gamedata/configs/scripts/brotherhood/rookie_village_logic.ltx
new file mode 100644
index 00000000..091116ae
--- /dev/null
+++ b/mods/[DEV] Brotherhood/gamedata/configs/scripts/brotherhood/rookie_village_logic.ltx
@@ -0,0 +1,95 @@
+---Iliaz
+
+
+[logic@nr_ilyaz_1]
+ suitable = {=check_npc_name(nr_iliaz)} true
+ prior = 500
+ active = beh@nr_ilyaz_1_job
+
+[beh@nr_ilyaz_1_job]
+ behaviour_state = beh_move
+ target = waypoint
+ path_end = loop
+ pt1 = 88860000,sit_ass | pos:-223.73385620117,-19.864381790161,-163.76029968262 look:-222.83070719242,-19.864381790161,-163.73320126534
+
+[logic@nr_ilyaz_2]
+ suitable = {=check_npc_name(nr_iliaz)} true
+ prior = 500
+ active = beh@nr_ilyaz_2_1_job
+
+[beh@nr_ilyaz_base]
+ behaviour_state = beh_move
+ target = waypoint
+ walk_dist = 100
+ jog_dist = 220
+
+ walk_anim = walk
+ jog_anim = walk
+ run_anim = walk
+ path_end = loop
+
+
+[beh@nr_ilyaz_2_1_job]:beh@nr_ilyaz_base
+ on_info = {+nr_ilyaz_point_1} beh@nr_ilyaz_2_2_job
+ pt1 = 88860000,idle | pos:-207.83670043945,-6.3246264457703,-17.561170578003 look:-208.74708759785,-6.3246264457703,-17.915091872215
+
+[beh@nr_ilyaz_2_2_job]:beh@nr_ilyaz_base
+
+ on_info = {-nr_ilyaz_point_1} beh@nr_ilyaz_2_1_job
+ pt1 = 88860000,idle | pos:-222.81701660156,-9.301365852356,-13.697906494141 look:-223.74275541306,-9.301365852356,-13.826462864876
+
+--- Gutalin
+
+[logic@bh_gutalin]
+ suitable = {=check_npc_name(bh_gutalin)} true
+ prior = 500
+ active = beh@bh_gutalin_1_job
+
+[beh@bh_gutalin_1_job]:beh@nr_ilyaz_base
+ 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, {=check_enemy_name(actor)} false, true
+ on_info = {+bh_gutalin_treasure} beh@bh_gutalin_2_job
+ on_info2 = {=surge_started} beh@bh_gutalin_3_job
+ path_end = loop
+ pt1 = 88860000, idle | pos:-206.23277282715,-19.894157409668,-136.4208984375 look:-206.13894728571,-19.894157409668,-137.39541238546
+
+[beh@bh_gutalin_2_job]
+ behaviour_state = beh_move
+ target = waypoint
+ combat_ignore_cond = {=is_warfare} false, {=actor_true_enemy =check_enemy_name(actor)} false, true
+ combat_ignore_keep_when_attacked = false
+ invulnerable = {=is_warfare} false, {=check_enemy_name(actor)} false, true
+ on_info = {-bh_gutalin_treasure} beh@bh_gutalin_1_job
+ on_info2 = {=surge_started} beh@bh_gutalin_3_job
+ path_end = loop
+ pt1 = 88860000, idle | pos:-84.095733642578,-6.1258764266968,-19.095394134521 look:-83.593113720417,-6.1258764266968,-18.236057043076
+
+[beh@bh_gutalin_3_job]
+ behaviour_state = beh_move
+ target = waypoint
+ on_info = {!surge_started} beh@bh_gutalin_1_job
+ path_end = loop
+ pt1 = 88860000, idle | pos:-205.84790039063,-22.546752929688,-127.0520401001 look:-205.49457913637,-22.546752929688,-127.95124852657
+
+
+--- Shlitzer
+
+[logic@bh_shlitzer]
+ suitable = {=check_npc_name(bh_shlitzer)} true
+ prior = 500
+ active = beh@bh_shlitzer_1_job
+
+[beh@bh_shlitzer_1_job]:beh@nr_ilyaz_base
+ meet = meet
+ on_info = {+bh_shlitzer_start_done} beh@bh_shlitzer_2_job
+ pt1 = 88860000,idle | pos:-236.48327636719,-19.751678466797,-131.93586730957 look:-237.4260879159,-19.751678466797,-131.60787004232
+
+[beh@bh_shlitzer_2_job]:beh@nr_ilyaz_base
+ meet = no_meet
+ on_info = {+bh_shlitzer_init_done} beh@bh_shlitzer_3_job
+ pt1 = 88860000,idle | pos:-240.43469238281,-20.030139923096,-157.60787963867 look:-240.48021929711,-20.030139923096,-156.61001259089
+
+[beh@bh_shlitzer_3_job]:beh@nr_ilyaz_base
+ meet = meet
+ pt1 = 88860000,idle | pos:-240.43469238281,-20.030139923096,-157.60787963867 look:-240.48021929711,-20.030139923096,-156.61001259089
\ No newline at end of file
diff --git a/mods/[DEV] Brotherhood/gamedata/configs/scripts/brotherhood/zaton_logic.ltx b/mods/[DEV] Brotherhood/gamedata/configs/scripts/brotherhood/zaton_logic.ltx
new file mode 100644
index 00000000..e66f3c3e
--- /dev/null
+++ b/mods/[DEV] Brotherhood/gamedata/configs/scripts/brotherhood/zaton_logic.ltx
@@ -0,0 +1,39 @@
+----- Mercenaries
+
+
+
+[logic@zaton_mercenary_1]
+ suitable = {=check_npc_name(zaton_mercenary_1)} true
+ prior = 500
+ active = beh@zaton_mercenary_1_job
+
+[beh@zaton_mercenary_1_job]
+ behaviour_state = beh_move
+ target = waypoint
+ walk_anim = patrol
+ on_info = {=surge_started} beh@surge
+ on_info2 = {=is_night} beh@drink_1
+ path_end = loop
+ pt1 = 88860000,idle | pos:328.00573730469,38.341678619385,-403.95764160156 look:327.82991215587,38.341678619385,-402.97818154097
+
+[beh@surge]
+path_walk = surge_hide_1_walk ;guard_2_walk
+path_look = surge_hide_1_look ;guard_2_look
+on_info = {!surge_started} beh@zaton_mercenary_1_job
+gather_items_enabled = false
+help_wounded_enabled = false
+corpse_detection_enabled = false
+invulnerable = false
+
+[beh@drink_1]
+behaviour_state = beh_move
+target = waypoint
+walk_anim = patrol
+gather_items_enabled = false
+help_wounded_enabled = false
+corpse_detection_enabled = false
+invulnerable = false
+on_info = {=surge_started} beh@surge
+on_info2 = {!is_night} beh@zaton_mercenary_1_job
+path_end = loop
+pt1 = 88860000,sit_ass_drink_vodka | pos:405.10650634766,33.405792236328,-439.54626464844 look:405.02811595798,33.405792236328,-438.55846887827
diff --git a/mods/[DEV] Brotherhood/gamedata/configs/scripts/brotherhood_agr_u_door_logic.ltx b/mods/[DEV] Brotherhood/gamedata/configs/scripts/brotherhood_agr_u_door_logic.ltx
new file mode 100644
index 00000000..8f08186f
--- /dev/null
+++ b/mods/[DEV] Brotherhood/gamedata/configs/scripts/brotherhood_agr_u_door_logic.ltx
@@ -0,0 +1,32 @@
+[logic]
+active = ph_door@open
+
+[ph_door@locked]
+locked = true
+closed = true
+snd_open_start = trader_door_locked
+on_info = {+brotherhood_agru_controller_dead} ph_door@open
+
+[ph_door@close]
+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@open
+
+
+[ph_door@open]
+locked = false
+closed = false
+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@close
+
+
+[ph_door@free]
+locked = false
+closed = true
+no_force = true
+on_use = ph_door@open
\ No newline at end of file
diff --git a/mods/[DEV] Brotherhood/gamedata/configs/scripts/brotherhood_npc_control.ltx b/mods/[DEV] Brotherhood/gamedata/configs/scripts/brotherhood_npc_control.ltx
new file mode 100644
index 00000000..620bbe9c
--- /dev/null
+++ b/mods/[DEV] Brotherhood/gamedata/configs/scripts/brotherhood_npc_control.ltx
@@ -0,0 +1,32 @@
+[logic]
+active = beh@general
+post_combat_time = 0,0
+;======================
+; default logic
+;======================
+[beh@general_no_companion]
+sound_idle = state
+behavior_state = beh_move
+target = waypoint
+walk_dist = 100
+jog_dist = 220
+wait_anim = guard
+walk_anim = patrol
+jog_anim = patrol
+run_anim = panic
+delay_anim = guard
+meet = meet
+combat_ignore_cond = {=actor_enemy =check_enemy_name(actor)} false, true
+combat_ignore_keep_when_attacked = true
+gather_items_enabled = false
+help_wounded_enabled = false
+corpse_detection_enabled = false
+use_camp = false
+invulnerable = true
+
+[beh@general]
+actor_dialogs = actor_dialogs
+behavior_state = beh_wait
+target = actor
+
+
diff --git a/mods/[DEV] Brotherhood/gamedata/configs/scripts/brotherhood_npc_control_chris.ltx b/mods/[DEV] Brotherhood/gamedata/configs/scripts/brotherhood_npc_control_chris.ltx
new file mode 100644
index 00000000..a7beea38
--- /dev/null
+++ b/mods/[DEV] Brotherhood/gamedata/configs/scripts/brotherhood_npc_control_chris.ltx
@@ -0,0 +1,37 @@
+[logic]
+active = beh@general
+post_combat_time = 0,0
+prior = 500
+;======================
+; default logic
+;======================
+[beh@general_no_companion]
+sound_idle = state
+behavior_state = beh_move
+
+walk_dist = 100
+jog_dist = 220
+wait_anim = guard
+walk_anim = patrol
+jog_anim = patrol
+run_anim = panic
+delay_anim = guard
+meet = meet
+combat_ignore_cond = {=actor_enemy =check_enemy_name(actor)} false, true
+combat_ignore_keep_when_attacked = true
+gather_items_enabled = false
+help_wounded_enabled = false
+corpse_detection_enabled = false
+use_camp = false
+invulnerable = true
+
+[beh@general]
+actor_dialogs = actor_dialogs
+behavior_state = beh_wait
+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
+target = waypoint
+path_end = loop
+pt1 = 600000,guard | pos:-9.5265302658081,23.103614807129,245.18560791016 look:-10.16779088974,23.103614807129,245.9033485651
+
diff --git a/mods/[DEV] Brotherhood/gamedata/configs/scripts/brotherhood_npc_control_marlo.ltx b/mods/[DEV] Brotherhood/gamedata/configs/scripts/brotherhood_npc_control_marlo.ltx
new file mode 100644
index 00000000..7348461b
--- /dev/null
+++ b/mods/[DEV] Brotherhood/gamedata/configs/scripts/brotherhood_npc_control_marlo.ltx
@@ -0,0 +1,37 @@
+[logic]
+active = beh@general
+post_combat_time = 0,0
+prior = 500
+;======================
+; default logic
+;======================
+[beh@general_no_companion]
+sound_idle = state
+behavior_state = beh_move
+
+walk_dist = 100
+jog_dist = 220
+wait_anim = guard
+walk_anim = patrol
+jog_anim = patrol
+run_anim = panic
+delay_anim = guard
+meet = meet
+combat_ignore_cond = {=actor_enemy =check_enemy_name(actor)} false, true
+combat_ignore_keep_when_attacked = true
+gather_items_enabled = false
+help_wounded_enabled = false
+corpse_detection_enabled = false
+use_camp = false
+invulnerable = true
+
+[beh@general]
+actor_dialogs = actor_dialogs
+behavior_state = beh_wait
+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
+target = waypoint
+path_end = loop
+pt1 = 600000,guard | pos:-7.0992422103882,23.103616714478,245.94242858887 look:-8.0947472453117,23.103616714478,245.99538463727
+
diff --git a/mods/[DEV] Brotherhood/gamedata/configs/scripts/brotherhood_npc_nr_ambush_logic_1.ltx b/mods/[DEV] Brotherhood/gamedata/configs/scripts/brotherhood_npc_nr_ambush_logic_1.ltx
new file mode 100644
index 00000000..59ae24bb
--- /dev/null
+++ b/mods/[DEV] Brotherhood/gamedata/configs/scripts/brotherhood_npc_nr_ambush_logic_1.ltx
@@ -0,0 +1,14 @@
+[logic]
+active = beh@general
+
+
+[beh@general]
+actor_dialogs = actor_dialogs
+behavior_state = beh_wait
+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
+target = waypoint
+path_end = loop
+pt1 = 600000,guard | pos:-9.5265302658081,23.103614807129,245.18560791016 look:-10.16779088974,23.103614807129,245.9033485651
+
diff --git a/mods/[DEV] Brotherhood/gamedata/configs/scripts/escape/ecologist_sidorovich.ltx b/mods/[DEV] Brotherhood/gamedata/configs/scripts/escape/ecologist_sidorovich.ltx
new file mode 100644
index 00000000..61c7bd1c
--- /dev/null
+++ b/mods/[DEV] Brotherhood/gamedata/configs/scripts/escape/ecologist_sidorovich.ltx
@@ -0,0 +1,11 @@
+[logic@ecologist_sidorovich]
+ suitable = {=check_npc_name(ecologist_sidorovich)} true
+ prior = 100
+ active = beh@ecologist_sidorovich_job
+
+[beh@ecologist_sidorovich_job]
+ behaviour_state = beh_move
+ target = waypoint
+ path_end = loop
+ pt1 = 88860000,idle | pos:-217.42967224121,-19.940483093262,-167.43905639648 look:-218.35082358122,-19.940483093262,-167.48664008826
+
\ No newline at end of file
diff --git a/mods/[DEV] Brotherhood/gamedata/configs/scripts/escape/esc_6_8_railway_guard.ltx b/mods/[DEV] Brotherhood/gamedata/configs/scripts/escape/esc_6_8_railway_guard.ltx
new file mode 100644
index 00000000..9c19fc50
--- /dev/null
+++ b/mods/[DEV] Brotherhood/gamedata/configs/scripts/escape/esc_6_8_railway_guard.ltx
@@ -0,0 +1,67 @@
+[logic@esc_6_8_railway_guard_1]
+suitable = {+bandit_guards_esc_6_8_dead} true, {+sidorovich_railway_assault_start =target_squad_name(bandit_guards_esc_6_8)} true, {-sidorovich_railway_assault_start =target_squad_name(bandit_guards_esc_6_8_basic)} true
+active = beh@guard_1
+prior = 100
+
+[logic@esc_6_8_railway_guard_2]
+suitable = {+bandit_guards_esc_6_8_dead} true, {+sidorovich_railway_assault_start =target_squad_name(bandit_guards_esc_6_8)} true, {-sidorovich_railway_assault_start =target_squad_name(bandit_guards_esc_6_8_basic)} true
+active = beh@guard_2
+prior = 100
+
+[logic@esc_6_8_railway_guard_3]
+suitable = {+bandit_guards_esc_6_8_dead} true, {+sidorovich_railway_assault_start =target_squad_name(bandit_guards_esc_6_8)} true, {-sidorovich_railway_assault_start =target_squad_name(bandit_guards_esc_6_8_basic)} true
+active = beh@guard_3
+prior = 100
+
+[logic@esc_6_8_railway_guard_4]
+suitable = {+bandit_guards_esc_6_8_dead} true, {+sidorovich_railway_assault_start =target_squad_name(bandit_guards_esc_6_8)} true, {-sidorovich_railway_assault_start =target_squad_name(bandit_guards_esc_6_8_basic)} true
+active = beh@guard_4
+prior = 100
+
+[logic@esc_6_8_railway_guard_5]
+suitable = {+bandit_guards_esc_6_8_dead} true, {+sidorovich_railway_assault_start =target_squad_name(bandit_guards_esc_6_8)} true, {-sidorovich_railway_assault_start =target_squad_name(bandit_guards_esc_6_8_basic)} true
+active = beh@guard_5
+prior = 100
+
+[logic@esc_6_8_railway_guard_6]
+suitable = {+bandit_guards_esc_6_8_dead} true, {+sidorovich_railway_assault_start =target_squad_name(bandit_guards_esc_6_8)} true, {-sidorovich_railway_assault_start =target_squad_name(bandit_guards_esc_6_8_basic)} true
+active = beh@guard_6
+prior = 100
+
+[logic@esc_6_8_railway_guard_7]
+suitable = {+sidorovich_railway_assault_start =target_squad_name(bandit_guards_esc_6_8)} true, {-sidorovich_railway_assault_start =target_squad_name(bandit_guards_esc_6_8_basic)} true
+active = beh@guard_7
+prior = 100
+
+
+
+
+
+[beh@base]
+target = waypoint
+path_end = loop
+walk_dist = 0
+jog_dist = 0
+run_anim = patrol
+
+
+[beh@guard_1]:beh@base
+pt1 = 999999,guard | pos:66.513153076172,0.55428129434586,154.61851501465 look:66.534742185846,0.55428129434586,153.61877405643
+
+[beh@guard_2]:beh@base
+pt1 = 999999,guard | pos:45.955604553223,2.0588965415955,146.10258483887 look:46.253153413534,2.0588965415955,145.14877581596
+
+[beh@guard_3]:beh@base
+pt1 = 999999,guard | pos:66.596824645996,0.57818895578384,159.01934814453 look:66.986903965473,0.57818895578384,159.93991649151
+
+[beh@guard_4]:beh@base
+pt1 = 999999,guard | pos:57.583679199219,1.3971667289734,167.20544433594 look:57.411917537451,1.3971667289734,168.17577457428
+
+[beh@guard_5]:beh@base
+pt1 = 999999,guard | pos:58.874450683594,-0.27230915427208,149.22178649902 look:59.119143307209,-0.27230915427208,148.25220829248
+
+[beh@guard_6]:beh@base
+pt1 = 999999,guard | pos:50.634643554688,1.8462357521057,153.6019744873 look:50.646584953181,1.8462357521057,154.59752559662
+
+[beh@guard_7]:beh@base
+pt1 = 999999,guard | pos:60.778995513916,-0.64842540025711,151.97283935547 look:60.841007467359,-0.64842540025711,150.98021924496
\ No newline at end of file
diff --git a/mods/[DEV] Brotherhood/gamedata/configs/scripts/escape/sidorovich_railway_assault.ltx b/mods/[DEV] Brotherhood/gamedata/configs/scripts/escape/sidorovich_railway_assault.ltx
new file mode 100644
index 00000000..35321bf6
--- /dev/null
+++ b/mods/[DEV] Brotherhood/gamedata/configs/scripts/escape/sidorovich_railway_assault.ltx
@@ -0,0 +1,137 @@
+[logic@csky_assault_esc_5_7_1]
+suitable = {=check_npc_name(assault_csky_leader_esc_5_7)} true
+active = beh@csky_leader
+prior = 500
+
+[logic@csky_assault_esc_5_7_2]
+suitable = {=target_squad_name(csky_assault_esc_5_7)} true
+active = beh@csky_1
+prior = 500
+
+[logic@csky_assault_esc_5_7_3]
+suitable = {=target_squad_name(csky_assault_esc_5_7)} true
+active = beh@csky_2
+prior = 500
+
+[logic@csky_assault_esc_5_7_4]
+suitable = {=target_squad_name(csky_assault_esc_5_7)} true
+active = beh@csky_3
+prior = 500
+
+
+[beh@base]
+dont_keep_items = true
+gather_items_enabled = false
+help_wounded_enabled = false
+corpse_detection_enabled = false
+combat_ignore_keep_when_attacked = false
+target = waypoint
+path_end = loop
+
+[beh@csky]:beh@base
+run_anim = rush
+meet = no_meet
+
+[beh@csky_ldr]:beh@base
+run_anim = rush
+
+[beh@csky_1]:beh@csky
+pt1 = 999999,guard | pos:-0.97017461061478,0.57503372430801,270.77743530273 look:0.02721381187439,0.57503372430801,270.70910585672
+on_info = {+esc_railway_assault_go} beh@assault_railway
+[beh@csky_2]:beh@csky
+pt1 = 999999,guard | pos:-0.58207929134369,0.48372256755829,278.76675415039 look:0.41685009002686,0.48372256755829,278.75596022699
+on_info = {+esc_railway_assault_go} beh@assault_railway
+[beh@csky_3]:beh@csky
+pt1 = 999999,guard | pos:-0.57437670230865,0.47155845165253,276.30578613281 look:0.41855996847153,0.47155845165253,276.18726325035
+on_info = {+esc_railway_assault_go} beh@assault_railway
+[beh@csky_leader]:beh@csky_ldr
+pt1 = 999999,idle | pos:1.4632341861725,0.52213138341904,274.15490722656 look:2.4606368541718,0.52213138341904,274.15132021927
+on_info = {+esc_railway_assault_go} beh@assault_railway
+
+
+
+
+
+
+
+
+
+[logic@stalker_assault_esc_5_9_1]
+suitable = {=check_npc_name(assault_stalker_leader_esc_5_9)} true
+active = beh@stalker_leader
+prior = 500
+
+[logic@stalker_assault_esc_5_9_2]
+suitable = {=target_squad_name(stalker_assault_esc_5_9)} true
+active = beh@stalker_2
+prior = 500
+
+[logic@stalker_assault_esc_5_9_3]
+suitable = {=target_squad_name(stalker_assault_esc_5_9)} true
+active = beh@stalker_3
+prior = 500
+
+[logic@stalker_assault_esc_5_9_4]
+suitable = {=target_squad_name(stalker_assault_esc_5_9)} true
+active = beh@stalker_1
+prior = 500
+
+[beh@stalker_1]:beh@csky
+pt1 = 999999,guard | pos:-31.98127746582,2.3382940292358,83.832672119141 look:-32.093844458461,2.3382940292358,84.823195934296
+on_info = {+esc_railway_assault_go} beh@assault_railway_2
+
+[beh@stalker_2]:beh@csky
+pt1 = 999999,guard | pos:-31.75274848938,2.420392036438,81.387847900391 look:-31.865346722305,2.420392036438,82.378646731377
+on_info = {+esc_railway_assault_go} beh@assault_railway_2
+
+[beh@stalker_3]:beh@csky
+pt1 = 999999,guard | pos:-31.309297561646,2.4102694988251,78.398300170898 look:-31.383918277919,2.4102694988251,79.363494098186
+on_info = {+esc_railway_assault_go} beh@assault_railway_2
+
+[beh@stalker_leader]:beh@csky_ldr
+pt1 = 999999,guard | pos:-33.90230178833,2.3749706745148,81.457176208496 look:-34.014900021255,2.3749706745148,82.447975039482
+on_info = {+esc_railway_assault_go} beh@assault_railway_2
+
+[beh@assault_railway]:beh@csky
+pt1 = 999999,guard | pos:56.947010040283,1.0190920829773,156.9591217041 look:57.002121996135,1.0190920829773,155.96157598495
+
+[beh@assault_railway_2]:beh@csky
+pt1 = 999999,guard | pos:60.778995513916,-0.64842540025711,151.97283935547 look:60.841007467359,-0.64842540025711,150.98021924496
+
+
+
+
+
+[logic@esc_bandit_reinforcment_railway_1]
+suitable = {=target_squad_name(bandit_reinforcment_esc_6_8)} true
+active = beh@bandit_1
+prior = 500
+
+[logic@esc_bandit_reinforcment_railway_2]
+suitable = {=target_squad_name(bandit_reinforcment_esc_6_8)} true
+active = beh@bandit_1
+prior = 500
+
+[logic@esc_bandit_reinforcment_railway_3]
+suitable = {=target_squad_name(bandit_reinforcment_esc_6_8)} true
+active = beh@bandit_1
+prior = 500
+
+[logic@esc_bandit_reinforcment_railway_4]
+suitable = {=target_squad_name(bandit_reinforcment_esc_6_8)} true
+active = beh@bandit_1
+prior = 500
+
+[logic@esc_bandit_reinforcment_railway_5]
+suitable = {=target_squad_name(bandit_reinforcment_esc_6_8)} true
+active = beh@bandit_1
+prior = 500
+
+
+[beh@bandit_1]
+ combat_ignore_cond = {!dist_to_beh(80)} true
+ run_anim = rush
+ behaviour_state = beh_move
+ target = waypoint
+ path_end = loop
+ pt1 = 100000,idle | pos:66.513153076172,0.55428129434586,154.61851501465 look:66.534742185846,0.55428129434586,153.61877405643
\ No newline at end of file
diff --git a/mods/[DEV] Brotherhood/gamedata/configs/scripts/escape/smart/esc_smart_terrain_1_11.ltx b/mods/[DEV] Brotherhood/gamedata/configs/scripts/escape/smart/esc_smart_terrain_1_11.ltx
new file mode 100644
index 00000000..b5337700
--- /dev/null
+++ b/mods/[DEV] Brotherhood/gamedata/configs/scripts/escape/smart/esc_smart_terrain_1_11.ltx
@@ -0,0 +1,19 @@
+[smart_terrain]
+squad_id = 1
+max_population = 1
+respawn_params = respawn@esc_smart_terrain_1_11
+respawn_idle = 86400
+
+
+
+[respawn@esc_smart_terrain_1_11] ;-- Type: spawn_all_weak
+spawn_all_weak
+
+
+
+[spawn_all_weak] ;-- Zombies/Normal mutants - Rates of groups:(3 zombies + 1 tushkano + 3 dogs + 2 cats + 3 fleshes/boars)
+spawn_squads = 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 ;--spawn-all-weak
+spawn_num = 1
+
+[exclusive]
+nr_ilyaz_2 = brotherhood\rookie_village_logic.ltx
\ No newline at end of file
diff --git a/mods/[DEV] Brotherhood/gamedata/configs/scripts/escape/smart/esc_smart_terrain_2_12.ltx b/mods/[DEV] Brotherhood/gamedata/configs/scripts/escape/smart/esc_smart_terrain_2_12.ltx
new file mode 100644
index 00000000..e260151d
--- /dev/null
+++ b/mods/[DEV] Brotherhood/gamedata/configs/scripts/escape/smart/esc_smart_terrain_2_12.ltx
@@ -0,0 +1,69 @@
+[smart_terrain];esc_smart_terrain_2_12 ;;.
+squad_id = 2
+max_population = 6
+respawn_params = respawn@esc_smart_terrain_2_12
+respawn_idle = 86400
+
+[respawn@esc_smart_terrain_2_12]
+spawn_stalker@advanced
+
+[spawn_stalker@advanced]
+spawn_squads = stalker_sim_squad_novice, stalker_sim_squad_advanced
+spawn_num = 3
+
+[exclusive]
+nr_ilyaz_1 = brotherhood\rookie_village_logic.ltx
+bh_gutalin = brotherhood\rookie_village_logic.ltx
+bh_shlitzer = brotherhood\rookie_village_logic.ltx
+stalker_lockdown_1 = brotherhood\esc_lockdown.ltx
+stalker_lockdown_2 = brotherhood\esc_lockdown.ltx
+stalker_lockdown_3 = brotherhood\esc_lockdown.ltx
+stalker_lockdown_4 = brotherhood\esc_lockdown.ltx
+stalker_lockdown_5 = brotherhood\esc_lockdown.ltx
+stalker_lockdown_6 = brotherhood\esc_lockdown.ltx
+stalker_lockdown_7 = brotherhood\esc_lockdown.ltx
+stalker_lockdown_8 = brotherhood\esc_lockdown.ltx
+stalker_lockdown_9 = brotherhood\esc_lockdown.ltx
+stalker_lockdown_10 = brotherhood\esc_lockdown.ltx
+stalker_lockdown_11 = brotherhood\esc_lockdown.ltx
+stalker_lockdown_12 = brotherhood\esc_lockdown.ltx
+stalker_lockdown_13 = brotherhood\esc_lockdown.ltx
+stalker_lockdown_14 = brotherhood\esc_lockdown.ltx
+stalker_lockdown_15 = brotherhood\esc_lockdown.ltx
+
+
+
+
+;esc_2_12_stalker_nimble = escape\esc_2_12_stalker_nimble.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
+devushka = escape\devushka.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
+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
+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_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
\ No newline at end of file
diff --git a/mods/[DEV] Brotherhood/gamedata/configs/scripts/escape/smart/esc_smart_terrain_2_14.ltx b/mods/[DEV] Brotherhood/gamedata/configs/scripts/escape/smart/esc_smart_terrain_2_14.ltx
new file mode 100644
index 00000000..96dde5e5
--- /dev/null
+++ b/mods/[DEV] Brotherhood/gamedata/configs/scripts/escape/smart/esc_smart_terrain_2_14.ltx
@@ -0,0 +1,20 @@
+[smart_terrain];esc_smart_terrain_2_14
+squad_id = 3
+max_population = 1
+respawn_params = respawn@esc_smart_terrain_2_14
+respawn_idle = 86400
+
+[respawn@esc_smart_terrain_2_14] ;-- Type: spawn_all_weak
+spawn_all_weak
+
+
+
+[spawn_all_weak] ;-- Zombies/Normal mutants - Rates of groups:(3 zombies + 1 tushkano + 3 dogs + 2 cats + 3 fleshes/boars)
+spawn_squads = 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 ;--spawn-all-weak
+spawn_num = 1
+
+[exclusive]
+lockdown_1 = brotherhood\esc_lockdown.ltx
+lockdown_2 = brotherhood\esc_lockdown.ltx
+lockdown_3 = brotherhood\esc_lockdown.ltx
+lockdown_4 = brotherhood\esc_lockdown.ltx
\ No newline at end of file
diff --git a/mods/[DEV] Brotherhood/gamedata/configs/scripts/escape/smart/esc_smart_terrain_3_16.ltx b/mods/[DEV] Brotherhood/gamedata/configs/scripts/escape/smart/esc_smart_terrain_3_16.ltx
new file mode 100644
index 00000000..ebb3e310
--- /dev/null
+++ b/mods/[DEV] Brotherhood/gamedata/configs/scripts/escape/smart/esc_smart_terrain_3_16.ltx
@@ -0,0 +1,37 @@
+[smart_terrain];esc_smart_terrain_3_16 ;;.
+squad_id = 4
+max_population = 4
+respawn_params = respawn@esc_smart_terrain_3_16
+respawn_idle = 86400
+
+
+[respawn@esc_smart_terrain_3_16]
+spawn_military_special
+spawn_military_special_2
+
+[spawn_military_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_military_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
+
+
+[exclusive]
+;mlr
+esc_3_16_military_trader = escape\esc_3_16_military_trader_logic.ltx
+army_south_mechan_mlr = escape\esc_3_16_military_mechan_logic.ltx
+;mlr
+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_minigunner_excl = escape\esc_smart_terrain_3_16_smart_logic.ltx
+
+
+bh_badger = brotherhood\military_checkpoint_logic.ltx
+bh_execution_lockdown_1 = brotherhood\esc_lockdown.ltx
+bh_execution_lockdown_2 = brotherhood\esc_lockdown.ltx
+bh_execution_lockdown_3 = brotherhood\esc_lockdown.ltx
\ No newline at end of file
diff --git a/mods/[DEV] Brotherhood/gamedata/configs/scripts/escape/smart/esc_smart_terrain_3_7.ltx b/mods/[DEV] Brotherhood/gamedata/configs/scripts/escape/smart/esc_smart_terrain_3_7.ltx
new file mode 100644
index 00000000..4e059df7
--- /dev/null
+++ b/mods/[DEV] Brotherhood/gamedata/configs/scripts/escape/smart/esc_smart_terrain_3_7.ltx
@@ -0,0 +1,21 @@
+[smart_terrain]
+squad_id = 5
+max_population = 1
+respawn_params = respawn@esc_smart_terrain_3_7
+respawn_idle = 86400
+
+
+
+[respawn@esc_smart_terrain_3_7] ;-- Type: spawn_all_weak
+spawn_all_weak
+
+
+
+[spawn_all_weak] ;-- Zombies/Normal mutants - Rates of groups:(3 zombies + 1 tushkano + 3 dogs + 2 cats + 3 fleshes/boars)
+spawn_squads = 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 ;--spawn-all-weak
+spawn_num = 1
+
+[exclusive]
+lockdown_5 = brotherhood\esc_lockdown.ltx
+lockdown_6 = brotherhood\esc_lockdown.ltx
+lockdown_7 = brotherhood\esc_lockdown.ltx
diff --git a/mods/[DEV] Brotherhood/gamedata/configs/scripts/escape/smart/esc_smart_terrain_4_9.ltx b/mods/[DEV] Brotherhood/gamedata/configs/scripts/escape/smart/esc_smart_terrain_4_9.ltx
new file mode 100644
index 00000000..3cf22491
--- /dev/null
+++ b/mods/[DEV] Brotherhood/gamedata/configs/scripts/escape/smart/esc_smart_terrain_4_9.ltx
@@ -0,0 +1,30 @@
+[smart_terrain]
+squad_id = 10
+max_population = 1
+respawn_params = respawn@esc_smart_terrain_4_9
+respawn_idle = 86400
+
+
+
+[respawn@esc_smart_terrain_4_9] ;-- Type: c_1
+spawn_all_weak_c_1_1
+spawn_all_normal_c_1_2
+
+
+
+[spawn_all_weak_c_1_1]
+spawn_squads = 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 ;--spawn-all-weak
+spawn_num = {!actor_week_in_zone(1)} 1, {=actor_week_in_zone(1)} 0
+
+[spawn_all_normal_c_1_2]
+spawn_squads = 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, simulation_fracture, simulation_lurker, simulation_snork, simulation_bloodsucker, simulation_psysucker ;--spawn-all-normal
+spawn_num = {=actor_week_in_zone(1)} 1, {!actor_week_in_zone(1)} 0
+
+
+[exclusive]
+;---- StfZ
+stalker_assault_esc_5_9_1 = escape\sidorovich_railway_assault.ltx
+stalker_assault_esc_5_9_2 = escape\sidorovich_railway_assault.ltx
+stalker_assault_esc_5_9_3 = escape\sidorovich_railway_assault.ltx
+stalker_assault_esc_5_9_4 = escape\sidorovich_railway_assault.ltx
+;---- Stfz
\ No newline at end of file
diff --git a/mods/[DEV] Brotherhood/gamedata/configs/scripts/escape/smart/esc_smart_terrain_5_7.ltx b/mods/[DEV] Brotherhood/gamedata/configs/scripts/escape/smart/esc_smart_terrain_5_7.ltx
new file mode 100644
index 00000000..96ef0484
--- /dev/null
+++ b/mods/[DEV] Brotherhood/gamedata/configs/scripts/escape/smart/esc_smart_terrain_5_7.ltx
@@ -0,0 +1,43 @@
+[smart_terrain];esc_smart_terrain_5_7 ;; 2
+squad_id = 15
+max_population = 3
+respawn_params = respawn@esc_smart_terrain_5_7
+respawn_idle = 86400
+
+[respawn@esc_smart_terrain_5_7]
+spawn_stalker@advanced
+spawn_stalker@csky
+
+[spawn_stalker@advanced]
+spawn_squads = stalker_sim_squad_novice, stalker_sim_squad_advanced
+spawn_num = 3
+
+[spawn_stalker@csky]
+spawn_squads = csky_sim_squad_novice, ecolog_sim_squad_novice
+spawn_num = {~20} 1, 0
+
+
+[exclusive]
+;---- StfZ
+csky_assault_esc_5_7_1 = escape\sidorovich_railway_assault.ltx
+csky_assault_esc_5_7_2 = escape\sidorovich_railway_assault.ltx
+csky_assault_esc_5_7_3 = escape\sidorovich_railway_assault.ltx
+csky_assault_esc_5_7_4 = escape\sidorovich_railway_assault.ltx
+castor_lockdown_1 = brotherhood\esc_lockdown.ltx
+pollox_lockdown_2 = brotherhood\esc_lockdown.ltx
+;---- Stfz
+
+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
+
+esc_smart_terrain_5_7_loner_mechanic = escape\esc_smart_terrain_5_7_smart_logic.ltx
+esc_main_base_trader_mlr = 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_beh_tech_job_1 = escape\esc_smart_terrain_5_7_smart_logic.ltx
\ No newline at end of file
diff --git a/mods/[DEV] Brotherhood/gamedata/configs/scripts/escape/smart/esc_smart_terrain_6_6.ltx b/mods/[DEV] Brotherhood/gamedata/configs/scripts/escape/smart/esc_smart_terrain_6_6.ltx
new file mode 100644
index 00000000..cfae6915
--- /dev/null
+++ b/mods/[DEV] Brotherhood/gamedata/configs/scripts/escape/smart/esc_smart_terrain_6_6.ltx
@@ -0,0 +1,23 @@
+[smart_terrain]
+squad_id = 17
+max_population = 1
+respawn_params = respawn@esc_smart_terrain_6_6
+respawn_idle = 172800
+
+
+
+[respawn@esc_smart_terrain_6_6]
+spawn_special
+
+
+
+[spawn_special]
+spawn_squads = 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
+spawn_num = {=actor_week_in_zone(4)} 1, 0
+
+[exclusive]
+bh_ironchain_1 = brotherhood\esc_smuggling_logic.ltx
+bh_ironchain_2 = brotherhood\esc_smuggling_logic.ltx
+bh_ironchain_3 = brotherhood\esc_smuggling_logic.ltx
+bh_ironchain_4 = brotherhood\esc_smuggling_logic.ltx
+bh_ironchain_5 = brotherhood\esc_smuggling_logic.ltx
\ No newline at end of file
diff --git a/mods/[DEV] Brotherhood/gamedata/configs/scripts/escape/smart/esc_smart_terrain_6_8.ltx b/mods/[DEV] Brotherhood/gamedata/configs/scripts/escape/smart/esc_smart_terrain_6_8.ltx
new file mode 100644
index 00000000..0647fc66
--- /dev/null
+++ b/mods/[DEV] Brotherhood/gamedata/configs/scripts/escape/smart/esc_smart_terrain_6_8.ltx
@@ -0,0 +1,41 @@
+[smart_terrain];esc_smart_terrain_6_8 ;;îáðóøåííûé ìîñò
+squad_id = 18
+max_population = 3
+respawn_idle = 66400
+respawn_params = respawn@esc_smart_terrain_6_8
+
+
+[respawn@esc_smart_terrain_6_8]
+spawn@squad_1
+spawn@squad_2
+spawn@squad_3
+spawn@general
+
+[spawn@squad_1]
+spawn_squads = csky_guards_esc_6_8
+spawn_num = {+esc_railbridge_taken !squad_exist(csky_guards_esc_6_8)} 1, 0
+
+[spawn@squad_2]
+spawn_squads = stalker_guards_1_esc_6_8
+spawn_num = {+esc_railbridge_taken !squad_exist(stalker_guards_1_esc_6_8)} 1, 0
+
+[spawn@squad_3]
+spawn_squads = stalker_guards_2_esc_6_8
+spawn_num = {+esc_railbridge_taken !squad_exist(stalker_guards_2_esc_6_8)} 1, 0
+
+[spawn@general]
+spawn_squads = bandit_guards_esc_6_8_basic
+spawn_num = {-esc_railbridge_taken} 1, 0
+
+
+
+[exclusive]
+;----StfZ
+esc_6_8_railway_guard_1 = escape\esc_6_8_railway_guard.ltx
+esc_6_8_railway_guard_2 = escape\esc_6_8_railway_guard.ltx
+esc_6_8_railway_guard_3 = escape\esc_6_8_railway_guard.ltx
+esc_6_8_railway_guard_4 = escape\esc_6_8_railway_guard.ltx
+esc_6_8_railway_guard_5 = escape\esc_6_8_railway_guard.ltx
+esc_6_8_railway_guard_6 = escape\esc_6_8_railway_guard.ltx
+esc_6_8_railway_guard_7 = escape\esc_6_8_railway_guard.ltx
+;----StfZ
\ No newline at end of file
diff --git a/mods/[DEV] Brotherhood/gamedata/configs/scripts/escape/smart/esc_smart_terrain_7_11.ltx b/mods/[DEV] Brotherhood/gamedata/configs/scripts/escape/smart/esc_smart_terrain_7_11.ltx
new file mode 100644
index 00000000..0357e403
--- /dev/null
+++ b/mods/[DEV] Brotherhood/gamedata/configs/scripts/escape/smart/esc_smart_terrain_7_11.ltx
@@ -0,0 +1,33 @@
+[smart_terrain]
+squad_id = 19
+max_population = 3
+respawn_params = respawn@esc_smart_terrain_7_11
+respawn_idle = 86400
+
+
+
+[respawn@esc_smart_terrain_7_11]
+spawn_bandit@advanced
+
+
+[spawn_bandit@advanced]
+spawn_squads = bandit_sim_squad_novice, bandit_sim_squad_advanced
+spawn_num = 2
+
+
+
+[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
+
+
+;----StfZ
+esc_bandit_reinforcment_railway_1 = escape\sidorovich_railway_assault.ltx
+esc_bandit_reinforcment_railway_2 = escape\sidorovich_railway_assault.ltx
+esc_bandit_reinforcment_railway_3 = escape\sidorovich_railway_assault.ltx
+esc_bandit_reinforcment_railway_4 = escape\sidorovich_railway_assault.ltx
+esc_bandit_reinforcment_railway_5 = escape\sidorovich_railway_assault.ltx
+;----StfZ
\ No newline at end of file
diff --git a/mods/[DEV] Brotherhood/gamedata/configs/scripts/garbage/brotherhood_logic.ltx b/mods/[DEV] Brotherhood/gamedata/configs/scripts/garbage/brotherhood_logic.ltx
new file mode 100644
index 00000000..2a29a70b
--- /dev/null
+++ b/mods/[DEV] Brotherhood/gamedata/configs/scripts/garbage/brotherhood_logic.ltx
@@ -0,0 +1,69 @@
+[logic@bellerophon_logic]
+ suitable = {=check_npc_name(bellerophon)} true
+ prior = 500
+ active = beh@bellerophon_job
+
+[beh@bellerophon_job]
+ gather_items_enabled = false
+ behaviour_state = beh_move
+ target = waypoint
+ walk_anim = patrol
+ 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
+
+ path_end = loop
+ pt1 = 100000,sit_ass_drink_vodka | pos:-95.646942138672,0.71350866556168,-3.8548483848572 look:-95.672554219142,0.71350866556168,-2.9741134643555
+
+[logic@bellerophon_logic_2]
+ suitable = {=check_npc_name(bellerophon)} true
+ prior = 500
+ active = beh@bellerophon_job_2
+
+[beh@bellerophon_job_2]
+ gather_items_enabled = false
+ behaviour_state = beh_move
+ target = waypoint
+ walk_anim = patrol
+ 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
+
+ path_end = loop
+ pt1 = 100000,sit_ass_drink_vodka | pos:20.758554458618,0.15221303701401,11.817081451416 look:19.781954109669,0.15221303701401,11.732858784497
+
+
+
+[logic@butcher_tug_1_logic]
+ suitable = {=check_npc_name(butcher_tug_1)} true
+ prior = 500
+ active = beh@butcher_tug_1_1_job
+
+[beh@butcher_tug_1_1_job]
+ gather_items_enabled = false
+ behaviour_state = beh_move
+ target = waypoint
+ walk_anim = patrol
+ 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
+
+ path_end = loop
+ pt1 = 100000,idle | pos:-98.773048400879,0.71849876642227,-1.2279287576675 look:-99.749850034714,0.71849876642227,-1.2511473894119
+
+[logic@butcher_tug_2_logic]
+ suitable = {=check_npc_name(butcher_tug_2)} true
+ prior = 500
+ active = beh@butcher_tug_2_1_job
+
+[beh@butcher_tug_2_1_job]
+ gather_items_enabled = false
+ behaviour_state = beh_move
+ target = waypoint
+ walk_anim = patrol
+ 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
+
+ path_end = loop
+ pt1 = 100000,idle | pos:-98.735130310059,0.7244935631752,-3.1979916095734 look:-99.103618651628,0.7244935631752,-2.3070219755173
\ No newline at end of file
diff --git a/mods/[DEV] Brotherhood/gamedata/configs/scripts/garbage/smart/gar_smart_terrain_3_5.ltx b/mods/[DEV] Brotherhood/gamedata/configs/scripts/garbage/smart/gar_smart_terrain_3_5.ltx
new file mode 100644
index 00000000..4f9584ed
--- /dev/null
+++ b/mods/[DEV] Brotherhood/gamedata/configs/scripts/garbage/smart/gar_smart_terrain_3_5.ltx
@@ -0,0 +1,24 @@
+[smart_terrain]
+squad_id = 5
+max_population = 3
+respawn_idle = 86400
+
+faction_controlled = stalker, bandit
+faction_respawn_num = 2
+default_faction = stalker
+
+[exclusive]
+hunter_gar_trader_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
+
+
+;----StfZ
+bellerophon_logic = garbage\brotherhood_logic.ltx
+butcher_tug_1_logic = garbage\brotherhood_logic.ltx
+butcher_tug_2_logic = garbage\brotherhood_logic.ltx
+;----StfZ
\ No newline at end of file
diff --git a/mods/[DEV] Brotherhood/gamedata/configs/scripts/jupiter/jup_b205_smart_terrain_tushkano.ltx b/mods/[DEV] Brotherhood/gamedata/configs/scripts/jupiter/jup_b205_smart_terrain_tushkano.ltx
new file mode 100644
index 00000000..271500b8
--- /dev/null
+++ b/mods/[DEV] Brotherhood/gamedata/configs/scripts/jupiter/jup_b205_smart_terrain_tushkano.ltx
@@ -0,0 +1,32 @@
+[smart_terrain];jup_b205_smart_terrain_tushkano
+;arrive_dist = 1000
+squad_id = 48
+max_population = 1
+respawn_params = respawn@jup_b205_smart_terrain_tushkano
+respawn_idle = 259200
+
+[respawn@jup_b205_smart_terrain_tushkano]
+spawn_trapper_chimera
+spawn_normal_chimera
+
+[spawn_trapper_chimera]
+spawn_squads = trapper_chimera_2
+spawn_num = {-give_task_trapper_chimera_2_done !squad_exist(trapper_chimera_2)} 1, 0
+
+
+[spawn_normal_chimera]
+spawn_squads = simulation_chimera
+spawn_num = {+give_task_trapper_chimera_2_done !squad_exist(simulation_chimera)} 1, 0
+
+
+
+[exclusive]
+tushkano_work_01 = jupiter\jup_b205_evil_tushkano.ltx
+tushkano_work_02 = jupiter\jup_b205_evil_tushkano.ltx
+tushkano_work_03 = jupiter\jup_b205_evil_tushkano.ltx
+tushkano_work_04 = jupiter\jup_b205_evil_tushkano.ltx
+tushkano_work_05 = jupiter\jup_b205_evil_tushkano.ltx
+tushkano_work_06 = jupiter\jup_b205_evil_tushkano.ltx
+tushkano_work_07 = jupiter\jup_b205_evil_tushkano.ltx
+tushkano_work_08 = jupiter\jup_b205_evil_tushkano.ltx
+
diff --git a/mods/[DEV] Brotherhood/gamedata/configs/scripts/jupiter/jupiter_monk.ltx b/mods/[DEV] Brotherhood/gamedata/configs/scripts/jupiter/jupiter_monk.ltx
new file mode 100644
index 00000000..7b272629
--- /dev/null
+++ b/mods/[DEV] Brotherhood/gamedata/configs/scripts/jupiter/jupiter_monk.ltx
@@ -0,0 +1,151 @@
+[logic@jupiter_monk]
+ suitable = {=check_npc_name(jupiter_monk)} true
+ prior = 500
+ active = beh@jupiter_monk_job
+
+[beh@base_1]
+ combat_ignore_cond = true
+ combat_ignore_keep_when_attacked = true
+ invulnerable = true
+
+
+
+[beh@jupiter_monk_job]:beh@base_1
+ run_anim = rush
+ on_info = {+jupiter_mercenary_assault_go} beh@jupiter_monk_assault
+ behaviour_state = beh_move
+ target = waypoint
+ path_end = loop
+ pt1 = 100000,idle | pos:-46.106330871582,3.4867804050446,199.37236022949 look:-45.110081613064,3.4867804050446,199.39352643304
+
+[beh@jupiter_monk_assault]
+ combat_ignore_cond = {!dist_to_beh(80)} true
+ run_anim = rush
+ behaviour_state = beh_move
+ target = waypoint
+ path_end = loop
+ pt1 = 100000,idle | pos:148.66848754883,1.1857712268829,217.58020019531 look:147.73004955053,1.1857712268829,217.23507833481
+
+[logic@jupiter_stalker_assault_1]
+suitable = {=target_squad_name(jupiter_stalker_assault_1_squad)} true
+active = beh@jupiter_stalker_assault_job_1
+prior = 500
+
+[logic@jupiter_stalker_assault_2]
+suitable = {=target_squad_name(jupiter_stalker_assault_1_squad)} true
+active = beh@jupiter_stalker_assault_job_2
+prior = 500
+
+[logic@jupiter_stalker_assault_3]
+suitable = {=target_squad_name(jupiter_stalker_assault_1_squad)} true
+active = beh@jupiter_stalker_assault_job_3
+prior = 500
+
+[logic@jupiter_stalker_assault_4]
+suitable = {=target_squad_name(jupiter_stalker_assault_1_squad)} true
+active = beh@jupiter_stalker_assault_job_4
+prior = 500
+
+[beh@jupiter_stalker_assault_job_1]:beh@base_1
+ run_anim = rush
+ behaviour_state = beh_move
+ target = waypoint
+ on_info = {+jupiter_mercenary_assault_go} beh@jupiter_stalker_assault_go_1
+ path_end = loop
+ pt1 = 100000,idle | pos:-46.474960327148,3.4870412349701,196.08959960938 look:-45.48581725359,3.4870412349701,196.1988914609
+
+[beh@jupiter_stalker_assault_job_2]:beh@base_1
+ run_anim = rush
+ behaviour_state = beh_move
+ target = waypoint
+ on_info = {+jupiter_mercenary_assault_go} beh@jupiter_stalker_assault_go_2
+ path_end = loop
+ pt1 = 100000,idle | pos:-48.031265258789,3.4879033565521,195.95745849609 look:-47.040500760078,3.4879033565521,196.04049598426
+
+[beh@jupiter_stalker_assault_job_3]:beh@base_1
+ run_anim = rush
+ behaviour_state = beh_move
+ target = waypoint
+ on_info = {+jupiter_mercenary_assault_go} beh@jupiter_stalker_assault_go_3
+ path_end = loop
+ pt1 = 100000,idle | pos:-48.205368041992,3.4880321025848,198.15892028809 look:-47.214603543282,3.4880321025848,198.24195777625
+
+[beh@jupiter_stalker_assault_job_4]:beh@base_1
+ run_anim = rush
+ behaviour_state = beh_move
+ target = waypoint
+ on_info = {+jupiter_mercenary_assault_go} beh@jupiter_stalker_assault_go_4
+ path_end = loop
+ pt1 = 100000,idle | pos:-48.375778198242,3.4881393909454,200.25389099121 look:-47.385013699532,3.4881393909454,200.33692847937
+
+
+[beh@jupiter_stalker_assault_go_1]
+ combat_ignore_cond = {!dist_to_beh(80)} true
+ run_anim = rush
+ behaviour_state = beh_move
+ target = waypoint
+ path_end = loop
+ pt1 = 100000,guard | pos:143.21426391602,1.1840810775757,212.08804321289 look:142.24247145653,1.1840810775757,212.32130029798
+
+[beh@jupiter_stalker_assault_go_2]
+ combat_ignore_cond = {!dist_to_beh(80)} true
+ run_anim = rush
+ behaviour_state = beh_move
+ target = waypoint
+ path_end = loop
+ pt1 = 100000,guard | pos:135.09172058105,1.3675675392151,221.7939453125 look:134.12838965654,1.3675675392151,221.53200998902
+
+[beh@jupiter_stalker_assault_go_3]
+ combat_ignore_cond = {!dist_to_beh(80)} true
+ run_anim = rush
+ behaviour_state = beh_move
+ target = waypoint
+ path_end = loop
+ pt1 = 100000,guard | pos:138.81401062012,1.3904740810394,213.62519836426 look:137.90040069818,1.3904740810394,213.21862828732
+
+[beh@jupiter_stalker_assault_go_4]
+ combat_ignore_cond = {!dist_to_beh(80)} true
+ run_anim = rush
+ behaviour_state = beh_move
+ target = waypoint
+ path_end = loop
+ pt1 = 100000,guard | pos:142.30421447754,1.1840717792511,220.81008911133 look:141.41638469696,1.1840717792511,220.35097572207
+
+[logic@jupiter_mercenary_2_squad_1]
+ suitable = {=check_squad_section(jupiter_mercenary_2_squad)} true
+ prior = 140
+ active = beh@jupiter_mercenary_2_squad
+
+ [logic@jupiter_mercenary_2_squad_2]
+ suitable = {=check_squad_section(jupiter_mercenary_2_squad)} true
+ prior = 140
+ active = beh@jupiter_mercenary_2_squad
+
+[logic@jupiter_mercenary_2_squad_3]
+ suitable = {=check_squad_section(jupiter_mercenary_2_squad)} true
+ prior = 140
+ active = beh@jupiter_mercenary_2_squad
+
+[logic@jupiter_mercenary_2_squad_4]
+ suitable = {=check_squad_section(jupiter_mercenary_2_squad)} true
+ prior = 140
+ active = beh@jupiter_mercenary_2_squad
+
+[logic@jupiter_mercenary_2_squad_5]
+ suitable = {=check_squad_section(jupiter_mercenary_2_squad)} true
+ prior = 140
+ active = beh@jupiter_mercenary_2_squad
+
+[logic@jupiter_mercenary_2_squad_6]
+ suitable = {=check_squad_section(jupiter_mercenary_2_squad)} true
+ prior = 140
+ active = beh@jupiter_mercenary_2_squad
+
+
+[beh@jupiter_mercenary_2_squad]
+
+ run_anim = rush
+ behaviour_state = beh_move
+ target = waypoint
+ path_end = loop
+ pt1 = 100000,idle | pos:143.21426391602,1.1840810775757,212.08804321289 look:142.24247145653,1.1840810775757,212.32130029798
\ No newline at end of file
diff --git a/mods/[DEV] Brotherhood/gamedata/configs/scripts/jupiter/smart/jup_a6.ltx b/mods/[DEV] Brotherhood/gamedata/configs/scripts/jupiter/smart/jup_a6.ltx
new file mode 100644
index 00000000..f438c08c
--- /dev/null
+++ b/mods/[DEV] Brotherhood/gamedata/configs/scripts/jupiter/smart/jup_a6.ltx
@@ -0,0 +1,117 @@
+[smart_terrain]
+def_restr = jup_a6_sr_noweap
+safe_restr = jup_a6_sr_light
+smart_control = smart_control
+squad_id = 4
+max_population = 8
+respawn_params = respawn@jup_a6
+;arrive_dist = 75
+respawn_idle = 345600
+
+
+[respawn@jup_a6]
+spawn_stalker@advanced
+spawn_stalker@master
+
+[spawn_stalker@advanced]
+spawn_squads = stalker_sim_squad_advanced, ecolog_sim_squad_advanced, freedom_sim_squad_advanced
+spawn_num = {+bar_deactivate_radar_done} 2, 0
+
+[spawn_stalker@master]
+spawn_squads = stalker_sim_squad_veteran, freedom_sim_squad_veteran
+spawn_num = {+bar_deactivate_radar_done} 2, 0
+
+[smart_control]
+noweap_zone = jup_a6_sr_noweap
+ignore_zone = jup_a6_sr_light
+alarm_start_sound = jup_a6_base_alarm
+alarm_stop_sound = jup_a6_base_relax
+
+[exclusive]
+;----StfZ
+alyosha_shyogolov_3 = brotherhood\nr_jupiter_logic.ltx
+nr_sorokin_2 = brotherhood\nr_jupiter_logic.ltx
+nr_dead_convict_1 = brotherhood\nr_jupiter_logic.ltx
+nr_dead_convict_2 = brotherhood\nr_jupiter_logic.ltx
+
+nr_executioner_1 = brotherhood\nr_jupiter_logic.ltx
+nr_executioner_2 = brotherhood\nr_jupiter_logic.ltx
+nr_executioner_3 = brotherhood\nr_jupiter_logic.ltx
+
+jupiter_monk = jupiter\jupiter_monk.ltx
+jupiter_stalker_assault_1 = jupiter\jupiter_monk.ltx
+jupiter_stalker_assault_2 = jupiter\jupiter_monk.ltx
+jupiter_stalker_assault_3 = jupiter\jupiter_monk.ltx
+jupiter_stalker_assault_4 = jupiter\jupiter_monk.ltx
+;----StfZ
+; still exists in CoC
+;mlr
+zat_a2_stalker_mechanic = jupiter\zat_a2_stalker_mechanic.ltx
+jup_b43_stalker_assistant_yanov1 = jupiter\jup_b43_stalker_assistant1.ltx
+;mlr
+jup_a6_army_degtyarev = jupiter\jup_a6_army_degtyarev.ltx
+jup_a6_freedom_leader = jupiter\jup_a6_freedom_leader.ltx
+jup_a6_important_npc_1 = jupiter\jup_a6_freedom_trader_ashot.ltx
+jup_b217_stalker_tech = jupiter\jup_b217_stalker_tech.ltx
+;jup_b10_stalker_drunk = jupiter\jup_b10_stalker_drunk.ltx
+stalker_medik = jupiter\jup_b202_stalker_medic.ltx
+stalker_barmen = jupiter\jup_b202_stalker_barmen.ltx
+jup_b220_trapper = jupiter\jup_b220_trapper.ltx
+jup_b19_freedom_yar = jupiter\jup_b19_freedom_yar.ltx
+
+jup_a6_animp_01 = jupiter\jup_a6_logic.ltx
+jup_a6_animp_02 = jupiter\jup_a6_logic.ltx
+jup_a6_animp_03 = jupiter\jup_a6_logic.ltx
+jup_a6_animp_04 = jupiter\jup_a6_logic.ltx
+jup_a6_animp_09 = jupiter\jup_a6_logic.ltx
+jup_a6_animp_10 = jupiter\jup_a6_logic.ltx
+jup_a6_animp_11 = jupiter\jup_a6_logic.ltx
+jup_a6_animp_15 = jupiter\jup_a6_logic.ltx
+jup_a6_animp_16 = jupiter\jup_a6_logic.ltx
+jup_a6_animp_17 = jupiter\jup_a6_logic.ltx
+jup_a6_animp_18 = jupiter\jup_a6_logic.ltx
+jup_a6_animp_91 = jupiter\jup_a6_logic.ltx
+jup_a6_animp_92 = jupiter\jup_a6_logic.ltx
+jup_a6_animp_93 = jupiter\jup_a6_logic.ltx
+jup_a6_animp_05 = jupiter\jup_a6_logic.ltx
+jup_a6_animp_06 = jupiter\jup_a6_logic.ltx
+jup_a6_animp_07 = jupiter\jup_a6_logic.ltx
+jup_a6_animp_08 = jupiter\jup_a6_logic.ltx
+jup_a6_animp_12 = jupiter\jup_a6_logic.ltx
+jup_a6_animp_13 = jupiter\jup_a6_logic.ltx
+jup_a6_animp_14 = jupiter\jup_a6_logic.ltx
+jup_a6_animp_19 = jupiter\jup_a6_logic.ltx
+jup_a6_animp_20 = jupiter\jup_a6_logic.ltx
+jup_a6_animp_21 = jupiter\jup_a6_logic.ltx
+;mlr
+jup_a6_animp_22 = jupiter\jup_a6_logic.ltx
+jup_a6_animp_23 = jupiter\jup_a6_logic.ltx
+;mlr
+jup_a6_duty_guarder = jupiter\jup_a6_logic.ltx
+jup_a6_duty_guard = jupiter\jup_a6_logic.ltx
+jup_a6_freedom_guarder = jupiter\jup_a6_logic.ltx
+jup_a6_animp_freedom_guard = jupiter\jup_a6_logic.ltx
+
+jup_a6_beh_trade_job_1 = jupiter\jup_b202_stalker_barmen.ltx
+jup_a6_beh_tech_job_1 = jupiter\jup_b217_stalker_tech.ltx
+
+;----unused
+;jup_a12_stalker_assaulter = jupiter\jup_a12_stalker_assaulter.ltx
+;jup_a12_stalker_diplomat = jupiter\jup_a12_stalker_diplomat.ltx
+;jup_a12_stalker_prisoner_base = jupiter\jup_a12_stalker_prisoner.ltx
+;zat_b7_duty_illicit_dealer = jupiter\jup_b207_zat_b7_duty_illicit_dealer.ltx
+;zat_b215_stalker_guide_jupiter = jupiter\zat_b215_stalker_guide_jupiter.ltx
+;jup_b43_stalker_assistant_yanov = jupiter\jup_b43_stalker_assistant.ltx
+
+
+;jup_b221_duty_01 = jupiter\jup_b221_duty.ltx
+;jup_b221_duty_02 = jupiter\jup_b221_duty.ltx
+;jup_b221_duty_03 = jupiter\jup_b221_duty.ltx
+
+;jup_b25_flint = jupiter\jup_b25_freedom_flint.ltx
+;jup_b25_listener_01 = jupiter\jup_b25_freedom_flint.ltx
+;jup_b25_listener_02 = jupiter\jup_b25_freedom_flint.ltx
+
+;jup_b221_freedom_01 = jupiter\jup_b221_freedom.ltx
+;jup_b221_freedom_02 = jupiter\jup_b221_freedom.ltx
+;jup_b221_freedom_03 = jupiter\jup_b221_freedom.ltx
\ No newline at end of file
diff --git a/mods/[DEV] Brotherhood/gamedata/configs/scripts/jupiter/smart/jup_a9.ltx b/mods/[DEV] Brotherhood/gamedata/configs/scripts/jupiter/smart/jup_a9.ltx
new file mode 100644
index 00000000..14ba8134
--- /dev/null
+++ b/mods/[DEV] Brotherhood/gamedata/configs/scripts/jupiter/smart/jup_a9.ltx
@@ -0,0 +1,17 @@
+[smart_terrain]
+squad_id = 40
+max_population = 3
+respawn_params = respawn@jup_a9
+
+[respawn@jup_a9]
+spawn_a9_dogs
+
+[spawn_a9_dogs]
+spawn_squads = jup_a9_dogs_normal
+spawn_num = 1
+
+
+
+[exclusive]
+;----StfZ
+alyosha_shyogolov_4 = brotherhood\nr_jupiter_a9_logic.ltx
\ No newline at end of file
diff --git a/mods/[DEV] Brotherhood/gamedata/configs/scripts/jupiter/smart/jup_b202.ltx b/mods/[DEV] Brotherhood/gamedata/configs/scripts/jupiter/smart/jup_b202.ltx
new file mode 100644
index 00000000..400c2f36
--- /dev/null
+++ b/mods/[DEV] Brotherhood/gamedata/configs/scripts/jupiter/smart/jup_b202.ltx
@@ -0,0 +1,25 @@
+[smart_terrain]
+squad_id = 10
+max_population = 1
+;arrive_dist = 80
+respawn_params = respawn@jup_b202
+respawn_idle = 86400
+
+[respawn@jup_b202]
+spawn_isg
+
+[spawn_isg]
+spawn_squads = isg_sim_squad_novice, isg_sim_squad_advanced, isg_sim_squad_veteran
+spawn_num = {+isg_entered_the_zone} 1, 0
+
+[exclusive]
+;SftZ
+jupiter_mercenary_2_squad_1 = jupiter\jupiter_monk.ltx
+jupiter_mercenary_2_squad_2 = jupiter\jupiter_monk.ltx
+jupiter_mercenary_2_squad_3 = jupiter\jupiter_monk.ltx
+jupiter_mercenary_2_squad_4 = jupiter\jupiter_monk.ltx
+jupiter_mercenary_2_squad_5 = jupiter\jupiter_monk.ltx
+jupiter_mercenary_2_squad_6 = jupiter\jupiter_monk.ltx
+;StfZ
+;jup_b202_stalker_snag_wounded = jupiter\jup_b202_snag_wounded.ltx
+;jup_b202_stalker_bandit = jupiter\jup_b202_snag_wounded.ltx
\ No newline at end of file
diff --git a/mods/[DEV] Brotherhood/gamedata/configs/scripts/jupiter/smart/jup_b203.ltx b/mods/[DEV] Brotherhood/gamedata/configs/scripts/jupiter/smart/jup_b203.ltx
new file mode 100644
index 00000000..08390f2c
--- /dev/null
+++ b/mods/[DEV] Brotherhood/gamedata/configs/scripts/jupiter/smart/jup_b203.ltx
@@ -0,0 +1,37 @@
+[smart_terrain]
+squad_id = 11
+max_population = 3
+respawn_params = respawn@jup_b203
+respawn_idle = 60000
+
+
+[respawn@jup_b203]
+spawn_zombied
+
+[spawn_zombied]
+spawn_squads = zombied_sim_squad_novice, zombied_sim_squad_advanced, zombied_sim_squad_advanced, zombied_sim_squad_veteran
+spawn_num = 2
+
+[exclusive]
+work_1 = jupiter\jup_b203_zombied.ltx
+work_2 = jupiter\jup_b203_zombied.ltx
+work_3 = jupiter\jup_b203_zombied.ltx
+work_4 = jupiter\jup_b203_zombied.ltx
+work_5 = jupiter\jup_b203_zombied.ltx
+work_6 = jupiter\jup_b203_zombied.ltx
+
+tushkano_1 = jupiter\jup_b203_tushkano_tunnel.ltx
+tushkano_2 = jupiter\jup_b203_tushkano_tunnel.ltx
+tushkano_3 = jupiter\jup_b203_tushkano_tunnel.ltx
+tushkano_4 = jupiter\jup_b203_tushkano_room_1.ltx
+tushkano_5 = jupiter\jup_b203_tushkano_room_1.ltx
+tushkano_6 = jupiter\jup_b203_tushkano_room_2.ltx
+tushkano_7 = jupiter\jup_b203_tushkano_room_2.ltx
+tushkano_8 = jupiter\jup_b203_tushkano_room_3.ltx
+tushkano_9 = jupiter\jup_b203_tushkano_room_3.ltx
+tushkano_10 = jupiter\jup_b203_tushkano_room_3.ltx
+tushkano_11 = jupiter\jup_b203_tushkano_ghost.ltx
+tushkano_12 = jupiter\jup_b203_tushkano_ghost.ltx
+
+
+primankov = brotherhood\brotherhood_jup_b203_zombied.ltx
\ No newline at end of file
diff --git a/mods/[DEV] Brotherhood/gamedata/configs/scripts/jupiter/smart/jup_b41.ltx b/mods/[DEV] Brotherhood/gamedata/configs/scripts/jupiter/smart/jup_b41.ltx
new file mode 100644
index 00000000..d63286fe
--- /dev/null
+++ b/mods/[DEV] Brotherhood/gamedata/configs/scripts/jupiter/smart/jup_b41.ltx
@@ -0,0 +1,42 @@
+[smart_terrain]
+def_restr = jup_b41_sr_noweap
+safe_restr = jup_b41_sr_light
+smart_control = smart_control
+squad_id = 58
+max_population = 4
+;arrive_dist = 65
+
+[smart_control]
+noweap_zone = jup_b41_sr_noweap
+ignore_zone = jup_b41_sr_light
+alarm_start_sound = jup_b41_base_alarm
+alarm_stop_sound = jup_b41_base_relax
+
+[exclusive]
+flavio_becca = brotherhood\nr_jupiter_mobilelab.ltx
+nr_ecologist_rydzyk = brotherhood\nr_jupiter_mobilelab.ltx
+nr_ecologist_1 = brotherhood\nr_jupiter_mobilelab.ltx
+nr_ecologist_2 = brotherhood\nr_jupiter_mobilelab.ltx
+nr_ecologist_3 = brotherhood\nr_jupiter_mobilelab.ltx
+erast_fandorin_2 = brotherhood\nr_jupiter_mobilelab.ltx
+
+jup_b6_scientist_tech = jupiter\jup_b6_scientist_tech.ltx
+jup_b6_scientist_nuclear_physicist = jupiter\jup_b6_scientist_nuclear_physicist.ltx
+jup_b6_scientist_biochemist = jupiter\jup_b6_scientist_biochemist.ltx
+jup_b43_stalker_assistant = jupiter\jup_b43_stalker_assistant.ltx
+jup_b218_army_sokolov = jupiter\jup_b218_army_sokolov.ltx
+
+jup_b1_stalker_1_home = jupiter\jup_b41_stalkers.ltx
+jup_b1_stalker_2_home = jupiter\jup_b41_stalkers.ltx
+jup_b1_stalker_3_home = jupiter\jup_b41_stalkers.ltx
+jup_b1_stalker_4_home = jupiter\jup_b41_stalkers.ltx
+
+jup_b1_stalker_2_pro = jupiter\jup_b41_stalkers.ltx
+jup_b1_stalker_3_pro = jupiter\jup_b41_stalkers.ltx
+jup_b1_stalker_4_pro = jupiter\jup_b41_stalkers.ltx
+
+jup_b47_bunker_guard_01 = jupiter\jup_b47_bunker_guard.ltx
+jup_b47_bunker_guard_02 = jupiter\jup_b47_bunker_guard.ltx
+jup_b47_bunker_guard_03 = jupiter\jup_b47_bunker_guard.ltx
+jup_b47_bunker_guard_04 = jupiter\jup_b47_bunker_guard.ltx
+jup_b47_bunker_guard_05 = jupiter\jup_b47_bunker_guard.ltx
diff --git a/mods/[DEV] Brotherhood/gamedata/configs/scripts/jupiter/smart/jup_b47.ltx b/mods/[DEV] Brotherhood/gamedata/configs/scripts/jupiter/smart/jup_b47.ltx
new file mode 100644
index 00000000..a0277d90
--- /dev/null
+++ b/mods/[DEV] Brotherhood/gamedata/configs/scripts/jupiter/smart/jup_b47.ltx
@@ -0,0 +1,21 @@
+[smart_terrain]
+squad_id = 26
+max_population = 1
+;arrive_dist = 80
+
+[exclusive]
+
+;----StfZ
+nr_erast_fandorin_2 = brotherhood\nr_jupiter_b47_logic.ltx
+nr_ambush_1 = brotherhood\nr_jupiter_b47_logic.ltx
+nr_ambush_2 = brotherhood\nr_jupiter_b47_logic.ltx
+nr_ambush_3 = brotherhood\nr_jupiter_b47_logic.ltx
+nr_ambush_4 = brotherhood\nr_jupiter_b47_logic.ltx
+nr_ambush_5 = brotherhood\nr_jupiter_b47_logic.ltx
+
+
+;jup_a9_dog_01 = jupiter\jup_a9_dogs.ltx
+;jup_a9_dog_02 = jupiter\jup_a9_dogs.ltx
+;jup_a9_dog_03 = jupiter\jup_a9_dogs.ltx
+;jup_a9_dog_04 = jupiter\jup_a9_dogs.ltx
+;jup_a9_dog_05 = jupiter\jup_a9_dogs.ltx
\ No newline at end of file
diff --git a/mods/[DEV] Brotherhood/gamedata/configs/scripts/jupiter/smart/jup_sim_13.ltx b/mods/[DEV] Brotherhood/gamedata/configs/scripts/jupiter/smart/jup_sim_13.ltx
new file mode 100644
index 00000000..5b805fa1
--- /dev/null
+++ b/mods/[DEV] Brotherhood/gamedata/configs/scripts/jupiter/smart/jup_sim_13.ltx
@@ -0,0 +1,31 @@
+[smart_terrain]
+squad_id = 33
+max_population = 1
+respawn_params = respawn@jup_sim_13
+respawn_idle = 43200
+
+
+
+[respawn@jup_sim_13] ;-- Type: c_1
+spawn_all_weak_c_1_1
+spawn_all_normal_c_1_2
+
+
+
+[spawn_all_weak_c_1_1]
+spawn_squads = 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 ;--spawn-all-weak
+spawn_num = {!actor_week_in_zone(1)} 1, {=actor_week_in_zone(1)} 0
+
+[spawn_all_normal_c_1_2]
+spawn_squads = 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, simulation_fracture, simulation_lurker, simulation_snork, simulation_bloodsucker, simulation_psysucker ;--spawn-all-normal
+spawn_num = {=actor_week_in_zone(1)} 2, {!actor_week_in_zone(1)} 0
+
+[exclusive]
+
+nr_alyosha_bandits_squad_1 = brotherhood\nr_alyosha_bandits.ltx
+nr_alyosha_bandits_squad_2 = brotherhood\nr_alyosha_bandits.ltx
+nr_alyosha_bandits_squad_3 = brotherhood\nr_alyosha_bandits.ltx
+nr_alyosha_bandits_squad_4 = brotherhood\nr_alyosha_bandits.ltx
+nr_alyosha_bandits_squad_5 = brotherhood\nr_alyosha_bandits.ltx
+nr_alyosha_bandits_squad_6 = brotherhood\nr_alyosha_bandits.ltx
+nr_alyosha_bandits_squad_7 = brotherhood\nr_alyosha_bandits.ltx
\ No newline at end of file
diff --git a/mods/[DEV] Brotherhood/gamedata/configs/scripts/jupiter/smart/jup_sim_2.ltx b/mods/[DEV] Brotherhood/gamedata/configs/scripts/jupiter/smart/jup_sim_2.ltx
new file mode 100644
index 00000000..0404c9c4
--- /dev/null
+++ b/mods/[DEV] Brotherhood/gamedata/configs/scripts/jupiter/smart/jup_sim_2.ltx
@@ -0,0 +1,26 @@
+[smart_terrain]
+squad_id = 40
+max_population = 1
+respawn_params = respawn@jup_sim_2
+respawn_idle = 86400
+
+
+
+[respawn@jup_sim_2] ;-- Type: c_2
+spawn_all_hard_c_2_1
+spawn_all_worst_c_2_2
+
+
+
+[spawn_all_hard_c_2_1]
+spawn_squads = simulation_fracture, simulation_fracture, simulation_lurker, simulation_lurker_1_2, simulation_snork_2_3, simulation_snork_2_3, simulation_bloodsucker, simulation_bloodsucker_1_2, simulation_psysucker, simulation_chimera, simulation_psy_dog, simulation_poltergeist_tele, simulation_karlik, simulation_burer, simulation_controller ;--spawn-all-hard
+spawn_num = {!actor_week_in_zone(2)} 1, {=actor_week_in_zone(2)} 0
+
+[spawn_all_worst_c_2_2]
+spawn_squads = simulation_chimera, simulation_gigant, simulation_psy_dog_squad, simulation_poltergeist, simulation_karlik, simulation_burer, simulation_controller ;--spawn-all-worst
+spawn_num = {=actor_week_in_zone(2)} 1, {!actor_week_in_zone(2)} 0
+
+
+[exclusive]
+
+zaton_mercenary_courrier_1 = jupiter\zaton_mercenary_courrier_1.ltx
\ No newline at end of file
diff --git a/mods/[DEV] Brotherhood/gamedata/configs/scripts/jupiter/zaton_mercenary_courrier_1.ltx b/mods/[DEV] Brotherhood/gamedata/configs/scripts/jupiter/zaton_mercenary_courrier_1.ltx
new file mode 100644
index 00000000..5106eea5
--- /dev/null
+++ b/mods/[DEV] Brotherhood/gamedata/configs/scripts/jupiter/zaton_mercenary_courrier_1.ltx
@@ -0,0 +1,12 @@
+[logic@zaton_mercenary_courrier_1]
+ suitable = {=check_squad_section(zaton_mercenary_courrier_1_squad)} true
+ prior = 140
+ active = beh@zaton_mercenary_courrier_1
+
+[beh@zaton_mercenary_courrier_1]
+ behaviour_state = beh_move
+ target = waypoint
+ walk_anim = patrol
+ path_end = loop
+ pt1 = 88860000,sit_ass_drink_vodka | pos:-200.16650390625,3.4895832538605,-438.90258789063 look:-200.71887111664,3.4895832538605,-438.0819221139
+
diff --git a/mods/[DEV] Brotherhood/gamedata/configs/scripts/marsh/sasha_tolstoy.ltx b/mods/[DEV] Brotherhood/gamedata/configs/scripts/marsh/sasha_tolstoy.ltx
new file mode 100644
index 00000000..e1b5faa7
--- /dev/null
+++ b/mods/[DEV] Brotherhood/gamedata/configs/scripts/marsh/sasha_tolstoy.ltx
@@ -0,0 +1,25 @@
+[logic@sasha_tolstoy]
+ suitable = {=check_npc_name(sasha_tolstoy)} true
+ prior = 500
+ active = beh@sasha_tolstoy_job
+
+[beh@sasha_tolstoy_job]
+ on_info = {=is_night} beh@drink_1
+ behaviour_state = beh_move
+ target = waypoint
+ path_end = loop
+ pt1 = 88860000,idle | pos:-176.64476013184,1.8341355323792,-283.72021484375 look:-175.71662169695,1.8341355323792,-283.34909519553
+
+
+[beh@drink_1]
+behaviour_state = beh_move
+target = waypoint
+walk_anim = patrol
+gather_items_enabled = false
+help_wounded_enabled = false
+corpse_detection_enabled = false
+invulnerable = false
+on_info = {!is_night} beh@sasha_tolstoy_job
+path_end = loop
+pt1 = 88860000,drink_vodka_stand | pos:-135.14944458008,1.3462958335876,-273.25628662109 look:-135.18375352025,1.3462958335876,-274.2086712122
+
diff --git a/mods/[DEV] Brotherhood/gamedata/configs/scripts/marsh/smart/mar_smart_terrain_4_5.ltx b/mods/[DEV] Brotherhood/gamedata/configs/scripts/marsh/smart/mar_smart_terrain_4_5.ltx
new file mode 100644
index 00000000..a6c62eb6
--- /dev/null
+++ b/mods/[DEV] Brotherhood/gamedata/configs/scripts/marsh/smart/mar_smart_terrain_4_5.ltx
@@ -0,0 +1,22 @@
+[smart_terrain];mar_smart_terrain_4_5 ;;
+squad_id = 10
+max_population = 1
+respawn_params = respawn@mar_smart_terrain_4_5
+respawn_idle = 86400
+
+[respawn@mar_smart_terrain_4_5]
+spawn_rats
+
+[spawn_rats]
+spawn_squads = zatop_hutor_tushkano_mar_smart_terrain_4_5
+spawn_num = {!squad_exist(zatop_hutor_tushkano_mar_smart_terrain_4_5)} 1, 0
+
+[exclusive]
+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
+
+nr_starik_murder_bandit_1 = brotherhood\great_marsh_random_logic.ltx
+nr_starik_murder_bandit_2 = brotherhood\great_marsh_random_logic.ltx
\ No newline at end of file
diff --git a/mods/[DEV] Brotherhood/gamedata/configs/scripts/marsh/smart/mar_smart_terrain_base.ltx b/mods/[DEV] Brotherhood/gamedata/configs/scripts/marsh/smart/mar_smart_terrain_base.ltx
new file mode 100644
index 00000000..42fe1e8d
--- /dev/null
+++ b/mods/[DEV] Brotherhood/gamedata/configs/scripts/marsh/smart/mar_smart_terrain_base.ltx
@@ -0,0 +1,66 @@
+[smart_terrain];mar_smart_terrain_base
+squad_id = 25
+max_population = 5
+respawn_params = respawn@mar_smart_terrain_base
+respawn_idle = 86400
+;arrive_dist = 100000
+
+
+[respawn@mar_smart_terrain_base]
+spawn_stalker@novice
+spawn_stalker@advanced
+spawn_stalker@veteran
+
+
+
+[spawn_stalker@novice]
+spawn_squads = csky_sim_squad_novice
+spawn_num = 2
+
+[spawn_stalker@advanced]
+spawn_squads = csky_sim_squad_novice, csky_sim_squad_advanced
+spawn_num = 1
+
+[spawn_stalker@veteran]
+spawn_squads = csky_sim_squad_advanced, csky_sim_squad_veteran
+spawn_num = 1
+
+
+
+[exclusive]
+sasha_tolstoy = marsh\sasha_tolstoy.ltx
+marsh_doctor = marsh\mar_smart_terrain_base_doctor.ltx
+dog_doctor = marsh\mar_smart_terrain_base_dog_doctor.ltx
+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
+guard_1 = marsh\mar_smart_terrain_base_smart_logic.ltx
+guard_2 = marsh\mar_smart_terrain_base_smart_logic.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
+;mlr
+guid_marsh_mlr = marsh\guid_marsh_mlr.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
+;mlr
+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
+mar_smart_terrain_base_stalker_guide_marsh = marsh\mar_smart_terrain_base_stalker_guide_marsh.ltx
+real_marsh_doctor = marsh\mar_smart_terrain_base_real_marsh_doctor.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
+
+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
\ No newline at end of file
diff --git a/mods/[DEV] Brotherhood/gamedata/configs/scripts/military/smart/mil_smart_terrain_7_12.ltx b/mods/[DEV] Brotherhood/gamedata/configs/scripts/military/smart/mil_smart_terrain_7_12.ltx
new file mode 100644
index 00000000..bb66d8c6
--- /dev/null
+++ b/mods/[DEV] Brotherhood/gamedata/configs/scripts/military/smart/mil_smart_terrain_7_12.ltx
@@ -0,0 +1,20 @@
+[smart_terrain]
+squad_id = 13
+max_population = 4
+respawn_params = respawn@mil_smart_terrain_7_12
+respawn_idle = 86400
+
+
+
+[respawn@mil_smart_terrain_7_12]
+spawn_freedom@advanced
+
+
+
+[spawn_freedom@advanced]
+spawn_squads = freedom_sim_squad_advanced, freedom_sim_squad_advanced, freedom_sim_squad_novice
+spawn_num = 2
+
+[exclusive]
+nr_bezsonik = brotherhood\nr_army_warehouse_logic.ltx
+nr_lyoshik = brotherhood\nr_army_warehouse_logic.ltx
\ No newline at end of file
diff --git a/mods/[DEV] Brotherhood/gamedata/configs/scripts/pripyat/pri_b304_dynamic_doors_doubled_1.ltx b/mods/[DEV] Brotherhood/gamedata/configs/scripts/pripyat/pri_b304_dynamic_doors_doubled_1.ltx
new file mode 100644
index 00000000..d22bdbf6
--- /dev/null
+++ b/mods/[DEV] Brotherhood/gamedata/configs/scripts/pripyat/pri_b304_dynamic_doors_doubled_1.ltx
@@ -0,0 +1,17 @@
+[logic]
+active = ph_door@close
+
+[ph_door@close]
+locked = false
+closed = true
+tip_open = tip_door_open
+on_info = %+pri_b304_big_door1_closed%
+on_info2 = {+pri_b304_big_door_open} ph_door@open
+on_use = {+pri_b304_big_door2_closed} ph_door@open %+pri_b304_big_door1_open%
+
+[ph_door@open]
+locked = false
+closed = false
+tip_close = tip_door_close
+on_info = %-pri_b304_big_door1_closed%
+on_use = ph_door@close %-pri_b304_big_door1_open -pri_b304_big_door2_open -pri_b304_big_door_open%
\ No newline at end of file
diff --git a/mods/[DEV] Brotherhood/gamedata/configs/scripts/pripyat/pri_b304_dynamic_doors_doubled_2.ltx b/mods/[DEV] Brotherhood/gamedata/configs/scripts/pripyat/pri_b304_dynamic_doors_doubled_2.ltx
new file mode 100644
index 00000000..e46b24ad
--- /dev/null
+++ b/mods/[DEV] Brotherhood/gamedata/configs/scripts/pripyat/pri_b304_dynamic_doors_doubled_2.ltx
@@ -0,0 +1,17 @@
+[logic]
+active = ph_door@close
+
+[ph_door@close]
+locked = false
+closed = true
+tip_open = tip_door_open
+on_info = %+pri_b304_big_door2_closed%
+on_info2 = {+pri_b304_big_door_open} ph_door@open
+on_use = {+pri_b304_big_door1_closed} ph_door@open %+pri_b304_big_door2_open%
+
+[ph_door@open]
+locked = false
+closed = false
+tip_close = tip_door_close
+on_info = %-pri_b304_big_door2_closed%
+on_use = ph_door@close %-pri_b304_big_door1_open -pri_b304_big_door2_open -pri_b304_big_door_open%
\ No newline at end of file
diff --git a/mods/[DEV] Brotherhood/gamedata/configs/scripts/pripyat/smart/pri_a16.ltx b/mods/[DEV] Brotherhood/gamedata/configs/scripts/pripyat/smart/pri_a16.ltx
new file mode 100644
index 00000000..4ead5403
--- /dev/null
+++ b/mods/[DEV] Brotherhood/gamedata/configs/scripts/pripyat/smart/pri_a16.ltx
@@ -0,0 +1,46 @@
+[smart_terrain]
+def_restr = pri_a16_sr_noweap
+safe_restr = pri_surge_hide_a16; pri_a16_sr_light
+smart_control = smart_control
+squad_id = 26
+max_population = 3
+respawn_params = respawn@pri_a16
+;arrive_dist = 65
+
+[respawn@pri_a16]
+spawn_stalker
+
+[spawn_stalker]
+spawn_squads = stalker_sim_squad_advanced, stalker_sim_squad_advanced, stalker_sim_squad_veteran
+;spawn_num = {+pri_a28_actor_in_zone_stay} 2, 0
+spawn_num = {+bar_deactivate_radar_done} 2, 0
+
+[smart_control]
+noweap_zone = pri_a16_sr_noweap
+ignore_zone = pri_surge_hide_a16; pri_a16_sr_light
+alarm_start_sound = {-pri_b305_fifth_cam_end} pri_a16_base_alarm, nil
+alarm_stop_sound = {-pri_b305_fifth_cam_end} pri_a16_base_relax, nil
+
+[exclusive]
+pri_a16_camp_work_1 = pripyat\pri_a16_smart_logic_mlr.ltx
+;pri_a16_camp_work_2 = pripyat\pri_a16_smart_logic_mlr.ltx
+;pri_a16_camp_work_4 = pripyat\pri_a16_smart_logic_mlr.ltx
+pri_a16_camp_work_6 = pripyat\pri_a16_smart_logic_mlr.ltx
+pri_a16_camp_work_7 = pripyat\pri_a16_smart_logic_mlr.ltx
+pri_a16_camp_work_8 = pripyat\pri_a16_smart_logic_mlr.ltx
+pri_a16_camp_work_9 = pripyat\pri_a16_smart_logic_mlr.ltx
+trader_pri_a15_mlr = pripyat\pri_a15_mlr.ltx
+;pri_a16_mech_mlr = pripyat\pri_a15_mlr.ltx
+;-- LTTZ
+lost_stalker_strelok = pripyat\pri_a16_ll_stalker_strelok_team.ltx
+stalker_stitch = pripyat\pri_a16_ll_stalker_strelok_team.ltx
+pri_a16_stalker_rogue = pripyat\pri_a16_ll_stalker_strelok_team.ltx
+pri_a16_stalker_strelok = pripyat\pri_a16_stalker_strelok_team.ltx
+pri_a16_stalker_rogue_oa = pripyat\pri_a16_stalker_strelok_team.ltx
+pri_a16_stalker_stitch_oa = pripyat\pri_a16_stalker_strelok_team.ltx
+
+
+ac_stalker_squad_1 = brotherhood\ac_pri_task_3_logic.ltx
+ac_stalker_squad_2 = brotherhood\ac_pri_task_3_logic.ltx
+ac_stalker_squad_3 = brotherhood\ac_pri_task_3_logic.ltx
+ac_stalker_squad_4 = brotherhood\ac_pri_task_3_logic.ltx
\ No newline at end of file
diff --git a/mods/[DEV] Brotherhood/gamedata/configs/scripts/pripyat/smart/pri_a25_smart_terrain.ltx b/mods/[DEV] Brotherhood/gamedata/configs/scripts/pripyat/smart/pri_a25_smart_terrain.ltx
new file mode 100644
index 00000000..0619b5a8
--- /dev/null
+++ b/mods/[DEV] Brotherhood/gamedata/configs/scripts/pripyat/smart/pri_a25_smart_terrain.ltx
@@ -0,0 +1,49 @@
+[smart_terrain]
+squad_id = 21
+max_population = 1
+respawn_params = respawn@pri_a25
+
+[respawn@pri_a25]
+spawn_polter
+spawn_monolith_1
+spawn_monolith_2
+
+[spawn_polter]
+spawn_squads = simulation_poltergeist_tele
+;spawn_num = {+pri_a25_rfi_source_eliminated} 1, 0
+spawn_num = {+ac_task_1_everyone_dead} 0, 1
+
+[spawn_monolith_1]
+spawn_squads = pri_ac_a25_guard_1
+spawn_num = {+give_task_blue_winter_quest_1_done} 1, 0
+
+[spawn_monolith_2]
+spawn_squads = pri_ac_a25_guard_2
+spawn_num = {+give_task_blue_winter_quest_1_done} 1, 0
+
+
+[exclusive]
+pri_a25_poltergeist_1 = pripyat\pri_a25_poltergeist.ltx
+pri_a25_poltergeist_2 = pripyat\pri_a25_poltergeist.ltx
+pri_a25_poltergeist_3 = pripyat\pri_a25_poltergeist.ltx
+pri_a25_base_medic = pripyat\pri_a25_base_medic.ltx
+pri_a25_rogue = pripyat\pri_a25_rogue.ltx
+;pri_a18_rogue = pripyat\pri_a18_rogue.ltx
+
+
+
+ac_blue_winter = brotherhood\ac_pri_a25_logic.ltx
+ac_balthazar = brotherhood\ac_pri_a25_logic.ltx
+ac_melchior = brotherhood\ac_pri_a25_logic.ltx
+ac_caspar = brotherhood\ac_pri_a25_logic.ltx
+
+ac_monolith_guard_1 = brotherhood\ac_pri_a25_logic.ltx
+ac_monolith_guard_2 = brotherhood\ac_pri_a25_logic.ltx
+ac_monolith_guard_3 = brotherhood\ac_pri_a25_logic.ltx
+ac_monolith_guard_4 = brotherhood\ac_pri_a25_logic.ltx
+ac_monolith_guard_5 = brotherhood\ac_pri_a25_logic.ltx
+ac_monolith_guard_6 = brotherhood\ac_pri_a25_logic.ltx
+ac_monolith_guard_7 = brotherhood\ac_pri_a25_logic.ltx
+ac_monolith_guard_8 = brotherhood\ac_pri_a25_logic.ltx
+ac_monolith_guard_9 = brotherhood\ac_pri_a25_logic.ltx
+ac_monolith_guard_10 = brotherhood\ac_pri_a25_logic.ltx
\ No newline at end of file
diff --git a/mods/[DEV] Brotherhood/gamedata/configs/scripts/pripyat/smart/pri_b304_monsters_smart_terrain.ltx b/mods/[DEV] Brotherhood/gamedata/configs/scripts/pripyat/smart/pri_b304_monsters_smart_terrain.ltx
new file mode 100644
index 00000000..4e35f735
--- /dev/null
+++ b/mods/[DEV] Brotherhood/gamedata/configs/scripts/pripyat/smart/pri_b304_monsters_smart_terrain.ltx
@@ -0,0 +1,10 @@
+[smart_terrain] ;pri_b304_monsters_smart_terrain
+squad_id = 4
+max_population = 2
+spawn_point = pri_b304_monsters_smart_terrain_spawn
+
+[exclusive]
+ac_stalker_squad_1 = brotherhood\ac_pri_task_3_logic.ltx
+ac_stalker_squad_2 = brotherhood\ac_pri_task_3_logic.ltx
+ac_stalker_squad_3 = brotherhood\ac_pri_task_3_logic.ltx
+ac_stalker_squad_4 = brotherhood\ac_pri_task_3_logic.ltx
\ No newline at end of file
diff --git a/mods/[DEV] Brotherhood/gamedata/configs/scripts/pripyat/smart/pri_monolith.ltx b/mods/[DEV] Brotherhood/gamedata/configs/scripts/pripyat/smart/pri_monolith.ltx
new file mode 100644
index 00000000..7c5284b7
--- /dev/null
+++ b/mods/[DEV] Brotherhood/gamedata/configs/scripts/pripyat/smart/pri_monolith.ltx
@@ -0,0 +1,31 @@
+[smart_terrain]
+squad_id = 2
+max_population = 6
+respawn_params = respawn@pri_monolith
+respawn_idle = 345600
+
+
+
+[respawn@pri_monolith]
+spawn_monolith
+
+[spawn_monolith]
+spawn_squads = monolith_sim_squad_advanced, monolith_sim_squad_advanced, monolith_sim_squad_veteran
+spawn_num = 4
+
+[exclusive]
+prayer_1 = pripyat\pri_monolith_smart_logic.ltx
+prayer_2 = pripyat\pri_monolith_smart_logic.ltx
+prayer_3 = pripyat\pri_monolith_smart_logic.ltx
+prayer_4 = pripyat\pri_monolith_smart_logic.ltx
+prayer_5 = pripyat\pri_monolith_smart_logic.ltx
+monolith_eidolon = pripyat\monolith_eidolon.ltx
+pri_monolith_monolith_trader = pripyat\pri_monolith_smart_logic.ltx
+pri_monolith_monolith_mechanic = pripyat\pri_monolith_smart_logic.ltx
+
+
+
+---SftZ - Atomic Crusader ---
+ac_pri_medic_monolith = brotherhood\ac_pri_monolith_smart_logic.ltx
+ac_blue_winter = brotherhood\ac_pri_monolith_smart_logic.ltx
+ac_balthazar = brotherhood\ac_pri_monolith_smart_logic.ltx
\ No newline at end of file
diff --git a/mods/[DEV] Brotherhood/gamedata/configs/scripts/pripyat/smart/pri_sim_3.ltx b/mods/[DEV] Brotherhood/gamedata/configs/scripts/pripyat/smart/pri_sim_3.ltx
new file mode 100644
index 00000000..bdbdc570
--- /dev/null
+++ b/mods/[DEV] Brotherhood/gamedata/configs/scripts/pripyat/smart/pri_sim_3.ltx
@@ -0,0 +1,17 @@
+[smart_terrain]
+squad_id = 8
+max_population = 1
+respawn_params = respawn@pri_sim_9
+respawn_idle = 60000
+
+
+[respawn@pri_sim_9]
+spawn_controller
+
+[spawn_controller]
+spawn_squads = simulation_controller
+spawn_num = 1
+
+[exclusive]
+ac_melchior = brotherhood\ac_task_pripyat_1_logic.ltx
+ac_caspar = brotherhood\ac_task_pripyat_1_logic.ltx
\ No newline at end of file
diff --git a/mods/[DEV] Brotherhood/gamedata/configs/scripts/yantar/smart/yan_smart_terrain_6_4.ltx b/mods/[DEV] Brotherhood/gamedata/configs/scripts/yantar/smart/yan_smart_terrain_6_4.ltx
new file mode 100644
index 00000000..66b17dfa
--- /dev/null
+++ b/mods/[DEV] Brotherhood/gamedata/configs/scripts/yantar/smart/yan_smart_terrain_6_4.ltx
@@ -0,0 +1,57 @@
+[smart_terrain] ;
+squad_id = 13
+max_population = 8
+respawn_params = respawn@yan_smart_terrain_6_4
+respawn_idle = 30000
+
+
+
+[respawn@yan_smart_terrain_6_4]
+spawn_ecolog
+spawn_ecolog2
+
+[spawn_ecolog]
+spawn_squads = ecolog_sim_squad_advanced, ecolog_sim_squad_veteran, ecolog_sim_squad_advanced_1e_2ls, ecolog_sim_squad_advanced_1e_2es
+spawn_num = 2
+
+[spawn_ecolog2]
+spawn_squads = ecolog_sim_squad_advanced_1e_1ls_1ss, ecolog_sim_squad_advanced_2e_2ls_1ss, ecolog_sim_squad_veteran, ecolog_sim_squad_advanced_2e_2ls_1ss
+spawn_num = 2
+
+
+[exclusive]
+;mlr
+mechanic_army_yan_mlr = yantar\mechanic_army_yan_mlr_logic.ltx
+yan_povar_army_mlr = yantar\yan_povar_army_mlr.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
+;mlr
+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_bunker_guards = yantar\yan_scientists.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
+
+
+
+;mlr
+erast_fandorin_1 = brotherhood\nr_yantar_logic.ltx
+nr_ecologist_rydzyk = brotherhood\nr_yantar_logic.ltx
+nr_ecologist_1 = brotherhood\nr_yantar_logic.ltx
+nr_ecologist_2 = brotherhood\nr_yantar_logic.ltx
+bellerophon_1 = brotherhood\nr_yantar_logic.ltx
\ No newline at end of file
diff --git a/mods/[DEV] Brotherhood/gamedata/configs/scripts/zaton/smart/zat_b40_smart_terrain.ltx b/mods/[DEV] Brotherhood/gamedata/configs/scripts/zaton/smart/zat_b40_smart_terrain.ltx
new file mode 100644
index 00000000..7c09e48c
--- /dev/null
+++ b/mods/[DEV] Brotherhood/gamedata/configs/scripts/zaton/smart/zat_b40_smart_terrain.ltx
@@ -0,0 +1,40 @@
+[smart_terrain];zat_b40_smart_terrain
+squad_id = 38
+max_population = 5
+respawn_params = respawn@zat_b40_smart_terrain
+respawn_idle = 86400
+
+
+
+[respawn@zat_b40_smart_terrain]
+spawn_killer@advanced
+spawn_killer@advanced2
+
+
+
+[spawn_killer@advanced]
+spawn_squads = merc_sim_squad_advanced, merc_sim_squad_novice
+spawn_num = 2
+
+[spawn_killer@advanced2]
+spawn_squads = merc_sim_squad_advanced
+spawn_num = 2
+
+
+
+[exclusive]
+zaton_mercenary_1 = brotherhood\zaton_logic.ltx
+zaton_mercenary_2 = zaton\zaton_mercenary_2.ltx
+zat_stancia_trader_merc = zaton\zat_stancia_mlr_logic.ltx
+zat_stancia_mech_merc = zaton\zat_stancia_mlr_logic.ltx
+zat_b40_guard_leader_01 = zaton\zat_b40_mercs.ltx
+zat_b40_guard_leader_02 = zaton\zat_b40_mercs.ltx
+;leave this for sim - killers only
+zat_b40_guard_01 = zaton\zat_b40_mercs.ltx
+zat_b40_guard_02 = zaton\zat_b40_mercs.ltx
+zat_b40_guard_03 = zaton\zat_b40_mercs.ltx
+zat_b40_guard_04 = zaton\zat_b40_mercs.ltx
+zat_b40_guard_05 = zaton\zat_b40_mercs.ltx
+zat_b40_guard_06 = zaton\zat_b40_mercs.ltx
+zat_b40_guard_07 = zaton\zat_b40_mercs.ltx
+zat_b40_guard_08 = zaton\zat_b40_mercs.ltx
\ No newline at end of file
diff --git a/mods/[DEV] Brotherhood/gamedata/configs/scripts/zaton/smart/zat_stalker_base_smart.ltx b/mods/[DEV] Brotherhood/gamedata/configs/scripts/zaton/smart/zat_stalker_base_smart.ltx
new file mode 100644
index 00000000..df95afe2
--- /dev/null
+++ b/mods/[DEV] Brotherhood/gamedata/configs/scripts/zaton/smart/zat_stalker_base_smart.ltx
@@ -0,0 +1,78 @@
+[smart_terrain];zat_stalker_base_smart
+squad_id = 1
+def_restr = zat_a2_sr_noweap
+safe_restr = zat_a2_sr_light
+smart_control = smart_control
+respawn_params = respawn@zat_stalker_base_smart
+max_population = 6
+;arrive_dist = 65
+respawn_idle = 86400
+
+
+[respawn@zat_stalker_base_smart]
+spawn_stalker@master
+
+[spawn_stalker@master]
+spawn_squads = stalker_sim_squad_veteran, stalker_sim_squad_advanced
+spawn_num = {~50}2, 0
+
+[smart_control]
+noweap_zone = zat_a2_sr_noweap
+ignore_zone = zat_a2_sr_light
+alarm_start_sound = zat_a2_base_alarm
+alarm_stop_sound = zat_a2_base_relax
+
+[exclusive]
+alyosha_shyogolov_4 = brotherhood\nr_zaton_logic.ltx
+
+zat_tech_mlr = zaton\zat_tech_mlr_logic.ltx
+zat_a2_stalker_barmen = zaton\zat_a2_stalker_barmen.ltx
+;zat_a2_stalker_mechanic = zaton\zat_a2_stalker_mechanic.ltx
+zat_b30_owl_stalker_trader = zaton\zat_b30_owl_stalker_trader.ltx
+zat_a2_stalker_nimble = zaton\zat_a2_stalker_nimble.ltx
+zat_b29_stalker_rival = zaton\zat_b29_stalkers_rivals.ltx
+;zat_b7_bandit_boss_sultan = zaton\zat_b7_bandit_boss_sultan.ltx
+zat_b7_stalker_raider_leader = zaton\zat_b7_stalker_raider.ltx
+zat_b215_stalker_guide_zaton = zaton\zat_b215_stalker_guide_zaton.ltx
+zat_b106_stalker_gonta = zaton\zat_b106_stalker_gonta.ltx
+zat_b106_stalker_garmata = zaton\zat_b106_stalker_garmata.ltx
+zat_b106_stalker_crab = zaton\zat_b106_stalker_crab.ltx
+zat_b7_stalker_victim_leader = zaton\zat_a2_logic.ltx
+zat_b14_stalker = zaton\zat_b14_stalker_1_base.ltx
+zat_b38_stalker_medic = zaton\zat_b38_stalker_medic.ltx
+;generic jobs
+zat_a2_guarder_1 = zaton\zat_a2_logic.ltx
+zat_a2_guarder_2 = zaton\zat_a2_logic.ltx
+zat_a2_guarder_3 = zaton\zat_a2_logic.ltx
+zat_a2_guarder_4 = zaton\zat_a2_logic.ltx
+zat_a2_guarder_5 = zaton\zat_a2_logic.ltx
+zat_a2_guarder_6 = zaton\zat_a2_logic.ltx
+zat_a2_animp_1 = zaton\zat_a2_logic.ltx
+zat_a2_animp_2 = zaton\zat_a2_logic.ltx
+zat_a2_animp_3 = zaton\zat_a2_logic.ltx
+zat_a2_animp_4 = zaton\zat_a2_logic.ltx
+zat_a2_animp_5 = zaton\zat_a2_logic.ltx
+zat_a2_animp_6 = zaton\zat_a2_logic.ltx
+zat_a2_animp_7 = zaton\zat_a2_logic.ltx
+zat_a2_animp_8 = zaton\zat_a2_logic.ltx
+zat_a2_animp_9 = zaton\zat_a2_logic.ltx
+zat_a2_animp_10 = zaton\zat_a2_logic.ltx
+zat_a2_animp_11 = zaton\zat_a2_logic.ltx
+zat_a2_animp_12 = zaton\zat_a2_logic.ltx
+zat_a2_animp_13 = zaton\zat_a2_logic.ltx
+zat_a2_animp_14 = zaton\zat_a2_logic.ltx
+zat_a2_animp_15 = zaton\zat_a2_logic.ltx
+zat_a2_animp_16 = zaton\zat_a2_logic.ltx
+zat_a2_animp_17 = zaton\zat_a2_logic.ltx
+zat_a2_animp_18 = zaton\zat_a2_logic.ltx
+zat_a2_animp_19 = zaton\zat_a2_logic.ltx
+zat_a2_animp_20 = zaton\zat_a2_logic.ltx
+zat_a2_animp_21 = zaton\zat_a2_logic.ltx
+zat_a2_animp_22 = zaton\zat_a2_logic.ltx
+stalker_rogue = zaton\stalker_rogue.ltx
+;test jobs
+zat_a2_barmen_trade = zaton\zat_a2_logic_addon.ltx
+zat_a2_mechanic_trade = zaton\zat_a2_logic_addon.ltx
+
+zat_stalker_base_smart_beh_trade_job_1 = zaton\zat_b30_owl_stalker_trader.ltx
+zat_stalker_base_smart_beh_tech_job_1 = zaton\zat_tech_mlr_logic.ltx
diff --git a/mods/[DEV] Brotherhood/gamedata/configs/scripts/zaton/zaton_achilles.ltx b/mods/[DEV] Brotherhood/gamedata/configs/scripts/zaton/zaton_achilles.ltx
new file mode 100644
index 00000000..4fb81fdc
--- /dev/null
+++ b/mods/[DEV] Brotherhood/gamedata/configs/scripts/zaton/zaton_achilles.ltx
@@ -0,0 +1,11 @@
+[logic@zaton_achilles]
+ suitable = {=check_npc_name(zaton_achilles)} true
+ prior = 500
+ active = beh@zaton_achilles_job
+
+[beh@zaton_achilles_job]
+ behaviour_state = beh_move
+ target = waypoint
+ path_end = loop
+ pt1 = 88860000,guard | pos:124.7912902832,-7.3214173316956,180.63876342773 look:125.72229331732,-7.3214173316956,180.92397964001
+
\ No newline at end of file
diff --git a/mods/[DEV] Brotherhood/gamedata/configs/scripts/zaton/zaton_eitri.ltx b/mods/[DEV] Brotherhood/gamedata/configs/scripts/zaton/zaton_eitri.ltx
new file mode 100644
index 00000000..7769514e
--- /dev/null
+++ b/mods/[DEV] Brotherhood/gamedata/configs/scripts/zaton/zaton_eitri.ltx
@@ -0,0 +1,11 @@
+[logic@zaton_eitri]
+ suitable = {=check_npc_name(zaton_eitri)} true
+ prior = 100
+ active = beh@zaton_eitri_job
+
+[beh@zaton_eitri_job]
+ behaviour_state = beh_move
+ target = waypoint
+ path_end = loop
+ pt1 = 88860000,idle | pos:137.37091064453,-7.3407878875732,177.73092651367 look:136.46004533768,-7.3407878875732,178.14130082726
+
\ No newline at end of file
diff --git a/mods/[DEV] Brotherhood/gamedata/configs/scripts/zaton/zaton_mercenary_2.ltx b/mods/[DEV] Brotherhood/gamedata/configs/scripts/zaton/zaton_mercenary_2.ltx
new file mode 100644
index 00000000..02ed5969
--- /dev/null
+++ b/mods/[DEV] Brotherhood/gamedata/configs/scripts/zaton/zaton_mercenary_2.ltx
@@ -0,0 +1,24 @@
+[logic@zaton_mercenary_2]
+ suitable = {=check_npc_name(zaton_mercenary_2)} true
+ prior = 500
+ active = beh@zaton_mercenary_2_job
+
+[beh@zaton_mercenary_2_job]
+ behaviour_state = beh_move
+ target = waypoint
+ walk_anim = patrol
+ gather_items_enabled = false
+ on_info = {=surge_started} beh@surge
+ path_end = loop
+ pt1 = 600000,guard | pos:344.61651611328,33.242767333984,-400.94937133789 look:344.66410562769,33.242767333984,-399.95866900682
+ pt2 = 9000,smoking_stand | pos:344.61651611328,33.242767333984,-400.94937133789 look:344.66410562769,33.242767333984,-399.95866900682
+
+[beh@surge]
+path_walk = surge_hide_1_walk ;guard_2_walk
+path_look = surge_hide_1_look ;guard_2_look
+on_info = {!surge_started} beh@zaton_mercenary_2_job
+gather_items_enabled = false
+help_wounded_enabled = false
+corpse_detection_enabled = false
+invulnerable = false
+
diff --git a/mods/[DEV] Brotherhood/gamedata/configs/system.ltx b/mods/[DEV] Brotherhood/gamedata/configs/system.ltx
new file mode 100644
index 00000000..280378a3
--- /dev/null
+++ b/mods/[DEV] Brotherhood/gamedata/configs/system.ltx
@@ -0,0 +1,1386 @@
+#include "defines.ltx"
+#include "prefetch\prefetch_single.ltx"
+
+#include "creatures\monsters.ltx"
+#include "creatures\stalkers.ltx"
+#include "creatures\helicopter.ltx"
+#include "creatures\game_relations.ltx"
+
+; Items
+#include "items\item_base.ltx"
+
+#include "creatures\actor.ltx"
+#include "creatures\actor_hud_hand_animations.ltx"
+#include "zones\zones.ltx"
+#include "misc\postprocess.ltx"
+#include "misc\bridge.ltx"
+#include "plugins\achievements.ltx"
+#include "misc\radiation_counter.ltx"
+#include "models\dynamic_objects.ltx"
+#include "misc\m_online_offline_group.ltx"
+#include "misc\squad_descr\squad_descr.ltx"
+#include "misc\effectors.ltx"
+#include "external.ltx"
+
+#include "mp\mp_actor.ltx"
+#include "mp\team_logo.ltx"
+#include "mp\weapons_mp\ammo_mp.ltx"
+#include "mp\weapons_mp\weapons_mp.ltx"
+#include "mp\weapons_mp\outfit_mp.ltx"
+#include "mp\weapons_mp\items_mp.ltx"
+
+;Game types
+#include "mp\SoundMessages\mp_snd_messages.ltx"
+#include "mp\SoundMessages\ahunt_snd_messages.ltx"
+#include "mp\SoundMessages\cta_snd_messages.ltx"
+#include "mp\SoundMessages\dm_snd_messages.ltx"
+#include "mp\SoundMessages\tdm_snd_messages.ltx"
+#include "mp\private_defines.ltx"
+#include "mp\deathmatch_game.ltx"
+#include "mp\teamdeathmatch_game.ltx"
+#include "mp\artefacthunt_game.ltx"
+#include "mp\capturetheartefact_game.ltx"
+#include "mp\anticheat_active_params.ltx"
+
+#include "evaluation.ltx"
+#include "fonts.ltx"
+#include "alife.ltx"
+#include "creatures\spawn_sections.ltx"
+#include "extracontent.ltx"
+#include "localization.ltx"
+#include "smart_cover.ltx"
+#include "models\awr_dynamic_objects.ltx" ; AWR
+
+#include "vehicles.ltx"
+
+[smart_terrain]
+GroupControlSection =
+$spawn = "ai\smart_terrain"
+;$prefetch = 4
+$def_sphere = 2
+class = SMRTTRRN
+script_binding = bind_smart_terrain.bind
+shape_transp_color = 100, 100, 180, 60 ;0x1800FF00
+shape_edge_color = 32, 32, 32, 255 ;0xFF202020
+
+[zone_pick_dof]
+near = -1500.0
+far = 10.0
+
+[sound]
+occlusion_scale = 0.4
+snd_collide_min_volume = 0.1
+snd_collide_max_volume = 200.
+
+[demo_record]
+speed0 = 0.3
+speed1 = 3.0
+speed2 = 15.0
+speed3 = 60.0
+ang_speed0 = 0.1
+ang_speed1 = 0.5
+ang_speed2 = 7.0
+ang_speed3 = 2.0
+
+[texture_desc]
+files = ui_npc_unique, ui_npc_unique_2, ui_npc_unique_3
+
+[info_portions]
+files = info_portions, info_upgrades, info_alife_switch, info_yantar, info_katacomb, info_escape, info_zaton, info_jupiter, info_pripyat
+
+[dialogs]
+files = dialogs, dialogs_agroprom, dialogs_agroprom_underground, dialogs_yantar, dialogs_marsh, dialogs_redforest, dialogs_katacomb, dialogs_escape, dialogs_bar, dialogs_zaton, dialogs_jupiter, dialogs_pripyat, dialogs_darkvalley, dialogs_deadcity, dialogs_garbage, dialogs_military, dialogs_truck, dialogs_warlab, dialogs_minigames, dialogs_mlr, dialogs_mlr_arena, dialogs_lostzone_ll, dialogs_lostzone_ms, dialogs_lostzone_oa, dialogs_lostzone_hb, dialogs_brotherhood, dialogs_brotherhood_ms, dialogs_brotherhood_nr, dialogs_brotherhood_ac
+
+[encyclopedia]
+files = encyclopedia_infos
+
+[profiles]
+files = npc_profile, npc_profile_mlr, npc_profile_lostzone, npc_profile_brotherhood
+specific_characters_files = character_desc_general, character_desc_marsh, character_desc_agroprom, character_desc_agroprom_underground, character_desc_darkvalley, character_desc_bar, character_desc_escape, character_desc_red_forest, character_desc_yantar, character_desc_military, character_desc_deadcity, character_desc_katacomb, character_desc_zaton, character_desc_pripyat, character_desc_jupiter, character_desc_underpass, character_desc_sarcofag, character_desc_warlab, character_desc_garbage, character_desc_darkscape, character_desc_truck, character_desc_lostzone_ll, character_desc_lostzone_ms, character_desc_lostzone_oa, character_desc_lostzone_hb, character_desc_brotherhood, character_desc_brotherhood_ac
+
+
+;------------------------------------------------------------------
+;-- Inventory slots
+;------------------------------------------------------------------
+;New in Anomaly (ported from CoC 1.5): You can have as many slots as you want, simply create slot_active_* and slot_persistent_* for it in sequential order
+;Set slot_persistent_* = false to treat actor inventory as a 'slot'. Setting highlight_equipped = true in the item section will highlight equipped items in inventory
+[inventory]
+take_dist = 2 ; not used at all
+max_weight = 35
+max_ruck = 92
+max_belt = 5 ;16
+
+slot_persistent_1 = false ;knife
+slot_active_1 = true
+
+slot_persistent_2 = false ;weapon 1
+slot_active_2 = true
+
+slot_persistent_3 = false ;weapon 2
+slot_active_3 = true
+
+slot_persistent_4 = false ;grenades
+slot_active_4 = true
+
+slot_persistent_5 = false ;binocular
+slot_active_5 = true
+
+slot_persistent_6 = true ;bolt
+slot_active_6 = true
+
+slot_persistent_7 = false ;outfit
+slot_active_7 = false
+
+slot_persistent_8 = false ;true ;pda
+slot_active_8 = true
+
+slot_persistent_9 = false ;true ;detector
+slot_active_9 = false
+
+slot_persistent_10 = false ;true ;torch
+slot_active_10 = false
+
+slot_persistent_11 = false ;artefact
+slot_active_11 = true
+
+slot_persistent_12 = false ;helmet
+slot_active_12 = false
+
+slot_persistent_13 = false ;backpack
+slot_active_13 = false
+
+slot_persistent_14 = true ;script animation
+slot_active_14 = true
+
+
+;------------------------------------------------------------------
+;-- Items kinds and inventory sorter
+;------------------------------------------------------------------
+[item_kind_order]
+w_sniper = 1
+w_rifle = 1
+w_smg = 1
+w_shotgun = 1
+w_pistol = 1
+w_melee = 1
+w_misc = 1
+w_base = 1
+w_explosive = 1
+o_heavy = 2
+o_sci = 2
+o_medium = 2
+o_light = 2
+o_helmet = 2
+i_backpack = 2
+i_arty = 3
+i_arty_junk = 3
+i_arty_cont = 3
+i_device = 4
+i_tool = 5
+i_repair = 5
+i_kit = 5
+i_medical = 6
+i_food = 7
+i_drink = 7
+i_mutant_cooked = 7
+i_mutant_raw = 7
+i_letter = 8
+i_quest = 8
+w_ammo = 9
+i_mutant_belt = 10
+i_mutant_part = 10
+i_misc = 11
+i_upgrade = 12
+i_part = 13
+
+[button_sort_settings]
+button_amount = 8
+hotkeys = true
+
+[button_sort_tab_1]
+kinds = s_all
+
+[button_sort_tab_2]
+kinds = w_base, w_pistol, w_shotgun, w_smg, w_rifle, w_sniper, w_explosive, w_melee, w_misc
+
+[button_sort_tab_3]
+kinds = o_light, o_medium, o_sci, o_heavy, o_helmet, i_backpack
+
+[button_sort_tab_4]
+kinds = w_ammo
+
+[button_sort_tab_5]
+kinds = i_arty, i_arty_junk, i_arty_cont, i_mutant_belt, i_mutant_part
+
+[button_sort_tab_6]
+kinds = i_device, i_tool, i_repair, i_upgrade, i_kit, i_attach
+
+[button_sort_tab_7]
+kinds = i_mutant_raw, i_mutant_cooked, i_food, i_drink, i_medical
+
+[button_sort_tab_8]
+kinds = i_misc, i_letter, i_part, i_quest
+
+
+;------------------------------------------------------------------
+[lights_hanging_lamp]
+GroupControlSection = spawn_group
+$spawn = "physics\hanging lamp"
+class = SO_HLAMP
+script_binding = bind_dynamic_light.init
+
+
+[lights_signal_light]
+GroupControlSection = spawn_group
+$spawn = "physics\signal_light"
+class = SO_HLAMP
+script_binding = bind_signal_light.init
+
+
+[search_light]
+GroupControlSection = spawn_group
+$spawn = "physics\search light"
+class = O_SEARCH
+cform = skeleton
+visual = dynamics\light\projector.ogf
+script_binding = bind_physic_object.init
+
+[explosion_marks]
+wallmarks = wm\wm_grenade
+dist = 0.5 ;2.4 ;
+size = 0.6 ;0.4 ;
+max_count = 5
+
+[bloody_marks]
+wallmarks = wm\wm_blood_1,wm\wm_blood_2,wm\wm_blood_3,wm\wm_blood_4,wm\wm_blood_5,wm\wm_blood_6,wm\wm_blood_7,wm\wm_blood_8,wm\wm_blood_9,wm\wm_blood_10,wm\wm_blood_11,wm\wm_blood_1_1,wm\wm_blood_1_2,wm\wm_blood_1_3,wm\wm_blood_1_4,wm\wm_blood_1_5
+dist = 8.0 ;2.0 ;2.4 ;() max
+max_size = 0.6 ;0.4 ;() nominal hit ( *0.5)
+min_size = 0.3 ;0.07 ;()v
+nominal_hit = 0.50 ; , (max_size)
+
+;
+
+blood_drops = wm\wm_blood_drop_1,wm\wm_blood_drop_2,wm\wm_blood_drop_3,wm\wm_blood_drop_4
+start_blood_size = 0.5 ; v
+stop_blood_size = 0.25 ; v ( v start_blood_size)
+
+blood_drop_time = 0.2 ;OBSOLETE
+blood_drop_time_min = 1.5 ;
+blood_drop_time_max = 2.5 ;
+blood_drop_size = 0.2 ; () ,
+
+
+[entity_fire_particles]
+fire_particles = damage_fx\burn_creatures
+start_burn_size = 0.0003 ; v
+stop_burn_size = 0.0001 ; v
+min_burn_time = 10000 ; vv ( )
+
+[hud_cursor]
+; v v
+cross_length = 0.0010 ;0.0015
+min_radius = 0.0
+max_radius = 0.0
+radius_lerp_speed = 0.08
+cross_color = 0.7,0.7,0.7,0.5
+disp_scale = 0.08
+
+[hud_hitmark]
+hit_mark_texture = ui\ui_hud_hit_mark ; ui\ui_empty
+grenade_mark_texture = ui\ui_hud_grenade_mark
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; inventory items
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+
+[document]
+GroupControlSection = spawn_group
+;discovery_dependency =
+$spawn = "documents\document 01"
+;$prefetch = 32
+class = II_DOC
+cform = skeleton
+visual = dynamics\equipments\item_document_1.ogf
+
+inv_name = Document
+inv_name_short = Document
+inv_weight = 1 ;0.2
+
+inv_grid_width = 1
+inv_grid_height = 1
+inv_grid_x = 0
+inv_grid_y = 0
+cost = 0
+
+
+
+
+[spectator]
+$player = on
+class = SPECT
+
+
+[??tg_event]
+class = EVENT
+
+[actor_firsteye_cam]
+lim_pitch = -1.5, 1.5
+lim_yaw = 0, 0
+rot_speed = 3.14, 3.14, 0
+
+[actor_ladder_cam]
+lim_pitch = -1.5, 1.5
+lim_yaw = -1.0, 1.0
+rot_speed = 3.14, 3.14, 0
+
+[actor_free_cam]
+;----------------
+lim_pitch = -1.5, 1.5
+lim_yaw = 0, 0
+lim_zoom = 0.4, 10
+rot_speed = 3.14, 1.0, 10
+
+[actor_look_cam]
+lim_pitch = -0.7, 1
+lim_yaw = 0, 0
+lim_zoom = 1, 5
+rot_speed = 3.14, 6.28, 10
+
+[actor_look_cam_psp]
+lim_pitch = -0.7, 1
+lim_yaw = 0, 0
+lim_zoom = 1, 5
+rot_speed = 2, 2, 2
+offset = 0.5,0.2,-1.1
+autoaim_speed_y = 0.5, 3.14 ;min,max speed
+autoaim_speed_x = 0.5, 3.14
+
+[mounted_weapon_cam]
+lim_pitch = -0.5, 0.5
+lim_yaw = -1.0, 1.0
+rot_speed = 3.14, 1.0, 0
+
+[holder_entity_object_cam]
+lim_pitch = -0.5, 0.5
+lim_yaw = -2.0, 2.0
+lim_zoom = 5, 7
+rot_speed = 3.14, 1.0, 0
+
+[car_firsteye_cam]
+lim_pitch = -0.5, 0.3
+lim_yaw = -2.0, 2.0
+rot_speed = 3.14, 1.0, 0
+
+[car_free_cam]
+lim_pitch = -1, 1.56 ;0, 1.56
+lim_yaw = 0, 0 ;0, 0
+lim_zoom = 5, 10 ;1, 7
+rot_speed = 3.14, 1.0, 10 ;3.14, 1.0, 10
+
+[car_look_cam]
+lim_pitch = 0, 1.56
+lim_yaw = 0 , 0
+lim_zoom = 5, 7
+rot_speed = 25, 1.0, 10
+
+[heli_free_cam]
+lim_pitch = -1.5, 1.5
+lim_yaw = 0, 0
+lim_zoom = 5, 25
+rot_speed = 3.14, 1.0, 10
+
+[heli_front_cam]
+;lim_yaw = -0.01,0.01
+lim_pitch = -1.2, 1.2
+lim_yaw = -1.5, 1.5
+rot_speed = 3.14, 1.5, 0
+
+[heli_look_cam]
+lim_pitch = 0, 1.56
+lim_yaw = 0, 0
+lim_zoom = 5, 15
+rot_speed = 3.14, 1.0, 10
+
+[interface]
+font_game = font_game
+font_small = font_small
+
+
+[graph_point]
+class = AI_GRAPH
+$spawn = "ai\graph point"
+
+;-----------------------------------------------------------------
+; Trade
+;-----------------------------------------------------------------
+[trade]
+;v v
+;
+buy_price_factor_hostile = 1 ; goodwill = -100
+buy_price_factor_friendly = 1 ; goodwill = 100
+sell_price_factor_hostile = 1 ; goodwill = -100
+sell_price_factor_friendly = 1 ; goodwill = 100
+
+
+
+;-----------------------------------------------------------------
+
+[spawn_group_zone]
+GroupControlSection = spawn_group_zone
+$spawn = "ai\group zone" ; option for Level Editor
+class = AI_SPGRP
+
+[spawn_group]
+GroupControlSection = spawn_group
+$spawn = "ai\spawn group" ; option for Level Editor
+class = AI_SPGRP
+
+[level_changer]
+GroupControlSection =
+$spawn = "ai\level changer"
+;$prefetch = 4
+class = LVL_CHNG
+script_binding = bind_level_changer.bind
+
+shape_transp_color = 255, 255, 255, 100
+shape_edge_color = 32, 32, 32, 255
+
+[script_zone]
+GroupControlSection =
+$spawn = "ai\script zone"
+;$prefetch = 4
+class = SCRIPTZN
+script_binding = xr_zones.bind
+
+[physics]
+object_damage_factor = 1.2f
+
+;*****************************************
+; ++=+LT+- L+=
+;*****************************************
+[stalker_names_stalker]
+name_cnt = 123 ; 104
+last_name_cnt = 836 ; 600
+
+[stalker_names_bandit]
+name_cnt = 55 ; 38
+last_name_cnt = 281 ; 182
+
+[stalker_names_science]
+name_cnt = 22 ; 15
+last_name_cnt = 36 ; 29
+
+[stalker_names_private]
+name_cnt = 2
+last_name_cnt = 244 ; 200
+
+[stalker_names_sergeant]
+name_cnt = 2
+last_name_cnt = 244 ; 200
+
+[stalker_names_senior_sergeant]
+name_cnt = 2
+last_name_cnt = 200
+
+[stalker_names_lieutenant]
+name_cnt = 3
+last_name_cnt = 245 ; 200
+
+[stalker_names_captain]
+name_cnt = 1
+last_name_cnt = 245 ; 200
+
+
+[script_object]
+GroupControlSection = spawn_group
+$spawn = "script\script object" ; option for Level Editor
+$npc = on ; option for Level Editor
+; $prefetch = 32 ;
+Scheduled = on ; option for ALife Simulator
+Human = off ; option for ALife Simulator
+cform = skeleton ; collision class
+class = SCRPTOBJ ; AI class
+
+;v v PDA
+[maingame_ui]
+pda_msgs_max_show_time = 20000
+info_msgs_max_show_time = 10000
+snd_new_contact = detectors\contact_1
+snd_new_contact1 = detectors\contact_8
+
+[hud_sound]
+hud_sound_vol_k = 1.
+hud_step_sound_vol_k = 0.7
+
+[attachable_item]
+GroupControlSection = spawn_group
+discovery_dependency =
+$spawn = "equipment\attachable_item"
+cform = skeleton
+class = II_ATTCH
+cost = 100
+inv_name = "Attachable item"
+inv_name_short = "Attachable item"
+inv_weight = .5
+inv_grid_width = 2
+inv_grid_height = 1
+inv_grid_x = 16
+inv_grid_y = 12
+attach_angle_offset = 0, -3.14, 1.6
+attach_position_offset = 0.105, 0.00, 0.085
+attach_bone_name = bip01_head
+
+[new_attachable_item]
+GroupControlSection = spawn_group
+discovery_dependency =
+$spawn = "equipment\new_attachable_item"
+cform = skeleton
+class = II_BTTCH
+cost = 100
+inv_name = "Attachable item"
+inv_name_short = "Attachable item"
+inv_weight = .5
+inv_grid_width = 2
+inv_grid_height = 1
+inv_grid_x = 16
+inv_grid_y = 12
+attach_angle_offset = 0, -3.14, 1.6
+attach_position_offset = 0.105, 0.00, 0.085
+attach_bone_name = bip01_head
+
+[hand_radio]:identity_immunities
+GroupControlSection = spawn_group
+discovery_dependency =
+$spawn = "equipment\hand_radio"
+cform = skeleton
+class = II_ATTCH
+visual = dynamics\devices\dev_fmradio\dev_fmradio.ogf
+cost = 0
+inv_name = "hand_radio"
+inv_name_short = "hand_radio"
+inv_weight = .5
+inv_grid_width = 2
+inv_grid_height = 1
+inv_grid_x = 14
+inv_grid_y = 7
+attach_angle_offset = -1.5708,0.1919,3.1416 ; Angle*PI/180
+attach_position_offset = 0.075, 0.066, 0.023
+attach_bone_name = bip01_l_hand
+auto_attach = false
+anim_item = true
+
+;
+[hand_radio_r]:identity_immunities
+GroupControlSection = spawn_group
+discovery_dependency =
+$spawn = "equipment\hand_radio_r"
+cform = skeleton
+class = II_ATTCH
+visual = dynamics\devices\dev_fmradio\dev_fmradio.ogf
+cost = 0
+inv_name = "hand_radio"
+inv_name_short = "hand_radio"
+inv_weight = .5
+inv_grid_width = 2
+inv_grid_height = 1
+inv_grid_x = 14
+inv_grid_y = 7
+attach_angle_offset = 1.571,0.75,0.0 ; Angle*PI/180
+attach_position_offset = 0.015, -0.084, 0.023
+attach_bone_name = bip01_r_hand
+auto_attach = false
+
+
+[anim_knife]:hand_radio
+visual = dynamics\weapons\wpn_knife\wpn_knife.ogf
+inv_name = st_knife
+inv_name_short = st_knife
+inv_grid_width = 2
+inv_grid_height = 1
+inv_grid_x = 18
+inv_grid_y = 9
+attach_angle_offset = 0.35, -1.8, -1.3
+attach_position_offset = 0.1, 0.03, 0.02
+attach_bone_name = bip01_r_hand
+
+[anim_binoc]:hand_radio
+visual = dynamics\devices\dev_binoculars\dev_binoculars.ogf
+inv_name = st_binocular_name
+inv_name_short = st_binocular_name
+inv_grid_width = 2
+inv_grid_height = 1
+inv_grid_x = 14
+inv_grid_y = 9
+attach_angle_offset = 3.080506,-1.493053,-1.202040 ; Angle*PI/180
+attach_position_offset = 0.080000,0.021273,0.100000
+attach_bone_name = bip01_r_hand
+auto_attach = false
+
+[breakable_object]
+class = O_BRKBL
+remove_time = 10 ;after remove_time seconds object will be removed after it is breaked
+hit_break_threthhold = 0. ;weapon impact can stand breakable_object
+collision_break_threthhold = 2000.f ;collision impact can stand breakable_object
+immunity_factor = 1.3 ;hit power multiplier
+
+[climable_object]
+class = O_CLMBL
+
+[zone_team_base]
+$spawn = "network\team base"
+class = Z_TEAMBS
+GroupControlSection = spawn_group_zone
+
+[multiplayer_skins]
+stalker_killer_head_1 = 0,380
+stalker_killer_antigas = 128,380
+stalker_killer_head_3 = 256,380
+stalker_killer_mask = 384,380
+stalker_killer_exoskeleton = 512,380
+stalker_sci_killer = 640,380
+stalker_killer_military = 768,380
+
+stalker_sv_balon_10 = 0,705
+stalker_sv_hood_9 = 128,705
+stalker_sv_rukzak_3 = 256,705
+stalker_sv_rukzak_2 = 384,705
+stalker_sv_exoskeleton = 512,705
+stalker_sci_svoboda = 640,705
+stalker_sv_military = 768,705
+
+[main_ingame_indicators_thresholds]
+radiation = 0.1,0.25,0.4,0.55,0.7
+wounds = 0.01,0.2,0.4,0.6,0.8
+jammed = 0.5,0.6,0.7,0.8,0.9
+starvation = 0.5,0.6,0.7,0.8,0.9
+fatigue = 0.3,0.6,0.7,0.8,0.9
+
+[tutorial_conditions_thresholds]
+max_power = 0.75
+power = 0.1
+bleeding = 0.4
+satiety = 0.5
+radiation = 0.1
+weapon_jammed = 0.9
+psy_health = 0.5
+
+[squad_manager]
+schedule_min = 1
+schedule_max = 999
+
+[agent_manager]
+schedule_min = 100
+schedule_max = 1000
+
+[custom_script_object]
+GroupControlSection = spawn_group
+discovery_dependency =
+$spawn = "scripts\custom_object"
+cform = skeleton
+class = NW_ATTCH
+visual = dynamics\devices\dev_fmradio\dev_fmradio.ogf
+cost = 0
+inv_name = "custom_script_object"
+inv_name_short = "custom_script_object"
+inv_weight = .5
+inv_grid_width = 2
+inv_grid_height = 1
+inv_grid_x = 16
+inv_grid_y = 12
+attach_angle_offset = 0, 0, 0
+attach_position_offset = 0.08, 0.04, 0.03
+attach_bone_name = bip01_r_hand
+
+[ph_skeleton_object]
+class = P_SKELET
+remove_time = 120
+
+[script]
+current_server_entity_version = 12
+
+[space_restrictor]
+GroupControlSection = spawn_group_restrictor
+$spawn = "ai\space_restrictor"
+;$prefetch = 64
+class = SPC_RS_S
+script_binding = bind_restrictor.bind
+
+shape_transp_color = 0, 255, 0, 24
+shape_edge_color = 32, 32, 32, 255
+
+
+
+[camp_zone]
+GroupControlSection = spawn_group_restrictor
+$spawn = "ai\camp"
+$prefetch = 16
+$def_sphere = 2
+class = SPC_RS_S
+script_binding = bind_camp.bind
+
+shape_transp_color = 0, 0, 255, 24
+shape_edge_color = 32, 32, 32, 255
+
+
+
+[anomal_zone]:space_restrictor
+GroupControlSection = spawn_group_zone
+$spawn = "ai\anomal_zone"
+$def_sphere = 2
+$prefetch = 16
+script_binding = bind_anomaly_zone.bind
+
+shape_transp_color = 240, 217, 182, 58
+shape_edge_color = 32, 32, 32, 255
+
+
+[collision_damage]
+bonce_damage_factor_for_objects = 1.
+
+[pkm_visual_memory]
+min_view_distance = 1 ;0.4 ; , v eye_range,
+max_view_distance = 1 ;0.8 ; , v eye_range,
+visibility_threshold = 50 ;150.0 ; , v
+always_visible_distance = 1 ;0.1
+time_quant = 0.00001
+decrease_value = 0.1 ; , , , -
+velocity_factor = 0.5
+luminocity_factor = 0.5 ; ( L)
+transparency_threshold = 0.4 ;
+view_fov_deg = 90
+view_aspect = 1
+view_far_plane = 100
+
+[details]
+swing_normal_amp1 = .1
+swing_normal_amp2 = .05
+swing_normal_rot1 = 30.0
+swing_normal_rot2 = 1.0
+swing_normal_speed = 2.0
+; fast
+swing_fast_amp1 = 0.35 ;0.25
+swing_fast_amp2 = .20 ;0.15
+swing_fast_rot1 = 5
+swing_fast_rot2 = .5 ;0.75
+swing_fast_speed = 0.5 ;1
+
+[ph_capture_visuals]
+; v .
+
+;NPC
+actors\stalker_bandit\stalker_bandit_1 =
+actors\stalker_bandit\stalker_bandit_2 =
+actors\stalker_bandit\stalker_bandit_3 =
+actors\stalker_bandit\stalker_bandit_3_face_1 =
+actors\stalker_bandit\stalker_bandit_3_face_2 =
+actors\stalker_bandit\stalker_bandit_3_mask =
+actors\stalker_bandit\stalker_bandit_4 =
+actors\stalker_dolg\stalker_dolg_1 =
+actors\stalker_dolg\stalker_dolg_2 =
+actors\stalker_dolg\stalker_dolg_2_face_1 =
+actors\stalker_dolg\stalker_dolg_2_face_2 =
+actors\stalker_dolg\stalker_dolg_2_mask =
+actors\stalker_dolg\stalker_dolg_3 =
+actors\stalker_dolg\stalker_dolg_4 =
+actors\stalker_freedom\stalker_freedom_1 =
+actors\stalker_freedom\stalker_freedom_2 =
+actors\stalker_freedom\stalker_freedom_2_face_1 =
+actors\stalker_freedom\stalker_freedom_2_face_2 =
+actors\stalker_freedom\stalker_freedom_2_mask =
+actors\stalker_freedom\stalker_freedom_3 =
+actors\stalker_freedom\stalker_freedom_4 =
+actors\stalker_hero\stalker_hero_1 =
+actors\stalker_hero\stalker_hero_stc_strelok =
+actors\stalker_lesnik\stalker_lesnik_1 =
+actors\stalker_merc\stalker_merc_2 =
+actors\stalker_merc\stalker_merc_4 =
+actors\stalker_monolith\stalker_monolith_1 =
+actors\stalker_monolith\stalker_monolith_2 =
+actors\stalker_monolith\stalker_monolith_3 =
+actors\stalker_monolith\stalker_monolith_4 =
+actors\stalker_nebo\stalker_nebo_1 =
+actors\stalker_nebo\stalker_nebo_2 =
+actors\stalker_nebo\stalker_nebo_2_face_1 =
+actors\stalker_nebo\stalker_nebo_2_face_2 =
+actors\stalker_nebo\stalker_nebo_2_face_3 =
+actors\stalker_nebo\stalker_nebo_2_mask =
+actors\stalker_nebo\stalker_nebo_3 =
+actors\stalker_neutral\stalker_neutral_1 =
+actors\stalker_neutral\stalker_neutral_2 =
+actors\stalker_neutral\stalker_neutral_2_face_1 =
+actors\stalker_neutral\stalker_neutral_2_face_2 =
+actors\stalker_neutral\stalker_neutral_2_mask =
+actors\stalker_neutral\stalker_neutral_3 =
+actors\stalker_neutral\stalker_neutral_4 =
+actors\stalker_soldier\stalker_soldier_1 =
+actors\stalker_soldier\stalker_soldier_2 =
+actors\stalker_soldier\stalker_soldier_2_face_1 =
+actors\stalker_soldier\stalker_soldier_3 =
+actors\stalker_soldier\stalker_soldier_4 =
+actors\stalker_trader\stalker_trader_1 =
+actors\stalker_ucheniy\stalker_ucheniy_1 =
+actors\stalker_zombied\stalker_zombied_1 =
+actors\stalker_zombied\stalker_zombied_2 =
+actors\stalker_zombied\stalker_zombied_3 =
+actors\stalker_zombied\stalker_zombied_4 =
+
+;Monsters
+monsters\controller\controller_1 =
+monsters\controller\controller_2 =
+monsters\controller\controller_3 =
+monsters\controller\controller_4 =
+monsters\controller\controller_dead =
+monsters\crow\crow =
+monsters\dog\dog =
+monsters\dog\dog_bulterier =
+monsters\dog\dog_bulterier_dead =
+monsters\dog\dog_dead =
+monsters\dog\dog_red =
+monsters\dog\dog_red_dead =
+monsters\dog\dog_white =
+monsters\dog\dog_white_dead =
+monsters\flesh\flesh =
+monsters\flesh\flesh_dead =
+monsters\flesh\flesh_strong =
+monsters\krovosos\krovosos =
+monsters\krovosos\krovosos_dead =
+monsters\krovosos\krovosos_strong =
+monsters\krovosos\krovosos_strong_xray =
+monsters\krovosos\krovosos_xray =
+monsters\mutant_boar\mutant_boar =
+monsters\mutant_boar\mutant_boar_dead =
+monsters\mutant_boar\mutant_boar_strong =
+monsters\poltergeist\poltergeist =
+monsters\poltergeist\poltergeist_dead =
+monsters\poltergeist\poltergeist_strong =
+monsters\pseudodog\pseudodog =
+monsters\pseudodog\pseudodog_dead =
+monsters\pseudodog\pseudodog_grey =
+monsters\pseudodog\pseudodog_grey_dead =
+monsters\rat\rat_1 =
+monsters\snork\snork =
+monsters\snork\snork_dead =
+monsters\tushkano\tushkano =
+monsters\tushkano\tushkano_dead =
+
+;objects
+dynamics\balon\balon_01 =
+dynamics\balon\balon_02 =
+dynamics\balon\balon_02a =
+dynamics\balon\bidon =
+dynamics\balon\bochka_close_1 =
+dynamics\balon\bochka_close_2 =
+dynamics\balon\bochka_close_3 =
+dynamics\balon\bochka_close_4 =
+dynamics\balon\bochka_fuel =
+dynamics\balon\kanistra =
+
+dynamics\box\box_1a =
+dynamics\box\box_1b =
+dynamics\box\box_1c =
+dynamics\box\box_metall_01 =
+dynamics\box\box_wood_01 =
+dynamics\box\expl_dinamit =
+dynamics\box\part\box_metall_01_part_1 =
+dynamics\box\part\box_metall_01_part_2 =
+dynamics\box\part\box_wood_01_part_1 =
+dynamics\box\part\box_wood_01_part_2 =
+dynamics\box\part\box_wood_01_part_3 =
+dynamics\box\part\box_wood_01_part_4 =
+dynamics\box\part\box_wood_01_part_5 =
+dynamics\box\part\box_wood_01_part_6 =
+dynamics\box\part\box_wood_01_part_7 =
+
+dynamics\dead_body\skelet_crash =
+dynamics\dead_body\skelet_crash_monster =
+dynamics\dead_body\vertel_boar =
+
+dynamics\el_tehnika\disel_generator =
+dynamics\el_tehnika\komp_blok =
+dynamics\el_tehnika\komp_klava =
+dynamics\el_tehnika\komp_monitor =
+dynamics\el_tehnika\komp_monitor_screen_1 =
+dynamics\el_tehnika\krisagenerator =
+dynamics\el_tehnika\lab_primary_switcher =
+dynamics\el_tehnika\notebook =
+dynamics\el_tehnika\priemnik_gorizont =
+dynamics\el_tehnika\rupor =
+dynamics\el_tehnika\table_lamp_01 =
+dynamics\el_tehnika\transiver =
+dynamics\el_tehnika\tv_1 =
+dynamics\el_tehnika\ventilator_01 =
+dynamics\el_tehnika\ventilator_02 =
+dynamics\el_tehnika\ventilator_03 =
+dynamics\el_tehnika\ventilator_04 =
+dynamics\el_tehnika\ventilator_05 =
+
+dynamics\light\light_altar =
+
+dynamics\equipment_cache\equipment_box_01_case =
+dynamics\equipment_cache\equipment_box_02_case =
+dynamics\equipment_cache\equipment_cross_1_case =
+dynamics\equipment_cache\equipment_cross_2_case =
+dynamics\equipment_cache\equipment_cross_3_case =
+dynamics\equipment_cache\equipment_electric_box_01_case =
+dynamics\equipment_cache\equipment_electric_box_02_case =
+dynamics\equipment_cache\equipment_hatch_01_case =
+dynamics\equipment_cache\equipment_hatch_02_case =
+dynamics\equipment_cache\equipment_instrument_case_01_case =
+dynamics\equipment_cache\equipment_pipe_01_case =
+dynamics\equipment_cache\equipment_pipe_02_case =
+dynamics\equipment_cache\equipment_pipe_valve_01_case =
+dynamics\equipment_cache\equipment_rucksack_01_case =
+dynamics\equipment_cache\equipment_rucksack_02_case =
+dynamics\equipment_cache\equipment_seif_01_case =
+dynamics\equipment_cache\equipment_seif_02_case =
+dynamics\equipment_cache\equipment_seif_03_case =
+dynamics\equipment_cache\equipment_trees_log_01_case =
+dynamics\equipment_cache\equipment_trees_stump_01_case =
+dynamics\equipment_cache\equipment_zaz968_case =
+
+dynamics\equipments\documents_1 =
+dynamics\equipments\documents_2 =
+dynamics\equipments\documents_3 =
+dynamics\equipments\documents_4 =
+dynamics\equipments\documents_5 =
+dynamics\equipments\documents_6 =
+dynamics\equipments\documents_7 =
+dynamics\equipments\documents_8 =
+dynamics\equipments\documents_9 =
+
+dynamics\fence\wood_fence_1 =
+dynamics\fence\wood_fence_2 =
+dynamics\fence\wood_fence_3 =
+dynamics\fence\wood_fence_4 =
+dynamics\fence\wood_fence_5 =
+dynamics\fence\wooden_board_01 =
+dynamics\fence\wooden_board_02 =
+dynamics\fence\wooden_board_03 =
+dynamics\fence\wooden_board_04 =
+
+dynamics\firestation\fire_vedro =
+dynamics\firestation\ognetushitel =
+
+dynamics\kitchen_room\bottle_3l =
+dynamics\kitchen_room\curtains =
+dynamics\kitchen_room\freezer =
+dynamics\kitchen_room\kitchen_bludo =
+dynamics\kitchen_room\kitchen_kastrula =
+dynamics\kitchen_room\kitchen_kastrula_up =
+dynamics\kitchen_room\kitchen_krujka =
+dynamics\kitchen_room\kitchen_lojka =
+dynamics\kitchen_room\kitchen_miska =
+dynamics\kitchen_room\kitchen_tarelka1 =
+dynamics\kitchen_room\kitchen_tarelka2 =
+dynamics\kitchen_room\teapot_1 =
+
+dynamics\medical_object\kolyaska_01 =
+dynamics\medical_object\kolyaska_01_braked =
+dynamics\medical_object\kolyaska_wheel_01_braked =
+dynamics\medical_object\med_stolik_01 =
+dynamics\medical_object\wheel_litter_01 =
+dynamics\medical_object\wheel_litter_01_braked =
+
+dynamics\scene_objects\hospital\hospital_arka_1 =
+dynamics\scene_objects\hospital\hospital_arka_2 =
+dynamics\scene_objects\hospital\hospital_arka_3 =
+dynamics\scene_objects\hospital\hospital_arka_4 =
+dynamics\scene_objects\hospital\hospital_arka_5 =
+dynamics\scene_objects\hospital\hospital_debris_01 =
+dynamics\scene_objects\hospital\hospital_fence_01 =
+dynamics\scene_objects\hospital\hospital_wooden_board_01 =
+dynamics\scene_objects\hospital\hospital_wooden_board_02 =
+dynamics\scene_objects\hospital\part\hospital_arka_1_part_1 =
+dynamics\scene_objects\hospital\part\hospital_arka_2_part_1 =
+dynamics\scene_objects\hospital\part\hospital_arka_3_part_1 =
+dynamics\scene_objects\hospital\part\hospital_arka_4_part_1 =
+dynamics\scene_objects\hospital\part\hospital_arka_5_part_1 =
+dynamics\scene_objects\hospital\part\hospital_debris_01_part_01 =
+dynamics\scene_objects\hospital\part\hospital_debris_01_part_02 =
+dynamics\scene_objects\hospital\part\hospital_debris_01_part_03 =
+dynamics\scene_objects\hospital\part\hospital_debris_01_part_04 =
+dynamics\scene_objects\hospital\part\hospital_debris_01_part_05 =
+dynamics\scene_objects\hospital\part\hospital_debris_01_part_06 =
+dynamics\scene_objects\hospital\part\hospital_fence_part_01 =
+dynamics\scene_objects\hospital\part\hospital_fence_part_02 =
+dynamics\scene_objects\hospital\part\hospital_fence_part_03 =
+dynamics\scene_objects\hospital\part\hospital_fence_part_04 =
+dynamics\scene_objects\hospital\part\hospital_fence_part_05 =
+dynamics\scene_objects\hospital\part\hospital_wooden_board_01_part_01 =
+dynamics\scene_objects\hospital\part\hospital_wooden_board_01_part_02 =
+dynamics\scene_objects\hospital\part\hospital_wooden_board_01_part_03 =
+dynamics\scene_objects\hospital\part\hospital_wooden_board_01_part_04 =
+dynamics\scene_objects\hospital\part\hospital_wooden_board_01_part_05 =
+dynamics\scene_objects\hospital\part\hospital_wooden_board_02_part_01 =
+dynamics\scene_objects\hospital\part\hospital_wooden_board_02_part_02 =
+dynamics\scene_objects\hospital\part\hospital_wooden_board_02_part_03 =
+dynamics\scene_objects\hospital\part\hospital_wooden_board_02_part_04 =
+dynamics\scene_objects\hospital\part\hospital_wooden_board_02_part_05 =
+dynamics\scene_objects\hospital\part\hospital_wooden_board_02_part_06 =
+
+dynamics\wood_doski\wood_doska1 =
+dynamics\wood_doski\wood_stolb1 =
+dynamics\wood_doski\wood_stolb_fixed =
+
+dynamics\workshop_room\banka_kraski_1 =
+dynamics\workshop_room\kanistra_02 =
+dynamics\workshop_room\lopata =
+dynamics\workshop_room\tiski =
+dynamics\workshop_room\vedro_01 =
+dynamics\workshop_room\ventil_01 =
+;Alundaio
+dynamics\equipments\mattress02 =
+
+;COP Variation Mod
+
+actors\stalker_bandit\stalker_band_2_mask =
+actors\stalker_bandit\stalker_band2a_mask =
+actors\stalker_bandit\stalker_bandit_a =
+actors\stalker_bandit\stalker_bandita1 =
+actors\stalker_bandit\stalker_bandita2 =
+actors\stalker_bandit\stalker_bandita3 =
+actors\stalker_bandit\stalker_bandit_1_mask =
+actors\stalker_bandit\stalker_bandit1a_mask =
+actors\stalker_bandit\stalker_bandit1b_mask =
+actors\stalker_bandit\stalker_bandit1c_mask =
+actors\stalker_bandit\stalker_bandit1a =
+actors\stalker_bandit\stalker_bandit1b =
+actors\stalker_bandit\stalker_bandit1c =
+actors\stalker_bandit\stalker_bandit_2_mask =
+actors\stalker_bandit\stalker_bandit2a_mask =
+actors\stalker_bandit\stalker_bandit_2a =
+actors\stalker_bandit\stalker_bandit2a_old =
+actors\stalker_bandit\stalker_bandit_2a_merc =
+actors\stalker_bandit\stalker_bandit_2a_gp5 =
+actors\stalker_bandit\stalker_bandit2a =
+actors\stalker_bandit\stalker_bandit3a =
+actors\stalker_bandit\stalker_bandit3b =
+actors\stalker_bandit\stalker_bandit3c =
+actors\stalker_bandit\stalker_bandit4a =
+actors\stalker_bandit\stalker_bandit4b =
+actors\stalker_bandit\stalker_bandit4c =
+actors\stalker_bandit\stalker_bandit5a =
+actors\stalker_bandit\stalker_bandit5b =
+actors\stalker_bandit\stalker_bandit5c =
+actors\stalker_bandit\stalker_bandit5d =
+actors\stalker_dolg\stalker_dolg1a =
+actors\stalker_dolg\stalker_dolg1b =
+actors\stalker_dolg\stalker_dolg1c =
+actors\stalker_dolg\stalker_dolg1d =
+actors\stalker_dolg\stalker_dolg_2_old =
+actors\stalker_dolg\stalker_dolg_2_mas2 =
+actors\stalker_dolg\stalker_dolg_2_mas3 =
+actors\stalker_dolg\stalker_dolg_2_mas4 =
+actors\stalker_dolg\stalker_dolg2a =
+actors\stalker_dolg\stalker_dolg2a_mask =
+actors\stalker_dolg\stalker_dolg2a_mas2 =
+actors\stalker_dolg\stalker_dolg2a_mas3 =
+actors\stalker_dolg\stalker_dolg2a_mas4 =
+actors\stalker_dolg\stalker_dolg2a_old =
+actors\stalker_dolg\stalker_dolg3a =
+actors\stalker_dolg\stalker_dolg3b =
+actors\stalker_dolg\stalker_dolg4a =
+actors\stalker_dolg\stalker_dolg4b =
+actors\stalker_dolg\stalker_dolg4c =
+actors\stalker_dolg\stalker_dolgexo_4 =
+actors\stalker_dolg\stalker_dolgexo4a =
+actors\stalker_dolg\stalker_dolgexo4b =
+actors\stalker_dolg\stalker_dolgexo4c =
+actors\stalker_freedom\stalker_free_0 =
+actors\stalker_freedom\stalker_free0a =
+actors\stalker_freedom\stalker_freedom1a =
+actors\stalker_freedom\stalker_freedom_2_old =
+actors\stalker_freedom\stalker_freedom_2_mas2 =
+actors\stalker_freedom\stalker_freedom_2_mas3 =
+actors\stalker_freedom\stalker_freedom_2_mas4 =
+actors\stalker_freedom\stalker_freedom2a =
+actors\stalker_freedom\stalker_freedom2a_mask =
+actors\stalker_freedom\stalker_freedom2a_mas2 =
+actors\stalker_freedom\stalker_freedom2a_mas3 =
+actors\stalker_freedom\stalker_freedom2a_mas4 =
+actors\stalker_freedom\stalker_freedom2a_old =
+actors\stalker_freedom\stalker_freedom2b =
+actors\stalker_freedom\stalker_freedom2b_mask =
+actors\stalker_freedom\stalker_freedom2b_mas2 =
+actors\stalker_freedom\stalker_freedom2b_mas3 =
+actors\stalker_freedom\stalker_freedom2b_mas4 =
+actors\stalker_freedom\stalker_freedom3a =
+actors\stalker_freedom\stalker_freedom4a =
+actors\stalker_freedom\stalker_freedom4b =
+actors\stalker_freedom\stalker_freedom_5 =
+actors\stalker_freedom\stalker_freedom5a =
+actors\stalker_freedom\stalker_freedom5b =
+actors\stalker_merc\stalker_merc_sun1 =
+actors\stalker_merc\stalker_merc_sun1_merc =
+actors\stalker_merc\stalker_merc_sun1_old =
+actors\stalker_merc\stalker_merc2a =
+actors\stalker_merc\stalker_merc2b =
+actors\stalker_merc\stalker_merc2c =
+actors\stalker_merc\stalker_mercenary3 =
+actors\stalker_merc\stalker_mercenary4 =
+actors\stalker_merc\stalker_merc4a =
+actors\stalker_merc\stalker_mercexo_4 =
+actors\stalker_merc\stalker_mercexo4a =
+actors\stalker_monolith\stalker_monolith_2_old =
+actors\stalker_monolith\stalker_monolith2a_old =
+actors\stalker_monolith\stalker_monolith2b_old =
+actors\stalker_monolith\stalker_monolith1 =
+actors\stalker_monolith\stalker_monolith1b =
+actors\stalker_monolith\stalker_monolith2 =
+actors\stalker_monolith\stalker_monolith2_gp5 =
+actors\stalker_monolith\stalker_monolith3a =
+actors\stalker_monolith\stalker_monolith3b =
+actors\stalker_monolith\stalker_monolith4a =
+actors\stalker_monolith\stalker_monolith4b =
+actors\stalker_neutral\stalker_neutral_0 =
+actors\stalker_neutral\stalker_neutral0a =
+actors\stalker_neutral\stalker_neutral0b =
+actors\stalker_neutral\stalker_neutral0c =
+actors\stalker_neutral\stalker_neutral0d =
+actors\stalker_neutral\stalker_neutral0e =
+actors\stalker_neutral\stalker_neutral0f =
+actors\stalker_neutral\stalker_neutral0g =
+actors\stalker_neutral\stalker_neutral1a =
+actors\stalker_neutral\stalker_neutral1b =
+actors\stalker_neutral\stalker_neutral1c =
+actors\stalker_neutral\stalker_neutral1d =
+actors\stalker_neutral\stalker_neutral1e =
+actors\stalker_neutral\stalker_neutral1f =
+actors\stalker_neutral\stalker_neutral_a =
+actors\stalker_neutral\stalker_neutrala1 =
+actors\stalker_neutral\stalker_neutrala2 =
+actors\stalker_neutral\stalker_neutrala3 =
+actors\stalker_neutral\stalker_neutrala4 =
+actors\stalker_neutral\stalker_neutrala5 =
+actors\stalker_neutral\stalker_neutrala6 =
+actors\stalker_neutral\stalker_neutral_1_mas2 =
+actors\stalker_neutral\stalker_neutral1a_mas2 =
+actors\stalker_neutral\stalker_neutral1b_mas2 =
+actors\stalker_neutral\stalker_neutral1c_mas2 =
+actors\stalker_neutral\stalker_neutral1d_mas2 =
+actors\stalker_neutral\stalker_neutral1e_mas2 =
+actors\stalker_neutral\stalker_neutral1f_mas2 =
+actors\stalker_neutral\stalker_neutral_1_mask =
+actors\stalker_neutral\stalker_neutral1a_mask =
+actors\stalker_neutral\stalker_neutral1b_mask =
+actors\stalker_neutral\stalker_neutral1c_mask =
+actors\stalker_neutral\stalker_neutral1d_mask =
+actors\stalker_neutral\stalker_neutral1e_mask =
+actors\stalker_neutral\stalker_neutral1f_mask =
+actors\stalker_neutral\stalker_neutral_1_gas =
+actors\stalker_neutral\stalker_neutral1a_gas =
+actors\stalker_neutral\stalker_neutral1b_gas =
+actors\stalker_neutral\stalker_neutral1c_gas =
+actors\stalker_neutral\stalker_neutral1d_gas =
+actors\stalker_neutral\stalker_neutral1e_gas =
+actors\stalker_neutral\stalker_neutral1f_gas =
+actors\stalker_neutral\stalker_neutral_2_mas2 =
+actors\stalker_neutral\stalker_neutral_2_mas3 =
+actors\stalker_neutral\stalker_neutral_2_merc =
+actors\stalker_neutral\stalker_neutral_2_gp5 =
+actors\stalker_neutral\stalker_neutral_2mask1 =
+actors\stalker_neutral\stalker_neutral_2mask2 =
+actors\stalker_neutral\stalker_neutral_2_old =
+actors\stalker_neutral\stalker_neutral2a =
+actors\stalker_neutral\stalker_neutral2a_mask =
+actors\stalker_neutral\stalker_neutral2a_mas2 =
+actors\stalker_neutral\stalker_neutral2a_mas3 =
+actors\stalker_neutral\stalker_neutral2a_merc =
+actors\stalker_neutral\stalker_neutral2a_gp5 =
+actors\stalker_neutral\stalker_neutral2amask1 =
+actors\stalker_neutral\stalker_neutral2amask2 =
+actors\stalker_neutral\stalker_neutral2a_old =
+actors\stalker_neutral\stalker_neutral2b =
+actors\stalker_neutral\stalker_neutral2b_mask =
+actors\stalker_neutral\stalker_neutral2b_mas2 =
+actors\stalker_neutral\stalker_neutral2b_mas3 =
+actors\stalker_neutral\stalker_neutral2b_merc =
+actors\stalker_neutral\stalker_neutral2b_gp5 =
+actors\stalker_neutral\stalker_neutral2bmask1 =
+actors\stalker_neutral\stalker_neutral2bmask2 =
+actors\stalker_neutral\stalker_neutral2b_old =
+actors\stalker_neutral\stalker_neutral2c =
+actors\stalker_neutral\stalker_neutral2c_mask =
+actors\stalker_neutral\stalker_neutral2c_mas2 =
+actors\stalker_neutral\stalker_neutral2c_mas3 =
+actors\stalker_neutral\stalker_neutral2c_merc =
+actors\stalker_neutral\stalker_neutral2c_gp5 =
+actors\stalker_neutral\stalker_neutral2cmask1 =
+actors\stalker_neutral\stalker_neutral2cmask2 =
+actors\stalker_neutral\stalker_neutral2c_old =
+actors\stalker_neutral\stalker_neutral2d =
+actors\stalker_neutral\stalker_neutral2d_mask =
+actors\stalker_neutral\stalker_neutral2d_mas2 =
+actors\stalker_neutral\stalker_neutral2d_mas3 =
+actors\stalker_neutral\stalker_neutral2d_merc =
+actors\stalker_neutral\stalker_neutral2d_gp5 =
+actors\stalker_neutral\stalker_neutral2dmask1 =
+actors\stalker_neutral\stalker_neutral2dmask2 =
+actors\stalker_neutral\stalker_neutral2d_old =
+actors\stalker_neutral\stalker_neutral2e =
+actors\stalker_neutral\stalker_neutral2e_mask =
+actors\stalker_neutral\stalker_neutral2e_mas2 =
+actors\stalker_neutral\stalker_neutral2e_mas3 =
+actors\stalker_neutral\stalker_neutral2e_merc =
+actors\stalker_neutral\stalker_neutral2e_gp5 =
+actors\stalker_neutral\stalker_neutral2emask1 =
+actors\stalker_neutral\stalker_neutral2emask2 =
+actors\stalker_neutral\stalker_neutral2e_old =
+actors\stalker_neutral\stalker_neutral2f =
+actors\stalker_neutral\stalker_neutral2f_mask =
+actors\stalker_neutral\stalker_neutral2f_mas2 =
+actors\stalker_neutral\stalker_neutral2f_mas3 =
+actors\stalker_neutral\stalker_neutral2f_merc =
+actors\stalker_neutral\stalker_neutral2f_gp5 =
+actors\stalker_neutral\stalker_neutral2fmask1 =
+actors\stalker_neutral\stalker_neutral2fmask2 =
+actors\stalker_neutral\stalker_neutral2f_old =
+actors\stalker_neutral\stalker_neutral2g =
+actors\stalker_neutral\stalker_neutral2g_mask =
+actors\stalker_neutral\stalker_neutral2g_mas2 =
+actors\stalker_neutral\stalker_neutral2g_mas3 =
+actors\stalker_neutral\stalker_neutral2g_merc =
+actors\stalker_neutral\stalker_neutral2g_gp5 =
+actors\stalker_neutral\stalker_neutral2gmask1 =
+actors\stalker_neutral\stalker_neutral2gmask2 =
+actors\stalker_neutral\stalker_neutral2g_old =
+actors\stalker_neutral\stalker_neutral3a =
+actors\stalker_neutral\stalker_neutral3b =
+actors\stalker_neutral\stalker_neutral4a =
+actors\stalker_neutral\stalker_neutral4b =
+actors\stalker_zombied\stalker_zombied_1_face1 =
+actors\stalker_zombied\stalker_zombied_1_face2 =
+actors\stalker_zombied\stalker_zombied1a =
+actors\stalker_zombied\stalker_zombied1a_face1 =
+actors\stalker_zombied\stalker_zombied1a_face2 =
+actors\stalker_zombied\stalker_zombied1b =
+actors\stalker_zombied\stalker_zombied1b_face1 =
+actors\stalker_zombied\stalker_zombied1b_face2 =
+actors\stalker_zombied\stalker_zombied1c =
+actors\stalker_zombied\stalker_zombied1c_face1 =
+actors\stalker_zombied\stalker_zombied1c_face2 =
+actors\stalker_zombied\stalker_zombied1d =
+actors\stalker_zombied\stalker_zombied1d_face1 =
+actors\stalker_zombied\stalker_zombied1d_face2 =
+actors\stalker_zombied\stalker_zombied1e =
+actors\stalker_zombied\stalker_zombied1e_face1 =
+actors\stalker_zombied\stalker_zombied1e_face2 =
+actors\stalker_zombied\stalker_zombied1f =
+actors\stalker_zombied\stalker_zombied1f_face1 =
+actors\stalker_zombied\stalker_zombied1f_face2 =
+actors\stalker_zombied\stalker_zombied1g =
+actors\stalker_zombied\stalker_zombied1g_face1 =
+actors\stalker_zombied\stalker_zombied1g_face2 =
+actors\stalker_zombied\stalker_zombied1h =
+actors\stalker_zombied\stalker_zombied1h_face1 =
+actors\stalker_zombied\stalker_zombied1h_face2 =
+actors\stalker_zombied\stalker_zombied1i =
+actors\stalker_zombied\stalker_zombied1i_face1 =
+actors\stalker_zombied\stalker_zombied1i_face2 =
+actors\stalker_zombied\stalker_zombied1j =
+actors\stalker_zombied\stalker_zombied1j_face1 =
+actors\stalker_zombied\stalker_zombied1j_face2 =
+actors\stalker_zombied\stalker_zombied_2_face1 =
+actors\stalker_zombied\stalker_zombied_2_face2 =
+actors\stalker_zombied\stalker_zombied2a =
+actors\stalker_zombied\stalker_zombied2a_face1 =
+actors\stalker_zombied\stalker_zombied2a_face2 =
+actors\stalker_zombied\stalker_zombied2b =
+actors\stalker_zombied\stalker_zombied2b_face1 =
+actors\stalker_zombied\stalker_zombied2b_face2 =
+actors\stalker_zombied\stalker_zombied2c =
+actors\stalker_zombied\stalker_zombied2c_face1 =
+actors\stalker_zombied\stalker_zombied2c_face2 =
+actors\stalker_zombied\stalker_zombied2d =
+actors\stalker_zombied\stalker_zombied2d_face1 =
+actors\stalker_zombied\stalker_zombied2d_face2 =
+actors\stalker_zombied\stalker_zombied2e =
+actors\stalker_zombied\stalker_zombied2e_face1 =
+actors\stalker_zombied\stalker_zombied2e_face2 =
+actors\stalker_zombied\stalker_zombied2f =
+actors\stalker_zombied\stalker_zombied2f_face1 =
+actors\stalker_zombied\stalker_zombied2f_face2 =
+actors\stalker_zombied\stalker_zombied2g =
+actors\stalker_zombied\stalker_zombied2g_face1 =
+actors\stalker_zombied\stalker_zombied2g_face2 =
+actors\stalker_zombied\stalker_zombied2h =
+actors\stalker_zombied\stalker_zombied2h_face1 =
+actors\stalker_zombied\stalker_zombied2h_face2 =
+actors\stalker_zombied\stalker_zombied2i =
+actors\stalker_zombied\stalker_zombied2i_face1 =
+actors\stalker_zombied\stalker_zombied2i_face2 =
+actors\stalker_zombied\stalker_zombied2j =
+actors\stalker_zombied\stalker_zombied2j_face1 =
+actors\stalker_zombied\stalker_zombied2j_face2 =
+actors\stalker_zombied\stalker_zombied2k =
+actors\stalker_zombied\stalker_zombied2k_face1 =
+actors\stalker_zombied\stalker_zombied2k_face2 =
+actors\stalker_zombied\stalker_zombied2l =
+actors\stalker_zombied\stalker_zombied2l_face1 =
+actors\stalker_zombied\stalker_zombied2l_face2 =
+actors\stalker_zombied\stalker_zombied_3_face1 =
+actors\stalker_zombied\stalker_zombied_3_face2 =
+actors\stalker_zombied\stalker_zombied3a =
+actors\stalker_zombied\stalker_zombied3a_face1 =
+actors\stalker_zombied\stalker_zombied3a_face2 =
+actors\stalker_zombied\stalker_zombied_4_face1 =
+actors\stalker_zombied\stalker_zombied_4_face2 =
+actors\stalker_zombied\stalker_zombied4a =
+actors\stalker_zombied\stalker_zombied4a_face1 =
+actors\stalker_zombied\stalker_zombied4a_face2 =
+actors\stalker_zombied\stalker_zombied4b =
+actors\stalker_zombied\stalker_zombied4b_face1 =
+actors\stalker_zombied\stalker_zombied4b_face2 =
+actors\stalker_zombied\stalker_zombied4c =
+actors\stalker_zombied\stalker_zombied4c_face1 =
+actors\stalker_zombied\stalker_zombied4c_face2 =
+actors\stalker_zombied\stalker_zombied4d =
+actors\stalker_zombied\stalker_zombied4d_face1 =
+actors\stalker_zombied\stalker_zombied4d_face2 =
+actors\stalker_zombied\stalker_zombied4e =
+actors\stalker_zombied\stalker_zombied4e_face1 =
+actors\stalker_zombied\stalker_zombied4e_face2 =
+actors\stalker_zombied\stalker_zombied4f =
+actors\stalker_zombied\stalker_zombied4f_face1 =
+actors\stalker_zombied\stalker_zombied4f_face2 =
+actors\stalker_zombied\stalker_zombied4g =
+actors\stalker_zombied\stalker_zombied4g_face1 =
+actors\stalker_zombied\stalker_zombied4g_face2 =
+actors\stalker_zombied\stalker_zombied4h =
+actors\stalker_zombied\stalker_zombied4h_face1 =
+actors\stalker_zombied\stalker_zombied4h_face2 =
+actors\stalker_zombied\stalker_zombied4i =
+actors\stalker_zombied\stalker_zombied4i_face1 =
+actors\stalker_zombied\stalker_zombied4i_face2 =
+actors\stalker_zombied\stalker_zombied_merecenary_2_face1 =
+actors\stalker_zombied\stalker_zombied_merecenary_2_face2 =
+actors\stalker_zombied\stalker_zombied_merecenary_2_face3 =
+actors\stalker_zombied\stalker_zombied_merecenary2a_face1 =
+actors\stalker_zombied\stalker_zombied_merecenary2a_face2 =
+actors\stalker_zombied\stalker_zombied_merecenary2a_face3 =
+actors\stalker_zombied\stalker_zombied_merecenary2b_face1 =
+actors\stalker_zombied\stalker_zombied_merecenary2b_face2 =
+actors\stalker_zombied\stalker_zombied_merecenary2b_face3 =
+actors\stalker_zombied\stalker_zombied_merecenary2c_face1 =
+actors\stalker_zombied\stalker_zombied_merecenary2c_face2 =
+actors\stalker_zombied\stalker_zombied_merecenary2c_face3 =
+actors\stalker_zombied\stalker_zombied_bandit_2_face1 =
+actors\stalker_zombied\stalker_zombied_bandit_2_face2 =
+actors\stalker_zombied\stalker_zombied_bandit_2_face3 =
+actors\stalker_zombied\stalker_zombied_bandit2a_face1 =
+actors\stalker_zombied\stalker_zombied_bandit2a_face2 =
+actors\stalker_zombied\stalker_zombied_bandit2a_face3 =
+actors\stalker_soldier\stalker_soldier_5 =
+actors\stalker_soldier\stalker_soldier_3_beret =
+actors\stalker_soldier\stalker_soldier3a_beret =
+monsters\snork\snork2 =
+monsters\snork\snork3 =
+monsters\snork\snork4 =
+monsters\snork\snork5 =
+monsters\snork\snorkdead2 =
+monsters\snork\snorkdead3 =
+monsters\snork\snorkdead4 =
+monsters\snork\snorkdead5 =
+monsters\burer\burer2 =
+monsters\burer\burer2_dead =
diff --git a/mods/[DEV] Brotherhood/gamedata/configs/text/eng/st_characters_brotherhood.xml b/mods/[DEV] Brotherhood/gamedata/configs/text/eng/st_characters_brotherhood.xml
new file mode 100644
index 00000000..87d0c1d0
--- /dev/null
+++ b/mods/[DEV] Brotherhood/gamedata/configs/text/eng/st_characters_brotherhood.xml
@@ -0,0 +1,268 @@
+
+
+
+
+
+ Amvrosiy Vybegallo
+
+
+
+ Bellerophon
+
+
+
+ Sarpedon
+
+
+
+
+ Orion
+
+
+
+ Sorokin
+
+
+
+ Strelok
+
+
+
+ Pollux
+
+
+ Castor
+
+
+ Brokkr
+
+
+ Eitri
+
+
+ Marlo Stanfield
+
+
+ Chris Partlow
+
+
+ Poprishchin
+
+
+ Lt. Harald Virtanen
+
+
+ Lt. Aivar Kuusk
+
+
+ Jan Baran
+
+
+
+ Monk
+
+
+
+ Anna Kirillovna
+
+
+
+
+ Andrey Tambov
+
+
+
+
+ Alyosha Shyogolov
+
+
+
+ Christos Mozgotlen
+
+
+
+ Naruchnik
+
+
+
+ Horseshoe Anton
+
+
+
+
+ Vova the Flea
+
+
+ Pasha the Brawler
+
+
+
+ Erast Fandorin
+
+
+ Flavio Becca
+
+
+ Yuri Sherbakov
+
+
+ Semyon Rogozin
+
+
+ Lev Babachenko
+
+
+ Viktor Shupak
+
+
+ Ilya Fedorov
+
+
+
+
+
+
+
+ Achilles
+
+
+
+ Larik
+
+
+
+ Vadim Bondar
+
+
+
+ Sergey Shevchenko
+
+
+
+ Sasha Ponomarenko
+
+
+ Artyom Semenov
+
+
+ Ilya Kovalyov
+
+
+
+ Iliaz
+
+
+ Bezsonik
+
+
+
+ Gutalin
+
+
+
+ Ramzan
+
+
+
+ Galin
+
+
+
+ Primankov
+
+
+
+ Akhat
+
+
+ Tacker
+
+
+ Mizinets
+
+
+ Barka
+
+
+
+ Yak
+
+
+
+
+ Lyoshik
+
+
+
+ Badger
+
+
+ Shlitzer
+
+
+
+ Maksim Ironchain
+
+
+
+ Seryoga Lesun
+
+
+
+ Fasan Bedovy
+
+
+
+ Andrey Lopast
+
+
+
+
+ Sasha Baltunov
+
+
+
+ Ded Tryasina
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+---- Atomic Crusader ----
+
+
+ Praxagoras
+
+
+
+ Blue Winter
+
+
+
+ Balthazar
+
+
+ Melchior
+
+
+
+ Caspar
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/mods/[DEV] Brotherhood/gamedata/configs/text/eng/st_dialogs_brotherhood.xml b/mods/[DEV] Brotherhood/gamedata/configs/text/eng/st_dialogs_brotherhood.xml
new file mode 100644
index 00000000..48ec24df
--- /dev/null
+++ b/mods/[DEV] Brotherhood/gamedata/configs/text/eng/st_dialogs_brotherhood.xml
@@ -0,0 +1,2824 @@
+
+
+----Stories from the Zone----
+
+---Butcher---
+
+-- Bellerophon
+
+ Who is the Nosorog guy on the floor?
+
+
+ Bellerophon? He joined us a couple of weeks ago - I'm training him in the art of hunting, and he became quite efficent in it.
+ Well, he already has some experience, you see, technically he's military, but he got screwed over by hierarchy. They ordered him to kill a Chimera - alone. Quite a story to be honest, worthy of a greek drama.
+
+
+
+ [Stolichnaya] I have a bottle, do you want to tell me the story?
+
+
+ Sure mate. Get cosy and take a sip. Here. \n \nWell where to start? I'm a Podpolkovnik... well I was a Podpolkovnik in the SSO. Now I'm only a Lieutenant... I was about to be promoted to Polkovnik for outstanding service for the Fatherland.
+ But before the ceremony there was the annual Old New Year celebration. Not the strash kind for basic Ivans but for the higher brass. Well the General was there too, and his wife. You have to understand, that guy is what? 60 years old, and his wife, well she was in her twenties.
+ You understand? No, I didn't sleep with her, but we will get to that part. Even though it wasn't an Ivan event, we got torched - normal no? It's the Old New Year after all. During the dinner I saw her looking at me all-the-time. And I understood "shit that's a bad omen.".
+
+
+
+ Another glass?
+
+
+ My friend, you can read my eyes.\n \nWell there I was, that girl eating me with her eyes. And I have to admit, she was exactly my kind of girl! But I knew that if I did anything, I would be screwed, so I resorted to the old forbidden technique.
+ You know it? I know it's a risky one, but if you can control yourself for long enough it always works. So basically, you get super drunk - then every girl will loose interest.
+ So I was hammering away, shot after shot.\n \nAfter a couple of hours my plan was almost perfect - almost. At some point I went to the toilet and she followed me. When I stepped out she stood before me and glued her mouth to mine.
+ I needed some time to understand what was happening - when I did I pushed her away. Didn't help, she jumped right back to my mouth. So I did the best I could think of - I slapped her.
+
+
+ Damn!
+
+
+ Yeah! Trouble is, at that moment two other officers entered the hallway. She was quicker to recover her wits, well she was also less drunk... well she started to scream that I tried to push myself on her and as she refused I tried to force her.
+ You can imagine the situation! And considering that we are talking about the Generals wife, even if they believed me, that never could be the official version! So I was tried before the military courts, but instead of dismissing me and throwing me into prison, for some reason I was send here.
+ Very strange, right? Well not that this place couldn't be seen as punishment, but nevertheless. So I arrived and - hey, you want another glass?
+
+
+ Sure.
+
+
+ So I arrived here and the lads were some proper lads - they welcomed me with a bottle and they took heart at my sorrows. After a couple of days, Major Kuznetsov ordered me to him and gave me a mission:
+ apparently there is a Chimera somewhere in Yantar making some trouble for the Ecologists, and he ordered me to kill it - alone! No squad, no support, I'm supposed to do it on my own! My friend, I never heard about such an animal before, and when I joined back with the lads, they were shocked!
+ Turns out that it's probably the deadliest animal around here! Well that's when they gifted me this armor - fine lads I can tell you! But that didn't solve my problem yet, and as I didn't have any experience hunting mutants, I came to Butcher in order to learn the ropes of the business.
+
+
+ Why didn't you kill it yet?
+
+
+ I would have tried, but there is this psy field in the industrial parts of Yantar, and I don't manage to get inside without my brain melting like lava.
+
+
+ Can't the Ecologists provide you with a protection helmet?
+
+
+ Apparently not, they say they ran out of stock. Well, there is this guy, Spirit I belive, who says that they are supposed to have some left, but I don't know, that guy was visibly drunk when he told me that.
+
+
+ Sounds like they want you dead mate.
+
+
+ The lads were telling me the same, but that can't be true. I mean, I'm a good fighter, why kill me when I can be useful?
+
+
+ Kuznetsov cleary wants you dead. Why don't you run away?
+
+
+ I'm a soldier my friend. I don't run away, I complete my mission. Besides, where should I run to? I would be tried for desertion - that's a death sentence.
+
+
+ You know what? Fuck Kuznetsov - I like you and I'll help you. I'm going to turn off that fucking machine, and then we'll go hunt the Chimera together!
+
+
+ Wow that's super cool of you. Cheers to that mate!
+
+
+
+
+ I desactivated the miracle machine - we can go hunt your chimera.
+
+
+ That's great my friend! But first I want to see through this snork problem for Butcher. I owe it to him. When it's finished we'll take care of the Chimera.
+
+
+
+ The miracle machine is down - we can go hunt your chimera.
+
+
+ Thanks a lot my friend! Meet me in the Yantar bunker, we'll move out from there during the night.
+
+
+
+ Are you ready to hunt?
+
+
+ I feel nervous but yeah, I'm ready. What about you?
+
+
+ I'm ready. Shall we go?
+
+
+ I have a bottle of Stolya ready for afterwards. Lead the way, I'm right behind you.
+
+
+ I'm ready. Shall we go?
+
+
+ Butcher told me that Chimeras are night creatures - we should set out during the night in order to catch it out in the open.
+
+
+ Not yet - I still need to make some preparations.
+
+
+ Alright - come find me in the night when you're ready.
+
+
+
+ We killed the beast!
+
+
+ Yes indeed! Damn my heart is racing like crazy! Let's get back to the Lab - then we can get drunk!
+
+
+
+ We are back!
+
+
+ Yes we are! Take this, we'll drink to our successful hunt!
+
+
+ What are you doing now?
+
+
+ Now that we killed the beast, my task is done! I'll go back and report to Kuznetsov... well after I recover from my hangover hahaha. And then we will see!
+
+
+ Do you think Kuznetsov will be content? As I understand the situation, he wanted you dead?
+
+
+ We'll see about that... but I accomplished my mission, so that should count for something, no? \n \nCome on my friend, another glass! To friendship! Let Kuznetsov be the worry of tomorrow!
+
+--Quest1 now 3--
+
+
+ You said there was a lost cargo?
+
+
+ Yeah - a scientist, Vybegallo, over in Agroprom contacted me because his order got lost in the marshes. A substantial food delivery apparently - the smell probably attracted a dogs
+ and the delivery guy decided his life was more important than the job and threw the cargo to them in order to distract the pack. Everything happened quite fast, so he doesn't remember the exact size of that pack, but he said there were a shit ton of them, so I guess there should be a dozen.
+ \n \nDo you think you can recover the package and deliver it to that scientist?
+
+
+ Sure, Im up for it.
+
+
+ Thanks, but Im not ready yet.
+
+
+ Alright. According to his report he got jumped by them near an old construction site. The guy made his way past the Pump Station and kept the village with the water tower to his left, and the mechanic's yard to his right. Your job is to recover the package, there is no bounty on the dogs.
+ If you found the package, deliver it to Vybegallo, he is somewhere in the Agroprom factory.
+
+
+ No problem, come back later.
+
+
+
+ About your lost package.
+
+
+ Yes, are you ready?
+
+
+
+ I delivered the package.
+
+
+ Well done! Keep the reward money, you deserve it. If you're ready, the snork problem requires some more attention.
+
+
+-- Quest 2 --
+
+
+ Do you have some special jobs for me?
+
+
+ I heard of some of your exploits, you seem like the capable kind \n \nYou see, Duty pays me to keep the road from Cordon to Rostok free from particularly dangerous mutant threats the sort the rookies wouldnt be able to handle. You know, good for business and so on. Luckily the really dangerous mutants are rather rare in these parts.
+ \n \n Most of the times my problems here are rather that packs of animals grow to a threatening number - and exactly such a problem emerged. A sow gave birth to a litter of piglets a couple of months ago, reports vary on their number. Some say three, others believe to have seen six.
+ Be as it may, I need you to put and end to them before the piglets grow to adult boars I dont need to tell you what a problem that would be. So what do you say?
+
+
+ Consider it done.
+
+
+ I need some time to prepare.
+
+
+ Thats the spirit! They inhabit the small wood in the south eastern sector, behind the Witches Jelly anomaly. Here take these, they should come in handy! Come see me when theyre dead, Ill have put some vodka put to the side for you.
+
+
+ No problem, come see me when youre ready!
+
+
+
+ Concerning that job.
+
+
+ Are you ready to take on the boars?
+
+
+
+ The boars are no more.
+
+
+ Well done! Here, have some booze and some food on the house! And of course, a reward for your troubles. Have a rest and if you want more work there is something urgent.
+
+
+
+-- Quest 3 --
+
+
+ You said there was an urgent task?
+
+
+ Indeed. \n \n A group of snorks got lost and wandered over here from Agroprom. This happens sometimes, but in the past it always was one or two who found a way here - this time the reports talk about four! We can't let them dwell there, they pose too large a threat to the rookies. So what do you say?
+
+
+ They are as good as dead.
+
+
+ I need some time to prepare.
+
+
+ Alright! They took up residence south west from here,near the southern path to Agroprom... Here take this, they should come in handy! Come see me when theyre dead, we'll raise a glass to your deeds!
+
+
+ No problem, come see me when youre ready!
+
+
+
+ Concerning that job.
+
+
+ Are you ready to take on the snorks?
+
+
+
+ The snorks are dead.
+
+
+ Well done! Here, have a drink and some food. Here, have a smoke too. And of course, a reward for your troubles. Have a rest and come see me - I have a job for you concerning some lost cargo in the Swamp.
+
+
+
+
+-- Quest 4 --
+
+
+ You said you wanted to talk to me about the snork problem?
+
+
+ Yes. \n \nYou see, this snork incursion worries me. It sometimes happened in the past, but never in these numbers! I've been thinking, probably the snork population in Agroprom grew too much and that's the reason why they come over in larger numbers now... Can you have a look and if my suspicion is right - cull them?
+
+
+ I will take a look.
+
+
+ I need some time to prepare.
+
+
+ Alright! Don't go alone, Bellerophon over there will accompany you - fear not he's a capable fighter. Travel over to Agroprom, if my suspicions are true, they should be somewhere between the southern and the northern path to Garbage.
+ There is a hill there, chances are good that's where you'll find them. Take this, you will need it.
+
+
+ No problem, come see me when youre ready!
+
+
+
+ Concerning that job.
+
+
+ Are you ready to cull the snork population?
+
+
+
+ The snorks are dead.
+
+
+ What a shame! A great man left our lives... Let's raise a glas to him! Was the the snork situation that bad over there?
+
+
+ Horrible! We killed at least ten snorks! It was a massacre...
+
+
+ Ten of these pieces of shit? Fuck... good that I send both you and Bellerophon to take care of the problem... We will have to keep an eye on this situation - this is very strange.
+ \n \nThanks for your help! Take a rest, and if you feel able to do some work again, go meet Aspirin, the Duty medic. He contacted me, seems they need some discrete help.
+
+
+
+ The snorks are dead. Sadly fell Bellerophon fell during the battle.
+
+
+ Well done! Here, have a drink and a bite. So tell me, how is the snork situation over there?
+
+
+ You were right, we killed at least ten snorks! It was a massacre, I'm glad we made it out alive!
+
+
+ Ten of these pieces of shit? Fuck... I should have send more men with you... We will have to keep an eye on this situation - this is very strange.
+ \n \nThanks for your help! Take a rest, and if you feel able to do some work again, go meet Aspirin, the Duty medic. He contacted me, seems they need some discrete help.
+
+---- Quest 5 ----
+
+ Butcher: My friend, we need your urgent help. Bellerophon has been wounded in Agroprom and the other hunter, Orion, is missing in action. Please, go as soon as possible to Agroprom and find Bellerophon in the factory - he will be able to give you details.
+
+
+
+ Butcher: My friend, we need your urgent help. Sarpedon has been wounded in Agroprom and the other hunter, Orion, is missing in action. Please, go as soon as possible to Agroprom and find Sarpedon in the factory - he will be able to give you details.
+
+
+
+ I got your message, what is going on?
+
+
+ Good that you're here - Bellerophon set off with another hunter, Orion, to find the cause of that Snork infestation. They were able to trace it back to the Agroprom Underground -
+ apparently something in there drives the Snorks out. Both of them undertook the mission to explore the Underground, but Bellerophon got wounded. They returned, but Orion set off again... young fool... that was yesterday and since then we haven't heard of him.
+ I now this is a lot to ask, but can you go down there and check the situation out? We expect the worst, but we can't leave a brother behind. \n \nWould you be ready for such an undertaking?
+
+
+ Yes, of course, I'll head over there now.
+
+
+ I don't know, that sounds very dangerous. I will have to think about it.
+
+
+ Great! Find Bellerophon, he is recovering from his wounds in the Agroprom Factory. And here, take this - you will need it.
+
+
+ Understandable - but I'm afraid to insist on the urgency of this matter. Go find Bellerophon if you believe you're up to it.
+
+
+
+ I got your message, what is going on?
+
+
+ Good that you're here - Sarpedon set off with another hunter, Orion, to find the cause of that Snork infestation. They were able to trace it back to the Agroprom Underground -
+ apparently something in there drives the Snorks out. Both of them undertook the mission to explore the Underground, but Sarpedon got wounded. They returned, but Orion set off again... young fool... that was yesterday and since then we haven't heard of him.
+ I now this is a lot to ask, but can you go down there and check the situation out? We expect the worst, but we can't leave a brother behind. \n \nWould you be ready for such an undertaking?
+
+
+ Yes, of course, I'll head over there now.
+
+
+ I don't know, that sounds very dangerous. I will have to think about it.
+
+
+ Great! Find Sarpedon, he is recovering from his wounds in the Agroprom Factory. And here, take this - you will need it.
+
+
+ Understandable - but I'm afraid to insist on the urgency of this matter. Go find Sarpedon if you believe you're up to it.
+
+
+--- Bellerophon ---
+
+ Hello Stalker, how can I help you?
+
+
+ Hello, who are you?
+
+
+ I'm Bellerophon and somewhat new here... well not exactly, but it's complicated.
+
+
+ Where did you get the Nosorog?
+
+
+ Well technically I'm military, so... well some mates gave it to me when I left for my mission.
+
+
+ You're military? What are you doing here?
+
+
+ Well yes, but don't worry, I don't have any animosity towards you. Why I'm here? Well that's a long story and not necessary my favourite one.
+
+
+ I have time.
+
+
+ Alright, I don't want to push you.
+
+
+ I believe we need some Stolya for that. If you can find a bottle, I'll tell you the story.
+
+
+ Yeah, that's more a story to be told with a bottle of Stolya. If you ever find one, I can tell you the story.
+
+
+
+ Are you ready to go hunt some snorks?
+
+
+ Yeah, Butcher told me to give you a hand. Lead the way, I'm behind you.
+
+
+
+ That was brutal!
+
+
+ Yeah, I never saw that many Snorks in one spot! This is very very strange - I will have to investigate. Thanks a lot for your help - you're quite good at this!
+
+
+
+
+ I got the message from Butcher, what is going on?
+
+
+ Good that you're here - we ran into some trouble and I'm wounded... I will make it, don't worry, but I'm incapacitated. I came here with another hunter - Orion, a young blood, to find the cause of that Snork infestation. We noticed that during the night, a lot of these bastards came pouring out of the Underground.
+ There is something down there that drives them out - something nefarious... We went down there and it was brutal... our heads began to hurt and suddenly we were surrounded by Snorks and I got bitten in the arm and leg - luckily Orion was there to carry me out! But... that fool went back! I begged him to wait, but he was eager, how young people are!
+ Shit, and now I haven't heard of him. My friend, please go down there and find him! I would like to come with you, but my leg won't carry me.
+
+
+ Don't worry, I'll find Orion and bring him back here!
+
+
+ I don't know, I don't think I'm ready to head down there yet!
+
+
+ I know I could count on you! And here, take this - I'm afraid you might need it.
+
+
+ Understandable - but please hurry! And here, take this - if you're ready to go down there, I'm afraid you might need it.
+
+
+
+ I found Orion...
+
+
+ I understand... What got him?
+
+
+ I... I'm not sure. There is a huge room underneath, with some machinery... and there was a Controller ... and Burers who tried to protect him!
+
+
+ A Controller? You don't say... did he take up residence there and pushed out the Snorks?
+
+
+ I don't know man... but he had an army surrounding him.
+
+
+ This place will never stop to confuse me. You know what, it's time for you to speak to Forester. After what you did here for us, you deserve to become part of our guild. I'm sure Butcher will vouch for you too! Go see him, and tell him what you saw down under.
+ I'll stay here for a while to recover and keep an eye on the situation. I'll find you later.
+
+
+ Guild?
+
+
+ Yeah man, a guild - or how Forester likes to call it, a Brotherhood. Go see him, he'll be able to explain all of this much better than I can.
+
+
+
+
+
+--- Butcher Legendary ---
+
+
+ Forester told me about the Calydonian Boar. What do you know about him?
+
+
+ Did he now? And let me guess, you want to hunt him?
+
+
+ Maybe.
+
+
+ Hunting that boar is a dangerous undertaking - much more so than anything you hunted until now.
+He took the lifes of many hunters of great reputation: Sigurd One-Eye, Boris the Blade and Irontooth Aslan to name a few. Those who survived did so by running away - like me.
+
+
+ So you faced him? What is your story?
+
+
+ During the time I'm here, I pursued many different occupations, anything that payed money to be frank - a bit like you if I'm not mistaken. Of some activites I'm more proud than others.
+After some time, I found out that from all the possible jobs in the Zone, hunting was most to my liking. You see, I was good at it and hunting mutants tends to not make you enemies here.
+I rapidly made a name for myself, and - in my hybris - started to seek out mutants "normal" hunters didn't dare to face.
+One evening I shared the campfire with some Clear Sky guys who told me about a rumor amongst their hunters that there is a patron saint of the boars in the Great Marshes and that I should avoid to hunt them in order not to attract his ire.
+
+
+ The Calydonian Boar?
+
+
+ Exactly - although back then he didn't carry that name yet. \n \nI dismissed it as an urban legend, but one week later I met a stalker who swore that he saw the beast! He told me how he was hunting boars in the heart of the Great Marshes.
+ After killing off an especially large pack of them, according to his own account, the ground started to shake and out of the bushes came charging four immense boars, and leading them a dreadful one! The guy was wise, as he understood that facing him would spell his doom.
+ So he ran away. \n \nOf course my curiosity was sparked, and I started to make inquiries in the marshes. I found some other survivors and all told me the same story.
+
+
+ So you sought him out? How?
+
+
+ It turns out that contrary to the urban legend, the Calydonian boar only protects his own tribe! A huge tribe to be sure, but only them.
+ So I waited until an abnormal large pack of them was sighted and I started to kill them. Sure enough, the ground suddenly began to shake and out came charging four huge boars with the Calydonian one leading them!
+ What a sight! A dreadful boar! He has burning, bloodshot eyes which seemed coals of living fire, a rough neck which was knotted with stiff muscles, and thick-set with bristles like sharp spikes.
+ A seething froth dripped on his shoulders, and his tusks were like that of an elephant!
+ Discordant roars reverberated from his hideous jaws! It seemed like lightning belched forth from his horrid throat and was scorching the green ground!
+
+
+ What a dreadful picture!
+
+
+ Indeed it was... I still shiver from the mere thought of it. \n \nAfter my initial shock I started blasting with my trusted Saiga! Pumped magazines of lead into them while dodging their charges! His companions dropped alright, although it seemed to me that other boars rushed in to replace them.
+ But the Calydonian one, my god, that beast took the lead like Bellerophon drinks Vodka - even after twelve shots they don't waver. I understood that I came unprepared and I took off faster than a dog having stolen a sausage.
+
+
+ Forester mentionned that you faced him off twice?
+
+
+ Yes... my pride was hurt, but I still had enough left to blinden me to the reality that is this boar. After having run off I could only think about how to kill that devil. So I put together a team - in the end we were four. Peleus, Eurytion and Sigurd!
+ Sadly, the hunt was a disaster! Sigurd fell the first - a boar blindsided him and he was trampled, his missing eye spelling his doom. In the resulting confusion Peleus made a terrible mistake and shot Eurytion while trying to cover him! Horrible fate struck us! \n \nI rushed to Eurytion to save him, but I dropped my guard... I heard a horrible shriek, and when I turned around I saw the Calydonian Boar charging me!
+ I failed to jump out of his way in time... it felt like he ripped my leg off, but it "only" crushed every single bone in it. Luckily Peleus managed to distract it and managed to carry me off to savety.
+ Obviously I'm not able to walk properly anymore - that's also the reason why I no longer hunt and content myself with staying here.
+
+
+ That boar seems to be quite the force of nature...
+
+
+ What happened to Peleus?
+
+
+ It quite certainly is... do you understand why you should refrain from hunting it?
+
+
+ He was devastated that he killed Eurytion... after he cured me back to the living he left for the north and went missing. His son went after him, but by then Peleus already found his demise... Achilles only found his corpse.
+
+
+ I understand the danger, but I want to continue where you left off. Can you tell me how to find him?
+
+
+ Yes, maybe I still need to gather some experience before going after him...
+
+
+ Alright. I have to admit that you have quite a talent for the hunt! And you're unafraid as if you were a cat with nine lives! I'll give the word out to my friends to keep a look out for the Calydonian Boar's tribe.
+ When they find his pack I will write you, but it can take some days! Until then I suggest you prepare - remember, you have to be swift on your feet and you need to have enough firepower to wrangle him and his brethren to death! And remember - running away is always an option.
+
+
+ I agree! Don't rush this! There are easier ways to make money here than to hunt him.
+
+
+
+ The ground trembles and the air is filled with angry growls. The Calydonian Boar seeks revenge for his fallen brethren.
+
+
+
+ I was unprepared for the Calydonian Boar. Next time I'll come back with more firepower. I should talk to Butcher to keep an eye out for that beast.
+
+
+
+ Butcher: My friends tell me that there is an unusual amount of boars roaming about in the heart of the marshes. The hunting season is open.
+
+
+ Butcher: You will find them between the Pump Station, the Village ruins and the Machine Yard.
+
+
+ Butcher: They are split into three groups.
+
+
+ Butcher: Remember: he will fight for them, and they will fight for him! Good luck!
+
+
+
+ About the Calydonian Boar.
+
+
+ Yes?
+
+
+ I decided I'm ready to hunt it.
+
+
+ Can you tell me the story again how you faced the boar?
+
+
+ Do you have any advise for hunting him?
+
+
+ Take only the very essentials for the fight! You need to be able to dodge not only his charges, but that of his companions too! And you will need a shit ton of ammunition! And remember - running away is always an option.
+
+
+ Let's talk about something else.
+
+
+ Alright.
+
+
+ I want to try again. This time the Calydonian Boar will find his demise.
+
+
+ Alright Hunter! I'll give the word out to my friends to keep a look out for the Calydonian Boar's tribe. Make your preparations in the meantime.
+
+
+
+ You were right, that Boar was too much. I had to flee!
+
+
+ You made the right decision to run away. You can always attempt it later.
+
+
+
+ I did it! I killed that beast!
+
+
+ Tremendous work! Stalkers will tell your tale for a very long time! Let's drink to that!
+
+
+ Let's drink!
+
+
+ I have to admit, I didn't thought it feasible! But here you are! Damn, son! Here take this - I no longer need it and I think you will make better use of it. My old hunting rifle, Cyclops!\n \nAnd, yes of course!
+ There is a bounty on that damn boar, although only few Stalkers payed into it believing that it was more legend than truth... well either way, here is the money!
+
+--- Hunter Duty ---
+
+
+ Butcher told me you might have a job for me.
+
+
+ Ah right! Thanks for coming.
+
+
+ No problem, how can I help?
+
+
+ Right. To make it short, the boys here have some trouble on their hands. Voronin recently went to a meeting with Sakharov and Kuznetsov to discuss some general matters. During that meeting, Sakharov asked Voronin to help them by clearing the Bloodsucker Village, a proposition Kuznetsov apparently laughed at, saying Duty wasn't able to manage that and he proposed the help of his soldiers instead.
+ Voronin took that very badly, and started to boast about our boys capabilities. Nothing bad at defending the honour of our soldiers, but he lost any touch to reality and promised Sakharov to clear out the Bloodsucker Village for them. Problem is, he wants to do it overnight in order for the Ecologists to show up in the morning and find a safe village... Over fucking night! Can you imagine?
+ He wants to show off in front of the military, you understand - and this asshole doesn't care about the fact that some of them won't survive the night. \n \nOf course the boys are less than enthusiastic to lose their lifes for the General's ego, they are soldiers after all, no Spetsnaz.
+ So they came to me, and I promised to see what I can do - I thought of Butcher and asked if he couldn't send us an experiencied hunter who is up to the job. Of course you need to be discrete, Vornonin can't know anything about this.
+
+
+ I'm all ears.
+
+
+ Clearing out the Bloodsucker Village during night? That's suicide!
+
+
+ "We are not to reason why, we are but to do and die." Orders are orders, I don't condone insubordination!
+
+
+ I'm glad to hear that, it is always nice to talk to professionals. Of course we don't expect you doing it for free, the boys will pitch in to reward you for your help!
+ They even managed to bribe Mangun to give them a nightvision device - so you won't have to go in blind like a mole. So you're in?
+
+
+ Yes it's tough, but think about it - if someone can do it, it's certainly you! Butcher told me about your skills hunting mutants - that's more than I can say about our boys. Of course we don't expect you doing it for free, the boys will pitch in to reward you for your help!
+ They even managed to bribe Mangun to give them a nightvision device - so you won't have to go in blind like a mole. Will you help us?
+
+
+ I understand the need for a soldier to follow orders of his superiors, but this is objectively not a sane mission! These are actual people being send for a mission they haven't trained for! Think of it! You on the other hand have experience in these matters,
+ at least Butcher told me that you are skilled in hunting mutants. And of course we don't expect you doing it for free, the boys will pitch in to reward you for your help!
+ They even managed to bribe Mangun to give them a nightvision device - so you won't have to go in blind like a mole. So you're in?
+
+
+ Alright, I will do it.
+
+
+ I can do it, but I want Voronin to know it was me!
+
+
+ I need some time to think about it.
+
+
+ No way, they can do it themselves!
+
+
+ God bless you. Come see me the night you want to do it, I'll give you the nightvision device and warn the boys they should pretend to leave for the raid.
+
+
+ That's not possible, Voronin wants it to be the guys designated by him. Can you not do it for them?
+
+
+ Alright, but please don't take too long, Voronin grows impatient.
+
+
+ Are you sure? Think about it, the guys would really appreciate it!
+
+
+
+ About the Bloodsucker Village.
+
+
+ Yeah? Are you up to it?
+
+
+
+ Yeah? Did you change your mind?
+
+
+ I decided, I will certainly not do it!
+
+
+ *Sigh* A shame, I had high hopes for you, but alright... I'll ask Butcher if he can send me someone else...
+
+
+
+ About the Bloodsucker Village.
+
+
+ Yes, what about it?
+
+
+ I am ready.
+
+
+ I am ready.
+
+
+ I am not ready yet.
+
+
+ Good to hear that, come see me this night before you set off.
+
+
+ Perfect. Here is your nightvision device - I also packed some batteries so that you won't find yourself in the middle of night without juice. Take these medics too, hopefully you won't need them, but better safe than sorry.
+ You have to finish this before sunrise! Before the Ecologists will set off! Good hunting Stalker, and thanks for helping us out!
+
+
+ Alright, come see me when you are ready.
+
+
+
+ The job is done.
+
+
+ Excellent work! I knew you would pull through!
+
+
+
+ I'm sorry, I couldn't get the job done in time.
+
+
+ Don't worry Stalker! We will get some scolding from Voronin, but at least no life is lost.
+
+
+
+
+ What happened in the Bloodsucker Village?
+
+
+ You ratted us out, that's what happened. Why?
+
+
+ I believe in following orders.
+
+
+ I wanted to see what would happen.
+
+
+ I did it for the money.
+
+
+ You're an asshole. You could simply have ignored this and we would have hired someone else - instead three of our boys are dead and Artyom is in a critical condition.
+
+
+ You wanted to see what would happen? Three dead - one wounded - that's what would happen! You're an asshole - get lost.
+
+
+ For the money? You're an asshole - your greed cost the life of our boys!
+
+
+
+ What happened to the guy on the floor?
+
+
+ Artyom - a collateral of your ratting. Artyom is the only survivor - he managed to run away when everything went to shit.
+
+
+ Will he make it?
+
+
+ Probably yeah, I managed to stabilize him. But he still is in great pain and he seems to be badly traumatized - he has panic fits and I have to give him Morphine in order to calm him down.
+
+
+ I'm sorry for what happened.
+
+
+ Humpf. Your regret will not bring back Vadim, Sasha and Sergey, but at least you admit to your fault.
+
+
+ Don't try to pin this on me.
+
+
+ Fuck off asshole, this is your fault.
+
+
+
+ I need to tell you something.
+
+
+ What are you waiting for, speak up!
+
+
+ Your men tried to pay me to clear the Bloodsucker village for them.
+
+
+ Nothing.
+
+
+ What? Why?
+
+
+ Then stop wasting my time.
+
+
+ They are afraid to do it - they say that they are not trained for such a night mission.
+
+
+ These cowards... I will beat bravery into them - thanks for telling me!
+
+
+ It was me who cleared the Bloodsucker Village - your men payed me to do the job in their stead.
+
+
+ What? Why?
+
+
+ They were too afraid to do it - they said that they are not trained for such a night mission.
+
+
+ These cowards... I will beat bravery into them - thanks for telling me!
+ Here have a "fee" to keep your mouth shut, we can't have this disgrace be known in the Zone.
+
+
+
+ You wanted to see me?
+
+
+ Yes... I'm afraid that the mission failed. Of the four men I send only one made it back - badly wounded and out of his mind.
+ We barely got anything out of him, but it seems that it went to shit the moment they set foot into that Village.
+
+
+ What happened?
+
+
+ Artyom wasn't able to give a full report... from what I understood, they didnt follow protocol and separated which resulted in a mission failure.
+ He's with Aspirin at the moment, maybe you can get something out of him.
+
+
+ What do you want me to do about the situation?
+
+
+ No one can know about this failure and my men refuse to go back to that Village during night.
+ I need someone to sneak into the village during night and swap the fallen men's Duty patch with Mercenary ones...
+
+
+ What? Are you fucking kidding me?
+
+
+ Understandable.
+
+
+ Not at all, this is vital for the reputation of Duty - we can not be allowed to show weakness!
+
+
+ I'm glad that we are on the same page - the reputation of Duty is after all paramount.
+
+
+ Can you not simply recover their bodies?
+
+
+ Out of question! That would draw too much attention to the failure - I cannot allow it!
+
+
+ But these man died in the line of duty! You have to recover them!
+
+
+ These men knew for what they signed up. Besides, the reputation of Duty is larger than the memory of a few men.
+
+
+ Why Mercenary patches?
+
+
+ Isn't it obvious? To make it look as if some Mercenaries dressed as Duty soldiers in order to bypass Rostok without unnecessary attention, but got caught in the Bloodsucker Village.
+
+
+ Alright, I will help you clean up the evidence.
+
+
+ I have to think about it.
+
+
+ I don't want to be involved in this.
+
+
+
+ Good. Prepare for the mission and come see me during the night before you set off.
+
+
+ Then do it fast, the more time passes the more people will notice.
+
+
+ Are you sure? I'm ready to pay a good price for this, let's say 20.000 roubles?
+
+
+ For that price I can do it.
+
+
+ No forget it.
+
+
+ Good. Prepare for the mission and come see me during the night before you set off.
+
+
+ Think about it.
+
+
+
+ About the mission.
+
+
+ Yes?
+
+
+ I am ready. Tell me about the details.
+
+
+ Perfect. The mission is rather simple, you find the bodies of Vadim, Sergey and Sasha and replace their Duty patch with these ones. But be careful to finsih the job before sunrise, we can't have anyone seeing you.
+
+
+ I need some more time.
+
+
+ Alright, but please hurry up.
+
+
+ I have changed my mind - I will assist you with your cover up...
+
+
+ Alright, good to hear! Come see me when you are ready.
+
+
+ Nothing.
+
+
+ Okay...?
+
+
+ I am ready, tell me about the details.
+
+
+ Good, come see me during the night beofre setting of.
+
+
+
+ It is done.
+
+
+ Excellent work Stalker - now no one will be able to pin anything on Duty. Here is your reward - I hope I can count on your discretion.
+
+
+
+ It is done.
+
+
+ You mean you failed - there is chatter about a Stalker fumbling with Duty bodies in the Bloodsucker village. Here some compensation, but I believe it's also in your best interest to keept your failure secret.
+
+
+
+
+ Voronin: Stalker, we have a problem on our hands. Please come see me as soon as possible!
+
+
+ Aspirin: Stalker, come see me - we have a job proposition for you.
+
+
+ Aspirin: Stalker, come see me - we got a problem for which we need your help.
+
+
+ Yo guys, there is a Stalker looting... Duty soldiers? Dead Duty soldiers in the Bloodsucker Village? What are they doing there?
+
+
+
+
+
+ You said you have a job offer.
+
+
+ Yes - the boys want to get vengeance on these Bloodsuckers and considering that you have...
+ experience with that Village, they would like you to join them on their expedition.
+
+
+ So you're not taking it badly that I told Voronin and accepted his job?
+
+
+ Well... obviously that was not very cool of you - we could have hired someone else who would have done it instead of you.
+ But... I - We understand that the Zone is not very conductive for morals and that people like you are here for... their personal gains.
+ Water under the Bridge, you didn't kill Sasha, Sergey and Vadim, these fucking Bloodsuckers did it... now we would like to hire you for payback.
+ A lot of money Stalker, the boys didn't clutch their wallets in order to get payback.
+
+
+ No bad feelings about Artyom?
+
+
+ Artyom, yes, that was - to be frank - quite stupid of you to give him that much morphine. Poor Artyom... He didn't deserve to die like this.
+ But life goes on ... let's not talk about Artyom, yes? His death is still very painfull to me.
+
+
+ What is the plan? Isn't a night raid too dangerous?
+
+
+ No night raid needed Stalker, the plan is quite different. We bought all the explosives we could get our hands on, and we will set them up in different locations of the village showing Bloodsucker activity.
+ When they creep out during the night, we will blow them up like firework!
+
+
+ Alright, I'm in.
+
+
+ I have to think about it.
+
+
+ No, I think I will not help you out.
+
+
+ We are glad to hear that! Come see me when you're ready, and I tell you the details!
+
+
+ Alright, but please hurry! The boys are getting restless waiting for their vengeance.
+
+
+ Are you sure? There is a lot of money to be made and the job is quite easy if I dare to say so.
+
+
+ Let me think about it.
+
+
+ No, my answer is final.
+
+
+ Alright, take your time.
+
+
+ Please consider the job offer! We will be waiting if you change your mind.
+
+
+
+ About the payback mission.
+
+
+ Yes?
+
+
+ I am ready. Tell me about the details.
+
+
+ Good, very good. Ilya Kovalyov is your contact person - you will meet him in Army Warehouse in the farm south of the path leading here.
+ Wait for him there - he will explain the rest of the mission to you.
+
+
+ I need some more time.
+
+
+ Alright, but please hurry up.
+
+
+ I have changed my mind - I will assist you taking vengeance on these Bloodsuckers.
+
+
+ Alright, the boys will be happy to hear that! Come see me when you are ready.
+
+
+ Nothing.
+
+
+ Okay...?
+
+
+
+ You asshole set me up!
+
+
+ Fuck you, you deserve it asshole!
+
+
+ Your friends were about to kill me!
+
+
+ I told them to only fuck you up, but I can't blame them for hating your guts. Now fuck off asshole!
+
+
+
+
+ Good day asshole.
+
+
+ What? What is your problem?
+
+
+ Was it not enough for you to rat us out?
+ Did you have to accept Voronin's request and let our boys lie abandoned in that fucking Village while everyone is supposed to pretend they are mercenaries?
+
+
+ Relax, it was not personal, only business.
+
+
+ Aspirin told us to give you a good beating, but you don't deserve that. This is for the boys.
+
+
+ Woah what are you doing?
+
+
+ What? And Artyom? Did you have to kill that poor soul? You're scum!
+
+
+ I - it was not my intention!
+
+
+
+ Ah ah ah... it hurts... please help me...
+
+
+
+ Artyom, I need to ask you something.
+
+
+ Ah ah ah...
+
+
+ Where can I find the bodies of the other soldiers?
+
+
+ Ah ah ah... my leg, it hurts. Mother please! I want to go home...
+
+
+ [Morphine] Here take the morphine, it will help with the pain. Can you remember what happened during that night?
+
+
+ Aaaaah... fuck... \n \n... \n \nWhere am I, what happened?
+
+
+ Relax, you're back in the base. I need you to remember what happened during the raid.
+
+
+ What? The raid? ... Yes the raid ... \n \n ... \n \nfuck the raid ... it was a massacer, we should never have gone into that Village. We entered from the south-west, and everything was quiet - we even made it across the dirt road without incident...
+ But when we approached the wooden house everything... everything... oh my god Vadim! Vadim! Aaaaah!!!
+
+
+ Relax Artyom, relax! Tell me what happened next?
+
+
+ I believe that is enough... rest well Artyom.
+
+
+ Vadim! Aaah it hurts... Vadim!!! Sergey!!! Mother!!! HELP!
+
+
+ [Morphine] Here take the morphine... Artyom, what happened after Vadim died?
+
+
+ Aaaaah... \n \n ... \n \nWhat? Ah yes... after the Bloodsucker slaughtered Vadim we turned around and ran for our lifes... Sergey was first ... faster than Sasha and me ... he ran into the first house he saw... \n \n ... \n \n
+ We heard ... we heard a horrible screach ... followed by a scream! They got Sasha ... they got Sasha... oh my god, why? Why? Ohhhhhhh...
+
+
+ Artyom relax! We are nearly done Artyom! What happened next?
+
+
+ Aaaaah!!! They're everywhere! Help! Please help!
+
+
+ [Morphine] Here some more morphine... Artyom, we nearly finished, what happened after Sergey died?
+
+
+ Oh... aaaaah... \n \n ... \n \n yes the raid... we ... we didn't follow Sergey into that ... house. Sasha went totally mad ... went off towards the heart of the village... I... didn't think ... followed him ... we ... ran ... until we ... north of village...
+ There we found... a house ... empty... we rested... yes rested ... I'm tired ... I need to rest ...
+
+
+ Artyom! Artyom!!! Don't fall asleep!!! Artyom, wake up!!!
+
+
+------ Forester -------
+
+ [Mutanthammer] I found this gun on Orion.
+
+
+ Ah yes, the Mutanthammer. I remember this gun, it was me who modified it!
+ Mainly I fluted the barrel and replaced some of it's components with a lighter material to cut off some weight. Of course it also comes with a downside - the gun will wear faster than a standard Saiga.
+ Took me some time, but I'm really proud of it. So you're the new owner - I hope it will serve you well! Here, let me clean it for you and repair it in order to make it pristine again.
+
+
+ Thank you!
+
+
+ No problem! \n \n...\n \n Here, as good as new! Good hunting with it!
+
+
+
+ What's the story behind that Bloodsucker trophy?
+
+
+ Oh that's Moloch - the brother of Vlad and Drakul.
+
+
+ Moloch? Vlad? Drakul? Since when do mutants have names?
+
+
+ Since I gave a name to these mutants. Of course they are not any Bloodsuckers - they are very ancient beings... they've been around since the earlier days of the Zone - and around here, being old means something.
+
+
+ Vlad and Drakul? That doesn't sound very original for Bloodsuckers?
+
+
+ I don't care if it's original, what matters to me is that it suits them. Besides, if you believe you're more creative - find a mutant deserving a name and prove it.
+
+
+ Brothers? How do you know?
+
+
+ I don't know - but for me they are brothers. I met them together - here in this forest. The first Bloodsuckers I've ever seen, I didn't know that such devils could even exist... but they do...
+
+
+ What is the story behind them?
+
+
+ Where to begin? From where they came - I don't know... But I still remember the first time I met them. It was not long after the second great explosion, the one which created this hell.
+ I picked up a distress radio call of survivors - a military scout squad which got lost in the Zaton swamps. Apparently their commander walked into a Vortex and with him their only map got shredded.
+ Imagine giving only one map for a whole squad - but it seems some things didn't change since the old days. Nevertheless, I found the two survivors and promised to lead them back to their headquarters - back in the days the Military still had a presence in the Army Warehouses.
+ We reached this forest at dusk - I wanted to overnight at this complex, but these boys were eager to rejoin their base. Nowadays, crossing the forest at night would mean certain death, but you know back then most of these mutants were quite rare and didn't yet reach the southern parts of the Zone.
+ So we made a compromise - we were to take a rest and have something to eat and continue our journey after having warmed our bellies with food and our spirit with vodka. We entered the forest to gather some firewood and cooked some meat on a clearing. I don't know what attracted them - the smell of food or maybe the laughter...
+ I left the fireplace to take a piss while the two soldiers continued fooling around. When returned to the fire I saw one of them lying on the ground - hissing from laughter I thought... it was only when I stood next to him that I noticed the blood gurgling out of his throat. I looked up - the other stood there with wide eyes and behind him...
+ I don't know which of the brothers it was, but that was the first Bloodsucker I saw in my life. I didn't understand - I simply froze. That's when I felt tentacles grapling around my neck - strong and hot was that grip! I wasn't thinking - I grabbed a piece of burning wood and struck behind me!
+ The Bloodsucker immediately let go of me, and I scrambled off, running for my life! That's how I met Moloch, Vlad and Drakul!
+
+
+
+ Damn... but you managed to shoot Moloch? How did that happen?
+
+
+ I met the brothers many times since then! At first I shunned that forest, until I noticed that they are night creatures. I started to track them, gather informations on this new danger lurking in my wood. I tried to lay traps - the first worked but I wasn't able to capitalise on it, but the brothers also learned and started to avoid them.
+ Sometimes I managed to wound one - sometimes they managed to wound me. I tried to find their lair by following their foodsteps - to no avail, I never found the exact location. This continued until one day, some bandits tried to jump me. They tried to extort me - I refused. It escalated and they ended up dead - except one! He was wounded and out cold - bleeding to death.
+ So I decided not to let a good corpse go to waste and I carried him into the forest as bait. I tied him to a tree and waited in ambush for the brothers. And sure enough they came - surrounding that poor fellow. Yes, it was not right for me to do that to a fellow man - to expose him to such horros without giving him a fighting chance... But back then I thought it was a good idea.
+ While they were gulping on their easy prey, I took aim and patiently waiting for my shot. And I shot - it went right through Moloch's heart. Vlad and Drakul screached up in fright and took off - and I took my trophy. \n \n
+ Since then I never saw them again, they retreated deep into the forest and rarely come out anymore - they let most of their hunting be done by their conspecifics.
+
+
+ Tell me where to find them - I will hunt them!
+
+
+ I believe that is enough - I still want to be able to sleep.
+
+
+ Then you are a fool! They mean certain death - don't be so rash as to believe you'll be able to master them!
+
+
+ They are mutants, Forester, you don't honestly believe they stopped killing, do you? They have to be destroyed - especially if they are as dangerous as you say!
+
+
+ You're right - patience is in order. We have to wait for an opportune moment.
+
+
+ Of course I don't believe they stopped murdering - but it's not your duty putting an end to them! Maybe I wasn't clear enough - they are not your normal Bloodsuckers, they are much worse. They are like a force of nature - we have to live with them.
+
+
+ I protest - I have proven myself, I'm a capable hunter! I faced and mastered many terrors here - I can do it.
+
+
+ I know - you're valant and your skills are great! But this is an order of magnitude which you haven't faced yet - you're overestimating your own strenght - you're rash and want to hurry and this makes you prone to mistakes.
+ Don't ask of me to be guilty of your death - keep your strength for other mutants, don't waste away your life.
+
+
+ Forester, have trust in younger people! At some point they have to be stopped, and our chances are better if you would help instead of trying to shelter me. Tell me, how to prepare and I will!
+
+
+ Aah, young people... so overconfident. You don't understand - you will not only face them, but also their brethren! \n \n... \n \nBut I can see it in your eyes, you're determined.
+ Tell you what, bring me the hearts of five Bloodsuckers, and I'll tell you how to find them... at least you will have experience facing these devils...
+
+
+ I will not disappoint you! Consider it done.
+
+
+ Be careful out there young Stalker!
+
+
+ Yes, I'm glad you're seeing reason.
+
+
+ Well said, let's turn our minds to more pleasant things.
+
+
+
+ About Vlad and Drakul.
+
+
+ What is it?
+
+
+ I want to hunt them.
+
+
+ Tell me the story again how you first met them.
+
+
+ Tell me the story again how you shot Moloch.
+
+
+ It was not long after the second great explosion, the one which created this hell.
+ I picked up a distress radio call of survivors - a military scout squad which got lost in the Zaton swamps. Apparently their commander walked into a Vortex and with him their only map got shredded.
+ Imagine giving only one map for a whole squad - but it seems some things didn't change since the old days. Nevertheless, I found the two survivors and promised to lead them back to their headquarters - back in the days the Military still had a presence in the Army Warehouses.
+ We reached this forest at dusk - I wanted to overnight at this complex, but these boys were eager to rejoin their base. Nowadays, crossing the forest at night would mean certain death, but you know back then most of these mutants were quite rare and didn't yet reach the southern parts of the Zone.
+ So we made a compromise - we were to take a rest and have something to eat and continue our journey after having warmed our bellies with food and our spirit with vodka. We entered the forest to gather some firewood and cooked some meat on a clearing. I don't know what attracted them - the smell of food or maybe the laughter...
+ I left the fireplace to take a piss while the two soldiers continued fooling around. When returned to the fire I saw one of them lying on the ground - hissing from laughter I thought... it was only when I stood next to him that I noticed the blood gurgling out of his throat. I looked up - the other stood there with wide eyes and behind him...
+ I don't know which of the brothers it was, but that was the first Bloodsucker I saw in my life. I didn't understand - I simply froze. That's when I felt tentacles grapling around my neck - strong and hot was that grip! I wasn't thinking - I grabbed a piece of burning wood and struck behind me!
+ The Bloodsucker immediately let go of me, and I scrambled off, running for my life! That's how I met Moloch, Vlad and Drakul!
+
+
+ I started to track the brothers, gather informations on this new danger lurking in my wood. I tried to lay traps - the first worked but I wasn't able to capitalise on it, but the brothers also learned and started to avoid them.
+ Sometimes I managed to wound one - sometimes they managed to wound me. I tried to find their lair by following their foodsteps - to no avail, I never found the exact location. This continued until one day, some bandits tried to jump me. They tried to extort me - I refused. It escalated and they ended up dead - except one! He was wounded and out cold - bleeding to death.
+ So I decided not to let a good corpse go to waste and I carried him into the forest as bait. I tied him to a tree and waited in ambush for the brothers. And sure enough they came - surrounding that poor fellow. Yes, it was not right for me to do that to a fellow man - to expose him to such horros without giving him a fighting chance... But back then I thought it was a good idea.
+ While they were gulping on their easy prey, I took aim and patiently waiting for my shot. And I shot - it went right through Moloch's heart. Vlad and Drakul screached up in fright and took off - and I took my trophy.
+
+
+ [Bloodsucker Hearts] I brought proof that I'm able to hunt Bloodsuckers.
+
+
+ I killed the Calydonian Boar! And Vlad and Drakul will meet the same fate if you tell me where to find them.
+
+
+ Impressive... I'm reluctant to tell you this, but I believe a promise is a promise... So listen carefully - their lair is deep in the forest to the east of here - in the proximity of an old soviet tank. Where exactly - I don't know but that doesn't matter.
+ You will have to bait them out, and I believe to know how to do it but you won't like it... You will have to dress my old overcoat - it's the one I had while I was hunting them in the old days, it will have my smell and they will believe that it's me who dares to meet them.
+ It's old - so don't expect good protection... I did some repairs and added two fasteners so you can use two attachments - so choose wisely! And of course you will have to do it during the night, when they feel confident in the protection the dark provides - else they will not dare to affront "me"...
+ \n \nAre you still up to it?
+
+
+ Impressive... I might have underestimated your skill and experience! I'm reluctant to tell you this, but you might be ready... Alright, so listen carefully - their lair is deep in the forest to the east of here - in the proximity of an old soviet tank. Where exactly - I don't know but that doesn't matter.
+ You will have to bait them out, and I believe to know how to do it but you won't like it... You will have to dress my old overcoat - it's the one I had while I was hunting them in the old days, it will have my smell and they will believe that it's me who dares to meet them.
+ It's old - so don't expect good protection... I did some repairs and added two fasteners so you can use two attachments - so choose wisely! And of course you will have to do it during the night, when they feel confident in the protection the dark provides - else they will not dare to affront "me"...
+ \n \nAre you still up to it?
+
+
+ I believe that is enough.
+
+
+ Yes, I still am.
+
+
+ To be honest I have to think about it...
+
+
+ Alright, then come see me the night you want to set out - shortly after sunset. Prepare for a prolonged battle, it's very likely that you will have to affront their brethren too! Stock up on shells, medicine and so on. Don't underestimate this.
+
+
+ There is no shame in being afraid of mortal danger! Take your time to think about it!
+
+
+ Alright, let's talk about something else.
+
+
+
+
+
+ About the hunt for Vlad and Drakul.
+
+
+ What is it?
+
+
+ I am ready for the hunt.
+
+
+ I am ready for the hunt.
+
+
+ I need more time.
+
+
+ Can you tell me about the plan again?
+
+
+ Sure, listen carefully: You will have to do it during the night, when they feel confident in the protection the dark provides. Their lair is deep in the forest to the east of here - in the proximity of an old soviet tank. Where exactly - I don't know but that doesn't matter.
+ You will have to bait them out, and I believe to know how to do it but you won't like it... You will have to adone my old overcoat - it's the one I had while I was hunting them in the old days, it will have my smell and they will believe that it's me who dares to meet them.
+ It's old - so don't expect good protection... I did some repairs and added two fasteners so you can use two attachments - so choose wisely! And I have the strong suspicion that you will not only have to face them, but their brethren too!
+
+
+ Alright, I see you're adamant. Here is the coat - you will not have to wear it on your way there, but try to put it on shortly before reaching the tank. Do you remember the way? It's deep in the forest,
+ east of here, but to reach it you have to pass through an old mine tunnel a bit to the south. After passing it you turn north again an you walk for quite some time. The tank is hidden by a small hill - ready yourself there and approach the tank carefully.
+ I'm not sure how they will react, but maybe they will send some of their brethren first to tire you out. Remember - you have to do it by night! If the sun rises, they will retreat. You will need to set out shortly after sunset...\n \nNow good luck young Stalker - may the night be in your favour.
+
+
+ Very good. Come see me after shortly after sunset - I'll give you the coat then.
+
+
+ No problem - you know you don't have to do this. Let's talk about something else.
+
+
+
+ Are there other named mutants?
+
+
+ Yes there are... there is the Calydonian Boar. Butcher named him, the scourge of any hunter in the Great Swamp region. Then there is Moby Dick - the white Pseudogiant. Gonta is intimately acquainted to him. Finally there is Chyort - the Chimera male.
+ Evasive fucker - the only known survivor is Trapper.
+
+
+ Tell me more about the Calydonian Boar.
+
+
+ Tell me more about Moby Dick.
+
+
+ Tell me more about Chyort.
+
+
+ Thank you for these informations.
+
+
+ He's the patron saint of any boar in the Great Swamp - many hunters are known to have died by his tusks when they hunted for his brethren. His hide is said to be as thick as scales of Zmei Gorynich. Butcher tried to hunt him in the past - according to him he met that beast twice - and twice that boar shrugged off his shotgun blasts as it were nothing!
+
+
+ Moby Dick - Gonta's nemesis. He carries that name because he's large as a whale - and an albino! That Pseudogiant killed his childhood friend, and since then Gonta is hunting him, and for years he eluded his vengeance.
+
+
+ Yes, Chyort... the devil himself. They say one strike would be enough to even cleave Sidorovich in half! Not that I ever met Sidorovich, but according to the rumors, it sounds like quite a feat! No one knows where his lair is, but he sometimes wanders into different regions to either eat or procreate!
+ Trapper says that the stronger Chimeras are his offspring - considering the amount of strong chimeras, you can imagine that Chyort's hunger for flesh is only surpassed by his lust.
+
+
+ No problem, I hope this will serve as a cautionary tale - don't fuck with these mutants!
+
+
+
+ I didn't manage to kill the Bloodsuckers in time - dawn was upon me.
+
+
+ Don't worry young Stalker, the most important is that you're still alive! You will have another chance another night. Come see me if you wish to give it another shot.
+
+
+
+ Good news! Vlad and Drakul won't hunt these forests anymore!
+
+
+ Excellent! Great work! You did a great deed tonight! Let's drink to your accomplishment!
+
+
+
+ Forester: You are getting close to their hunting spot.
+
+
+ Forester: My wounds start aching again, Vlad and Drakul are coming out of their hiding. Good luck Stalker!
+
+
+ Forester: You managed to kill the younger Bloodsuckers, but the sun is already rising and Vlad and Drakul will not dare to fight during the day. You will have to try another time. Come see me.
+
+
+ Forester: Remember that you have to confront the brothers on their own territory. You might need to get closer to the tank again.
+
+
+---- Doctor Alyosha Shyogolov ----
+
+
+ Alyosha Shyogolov: Emergency! I request help of any nearby Stalker. I'm Doctor Alyosha Shyogolov - I'm surrounded by a horde of Snorks in the Agroprom Train tunnel. I request emergency extradition by any nearby Stalker.
+
+
+ Alyosha Shyogolov: This is an Emergency! I request urgent help. I'm Doctor Alyosha Shyogolov - I'm surrounded by a horde of Snorks in the Agroprom Train tunnel. Please, they are getting closer.
+
+
+ Alyosha Shyogolov: I'm Doctor Alyosha Shyogolov - I'm surrounded by a horde of Snorks in the Agroprom Train tunnel. Make haste - they have trapped me!
+
+
+
+ A-a-are they gone?
+
+
+ Who?
+
+
+ The Snorks of course!
+
+
+ I guess so - I only saw a couple at the entrance, but I have no idea where the others went.
+
+
+ Ah, I must have scarred them off! You're welcome!
+
+
+ Right... Are you Alyosha?
+
+
+ Doctor Alyosha Shyogolov - for you Doctor Shyogolov - proper etiquette has to be kept after all, even in such a forsaken place like this.
+
+
+ Alright ... Doctor Shyogolov, what are you doing here?
+
+
+ Whatever Alyosha, what are you doing here?
+
+
+ I was on an expedition for Sakharov concerning the recovery of a very important document for our research! We are scientists after all. Suddenly I heard a terrible screech and I turned around - a horde of Snorks! I immediately retreated into the tunnel to fend them off.
+
+
+ I will allow these familiarities, considering we fought together and forged a bond in blood together.
+ I was on an expedition for Sakharov concerning the recovery of a very important document for our research! We are scientists after all. Suddenly I heard a terrible screech and I turned around - a horde of Snorks! I immediately retreated into the tunnel to fend them off.
+
+
+ Hmm, alright. What would you consider to be an appropriate reward for my troubles?
+
+
+ For your troubles? You just said that there were no Snorks outsides!
+
+
+ Ah I see. I'll be on my way then, I lost enough time with you - good luck with your mutant samples.
+
+
+ What the fuck? You were begging on the channels for help!
+
+
+ Wait! Considering your altruistic - although unrequired - inclination to help me, I will return the favor!
+ I'll be escorting you back to the Agroprom Factories!
+
+
+ Begging for help? Me? I protest: Doctor Alyosha Shyogolov never calls for backup! I was simply informing the other Stalkers not to get close in order to not be caught in the crossfire - like any professional would do.
+ \n \nBut you're right, considering your altruistic - although unrequired - inclination to help me, I will return the favor!
+ I'll be escorting you back to the Agroprom Factories!
+
+
+ Ehm, that's kind of you, but I don't need to go there.
+
+
+ Alright, I wanted to go there either way.
+
+
+ I insist! The Zone is dangerous out there - you'll be safer with my trusted Nosorog and Scar as your companions.
+
+
+ I see... well then let's get going, I don't have all day.
+
+
+ Excellent! Lead the way!
+
+
+
+
+ Seems that we arrived.
+
+
+ Indeed, now that you reached safety you won't need my help anymore.
+
+
+ Right... well good luck in the future.
+
+
+ Wait! I just noticed, my Nosorog suit was damaged while escorting you here! Ah what a shame, now I can't go on an fullfil Sakharov's order...
+
+
+ For real? How did that happen?
+
+
+ No idea, probably one of the Snorks damaged an hydraulic pump while I was fighting them off...
+
+
+ Hmm, I don't see anyting wrong with your suit...
+
+
+ Of course not, this is not a Primus after all! And what do you know about Nosorogs?! Luckily I always carry tools for an emergency repair with me, but that will take some time... Do you know what?
+ Maybe you can recover the documents while I proceed with the repairs?
+
+
+ Will you pay me this time?
+
+
+ Of course I will repay you for your troubles! Don't worry!
+
+
+ Alright, where can I find these documents?
+
+
+ In the possession of Mozgotlen... or what is left of him. You see, he was member of an expedition to the Great Swamps when an Emission hit. The poor guy didn't make it to a safeplace and turned into a zombie.
+ Shame I wasn't there, on my watch nobody would have suffered such a fate. But what can I do, I cannot be everywhere and once, now can I? Nevertheless, the guy turned zombie and walked off... with the possession he was carrying. You will have to recover it! He has a Sapphire suit, so he should stand out!
+
+
+ Alright, and where can I find him?
+
+
+ Ah right, I forgot not everyone is as an experienced tracker as I am. \n \nHis PDA continued to work and we were able to see his movement from the Great Swamp to this sector, but then the PDA became static.
+ I would advise you to check the region between south of here and the Great Swamps. He should be somewhere - and with him the documents. Don't fret my friend, a zombie's aim is even worse than yours! I would have been glad to show you how it is done, but you know - my will is strong, but my armor is weak.
+
+
+ Whatever, as long as the pay is fine.
+
+
+ The pay? Ah, you mean the reward. Don't worry, it will be invaluable. Now excuse me, I need to find some Stalkers whom I can regale with my tales.
+
+
+
+ I found your documents.
+
+
+ Marvelous! I knew a mere zombie wouldn't stop you! You're made out of harder wood - not yet an equal to my natural prowess, but you're on the best way to become one.
+
+
+ Yes, sure... what about the payment?
+
+
+ Yes of course! Let me give you an invaluable insight into my knowledge! Listen: \n \nConfidence is a key tool in every Stalkers arsenal. Confidence leads to opportunity. It makes a Stalker take that impossible shot. Makes us accept the hardest missions, reach farther into an anomaly field for artifacts, or lure an angry bloodsucker from a den.
+ Confidence makes me venture out on an easy bandit extermination without even needing to wear my Nosorog. Makes me tell about my achievements while sitting on a throne of my enemies.
+
+
+ I'm listening...
+
+
+ What the fuck? Are you kidding me? I want money not a story.
+
+
+ Stalkers who are content to defend their little corner of the Zone will be safe, but they will inevitably rarely venture beyond that little corner.
+ Brave Stalkers can, and will, do incredible things. Strelok himself found the strength to take on the entire Zone and defeat the C-Consciousness, all while suffering the effects of trauma-induced amnesia.
+ Of course, that could have just been started because Sidorovich reportedly threatened to break Streloks kneecaps for not paying him back in Roubles for saving his life. We may never know.
+
+
+ Alright, thank you! That was very interesting.
+
+
+ What the fuck? This is not payment!
+
+
+ Nice story, but where is the money?
+
+
+ Thanks, I plan to write it down some day. Maybe give it a catchy title, like "The Stalkers Testament" or something like that.
+
+
+ My pupil, don't you realise it? This knowledge is invaluable, it's worth more than mere money! Stalkers would kill to get their hands on this!
+ Maybe you're still to green behind your ears to realise what gift I just made you... don't worry, I have a forgiving nature, I won't hold a grudge!
+ \n \nAlas we have to finish our conversation now - I must make preparation for my expedition back to the bunker.
+
+
+--- Vybegallo and the Scientists---
+
+--Quest 1--
+
+- Vybegallo-
+
+
+ What to you want? I'm busy!
+
+
+ Greetings Vybegallo. I got your Tuna Bag.
+
+
+ Nothing.
+
+
+ Then might I ask you to not stand in the way of science?
+
+
+ Ah marvelous! Thank you mon cher! Science will not forget your contribution to progress! I believe a reward is in order.
+
+
+ Thanks. Why is that much tuna important to science?
+
+
+ Thanks. I'll be on my way then.
+
+
+ That's food for my satis... no that doesn't concern you, mon cher. But yes ... maybe you can help me out? You work with Butcher, right? So you must be a hunter too...
+ Well, very well... you can be discrete, right?
+
+
+ Yes, yes ... ah wait, wait mon cher! Maybe you can help me out? You work with Butcher, right? So you must be a hunter too...
+ Well, very well... you can be discrete, right?
+
+
+ Ah yes, so you work with Butcher? Well, very well... you can be discrete, right?
+
+
+ Yes of course.
+
+
+ I don't like the direction this is going. What do you want?
+
+
+ Excellent! You see mon cher, I need some mutant parts - for scientific reasons of course! For the sake of progress, mon cher.
+ I would need two fracture hands, one Bloodsucker heart and a sample from a Pseudogiant, doesn't matter what, a hand, an eye, it's hide. Bring it to me and I'll compensate you for your troubles. Let's say... 10.000 for everything? What do you say?
+
+
+ Mon cher, why this attitude? I'm a scientist, a man dedicated to science! I need some mutant parts - for strictly scientific reasons of course! For the sake of progress, mon cher.
+ I would need two fracture hands, one Bloodsucker heart and a sample from a Pseudogiant, doesn't matter what, a hand, an eye, it's hide. Bring it to me and I'll compensate you for your troubles. Let's say... 10.000 for everything?
+
+
+ Alright, I see what I can do.
+
+
+ I don't know, I have to think about it.
+
+
+ Perfect!
+
+
+ Think, but don't take too long, time is of an essence for me!
+
+
+
+ Concerning that job.
+
+
+ Oui mon cher, will you help science out?
+
+
+
+
+ About your mutant parts.
+
+
+ Oui mon cher? Did you find something?
+
+
+
+ I found a pseudogiant eye.
+
+
+ I found a pseudogiant hand.
+
+
+ I found a pseudogiant hide.
+
+
+ I found the fracture hands.
+
+
+ I found the Bloodsucker heart.
+
+
+ No I have to look further.
+
+
+ What are you waiting for?
+
+
+ This is marvellous, mon cher! Your contribution to science will not be forgotten!
+
+
+ I believe that was everything. Can you hand me the finders fee?
+
+
+ Absolutely mon cher! Here take this, for your troubles!
+
+
+ About the other parts.
+
+
+ I've talked to your collegues Vybegallo. This letter is for you.
+
+
+ Wha-what? What did you do? What did you tell them? What is this??? \n \n...\n \nHow dare he! The tsarist gendarmerie did not frighten me, and Sakharov will not frighten me!! \n \n And you, you traitor!!! You rat!!! Out of my sight!!!
+
+
+ ...
+
+
+
+ You wanted to see me?
+
+
+ Yes mon cher, we... we have a problem. My experiment was on the way to become a tremendous success, oui mon cher, truly a scientific revolution! But...
+
+
+ ...but?
+
+
+ But he's not there anymore! I went down to check upon him, and he's gone!
+
+
+ "He"?
+
+
+ What happened, did someone steal your experiment?
+
+
+ Yes, the Partially Satisfied Man - the necessary intermediary to the Fully Satisfied Man! Ah, imagine a man who is able to satisfy all his needs by himself!
+ Wouldn't that be a scientific marvel mon cher? \n \n And now he's gone!
+
+
+ An eventuality which should not be ruled out, but... I rather believe he broke out... Maybe I didn't give him enough food?
+
+
+ Broke out? How is that possible?
+
+
+ How it is possible? By being a colossal scientific success mon cher, that's how it is possible!
+
+
+ Is "he" dangerous?
+
+
+ Barely mon cher, barely. But we cannot allow him to run off, that would attract unwarranted attention... n'est-ce pas?
+
+
+ What exactly is "he"?
+
+
+ The Partially Satisfied Man, mon cher! You need to pay attention when I'm telling you about this!
+
+
+ No I mean, what is he really? What does he look like?
+
+
+ Difficult to say, I never saw him after he hatched... He should probably resemble me, as he has part of my DNA? But these are details mon cher, don't bother about it!
+
+
+ What do you want me to do about it?
+
+
+ Mon cher, it's with a heavy heart that I have to ask you to liquidate my experiment.
+ What a shame, what a loss for science! But we cannot allow him to run off - that would only attract unnecessary attention to my experiments!
+ You wouldn't believe how reactionary some of my collegues are. But at least I should be able to gather his remains in order to conduct further experiments - progress cannot be stopped, n'est-ce pas mon cher?
+
+
+ Where can I find "him"?
+
+
+ He should still be somewhere in the Underground.
+
+
+ What is the pay?
+
+
+ Always so materialistic! But yes, don't worry about the pay - it will be more than enough.
+
+
+ Alright, I'll do it.
+
+
+ I have to think about it.
+
+
+ Excellent mon cher, excellent! Make your preparations and come see me before setting off!
+
+
+ Then hurry up mon cher, time is running out!
+
+
+
+ About your "experiment".
+
+
+ What is it, mon cher?
+
+
+ I'm ready to set out.
+
+
+ I need more time.
+
+
+ Excellent! Don't make him suffer!
+
+
+ Then hurry up mon cher, time is running out!
+
+
+
+ I killed your "experiment".
+
+
+ Marvellous, excellent work mon cher!
+
+
+ You didn't fucking tell me that you were breeding a fucking Pseudogiant!
+
+
+ Ah very interesting, so the Pseudogiant DNA took the overhand? This is extraordinary! It was only supposed to improve his resilience in this climate, but the Pseudogiant took completely over?
+
+
+ What the fuck are you doing? There are enough dangers in the Zone - why are you creating new ones?
+
+
+ Mon cher, this is scientific progress! Some risks have to be taken! Marie Curie took risks for humankind - Yuri Gagarin too! The list is long, mon cher! Now we know more, and we won't repeat the mistakes! Consider it a scientific success!
+ But I see that you're new to the scientific method - and I believe that I owe you a reward. Take this! I... borrowed it from the institute after a disagreement. It's a prototype - but I believe it should be quite useful to... more practical oriented people. Thank you very much mon cher!
+
+
+ Yes, now please give me the money.
+
+
+ Straight to the point as always. Alright, here are the funds. Enjoy - and thank you for helping me... cover up this incident!
+
+
+ Fuck you - don't contact me again.
+
+
+ ...
+
+
+
+
+
+-the others-
+
+ Do you know a fellow scientist called "Vybegallo"?
+
+
+ Vybegallo? Well, yes I know him is there something with him?
+
+
+ No, I only met him recently.
+
+
+ Okay did he tell you something?
+
+
+ No, we barely spoke.
+
+
+ Alright Please tell me if you know something about what he is up to. He himself is not dangerous, but his scientific research on the other hand My advice to you, dont get caught up in his dealings.
+
+
+ He asked me to help him with his science experiment.
+
+
+ He asked you for help? No offence, but you dont look like a lab assistant. Why would Vybegallo need a Stalker?
+
+
+ He asked me to find some artifact for him.
+
+
+ An artifact? This seems unusual for him, but maybe he finally found a normal research topic
+
+
+ He asked me to find some mutant parts for him.
+
+
+
+ What... what kind of mutant parts?
+
+
+
+ Fracture, Bloodsucker and Pseudogiant parts. Why?
+
+
+
+ What? This is horrible!!! \n \n \n \nYou see, years ago Vybegallo got into his head to create the ideal man or the fully satisfied man as he calls it, but his experiments were one disaster after another. I'm not talking about the ethical aspects, my god, although they are bad enough. His first version, the fully unsatisfied man, was a miserable creature who dwindled away under our very eyes... But Vybegallo was not discouraged and continued his experiments.
+ \n \nAfter one especially egregious attempt which nearly cost the life of half his department, his research institute kicked him out. But Vybegallo somehow managed to pull some strings and wound up here! Im afraid he didnt give up on this experiment Who knows what he will unleash? \n \nI implore you, dont help him out! \n \n No this is not enough, here take this order to him and make him understand that he has to cease any dangerous experiments immediately. I dont know how much he promised you, I cant put much on the table at the moment, but I will find some reward. \n\nWill you help us out?
+
+
+ Sure, I will deliver the letter and not help him out any further.
+
+
+ No deal, I honour my contracts.
+
+
+ Thanks I appreciate it.
+
+
+ You fool.
+
+
+
+ I brought the order to Vybegallo.
+
+
+ And? How did he take it?
+
+
+ Not very well, he screamed something about the tsarist gendarmerie and that you won't frighten him.
+
+
+ I feared as much... Nevertheless thanks for your help, here your reward: it's not much but I hope it can help you out there.
+
+
+ What will you do about Vybegallo?
+
+
+ I don't know, I have to council with the director... \n \nIn the meantime I'll send a global message to everyone that Vybegallo is under sanction and that whoever trades in mutant parts with him will be excluded from any business with us.
+
+
+ Sanctioned? Does that work here?
+
+
+ To be honest, no. The largest traders will maybe refrein from doing business with him, but individual Stalkers don't give a shit about sanctions. But we have to do something, and it will make at least some people think twice about working with him.
+
+
+
+ Attention! Important announcement: \n \nThe scientist Amvrosiy Vybegallo is under sanction! \n \nAnyone who is caught trading with him in mutant parts will be sanctioned too!
+
+
+
+ I found this in the mercenary base in Zaton. [Pseudogiant parts order]
+
+
+ What is it? \n \n...\n \nThat shit head. \n \nListen to me; what I tell you now is off the record, noone will acknowledge this: I talked to the director and he agrees with me, Vybegallo has to stopped By.All.Means! He sanctioned the liquidation of Vybegallo if he continues his dangerous experiment. Well this is it!
+ I ask you - no I insist: kill Vybegallo. He cannot continue doing his experiments. \n \nI understand that you are a Stalker and won't do it for free. I can mobilise some funds for this and let go of some highly sofisticated devices. So what do you say?
+
+
+ Amvrosiy Vybegallo will sleep with the snorks.
+
+
+ No way, I am not an assassin.
+
+
+ Thank you. Remember, we never had this conversation.
+
+
+ I understand. Remember, we never had this conversation.
+
+
+
+ Vybegallo is no more.
+
+
+ I don't know what you're talking about.
+
+
+
+ Vybegallo: Mon cher, we might have a problem on our hands... Can you come urgently?
+
+
+
+
+---- Sidorovich----
+
+ I need some money Sidorovich, do you have a better paying job to offer?
+
+
+ Youre in luck, Im indeed hiring some guns at the moment Im putting together a team to take back the railway bridge crossing.
+
+
+ What happened?
+
+
+ The bandits recently reinforced that crossing and are asking for quite a high bribe to let people pass very bad for business.
+
+
+ An assault? Whats the plan?
+
+
+ We will effectuate a pincer movement. Cold send a squad over to help out, under the leadership of a certain Castor, they should arrive soon at the northern farm.
+ My team will gather at the mill under the leadership of Pollux. \n\nYou will take on the role of messenger youll first need to bypass the railway bridge to make contact with Castor and check if they are ready for the assault.
+ If they are ready, you return to the Mill where Castor will wait. If everyone is in place, tell Castor that the assault can begin. \n\nAny questions?
+
+
+ Why do I need to make contact in person. Cant we use the PDA messenger to communicate with the Clear Sky squad?
+
+
+ Are you aware that to render PDA communication secure is a complicated procedure? You would have to exchange encryption and decryption keys manually - a huge hazzle.
+ Surprise is primordial in this assault the PDA stays silent until the very moment the assault begins. \n\nAny other questions?
+
+
+ How do I bypass the railway bridge unseen?
+
+
+ You really are a rookie well there is a small underway to the west of the bridge and the mill. Its small, badly lit and a little dangerous but will suit our needs perfectly. \n\nAny other questions?
+
+
+ How much are you willing to pay?
+
+
+ Considering that you are a rookie, you get a rookies pay. \n\nAny other question?
+
+
+ About the plan.
+
+
+ Yes, do you have any questions?
+
+
+ Can you tell me the plan again?
+
+
+ What about the vehicle park to the east of the bridge? Wont the bandits come in reinforcement?
+
+
+ That is very possible, and the reason why the assault has to be over as quick as possible. If the bandits send reinforcement, you beat them off.
+
+
+ Can we not make a diversionary attack on the vehicle park?
+
+
+ I like that idea, but we dont have enough manpower to make such an attack. The plan stays, we overwhelm the bridge defences and dig in our heels if they send reinforcement.
+
+
+ What if I take on the vehicle park by myself?
+
+
+ Damn dude, did you watch too many movies? This is not Rambo! But if you really want to prove yourself, be my guest. \n\nAny other questions?
+
+
+ No other questions.
+
+
+ Alright, so what do you say? Are you in?
+
+
+ Im in!
+
+
+ I need some time to think about it.
+
+
+ I have some more questions.
+
+
+ Alright, better now than later. Ask away.
+
+
+ Alright! Gear up, and come see me if youre ready!
+
+
+ Alright. Think about it, but hurry, Clear Sky is on their way.
+
+
+
+ About the Railway Bridge assault.
+
+
+ Yes, tell me?
+
+
+ I am ready. Tell me what to do.
+
+
+ I am ready. I'll take part in the main assault.
+
+
+ I am ready. I'll make the diversionary attack on the vehicle park.
+
+
+ I need more time.
+
+
+ Alright. Let me remind you of your task so you don't fuck it up. You are to bypass the bandit forces and establish contact with Castor, the leader of the Clear Sky forces, in the northern village.
+ If he's there, you're to return back to the mill and report to Pollux, my guy. If everything is in place, you're to take part in the assault. \n \nEverything clear?
+
+
+ Alright. Let me remind you of your task so you don't fuck it up. You are to bypass the bandit forces and establish contact with Castor, the leader of the Clear Sky forces, in the northern village.
+ If he's there, you're to return back to the mill and report to Pollux, my guy. If everything is in place, you're to take part in the assault. \n \nEverything clear?
+
+
+ Are you sure? If that's how you want it, be my guest. It certainly will help the assault. I'll tell Pollux to send someone else to establish contact with Clear Sky. Is everything else clear?
+
+
+ Alright, but get moving, we don't have much time left! Remember, suprise is of essence!
+
+
+ Everything clear. I'm on my way.
+
+
+ Wait! I changed my mind.
+
+
+ Better now than later. What is it?
+
+
+ About the plan.
+
+
+ What is it?
+
+
+
+ The assault has been a success, the railway is ours.
+
+
+ Good job! That checkpoint is of tremendous importance for our safety and our local economy. You deserve your reward Stalker! Here!
+ I recommend you to spend it here, to support your local business. I got tremendous deals for you, have a look!
+
+
+ The assault has been a success, the railway is ours.
+
+
+ Good job! Your diversionary attack was indeed of great help! Now that the checkpoint is ours, our safety and that of our local economy is guarded. You deserve your reward Stalker! Here!
+ I recommend you to spend it here, to support your local business. I got tremendous deals for you, have a look!
+
+
+
+
+
+ Let's fuck those bandits up! URRRAAAAAAAA!!!!!
+
+
+ URRRAAAAAAAA!!!!!
+
+
+
+
+ Get lost Stalker, we're occupied.
+
+
+ Are you the guys Cold send in order to assault the railway bridge?
+
+
+ Yes we are - and you're the messenger? As you can see we're ready, I hope you guys too. So tell me, can we begin, can we get this over with?
+
+
+ Yeah, I'll join up with the guys on the other side and we'll give the sign.
+
+
+ Alright, we'll be waiting.
+
+
+
+ What a fight, I'm glad you made it!
+
+
+ Yeah, that was quite tough. Thanks for the help!
+
+
+ What are you going to do?
+
+
+ I have orders to guard this checkpoint.
+
+
+
+ Who are you?
+
+
+ I am the guy Sidorovich sent as a messenger.
+
+
+ Good. Is the Clear Sky squad in place?
+
+
+ They are. When does the rest of our guys arrive?
+
+
+ This is all there is. Sidorovich tends to be frugal in his hiring.
+
+
+ Fuck. At least the guys from Clear Sky came prepared
+
+
+ Yeah those guys are reliable. Let us hope we will catch these banditfuckers with their pants down. The plan is easy; we approach throw our grenades and assault. Are you ready?
+
+
+ Yes Im ready.
+
+
+ Grenades? I dont have any
+
+
+ Shit mate, who comes to an assault without grenades? Here take this one pay me a drink when we survived this bullshit. \n\nWell, enough chatting, we have to earn our pay now. Ready?
+
+
+ Lets go!
+
+
+
+ What a fight! We made it!
+
+
+ Yeah mate, that was crazy! I'm glad to see you made it!
+
+
+ Yeah man, I'm glad to see you to! What will you do?
+
+
+ I'll stay here and guard the passage.
+
+
+
+ Hey mate, I wanted to thank you for the grenade you gave me.
+
+
+ No problem, I'm sure the bandits would disagree.
+
+
+ [Zone Vodka] Here, this is for you.
+
+
+ [Nemiroff] Here, this is for you.
+
+
+ [Putinka] Here, this is for you.
+
+
+ [Stolichnaya] Here, this is for you.
+
+
+ Wait, I'll get a drink to thank you!
+
+
+ That's mighty cool of you to remember, I will remember this.
+
+
+ No problem mate.
+
+---- What a Night ----
+
+
+ Hey man, how you're doing?
+
+
+ Horrible, my head is splitting itself.
+
+
+
+
+ Hey man, how you're doing?
+
+
+ I'm doing formidable my friend, do you want a shot?
+
+
+ You seem to be in high spirit, what happened?
+
+
+ God smiled upon me my friend, my financial worries are no more!
+
+
+ Congrats!
+
+
+ Here have a drink with me!
+
+
+ Sure let it flow!
+
+
+ Nah, I'm fine.
+
+
+ Aaaah... \n \n C'mon, between the first and the second, the break is short!
+
+
+ You don't want, as you want.
+
+
+ I can only agree with you!
+
+
+ Thanks, but I don't want to become drunk.
+
+
+ Here have some meat to chase the burn.
+
+
+ Thanks. So tell me, what happened?
+
+
+ You won't believe it! Yesterday I was drinking with the boys and we played some cards. My luck turned bad and I lost all my money to Andrey.
+ So, this morning I set out in order to make my money back - I figured if I managed to hunt some Flesh or Boars, I could sell their parts for some good money. I set off a bit later int the morning, but
+ the sun was heavy, so I decided to take a short rest in the shadow of the old Church: I had a few bites and some sips of Vodka - to fight my headache, you understand?
+ Suddenly I heard some guys talking behind the wall, what a foul language, you can't imagine! Fuck, I thought, tongues like this only grow on these Renegade Gopniks,
+ so I took my feet into my hands and ran away to the north. Luckily they didn't see me, so my skin was safe... might have forgotten my bottle though now that I think of it.
+ Fuck it! I bypassed the cemetery and made my way to the pond -
+ I figured that maybe I might catch some of these pigs watering. Aah, my friend, my intuition was right, there were two pigs taking a rest on the shore.
+ I snuck up and BAM - shot and missed. My hands were probably still shaky from yesterday evening... doesn't matter! The two pigs squeal up, taking off in the direction of the burned farmstead.
+ I lunch myself in pursuit, but I gave those two such a fright that one run straight into the flame anomaly! The pillar engulfed him immediatly, roasting him on the spot.
+ I cursed the heavens, impossible to make money of that pile of ashes now I thought. But then I noticed it... the pig probably kicked a Flame while running through the anomaly,
+ and the artifact landed outside, ripe for the taking! Can you imagine it?
+
+
+ Incredible! What luck!
+
+
+ Indeed, indeed! Let's have a drink to that!
+
+
+ Let's drink!
+
+
+ Ah my friend, I quite enjoy drinking with you! Let's have another one, to friendship!
+
+
+ I like drinking with you too! To friendship!
+
+
+ Here my friend, have a bite.
+
+
+ Alright, my turn to propose a toast!
+
+
+ Let it hear!
+
+
+ Our will shall not break, we drank, drink and will drink again!
+
+
+ To you, to us, to xcvb!
+
+
+ God is not stupid, he loves fives!
+
+
+
+ Dude, what the fuck, what happened last night? I woke up in Khuyevo Kukuyevo!
+
+
+ Yeah man, you were fucking blasted, hahaha! We caroused quite hard, hahaha. I went back to the camp to get some more booze, but on my return you were gone.
+
+
+ So what happened yesterday?
+
+
+ Ah, that my friend only the Author knows. You'll have to wait until he remembers...
+
+
+
+
+
+ Here is your CD.
+
+
+ My man!
+
+
+
+
+---- Rush to the North and Brainscorcher reactions ------
+
+
+ Hey Fanatic, how are you doing?
+
+
+ To be honest, I'm overwhelmed with all these new rookies. Ever since you disabled the Brain Scorcher, more and more people are flocking to the Zone.
+ That's not meant as a reproach, you did well to turn that off. Sidorovich is of course esctatic about all the new business opportunities and cheap labour, but I still have to try and train them.
+ There only are so many of them, and they rapidly loose patience and don't want to wait until I have time for them.
+
+
+ I can help if you want to?
+
+
+ You can? That would be great! You know the drill, right? Go shoot some boars, and then show them how to find artifacts! And, ehm, would it trouble you to provide the supplies for them too?
+ It's not a lot, some 20 buckshots, an Echo detector, a Empty Container and a bottle Nemiroff?
+
+
+ Sure Fanatic, the same you provided me.
+
+
+ Thank you very much! Your apprentice will be Iliaz, he's quartering in the brick house on the other side of the street.
+
+
+ What? I'm not a charity.
+
+
+ Ehm, okay... well don't bother then.
+
+
+ Damn, good luck with that.
+
+
+ Well, thanks...
+
+
+
+ Hey Ilyaz, Fanatic send me to show you some basic skills to survive here.
+
+
+ That's very kind of you Stalker! Where do we start?
+
+
+ First some hunting would be in order. There are some boars east of here, we'll hunt them together.
+
+
+ Alright, I'll be right behind you.
+
+
+ Wait here, I still need to make some preparations.
+
+
+ No problem, I'll wait here.
+
+
+
+ You see, the boars charge you and you have to dodge them and get some shots in.
+
+
+ I see. What's next?
+
+
+ Next we'll go artifact hunting. There is an anomaly not far from here, a bit north west from the village.
+
+
+ Alright, I'm behind you.
+
+
+
+ We arrived. Here is a detector which shows you the presence of an artifact. The faster the beeping, the closer you are.
+
+
+ Okay.
+
+
+ You have bolts right? You throw them to see if there is an anomaly in front of you.
+
+
+ Yeah, I have some.
+
+
+ Here is some Vodka. Anomalies are often radiated, or even worse. When you're back to my position, you finish this bottle. It helps.
+
+
+ Understood.
+
+
+ Finally, here is a container. If you find an artifact, you'll put it inside this. This will nullify the radiation of the artifact.
+
+
+ Alright.
+
+
+ Now go and try your luck.
+
+
+ Ay ay Stalker.
+
+
+
+ Why didn't you go all the way in?
+
+
+ I saw this glimmering under the metal structure over there! Isn't that an Artifact?
+
+
+ What? That's a Stoneflower! You lucky bastard! You can either sell it to Sidorovich for some fast cash, or hang onto it and sell it to the Ecologists, they will pay much better.
+
+
+ Understood! Thanks for the tip!
+
+
+ [Lie] Ah, no luck. That artifact is worthless. But as you're new, I'll take it off your hands for 1000 roubles.
+
+
+ Alright... I guess that's better than nothing.
+
+
+ We should go back to the village now.
+
+
+ Alright, I'll follow you.
+
+
+
+ We are back at the village. I hope I helped you a bit!
+
+
+ Very much so! Thank you!
+
+
+
+---- Shlitzer
+
+
+ And Stalker, are you happy with your pay?
+
+
+
+ Did the man in the bunker scam you Stalker?
+
+
+ He send me on an assault for only 2.000 roubles.
+
+
+ No, he payed me well.
+
+
+ Ha! Of course he did. Sidorovich taking advantage of rookies like you, a story as old as the Zone itself. But you know, not everyone here pays that miserably.
+ I might have a proposition for you if you're interested.
+
+
+ That would be the first time he would pay anyone well. Maybe you don't know the worth of your labour yet...
+ If you want to find out, I might have a proposition for you.
+
+
+ I'm always interested in some work.
+
+
+ I don't know.
+
+
+ Good, good. But let's not talk here. Follow me.
+
+
+ If you come to a decision, find me in the there to my left.
+
+
+ ...
+
+
+
+ What kind of work do you propose?
+
+
+ That of the sensitive kind - discretion will be necessary. But I also pay accordingly. Can you be discrete?
+
+
+ Depends. What is it you want me to do?
+
+
+ I know a soldier at the Southern Checkpoint, he goes by the nickname Badger. We sometimes exchange favours, and recently he managed to get his hands on some weapons and ammunition - I want you to meet him and take delivery of the goods.
+ He has the night shift this week, so it has to happen during the next days.
+
+
+ Why does this require discretion?
+
+
+ Because Sidorovich does not tolerate business with the Army in his back. He has some friends among the officers there who also like to take a cut - unnecessary expenses.
+ But I like to cut out the middle-men - it's more profitable.
+
+
+ Why don't you do it yourself?
+
+
+ Because it's dangerous! If any other guard sees you, they will open fire! But don't worry, I will compensate the risks you take. And besides, if you stick to the plan, there should be no real danger.
+
+
+ What is the plan?
+
+
+ The plan is rather simple, but requires some balls. As I said, my contact has guard duty from midnight to 4 a.m. and as such he cannot leave his post except to piss, which he will do when you give him the signal.
+ On the road leading to the checkpoint you'll see a jeep wreckage - when you reach it you'll have to flash your torch three times in rapid succession! Don't worry if you mess it up, wait a bit and do it again.
+ The guard will be looking out for such a signal and when he sees it he'll come down and meet you at the most western part of the fence, to he right of the checkpoint.
+ Be carefull though when approaching it - there might be some soldiers lingering in the vicinity. He'll throw you the package, and you come back with it and I'll give you 8.000 roubles - simple as that! \n \nWhat do you say?
+
+
+ Alright, sounds good.
+
+
+ Great! Remember, you have five days to do it.
+
+
+ Sounds rather risky... I have to think about it.
+
+
+ Alright, but time is running out. Don't take too long.
+
+
+
+ About your job.
+
+
+ Yes?
+
+
+ I'll do it.
+
+
+ Great! But it has to be soon or else my guy is not on guard duty anymore.
+
+
+ I'll do it.
+
+
+ You fool, I had to find someone else or my guy wouldn't be on guard duty anymore! \n \nBut if you're seeking work, there is another task I can use your help.
+ I need someone to bring the supplies to a buyer - does it sound as something you can do?
+
+
+ Alright, I can do it now.
+
+
+ I have to think about it.
+
+
+ Good. Here, take the bag and bring it to a guy called "Maksim Ironchain" - don't shit your pants at that name, if you stick to the deal you have nothing to fear. You will find him in the Abandoned Farmstead, east of the Farm.
+ He will give you a case, which you will bring back to me.
+
+
+ Then think about it fast, or else I will have to find someone else to do it.
+
+
+ Can you remind me the plan again?
+
+
+
+ The plan is rather simple, but requires some balls. As I said, Badger has guard duty from midnight to 4 a.m. and as such he cannot leave his post except to piss, which he will do when you give him the signal.
+ On the road leading to the checkpoint you'll see a jeep wreckage - when you reach it you'll have to flash your torch three times in rapid succession! Don't worry if you mess it up, wait a bit and do it again.
+ The guard will be looking out for such a signal and when he sees it he'll come down and meet you at the most western part of the fence, to he right of the checkpoint.
+ Be carefull though when approaching it - there might be some soldiers lingering in the vicinity. He'll throw you the package, and you come back with it and I'll give you 8.000 roubles - simple as that!
+
+
+ That's all.
+
+
+ Alright.
+
+
+
+ You're a friend of Shlitz? Here - catch the bag!
+
+
+ Remind him to pay me fast - I have some palms to grease here, they already become impatient.
+
+
+ And now go - quickly!
+
+
+
+
+ Here is your package.
+
+
+ Perfect! Your money Stalker! Nice doing business with you.
+
+
+ Badger reminds you to pay him in the coming days - he has some palms to grease.
+
+
+ Yes, of course! But first we need to sell this stuff in order to get the necessary liquidities. I might need your help to do it - of course you'll be paid! Take some rest and come see me when you're ready.
+
+
+
+ You said you had another job?
+
+
+ Yes! I need you to bring the bag to a buyer! A guy called "Maksim Ironchain" - don't shit your pants at that name, if you stick to the deal you have nothing to fear. You will find him in the Abandoned Farmstead, east of the Farm.
+ He will give you a case, which you will bring back to me. It's as easy as it sounds! Can you do it?
+
+
+ Alright, I can do it now.
+
+
+ I have to think about it.
+
+
+ Perfect. Take the bag and bring me back the case!
+
+
+ Then think about it fast, or else I will have to find someone else to do it.
+
+
+
+ You're Shlitzer's guy? Do you have the bag?
+
+
+ Yeah. Do you have the case?
+
+
+ Of course. So what are we waiting for? Are we doing it?
+
+
+ Sure. Let's do it.
+
+
+ I don't think so.
+
+
+ You see! That was quite easy hahaha. No reason to be so tense. \n \nOne moment Stalker, you seem to be familiar. Aren't you one of the Stalkers which took back the railway bridge?
+
+
+ Don't be stupid. We won't hesitate gunning you down.
+
+
+ No, you are confusing me with someone else.
+
+
+ What about it? Got a problem with that?
+
+
+ Are you sure? ... Don't worry about it - now goodbye Stalker, maybe until next time!
+
+
+ Relax Stalker hahaha. You did me a big favour - you eliminated my competition! Here, a sign of my appreciation! Now goodbye Stalker, maybe until next time!
+
+
+ I was only kidding. Here, catch the bag. Now give me the case!
+
+
+ Fuck you!
+
+
+ You have a strange sense of humour Stalker...\n \nOne moment, you seem to be familiar. Aren't you one of the Stalkers which took back the railway bridge?
+
+
+ But... you guys are bandits!
+
+
+ And what of it? Don't tell me you're shitting your pants hahaha! Now, let's do it, we don't have all day.
+
+
+ What will you do with the weapons?
+
+
+ What a stupid question. Don't abuse my patience Stalker, are we doing the deal or not?
+
+
+
+ Where the fuck you think you're going? Kill him!
+
+
+
+ I got your
+
+
+
+ What??? What the fuck??? Who is the moron who did this?
+
+
+ Damn! No brains but a lot of balls...
+
+
+ Fuck! Are we now stuck here?
+
+
+ Looks like it... better to lay low for a while...
+
+
+ Shit!
+
+
+ What??? What the fuck??? Who is the moron who did this?
+
+
+
+
+ Sidorovich: %s !!!! Into my office!!! NOW!!!!!
+
+
+
+
+--- Like Rats in a Trap
+
+
+ Careful Stalker! There a bandits trapped down there!
+
+
+ Go see our leader Naruchnik if you want to know more.
+
+
+ We want to parley Stalker!
+
+
+ Holster your weapon or we will shoot!
+
+
+
+
+
+
+
+
+
+
diff --git a/mods/[DEV] Brotherhood/gamedata/configs/text/eng/st_dialogs_brotherhood_ac.xml b/mods/[DEV] Brotherhood/gamedata/configs/text/eng/st_dialogs_brotherhood_ac.xml
new file mode 100644
index 00000000..48d3bd60
--- /dev/null
+++ b/mods/[DEV] Brotherhood/gamedata/configs/text/eng/st_dialogs_brotherhood_ac.xml
@@ -0,0 +1,180 @@
+
+
+----Stories from the Zone----
+
+--- Atomic Crusader ---
+
+ You wanted to speak to me, Father?
+
+
+ Yes young Brother, I decided to assign you to Blue Winter's chapter. Report to your Brother upstairs, he will fill you in about the details.
+ And remember, the Monolith is always watching.
+
+
+ Alright Father.
+
+
+ For the Monolith.
+
+
+
+ Father Charon sends me.
+
+
+ Good, welcome Brother! I am Blue Winter, and our chapter is a reconnaissance unit. You will meet the other Brothers of our chapter shortly, but first I want to brief you on our mission.
+ \nFather Charon wants to take back the Kindergarten in the Outskirts in order to use it as a forward base. Our chapter has been assigned this task, and our Brothers Melchior and Caspar are already there scouting out the building.
+ Accodring to them, the building is a mutant den at the moment, so prepare for such an encounter. We will do it during the night, in order to take the enemies of the Monolith by surprise - they shall only know our intentions when we already have a foothold there.
+ \n \nI got the authorisation to allow you an advance in order to supply yourself. Prepare for the mission, we will set out at nightfall.
+
+
+ Understood.
+
+
+ Very well Brother. Prepare and find me, we will wait together for nightfall. In the meantime you can already get acquainted with our Borther Balthazar here, the pillar of our chapter.
+ He fills out the position of fire support.
+
+
+
+ About our mission.
+
+
+ Yes?
+
+
+ I am ready.
+
+
+ Very well, let's wait together for the night. Then, when the sun is down, we set out. You will lead the way, Brother.
+
+
+ I am ready.
+
+
+ The night already set in, let's move out. Lead the way, Brother.
+
+
+ For the Monolith.
+
+
+ I still need to do some preparations.
+
+
+ Alright.
+
+
+
+ Blue Winter: What is your report?
+
+
+ Melchior: A couple of snorks and a Poltergeist. No enemy activity.
+
+
+ Blue Winter: Alright, that should be manageable.
+
+
+ Blue Winter: Melchior and Caspar, you stay outside and guard the entrance.
+
+
+ Blue Winter: Balthazar and %s, you come with me.
+
+
+ Blue Winter: Brother %s, you take point.
+
+
+ Blue Winter: For the Monolith!
+
+
+
+ How do we reach our Brothers?
+
+
+ When we are at the Outskirts we approach the Kindergaten from the north. We'll have to bypass the Vulcano anomaly and then our Borthers should wait for us close to our target.
+
+
+
+ That seems to have been all of them.
+
+
+ Indeed. Excellent work Brother! You did great on our first mission. I want you to have the honour to report this victory to Father Charon, he will send further troops to fortify our position here.
+ Use the opportunity to stock up on supplies, and when you are ready, come see me and I will give you your next mission briefing.
+
+
+
+ Father, our chapter has succesfully claimed the Kindergarten for the Monolith.
+
+
+ Excellent work Brother! I will immediatly give the order to send more troops there. Here some money to stock up on supplies. \n \nNow go and spread the glory of the Monolith!
+
+
+
+
+
+
+ I see four Stalkers leaving their base. They look like serious guys, armed to the teeth.
+
+
+ Good job Brother! Keep an eye on them and keep me informed about their intentions.
+
+
+ They passed the apartment complex and seem to turn south.
+
+
+ Good! So no need to alarm the troops.
+
+
+ I'll soon loose sight of them!
+
+
+ Brother Melchior is already on the job. Keep your position and wait for instructions.
+
+
+ I just saw them entering the Department Store.
+
+
+ Excellent job Brothers! That's an excellent place to surprise them - I have a plan.
+
+
+ Brother %s, come join our squad. We will wait for you to the south of the Kindergarten, between the Grocery Store and the apartment buildings.
+
+
+ I reached the exit of the tunnel!
+
+
+ Perfect. We launch our attack, you take them from behind! For the Monolith!
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/mods/[DEV] Brotherhood/gamedata/configs/text/eng/st_dialogs_brotherhood_ms.xml b/mods/[DEV] Brotherhood/gamedata/configs/text/eng/st_dialogs_brotherhood_ms.xml
new file mode 100644
index 00000000..d1a04590
--- /dev/null
+++ b/mods/[DEV] Brotherhood/gamedata/configs/text/eng/st_dialogs_brotherhood_ms.xml
@@ -0,0 +1,663 @@
+
+
+----Stories from the Zone----
+------Market Share ---------
+
+
+ My friend, we have been keeping an eye on you and we are impressed. Come see us in Yanov, in the tower north of the train station. We have a proposition for you which you will like.
+
+
+
+ Yo, what's up?
+
+
+ I got your message. What do you want?
+
+
+ Nothing.
+
+
+ So you're %s. Good to finally meet you.
+
+
+ How do you know?
+
+
+ I wouldn't stand here today without the help of xcvb, NLTP-Ashes, GhenTuong, RavenAscendant, igigog and demonized.
+
+
+ I appreciate this. Now back to the question.
+
+
+ Who is asking?
+
+
+ Me and my man Chris over there followed your work, and we are fans of your work ethic. We want to propose a collab.
+
+
+ Not of the trusting kind are you? Dont worry, I get you, distrust makes you live longer.
+ \n \nKnow what? Have a drink on us in the station and ask about Marlo Stanfield and Chris Partlow - people will fill you in.
+
+
+ A collab? What is the goal?
+
+
+ The goal is money and power of course - what else is there to be wanted? The way to achieve it? That's the juicy part.
+
+
+ I've never heard of you - why should we work together?
+
+
+ Haven't heard of me - yet - you mean. Don't worry, that will change.
+ \n \nKnow what? Have a drink on us in the station and ask about Marlo Stanfield and Chris Partlow - people will fill you in.
+
+
+
+
+
+
+ Yo, talk to my man Marlo first.
+
+
+
+
+
+
+ Do you know some Stalkers by the name of Marlo Stanfield and Chris Partlow?
+
+
+ I do... some serious guys, made a name for themselves two years ago. Violent guys too - and that means something here.
+
+
+ Can you be more specific about them?
+
+
+ I only saw them a couple of times when they passed through so I didn't have any close dealings with them, but I heard some stories. I assume that
+ they started off like normal guys - bribed their way past the checkpoint and started to do some minor work here and there. The first time their name rang out was two years ago, some bandits were making trouble in Zaton and
+ Sidorovich recruited them amongst others to put them back in place. Story goes that there was a traitor amongst the group which lead them into an ambush - those who weren't killed were taken as hostage, among them Marlo and Chris.
+ The problem was, they didn't have money on the side to pay off the ransom money - so they send word to Sidorovich to pay the ransom with their mission wage. Well you know Sidorovich - of course he refused.
+
+
+ Why?
+
+
+ Of course.
+
+
+ Officially he said that he doesn't make deals with bandits. But lowkey, he figured if the bandits killed them, he wouldn't have to pay at all. In the end Marlo and Chris were left for dead.
+ But luck was on their side: one evening they managed to break free and to flee, and as you can imagine the story doesn't end here. Marlo and Chris swore revenge: they returned and exerted terrible vengeance!
+ People say that their former jailors were horribly mutilated and each one had carved on his forehead: "Marlo doesn't forget".
+
+
+ I see you know Sidorovich. \n \nIn the end Marlo and Chris were left for dead.
+ But luck was on their side: one evening they managed to break free and to flee, and as you can imagine the story doesn't end here. Marlo and Chris swore revenge: they returned and exerted terrible vengeance!
+ People say that their former jailors were horribly mutilated and each one had carved on his forehead: "Marlo doesn't forget".
+
+
+ And since then?
+
+
+ Well this episode made quite a furor back in the days! They became prime muscle: you needed an escort? Marlo and Chris. Someone was bothering you?
+ Marlo and Chris. Someone didn't pay their debt? Marlo and Chris. \n \nI don't know why you're asking, but my advise: don't fuck with them.
+
+
+
+
+ I asked around about you.
+
+
+ And, did you like what you were hearing?
+
+
+ Depends. What is your proposition?
+
+
+ Not really, you sound like brutes. But tell me nevertheless.
+
+
+ We are not that different you and us. We are always working for someone else and his pockets - yes we get paid but in the end it's them who are profiting from our work, it's them who gain in influence and importance.
+ If you're someone's dog - you'll always be a dog. A fierce dog maybe, even a feared one, but there's no respect for the dog himself - only for the dog's owner. I don't know about you, but I've had enough. That's the reason why we propose you a joint-venture.
+
+
+ I'm all ears.
+
+
+ I've got no problems with working for other people.
+
+
+
+ You...??? \n \nEhm alright, maybe this will change your mind. First, how do you feel about Sidorovich?
+
+
+ Aight. First, how do you feel about Sidorovich?
+
+
+ Sidorovich? Fuck that greedy pig the guy got rich by scamming rookies and leeching off the misery in the Zone!
+
+
+ Sidorovich? I like him, he's my mentor. Why?
+
+
+ Very well. So I believe you will not have any qualms with what I'm about to propose: \n \nFor too long Sidorovich monopolised trade in the Zone! But he has become complacent and the gip of his fat hand becomes weaker and the control will slip out of his hand. We are not only going to put a stop to that - we are taking over his business!
+ \n \nSo this is my proposition: Chris, you and me, we form a partnership on equal terms and together we fuck Sidorovich out of his business in order to become the new power in the Zone. Chris and me already have tied connections here and on the outside - all that we need is a first show of our abilities in order to convince them to bet on us instead of the lame horse.
+ Think of it as a start-up! The chess board is already set up and we are playing white. \n \nWhat do you say? Do you want to toil further for them, or do you want to make your own destiny?
+
+
+ What? You like him?
+
+
+ This sounds very interesting, but can you tell me more about your plan?
+
+
+ I need some time to think about it.
+
+
+ This sounds like madness.
+
+
+ Sidorovich will never give up his business.
+
+
+ Alright, count me in.
+
+
+ Thanks for considering me, but I don't want anything to do with this.
+
+
+ I'm afraid that I can't do that. I need to know if you're with us or not - only then will I tell you the plan.
+
+
+ I'm afraid that this is not a proposition which affords the luxury to think about - you have to decide now.
+
+
+ Madness? No. Ambitious? Absolutely! In order to win at his game you have to be bold and grab the reins of your own destiny.
+
+
+ And we are not about to ask him nicely, but to grab it out of his fat hand.
+
+
+ I knew you would.
+
+
+ Then fuck off and run back to your life as a dog.
+
+
+ Yes I do - he has been nothing but a father to me. I'm absolutely loyal to him.
+
+
+ I'm joking, I hate that greedy fuck.
+
+
+ Then fuck off and return to your master you bitch.
+
+
+ Damn, for a moment you had me believing it. Very well. So I believe you will not have any qualms with what I'm about to propose: \n \nFor too long Sidorovich monopolised trade in the Zone! But he has become complacent and the gip of his fat hand becomes weaker and the control will slip out of his hand. We are not only going to put a stop to that - we are taking over his business!
+ \n \nSo this is my proposition: Chris, you and me, we form a partnership on equal terms and together we fuck Sidorovich out of his business in order to become the new power in the Zone. Chris and me already have tied connections here and on the outside - all that we need is a first show of our abilities in order to convince them to bet on us instead of the lame horse.
+ Think of it as a start-up! The chess board is already set up and we are playing white. \n \nWhat do you say? Do you want to toil further for them, or do you want to make your own destiny?
+
+
+
+ So, can you now tell me the plan?
+
+
+ Of course. In order for the plan to work, we first need to prepare for the confrontation. We only need one thing in order to start: we need funds you see - and gear. Now there are two ways we can go about this: the first one would be to pay the gold price.
+ Now that would be quite expensive - we estimate 100.000 for each of us three. I have to tell you, I'm not a big fan of that option. \n \nThe second one is my favourite: we rip it off the mercenaries!
+
+
+ Rip off the mercenaries? How do you want to do that?
+
+
+ We have been observing them for quite some time now. You know their base in Zaton? Well it can function quite autonomously, but every once in a moon they too need to be resupplied - and this resupply has to come from their main base.
+ We figured out their protocol for supplying their base in Zaton. You see, the mercenaries are not your basic gopnik, they are highly organised! Only few people have the necessary clearance to use the organisation channels, and we arleady managed to get make a copy of a PDA with access to them.
+ The problem is, they have an extra layer of security - they heavily use encryption and they change the key each time one of their devices have been compromised. So in order to be warned in advance when they make they resupply their base, we need the decryption key without their knowledge.
+ \n \nNow we come to the juicy part: if they want to change the key they cannot send it over the channels - they have to do it physically. So they send a courrier who brings the encryption key in person to their base in Zaton. That's when we strike! We intercept the key, make a copy and then deliver it to them. That way we will know when the next resupply is scheduled!
+
+
+ How do we trigger the encryption key delivery procedure?
+
+
+ We need to steal one of the devices with the necessary security clearance. They will no longer use the old encryption key out of fear that their conversations are not private anymore! We already have our victim! Chris can tell you the details of this stage!
+
+
+ How do we intercept the key without them noticing?
+
+
+ A friend will tell us when the courrier sets off! He will pass through Yanov, that's the moment we will strike. When you have the key, you'll bring it to us and Chris will make a copy. After that comes a tricky play: you'll have to disguise yourself as a mercenary and make the delivery! Make sure you find a mercenary outfit before that stage! \n \nAfter delivering the encryption key, we can listen in on their conversations.
+
+
+ Won't they be suspicious if the courrier never makes it back to the main base?
+
+
+ I see you're a sharp one. Don't worry about it, the Zone is a dangerous place. While you're making the delivery, I'll have my guys snatch the body of the courrier and drop in off somewhere where danger is abundant. It will look like he died on his way back - and they won't care as long as it happend after he delivered the key.
+
+
+ Why all this hazzle? Can we not simply have spies looking out for signs of an imminent resupply?
+
+
+ You see, the mercenaries have this nasty habit of doing it during the night - exactly to prefent such a thing. We need to know it in advance: without our ears in the channel, we won't know in advance where and when the transfer would take place and it would be impossible to organise an interception.
+
+
+ Why do we need the supplies so much?
+
+
+ The next stage in our plan is quite... resource intensive. Believe me, we need these supplies.
+
+
+ What is the next stage? After we have the necessary supplies?
+
+
+ I'm afraid I cannot tell you yet - see, I like you, but I need to know that you're 100% in this.
+
+
+ Alright, how do we get started?
+
+
+ If you want to do it the viking way, talk to Chris. He will coordinate this stage. If you prefer to make your money work, you can always talk to me - I'll make the necessary arrangments.
+
+
+
+ Can you tell me the plan again?
+
+
+ Thanks, that all.
+
+
+ No problem.
+
+
+
+---- Quest 1 -----
+
+ How do we get started?
+
+
+ Your target is an officer called "Harald Virtanen". He is stationed at the Zaton Waste Processing Station: you have to kill him and steal his PDA.
+
+
+ How should I do that? There are at least a dozen of heavily armed mercenaries stationed at that place?
+
+
+ Don't worry - we already have a plan. It's no coincidence that Harald is our target - it seems that the guy is an alcoholic and sneaks out during night to get his buzz, the perfect time to strike!
+ His favourite drinking spot is a garage in the south east corner of the compound. The plan is thus easy: sneak up on him and kill him - if you're lucky the patrols won't notice.
+ If they do, well grab his PDA and run - but whatever you do, don't kill the other mercenaries! We need them alive! And a word of warning, if you try to disguise yourself as a mercenary, don't! They won't be fooled twice.
+ While you're at it - if you still haven't found a mercenary outfit, maybe you can also "borrow" his - he won't need it anymore.
+ \n \nAre you ready?
+
+
+ Yes.
+
+
+ No, I will need some time preparing.
+
+
+ Alright - remember to take his PDA or else everything will be for nothing.
+
+
+ Alright - make your preparations.
+
+
+
+ I got the PDA.
+
+
+ Well done! Now we have to wait - I will send you a message when they are doing their move. In the meantime take a rest and get ready for the next stage: repair your costume and stock up on ammo. Here, I managed to get you a repair kit for a light outfit and a gun.
+
+
+
+
+ What do you want? Can't you see I'm occupied?
+
+
+ Marlo and Chris send their greetings.
+
+
+ What the fuck are you talking about?
+
+
+ ...
+
+
+--- Quest 2 part 1 ----
+
+ Chris Partlow: My man - the courriers are getting ready to depart. Come see me now!
+
+
+
+ Jan Baran: Urgent Stalker ambushed usweareattackkkkkkkkkkkkkkkkkkkkkkkkkkkkk
+
+
+
+ Are the courriers on their way?
+
+
+ Very soon - they should make camp this night here in Yanov. Come back this night for confirmation.
+
+
+ They are: they left their base this morning and travelled from Limansk to Yanov using their secret path. They should arrive soon and will look for a place to camp overnight - that's when you will strike.
+
+
+ Do you know where they will camp?
+
+
+ No, we were not able to find out their plans. It should be somewhere close to where their path emerges, somewhere around the Bandit camp in the South-West. It won't be in the open, so look for any buildings or structures giving shelter.
+
+
+ Why don't they stay at the bandit camp over night?
+
+
+ Would you sleep with a dozen gopniks around you? That's unnecessary trouble - you don't know if you're going to wake up with all your money - or teeths.
+
+
+ Alright - I will be on my way then.
+
+
+
+ Yo Chris, I got the USB. They were making camp in the tunnel south of here. Here take the USB and make a copy!
+
+
+ Excellent work! Alright, let me make a copy \n \n...\n \nHere, take the USB. Now deliver it to an officer called "Aivar Kuusk". He should be somwhere inside the Waste Processing Station. Take this broken PDA too - if they ask you why you didn't write show it to them.\n \n
+ Don't forget your Mercenary suit! Remember: no stupid movement like running or jumping - and don't wave your weapon around! I hope your suit and helmet are repaired - and don't forget to take a weapon with you which is used by these assholes. Go in, deliver the USB and get out. We will take care of the corpses.
+
+
+
+
+ I delievered the USB! Did you take care of the bodies?
+
+
+ Fuck yes! You're really THE man, do you know that! Yes, the bodies have been taken care off - now we only need to wait for the resupply!
+
+--- Quest 2 part 2 ----
+
+
+ What do you want? Who are you?
+
+
+ I am the courrier - I bring you USB stick with the encryption key for this section. I believe you're the officer responsaible?
+
+
+ You're the courrier? We thought you were dead? We were about to send out a scouting squad.
+
+
+ My comrades are dead - I managed to escape.
+
+
+ You managed to escape? But why didn't you tell us that you're out there?
+
+
+ During my escape my PDA broke - it probably happend when I fell down.
+
+
+ Damn soldier, what can I say? I'm glad you made it out. Yes I'm the responsible officer, you can hand me the key.
+
+
+ Perfect. I'll be on my way back then.
+
+
+ Wait! Don't you want to rest here?
+
+
+
+ Not really sir, I just want to get back to safety. And I'm afraid that I don't consider this place to be safe.
+
+
+ I can provide you with an escort?
+
+
+ No thank you sir, I believe that my last escort was the reason we were discovered. I think I'm better on my own.
+
+
+ Well alright. At least take this - you'll need it.
+
+
+---- Quest 3 -----
+
+ Chris Partlow: My man - it's about to happen. Gear up for a heavy fight and come see me - it's about to become real.
+
+
+
+
+ I got your message about the handover.
+
+
+ Yeah they are on their way. The resupply is planned to happen this night - come back then!
+
+
+ Yeah, the mercenaries from Dead City are about to arrive. They'll set up camp at the car fortress on the other side of the street - to the east from here. The others from Zaton are also on their way so you'll have to act fast.
+
+
+ Alright. What's the plan?
+
+
+ I gathered some of our guys - they are waiting at the Yanov Station for you. The main guy is Monk - find him and then proceed to the assault. I'll keep an eye on you from here and warn you if the Mercenaries from Zaton are getting close. There should be six supply crates - bring them to me, and we are golden. Good luck - give those assholes hell!
+
+
+
+ Chris Partlow: Watch out, I see a squad of Mercenaries to the north of you! That's the guys from Zaton - take a defensive position!
+
+
+
+
+
+ About those supply crates.
+
+
+ You got them?
+
+
+ [Supply crate] Yeah man, here take it.
+
+
+ I have to go back for the rest.
+
+
+ My man!
+
+
+ Aight.
+
+
+ That was the last one!
+
+
+ Excellent work! You're a real soldier - Marlo agrees. Have a rest, and if you're ready come see Marlo - he'll tell you about the next stage. [Next missions in a future update]
+
+
+
+
+
+ Yo you're Marlo's guy. What's the word, are we crashing their party?
+
+
+ Yeah, we can go.
+
+
+ Wait, I'll be back shortly.
+
+
+ Alright men, let's roll out!
+
+
+ ...
+
+
+----Stage 4----
+---Takeover---
+--Marlo--
+
+
+ So, what is the next stage in your plan?
+
+
+ Now my friend we take over the Skadovsk.
+
+
+ The Skadovsk? Why?
+
+
+ The Skadovsk is the key to the north - most Loners here sell and buy from Beard and Owl. Until now Sidorovich and Beard had a deal: Beard, and with him the Skadovsk, trade with Sidorovich - he gets the artifacts and they get weapons, money and men in exchange.
+ If we own the Skadovsk, the north belongs to us - and Sidorovich will lose a huge source of financial revenues thus weakening his position. And what is most important - it's ripe for the taking.
+
+
+ How do you plan to take it over?
+
+
+ You see, Beard is under a lot of pressure - Monolith activities are growing and their raids become more frequent. He can only protect with difficulty the Stalkers there and people are getting restless.
+ Sidorovich on the other hands tries to cheap out on support - he only sends the bare minimum citing difficult supply lines as an excuse.
+ If we increase their difficulties, the support for Beard and Sidorovich will drop and we swoop in offering protection and supplies taking the Skadovsk for us - Beard will have no choice.
+
+
+ How do you know all of this?
+
+
+ We already made a proposition to Owl to co-op - let's say he's quite enthusiastic about this takeover. He told us about the weak points we can exploit - he's also your main contact partner during this operation.
+
+
+ How do you plan on increasing the pressure on Beard?
+
+
+ Beard mostly relies on two Stalkers for protecting the Skadovsk: Spartacus and Achilles. Both of them are fearsome warriors and they enjoy the popularity and support of many Loners in the north . men who are ready to fight with them.
+ If both of them die, Beard will have lost most of his military powerbase and he will be forced to accept our protection.
+\n \nIn the same time, we will increase hostile activity in Zaton through the bandits - we will pay some of them to make trouble in Zaton, thus increasing pressure on Beard to accept our protection.
+
+
+ Will killing Spartacus and Achilles not make us extremly unpopular with the Skadovsk?
+
+
+ Yes - that is why you cannot kill them outright: you will have to arrange an accident or do it in disguise. We cannot be linked to these assassinations! Talk to Owl for the details, he should have an idea how to get them.
+
+
+ Isn't the Zone harsh enough, do we now need to kill fellow Loners?
+
+
+ Are you a moron? Or some fucking pacifistic idealist? Do you think Sidorovich achieved his influence by asking nicely? Only because you are not able to see the violence does not mean it is not there!
+ The Zone is not a fucking birthday party, it's ride or die here - you have to be willing to fight for your place, because the next motherfucker will not think twice about putting a bullet in your brain.
+
+
+ Relax, I understand - you're right.
+
+
+ All I'm saying is that there might be another way. Let me at least try to convince Beard that working with us is better for him and the Skadovsk. Besides - it's also good for business, more men on our side.
+
+
+ Maybe you're not so stupid after all. Do you have another question or can we proceed with business?
+
+
+ You're a fucking moron. \n \n... \n \nFine, but don't fuck it up! It will be harder if they know that we're coming for them!
+
+
+ Alright, where do we begin?
+
+
+ Go see Owl - he will tell you what to do. We'll stay in touch if there is anything coming up.
+
+
+ Wait, I have a question.
+
+
+ What is it?
+
+
+ Alright, where do we begin?
+
+
+ How should I know? But if you change your mind and want to go with our plan - go see Owl.
+
+
+ Alright, I'll head to the Skadovsk now.
+
+
+ Alright, I'll head to the Skadovsk now.
+
+
+
+
+
+
+ Several centuries ago, the Pope decreed that all the Jews had to convert to Catholicism or leave Italy.
+ There was a huge outcry from the Jewish community, so the Pope offered a deal. He'd have a religious debate with the leader of the Jewish community.
+ If the Jews won, they could stay in Italy; if the Pope won, they'd have to convert or leave.
+ The Jewish people met and picked an aged and wise Rabbi to represent them in the debate.
+ However, as the Rabbi spoke no Italian, and the Pope spoke no Hebrew, they agreed that it would be a 'silent' debate.
+ On the chosen day, the Pope and the Rabbi sat opposite each other. \n
+The Pope raised his hand and showed three fingers. \n
+The Rabbi looked back and raised one finger. \n
+Next, the Pope waved his finger around his head. The Rabbi pointed to the ground where he sat. \n
+The Pope brought out a communion wafer and a chalice of wine. \n
+The Rabbi pulled out an apple. \n
+With that, the Pope stood up and declared himself beaten and said that the Rabbi was too clever. The Jews could stay in Italy!
+Later the cardinals met with the Pope and asked him what had happened. The Pope said, 'First I held up three fingers to represent the Trinity.
+He responded by holding up a single finger to remind me there is still only one God common to both our beliefs.'
+'Then, I waved my finger around my head to show him that God was all around us.
+He responded by pointing to the ground to show that God was also right here with us.'
+'Finally, I pulled out the wine and wafer to show that God absolves us of all our sins.
+He pulled out an apple to remind me of the original sin.' 'He bested me at every move and I could not continue!' \n
+
+Meanwhile, the Jewish community gathered to ask the Rabbi how he had won.
+'I don't have a clue!!!' the Rabbi said. 'First, he told me that we had three days to get out of Italy, so I gave him the finger.'
+Then he tells me that the whole country would be cleared of Jews, so I told him that we were staying right here.'
+And then what?' asked a woman. Who knows...' said the Rabbi. 'He took out his lunch, so I took out mine!'
+
+
+ Hahahaha
+
+
+ Not very funny.
+
+
+ Ah it's great to drink with a man who understands humor.
+
+
+ That's because you have a potato instead of a heart my friend. Don't worry, one day I'll make you smile.
+
+
+
+
+------ Sidorovich -------
+
+
+ Bad news Sidorovich, there is a conspiracy afoot against you.
+
+
+ WHAT??? Who is plotting against me?
+
+
+ Two Stalkers - Marlo and Chris. They tried to recruit me to take part.
+
+
+ Fuck! I should have killed them when I had the occasion... Well spill it out, what do they plan?
+
+
+ I don't know, I told them to fuck off when I heard you were the target.
+
+
+ They didn't tell me yet, only that you're the final goal. All I know is their plan to steal weapons from the Mercenaries.
+
+
+ You fool! I appreciate your loyalty but I need inside ears and eyes, not a public show of support! You should have feigned interest in order to find out more!
+
+
+ Sneaky fuckers, they are carefull... Very well! You did good coming to me, your loyalty is appreciated! Here a token of my gratitude - now go back to those snakes and find out more...
+
+
+ But can you not simply have them assassinated?
+
+
+ My friend, as much as I like your fidelity, as much I have to wonder about your lack of a sense for intruige. Of course I cannot strike them down, at least not for now!
+I know nothing of their exact plans, and what I mean by that, I know nothing about the true size of this conspiracy! I need to know if they have allies, I need to know where they see a weakness of mine!
+For that I need an inside man! \n \nA shame that you told them to fuck off, they won't trust you if you go back now... we need to find a way to get you back into their trust... \n \nAh yes, yes, I know the way! We'll stage a public affront - an humilation so to speak!
+
+
+ Sneaky fuckers, they are carefull... Very well! You did good coming to me, your loyalty is appreciated! Here a token of my gratitude!
+
+
+ But can you not simply have them assassinated?
+
+
+
+
+
+
+
+
+
+
diff --git a/mods/[DEV] Brotherhood/gamedata/configs/text/eng/st_dialogs_brotherhood_nr.xml b/mods/[DEV] Brotherhood/gamedata/configs/text/eng/st_dialogs_brotherhood_nr.xml
new file mode 100644
index 00000000..9b61e2a2
--- /dev/null
+++ b/mods/[DEV] Brotherhood/gamedata/configs/text/eng/st_dialogs_brotherhood_nr.xml
@@ -0,0 +1,1715 @@
+
+
+----Stories from the Zone----
+
+
+---- Northern Rush----
+
+
+ You seem to have a full-house here?
+
+
+ And all thanks to you! By disabling the Brainscorcher you opened up the north for anyone who dares to go!
+ You triggered a rush for the north - and people gather here to buy supplies before setting off! Here, a drink on the house - you deserved it! \n \n
+ If you're looking to make some money, now is a great opportunity! Prices are soaring, I hope you don't need any supplies as demand is huge at the moment.
+
+
+
+
+---- Scamlok ----
+
+-- Barman --
+
+
+
+ Hey, I just met Strelok!
+
+
+ Strelok? Here? Are you sure?
+
+
+ Yes! And he is gathering a team to reach the Wishgranter! The participation fee was a bit steep, but it will be worth it.
+
+
+ Strelok who is recruiting strangers? For a fee? Hahahaha \n \nYou got scammed my friend. Strelok would never do that!
+
+
+ ...
+
+
+ The Zone is full of scammers, it can happen to anyone... but I have to say, you belong to the more naive ones - Strelok asking for money, hahaha. \n \nDon't be sad, here a drink on the house.
+
+
+
+ Hey, I just met a man saying he is Strelok.
+
+
+ Strelok? Here? What did he want?
+
+
+ He said that he is gathering a team to reach the Wishgranter! Was asking for 10000 roubles particitpation fee...
+
+
+ Ah a scammer. Happens sometimes that a man comes around pretending to be Strelok. The true one would never trust strangers and ask them money. I hope you didn't give him anything?
+
+
+ No, I was not feeling it.
+
+
+ Well done. I'll warn the customers and have my guys look for that imposter.
+
+
+
+
+
+
+
+ Hello Stalker, you look experienced!
+
+
+ I just took down the Brain Scorcher, of course I'm experienced!
+
+
+ You could say that...
+
+
+ What makes you say that?
+
+
+ No, I'm still a rookie learning the ropes.
+
+
+ DDDDAMN! You're the guy! It's an honour meeting you! I'm Sorokin! \n \nAre you also here to join Strelok?
+
+
+ Nice to meet you! I'm Sorokin. I'm looking for the services of an experienced Stalker such as you. I need to go to Yanov Station, could you help me?
+ I'm somewhat new here, so I don't have a team... yet, but I have money! It would mean a lot, I have a golden opportunity which I can't miss.
+
+
+ Of course the gear, but most of all your expression. I'm Sorokin, nice to meet you! \n \nListen, I need an experienced Stalker to bring me to Yanov Station. I'm somewhat new here, so I don't have a team yet, but I have money!
+ It would mean a lot, I have a golden opportunity which I can't miss. Are you interested?
+
+
+ Oh, me too! i thought with all your gear, you looked like a veteran. \n \nI'm Sorkin, nice to meet you! Are you also here to find a guide to Yanov?
+
+
+ Strelok? Have you seen him? Where is he?
+
+
+ Why do you need to go to Yanov?
+
+
+
+ Yanov? Maybe, at some point. Why are you asking?
+
+
+ Well... I'm not supposed to tell this to anyone, but I guess you're a hero of the Zone now.
+ Yes, I've met him. He doesn't want to attract attention, but yes he's here, in Rostok! He's putting together a team! You should meet him! I'm sure that you're the perfect candidate.
+
+
+
+ ... Ok, I'm not supposed to tell this, but considering you're a veteran you'd make a great addition to the team. I suppose you know who Strelok is?
+
+
+ ... Ok, I'm not supposed to tell this, but as we're both new here we have to stick together. Do you know who is Strelok?
+
+
+ Where is he?
+
+
+
+ Of course I know who he is.
+
+
+ Of course I know who he is.
+
+
+ I'll tell you, but remember me, and please take me with you to Yanov! He's in the hangar north of the Arena.
+
+
+ Of course. Well he's recruiting at the moment for a huge mission to the heart of the Zone. The Wishgranter, can you believe it?
+ There are trials and so on, but that shouldn't be a problem for you! Come see me before you go though, I want to join you! I'll pay of course, that's not a problem. You'll find him in the hangar north of the Arena.
+
+
+ Of course, the guy is legend, right? Well he's recruiting at the moment for a huge mission to the heart of the Zone. The Wishgranter, can you believe it?
+ There are trials though and an entry fee... But if you go, take me with you! I'm sure we'd make a great team! You'll find him in the hangar north of the Arena.
+
+
+
+ Hey man, about the expedition...
+
+
+ Did you meet Strelok? He's great, right? And? Will you join us? Will you take me with you to Yanov?
+
+
+ Yes I will join the expedition, and I'll bring you to Yanov with me.
+
+
+ No I won't join the expedition, but I can bring you to Yanov nevertheless.
+
+
+ I hate to break it to you, but that guy wasn't Strelok...
+
+
+
+ Great! Tell me when you're ready to leave, I already am!
+
+
+ Oh...alright, you certainly have your reasons...but thanks for escorting me to Yanov! Tell me when you're ready to leave, I already am!
+
+
+ What? How... how do you know?
+
+
+ That guy was super sketchy, he certainly was a scammer.
+
+
+ I talked to the barkeeper, he told me that there is no chance that the guy was legit.
+
+
+ What? No fucking way, you're trying to cut me out in order to have less competition! Fuck you, I thought I could trust you! I'll find another way to go to Yanov!
+
+
+ What? I mean... if the barkeeper is convinced... Fuck, this is horrible! I... I took a loan in order to join Strelok, I mean, whoever that was... Fuck, I'm screwed!
+
+
+ I need some time.
+
+
+ Alright, but don't take too long, Strelok won't be waiting for us!
+
+
+
+ About the escort to Yanov.
+
+
+ Yes, are you ready, can we leave?
+
+
+ We can leave.
+
+
+ I need some more time to prepare.
+
+
+ Alright, you lead the way!
+
+
+ Alright, but don't take too long, Strelok won't be waiting for us!
+
+
+
+ We arrived.
+
+
+ Thanks alot! Here is the money. I'll have a rest at the bar.
+
+
+ Alright, I'll ask around if someone saw Strelok.
+
+
+ See you soon!
+
+
+
+ I just talked to Hawaiian, apparently the guy we met wasn't Strelok.
+
+
+ How would he know?
+
+
+ Well, he says that Strelok would not organise a team out of strangers and ask them to pay. Hawaiian thinks that we got scammed.
+
+
+ That... that cannot be! But the guy fitted the description of him?
+
+
+ Hawaiian made a valid point, everyone knows Strelok's gear and could dress the same...
+
+
+ Fuck! Oh no! I'm fucked!!! I ... - I ... I made a loan to pay my fee! I ... I am fucked!
+
+
+ [8.000 roubles] Sorry mate... Here, I can give you the money back you paid me...
+
+
+ Sorry mate... Seems like we have been scammed...
+
+
+ Th-thanks... I guess that helps out a bit... but I still owe that creditshark 50.000 roubles... even if I sell everything I have, I will never reach that sort of money...
+
+
+ Fuck...
+
+
+
+
+ What do you want?
+
+
+ Strelok? I've been looking for you!
+
+
+ Strelok? I've heard that you're putting together a team.
+
+
+ Are you really Strelok?
+
+
+ Pssht, not so loud! No need to attract the attention of whole Rostok! \n \nSo, you have been looking for me? Why? And how did you find me?
+
+
+ Pssht, not so loud! No need to attract the attention of whole Rostok! \n \nWhy are you asking about a team?
+
+
+ If you need to ask, you don't need to know.
+
+
+ What is the problem?
+
+
+ What is the problem?
+
+
+ Why? Because I'm Strelok! My enemies seek me, even my admires bother me! You have no idea how tedious it is to operate here when everyone tries to get something from you.
+ \n \nBut answer my question, you have been looking for me? Why? And how did you find me?
+
+
+ Why? Because I'm Strelok! My enemies seek me, even my admires bother me! You have no idea how tedious it is to operate here when everyone tries to get something from you.
+ \n \nWhy are you asking about a team?
+
+
+ I want to find the Wishgranter - Sidorovich told me you've done it before. I thought you were somewhere north of here, I even disabled the Brainscorcher in order to find you. And now, by coincidence, a guy at the bar told me where to find you. Can you help me get there?
+
+
+ A guy at the bar told me. He also told me that you want to go to the Wishgranter. Is it true?
+
+
+ I mean, I never met you, how do I know it's you?
+
+
+ The Wishgranter? You're in luck, that is indeed where I'm planning to go. I'm putting together a team for exactly that purpose - you wish to join me?
+
+
+ I told them to keep quiet about me and the team. Who was it? \n\n Ah fuck it, doesn't matter.
+ Yes, I'm gathering a team, and yes - we're going after the Wishgranter. Are you interested?
+
+
+ Hmm, you're new here? Alright, see this tattoo? I'm the guy you're looking for. What is it you want?
+
+
+ Don't you already have a team? Why do you need strangers?
+
+
+ Of course I'm interested - when do we leave?
+
+
+ Don't you already have a team? Why do you need strangers?
+
+
+ Of course I'm interested - when do we leave?
+
+
+ Alright, I believe you.
+
+
+ But...
+
+
+ Of course I already have a team - the most grizzled veterans you could imagine... but finding the Wishgranter is no walk in the park.
+ We need more people, and that's why I'm here to recruit candidates. \n\nMaybe you'd make a good fit?
+
+
+ Not so fast. You see, this enterprise is no walk in the park - I'm here to find worthy men and not rookies. So there will be a test and a fee.
+
+
+ A fee?
+
+
+ A test?
+
+
+ Then tell me, what do you want?
+
+
+ No "but"! Either you accept it or you fuck off. In the end, remember, you came to me, not the other way around!
+
+
+ Yes a fee. We need supplies, weapons and armor to assault the CNPP. I know some guys who sell premium stuff, but it also comes with a premium price.
+ So, everyone who wishes to join has to put 10.000 roubles in the pot.
+
+
+ Yes a fee. We need supplies, weapons and armor to assault the CNPP. I know some guys who sell premium stuff, but it also comes with a premium price.
+ So, everyone who wishes to join has to put 10.000 roubles in the pot. \n\nWhat do you say? You seem to be perfect for the job, I'm sure you'll make the cut.
+
+
+ Of course. I cannot take rookies with me, so there will be a test in order to weed out the weak and unreliable.
+ The first test is to reach Yanov Station to the north. There we will proceed to further tests to see if you're worthy to join our final assault.
+
+
+ Of course. I cannot take rookies with me, so there will be a test in order to weed out the weak and unreliable.
+ The first test is to reach Yanov Station to the north. There we will proceed to further tests to see if you're worthy to join our final assault.
+ \n\nWhat do you say? You seem to be perfect for the job, I'm sure you'll make the cut.
+
+
+ [10.000 roubles] Count me in!
+
+
+ I don't know, I need time to think.
+
+
+ Excellent, I knew you would not miss such an opportunity! Keep this conversation quiet - I don't want everyone to know my plans. See you in Yanov!
+
+
+ I hate to break it to you, but there is no time to think about it. I will leave in the next hours, this is your last opportunity to grab the occasion of your life!
+
+
+ Count me in!
+
+
+ Then I have to refuse.
+
+
+ Get lost poor fool, you missed the opportunity of your life.
+
+
+ Go fuck yourself.
+
+
+ Fuck you, Tushkan fodder.
+
+
+ Relax, I believe you! I was looking for you for a long time - I want to go to the Wishgranter with you!
+
+
+ I don't know... are you really Strelok?
+
+
+ What the fuck? Of course I'm Strelok! The Marked One who disabled not only the Brainscorcher, but also the Kaymanov emitter! Here, do you see this tattoo?
+
+
+ A tattoo? What does a tattoo have to do with Strelok?
+
+
+ I found a stash of yours - can you tell me where you hid it?
+
+
+ Can you show me your Psi-helmet?
+
+
+ I'm sorry - of course I believe you. I want to come with you.
+
+
+ Wh-what? You don't know shit about me, and yet you dare to question me? Fuck off fool!
+
+
+ What a moronic question, I have stashes all over the Zone - why would I tell you the location of even one of them? Fuck off scammer!
+
+
+ Are you trying to mug me for my Psi-helmet? Fuck off thief!
+
+
+ Alright, I forgive you. But for your insolence, you pay double!
+
+
+ [20.000 roubles] All right, here is the money!
+
+
+ I need time to gather the money.
+
+
+ I changed my mind, I won't join.
+
+
+
+ Hawaiian, did you see Strelok around?
+
+
+ Strelok? Not since quite some time. Why?
+
+
+ I was supposed to meet him here. He is putting together a team and the first step of the trial was to join him in this Trainstation.
+
+
+ Is that so? You might want to talk to the guy over there, Osyol, he is also looking for... Strelok... and he told me the same story... Did you also pay "Strelok" 10.000 roubles?
+
+
+ Yes. Why?
+
+
+ *Sigh* Then I'll tell you the same I told Osyol - I think you have been scammed. I highly doubt that the person who you were talking to was Strelok, as I can't see Strelok hiring strangers and asking them money.
+
+
+ Shit! Are you sure?
+
+
+ I've been around here for quite some time, and what you and the other guy are telling me simply doesn't sound like Strelok. On top of that, Strelok is not here so...
+
+
+ But he looked like the description of Strelok?
+
+
+ Strelok is quite the legend around here, everyone knows the description. Likely, someone who resembles him decided to impersonate him and scam unsuspecting rookies... Sorry that it happened to you.
+
+
+
+-------- Alyosha ---------
+
+
+ Alyosha Shyogolov: Warning to all Bandits, Delinquents, Miscreants, Freebooters and scum of that sort! Dr. Alyosha Shyogolov is in town - beware! I advise you to cease with your ways or feel my ire!
+
+
+ Vova the Flea: Who the fuck are you?
+
+
+ Alyosha Shyogolov: Dr Alyosha Shyogolov you illiterate gopnik! An elite member of the Ecologists!
+
+
+ Pasha the Brawler: Did you confuse the shores, Alyosha Khuiyolov?
+
+
+ Alyosha Shyogolov: What? How dare you, you keyboard warrior! You don't know who you're insulting!
+
+
+ Vova the Flea: Indeed I never heard of you Yebolov.
+
+
+ Alyosha Shyogolov: Don't fuck around, or you'll find out how it is to eat worm shit!
+
+
+ Pasha the Brawler: Well come on, answer for your bazar!
+
+
+ Alyosha Shyogolov: I'm not afraid of you, you scum! Let's meet on the field south of the Station! Bring your friends, I'll teach all of you not to fuck with Dr Alyosha Shygolov!
+
+
+ Pasha the Brawler: Come on Vova, gather your boys and let's teach this shithead a lesson!
+
+
+ Vova the Flea: He'll regret the day his father met his mother.
+
+
+ Pasha the Brawler: Where are you Khuiyolov? We're here!
+
+
+
+ Alyosha Shyogolov: Hey mate, I'm over here! Right behind the wall of this ruin!
+
+
+
+ Alyosha, what the fuck are you doing?
+
+
+ Ah, %s, great that you are here! I knew someone would not stay indifferent to how they were talking to me! Can you believe it?
+
+
+ Alyosha, this is madness! You cannot provoke these gopniks in such a way! We have to leave, now!
+
+
+ Hmm, you're right, this is madness! This is by far beneath me! These gopniks are not worth my time, I have much more important problmes to solve which are worthy of my rank!
+ \n\nGood that you are here, I'll delegate this bagatelle to you, while I'm putting my talents to better use! Find me at the Station when you finished with these worms!
+
+
+ Alyosha, wait that's not what I meant! I'm...
+
+
+
+ What the fuck Alyosha?
+
+
+ Ah, you're back! I see you're still high on that adrenaline! Well, I need you too calm down rapidly, you have to be cool headed to understand the complexity of the situation I'm about to explain you.
+
+
+ Not so fast.
+
+
+
+ Did you really find the fence?
+
+
+ Silence my friend, not here! Meet me at the small guard house near the eastern entry of the Jupiter Factory complex tonight at 22 o'clock! Then I'll explain everything!
+
+
+ Why do you sound surprised? Of course I did! I made him come out of his mousehole right into our little trap!
+
+
+ What is your plan?
+
+
+ The plan is simple but efficient! You're going to meet him under the bridge, and when you verified that he has the goods, you put him under arrest!
+ The signal for me will be "In the name of the law, you're under arrest!". I'll wait in the background, if he tries to run away I'll cut off his path!
+
+
+ Why me? I thought I was the backup? It's your plan, you should meet him!
+
+
+ I gave him your name of course, he is expecting you! If he sees me approaching he will think that there is something fishy and he'll run away.
+
+
+ WHAT? Why the FUCK did you do that? Why did you involve my name?
+
+
+ My man, isn't it obvious? I couldn't give my name, no one would believe that I - Dr Alyosha Shyogolov would be able to do such a thing!
+ I had to use your name, considering that you're of a more... pragmatic reputation!
+
+
+ What if this is a trap and he's going to rob us?
+
+
+ Bullshit! The guy is a corrupt scientist, most likely some poor clerk, not some gangster. Besides, I will be there, if it is a trap one glimpse of my Nosorog will make them scatter like pigeons.
+
+
+ Let's assume everything goes according to your plan - what would be next?
+
+
+ First we proceed to an interrogation - of course only when we catch him alive that is. If he dies during the arrest, things are more complicated...
+ We'll need to search his corpse and hope we'll find something pointing us to any potential associates or loot.
+
+
+ What if he runs or resists?
+
+
+ I don't think he will - I believe he's some clerk who is more afraid of you than you of him. But if he does something, the priority is of course to catch him alive - lethal force is only to be used if no other means are possible.
+ If he runs we have to pursue him - I'll be waiting in an opportune place to cut him off.
+
+
+ How did you bait him out?
+
+
+ That was the product of my devilish plan, although quite simple! I got the word around that you were looking to buy some "surplus" supplies from the Ecologist stock!
+ Discreetly of course, so that it would only find the way to the right ears for such an underhanded endeavour, and it did! Only after a couple of days I got a message on my burner PDA (which I passed as yours) and we set up this meeting!
+
+
+ Alright, I'll be the bait. But don't fuck it up, get into a good position to cut him off if he's running.
+
+
+ Perfect! Don't be afraid, you know you can count on me! Remember, the signal is "In the name of the law, you're under arrest!"
+
+
+ Fuck this, I won't play the bait in your stupid plan.
+
+
+ I'm afraid this is impossible, not when we have the fence right under our nose! What do you think should I tell in the future when someone is asking why the guy was not caught even though we had him right under our fingers?
+ Do you really want me to tell them "Sorry, but %s was too proud to help me catch this asshole"? Can you imagine what people would think of you? \n\nBesides, think of the glory (and the reward) when we catch him! Sakharov will be so happy, you'll be able to ask anything!
+
+
+ So you plan to throw me under the bus if I don't help you? You don't leave me any choice asshole. Fine, I'll do it.
+
+
+ My man, relax, that's only the tension before a big catch speaking, not you. Don't fret, I'll be right there to intervene when something goes sideways.
+
+
+
+----- Northern Rush - comms
+
+ Erast Fandorin: Attention! The Stalker %s is wanted for criminal conspiracy to steal state property! He is to be turned in immediatly! Any Stalker providing safe harbour or any assistance to him will be regarded as co-conspirator.
+
+
+ Colonel Masahiro Sibata: Attention! The Stalker %s is wanted for criminal conspiracy to steal state property! He is to be turned in immediatly! Any Stalker providing safe harbour or any assistance to him will be regarded as co-conspirator.
+
+
+ Erast Fandorin: He tries to run away! Men, seize him!
+
+
+ Fuck, I need to run!
+
+
+ I made it out! But fucking hell, I'm in deep shit!
+
+
+
+ Fuck my life, I cannot go back to the Ecologists without proving my innocence!
+
+
+ I need to find a way to exonerate myself!
+
+
+ Maybe there is someone who knows more about this shit than fucking Alyosha. I should look for help.
+
+
+
+ FUUUUUUUCK!!!!
+
+----- Northern Rush - Corruption - other dialogue
+
+---Spirit
+
+ There is alot of talk about corruption among the Ecologists...
+
+
+ And why are you talking to me about it?
+
+
+ Well, I know about your inclination to trade stuff you don't own.
+
+
+ What is that supposed to mean? Do you suspect me? Do I need to remind you that it's the Lab in Yanov being problematic, and I'm sitting here talking with you?
+
+
+ How convenient for you... But only the muscle needs to be in Yanov, not the brain...
+
+
+ Fuck you.
+
+
+ No, but you know the saying: "It takes a thief to catch a thief". I'd like some informations.
+ Apparently the situation got really worse in Yanov after the reinforcment. Do you know anyone suspicious who got transferred around the time following the desactivation of the Brainscorcher?
+
+
+ Hmm, yeah... there was that one guy, Erast I believe he's called. He was a new comer, always asking if we knew a way to make some fast money.
+ Shortly after he arrived they send him north - maybe that's the guy you're looking for?
+
+---Rydzik
+
+ What are you doing here?
+
+
+ Working. I'm organizing supply for the Yanov Station - our boys are cut off and we need to help them out somehow.
+
+
+ They are cut off? Why?
+
+
+ Are you new around here? The Brain Scorcher is active again and will fry any brain that tries to cross the Red Forest.
+
+
+ How are you resupplying them?
+
+
+ That's the tough part. In the past helicopters were an easy option if we were careful enough to scan the anomalies beforehand.
+ Now it's either the Red Forest or the Mercenaries route. For the Red Forest we have to give expensive equipment to our guys and he path has become very dangerous these past few weeks.
+ Another option are the Mercenaries by bringing it through their routes, but they ask an enormous amount of money.
+ All of this is a huge drain on our resources... some more budget cuts will be needed, or else we won't be able to send anything up north anymore...
+
+
+ Why are you not evacuating your northern bunker?
+
+
+ And abandon everything we build up this far? No, the situation is bad but not desperate.
+
+
+--- Ecologist 1
+
+
+ What are you doing here?
+
+
+ Waiting for the Brain Scorcher to be turned off I suppose.
+ Me and my friend have been hired to replace some guys in the Yanov Bunker, but as we arrived to the Zone, these guys from Monolith managed to take back their Radar outpost and turned their infernal machine back on.
+ A shame too, they promised us a good payroll to work that deep in the Zone, but as we are stuck here they barely give us anything.
+ It's not our fault that we have to sit on our asses, waiting for the Machine to go down.
+
+
+ They don't have any jobs for you here?
+
+
+ We are not the only ones waiting for the way to be free again, there is a surplus of manpower sitting around here at the moment.
+ Besides, I'm neither a scientist nor a fighter, I'm a maintenance guy. Not much I can really do here.
+
+
+--- Ecologist 2
+
+
+ What are you doing here?
+
+
+ Drinking and waiting for the sunset I guess? I have been hired to go up north, promised me a shitton of money too for going that far.
+ Now we can't go, the Brainfryer is in the way, and I don't get the northern premium. Even worse, they are cutting our wages! Some fucking budget cuts apparently in order to supply our boys up north, but I'm also a living person!
+ I also need some money to survive. Well at least I can sit on my ass and enjoy my drink - sure is better than being cut off from the rest of the world.
+
+
+ They don't have any jobs for you here?
+
+
+ I wish, that would allow me to earn more! But no, not much to do for someone of my experience. And I am sure as hell not going out there to dig around in mud risking my life!
+ I signed up for an indoor job.
+
+--------- Strange Meat --------
+
+
+ Barka: Akhat, you are sentenced to death for your crimes. Any last words?
+
+
+ Akhat: And who are the judges? You? No one here is innocent!
+
+
+ Akhat: What happened to Jester's cans Mizinets? Did you get a cut for distracting him Tacker?
+
+
+ Barka: Enough!
+
+
+ Akhat: And you, how did you survive Barka? What happened to Yak?
+
+
+ Akhat: Eaten by dogs? Or eaten by...
+
+
+ Barka: I said enough! Go meet your maker Akhat, you will not be missed.
+
+
+
+ What is going on?
+
+
+ Stay out of this Stalker.
+
+
+ ...
+
+
+
+ Why did you shoot him?
+
+
+ He murdered a Stalker in cold blood in order to steal his food. We cannot tolerate thiefs and murderers among our community, especially not in times like these.
+
+
+
+
+
+ How was the situation here, cut off from the rest of the Zone?
+
+
+ You mean the Siege? Honestly, quite bad. Monolith reactivating the Brainscorcher took us by surprise and we weren't sufficiently prepared such that we were lacking in everything.
+ Mostly we got our food from Trapper and his men - weapons and supplies we either had to scavenge or craft ourselves with our limited capabilities.
+ But even that became very difficult after some time: the wildlife made the territory very difficult to operate in.
+
+
+ What about resupply from the south?
+
+
+ Occasionally a Stalker who had a psy protection helmet made it through and brought us some stuff... But these became rarer and rarer. Mostly because the routes became more dangerous as less Stalkers walk them...
+ that and the precarious situation here makes people more dangerous... murders and theft were rampant, and if someone with a helmet made it here, well... he became a prime target for a Stalker who wished to leave.
+ Well that and the Monolith and mutants which made the path through the Red Forest very difficult to cross.
+ \n \nLuckily all that is over now... well for the most part.
+
+
+ What about the Ecologists?
+
+
+ The Ecologists? Well they were well provisioned and in the beginning they were inclined to help us. But when it became clear that the Siege would not last weeks but months, there was an incident...
+Some Stalkers marched down to the Mobile Lab with guns and demanded that the Ecologists turn over their Psy Protection Helmets. The situation got out of hands and the Ecologists gunned most of them down.
+Since then they shut down acces to the Mobile Lab, and reopened it only after the Brainscorcher was turned off...
+
+
+ What about the Bandits?
+
+
+ I don't know much about their situation, but I do believe they had it worse than us. You know, bandits tend to live day by day.
+ Nevertheless, banditry became rampant! It became very dangerous to wander to far south, as they would murder anyone on sight.
+ They still hold the Southern Checkpoint and make supply from the south difficult...
+
+
+ If the situation was bad for the bandits, how come they are still so numerous?
+
+
+ Many Stalkers here turned to the bandit lifestyle during the Siege...
+
+
+ Why do you not dislodge the bandits from the Southern Checkpoint?
+
+
+ You have to ask Ashot, he is managing security here.
+
+
+ What about the Mercenaries?
+
+
+ The Mercenaries were quiet during the Siege, they likely had as much trouble resupplying as everyone else here. They also had a deal with the Skadvosk - the Skadvosk supplied them with food and they supplied the Skadovsk with weaponry.
+
+
+ What about the Skadovsk?
+
+
+ The Skadovsk was much more lucky than we were. They got resupplied shortly before the Brainscorcher went up again and apparently they found some Monolith supply stashes.
+ They mostly used their supplies to trade with the Mercenaries who were sitting on too much weaponry and too little food.
+ But this does not mean that they had an easy time - quite on the contrary, the constant attacks by Monolith were very hard on them.
+
+
+ Couldn't the Skadvosk have helped you during the Siege?
+
+
+ They could yes, they could... listen, I don't want to blame them, they also had to make choices - the situation was difficult for everyone.
+ And they also had to fight of the Monolith - thanks to the Skadovsk we didn't have that problem too.
+ But yes, they introduced a strict rationing policy and forbade trading with us, which I think was uncalled for. Luckily some Stalkers from there broke the policy and sold us some food - for an exorbitant price sure - but food was food.
+ I understand them.
+
+
+ Let's change the topic.
+
+
+ I agree.
+
+
+
+ I just saw Stalkers execute a man.
+
+
+ Ah yes... Akhat... sad story. Before this disaster he was quite a nice guy - always ready to share what he had. But then the hunger got to him and he lost his nerves - strangled a Stalker for his food.
+ Fucking shit, the day before the Brainscorcher was turned off, can you imagine? Had he only endured a bit longer... As soon as we found out he had to be executed, there is no way around it.
+
+
+ In his last words he accused the others of being no better than him.
+
+
+ Eh... you see, the athmosphere here was that of general mistrust and suspicion.
+
+
+
+ This... tasted very strange...
+
+
+ This definitely tasted very strange... I should not eat more of it.
+
+
+
+
+ [Unusual Meat] What is with this meat? From which animal is it?
+
+
+ I don't know and I don't care. Probably it's best not to know. Can't expect gourmet food now, can you?
+
+
+
+ I talked to Hermann! Your meat is human meat!
+
+
+ What? You're fucking kidding right? You're pulling my leg?
+
+
+ Absolutely not. You can ask Hermann to confirm.
+
+
+ No, no, I'm believing you... Fuck! How is this possible? \n \nNo word to anyone about this Stalker, we... we need to keep this quiet. If anyone would know that I was selling human meat! Fuck! \n\nPeople would believ I did this on purpose!
+ You... You belive me right? I didn't know, you understand that, right? I would never sell something like that!!!
+
+
+ Relax Hawaiian, I believe you.
+
+
+ I don't know Hawaiian, maybe you could convince me by showing your good will *open hands*.
+
+
+ I don't know Hawaiian, this seems very strange to me.
+
+
+ I knew you would! Listen Stalker, we need to solve this!
+
+
+ I don't know Hawaiian, maybe you could convince me by showing your good will *open hands*.
+
+
+ I don't know Hawaiian, this seems very strange to me.
+
+
+
+
+
+
+
+-- Nitro
+
+ [Yak's bullet] Can you identify this bullet?
+
+
+ For 5.000 roubles I can.
+
+
+ [5.000 roubles] What can you tell me?
+
+
+ Maybe later.
+
+
+ Luckily it didn't get too deformed. It's a 7.62x51 ball, not very common. Mostly used for some snipers or assault rifles, like the Galil, FAL or SCAR.
+
+
+ As you wish.
+
+
+ Interesting. Do you know if Barka has such a gun?
+
+
+ Barka? No, Barka trusts in soviet weaponry. Are you looking for a murderer?
+
+
+ Maybe I am. Is there someone around here who uses such weapons? Or maybe a faction which could use it?
+
+
+ No... most of the guys around here are my customers and no one uses it now, and the few who did changed to more common calibers because the ammo was unfindable.
+ As for factions, Freedom has some of these rifles, although not around here. I think the Mercenaries have it sometimes too? Monolith - maybe, I don't know their arsenal very well. Bandits? Could have looted it from a victim.
+
+
+ Do you remember anyone using such a caliber in the last month?
+
+
+ Damn, you really want to find that guy! My memory is a bit weak at the moment, why don't you come back later when it recovers?
+
+
+ [5.000 roubles] Maybe this will help your memory?
+
+
+ It certainly does, although I'm not sure it will help you. The caliber was never very popular, most weapons using it have equivalents with more abundant ammo. Nevertheless, there were few people using it, let me think...
+ \n \nYes, there was that one Stalker, one of Trapper's hunters - Fasan was his name. Left one day to hunt or scavenge and never came back - his GA3 probably ran out of ammo. Then there was that one guy, a Freedom fellow - Lyoshik.
+ Swore by his Galil, but after an expediation I never saw him with it again. Finally there was that guy from the Skadovsk, a trader - didn't tell us his name. He was very proud about his SCAR - bragged all the time about how good a deal he made with the Mercenaries. One day he came back without it and didn't want to tell what happened to his prized possession.
+ Didn't bragg around either - someone must have fucked him up.\n \nThat's all of them I think. Are you satisfied?
+
+
+ Where did Fasan go?
+
+
+ Shit, what do I know? Ask Trapper, he worked with him!
+
+
+ Where can I find Lyoshik?
+
+
+ Lyoshik left as soon as the Brainscorcher went down. Where to? I don't know. Ask Ashot, he should know.
+
+
+ Where can I find this trader?
+
+
+ What do I know? The Skadovsk? Ask Hawaiian, he always dealt with him.
+
+
+ I'll be back when you recovered your wits.
+
+
+ Depends on the weight of your pockets.
+
+
+ That would be all.
+
+
+ Jeez, you certainly got your moneys worth. Well good luck finding your person, hope he is worth your trouble.
+
+
+
+ [5.000 roubles] Does this will help you remember your customers?
+
+--- Trapper
+
+ How was it being cut off from the South?
+
+
+ Quite hard... The Zone never was a hospitable place, and these months showed us how precarious our situation here really is.
+ I lost good Stalkers to the Zone - preventable deaths I do believe. But the lack of food, supplies and men made us took risks which we wouldn't have taken otherwise...
+ And with each day we were cut off, the Zone grew more hostile and we grew weaker... mutants populated areas again which formerly were firmly in our hands, and it became increasingly harder to compete, such that in the end, we had to avoid these areas entierly.
+ Nevertheless, many of my men showed bravery and faced the dangers in order to bring back some food for their fellow men, knowing that they might not return.
+ It brings me great sorrow that I cannot find some the bodies of my missing hunters and give them the burrial they deserve.
+
+
+ What kind of competition are you talking about?
+
+
+ Chimeras! Yes, the devils spawn... We are troubled by three of them... One of them is lurking around in the northern parts, although we don't know where exactly that one has it's lair... very slippery bastard.
+ \nAnother one took up residence in the Volkhov complex to the south west, but I have special plans for her, so don't kill that one!
+ \nAnd the third, well the third is the Devil himself. Killed my friend Fox... \nWe need to get rid of them, one at the time, but they are though beasts which require a lot of preparation and we have other pressing matters on our hands.
+
+
+ Why can you not find some bodies?
+
+
+ Mainly because we have other priorities now - we need to rebuild our lifes here, and for that I need every man I have. You see, the problem with my missing men is twofold:
+ \nWe don't know eactly where they are and something killed them which was neither a dog nor a boar.
+ They were experiences hunters and they would not have succumbed easily. So in order to find them we would need to form large search parties, and I simply lack the men for that.
+
+
+ I have another question.
+
+
+ Sure, what do you want to know?
+
+
+--- Missing Men
+
+
+ I can help you find your missing men.
+
+
+ Such help would be hugely appreciated! I only need to know their location, my men can bring back the corpses later. I have three missing men: Seryoga Lesun, Fasan Bedovy and Andrey Lopast.
+
+
+ Where did Seryoga Lesun leave for?
+
+
+ Seryoga left for the Cement Factory three weeks ago and never came back. Some of my men went looking after him when he failed to return in three days, but were not able to find him.
+
+
+ Where did Fasan Bedovy leave for?
+
+
+ Fasan was very bold and went to the east, intending to explore some of the tunnels in the hope to find some supplies. We tried to dissuade him but he always was very stubborn.
+ Sadly he never returned, and none of my men dared to go after him.
+
+
+ Where did Andrey Lopast leave for?
+
+
+ Andrey went to the west and wanted to scavenge around Kopachy. He too never returned, and my men failed to find his corpse...
+
+
+ I will look out for them.
+
+
+ My sincere thanks Stalker, this means alot for me! I will talk to my men, we should be able to gather some money in order to reward you for your troubbles! But be careful, these men died by something which still might be there!
+
+
+
+ About your missing men.
+
+
+ Yes?
+
+
+ Where did Seryoga Lesun leave for?
+
+
+ Seryoga left for the Cement Factory three weeks ago and never came back. Some of my men went looking after him when he failed to return in three days, but were not able to find him.
+
+
+ Where did Fasan Bedovy leave for?
+
+
+ Fasan was very bold and went to the east, intending to explore some of the tunnels in the hope to find some supplies. We tried to dissuade him but he always was very stubborn.
+ Sadly he never returned, and none of my men dared to go after him.
+
+
+ Where did Andrey Lopast leave for?
+
+
+ Andrey went to the west and wanted to scavenge around Kopachy. He too never returned, and my men failed to find his corpse...
+
+
+ I found Seryoga Lesun. He died in the canalization under the Cement Factory by the hand of Bloodsuckers.
+
+
+ Damn what a place to find your death... thanks Stalker! We will make sure that he will lie in an appropriate place.
+
+
+ I found Fasan Bedovy. He died in the Train Deposit near the Eastern Tunnels. He had no chance - there was a Pseudogiant and Burers.
+
+
+ Fasan was a great hunter and he faced impossible odds. If Valhalla exists, he earned his place amongst the warriors... My respect that you managed to kill these mutants.
+
+
+ I found Andrey Lopast. He lies in one of the other house ruins. A controller and some snorks got him.
+
+
+ Poor Andrey... one can only imagine the pain he went through for us... My thanks Stalker, we will take care of his body.
+
+
+ I believe that I found all your men.
+
+
+ You did, and for that we are grateful! Let's drink a toast to my men! They died doing what was right, and we should honor them for that!
+
+
+ To Seryoga!
+
+
+ May his bones rest in peace.
+
+
+ To Fasan!
+
+
+ May he drink in Valhalla!
+
+
+ To Andrey!
+
+
+ May he find peace where the mortal world failed him!
+
+
+ Now we have to turn to the world of the living.
+
+
+ I agree.
+
+--- Chimeras
+
+
+ I want to help you with your Chimera problems.
+
+
+ Glad to hear it. So the first step is rather a simple one: we need to assemble the bait.
+
+
+ The bait?
+
+
+ Yes, the bait! You see, during our time on our own we adapted our hunting strategies. Instead of hunting the predator, we attract them to a place of our choosings - a trap!
+The bait itself is rather simple: we fill a backpack with some boar meat and attach a sound device with a recording of boar grunting.
+A Chimera in the vicinity will catch the smell and sound. The Chimera of course will approach the bait - and will stumble into your trap.
+
+
+ What do you need for the bait?
+
+
+ From you I will need boar meat - lots of it! I will take care of the backpack and the electronics and I'll fashion the bait out of it.
+
+
+ Alright, I will gather the meat.
+
+
+ Perfect. Come see me when you're ready.
+
+
+
+
+ [Boar Meat] I gathered the meat.
+
+
+ Nice! Give me a minute. \n \n... \n \nThere, it's done! You will see, it's rather easy to use.
+Simply drop it to the ground and it will do all the work for you! Maybe a word of caution, if you still didn't know it - Chimeras are rapid bastards!
+After setting up the bait you don't have a lot of time to set up, so I would advise you to placing it after having done all your preparations!
+
+
+ Understood. So where can I find this Chimera?
+
+
+ Your target has chosen the northern parts as it's hunting grounds, close to the Cooling tower! I already know the perfect spot to set up the trap, so listen carefully!
+\n \nOn the northern side of the cooling tower is a small area enclosed by a fence. There is a gate opening to the north - place the bait inside this area in front of the gate!
+You will be able to take position on either side of the complex - there are stairs leading up to higher positions! \n \nUnderstood?
+
+
+ Understood.
+
+
+ Alright. Remember, Chimeras are nocturnal predators, so prepare yourself for a night hunt. And try to bring back the bait, we can use it later... \n \nGood hunt Stalker!
+
+
+
+ Can you remind me of the spot for the bait?
+
+
+ Of course. On the northern side of the cooling tower is a small area enclosed by a fence. There is a gate opening to the north - place the bait inside this area in front of the gate!
+You will be able to take position on either side of the complex - there are stairs leading up to higher positions!
+
+
+
+ Your hunting competitor is dead!
+
+
+ Good job Stalker, good job! Let's have a drink in order to celebrate this! \n \nAnd of course the bounty on the Chimera!
+
+
+ So what about the other Chimera?
+
+
+ That will be more tricky, but before we begin - were you able to recover the bait?
+
+
+ Yes.
+
+
+ Excellent. Hold onto it until the mission. I will explain to you the plan in detail before the mission, but the essence is this:
+\n \nI asked you to spare the Chimera because I needed something from her in order to hunt down Chyort - and I need you to spare her a bit longer. Chyort, as you may have understood, is a skirt chaser.
+Your job will not be to kill the Chimera, at least not for now, but to plant a recording device in her lair in order to record her... well her mating calls. And that's where the bait comes into play.
+You will setup the bait outside of her lair, and while she is out, you sneak inside and plant the recording device. We wait a day, and then you can kill her and recover the device.
+
+
+ No.
+
+
+ Then I'm afraid you will have to gather some boar meat again before proceeding to the next step. But the essence of your mission will be this:
+\n \nI asked you to spare the Chimera because I needed something from her in order to hunt down Chyort - and I need you to spare her a bit longer. Chyort, as you may have understood, is a skirt chaser.
+Your job will not be to kill the Chimera, at least not for now, but to plant a recording device in her lair in order to record her... well her mating calls. And that's where the bait comes into play.
+You will setup the bait outside of her lair, and while she is out, you sneak inside and plant the recording device. We wait a day, and then you can kill her and recover the device.
+
+
+ ... This is madness.
+
+
+ That sounds risky, but it might work.
+
+
+ Why cannot we use the bait for Chyort instead of... this plan?
+
+
+ Madness, I understand why you think that, but it's our only plan in order to attract Chyort! If you don't want to do it I understand completely.
+
+
+ No, I'll do it.
+
+
+ Excellent! Make your preparations and most important - don't kill the Chimera in the Volkhov Complex!
+
+
+ I'm not comfortable with the plan...
+
+
+ No problem! If you change your opinion, you know where to find me.
+
+
+ Of course it will work! Make your preparations and most important - don't kill the Chimera in the Volkhov Complex!
+
+
+ Ah that old devil is much to shrewd to walk into our bait! Believe me, only the prospect of humping will make him drop any caution!
+
+
+ I'll take my leave and prepare.
+
+
+ You do that! I'll see you when you're ready. And don't forget the bait!
+
+
+ Ehm, I might already have killed that Chimera...
+
+
+ Damn! Well that only delays our plan but doesn't alter it. I'll have my spies watch that place, at some point a new Chimera will choose it as it's lair.
+ Come see me in a couple of days - maybe there will be a new resident. In the meantime you can prepare for the task.
+
+
+
+ Can you fashion me a new bait?
+
+
+ Of course, do you have the meat?
+
+
+ [Boar meat] Sure.
+
+
+ Excellent! I will prepare the bait! \n \n... \n \nThere, it's done!
+
+
+ Not yet.
+
+
+ Then come back when you have it.
+
+
+
+ [Trapper's bait] I'm ready for the mission.
+
+
+ Alright my friend! So listen carefully to the plan! \n \nThe lair of the Chimera female is inside the Volhov complex to the south west of here. My scouts report that her precise "sleeping chamber" is in the room to the right of the garage! That's where you need to drop the recording device!
+The recording device works like the bait, you only need to drop it on the ground. Now the neat part is that on the left side of the garage are stairs which lead outside with and exit to the left of the barracks! That's your way in!
+
+
+ Noted. Where should I set up the bait?
+
+
+ We believe that the optimal spot to place the bait is the eastern entry to the Complex, next to the checkpoint! It is on the opposite site of the stairs and should give you precious seconds in order to place the recording device.
+You will have a bit of time before the Chimera catches the sent of the bait, and a bit more for her to eat it. Nevertheless, you have to be fast - very fast.
+
+
+ Alright. Anything else?
+
+
+ Yes. The Volkhov complex is also a hotspot for Zombies and other mutants. It would be in your best interest to clean the complex before baiting the Chimera - obviously silently in order not to attract the Chimera before it's needed.
+I would advise a long range rifle with silencer. On the other hand, you also need to be swift on your feets, so don't pack what you don't need. Any questions?
+
+
+ Where is the lair again?
+
+
+ The lair of the Chimera female is inside the Volhov complex to the south east of here. My scouts report that her precise "sleeping chamber" is in the room to the right of the garage! That's where you need to drop the recording device!
+
+
+ Where is my entrance again?
+
+
+ To the left of the barracks are stairs which lead to the garage.
+
+
+ Where should I place the bait again?
+
+
+ The optimal spot to place the bait is the eastern entry to the Complex, next to the checkpoint!
+
+
+ Alright. I'm ready to leave!
+
+
+ Excellent! Here is the recording device! Now remember, the bait will only work at night as Chimeras are nocturnal creatures! And above everything else - don't kill the Chimera!
+
+
+ I need some more time.
+
+
+ No problem! Come find me when you're ready!
+
+
+
+ [Trapper's bait] I'm ready for the mission.
+
+
+ Good, but we still need to wait for a new Chimera female to take residence there. Come see me in a couple of days.
+
+
+
+
+
+ Can you remind me of the plan again?
+
+
+ Of course! What do you want to know?
+
+
+ Where is the lair again?
+
+
+ The lair of the Chimera female is inside the Volhov complex to the south east of here. My scouts report that her precise "sleeping chamber" is in the room to the right of the garage! That's where you need to drop the recording device!
+
+
+ Where is my entrance again?
+
+
+ To the left of the barracks are stairs which lead to the garage.
+
+
+ Where should I place the bait again?
+
+
+ The optimal spot to place the bait is the eastern entry to the Complex, next to the checkpoint!
+
+
+ Alright, that's all.
+
+
+ Weidmannsheil!
+
+
+
+ It is done!
+
+
+ Excellent! Now we have to wait a day. I'll send you a message when you can recover the device!
+
+
+
+ [Recording device] I recovered the device!
+
+
+ Excellent, most excellent! Let's have a drink to the demise of Chyort!
+
+
+ I also killed the Chimera. Was there a bounty on her?
+
+
+ Of course - there is always a bounty on a dead Chimera.
+
+
+
+ I lost the device...
+
+
+ Ok no problem, we can start again.
+
+
+
+ I killed the Chimera...
+
+
+ Fuck! Well now we have to wait until a new Chimera sets up her lair again... I will send you a message when my scouts report a new resident.
+
+
+
+ Trapper: I believe we waited long enough. You can recover the recording now.
+
+
+
+
+
+ Trapper: The lair is inhabited again. We can proceed with the plan.
+
+
+ Trapper: I believe something went wrong with the recording. We have to start anew.
+
+
+-----
+
+
+
+---- Random Events
+
+--- Controller Ambush
+
+
+ Someone: Please help! I'm inside the building!
+
+
+ Someone: Stalker, please help me! I'm in terrible pain!
+
+
+ Someone: I beg you, please come help me!
+
+
+ Someone: Stalker, the pain! Please come help!
+
+
+---- Sasha Baltun
+
+ Sasha Baltunov: Listen here boys, I'm paying a round! Barkeep, hand out the bottles!
+
+
+ Everyone: Hurrah!
+
+
+ Did you get your bottle Stalker?
+
+
+ Not yet, but I will, thanks! That's quite nice of you!
+
+
+ I did, thanks! That's quite nice of you!
+
+
+ Well I struck gold today, I'm a rich man now! I finally can leave this place, but before I want to have a fucking party!
+ No more shivering in the cold, no more ducking under bullets, no more mutants trying to rip open my belly! I'm fucking free!
+
+
+
+ Can I have the bottle please?
+
+
+ Here you go Stalker.
+
+
+
+ Shit, is that not the guy who gave out a round of booze?
+
+
+---- Murder of Starik
+
+
+ Someone: You moron, you killed him!
+
+
+ Someone else: Not my fault! He should have talked!
+
+
+ Someone: And now he cannot talk at all!
+
+
+ Someone: How shall we find out where he hid his stash now?
+
+
+ Someone else: Maybe he has a clue in his pockets?
+
+
+
+ Someone: Shush, someone is outside!
+
+---- Bezsnoik
+
+
+
+ Stalker, I cannot sleep with these fucking dogs howling! Can you take them out for me? They are driving me crazy! I'll give you 5.000 roubles.
+
+
+ Sure, no problem.
+
+
+ Great! Be quick about it, I want to catch some sleep before the sun is rising. From what it sounds like, they should be to the west of here, near the path to the Truck Cemetery.
+
+
+ Not for 5.000 roubles.
+
+
+ Dude, 5.000 roubles for a couple of dogs is more than fair pay. Ok, listen, I'll throw in some food and booze. Will that cut it?
+
+
+ Deal.
+
+
+ Great! Be quick about it, I want to catch some sleep before the sun is rising. From what it sounds like, they should be to the west of here, near the path to the Truck Cemetery.
+
+
+ No.
+
+
+ Ah fuck it, I'll find someone else to do the job.
+
+
+ No, I'm not interested.
+
+
+ Ah fuck it, I'll find someone else to do the job.
+
+
+
+ The dogs are dead.
+
+
+ Great! Here is your cash. Now let me go back to sleep.
+
+
+ Great! Here is your reward! Now let me go back to sleep.
+
+
+ You took your fucking time Stalker! The sun will rise soon. Here is some cash for your troubles, but obviously I cannot pay you in full.
+
+
+ ...
+
+
+
+
+ Freedom guy: Hey Stalker! Yes you! Do you want to earn some quick cash?
+
+
+--- Gutalin
+
+
+ Stalker: Stalker! Turn back! Save yourself from this sinful lands!
+
+
+
+ Gutalin: For the white steed is saddled and his rider has put his foot in the stirrup. And the prayers of those who have sold themselves to Satan are in vain.
+
+
+ Gutalin: You, children of man who were seduced by the devil, who play with the devils toys, who dig up Satans treasures -- I say unto you: you are blind!
+
+
+ Gutalin: Awake, you bastards, before its too late! Trample the devils trinkets!
+
+
+ Gutalin: Awake, blind ones, youre falling into the pit and taking others with you.
+
+
+
+ My brother! You still have time to repent! Turn back and leave the Zone, this place put on earth by Satan himself in order to tempt us! Nothing good will come from here! Believe me, I know, I've seen!
+
+
+ What happened?
+
+
+ I tell you, these Satan's toys, these .. Artifacts ...they are not here to help us, no, they are here to tempt us! I've seen what they makes to people... what they make people do...
+ How the greed fills their hearts and how it makes them turn on their brothers! \n \n... \n \nI have to warn them... I have to save the lambs from the temptation, or there will be another Schuhart... \n \nTurn back now and save your soul Stalker!
+
+
+ ...
+
+
+
+
+ I see that you have a preacher now.
+
+
+ Don't get me started. That man is spoiling my business! Fucking asshole, a friend of him gets killed and now everyone has to go back home? \n \nHe's scaring away all the manpower I need.
+ \n \nBut do you know what is the worst?
+
+
+ No?
+
+
+ Let me guess... he doesn't take bribes?
+
+
+ The madman fucking buys Artifacts and fucking burries them! The toys of Satan he says! Can you imagine!!!
+ He gets fucking donations from some loosers, and then buys Artifacts for a premium price!!! AND - FUCKING - BURRIES THEM! \n \nNo, I cannot live with him, he has to go...
+
+
+ Aaargh, if only he would! No, he doesn't take any, and he fucks up my business!
+ \n \nThe madman fucking buys Artifacts and fucking burries them! The toys of Satan he says! Can you imagine!!! He gets fucking donations from some loosers, and then buys Artifacts for a premium price!!!
+ AND - FUCKING - BURRIES THEM! \n \nNo, I cannot live with him, he has to go...
+
+
+ Such is life.
+
+
+ Is this ... a contract?
+
+
+ No, fuck life! Listen to me... that man has to go... I will pay you well if he doesn't bother me anymore... if you understand my drift...
+
+
+ My friend, it is... if for some reason this... if Gutalin finds his early demise... I would be very grateful.
+
+
+ I understand. Consider the problem resolved.
+
+
+ I don't care, he's your problem.
+
+
+ Good. Take care of him, and you will dine like a king!
+
+
+ My friend, don't you see? He's a threat to our lifestyle! He has to... take a vacation.
+
+
+ Alright, I understand.
+
+
+ No Sidorovich, he is your problem, not mine. I don't want anything to do with it.
+
+
+ My man! Take care of him, and you will dine like a king!
+
+
+ Urgh, there is no loyalty in this place! Fine, go!!! I will take care of the problem myself.
+
+
+
+ Gutalin uttered his last sermon.
+
+
+ Excellent! No longer will the ears of Stalker be poisoned by his words. Here Stalker! I believe I promised you a royal feast?
+ Ah, some money is also in order. But don't go spend it in some knock-off thrift shop - I'm sure you will find something to your liking in my hand picked assortment. Our economy is suffering after all.
+
+
+
+
+ You have a preacher now?
+
+
+ Yeah... he is a bit peculiar, but he doesn't harm anyone. The man in the bunker is less happy about it though.
+
+
+ What is Sidorovich's problem?
+
+
+ Well you see, Gutalin here is trying to convince rookies to turn back and save their souls and bodies.
+ Much to the dislike of Sidorovich who would prefer to employ these men... and pay them accordingly.
+ But to be honest, only few men turn around and go home, most people here a desperate and don't have much of a choice.
+ \n \nI believe Sidorovich's problem is more of a philosophical nature.
+
+
+ How so?
+
+
+ Our preacher here buys Artifacts from Stalkers wishing to leave without haggling... and burries them during the night.
+ And not to make staches no, he simply wants them gone, or how he puts it "return the seed to their father". You can see how that conflicts with Sidorovich's approach.
+
+
+ No shit?
+
+
+ No shit.
+
+
+ Where does he get the money from?
+
+
+ Mostly donations. You see, even though his methods are a bit eccentric, many veterans have symphaty for his ideas - we all lost part of our soul here.
+ So there are Stalkers who would preserve others from doing the same, and some try to attone for their sins by supporting him.
+
+
+ Does no one try to follow him when he burries the Artifacts?
+
+
+ It's not exactly common knowledge. But yeah, some did but lost track of him in the dark. And he doesn't return twice to the same location, he obviously is no fool.
+
+
+ Let's change the topic.
+
+
+ Alright.
+
+
+
+
+
+
+
+
+
+
diff --git a/mods/[DEV] Brotherhood/gamedata/configs/text/eng/st_items_brotherhood.xml b/mods/[DEV] Brotherhood/gamedata/configs/text/eng/st_items_brotherhood.xml
new file mode 100644
index 00000000..cbea67ed
--- /dev/null
+++ b/mods/[DEV] Brotherhood/gamedata/configs/text/eng/st_items_brotherhood.xml
@@ -0,0 +1,198 @@
+
+
+
+
+
+
+--- Hunters
+
+
+ Bag of Tuna Conserves
+
+
+ Heavy bag, filled with Tuna Conserves. Vybegallo will be happy.
+
+
+
+ Saiga-12S "Mutanthammer"
+
+
+ A modified version of the Saiga-12S. Someone etched "Mutanthammer" on the side.\n \n
+ %c[ui_gray_2]ATTACHMENTS: \n
+ %c[d_purple] %c[ui_gray_2] EKP-8-02 Kobra, 1P29, PSO-1 scopes\n
+ %c[d_purple] %c[ui_gray_2] PBS-1\n \n
+
+
+--- Strange Kolbosa ---
+
+ Pack of unusual meat
+
+
+ A package containing something looking like the usual pack of old meat: old bread and some smelly meat of unknown origin wrapped in scribbled paper. You don't recognise the look and smell...\n \n
+ %c[ui_gray_3]PROPERTIES:\n
+ %c[d_red] %c[ui_gray_2] low quality\n
+
+
+
+ Unusual meat
+
+
+ Smelly meat of unknown origin. You don't recognise the look and smell...\n \n
+ %c[ui_gray_3]PROPERTIES:\n
+ %c[d_red] %c[ui_gray_2] low quality\n
+
+
+
+ Scribbled paper
+
+
+ Smirched paper which was wrapped around the unusual meat. Something was written on it, but you don't recognise much.
+
+
+
+ Bullet inside Yak
+
+
+ I found this bullet inside Yak's torso. Seems he was murdered.
+
+
+
+ Bullet inside Yak
+
+
+ I found this bullet inside Yak's torso. Seems he was murdered. Nitro identified it as a 7.62x51 ball bullet.
+
+
+
+
+---- Market Share
+
+
+ USB decryption key
+
+
+ The encryption and decryption key for the new mercenary communication encryption.
+
+
+
+ Lt. Harald Virtanen's PDA
+
+
+ PDA of Lt. Harald Virtanen with the decryption key for the mercenary's communication. \n \nWill be obsolete soon.
+
+
+
+ A strongly worded order from Sakharov telling Vybegallo to stop his experiments immediatly.
+
+
+ Sakharov's cease order to Vybegallo
+
+
+
+ Mission description
+
+
+ A scientist recently contacted us with an urgent order for some Pseudogiant parts. Organise a hunting party and send the parts to Dushman - he takes a keen interest in the success of the mission, so don't screw it up! Take some experencied guys with you! And no word about it, discretion is of essence.
+
+
+
+ Prototype Titanium Grid
+
+
+ A prototype version of the titanium grid. \nInstead of simply carrying a backpack secured by a pair of shoulder straps, one can attach it to the suit by means of a titanium grid, which optimises your carrying capabilities. The prototype grid is made of titanium which is the material of choice due to its light weight and high durability, and some external elements are made of plastic in order to attain desired flexibility while sprinting. The whole construction is equipped with a system of straps and webbing to provide a high degree of adjustability. This quality design allows the shoulder straps to be adjusted up or down so as to make wearing a backpack comfortable regardless of one's torso size. A single grid replaces only the main framework of your backpack, but it's possible to use more grids to further improve your carrying capabilities. Grids are created from very high quality titanium, thus disassembled grid can be used as an effective combat outfit or helmet repair supplement.\n \n
+ %c[ui_gray_2]PROPERTIES:\n
+ %c[d_cyan] %c[ui_gray_2] everyday item\n
+ %c[d_cyan] %c[ui_gray_2] high quality\n
+ %c[d_cyan] %c[ui_gray_2] effectiveness of mult. units is stackable\n
+
+
+
+
+ [Documents for Owl]
+
+
+ [to be done: proper name and description]
+
+
+
+
+ Forester's old Trenchcoat
+
+
+ Forester's old trenchcoat. According to Forester, the coat was never washed and should smell strongly like him (in fact one could say it stinks). \n \n
+ With the coat I should be able to attract Vlad and Drakul.
+
+
+
+
+
+ Supplies cache
+
+
+ A cache of supplies from the mercenaries. Chris will be happy to lay his hands on all these weapons and ammo.
+
+
+
+
+ Trapper's Chimera Bait
+
+
+ A bag filled with boar meat and a radio playing a boar's grunts. This should attract the Chimera.
+
+
+ Trapper's recording device
+
+
+ The radio has a microphone build into it. Works by dropping it to the ground.
+
+
+
+ Shlitzer's bag
+
+
+ A bag filled with weapons and ammunition.
+
+
+
+ Ironchain's case
+
+
+ A heavy - closed case. I should bring it to Shlitzer.
+
+
+
+
+ Ded Tryasina's Diary
+
+
+ Last entry: \n \nYesterday was a success. Some poor Stalker got mauled by dogs and he had some interesting stuff on him.
+ Sadly I could not take everything with me and I hid the rest. Seems appropriate that the dead are guarding a dead man's belongings.
+
+
+
+
+ SVD 'Cyclops'
+
+
+ Butcher's old hunting rifle - a modified version of the SVD. \n \n
+ %c[ui_gray_2]ATTACHMENTS: \n
+ %c[d_purple] %c[ui_gray_2] EKP-8-02 Kobra, 1P29, PSO-1 scopes\n
+ %c[d_purple] %c[ui_gray_2] KZRZP suppressor (after modification)\n \n
+
+
+
+ Temperature measurement
+
+
+ Charts recording different temperatures of an anomaly. Is this the document Alyosha was talking about?
+
+
+
+
+
+
+
+
+
diff --git a/mods/[DEV] Brotherhood/gamedata/configs/text/eng/st_quests_brotherhood.xml b/mods/[DEV] Brotherhood/gamedata/configs/text/eng/st_quests_brotherhood.xml
new file mode 100644
index 00000000..a25718ea
--- /dev/null
+++ b/mods/[DEV] Brotherhood/gamedata/configs/text/eng/st_quests_brotherhood.xml
@@ -0,0 +1,668 @@
+
+
+
+
+
+
+ ---- Cordon ----
+
+ Bloody Railway Bridge
+
+
+ Sidorovich hired me to take part in the assault on the railway bridge.
+ I have to make contact with the Clear Sky leader "Castor" at the northern farm.
+
+
+ Sidorovich hired me to take part in the assault on the railway bridge.
+ The Clear Sky squad is in place, I have to go back to the mill and find the Loner squad under "Pollux".
+
+
+ Everyone is in place, time to assault the Railway Bridge!
+
+
+ We took back the Railway Bridge, now we have to beat back the bandit reinforcement!
+
+
+ We took back the Railway Bridge and the bandit reinforcment is defeated. I should report back to Sidorovich to report our victory.
+
+
+
+ Bloody Railway Bridge: Diversion
+
+
+ Sidorovich hired me to take part in the assault on the railway bridge.
+ I am to assault the vehicle part to the east and eliminate the bandits there.
+
+
+ I eliminated the bandits in the vehicle park. I should go see if the guys need assistance with the railway bridge.
+
+
+ I eliminated the bandits in the vehicle park and the assault on the railway bridge has been a success. I should report back to Sidorovich.
+
+ ----Brotherhood----
+
+
+ Lost in transit
+
+
+ I have to recover a package lost to a pack of dogs. It should be in the Great Swamp, near an old construction site.
+ The delivery guy made his way past the Pump Station and kept the village with the water tower to his left, and the village the military sometimes uses to his right.
+
+
+ I found the package. I should bring it to Vybegallo in Agroprom, somewhere in the factory.
+
+
+ I delivered the package. I should report back to Butcher.
+
+
+
+ No future for a boar
+
+
+ There is a herd of boars in the wood, behind the Witches Jelly anomaly in the south eastern part of the sector. Butcher wants them dead.
+
+
+ I should report to Butcher and tell him that his problem is solved.
+
+
+
+ Lost snorks
+
+
+ There is a group of snorks to the south west of the train hangar close to the southern path to Agroprom. Butcher wants them dead.
+
+
+ I should report to Butcher and tell him that his problem is solved.
+
+
+
+ The great culling
+
+
+ Butcher wants me to check if the snork population in Agroprom on the border to Garbage has grown too large. He told me to take Bellerophon with me. The snorks might be on the hill between the two passages to Garbage.
+
+
+ The snorks are dead - I should return with Bellerophon to the Train Hangar and talk to him.
+
+
+ I should report to Butcher and tell him that the snorks shouldn't be a problem anymore.
+
+
+
+ Lost during a Hunt
+
+
+ I got an urgent help request from Butcher - a hunter called "Orion" is lost and Bellerophon is wounded and waiting in the Agroprom Factory. I should go help them.
+
+
+ I got an urgent help request from Butcher - a hunter called "Orion" is lost and Sarpedon is wounded and waiting in the Agroprom Factory. I should go help them.
+
+
+ Orion is lost somwhere in the Agroprom Underground. I should go find him and kill whatever causes all this trouble.
+
+
+ I killed the Controller who was behind the Snork infestation. Sadly Orion is dead. I should report back to Bellerophon.
+
+
+ I killed the Controller who was behind the Snork infestation. Sadly Orion is dead. I should report back to Sarpedon.
+
+
+
+
+---- Duty Hunter ----
+
+ A potential client: Aspirin
+
+
+ Butcher said Aspirin, the Duty Medic, might have a job for me. I should go see him.
+
+
+
+ Come see me: Aspirin
+
+
+ Aspirin wrote me that he might have a job for me. I should go see him.
+
+
+
+ Come see me: Voronin
+
+
+ Voronin wrote me that he has a problem. I should go see him.
+
+
+
+ Evicting the tenants
+
+
+ Aspirin wants me to kill all Bloodsuckers in the Bloodsucker Village. I have to do it before sunrise.
+
+
+ I believed I killed all the Bloodsuckers. I should go back to Aspirin.
+
+
+ I believed I killed all the Bloodsuckers, but the sun is already up.
+
+
+
+
+
+
+ Cleaning up
+
+
+ Voronin wants me to replace the Duty patches with Mercenary ones on the dead soldiers in the Bloodsucker village.
+
+
+ I replaced all the Duty patches with Mercenary ones. I should report back to Voronin.
+
+
+ I replaced all the Duty patches with Mercenary ones, but I wasn't able to do it before sunrise. I should report back to Voronin.
+
+
+
+ Payback!
+
+
+ The Duty soldiers want to take vengeance on the Blooduscker. I should meet their squad in Army Warehouse in the farmstead south of the path to Rostok.
+
+
+----- Bellerophon ----
+
+
+ Bellerophon: a beast in the night
+
+
+ Bellerophon told me to meet him in the Yantar bunker. From there we will set out to kill his Chimera
+
+
+ We need to find the Chimera. It should lurk somewhere in the north among the industrial parts of Yantar
+
+
+ We killed the Chimera. I should lead Bellerophon back to the bunker
+
+
+
+
+------ Trapper ------
+
+
+ Unfair competition
+
+
+ Trapper asked me to gather 6 boar chops in order to fashion a bait for the Chimera.
+
+
+ Trapper asked me to kill a Chimera for him. I have to set up the bait, north of the cooling tower, inside the enclosure in front of the gate. I should recognise the spot.
+
+
+ The bait is set. Now I have to wait and pray.
+
+
+ The Chimera is dead. I should report back to Trapper.
+
+
+
+ This is the spot Trapper told me. I should drop the bait here.
+
+
+ This is the spot Trapper told me, but it's not night.
+
+
+
+ Taping for the Discovery Channel
+
+
+ A Chimera took up residence in the Volkhov Complex. I have to use the bait in order to lure her out and then sneak inside and set up the recording device.
+ The bait should be placed on the eastern entry to the Complex, next to the checkpoint. I should recognise the spot. And the Chimera has to stay alive!
+
+
+ The bait is set! I don't have a lot of time - the recorder has to be placed.
+
+
+ The recorder is in place. I should report back to Trapper.
+
+
+ Now we wait for the Chimera to fill the tape.
+
+
+ I can recover the tape. The Chimera does not need to survive.
+
+
+ I killed the Chimera by accident. I should tell Trapper about it.
+
+
+ Apparently there is a Chimera in the Volkhov complex again. The mission can continue. I have to set a new bait. The bait should be placed on the eastern entry to the Complex, next to the checkpoint. I should recognise the spot. And the Chimera has to stay alive!
+
+
+---- Legendary Hunts ----
+
+
+
+ The Great Hunt: From Dusk till Dawn
+
+
+ I'm about to hunt Vlad and Drakul - the Bloodsucker brothers. They will only fight me during the night and I have to wear Forester's old coat.
+ Their lair is somwhere near an old tank. I first have to go through and old mine tunnel and then north east, deep into the forest.
+
+
+ Vlad and Drakul are dead. I should go see Forester to bring him the news.
+
+
+ The sun has risen and I failed to kill Vlad and Drakul today. I should go back to Forester.
+
+
+
+ The Great Hunt: Boar Hunting Season
+
+
+ Butcher wrote me that the hunting season for the Calydonian Boar is open.
+ To attract him, I should kill all the boars I find in the middle of the marshes - between the Pump Station, the village with the water tower and the machine yard the military sometimes uses.
+
+
+ The Calydonian Boar is dead. I should bring the news to Butcher.
+
+
+---- Alyosha Shyogolov----
+
+ A cry for help
+
+
+ An Ecologist called "Alyosha Shyogolov" is besieged by Snorks in the Agroprom train tunnel. He is calling for help.
+
+
+ Accompany Alyosha Shyogolov to the Agroprom Factory.
+
+
+ Tell Alyosha Shyogolov that you arrived.
+
+
+
+ A matter of recovery
+
+
+ Alyosha Shyogolov tasked me to recover some important documents from an Ecologist turned Zombie. He should be somewhere in southern Agroprom or northern Great Swamps.
+
+
+ I think I found the documents. I should bring them back to Alyosha in Agroprom.
+
+
+
+ Alyosha Shygolov: Making Trouble
+
+
+ Alyosha Shyogolov is making trouble with some bandits. He told them to meet him to the south of the Yanov Station. I should hurry to intervene.
+
+
+ I have to fight off the bandits Alyosha picked a fight with.
+
+
+ I fought the bandits off. I should find Alyosha at the Station.
+
+
+
+--- Vybegallo ---
+
+
+ Meet Vybegallo: science gone too far?
+
+
+ Vybegallo requested my urgent help. I should go see him.
+
+
+
+ Science breaking free
+
+
+ Vybegallo's experiment broke out and is lurking somewhere in the Agroprom Underground. Find and liquidate "him".
+
+
+ Vybegallo's experiment is dead. I should go see him.
+
+
+
+ Vybegallo: for science!
+
+
+ Vybegallo wants me to find him some mutant parts: two fracture hands, one bloodsucker heart and a pseudogiant body part: either an eye, an hand or it's hide
+
+
+
+ Vybegallo: for science?
+
+
+ Sakharov explained to me the danger of Vybegallo's experiments and he want me to bring him a cease order.
+
+
+ I brought the order to Vybegallo who didn't take the news lightly. I should go see Sakharov.
+
+
+ Tu quoque mon cher?
+
+
+ Sakharov wants Vybegallo dead. This mission is off the books, I have to be careful.
+
+
+ Vybegallo is dead, I should report to Sakharov.
+
+
+
+----- Market Share-----
+
+ An invitation
+
+
+ Someone wants to meet me in Yanov, in the tower north of the train station.
+
+
+
+ Market Share - The courriers
+
+
+ The courriers are about to set off. I should join Chris as soon as possible.
+
+
+
+ Market Share - The resupply
+
+
+ The resupply is about to happen. I should join Chris as soon as possible.
+
+
+
+ Startup - Corporate Spying
+
+
+ Harald Virtanen is dead and I have his PDA. I should bring it to Chris.
+
+
+ Harald Virtanen is dead. I have to pick up his PDA now.
+
+
+ Chris wants me to kill a mercenary called "Harald Virtanen" in the Waste Processing Station. \n \nAllegedly he likes to sneak out to have a drink late night, somewhere around the garages in the east-southern part of the compound.
+
+
+
+ Startup - Unforseen Impediment
+
+
+ I got the USB. I should bring it to Chris now.
+
+
+ Chris wants me to intercept the mercenary courrier. They will seek shelter somewhere in the south western part of Yanov - I should look for building or structures there.
+
+
+
+ Startup - Fake CV
+
+
+ I have to disguise myself as a Mercenary, infiltrate their base in Zaton and deliver the USB to an officer called "Aivar Kuusk".
+
+
+ I managed to fool the mercenaries. I should report back to Chris and thell him that everything is going as planned.
+
+
+
+ Startup - Asset Interception
+
+
+ The mercenaries will hand over supplies to their northern outpost in the car fortress to the east of the Yanov Station. Monk and his squad will assist me - they're waiting in the Yanov Station for me.
+
+
+ The guards are dead - I should bring Chris the supply crates.
+
+
+
+---Fake Artifact---
+
+
+ The Forgery
+
+
+ Sidorovich got scammed - find out who forged the fake [Artifact]
+
+
+
+
+
+
+
+
+
+ A debt unpaid
+
+
+ Take care of the bandits who Tambov owes money. They are waiting for him in the pig farm, in the south western part of Dark Valley.
+
+
+
+
+
+ A debt unpaid
+
+
+ Take care of the bandits who Tambov owes money. They are waiting for him in the pig farm, in the south western part of Dark Valley.
+
+
+ The bandits are dead - I have to return to Tambov to get my money.
+
+
+----- What a Night -----
+
+
+ What a night - what happend?
+
+
+ I woke up in fucking no-where - what happend last night?
+
+
+----- Rush to the North
+
+
+ Training the rookies
+
+
+ Fanatic asked me to train a rookie called Iliaz. He is in the brick house across Fanatic. I should bring him 20 buckshots, one Nemiroff, one Echo Detector and an Artifact container.
+
+
+ First I will show him how to hunt. There are boars to the east of the village.
+
+
+ Now I will show him how to find artifacts. I should bring him north of the anomaly field next to the village.
+
+
+ We arrived at the location. I should explain to Iliaz how to hunt for artifacts.
+
+
+ Iliaz set out to find an artifact. I should wait until he get's back.
+
+
+ Iliaz made his way back. I should speak to him.
+
+
+ Iliaz mastered the challenges. I should bring him back to the village.
+
+
+
+
+ Escort to Yanov
+
+
+ Sorokin asked you to escort him to Yanov Station.
+
+
+ Tell Sorokin that you arrived at your destination.
+
+
+
+ Gathering a team
+
+
+ Strelok is gathering a team. The first test is to reach Yanov Station and find him there.
+
+
+ I reached Yanov Station. I should try to find Strelok.
+
+
+
+ Howling in the Night
+
+
+ Bezsonik wants me to kill a pack of dogs. They should be to the west of the base, close to the path to the Truck Cemetery.
+
+
+ I killed the dogs. I should go back to Bezsonik
+
+
+
+
+ Strange Meat
+
+
+ Hawaiian wants me to find the culprit behind the strange meat. I will have to take my own notes.
+
+
+
+
+ It Fell of the Back of a Truck
+
+
+ Shlitzer wants me to take delivery of some supplies - I only have 5 days for it. I have to give the signal to Badger who is on guard duty from midnight to 4am. The signal is three short flashes with a flashlight next to the Jeep wreackage.
+
+
+ I gave the signal to Badger. Now he will meet me on the western end of the fence.
+
+
+ I took delivery of the bag. I should bring it to Shlitzer.
+
+
+
+
+ That is one.
+
+
+ That is two.
+
+
+ Three - that should have been the signal.
+
+
+ I somehow messed up the signal. I should wait a bit and start again.
+
+
+
+ Pecunia non olet
+
+
+
+
+ Lost during the hunt: Seryoga Lesun
+
+
+ I'm helping Trapper find hunters who died during their hunt and liquidate their killer. Seryoga went to the Cement Factory - I should search the vicinity.
+
+
+ I found Seryoga's body. Now I have to eliminate his killer.
+
+
+ I found Seryoga's body and liquidated his killers. I should report back to Trapper.
+
+
+
+ Lost during the hunt: Fasan Bedovy
+
+
+ I'm helping Trapper find hunters who died during their hunt and liquidate their killer. Fasan went to the Eastern tunnels - I should search the vicinity.
+
+
+ I found Fasan's body. Now I have to eliminate his killer.
+
+
+ I liquidated Fasan's killers. Now I have to find his body.
+
+
+ I found Fasan's body and liquidated his killers. I should report back to Trapper.
+
+
+ Lost during the hunt: Andrey Lopast
+
+
+ I'm helping Trapper find hunters who died during their hunt and liquidate their killer. Andrey went to the Kopachy - I should search the vicinity.
+
+
+ I found Andrey's body. Now I have to eliminate his killer.
+
+
+ I found Andrey's body and liquidated his killers. I should report back to Trapper.
+
+
+
+ The unwanted preacher
+
+
+ Sidorovich wants Gutalin gone.
+
+
+ Gutalin will preach no longer. Sidorovich will be happy to hear it.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+--------------------------
+----- Atomic Crusader ----
+--------------------------
+
+ Meet your Father
+
+
+ I should report to Father Charon.
+
+
+
+ The spearhead of the Monolith
+
+
+ My chapter has been assigned the retaking of the Kindergarten. I should prepare and find Blue Winter to wait for nightfall.
+
+
+ We set out to join our Brothers Melchior and Caspar. They should be waiting north of the Kindergarten.
+
+
+ Clear the Kindergarten with Blue Winter and Balthazar.
+
+
+ The Kindergarden is cleared. I should talk to Blue Winter.
+
+
+ Blue Winter has given me the honour to report our victory to Father Charon.
+
+
+
+
+
+
diff --git a/mods/[DEV] Brotherhood/gamedata/configs/text/rus/st_characters_brotherhood.xml b/mods/[DEV] Brotherhood/gamedata/configs/text/rus/st_characters_brotherhood.xml
new file mode 100644
index 00000000..7ccdab8a
--- /dev/null
+++ b/mods/[DEV] Brotherhood/gamedata/configs/text/rus/st_characters_brotherhood.xml
@@ -0,0 +1,234 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ .
+
+
+ .
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ˸
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+---- Atomic Crusader ----
+
+
+ Praxagoras
+
+
+
+ Blue Winter
+
+
+
+ Balthazar
+
+
+ Melchior
+
+
+
+ Caspar
+
+
+
+
diff --git a/mods/[DEV] Brotherhood/gamedata/configs/text/rus/st_dialogs_brotherhood.xml b/mods/[DEV] Brotherhood/gamedata/configs/text/rus/st_dialogs_brotherhood.xml
new file mode 100644
index 00000000..65e9135b
--- /dev/null
+++ b/mods/[DEV] Brotherhood/gamedata/configs/text/rus/st_dialogs_brotherhood.xml
@@ -0,0 +1,2662 @@
+
+
+----Stories from the Zone----
+
+------
+
+--
+
+ "" ?
+
+
+ ? - , . , - , , , . - . , , .
+
+
+
+ [] , ?
+
+
+ , . . . \n \n ? ... , C. ... . . , . , . , ? 60 , , , . ? , , . , - , ? , . , . : ", ".
+
+
+ ?
+
+
+ , .\n \n , , , . , ! , - , , . ? , , , . , , . , . \n \n - . - , . , . , , - , . , . , , - .
+
+
+ !
+
+
+ ! , . , ... , , , , . ! , , , ! , , , , - . , ? , . , - , ?
+
+
+ .
+
+
+ , - . : , - , , - ! , , ! , , , ! , , , ! - - , ! , , , , .
+
+
+ ?
+
+
+ , -, , , .
+
+
+ ?
+
+
+ , , , . , , , , , - , , , .
+
+
+ , , .
+
+
+ , . , , , ?
+
+
+ . ?
+
+
+ , . , . ? - .
+
+
+ ? - , . , !
+
+
+ , . , !
+
+
+
+
+ - .
+
+
+ , ! . . , .
+
+
+
+ - .
+
+
+ , ! , .
+
+
+
+ ?
+
+
+ , , . ?
+
+
+ . ?
+
+
+ "" . , .
+
+
+ . ?
+
+
+ , - , , .
+
+
+ - .
+
+
+ - , .
+
+
+
+ !
+
+
+ ! , ! - !
+
+
+
+ !
+
+
+ , ! , !
+
+
+ ?
+
+
+ , , ! ... , , , . !
+
+
+ , ? , ?
+
+
+ ... , - , ? \n \n, , ! ! !
+
+
+--Quest1 now 3--
+
+
+ , ?
+
+
+ - , , , . , - , , , , , . , , , , , , .\n \n , ?
+
+
+ , .
+
+
+ , .
+
+
+ . , . , , - . - , . , , - .
+
+
+ , .
+
+
+
+ .
+
+
+ , ?
+
+
+
+ .
+
+
+ ! , . , .
+
+
+-- Quest 2 --
+
+
+ - ?
+
+
+ , ...\n \n , "" , - , . , . , - . \n \n , - . , -. , , . , , , - , . ?
+
+
+ , .
+
+
+ .
+
+
+ ! -, "". , ! , , .
+
+
+ , , !
+
+
+
+ .
+
+
+ ?
+
+
+
+ .
+
+
+ ! , - ! , , . , - .
+
+
+
+-- Quest 3 --
+
+
+ , ?
+
+
+ . \n \n . , , ! , , . ?
+
+
+ .
+
+
+ .
+
+
+ ! - , ... , ! , , !
+
+
+ , , !
+
+
+
+ .
+
+
+ ?
+
+
+
+ .
+
+
+ ! , . , . , , . - , .
+
+
+
+
+-- Quest 4 --
+
+
+ , ?
+
+
+ . \n \n , . , ! , , , , ... , , ?
+
+
+ .
+
+
+ , .
+
+
+ ! , - , . , , - . , , . , .
+
+
+ , , !
+
+
+
+ .
+
+
+ ?
+
+
+
+ .
+
+
+ ! ... ! ?
+
+
+ ! ! ...
+
+
+ ? ... , , , ... - . \n \n ! , , , , "" . , , .
+
+
+
+ . , .
+
+
+ ! , . , ?
+
+
+ , ! , , !
+
+
+ ? ... ... - . \n \n ! , , , , "" . , , .
+
+
+---- Quest 5 ----
+
+
+ : , . , , , . , - .
+
+
+
+ : , . , , , . , - .
+
+
+
+ , ?
+
+
+ , - , , . - , - . , . , ... ... , . , , , ? , . \n \n ?
+
+
+ , , .
+
+
+ , . .
+
+
+ ! , . , - .
+
+
+ , . , , .
+
+
+
+ , ?
+
+
+ , - , , . - , - . , . , ... ... , . , , , ? , . \n \n ?
+
+
+ , , .
+
+
+ , . .
+
+
+ ! , . , - .
+
+
+ , . , , .
+
+
+--- Bellerophon ---
+
+ , , ?
+
+
+ , ?
+
+
+ , ... , , .
+
+
+ ""?
+
+
+ , , ... , , .
+
+
+ ? ?
+
+
+ , , . ? , , .
+
+
+ .
+
+
+ , .
+
+
+ , "". , .
+
+
+ , , "". , .
+
+
+
+ C?
+
+
+ , , . , .
+
+
+
+ !
+
+
+ , ! - . - !
+
+
+
+
+ , ?
+
+
+ , - , ... , , . - , , . , . -, - - ... , ... , , - , , ! ... ! , , ! , . , , ! , .
+
+
+ , !
+
+
+ , , !
+
+
+ , ! , - , .
+
+
+ - , , ! , - , , .
+
+
+
+ ...
+
+
+ ... ?
+
+
+ ... . - ... ... , !
+
+
+ ? ... ?
+
+
+ ... .
+
+
+ ... , . , , . , ! , . , . .
+
+
+ ?
+
+
+ , - , , . , , .
+
+
+
+
+
+--- Butcher Legendary ---
+
+
+ . ?
+
+
+ ? , ?
+
+
+ .
+
+
+ - , , , .
+ : , , . , , - .
+
+
+ ? ?
+
+
+ , , , , , - , . , . , . , , , , . - hybris - , "" . " ", , , , .
+
+
+ ?
+
+
+ - . \n \n , , , ! , . , , , , - ! , , . . \n \n, , . , .
+
+
+ ? ?
+
+
+ , , ""! , , "", . , , . , , , ! ! ! - , , , , , , . , ! ! , !
+
+
+ !
+
+
+ , ... . \n \n ""! , ! , , . , , , - . , , , , .
+
+
+ , ?
+
+
+ ... , , , . , . - . , , ! , ! - , . , ! ! \n \n , , ... , , , ! ... , " " . , . , - , , .
+
+
+ , , ...
+
+
+ ?
+
+
+ ... , ?
+
+
+ , ... , . , ... .
+
+
+ , , . , ?
+
+
+ , , , ...
+
+
+ . , ! , ! , "" . , , ! - , , ! - .
+
+
+ ! ! , .
+
+
+
+ , . .
+
+
+
+ . . , .
+
+
+
+ : , . .
+
+
+ : , .
+
+
+ : .
+
+
+ : : , ! !
+
+
+
+ .
+
+
+ ?
+
+
+ , .
+
+
+ , ?
+
+
+ - ?
+
+
+ ! , ! ! - - .
+
+
+ - .
+
+
+ .
+
+
+ . .
+
+
+ , ! , . .
+
+
+
+ , - . !
+
+
+ . .
+
+
+ ! !
+
+
+ ! ! !
+
+
+ !
+
+
+ , , ! ! , ! , - , , . , ! \n \n, , ! , , , , ... , , !
+
+
+--- ---
+
+
+ , .
+
+
+ , ! , .
+
+
+ , ?
+
+
+ . , . , . , , , , , . . , . , , ... ! ? , , , . \n \n, , , , . , , , - , , . , , .
+
+
+ .
+
+
+ ? !
+
+
+ " , ". , !
+
+
+ , . , , , , ! , - , . , ?
+
+
+ , , - - , ! - , . , , , , ! , - , . ?
+
+
+ , , ! , , ! ! , , , , . , , , , ! , - , . , ?
+
+
+ , .
+
+
+ , , , !
+
+
+ , .
+
+
+ , !
+
+
+ . , , , .
+
+
+ , , . ?
+
+
+ , , , , .
+
+
+ ? , !
+
+
+
+ .
+
+
+ ? ?
+
+
+
+ ? ??
+
+
+ , !
+
+
+ ** , , ... , - ...
+
+
+
+ .
+
+
+ ,?
+
+
+ .
+
+
+ .
+
+
+ .
+
+
+ , , .
+
+
+ . - , . , , , , . ! ! , , , !
+
+
+ , , .
+
+
+ .
+
+
+ ! , !
+
+
+ , .
+
+
+ , ! , , , .
+
+
+
+
+ ?
+
+
+ , . ?
+
+
+ , .
+
+
+ , .
+
+
+ .
+
+
+ - . , - - , .
+
+
+ , ? , - ! - .
+
+
+ - ? - !
+
+
+
+ ?
+
+
+ - . - - , .
+
+
+ ?
+
+
+ , , . , , , - , , .
+
+
+ , .
+
+
+ . , , .
+
+
+ .
+
+
+ , , .
+
+
+
+ - .
+
+
+ , !
+
+
+ , .
+
+
+ .
+
+
+ ? ?
+
+
+ .
+
+
+ - , .
+
+
+ ... - , !
+
+
+ - , .
+
+
+ ? ?
+
+
+ - , .
+
+
+ ... - , . "" , , .
+
+
+
+ ?
+
+
+ ... , . , , - . , , , , .
+
+
+ ?
+
+
+ ... , , . , , - .
+
+
+ , ?
+
+
+ , . , - "" ...
+
+
+ ? , , ?
+
+
+ .
+
+
+ , "" - , !
+
+
+ , - "", , .
+
+
+ ?
+
+
+ ! - !
+
+
+ ! !
+
+
+ , . , "" , .
+
+
+ ?
+
+
+ ? , "", , .
+
+
+ , .
+
+
+ .
+
+
+ .
+
+
+
+ . , .
+
+
+ , , .
+
+
+ ? , , 20.000 ?
+
+
+ .
+
+
+ , .
+
+
+ . , .
+
+
+ .
+
+
+
+ .
+
+
+ ?
+
+
+ . .
+
+
+ . , , "" . , , - .
+
+
+ .
+
+
+ , , , .
+
+
+ - .
+
+
+ , ! , .
+
+
+ .
+
+
+ ...?
+
+
+ , .
+
+
+ , .
+
+
+
+ .
+
+
+ , - "". - , .
+
+
+
+ .
+
+
+ - , "" . - , , .
+
+
+
+ : , . , !
+
+
+ : , - .
+
+
+ : , - , .
+
+
+ , , ... ? ? ?
+
+
+
+
+
+ , .
+
+
+ , , , , ... , , .
+
+
+ , , ?
+
+
+ ... , - - , . ... ... , , , ... . , , , ... , . , , .
+
+
+ ?
+
+
+ , , , , - . ... . ... , ? .
+
+
+ ? ?
+
+
+ , , . , , , . , , !
+
+
+ , .
+
+
+ .
+
+
+ , , .
+
+
+ ! , , !
+
+
+ , , , ! .
+
+
+ ? , , .
+
+
+ .
+
+
+ , .
+
+
+ , .
+
+
+ , ! , .
+
+
+
+ .
+
+
+ ?
+
+
+ . .
+
+
+ , . - , , . - .
+
+
+ .
+
+
+ , , , .
+
+
+ - .
+
+
+ , ! , .
+
+
+ .
+
+
+ ...?
+
+
+
+ , , !
+
+
+ , , !
+
+
+ !
+
+
+ , , , . , !
+
+
+
+
+ , .
+
+
+ ? ?
+
+
+ ? , , ?
+
+
+ , , .
+
+
+ , . .
+
+
+ ?
+
+
+ ? ? ? !
+
+
+ ... !
+
+
+
+ --... ... , ...
+
+
+ , -.
+
+
+ --...
+
+
+ ?
+
+
+ ---... , . , ! .
+
+
+ [] , , . , ?
+
+
+ ... ... \n \n... \n \n , ?
+
+
+ , . , , .
+
+
+ ? ? ... , ... \n \n... \n \n ... , . -, - ... , ... ... , ! ! !!!
+
+
+ , , ! , ?
+
+
+ , ... , .
+
+
+ ! , ... !!! !!! !!! !
+
+
+ [] ... , ?
+
+
+ ... \n \n... \n \n? ... , , ... ... ... ... \n \n... \n \n ... ... ! ... ... , ? ? ...
+
+
+ , ! ! ?
+
+
+ !!! ! ! , !
+
+
+ [] ... , , ?
+
+
+ ... ... \n \n... \n \n ... ... ... . ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
+
+
+ ! !!! !!! , !!!
+
+
+------ Forester -------
+
+
+ [ ] .
+
+
+ , " ". , ! , . , - "". , . - , ! , .
+
+
+ !
+
+
+ ! \n \n...\n \n, ! !
+
+
+
+ ?
+
+
+ , - .
+
+
+ ? ? ? ?
+
+
+ . , - - ... , , - - .
+
+
+ ? ?
+
+
+ , , , . , - , , .
+
+
+ ? ?
+
+
+ , . - , . , , , ... ...
+
+
+ ?
+
+
+ ? - ... , . , , . - , . , , . , - , , - . - . - , . , , . - , , , - . , . , - , , ... , , . , , - , ... , , . - , ... , , , . - . , - ! , ! , , ! , !
+
+
+ ... ? ?
+
+
+ ! , , - . , , . - , , . - . "" - , . , . - . , - ! - . . . , . , - , ... , . , . - . - . \n \n , - .
+
+
+ , - !
+
+
+ , - .
+
+
+ ! - , !
+
+
+ , , , ? - , !
+
+
+ - . .
+
+
+ , , , - ! , - , . - .
+
+
+ - , ! - .
+
+
+ - , ! , - - , . - , .
+
+
+ , ! - , , , . , , !
+
+
+ , ... . - , ! \n \n... \n \n , . , , , ... , ....
+
+
+ ! , .
+
+
+ , !
+
+
+ , , .
+
+
+ , .
+
+
+
+ .
+
+
+ ?
+
+
+ .
+
+
+ , .
+
+
+ , .
+
+
+ , , . - , . , , . , - , , - . - . - , . , , . - , , , - . , . , - , , ... , , . , , - , ... , , . - , ... , , , . - . , - ! , ! , , ! , !
+
+
+ , , . - , , . - . "" - , . , . - . , - ! - . . . , . , - , ... , . , . - . - .
+
+
+ [ ] , .
+
+
+ ! , , .
+
+
+ ... , , ... - - . - , . , , , , , ... - , , , , , . - ... , - ! , , , - ""... \n \ ?
+
+
+ ... , ! , , ... - - . - , . , , , , , ... - , , , , , . - ... , - ! , , , - ""... \n \ ?
+
+
+ , .
+
+
+ .
+
+
+ , ...
+
+
+ , , - . , , ! , . .
+
+
+ , !
+!
+
+
+ , - .
+
+
+
+
+
+ .
+
+
+ ?
+
+
+ .
+
+
+ .
+
+
+ .
+
+
+ ?
+
+
+ , : , , . - . - , . , , , , , ... - , , , , , . - ... , - ! , , !
+
+
+ , , . - , , . ? , , , . , - . - . , , , , - , . - ! , . ...\n \n , - .
+
+
+ . - .
+
+
+ - , . - .
+
+
+
+ ?
+
+
+ , ... . . - . . , - . - - .
+
+
+ .
+
+
+ .
+
+
+ .
+
+
+ .
+
+
+ - , , . , . - , - !
+
+
+ - . , , , ! , , .
+
+
+ , ... . , , ! , , , ! , , , ! , - - , , .
+
+
+ , , - !
+
+
+
+ - .
+
+
+ , , , ! . , .
+
+
+
+ ! !
+
+
+ ! ! ! !
+
+
+
+ : .
+
+
+ : , . , !
+
+
+ : , , . . .
+
+
+ : , . , .
+
+
+
+---- ----
+
+
+ : ! . - / . , .
+
+
+ : ! . - / . , .
+
+
+ : - / . - !
+
+
+
+ -- ?
+
+
+ ?
+
+
+ , !
+
+
+ - , , .
+
+
+ , , , ! !
+
+
+ ... ?
+
+
+ - - , , , .
+
+
+ ... , ?
+
+
+ , , ?
+
+
+ ! , . - ! , .
+
+
+ , , . ! , . - ! , .
+
+
+ , . ?
+
+
+ ? , !
+
+
+ . , - .
+
+
+ ? !
+
+
+ ! - - , ! !
+
+
+ ? ? : ! , , - . \n \n , - - , ! !
+
+
+ , , .
+
+
+ , .
+
+
+ ! - "" SCAR' .
+
+
+ ... , .
+
+
+ ! !
+
+
+
+
+ , .
+
+
+ , , , .
+
+
+ ... , .
+
+
+ ! , "" , ! , ...
+
+
+ C? ?
+
+
+ , , , ...
+
+
+ , ...
+
+
+ , , , ""?! , . ... ? , , ?
+
+
+ ?
+
+
+ , ! !
+
+
+ , ?
+
+
+ ... , . , . .
+ , , . , , ? ... , . ! "", !
+
+
+ , ?
+
+
+ , , , . \n \n , , . . - - . , , , ! , , - , .
+
+
+ , .
+
+
+ ? , . , . , , .
+
+
+
+ .
+
+
+ ! , ! - , , .
+
+
+ , ... ?
+
+
+ , ! ! : \n \n - . . . , . , "". , .
+
+
+ ...
+
+
+ ? , ? , .
+
+
+ , , , , . . "-", , . , - , , , , . .
+
+
+ , ! .
+
+
+ ? !
+
+
+ , ?
+
+
+ , - . , , " " - .
+
+
+ , ? , , ! , ! , , ... , , ! \n \n, - .
+
+
+
+
+--- ---
+
+-- 1--
+
+--
+
+
+ ? !
+
+
+ , . .
+
+
+ .
+
+
+ ?
+
+
+ ! , mon cher! ! , .
+
+
+ . ?
+
+
+ . .
+
+
+ ... , , mon cher. ... , ? , ? , ... , ... , ?
+
+
+ , ... , , mon cher! , ? , ? , ... , ... , ?
+
+
+ , ? , ... , ?
+
+
+ , .
+
+
+ . ?
+
+
+ ! , mon cher, - , ! , mon cher. , , , , . , . ... 10.000 ? ?
+
+
+ Mon cher, ? , , ! - , ! , mon cher. , , , , . , . ... 10.000 ? ?
+
+
+ , , .
+
+
+ , .
+
+
+ !
+
+
+ , , !
+
+
+
+ .
+
+
+ Oui mon cher, ?
+
+
+
+
+ .
+
+
+ Oui mon cher? - ?
+
+
+
+ .
+
+
+ .
+
+
+ .
+
+
+ .
+
+
+ .
+
+
+ , .
+
+
+ ?
+
+
+ , mon cher! !
+
+
+ , . ?
+
+
+ , mon cher! , !
+
+
+ .
+
+
+ , . .
+
+
+ ? ? ? ??? \n \n...\n \n ! , ! \n\n , !!! !!! !!!
+
+
+ ...
+
+
+
+ ?
+
+
+ , mon cher, ... . , , oui mon cher, ! ...
+
+
+ ...?
+
+
+ ! , , !
+
+
+ ""?
+
+
+ , - ?
+
+
+ , - ! , , ! , mon cher? \n \n !
+
+
+ , , ... , ... , ?
+
+
+ ? ?
+
+
+ ? , mon cher, !
+
+
+ "" ?
+
+
+ , mon cher, . , ... n'est-ce pas?
+
+
+ ""?
+
+
+ , mon cher! , !
+
+
+ , , ? ?
+
+
+ , , ... , , ? , mon cher, !
+
+
+ , ?
+
+
+ Mon cher, . , ! - ! , . , , , - , n'est-ce pas mon cher?
+
+
+ ""?
+
+
+ - .
+
+
+ ?
+
+
+ ! , - .
+
+
+ , .
+
+
+ .
+
+
+ , mon cher, ! !
+
+
+ , mon cher, !
+
+
+
+ "".
+
+
+ , mon cher?
+
+
+ .
+
+
+ .
+
+
+ ! !
+
+
+ , mon cher, !
+
+
+
+ "".
+
+
+ , , mon cher!
+
+
+ , , , !
+
+
+ , , , ? ! , , ?
+
+
+ ? - ?
+
+
+ Mon cher, ! ! - ! , mon cher! ! ! , - , . ! ... . - , ... . , mon cher!
+
+
+ , , , .
+
+
+ , . , . - , ... !
+
+
+ - .
+
+
+ ...
+
+
+-the others-
+
+
+ ""?
+
+
+ ? , , ... - ?
+
+
+ , .
+
+
+ ... - ?
+
+
+ , .
+
+
+ ... , , - , . , ... , .
+
+
+ .
+
+
+ ? , . ?
+
+
+ .
+
+
+ ? , , , - ...
+
+
+ .
+
+
+
+ ... ?
+
+
+
+ , . ?
+
+
+
+ ? !!! \n \n ... \n \n , " " - " ", , . , , . , , , ... . \n \n , , . - ! , ... , ? \n \n , ! \n \n, , , . , , , . \n \n ?
+
+
+ , .
+
+
+ , .
+
+
+ , .
+
+
+ .
+
+
+
+ .
+
+
+ ? ?
+
+
+ , - , .
+
+
+ ... , , : , , .
+
+
+ ?
+
+
+ , ... \n \n , - .
+
+
+ ? ?
+
+
+ , . , , , . - , .
+
+
+
+ ! : \n \n ! \n \n, , !
+
+
+
+ . [ ]
+
+
+ ? \n \n...\n \n ... \n \n , , , , : , , ! , . ! - , : . . \n \n , . . , ?
+
+
+ .
+
+
+ , .
+
+
+ . , .
+
+
+ . , .
+
+
+
+ .
+
+
+ , .
+
+
+
+ : Mon cher, , ... ?
+
+
+---- Sidorovich----
+
+
+ , , ?
+
+
+ , ... .
+
+
+ ?
+
+
+ - .
+
+
+ ? ?
+
+
+ "". , , . . \n \n - , , . , , . , , . \n \n ?
+
+
+ . " "?
+
+
+ , - ? - . - . \n \n ?
+
+
+ ?
+
+
+ ... , . , , . \n \n ?
+
+
+ ?
+
+
+ , , . \n \n ?
+
+
+ .
+
+
+ , ?
+
+
+ ?
+
+
+ ? ?
+
+
+ , . , .
+
+
+ , ?
+
+
+ , . , , .
+
+
+ ?
+
+
+ , , ? ! , . \n \n ?
+
+
+ .
+
+
+ , ? ?
+
+
+ !
+
+
+ , .
+
+
+ .
+
+
+ , , . .
+
+
+ ! , , !
+
+
+ . , , .
+
+
+
+ .
+
+
+ , ?
+
+
+ . , .
+
+
+ . .
+
+
+ . .
+
+
+ .
+
+
+ . , . , " ", . , , . , . \n \n ?
+
+
+ . , . , " ", . , , . , . \n \n ?
+
+
+ ? , -. , , . , - " ". ?
+
+
+ , , ! , !
+
+
+ . .
+
+
+ ! .
+
+
+ , . ?
+
+
+ .
+
+
+ ?
+
+
+
+ , .
+
+
+ ! . , ! ! , . , !
+
+
+ > , .
+
+
+ ! . , ! ! , . , !
+
+
+
+
+
+ ! !!!
+
+
+ !!!
+
+
+
+
+ , , .
+
+
+ , ?
+
+
+ , , - ? , , , . , , ?
+
+
+ , , .
+
+
+ , .
+
+
+
+ , , !
+
+
+ , . !
+
+
+ ?
+
+
+ .
+
+
+
+ ?
+
+
+ , .
+
+
+ . " " ?
+
+
+ . ?
+
+
+ , . "" .
+
+
+ . , " " ...
+
+
+ , . , . : - . ?
+
+
+ , .
+
+
+ ? ...
+
+
+ , , ? - , . \n \n, , . ?
+
+
+ !
+
+
+
+ ! !
+
+
+ , , ! , !
+
+
+ , , ! ?
+
+
+ .
+
+
+
+ , , , .
+
+
+ , , .
+
+
+ [ ] , .
+
+
+ [] , .
+
+
+ [] , .
+
+
+ [] , .
+
+
+ , !
+
+
+ , , .
+
+
+ , .
+
+
+---- What a Night ----
+
+
+ , , ?
+
+
+ , .
+
+
+ , , ?
+
+
+ , , ?
+
+
+ , , ?
+
+
+ , , !
+
+
+ !
+
+
+ , !
+
+
+ , !
+
+
+ , .
+
+
+ ... \n \n, , !
+
+
+ , .
+
+
+ !
+
+
+ , .
+
+
+ , , .
+
+
+ . , ?
+
+
+ ! . , . , - , , . , , : - , ? , - - , ! , , -, . , , ... , , . ! - , , , . , , : . - . , , ... ! . , , ! , . , , . ... , , , "", , ! ?
+
+
+ ! !
+
+
+ , ! !
+
+
+ !
+
+
+ , , ! , , !!
+
+
+ ! !
+
+
+ , , ..
+
+
+ , !
+
+
+ !
+
+
+ , , !
+
+
+ , , xcvb!
+
+
+ , !
+
+
+
+ , , ? -!
+
+
+ , , , ! , . , , , .
+
+
+ ?
+
+
+ , , , . , ...
+
+
+
+
+
+ .
+
+
+ !
+
+
+
+
+---- Rush to the North and Brainscorcher reactions ------
+
+
+ , , ?
+
+
+ , . " ", . , , . , , , . , , .
+
+
+ , ?
+
+
+ ? ! , ? , , ! , --, ? - 20 , "", ""?
+
+
+ , , , .
+
+
+ ! , ..
+
+
+ ? .
+
+
+ , ... .
+
+
+ , .
+
+
+ , ...
+
+
+
+ , , , .
+
+
+ , ! ?
+
+
+ . , .
+
+
+ , .
+
+
+ , - .
+
+
+ , .
+
+
+
+ , , .
+
+
+ . ?
+
+
+ . , - , .
+
+
+ , .
+
+
+
+ . , . , .
+
+
+ .
+
+
+ ? , , .
+
+
+ , .
+
+
+ . , . , . .
+
+
+ .
+
+
+ . , . .
+
+
+ .
+
+
+ .
+
+
+ -, .
+
+
+
+ ?
+
+
+ , ! ?
+
+
+ ? ! ! , , .
+
+
+ ! !
+
+
+ [] , . . , 1000 .
+
+
+ ... , , .
+
+
+ .
+
+
+ , .
+
+
+
+ . , !
+
+
+ ! !
+
+
+
+---- Shlitzer
+
+
+ And Stalker, are you happy with your pay?
+
+
+
+ Did the man in the bunker scam you Stalker?
+
+
+ He send me on an assault for only 2.000 roubles.
+
+
+ No, he payed me well.
+
+
+ Ha! Of course he did. Sidorovich taking advantage of rookies like you, a story as old as the Zone itself. But you know, not everyone here pays that miserably.
+ I might have a proposition for you if you're interested.
+
+
+ That would be the first time he would pay anyone well. Maybe you don't know the worth of your labour yet...
+ If you want to find out, I might have a proposition for you.
+
+
+ I'm always interested in some work.
+
+
+ I don't know.
+
+
+ Good, good. But let's not talk here. Follow me.
+
+
+ If you come to a decision, find me in the there to my left.
+
+
+ ...
+
+
+
+ What kind of work do you propose?
+
+
+ That of the sensitive kind - discretion will be necessary. But I also pay accordingly. Can you be discrete?
+
+
+ Depends. What is it you want me to do?
+
+
+ I know a soldier at the Southern Checkpoint, he goes by the nickname Badger. We sometimes exchange favours, and recently he managed to get his hands on some weapons and ammunition - I want you to meet him and take delivery of the goods.
+ He has the night shift this week, so it has to happen during the next days.
+
+
+ Why does this require discretion?
+
+
+ Because Sidorovich does not tolerate business with the Army in his back. He has some friends among the officers there who also like to take a cut - unnecessary expenses.
+ But I like to cut out the middle-men - it's more profitable.
+
+
+ Why don't you do it yourself?
+
+
+ Because it's dangerous! If any other guard sees you, they will open fire! But don't worry, I will compensate the risks you take. And besides, if you stick to the plan, there should be no real danger.
+
+
+ What is the plan?
+
+
+ The plan is rather simple, but requires some balls. As I said, my contact has guard duty from midnight to 4 a.m. and as such he cannot leave his post except to piss, which he will do when you give him the signal.
+ On the road leading to the checkpoint you'll see a jeep wreckage - when you reach it you'll have to flash your torch three times in rapid succession! Don't worry if you mess it up, wait a bit and do it again.
+ The guard will be looking out for such a signal and when he sees it he'll come down and meet you at the most western part of the fence, to he right of the checkpoint.
+ Be carefull though when approaching it - there might be some soldiers lingering in the vicinity. He'll throw you the package, and you come back with it and I'll give you 8.000 roubles - simple as that! \n \nWhat do you say?
+
+
+ Alright, sounds good.
+
+
+ Great! Remember, you have five days to do it.
+
+
+ Sounds rather risky... I have to think about it.
+
+
+ Alright, but time is running out. Don't take too long.
+
+
+
+ About your job.
+
+
+ Yes?
+
+
+ I'll do it.
+
+
+ Great! But it has to be soon or else my guy is not on guard duty anymore.
+
+
+ I'll do it.
+
+
+ You fool, I had to find someone else or my guy wouldn't be on guard duty anymore! \n \nBut if you're seeking work, there is another task I can use your help.
+ I need someone to bring the supplies to a buyer - does it sound as something you can do?
+
+
+ Alright, I can do it now.
+
+
+ I have to think about it.
+
+
+ Good. Here, take the bag and bring it to a guy called "Maksim Ironchain" - don't shit your pants at that name, if you stick to the deal you have nothing to fear. You will find him in the Abandoned Farmstead, east of the Farm.
+ He will give you a case, which you will bring back to me.
+
+
+ Then think about it fast, or else I will have to find someone else to do it.
+
+
+ Can you remind me the plan again?
+
+
+
+ The plan is rather simple, but requires some balls. As I said, Badger has guard duty from midnight to 4 a.m. and as such he cannot leave his post except to piss, which he will do when you give him the signal.
+ On the road leading to the checkpoint you'll see a jeep wreckage - when you reach it you'll have to flash your torch three times in rapid succession! Don't worry if you mess it up, wait a bit and do it again.
+ The guard will be looking out for such a signal and when he sees it he'll come down and meet you at the most western part of the fence, to he right of the checkpoint.
+ Be carefull though when approaching it - there might be some soldiers lingering in the vicinity. He'll throw you the package, and you come back with it and I'll give you 8.000 roubles - simple as that!
+
+
+ That's all.
+
+
+ Alright.
+
+
+
+ You're a friend of Shlitz? Here - catch the bag!
+
+
+ Remind him to pay me fast - I have some palms to grease here, they already become impatient.
+
+
+ And now go - quickly!
+
+
+
+
+ Here is your package.
+
+
+ Perfect! Your money Stalker! Nice doing business with you.
+
+
+ Badger reminds you to pay him in the coming days - he has some palms to grease.
+
+
+ Yes, of course! But first we need to sell this stuff in order to get the necessary liquidities. I might need your help to do it - of course you'll be paid! Take some rest and come see me when you're ready.
+
+
+
+ You said you had another job?
+
+
+ Yes! I need you to bring the bag to a buyer! A guy called "Maksim Ironchain" - don't shit your pants at that name, if you stick to the deal you have nothing to fear. You will find him in the Abandoned Farmstead, east of the Farm.
+ He will give you a case, which you will bring back to me. It's as easy as it sounds! Can you do it?
+
+
+ Alright, I can do it now.
+
+
+ I have to think about it.
+
+
+ Perfect. Take the bag and bring me back the case!
+
+
+ Then think about it fast, or else I will have to find someone else to do it.
+
+
+
+ You're Shlitzer's guy? Do you have the bag?
+
+
+ Yeah. Do you have the case?
+
+
+ Of course. So what are we waiting for? Are we doing it?
+
+
+ Sure. Let's do it.
+
+
+ I don't think so.
+
+
+ You see! That was quite easy hahaha. No reason to be so tense. \n \nOne moment Stalker, you seem to be familiar. Aren't you one of the Stalkers which took back the railway bridge?
+
+
+ Don't be stupid. We won't hesitate gunning you down.
+
+
+ No, you are confusing me with someone else.
+
+
+ What about it? Got a problem with that?
+
+
+ Are you sure? ... Don't worry about it - now goodbye Stalker, maybe until next time!
+
+
+ Relax Stalker hahaha. You did me a big favour - you eliminated my competition! Here, a sign of my appreciation! Now goodbye Stalker, maybe until next time!
+
+
+ I was only kidding. Here, catch the bag. Now give me the case!
+
+
+ Fuck you!
+
+
+ You have a strange sense of humour Stalker...\n \nOne moment, you seem to be familiar. Aren't you one of the Stalkers which took back the railway bridge?
+
+
+ But... you guys are bandits!
+
+
+ And what of it? Don't tell me you're shitting your pants hahaha! Now, let's do it, we don't have all day.
+
+
+ What will you do with the weapons?
+
+
+ What a stupid question. Don't abuse my patience Stalker, are we doing the deal or not?
+
+
+
+ Where the fuck you think you're going? Kill him!
+
+
+
+ I got your
+
+
+
+ What??? What the fuck??? Who is the moron who did this?
+
+
+ Damn! No brains but a lot of balls...
+
+
+ Fuck! Are we now stuck here?
+
+
+ Looks like it... better to lay low for a while...
+
+
+ Shit!
+
+
+ What??? What the fuck??? Who is the moron who did this?
+
+
+
+
+ Sidorovich: %s !!!! Into my office!!! NOW!!!!!
+
+
+
+
+
+
+
+
diff --git a/mods/[DEV] Brotherhood/gamedata/configs/text/rus/st_dialogs_brotherhood_ac.xml b/mods/[DEV] Brotherhood/gamedata/configs/text/rus/st_dialogs_brotherhood_ac.xml
new file mode 100644
index 00000000..48d3bd60
--- /dev/null
+++ b/mods/[DEV] Brotherhood/gamedata/configs/text/rus/st_dialogs_brotherhood_ac.xml
@@ -0,0 +1,180 @@
+
+
+----Stories from the Zone----
+
+--- Atomic Crusader ---
+
+ You wanted to speak to me, Father?
+
+
+ Yes young Brother, I decided to assign you to Blue Winter's chapter. Report to your Brother upstairs, he will fill you in about the details.
+ And remember, the Monolith is always watching.
+
+
+ Alright Father.
+
+
+ For the Monolith.
+
+
+
+ Father Charon sends me.
+
+
+ Good, welcome Brother! I am Blue Winter, and our chapter is a reconnaissance unit. You will meet the other Brothers of our chapter shortly, but first I want to brief you on our mission.
+ \nFather Charon wants to take back the Kindergarten in the Outskirts in order to use it as a forward base. Our chapter has been assigned this task, and our Brothers Melchior and Caspar are already there scouting out the building.
+ Accodring to them, the building is a mutant den at the moment, so prepare for such an encounter. We will do it during the night, in order to take the enemies of the Monolith by surprise - they shall only know our intentions when we already have a foothold there.
+ \n \nI got the authorisation to allow you an advance in order to supply yourself. Prepare for the mission, we will set out at nightfall.
+
+
+ Understood.
+
+
+ Very well Brother. Prepare and find me, we will wait together for nightfall. In the meantime you can already get acquainted with our Borther Balthazar here, the pillar of our chapter.
+ He fills out the position of fire support.
+
+
+
+ About our mission.
+
+
+ Yes?
+
+
+ I am ready.
+
+
+ Very well, let's wait together for the night. Then, when the sun is down, we set out. You will lead the way, Brother.
+
+
+ I am ready.
+
+
+ The night already set in, let's move out. Lead the way, Brother.
+
+
+ For the Monolith.
+
+
+ I still need to do some preparations.
+
+
+ Alright.
+
+
+
+ Blue Winter: What is your report?
+
+
+ Melchior: A couple of snorks and a Poltergeist. No enemy activity.
+
+
+ Blue Winter: Alright, that should be manageable.
+
+
+ Blue Winter: Melchior and Caspar, you stay outside and guard the entrance.
+
+
+ Blue Winter: Balthazar and %s, you come with me.
+
+
+ Blue Winter: Brother %s, you take point.
+
+
+ Blue Winter: For the Monolith!
+
+
+
+ How do we reach our Brothers?
+
+
+ When we are at the Outskirts we approach the Kindergaten from the north. We'll have to bypass the Vulcano anomaly and then our Borthers should wait for us close to our target.
+
+
+
+ That seems to have been all of them.
+
+
+ Indeed. Excellent work Brother! You did great on our first mission. I want you to have the honour to report this victory to Father Charon, he will send further troops to fortify our position here.
+ Use the opportunity to stock up on supplies, and when you are ready, come see me and I will give you your next mission briefing.
+
+
+
+ Father, our chapter has succesfully claimed the Kindergarten for the Monolith.
+
+
+ Excellent work Brother! I will immediatly give the order to send more troops there. Here some money to stock up on supplies. \n \nNow go and spread the glory of the Monolith!
+
+
+
+
+
+
+ I see four Stalkers leaving their base. They look like serious guys, armed to the teeth.
+
+
+ Good job Brother! Keep an eye on them and keep me informed about their intentions.
+
+
+ They passed the apartment complex and seem to turn south.
+
+
+ Good! So no need to alarm the troops.
+
+
+ I'll soon loose sight of them!
+
+
+ Brother Melchior is already on the job. Keep your position and wait for instructions.
+
+
+ I just saw them entering the Department Store.
+
+
+ Excellent job Brothers! That's an excellent place to surprise them - I have a plan.
+
+
+ Brother %s, come join our squad. We will wait for you to the south of the Kindergarten, between the Grocery Store and the apartment buildings.
+
+
+ I reached the exit of the tunnel!
+
+
+ Perfect. We launch our attack, you take them from behind! For the Monolith!
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/mods/[DEV] Brotherhood/gamedata/configs/text/rus/st_dialogs_brotherhood_ms.xml b/mods/[DEV] Brotherhood/gamedata/configs/text/rus/st_dialogs_brotherhood_ms.xml
new file mode 100644
index 00000000..33172a09
--- /dev/null
+++ b/mods/[DEV] Brotherhood/gamedata/configs/text/rus/st_dialogs_brotherhood_ms.xml
@@ -0,0 +1,629 @@
+
+
+----Stories from the Zone----
+------Market Share ---------
+
+
+ , . , . , .
+
+
+
+ , ?
+
+
+ . ?
+
+
+ .
+
+
+ , %s. - .
+
+
+ ?
+
+
+ xcvb, NLTP-Ashes, GhenTuong, RavenAscendant, igigog demonized.
+
+
+ . .
+
+
+ ?
+
+
+ , . .
+
+
+ , ? , , . \n \n ? - .
+
+
+ ? ?
+
+
+ , - ? ? .
+
+
+ - ?
+
+
+ , ٨ . . \n \n ? - .
+
+
+
+
+
+
+ , .
+
+
+
+
+
+
+ " " " "?
+
+
+ ... , . - - .
+
+
+ ?
+
+
+ , , , . , - , . - - , , . , , - , , , . , , , , . - , .
+
+
+ ?
+
+
+ .
+
+
+ , . , , . . : , , , . : ! , , : " ".
+
+
+ , . \n \n . : , , , . : ! , , : " ".
+
+
+ ?
+
+
+ ! : ? . - ? . - ? . \n \n , , : .
+
+
+
+
+ .
+
+
+ , ?
+
+
+ . ?
+
+
+ , . .
+
+
+ . - - , , , . - - . , , , , - . , , . .
+
+
+ .
+
+
+ .
+
+
+
+ ...??? \n \n, , . -, ?
+
+
+ . -, ?
+
+
+ ? - , !
+
+
+ ? , . ?
+
+
+ . , , , : \n \n ! , , . , ! \n \n : , , , . - , , . ! , . \n \n ? ?
+
+
+ ? ?
+
+
+ , ?
+
+
+ , .
+
+
+ .
+
+
+ .
+
+
+ , , .
+
+
+ , , .
+
+
+ , . , - .
+
+
+ , , - .
+
+
+ ? . ? ! , .
+
+
+ -, .
+
+
+ , .
+
+
+ .
+
+
+ , - . .
+
+
+ , .
+
+
+ , .
+
+
+ , . . , , , : \n \n ! , , . , ! \n \n : , , , . - , , . ! , . \n \n ? ?
+
+
+
+ , ?
+
+
+ . , . , : - . : - . - , 100.000 . , . \n \n - : !
+
+
+ ? ?
+
+
+ . ? , , - . . , - , ! , . , - , . , , . \n \n : , - . , . ! , . , , !
+
+
+ ?
+
+
+ . , , ! ! !
+
+
+ , ?
+
+
+ , ! , . , , . : ! , ! \n \n .
+
+
+ , ?
+
+
+ , . , - . , -, . , - , , .
+
+
+ ? , ?
+
+
+ , - , . : , , , .
+
+
+ ?
+
+
+ ... . , .
+
+
+ ? , ?
+
+
+ , - , , , .
+
+
+ , ?
+
+
+ -, . . , , - .
+
+
+
+ ?
+
+
+ , .
+
+
+ .
+
+
+---- Quest 1 ----
+
+
+ ?
+
+
+ - " ". : .
+
+
+ ? ?
+
+
+ - . - , , - ! - - . : - , . , - , ! ! : , ! . , , , "" - . \n \n?
+
+
+ .
+
+
+ , .
+
+
+ , , .
+
+
+ , .
+
+
+
+ .
+
+
+ ! - , . : . , .
+
+
+
+
+ ? , ?
+
+
+ .
+
+
+ , , ?
+
+
+ ...
+
+
+--- Quest 2 part 1 ---
+
+
+ : , . !
+
+
+
+ : ! , ...
+
+
+
+ ?
+
+
+ - , . .
+
+
+ : . - - .
+
+
+ , ?
+
+
+ , . - , - -. , , .
+
+
+ ?
+
+
+ ? - , - .
+
+
+ , .
+
+
+
+ , , USB. . , USB !
+
+
+ ! , \n \n...\n \n, USB. " ". - . - , , .\n \n ! : - ! , - , . , USB . .
+
+
+
+
+ USB! ?
+
+
+ ! , ! , - !
+
+
+--- Quest 2 part 2 ---
+
+
+ ? ?
+
+
+ - USB- . , ?
+
+
+ ? , ? .
+
+
+ - .
+
+
+ ? ?
+
+
+ - , , .
+
+
+ , ? , . , , .
+
+
+ . .
+
+
+ ! ?
+
+
+
+ , , . , .
+
+
+ ?
+
+
+ , , , , . , .
+
+
+ , . - .
+
+
+---- Quest 3 ----
+
+
+ : , - . - .
+
+
+
+
+ .
+
+
+ , . , - !
+
+
+ , ̸ - . - . , .
+
+
+ . ?
+
+
+ - . - - , . , . - , . - !
+
+
+
+ : , ! - !
+
+
+
+
+
+ .
+
+
+ ?
+
+
+ [ ] , , , .
+
+
+ .
+
+
+ !
+
+
+ .
+
+
+ !
+
+
+ ! - . , , - . [ ]
+
+
+
+
+
+ , . , ?
+
+
+ , .
+
+
+ , .
+
+
+ , , !
+
+
+ ...
+
+
+----Stage 4----
+---Takeover---
+--Marlo--
+
+
+ , ?
+
+
+ , , "".
+
+
+ ""? ?
+
+
+ "" - : . : , "", - , - , . , - , . - .
+
+
+ ?
+
+
+ , - "" , . , . , - , , . , , , "" - .
+
+
+ ?
+
+
+ - , . , - .
+
+
+ ?
+
+
+ "" : . - , . , . \n \n - , , , .
+
+
+ , ?
+
+
+ , : . ! , , .
+
+
+ , -?
+
+
+ , ? , , -? , , ? , , ! - , - , .
+
+
+ , - .
+
+
+ , . , , , "". , , .
+
+
+ , - . ?
+
+
+ . \n \n... \n \n, ! , , !
+
+
+ , ?
+
+
+ - , . , - .
+
+
+ , .
+
+
+ ?
+
+
+ , ?
+
+
+ ? - .
+
+
+ , "".
+
+
+ , "".
+
+
+
+
+
+
+ , . , . . , , , . , . -, - , , "" . . \n
+ . \n
+ . \n
+ . , . \n
+ . \n
+ . \n
+ , , . !
+ , . : ' , '
+' , , , '.
+' , , .
+ , , , '.
+', , , '.
+ , ". , !' \n
+
+ , , .
+' !!!' - . ' , , , '
+' , , , '
+ ?" - . ' ...' - . ' , !'
+
+
+ .
+
+
+ .
+
+
+ , .
+
+
+ , , . , .
+
+
+
+
+------ Sidorovich -------
+
+
+ , , .
+
+
+ ??? ?
+
+
+ - . .
+
+
+ ! , ... , , ?
+
+
+ , , , - .
+
+
+ , , - . , - .
+
+
+ ! , , ! , !
+
+
+ , ... ! , , ! - ...
+
+
+ ?
+
+
+ , , . , , ! , , , ! , , , ! ! \n \n, , , ... ... \n \n, , , ! - , !
+
+
+ , ... ! , , ! !
+
+
+ ?
+
+
+
+
+
+
+
+
+
+
diff --git a/mods/[DEV] Brotherhood/gamedata/configs/text/rus/st_dialogs_brotherhood_nr.xml b/mods/[DEV] Brotherhood/gamedata/configs/text/rus/st_dialogs_brotherhood_nr.xml
new file mode 100644
index 00000000..7aa3971d
--- /dev/null
+++ b/mods/[DEV] Brotherhood/gamedata/configs/text/rus/st_dialogs_brotherhood_nr.xml
@@ -0,0 +1,1574 @@
+
+
+----Stories from the Zone----
+
+
+---- ----
+
+
+ , ?
+
+
+ ! "", , ! - , ! - ! \n \n , ! , , , .
+
+
+---- ----
+
+-- --
+
+
+ , !
+
+
+ ? ? ?
+
+
+ ! , " "! , .
+
+
+ , ? ? \n \n , . !
+
+
+ ...
+
+
+ , ... , - , . \n \n , .
+
+
+
+ , , , .
+
+
+ ? ? ?
+
+
+ , , " "! 10000 ...
+
+
+ , . , , . . , ?
+
+
+ , .
+
+
+ . .
+
+
+
+
+
+
+
+ , , !
+
+
+ " ", , !
+
+
+ , ...
+
+
+ ?
+
+
+ , , .
+
+
+ ...! ! ! ! \n \n ?
+
+
+ ! . C, . , ? , ... , ! , , .
+
+
+ , , - . , ! \n \n, , . , , ! , , . ?
+
+
+ , ! , . \n \n , ! , ?
+
+
+ ? ? ?
+
+
+ ?
+
+
+ ? , - . ?
+
+
+ ... , , , . , . , , , ! ! ! , .
+
+
+ ... , , , , , . , , ?
+
+
+ ... , , , . , ?
+
+
+ ?
+
+
+
+ , , .
+
+
+ , , .
+
+
+ , , , ! .
+
+
+ . . " ", ? , ! , , ! , , , . .
+
+
+ , - , ? . " ", ? , ... , ! , ! .
+
+
+
+ , , ...
+
+
+ ? , ? ? ? ?
+
+
+ , , .
+
+
+ , , , .
+
+
+ , ...
+
+
+
+ ! , , !
+
+
+ ... , , , ... , ! , , !
+
+
+ ? ... ?
+
+
+ , .
+
+
+ , , , .
+
+
+ ? , , ! , , ! !
+
+
+ ? ... ... , ! ... , , , ... , !
+
+
+ .
+
+
+ , , !
+
+
+
+ .
+
+
+ , , ?
+
+
+ , .
+
+
+ , .
+
+
+ , !
+
+
+ , , !
+
+
+
+ .
+
+
+ ! . .
+
+
+ , , - .
+
+
+ !
+
+
+
+ , , , , , .
+
+
+ ?
+
+
+ , . , .
+
+
+ ... ! ?
+
+
+ , ...
+
+
+ ! ! !!! ... - ... , ! ... !
+
+
+ [8.000 ] , ... , , ...
+
+
+ , ... , ...
+
+
+ -... , ... 50.000 ... , , ...
+
+
+ ...
+
+
+
+
+ ?
+
+
+ ? !
+
+
+ ? , .
+
+
+ ?
+
+
+ , ! ! \n \n ? ? ?
+
+
+ , ! ! \n \n ?
+
+
+ , .
+
+
+ ?
+
+
+ ?
+
+
+ ? - ! , ! , , - . \n \n : ? ? ?
+
+
+ ? - ! , ! , , - .\n \n ?
+
+
+ " " - , . , - , " ", . , , , . ?
+
+
+ . , " ". ?
+
+
+ , , ?
+
+
+ " "? , . - ?
+
+
+ . ? \n \n, , . , , - " ". ?
+
+
+ ? , ? , . ?
+
+
+ ? ?
+
+
+ - ?
+
+
+ ? ?
+
+
+ - ?
+
+
+ , .
+
+
+ ...
+
+
+ , - , ... " " - . , , . \n \n, ?
+
+
+ . , - , , . .
+
+
+ ?
+
+
+ ?
+
+
+ , ?
+
+
+ ""! , . , , , !
+
+
+ , . , . , -, -. , , 10.000 .
+
+
+ , . , . , -, -. , , 10.000 \n \n ? , , .
+
+
+ . , , . - . , , .
+
+
+ . , , . - . , , . \n \n ? , , .
+
+
+ [10.000 ] !
+
+
+ , .
+
+
+ , , ! - , . !
+
+
+ , . , !
+
+
+ !
+
+
+ .
+
+
+ , , .
+
+
+ .
+
+
+ , .
+
+
+ , ! - " "!
+
+
+ ... ?
+
+
+ ? , ! , " ", ! , ?
+
+
+ ? ?
+
+
+ - , ?
+
+
+ -?
+
+
+ , , . .
+
+
+ -? ? , !
+
+
+ , - ? !
+
+
+ -? !
+
+
+ , . !
+
+
+ [20.000 ] , !
+
+
+ , .
+
+
+ , .
+
+
+
+ , ?
+
+
+ ? . ?
+
+
+ . , .
+
+
+ ? , , ... ... ... "" 10.000 ?
+
+
+ . ?
+
+
+ ** , - , . , , , , , .
+
+
+ ! ?
+
+
+ , , , . , , ...
+
+
+ ?
+
+
+ - , . , -, , ... , .
+
+
+
+-------- ---------
+
+
+ : , , , ! ٸ - ! !
+
+
+ : , , ?
+
+
+ : ! !
+
+
+ : , ?
+
+
+ : ? , ! , !
+
+
+ : , , .
+
+
+ : , , - !
+
+
+ : , !
+
+
+ : , ! ! , !
+
+
+ : , , !
+
+
+ : , .
+
+
+ : ? !
+
+
+
+ : , , ! !
+
+
+
+ , ?
+
+
+ , %s, , ! , - , ! ?
+
+
+ , ! ! , !
+
+
+ , , ! ! , , ! \n \n, , , ! , !
+
+
+ , , ! ...
+
+
+
+ , ?
+
+
+ , ! , ! , , , , , .
+
+
+ .
+
+
+
+ ?
+
+
+ , , ! 22 ""! !
+
+
+ ? ! !
+
+
+ ?
+
+
+ , ! , , , ! " , !". , , !
+
+
+ ? , ? , !
+
+
+ , , , ! , , , - , .
+
+
+ ? ? ?
+
+
+ , ? , , - - ! , , ... !
+
+
+ , ?
+
+
+ ! - , , - , . , , , "" .
+
+
+ , - ?
+
+
+ - , . , ... , -, .
+
+
+ ?
+
+
+ , - , - , , . - , , , - , . , - , .
+
+
+ ?
+
+
+ , ! , "" ! , , , ! ( ), !
+
+
+ , . , , , .
+
+
+ ! , , ! , - " , !".
+
+
+ , .
+
+
+ , , , ! , , - , , ? , : ", %s , "? , ? \n \n , ( ), ! , !
+
+
+ , , ? , . , .
+
+
+ , , . , , , - .
+
+
+----- Northern Rush - comms
+
+
+ : ! %s ! ! , , .
+
+
+ : ! %s ! ! , , .
+
+
+ : ! , !
+
+
+ , !
+
+
+ ! , , !
+
+
+
+ , , !
+
+
+ !
+
+
+ , -, , . .
+
+
+
+ !!!
+
+
+----- Northern Rush - Corruption - other dialogue
+
+
+ ...
+
+
+ ?
+
+
+ , , .
+
+
+ ? ? , , ?
+
+
+ ... , ...
+
+
+ .
+
+
+ , : " , ". . , , . - , , ""?
+
+
+ , ... , , , . , . - , , ?
+
+
+
+--------- Strange Meat --------
+
+
+ : , . ?
+
+
+ : ? ? !
+
+
+ : ? , , ?
+
+
+ : !
+
+
+ : , ? ?
+
+
+ : ? ...
+
+
+ : , ! , .
+
+
+
+ ?
+
+
+ .
+
+
+ ...
+
+
+
+ ?
+
+
+ , . , , .
+
+
+
+
+
+ , ?
+
+
+ ? , . "", " ", , , . , , . : .
+
+
+ ?
+
+
+ C, -, ... . , , ... ... , - , ... , . , . \n \n , ... , .
+
+
+ ?
+
+
+ ? , , . , , , ... -. - , . , , ""...
+
+
+ ?
+
+
+ , , , . . , ! , . ...
+
+
+ , ?
+
+
+ ...
+
+
+ ?
+
+
+ , .
+
+
+ ?
+
+
+ , , , . "" - "" , "" - .
+
+
+ ""?
+
+
+ "" , . , "" , , , "". , . , - , "" .
+
+
+ "" ?
+
+
+ , , ... , , - . "" - "" . , , , , . , - , - . .
+
+
+ .
+
+
+ .
+
+
+
+ , .
+
+
+ ... ... . - , . , - . , "", ? ... , , .
+
+
+ , .
+
+
+ ... , .
+
+
+
+ ... ...
+
+
+ ... .
+
+
+
+
+ [ ] ? ?
+
+
+ , . , . , ?
+
+
+
+ ! - !
+
+
+ ? , , , ? ?
+
+
+ . .
+
+
+ , , ... ! ? \n \n , ... . - , ! ! \n \n - , ! ... ? , , ? !!!
+
+
+ , , .
+
+
+ , , , * *.
+
+
+ , .
+
+
+ ! , , !
+
+
+ , , , * *.
+
+
+ , .
+
+
+
+
+
+
+
+-- Nitro
+
+ [ ] ?
+
+
+ 5.000 .
+
+
+ [5.000 ] ?
+
+
+ , .
+
+
+ , . 7,6251, . , Galil, FAL SCAR.
+
+
+ .
+
+
+ . , ?
+
+
+ ? , . ?
+
+
+ , . -, ? , , , ?
+
+
+ ... - , , , , , . , "" , . , ? "" - , . ? .
+
+
+ , - ?
+
+
+ , ! , , ?
+
+
+ [5.000 ] , ?
+
+
+ , , , . , , , . , , , ...\n \n, , - . - , . "" - ˸. Galil', . , "", - . SCAR' - , . , . - , - .\n \n, , . ?
+
+
+ ?
+
+
+ , ? , !
+
+
+ ˸?
+
+
+ ˸ , "" . ? . , .
+
+
+ ?
+
+
+ ? ""? , .
+
+
+ , .
+
+
+ .
+
+
+ .
+
+
+ , , , . , , .
+
+
+
+ [5.000 ] ?
+
+
+--- ---
+
+
+ - ?
+
+
+ ... , , . - , , . , , ... , , , ... , , , . , , , . , .
+
+
+ ?
+
+
+ ! , ... ... , , ... .
+ \n "" -, , !
+ \n , , - . ... \n , , - , , .
+
+
+ ?
+
+
+ , - , . , :
+ \n , , -, , . . , , .
+
+
+ .
+
+
+ , ?
+
+
+--- ---
+
+
+ .
+
+
+ ! , . : , .
+
+
+ ?
+
+
+ . , , .
+
+
+ ?
+
+
+ , . , . , , .
+
+
+ ?
+
+
+ . , ...
+
+
+ .
+
+
+ , , ! , , ! , -, !
+
+
+
+ .
+
+
+ ?
+
+
+ ?
+
+
+ . , , .
+
+
+ ?
+
+
+ , . , . , , .
+
+
+ ?
+
+
+ . , ...
+
+
+ . .
+
+
+ , ... ! , .
+
+
+ . . - .
+
+
+ , . , ... , .
+
+
+ . . .
+
+
+ ... , ... , , .
+
+
+ , .
+
+
+ , ! ! , , , !
+
+
+ !
+
+
+ .
+
+
+ !
+
+
+ !
+
+
+ !
+
+
+ , !
+
+
+ .
+
+
+ .
+
+
+--- ---
+
+
+ .
+
+
+ . , : .
+
+
+ ?
+
+
+ , ! , . , - ! : . , , , - .
+
+
+ ?
+
+
+ - ! .
+
+
+ , .
+
+
+ . , .
+
+
+
+
+ [ ] .
+
+
+ ! . \n \n... \n \n, ! , . , ! , : - ! , , !
+
+
+ . ?
+
+
+ , ! , ! \n \n , . , - ! - , ! \n \n?
+
+
+ .
+
+
+ . , - , . , ... \n \n !
+
+
+
+ ?
+
+
+ . , . , - ! - , !
+
+
+
+ !
+
+
+ , ! ! \n \n, , !
+
+
+ ?
+
+
+ , - ?
+
+
+ .
+
+
+ . . , : \n \n , - , - , . , , . - , , , ... , . - . , , . , .
+
+
+ .
+
+
+ , , , . : \n \n , - , - , . , , . - , , , ... , . - . , , . , .
+
+
+ ... .
+
+
+ , .
+
+
+ ... ?
+
+
+ , , , , ! , .
+
+
+ , .
+
+
+ ! - ""!
+
+
+ ...
+
+
+ ! , , .
+
+
+ ! - ""!
+
+
+ , , ! , !
+
+
+ .
+
+
+ ! , . !
+
+
+ , , ...
+
+
+ ! , , . , - . - , . .
+
+
+
+ ?
+
+
+ , ?
+
+
+ [ ] .
+
+
+ ! ! \n \n... \n \n, !
+
+
+ .
+
+
+ , .
+
+
+
+ [Trapper's bait] I'm ready for the mission.
+
+
+ , ! ! \n\n "", - . , " " ! !
+ , , . : , ! !
+
+
+ . ?
+
+
+ , , ! , .
+ , , , . - .
+
+
+ . - ?
+
+
+ . "" . - , , .
+ . , , . ?
+
+
+ , ?
+
+
+ "", - . , " " ! !
+
+
+ , ?
+
+
+ , .
+
+
+ , ?
+
+
+ - , !
+
+
+ . !
+
+
+ ! ! , , - ! - !
+
+
+ .
+
+
+ ! , !
+
+
+
+ [ ] .
+
+
+ , , . .
+
+
+
+
+
+ ?
+
+
+ ! ?
+
+
+ , ?
+
+
+ "", - . , " " ! !
+
+
+ , ?
+
+
+ , .
+
+
+ , ?
+
+
+ The optimal spot to place the bait is the eastern entry to the Complex, next to the checkpoint!
+
+
+ Alright, that's all.
+
+
+ Weidmannsheil!
+
+
+
+ It is done!
+
+
+ - , !
+
+
+
+ [ ] !
+
+
+ , ! !
+
+
+ . ?
+
+
+ , .
+
+
+
+ ...
+
+
+ , .
+
+
+
+ ...
+
+
+ ! , , ... , .
+
+
+
+ : , . .
+
+
+
+
+
+ : . .
+
+
+ : , - . .
+
+
+---- ----
+
+--- ---
+
+
+ -: , ! !
+
+
+ -: , , ! !
+
+
+ -: , , !
+
+
+ -: , ! , !
+
+
+----
+
+
+ : , , ! , !
+
+
+ : !
+
+
+ ?
+
+
+ , , ! !
+
+
+ , ! !
+
+
+ , , ! - , ! , , , ! , , !
+
+
+
+ , ?
+
+
+ , .
+
+
+
+ , , ?
+
+
+---- Murder of Starik
+
+
+ -: , , !
+
+
+ - : ! !
+
+
+ -: !
+
+
+ -: , ?
+
+
+ - : , ?
+
+
+
+ -: , - !
+
+
+
+---- ----
+
+
+ , ! ? ! 5.000 .
+
+
+ , .
+
+
+ ! , . , , .
+
+
+ 5.000 .
+
+
+ , 5.000 - . , , . ?
+
+
+ .
+
+
+ ! , . , , .
+
+
+ .
+
+
+ , - , .
+
+
+ , .
+
+
+ , - , .
+
+
+
+ .
+
+
+ ! . .
+
+
+ ! ! .
+
+
+ , ! . , , , .
+
+
+ ...
+
+
+
+
+ : , ! ! ?
+
+
+-- --
+
+
+ : ! ! !
+
+
+ : , . , , .
+
+
+ : , , , , - : !
+
+
+ : , , ! !
+
+
+ : , , .
+
+
+
+ ! ! , , , ! ! , , !
+
+
+ ?
+
+
+ , , ... ... , , , , ! , ... ... ! \n \n... \n \n ... , ... \n \n !
+
+
+ ...
+
+
+
+
+ , .
+
+
+ . ! , , ? \n \n . \n \n , ?
+
+
+ ?
+
+
+ ... ?
+
+
+ , , , , ! , ! !!! - , !!! - - ! \n \n, , ...
+
+
+ , ! , , ! \n \n, , , , ! , ! !!! - , !!! - - ! \n \n, , ...
+
+
+ .
+
+
+ ... ?
+
+
+ , ! ... ... , ... , ...
+
+
+ , ... - ... ... .
+
+
+ . , .
+
+
+ , - .
+
+
+ . , !
+
+
+ , ? ! ... .
+
+
+ , .
+
+
+ , , , . .
+
+
+ ! , !
+
+
+ , ! , !!! .
+
+
+
+ .
+
+
+ ! . , ! , ? . - - , - . , .
+
+
+
+
+ ?
+
+
+ ... , . .
+
+
+ ?
+
+
+ , . , ... . , , , . \n \n , .
+
+
+ ?
+
+
+ , , ... . , , , , , , , " ". , .
+
+
+ ?
+
+
+ .
+
+
+ ?
+
+
+ . , , , - . , , , .
+
+
+ , ?
+
+
+ . , , . , .
+
+
+ .
+
+
+ .
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/mods/[DEV] Brotherhood/gamedata/configs/text/rus/st_items_brotherhood.xml b/mods/[DEV] Brotherhood/gamedata/configs/text/rus/st_items_brotherhood.xml
new file mode 100644
index 00000000..bed31af5
--- /dev/null
+++ b/mods/[DEV] Brotherhood/gamedata/configs/text/rus/st_items_brotherhood.xml
@@ -0,0 +1,204 @@
+
+
+
+
+
+
+--- ---
+
+
+
+
+
+ , . .
+
+
+
+ -12 " "
+
+
+ -12. - " ".\n \n
+ %c[ui_gray_2]: \n
+ %c[d_purple] %c[ui_gray_2] -8-02 , 129, -1 \n
+ %c[d_purple] %c[ui_gray_2] -1\n \n
+
+
+--- ---
+
+
+
+
+
+ - : - , . , ...\n \n
+ %c[ui_gray_3]PROPERTIES:\n
+ %c[d_red] %c[ui_gray_2] \n
+
+
+
+
+
+
+ . , ...\n \n
+ %c[ui_gray_3]PROPERTIES:\n
+ %c[d_red] %c[ui_gray_2] \n
+
+
+
+
+
+
+ , . - , .
+
+
+
+
+
+
+ . , .
+
+
+
+
+
+
+ . , . , 7,6251.
+
+
+
+
+---- ----
+
+
+ USB-
+
+
+ .
+
+
+
+
+
+
+ . \n \n .
+
+
+
+ , .
+
+
+ .
+
+
+
+
+
+
+ . - , ! ! , .
+
+
+
+
+
+
+ . \n , , , , . , - , , . , . , . , , . , .\n \n
+ %c[ui_gray_2]:\n
+ %c[d_cyan] %c[ui_gray_2] \n
+ %c[d_cyan] %c[ui_gray_2] \n
+ %c[d_cyan] %c[ui_gray_2] \n
+
+
+
+
+ [ ]
+
+
+ [to be done: proper name and description]
+
+
+
+
+
+
+
+ . , ( , ). \n \n .
+
+
+
+
+
+
+
+
+ . .
+
+
+
+
+
+
+
+ , , , . .
+
+
+
+
+
+ . , .
+
+
+
+ Shlitzer's bag
+
+
+ A bag filled with weapons and ammunition.
+
+
+
+ Ironchain's case
+
+
+ A heavy - closed case. I should bring it to Shlitzer.
+
+
+
+
+
+
+ : \n \n . , . , . , .
+
+
+
+ ''
+
+
+ - . \n \n
+ %c[ui_gray_2]: \n
+ %c[d_purple] %c[ui_gray_2] -8-02 , 129, -1 \n
+ %c[d_purple] %c[ui_gray_2] ( )\n \n
+
+
+
+
+
+
+ , . , ?
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/mods/[DEV] Brotherhood/gamedata/configs/text/rus/st_quests_brotherhood.xml b/mods/[DEV] Brotherhood/gamedata/configs/text/rus/st_quests_brotherhood.xml
new file mode 100644
index 00000000..355d0f28
--- /dev/null
+++ b/mods/[DEV] Brotherhood/gamedata/configs/text/rus/st_quests_brotherhood.xml
@@ -0,0 +1,680 @@
+
+
+
+
+
+
+ ---- Cordon ----
+
+
+
+
+
+ / . " " .
+
+
+ / . " " , .
+
+
+ , !
+
+
+ / , !
+
+
+ / , . .
+
+
+
+ :
+
+
+ / . .
+
+
+ . , .
+
+
+ , / . .
+
+
+ --------
+
+
+
+
+
+ , - . , .
+ , , - , .
+
+
+ . , - .
+
+
+ . .
+
+
+
+
+
+
+ , "" - , . .
+
+
+ .
+
+
+
+
+
+
+ - / , , . .
+
+
+ .
+
+
+
+
+
+
+ , , . . .
+
+
+ - / .
+
+
+ .
+
+
+
+ O
+
+
+ - , . .
+
+
+ - , . .
+
+
+ - . , .
+
+
+ , . , . .
+
+
+ , . , . .
+
+
+
+
+---- Duty Hunter ----
+
+ :
+
+
+ , , "", . .
+
+
+
+ :
+
+
+ , . .
+
+
+
+ :
+
+
+ , . .
+
+
+
+
+
+
+ , . .
+
+
+ , . .
+
+
+ , , .
+
+
+
+
+
+
+
+
+
+ , "" .
+
+
+ "" . .
+
+
+ "" , . .
+
+
+
+ !
+
+
+ "" . C .
+
+
+----- Bellerophon ----
+
+
+ :
+
+
+ . .
+
+
+ . - , .
+
+
+ . .
+
+
+
+
+------ Trapper ------
+
+
+
+
+
+ 6 , .
+
+
+ . , . .
+
+
+ . .
+
+
+ . .
+
+
+
+ , . .
+
+
+ , , .
+
+
+
+ Discovery
+
+
+ "" . , , . , . . !
+
+
+ ! - .
+
+
+ . .
+
+
+ , .
+
+
+ . .
+
+
+ . .
+
+
+ , "" . . . , . . !
+
+
+---- Legendary Hunts ----
+
+
+
+ :
+
+
+ - -. , . - . , -, .
+
+
+ . .
+
+
+ , . .
+
+
+
+ :
+
+
+ , . , , - , , .
+
+
+ . .
+
+
+---- Alyosha Shyogolov----
+
+
+
+
+
+ / . .
+
+
+ .
+
+
+ , .
+
+
+
+
+
+
+ , . - .
+
+
+ , . .
+
+
+
+
+ :
+
+
+ - . , . .
+
+
+ , .
+
+
+ . .
+
+
+
+--- Vybegallo ---
+
+
+ : ?
+
+
+ . .
+
+
+
+
+
+
+ - . "".
+
+
+ . .
+
+
+
+ : !
+
+
+ , : , : , .
+
+
+
+ : ?
+
+
+ , .
+
+
+ , . .
+
+
+ Tu quoque mon cher?
+
+
+ . , .
+
+
+ , .
+
+
+
+----- Market Share-----
+
+
+
+
+ - , .
+
+
+
+ -
+
+
+ - . .
+
+
+
+ -
+
+
+ - . .
+
+
+
+ -
+
+
+ , . .
+
+
+ . .
+
+
+ , " " . \n \n , , - - .
+
+
+
+ -
+
+
+ USB. .
+
+
+ , . - - - .
+
+
+
+ -
+
+
+ , USB " ".
+
+
+ . , .
+
+
+
+ -
+
+
+ . - .
+
+
+ - .
+
+
+
+---Fake Artifact---
+
+
+
+
+
+ - , []
+
+
+
+
+
+
+
+
+
+
+
+
+ , . , - Ҹ .
+
+
+
+
+
+
+
+
+ , . , - Ҹ .
+
+
+ - , .
+
+
+----- What a Night -----
+
+
+ - ?
+
+
+ - ?
+
+
+----- Rush to the North
+
+
+
+
+
+ . . 20 , , "" .
+
+
+ , . .
+
+
+ , . "".
+
+
+ . , .
+
+
+ . , .
+
+
+ . .
+
+
+ . .
+
+
+
+
+
+
+
+ .
+
+
+ , .
+
+
+
+
+
+
+ . - .
+
+
+ . .
+
+
+
+
+
+
+ , . , .
+
+
+ . .
+
+
+
+
+
+
+
+ , . .
+
+
+
+
+ It Fell of the Back of a Truck
+
+
+ Shlitzer wants me to take delivery of some supplies - I only have 5 days for it. I have to give the signal to Badger who is on guard duty from midnight to 4am. The signal is three short flashes with a flashlight next to the Jeep wreackage.
+
+
+ I gave the signal to Badger. Now he will meet me on the western end of the fence.
+
+
+ I took delivery of the bag. I should bring it to Shlitzer.
+
+
+
+
+ That is one.
+
+
+ That is two.
+
+
+ Three - that should have been the signal.
+
+
+ I somehow messed up the signal. I should wait a bit and start again.
+
+
+
+ Pecunia non olet
+
+
+
+
+ :
+
+
+ , , . - .
+
+
+ . .
+
+
+ . .
+
+
+
+ :
+
+
+ , , . - .
+
+
+ . .
+
+
+ . .
+
+
+ . .
+
+
+ :
+
+
+ , , . - .
+
+
+ . .
+
+
+ . .
+
+
+
+
+
+
+ , .
+
+
+ . .
+
+
+--------------------------
+----- Atomic Crusader ----
+--------------------------
+
+ Meet your Father
+
+
+ I should report to Father Charon.
+
+
+
+ The spearhead of the Monolith
+
+
+ My chapter has been assigned the retaking of the Kindergarten. I should prepare and find Blue Winter to wait for nightfall.
+
+
+ We set out to join our Brothers Melchior and Caspar. They should be waiting north of the Kindergarten.
+
+
+ Clear the Kindergarten with Blue Winter and Balthazar.
+
+
+ The Kindergarden is cleared. I should talk to Blue Winter.
+
+
+ Blue Winter has given me the honour to report our victory to Father Charon.
+
+
+
+
+--------------------------
+----- Atomic Crusader ----
+--------------------------
+
+ Meet your Father
+
+
+ I should report to Father Charon.
+
+
+
+ The spearhead of the Monolith
+
+
+ My chapter has been assigned the retaking of the Kindergarten. I should prepare and find Blue Winter to wait for nightfall.
+
+
+ We set out to join our Brothers Melchior and Caspar. They should be waiting north of the Kindergarten.
+
+
+ Clear the Kindergarten with Blue Winter and Balthazar.
+
+
+ The Kindergarden is cleared. I should talk to Blue Winter.
+
+
+ Blue Winter has given me the honour to report our victory to Father Charon.
+
+
+
+
+
+
+
+
diff --git a/mods/[DEV] Brotherhood/gamedata/scripts/actor_effects.script b/mods/[DEV] Brotherhood/gamedata/scripts/actor_effects.script
new file mode 100644
index 00000000..17ae5522
--- /dev/null
+++ b/mods/[DEV] Brotherhood/gamedata/scripts/actor_effects.script
@@ -0,0 +1,1896 @@
+
+local ini_eff = ini_file("plugins\\actor_effects.ltx")
+local snd_cam = sound_object([[interface\inv_camera]])
+
+local device = device
+local string = string
+local math = math
+
+local last_slot = 0
+local last_det = 0
+local weapon_hidden = 0
+local cam_dist = 0
+local can_shoot = true
+local autohide = ui_options.get("video/hud/autohide_stamina_bar")
+
+local RENDERER = get_console_cmd(0,"renderer")
+local STATIC_LIGHT = 'renderer_r1'
+local IS_R1 = (RENDERER == STATIC_LIGHT)
+local STATIC_VINGETTE = false -- for +R2 - if true, it will draw vingette instead of relying on r2_mask_control
+local STATIC_MASK = true -- For R1 - if true, it will ignore distortion shader and use old mask overlay
+
+local detector_was_active = false
+
+local allow_states = {
+ [0] = true, -- Idle
+ [4] = true, -- Bore
+ [9] = true -- Empty
+}
+
+local opt = {}
+function init_settings()
+ local n = 0
+ local tbl = {}
+
+ opt.radiation_ppe_threshold = ini_eff:r_float_ex("settings","radiation_ppe_threshold") or 0.45
+ opt.cam_dist = ini_eff:r_float_ex("settings","cam_dist") or 4
+
+ opt.speed = {}
+ n = ini_eff:line_count("settings_speed")
+ for i=0,n-1 do
+ local result, id, value = ini_eff:r_line_ex("settings_speed",i,"","")
+ if id and value then
+ opt.speed[id] = tonumber(value)
+ end
+ end
+
+ opt.health = {}
+ opt.health.level1 = ini_eff:r_float_ex("settings_health","level1")
+ opt.health.level2 = ini_eff:r_float_ex("settings_health","level2")
+ opt.health.little_delta = ini_eff:r_float_ex("settings_health","little_delta")
+ opt.health.little_ppe = ini_eff:r_string_ex("settings_health","little_ppe") or "amk_shoot.ppe"
+ opt.health.middle_delta = ini_eff:r_float_ex("settings_health","middle_delta")
+ opt.health.middle_anm = parse_list(ini_eff,"settings_health","middle_anm")
+ opt.health.middle_snd = parse_list(ini_eff,"settings_health","middle_snd")
+ opt.health.huge_delta = ini_eff:r_float_ex("settings_health","huge_delta")
+ opt.health.huge_ppe = ini_eff:r_string_ex("settings_health","huge_ppe") or "total_recall.ppe"
+ opt.health.huge_anm = parse_list(ini_eff,"settings_health","huge_anm")
+ opt.health.huge_snd = parse_list(ini_eff,"settings_health","huge_snd")
+ opt.health.drop_wnp_prob = ini_eff:r_float_ex("settings_health","drop_wnp_prob")
+ opt.health.no_drop_wnp = parse_list(ini_eff,"settings_health","no_drop_wnp",true)
+ opt.health.injury_snd = {}
+ local injury_snd = parse_list(ini_eff,"settings_health","injury_snd")
+ for i=1,#injury_snd do
+ for k,v in string.gmatch(injury_snd[i], "([%w_%-%s%.]+)=([%w_%-%s%.]+)") do
+ opt.health.injury_snd[k] = tonumber(v)
+ end
+ end
+
+ opt.helmets = {}
+ n = ini_eff:line_count("settings_helm")
+ for i=0,n-1 do
+ local result, id, value = ini_eff:r_line_ex("settings_helm",i,"","")
+ if id and value then
+ empty_table(tbl)
+ tbl = parse_list(ini_eff,"settings_helm",id)
+
+ opt.helmets[id] = {}
+ opt.helmets[id].hud = tbl[1] or "hud_gas"
+ opt.helmets[id].breakable = (tbl[2] == "true") and true or false
+ opt.helmets[id].blurs = tbl[3] and tonumber(tbl[3]) or 2.5
+ opt.helmets[id].respi = (tbl[4] == "true") and true or false
+ end
+ end
+
+ opt.helmets_vingette = {}
+ n = ini_eff:line_count("settings_helm_vingette")
+ for i=0,n-1 do
+ local result, id, value = ini_eff:r_line_ex("settings_helm_vingette",i,"","")
+ if id and value then
+ opt.helmets_vingette[id] = tonumber(value)
+ end
+ end
+
+ opt.helmets_reflect = {}
+ n = ini_eff:line_count("settings_helm_reflection")
+ for i=0,n-1 do
+ local result, id, value = ini_eff:r_line_ex("settings_helm_reflection",i,"","")
+ if id then
+ opt.helmets_reflect[id] = true
+ end
+ end
+
+ opt.helmets_con = {}
+ n = ini_eff:line_count("settings_helm_con")
+ for i=0,n-1 do
+ local result, id, value = ini_eff:r_line_ex("settings_helm_con",i,"","")
+ if id and value then
+ empty_table(tbl)
+ tbl = parse_list(ini_eff,"settings_helm_con",id)
+
+ opt.helmets_con[id] = {}
+ opt.helmets_con[id].con = tbl[1] and tonumber(tbl[1]) or 0
+ opt.helmets_con[id].hud = tbl[2]
+ opt.helmets_con[id].fx = tbl[3] and tonumber(tbl[3]) or 0
+ end
+ end
+end
+function init_main_settings()
+ opt.enable_animations = ui_options.get("video/player/animations")
+ opt.enable_shoot_effects = ui_options.get("video/player/shoot_effects")
+ opt.enable_mask_hud = ui_options.get("video/player/mask_hud")
+ opt.enable_breathing_sound = ui_options.get("sound/environment/breathing_sound")
+ opt.enable_breathing_fog = ui_options.get("video/player/breathing_fog")
+ opt.enable_radiation_effect = ui_options.get("video/player/radiation_effect")
+ opt.enable_blood_splash = ui_options.get("video/player/blood_splash")
+ opt.enable_bleed_effect = ui_options.get("video/player/bleed_effect")
+ opt.enable_hit_impact_effect = true --axr_main.config:r_value("mm_fx_options","enable_hit_impact_effect",1,true)
+ opt.enable_item_swap_animation = ui_options.get("video/player/item_swap_animation")
+ opt.enable_visor_reflection = ui_options.get("video/player/visor_reflection")
+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
+ --utils_data.print_table(wpn_fx[sec])
+
+ else
+ wpn_fx[sec] = true
+ --printf("not recoil effect for [%s]", sec)
+ end
+end
+
+
+--------------------------------------------------------------
+-- Trigger
+--------------------------------------------------------------
+local torch_anm_state = 0
+local torch_anm_start = 0
+local torch_anm_time = 0
+local torch_anm_state_dbg = 0
+local mc_anm_state = 0
+local mc_anm_start = 0
+local mc_anm_time_1 = 0
+local mc_anm_time_2 = 0
+local mc_anm_state_dbg = 0
+local torch_anm_sec = "anim_headlamp"
+local mc_anm_sec = "anim_mask_clean"
+local snd_headlamp = sound_object('interface\\inv_torch')
+local snd_gasmask = sound_object('interface\\inv_mask_clean_3')
+local hqt_hide_anm_speed = 3.5 -- Weapon hide speed
+local hqt_grenade_slot = 4
+local hqt_last_slot
+local hqt_state = 0
+local hide_hand_speed = 1.5
+
+function allow_animation()
+ return (torch_anm_state == 0 and mc_anm_state == 0 and hqt_state == 0 and game.hud_motion_allowed() and (not game.only_movekeys_allowed()) and actor_menu.get_last_mode() == 0 and (not IsMoveState("mcClimb")))
+end
+
+local lowered_anm_kinds = {
+ ["w_sniper"] = true,
+ ["w_rifle"] = true,
+ ["w_smg"] = true,
+ ["w_shotgun"] = true,
+}
+
+local lowered_anm_classes = {
+ ["WP_VAL"] = true,
+ ["WP_AK74"] = true,
+ ["WP_LR300"] = true,
+ ["WP_BM16"] = true,
+ ["WP_SVD"] = true,
+ ["WP_SVU"] = true,
+ ["WP_GROZA"] = true,
+ ["WP_ASHTG"] = true,
+ ["WP_ASHTG"] = true,
+ ["WP_SHOTG"] = true,
+ ["WP_RG6"] = true,
+ ["WP_RPG7"] = true,
+ ["D_PDA"] = true,
+}
+
+function Hit_TorchToggle()
+
+ -- Check if headlamp is equipped. No need for battery check
+ if (not allow_animation()) or (not item_device.can_toggle_torch()) then
+ return
+ end
+
+ local weapon_zoomed = axr_main.weapon_is_zoomed and (not (IsPistol(db.actor:active_item(),nil)) or db.actor:active_detector())
+ local det_active = db.actor:active_detector() or nil
+ local det_hide_time = 0
+ local new_speed = 0
+ local anm_name = "script\\headlamp.anm"
+ local anm_additional_length = 0.45
+
+ if (db.actor:active_item()) then
+ local itm = db.actor:active_item()
+ local hud = ini_sys:r_string_ex(itm:section(),"hud") or "hud_base"
+ local name = ini_sys:r_string_ex(hud,"gasmask_anm")
+ if (name) then
+ anm_name = name
+ else
+ local kind = ini_sys:r_string_ex(itm:section(),"kind") or nil
+ local class = ini_sys:r_string_ex(itm:section(),"class") or nil
+ if ((kind and lowered_anm_kinds[kind]) or (class and lowered_anm_classes[class])) then
+ anm_name = "script\\lower.anm"
+ anm_additional_length = 0.8
+ end
+ end
+
+ if (not det_active and weapon_zoomed) then
+ if (get_console():get_bool("wpn_aim_toggle")) then
+ level.press_action(bind_to_dik(key_bindings.kWPN_ZOOM))
+ else
+ level.release_action(bind_to_dik(key_bindings.kWPN_ZOOM))
+ end
+ end
+ end
+
+ if (det_active) then
+ if (weapon_zoomed) then
+ det_active:switch_state(2)
+ det_hide_time = (det_active:play_hud_motion("anm_zoom_hide_fast", true, 3, 1, 0) / 1000)
+
+ if (get_console():get_bool("wpn_aim_toggle")) then
+ level.press_action(bind_to_dik(key_bindings.kWPN_ZOOM))
+ else
+ level.release_action(bind_to_dik(key_bindings.kWPN_ZOOM))
+ end
+ else
+ det_hide_time = (det_active:play_hud_motion("anm_hide_fast", true, 3, 2, 0) / 1000) + 0.1
+ end
+
+ if (det_hide_time == 0) then
+ det_hide_time = (det_active:play_hud_motion("anm_hide", true, 3, 3.5, 0) / 1000) + 0.1
+ end
+
+ game.play_hud_anm(anm_name, 0, 0.25, 1, false)
+ end
+
+ local function torch_toggle_anim_fast()
+ local time_g = time_global()
+
+ if (torch_anm_state == 1) then
+ game.play_hud_motion(1, torch_anm_sec, "anm_switch", true, 0.75)
+ level.add_cam_effector("camera_effects\\headlamp\\headlamp.anm", 7539, false, "", 0, false)
+ torch_anm_start = time_g
+ torch_anm_state = 2
+
+ elseif (torch_anm_state == 2) and (time_g > torch_anm_start + torch_anm_time - 350) then
+ snd_headlamp:play(db.actor,0,sound_object.s2d)
+ item_device.toggle_torch()
+ torch_anm_state = 3
+
+ elseif (torch_anm_state == 3) and (time_g > torch_anm_start + torch_anm_time + 1) then
+ torch_anm_state = 0
+ torch_anm_start = 0
+ torch_anm_state_dbg = 0
+ game.only_allow_movekeys(false)
+ game.set_actor_allow_ladder(true)
+ RemoveTimeEvent(0, "play_torch_toggle")
+ end
+
+ if DEV_DEBUG and (torch_anm_state_dbg ~= torch_anm_state) then
+ torch_anm_state_dbg = torch_anm_state
+ --printf("- Torch animation | state reached: %s - time: %s", torch_anm_state, time_g)
+ end
+
+ return false
+ end
+
+ local function torch_toggle_anim()
+ local time_g = time_global()
+
+ if (torch_anm_state == 1) then
+ if (det_active) then
+ det_active:switch_state(3)
+ db.actor:force_hide_detector()
+ else
+ game.play_hud_anm(anm_name, 0, 1, 1, false)
+ end
+
+ game.play_hud_motion(1, mc_anm_sec, "anm_hide_hand", true, hide_hand_speed)
+ new_speed = game.set_hud_anm_time(anm_name, ((torch_anm_time + mc_anm_time_1) / 1000) + anm_additional_length)
+ torch_anm_start = time_g
+ torch_anm_state = 2
+
+ elseif (torch_anm_state == 2) and (time_g > torch_anm_start + mc_anm_time_1 - 10) then
+ game.play_hud_motion(1, torch_anm_sec, "anm_switch", true, 1)
+ level.add_cam_effector("camera_effects\\headlamp\\headlamp.anm", 7539, false, "", 0, false)
+ torch_anm_state = 3
+
+ elseif (torch_anm_state == 3) and (time_g > torch_anm_start + mc_anm_time_1 + torch_anm_time - 550) then
+ snd_headlamp:play(db.actor,0,sound_object.s2d)
+ item_device.toggle_torch()
+ torch_anm_state = 4
+
+ elseif (torch_anm_state == 4) and (time_g > torch_anm_start + mc_anm_time_1 + torch_anm_time + 15) then
+ if (new_speed) then game.play_hud_anm(anm_name, 2, new_speed, 1, false, true) end
+ if (det_active) then db.actor:show_detector(true) end
+ torch_anm_state = 5
+
+ elseif (torch_anm_state == 5) and (time_g > torch_anm_start + mc_anm_time_1 + torch_anm_time + (anm_additional_length * 1000 + 100)) then
+ torch_anm_state = 0
+ torch_anm_start = 0
+ torch_anm_state_dbg = 0
+ game.only_allow_movekeys(false)
+ game.set_actor_allow_ladder(true)
+ RemoveTimeEvent(0, "play_torch_toggle")
+ end
+
+ if DEV_DEBUG and (torch_anm_state_dbg ~= torch_anm_state) then
+ torch_anm_state_dbg = torch_anm_state
+ --printf("- Torch animation | state reached: %s - time: %s", torch_anm_state, time_g)
+ end
+
+ return false
+ end
+
+ torch_anm_state = 1
+ game.only_allow_movekeys(true)
+ game.set_actor_allow_ladder(false)
+
+ if (not db.actor:active_item() and not det_active) then
+ CreateTimeEvent(0, "play_torch_toggle", det_hide_time, torch_toggle_anim_fast)
+ else
+ CreateTimeEvent(0, "play_torch_toggle", det_hide_time, torch_toggle_anim)
+ end
+end
+
+function Hit_MaskCleaning()
+
+ -- Check if mask overlay is ON
+ if (not allow_animation()) or (not is_mask_on()) then
+ return
+ end
+
+ local weapon_zoomed = axr_main.weapon_is_zoomed and (not (IsPistol(db.actor:active_item(),nil)) or db.actor:active_detector())
+ local det_active = db.actor:active_detector() or nil
+ local det_hide_time = 0
+ local new_speed = 0
+ local anm_name = "script\\gasmask.anm"
+ local anm_additional_length = 0.45
+
+ if (db.actor:active_item()) then
+ local itm = db.actor:active_item()
+ local hud = ini_sys:r_string_ex(itm:section(),"hud") or "hud_base"
+ local name = ini_sys:r_string_ex(hud,"gasmask_anm")
+ if (name) then
+ anm_name = name
+ else
+ local kind = ini_sys:r_string_ex(itm:section(),"kind") or nil
+ local class = ini_sys:r_string_ex(itm:section(),"class") or nil
+ if ((kind and lowered_anm_kinds[kind]) or (class and lowered_anm_classes[class])) then
+ anm_name = "script\\lower.anm"
+ anm_additional_length = 0.75
+ end
+ end
+
+ if (not det_active and weapon_zoomed) then
+ if (get_console():get_bool("wpn_aim_toggle")) then
+ level.press_action(bind_to_dik(key_bindings.kWPN_ZOOM))
+ else
+ level.release_action(bind_to_dik(key_bindings.kWPN_ZOOM))
+ end
+ end
+ end
+
+ if (det_active) then
+ if (weapon_zoomed) then
+ det_active:switch_state(2)
+ det_hide_time = (det_active:play_hud_motion("anm_zoom_hide_fast", true, 3, 1, 0) / 1000)
+
+ if (get_console():get_bool("wpn_aim_toggle")) then
+ level.press_action(bind_to_dik(key_bindings.kWPN_ZOOM))
+ else
+ level.release_action(bind_to_dik(key_bindings.kWPN_ZOOM))
+ end
+ else
+ det_hide_time = (det_active:play_hud_motion("anm_hide_fast", true, 3, 2, 0) / 1000) + 0.1
+ end
+
+ if (det_hide_time == 0) then
+ det_hide_time = (det_active:play_hud_motion("anm_hide", true, 3, 3.5, 0) / 1000) + 0.1
+ end
+
+ game.play_hud_anm(anm_name, 0, 0.25, 1, false)
+ end
+
+ local function mask_cleaning_anim_fast()
+ local time_g = time_global()
+
+ if (mc_anm_state == 1) then
+ game.play_hud_motion(1, mc_anm_sec, "anm_wipe", false, 1)
+ snd_gasmask:play(db.actor,0,sound_object.s2d)
+ level.add_cam_effector("camera_effects\\weapon\\gasmask_swipe1.anm", 7538, false, "", 0, false)
+ mc_anm_start = time_g
+ mc_anm_state = 2
+
+ elseif (mc_anm_state == 2) and (time_g > mc_anm_start + mc_anm_time_2 - 400) then
+ level_environment.droplets_reset()
+ mc_anm_state = 3
+
+ elseif (mc_anm_state == 3) and (time_g > mc_anm_start + mc_anm_time_2 + 1) then
+ mc_anm_state = 0
+ mc_anm_start = 0
+ mc_anm_state_dbg = 0
+ game.only_allow_movekeys(false)
+ game.set_actor_allow_ladder(true)
+ RemoveTimeEvent(0, "play_mask_cleaning")
+
+ end
+
+ if DEV_DEBUG and (mc_anm_state_dbg ~= mc_anm_state) then
+ mc_anm_state_dbg = mc_anm_state
+ --printf("- Gasmask wipe animation | state reached: %s - time: %s", mc_anm_state, time_g)
+ end
+
+ return false
+ end
+
+ local function mask_cleaning_anim()
+ local time_g = time_global()
+
+ if (mc_anm_state == 1) then
+ if (det_active) then
+ det_active:switch_state(3)
+ db.actor:force_hide_detector()
+ else
+ game.play_hud_anm(anm_name, 0, 1, 1, false)
+ end
+
+ game.play_hud_motion(1, mc_anm_sec, "anm_hide_hand", true, hide_hand_speed)
+ new_speed = game.set_hud_anm_time(anm_name, ((mc_anm_time_1 + mc_anm_time_2) / 1000) + anm_additional_length)
+ mc_anm_start = time_g
+ mc_anm_state = 2
+
+ elseif (mc_anm_state == 2) and (time_g > mc_anm_start + mc_anm_time_1 - 10) then
+ game.play_hud_motion(1, mc_anm_sec, "anm_wipe", false, 1)
+ snd_gasmask:play(db.actor,0,sound_object.s2d)
+ level.add_cam_effector("camera_effects\\weapon\\gasmask_swipe1.anm", 7538, false, "", 0, false)
+ mc_anm_state = 3
+
+ elseif (mc_anm_state == 3) and (time_g > mc_anm_start + mc_anm_time_1 + mc_anm_time_2 - 400) then
+ level_environment.droplets_reset()
+ mc_anm_state = 4
+
+ elseif (mc_anm_state == 4) and (time_g > mc_anm_start + mc_anm_time_1 + mc_anm_time_2 + 15) then
+ if (new_speed) then game.play_hud_anm(anm_name, 2, new_speed, 1, false, true) end
+ if (det_active) then db.actor:show_detector(true) end
+ mc_anm_state = 5
+
+ elseif (mc_anm_state == 5) and (time_g > mc_anm_start + mc_anm_time_1 + mc_anm_time_2 + (anm_additional_length * 1000 + 100)) then
+ mc_anm_state = 0
+ mc_anm_start = 0
+ mc_anm_state_dbg = 0
+ game.only_allow_movekeys(false)
+ game.set_actor_allow_ladder(true)
+ RemoveTimeEvent(0, "play_mask_cleaning")
+ end
+
+ if DEV_DEBUG and (mc_anm_state_dbg ~= mc_anm_state) then
+ mc_anm_state_dbg = mc_anm_state
+ --printf("- Gasmask wipe animation | state reached: %s - time: %s", mc_anm_state, time_g)
+ end
+
+ return false
+ end
+
+ mc_anm_state = 1
+ game.only_allow_movekeys(true)
+ game.set_actor_allow_ladder(false)
+
+ if (not db.actor:active_item() and not det_active) then
+ CreateTimeEvent(0, "play_mask_cleaning", det_hide_time, mask_cleaning_anim_fast)
+ else
+ CreateTimeEvent(0, "play_mask_cleaning", det_hide_time, mask_cleaning_anim)
+ end
+end
+
+function Hit_GrenadeQuickthrow() -- Rezy
+ if (not allow_animation())
+ or (not db.actor:item_in_slot(hqt_grenade_slot))
+ or db.actor:get_current_holder() ~= nil
+ then
+ return
+ end
+
+ local weapon_zoomed = axr_main.weapon_is_zoomed and (not (IsPistol(db.actor:active_item(),nil)) or db.actor:active_detector())
+ local firekey = bind_to_dik(key_bindings.kWPN_FIRE)
+ local switch_delay = 0
+ local wpn
+ local det_active = db.actor:active_detector() or nil
+
+ hqt_last_slot = db.actor:active_slot()
+
+ if (weapon_zoomed) then
+ if (get_console():get_bool("wpn_aim_toggle")) then
+ level.press_action(bind_to_dik(key_bindings.kWPN_ZOOM))
+ else
+ level.release_action(bind_to_dik(key_bindings.kWPN_ZOOM))
+ end
+ end
+
+ if (hqt_last_slot == hqt_grenade_slot) then
+ level.press_action(firekey)
+ return
+ elseif (hqt_last_slot ~= 0) then
+ wpn = db.actor:active_item()
+ if wpn then
+ local state = wpn:get_state()
+ if (state ~= 0 and state ~= 1 and state ~= 2) then return end
+ switch_delay = (wpn:play_hud_motion("anm_hide", true, 3, hqt_hide_anm_speed, 0) / 1000)
+ end
+ end
+
+ if (det_active) then
+ local det_hide_time = (det_active:play_hud_motion("anm_hide_fast", true, 3, 2, 0) / 1000)
+
+ if (det_hide_time == 0) then det_hide_time = (det_active:play_hud_motion("anm_hide", true, 3, hqt_hide_anm_speed, 0) / 1000) end
+
+ if (det_hide_time > switch_delay) then switch_delay = det_hide_time end
+ end
+
+ local function switch_to_throw()
+
+ local grn = db.actor:item_in_slot(hqt_grenade_slot)
+ if (not grn) then
+ game.only_allow_movekeys(false)
+ game.set_actor_allow_ladder(true)
+ hqt_state = 0
+ if (db.actor:active_slot() ~= hqt_last_slot) then
+ db.actor:activate_slot(hqt_last_slot)
+ end
+ return true
+ end
+
+ if hqt_state == 1 then
+ if det_active then
+ det_active:switch_state(3)
+ db.actor:force_hide_detector()
+ end
+ db.actor:activate_slot(hqt_grenade_slot)
+ if wpn then wpn:switch_state(3) end
+ hqt_state = 2
+ elseif hqt_state == 2 and db.actor:active_slot() == hqt_grenade_slot then
+ grn:switch_state(0)
+ hqt_state = 3
+ elseif hqt_state == 3 and grn:get_state() == 0 then
+ level.press_action(firekey)
+ hqt_state = 4
+ elseif hqt_state == 4 and (grn:get_state() == 1 or grn:get_state() == 2) then
+ grn:switch_state(3)
+ hqt_state = 5
+ elseif hqt_state == 5 then
+ if (db.actor:active_slot() ~= hqt_last_slot) then
+ db.actor:activate_slot(hqt_last_slot)
+ if grn then grn:switch_state(3) end
+ end
+
+ if (det_active) then
+ db.actor:show_detector(true)
+ det_active:switch_state(1)
+ end
+
+ game.only_allow_movekeys(false)
+ game.set_actor_allow_ladder(true)
+ hqt_state = 0
+ return true
+ end
+ end
+
+ hqt_state = 1
+
+ game.only_allow_movekeys(true)
+ game.set_actor_allow_ladder(false)
+
+ CreateTimeEvent(0, "switch_to_throw", switch_delay, switch_to_throw)
+end
+
+-- This should fix being stuck if a burer attacks you during grenade quickthrow
+local function burer_on_before_weapon_drop(burer,wpn,flags)
+ if (hqt_state ~= 0) then
+ flags.ret_value = false
+ end
+end
+
+--------------------------------------------------------------
+-- Update
+--------------------------------------------------------------
+local swap_last_id = nil
+local swap_last_det_st = nil
+local swap_last_wep_st = nil
+local weapon_classes = {
+ ["D_PDA"] = "low",
+ ["II_BOLT"] = "low",
+ ["WP_KNIFE"] = "low",
+ ["WP_BINOC"] = "low",
+ ["G_F1"] = "low",
+ ["G_F1_S"] = "low",
+ ["G_RGD5_S"] = "low",
+ ["WP_PM"] = "low",
+ ["WP_HPSA"] = "low",
+ ["WP_USP45"] = "low",
+ ["WP_VAL"] = "med",
+ ["WP_AK74"] = "med",
+ ["WP_LR300"] = "med",
+ ["WP_BM16"] = "med",
+ ["WP_SVD"] = "med",
+ ["WP_SVU"] = "med",
+ ["WP_GROZA"] = "med",
+ ["WP_ASHTG"] = "med",
+ ["WP_ASHTG"] = "med",
+ ["WP_SHOTG"] = "med",
+ ["WP_RG6"] = "strong",
+ ["WP_RPG7"] = "strong"
+}
+function Update_ItemSwap(actor)
+ if (not opt.enable_item_swap_animation) then
+ return
+ end
+
+ --
+ local detector = actor:active_detector()
+ if detector then
+ local det_state = detector:get_state()
+ if (not swap_last_det_st) then swap_last_det_st = det_state end
+ if (det_state ~= swap_last_det_st) then
+ if (det_state ==1) or (det_state == 2) then
+ local rand = math.random(1,4)
+ level.add_cam_effector("camera_effects\\switch\\low" .. rand .. ".anm", 23233, false, '', 0, false)
+ end
+ swap_last_det_st = det_state
+ end
+ end
+ --
+
+ local wpn = actor:active_item()
+ if wpn then
+ local wpn_id = wpn:id()
+ if (not swap_last_id) then swap_last_id = wpn_id end
+
+ --local se_wpn = alife_object(wpn_id)
+ local wpn_class = ini_sys:r_string(wpn:section(), "class")
+
+ if weapon_classes[wpn_class] then
+ local effect_type = weapon_classes[wpn_class]
+ local state = wpn:get_state()
+ if not swap_last_wep_st then swap_last_wep_st = state end
+ if state ~= swap_last_wep_st then
+ if (state == 1) or (state == 2) then
+ local rand = math.random(1,4)
+ level.add_cam_effector("camera_effects\\switch\\" .. effect_type .. rand .. ".anm", 23232, false, '', 0, false)
+ end
+ swap_last_wep_st = state
+ end
+ swap_last_id = wpn_id
+ end
+ else
+ swap_last_id = 0
+ end
+end
+
+local function actor_on_weapon_lower(wpn)
+ if wpn then
+ local rand = math.random(1,4)
+ level.add_cam_effector("camera_effects\\switch\\low" .. rand .. ".anm", 23231, false, '')
+ end
+end
+
+local function actor_on_weapon_raise(wpn)
+ if wpn then
+ local rand = math.random(1,4)
+ level.add_cam_effector("camera_effects\\switch\\low" .. rand .. ".anm", 23231, false, '')
+ end
+end
+
+local time_disabled = 0
+local animation_start = false
+local item_in_use = {}
+local item_not_in_use = true
+function Update_Animations(actor)
+ if item_not_in_use then
+ return
+ end
+
+ local in_use = 0
+ for tg_m, t in pairs(item_in_use) do
+ in_use = in_use + 1
+ local remov = true
+ local tg = time_global() - tonumber(tg_m)
+
+ -- time frame of an action has been reached -> excute then clear action
+ for milli, action in pairs(t) do
+ remov = false
+ if (tg > milli) then
+ assert(loadstring(action))()
+ item_in_use[tg_m][milli] = nil
+ --actor:give_game_news(tostring(tg), action, "ui_iconsTotal_grouping", 0, 5000, 0)
+ end
+ end
+
+ -- no action is left? -> clear the fx from the table
+ if remov then
+ in_use = in_use - 1
+ item_in_use[tg_m] = nil
+ end
+ end
+ item_not_in_use = (in_use == 0)
+end
+
+
+local rad_removed
+function Update_Rad(actor)
+ if (not opt.enable_radiation_effect) then
+ if (not rad_removed) then
+ rad_removed = true
+ level.remove_pp_effector(2020)
+ end
+ return
+ end
+ rad_removed = false
+
+ local radiation = actor.radiation
+ if (radiation > 0) then
+ if (radiation > opt.radiation_ppe_threshold) then
+ level.add_pp_effector("radiation.ppe", 2020, true)
+ else
+ level.remove_pp_effector(2020)
+ end
+ level.set_pp_effector_factor(2020, radiation)
+ if (math.random() < radiation) then
+ radiation = (radiation > 0.5) and (math.random() < radiation/1.3) and "click3" or math.random(8)
+ local snd = sound_object("detectors\\geiger_" .. radiation)
+ snd:play(actor, 0, sound_object.s2d)
+ end
+ end
+end
+
+
+local curr_hud
+local helm_con
+local helm_fog = 0
+local helm_hud_pre = ""
+local helm_curr
+local helm_off = false
+local helm_respi_state = false
+local helm_removed
+local helm_fx = {0.0,0.0,0.0,0.0} -- Shaders
+local helm_fx_old = {false,false,false,false}
+local helm_r1_vingette = "hud_vingette"
+function Update_Mask(actor)
+ if (not opt.enable_mask_hud) then
+ if (not helm_removed) then
+ helm_removed = true
+ exec_console_cmd("r2_mask_control 0.0,0.0,0.0,0.0")
+ HUD_mask(false, false, false)
+ end
+ return
+ end
+ helm_removed = false
+
+ helm_fx[1] = 0.0
+ helm_fx[2] = 0.0
+ helm_fx[3] = 0.0
+ helm_fx[4] = 0.0
+ local helm_hud, helm_name, helm_respi
+
+ -- Get helmet hud info
+ local helmet = actor:alive() and (actor:item_in_slot(12) or actor:get_current_outfit())
+ if helmet and (not helm_off) then
+ local sec = helmet:section()
+ if opt.helmets[sec] then
+ helm_con = "blue1"
+
+ if (opt.helmets[sec].breakable) then
+ local cond = helmet:condition()
+ for i=1,10 do
+ local idx = "_" .. tostring(i)
+ if (opt.helmets_con[idx].con < cond) then
+ helm_con = opt.helmets_con[idx].hud
+ helm_fx[1] = opt.helmets_con[idx].fx
+ break
+ end
+ end
+ end
+ helm_hud_pre = STATIC_MASK and opt.helmets[sec].hud or "hud_gas"
+ helm_fog = opt.helmets[sec].blurs
+ helm_hud = helm_hud_pre .. "_" .. helm_con
+ helm_respi = opt.helmets[sec].respi
+ helm_name = helmet:name()
+
+ helm_fx[2] = opt.helmets_vingette[helm_hud_pre] or 0.0
+ helm_fx[3] = opt.enable_visor_reflection and opt.helmets_reflect[helm_hud_pre] and 1.0 or 0.0
+ helm_fx[4] = 1.0
+ end
+ end
+
+ -- Set mask HUD on/off
+ if helm_off then
+ helm_fx[1] = 0.0
+ helm_fx[2] = 0.0
+ helm_fx[3] = 0.0
+ helm_fx[4] = 0.0
+ HUD_mask(false, false, false)
+ else
+ HUD_mask(helm_hud, helm_name, helm_respi)
+ end
+
+ -- Set distortion, vingette, reflection effect for +R2
+ if (not IS_R1) and ((helm_fx[1] ~= helm_fx_old[1]) or (helm_fx[2] ~= helm_fx_old[2]) or (helm_fx[3] ~= helm_fx_old[3]) or (helm_fx[4] ~= helm_fx_old[4])) then
+ helm_fx_old[1] = helm_fx[1]
+ helm_fx_old[2] = helm_fx[2]
+ helm_fx_old[3] = helm_fx[3]
+ helm_fx_old[4] = helm_fx[4]
+ exec_console_cmd("r2_mask_control " .. tostring(helm_fx[1]) .. "," .. tostring(helm_fx[2]) .. "," .. tostring(helm_fx[3]) .. "," .. tostring(helm_fx[4]))
+ end
+end
+
+
+local fog_removed
+function Update_Fog(actor)
+ if (not opt.enable_breathing_fog) then
+ if (not fog_removed) then
+ fog_removed = true
+ HUD_fog(false)
+ end
+ return
+ end
+ fog_removed = false
+
+ if curr_hud and (helm_fog > 0) and not string.find(curr_hud,"_red3") then
+ local stretchy = 0.65/(math.floor(device().height/device().width*1000)/1000)
+ if (stretchy < 1) then
+ stretchy = 1
+ end
+ local rect = {x = 0, y = -(stretchy-1)*300, w = 1024, h = 768*stretchy}
+ HUD_fog(true, actor, rect)
+ else
+ HUD_fog(false)
+ end
+end
+
+local health_play = 0
+local snd_tg = 0
+local actor_speed = {x=0, y=0, z=0}
+local actor_speed_time = 0
+function Update_Breathing(actor)
+ if (not opt.enable_breathing_sound) then
+ return
+ end
+
+ --local cam_dist = actor:bone_position("bip01_head"):distance_to_sqr(device().cam_pos)
+ local pos = actor:position()
+ local speed = (pos.x - actor_speed.x)^2 + (pos.y - actor_speed.y)^2 + (pos.z - actor_speed.z)^2
+ actor_speed.x = pos.x
+ actor_speed.y = pos.y
+ actor_speed.z = pos.z
+
+ if (speed > opt.speed.mini) then
+ actor_speed_time = actor_speed_time + opt.speed.inc
+ elseif actor_speed_time > opt.speed.dec then
+ actor_speed_time = actor_speed_time - opt.speed.dec
+ end
+ actor_speed_time = math.min(32, actor_speed_time + actor.bleeding * opt.speed.k_bleed)
+
+ if is_respi_on() then
+ play_sound_breath_mask(actor)
+ else
+ play_sound_breath(actor)
+ end
+end
+
+
+local bleed_set = false
+local bleed_rad_eff = false
+local bleed_1_tg = 0
+local bleed_2 = false
+local bleed_removed
+function Update_Bleeding(actor)
+ if (not opt.enable_bleed_effect) then
+ if (not bleed_removed) then
+ bleed_removed = true
+ level.remove_pp_effector(2012)
+ level.remove_pp_effector(2013)
+ level.remove_pp_effector(2015)
+ end
+ return
+ end
+ bleed_removed = false
+
+ if (actor.health < 0.21) and (bleed_set ~= true) then
+ level.add_pp_effector("alcohol.ppe",2012,true)
+ bleed_set = true
+ end
+ if (actor.health > 0.20) and (bleed_set ~= false) then
+ level.remove_pp_effector(2012)
+ bleed_set = false
+ end
+ if (actor.radiation > 0.3) and (bleed_rad_eff ~= true) then
+ level.add_pp_effector("alcohol.ppe",2013,true)
+ bleed_rad_eff = true
+ end
+ if (actor.radiation == 0) and (bleed_rad_eff ~= false) then
+ level.remove_pp_effector(2013)
+ bleed_rad_eff = false
+ end
+ if (actor.bleeding > 0.5) and (actor.health < 0.2) and bleed_1_tg < time_global() then
+ level.add_pp_effector("deimos1.ppe",2014,false)
+ bleed_1_tg = time_global() + math.random(4000,10000)
+ end
+ if (actor.bleeding > 0.5) and (actor.power < 0.25) and (bleed_2 ~= true) then
+ level.add_cam_effector("camera_effects\\pripyat_horror.anm",1001,false, "")
+ level.add_pp_effector("snd_shock.ppe",2015,true)
+ bleed_2 = true
+ end
+ if (actor.bleeding < 0.2) or (actor.power > 0.7) and (bleed_2 ~= false) then
+ level.remove_pp_effector(2015)
+ bleed_2 = false
+ end
+end
+
+
+local actor_last_health = 0
+local blood_tg = 0
+local blood_tg_b = 0
+local blood_state = "no"
+local blood_count = 0
+function Update_Blood(actor)
+ local hud = get_hud()
+ if opt.enable_blood_splash and actor:alive() and (not ui_disabled) then
+ local current_health = math.floor(actor.health*100)
+ local tg = time_global()
+ if (tg > blood_tg) then
+ if (blood_state == "stopit") then
+ if hud:GetCustomStatic("hud_blood" .. blood_count) then
+ hud:RemoveCustomStatic("hud_blood" .. blood_count)
+ end
+ blood_count = blood_count - 1
+ if (blood_count == 0) then
+ blood_state = "no"
+ end
+ blood_tg = time_global()+110
+ else
+ if (actor_last_health ~= 0) and (actor_last_health > current_health) and (actor.radiation < 0.12) then
+ if (current_health < math.random(100)) then
+ blood_state = "yes"
+ end
+ level.add_pp_effector("bloody.ppe",2010,false)
+ end
+ if (blood_state == "yes") then
+ blood_tg = time_global() + math.random(500,2000)
+ else
+ blood_tg = time_global() + math.random(2000,5000)
+ end
+ actor_last_health = current_health
+ end
+ end
+ if (tg > blood_tg_b) and (blood_state == "yes") then
+ blood_tg_b = time_global() + 130
+ blood_count = blood_count + 1
+ hud:AddCustomStatic("hud_blood" .. blood_count)
+ if (blood_count == 4) then
+ blood_state = "stopit"
+ end
+ end
+ else
+ for i=1,4 do
+ if hud:GetCustomStatic("hud_blood" .. i) then
+ hud:RemoveCustomStatic("hud_blood" .. i)
+ end
+ end
+ end
+end
+
+
+local prev_health = 0
+local impact_snd, impact_cam
+local impact_removed
+function Update_Impact(actor)
+ if (not opt.enable_hit_impact_effect) then
+ if (not impact_removed) then
+ impact_removed = true
+ level.remove_pp_effector(2011)
+ level.remove_pp_effector(2016)
+ end
+ return
+ end
+ impact_removed = false
+
+ if (prev_health > (actor.health + 0.05)) then
+ level.add_pp_effector(opt.health.little_ppe ,2011, false)
+ level.set_pp_effector_factor(2011,(prev_health - actor.health)*100)
+ if (prev_health > (actor.health + 0.2)) then
+ if (prev_health > (actor.health + 0.5)) then
+ level.add_pp_effector(opt.health.huge_ppe, 2016, false)
+ level.set_pp_effector_factor(2016,(prev_health - actor.health)*100)
+ impact_cam = opt.health.huge_anm
+ impact_snd = opt.health.huge_snd
+ else
+ impact_cam = opt.health.middle_anm
+ impact_snd = opt.health.middle_snd
+ end
+
+ -- play impact cam effect
+ if (#impact_cam > 0) and (not shott) then
+ level.add_cam_effector("camera_effects\\" .. impact_cam[math.random(#impact_cam)] .. ".anm", 999, false, "", 0, false)
+ end
+
+ -- play impact sound effect
+ if (#impact_snd > 0) then
+ local snd_obj = sound_object("actor\\" .. impact_snd[math.random(#impact_snd)])
+ snd_obj:play(actor,0,sound_object.s2d)
+ end
+
+ -- drop player's active item
+ if (math.random() < (prev_health - actor.health)/2.5) then
+ local active_item = actor:active_item()
+ if active_item and (not opt.health.no_drop_wnp[active_item:section()]) then
+ actor:drop_item(active_item)
+ end
+ end
+ end
+ end
+
+ prev_health = actor.health
+end
+
+--[[
+local ammo_current = -1
+function Update_Shooting(actor)
+ if (not opt.enable_shoot_effects) then
+ return
+ end
+
+ local active_item = actor:active_item()
+ local wpn = utils_item.item_is_fa(active_item) and active_item
+ if wpn then
+ local sec = wpn:section()
+
+ if (not wpn_fx[sec]) then
+ parse_anims(sec)
+ end
+
+ if (wpn_fx[sec] == true) then
+ return
+ end
+
+ local ammo_in_mag = wpn:get_ammo_in_magazine()
+ if (ammo_current ~= ammo_in_mag) and (wpn:get_state() == 5) then
+ shoot_effect(sec)
+ ammo_current = ammo_in_mag
+ end
+ end
+end
+--]]
+
+function Update_Shooting(obj, wpn, ammo_elapsed, grenade_elapsed, ammo_type, grenade_type)
+ if (obj:id() ~= AC_ID) then
+ return
+ end
+
+ if (not opt.enable_shoot_effects) 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(sec)
+
+ --printf("Shooting effect played for [%s]", sec)
+ end
+end
+
+
+
+local bar_hp_check = true
+local bar_hp_old = true
+local bar_hp_new = true
+local bar_hp_first = true
+local bar_hp_trigger = 0.95
+function Update_HealthHUD(actor)
+ -- Autohide disabled
+ if (not autohide) then
+ if bar_hp_check then
+ bar_hp_check = false
+ local maingameui = ActorMenu.get_maingame()
+ if (maingameui and maingameui.m_ui_hud_states) then
+ maingameui.m_ui_hud_states.m_ui_health_bar_show = true
+ end
+ end
+ return
+
+ elseif bar_hp_first then
+ bar_hp_first = false
+ local maingameui = ActorMenu.get_maingame()
+ if (maingameui and maingameui.m_ui_hud_states) then
+ maingameui.m_ui_hud_states.m_ui_health_bar_show = true
+ end
+
+ else
+ bar_hp_new = true --(actor.health < bar_hp_trigger)
+ if (bar_hp_old ~= bar_hp_new) then
+ local maingameui = ActorMenu.get_maingame()
+ if (maingameui and maingameui.m_ui_hud_states) then
+ maingameui.m_ui_hud_states.m_ui_health_bar_show = bar_hp_new
+ end
+ end
+ end
+end
+
+local bar_pwr_check = true
+local bar_pwr_old = true
+local bar_pwr_new = true
+local bar_pwr_first = true
+local bar_pwr_trigger = 0.95
+function Update_StaminaHUD(actor)
+ -- Autohide disabled
+ if (not autohide) then
+ if bar_pwr_check then
+ bar_pwr_check = false
+ local maingameui = ActorMenu.get_maingame()
+ if (maingameui and maingameui.m_ui_hud_states) then
+ maingameui.m_ui_hud_states.m_ui_stamina_bar_show = true
+ end
+ end
+ return
+
+ elseif bar_pwr_first then
+ bar_pwr_first = false
+ local maingameui = ActorMenu.get_maingame()
+ if (maingameui and maingameui.m_ui_hud_states) then
+ maingameui.m_ui_hud_states.m_ui_stamina_bar_show = true
+ end
+
+ else
+ bar_pwr_new = (actor.power < bar_pwr_trigger)
+ if (bar_pwr_old ~= bar_pwr_new) then
+ bar_pwr_old = bar_pwr_new
+ local maingameui = ActorMenu.get_maingame()
+ if (maingameui and maingameui.m_ui_hud_states) then
+ maingameui.m_ui_hud_states.m_ui_stamina_bar_show = bar_pwr_new
+ end
+ end
+ end
+end
+
+
+--------------------------------------------------------------
+-- HUD
+--------------------------------------------------------------
+local fogs
+local fog_val = 0 -- level of fogging from 0 to 1
+local fog_tg = 0 -- last update time
+local fog_cycle = 0 -- start time of the last breath cycle (exhale)
+local fog_last_phase = 0
+local zbias = Frect():set(0,0,1024,1024)
+function HUD_fog(enabled, actor, rect)
+ local hud = get_hud()
+
+ -- Gather breathing fog textures for the first time if they not defined
+ if (not fogs) then
+ fogs = {}
+ for i=1,4 do
+ local pht = {}
+ for ii = 1,10 do
+ local static = "hud_blur" .. i .. "_" .. ii
+ hud:AddCustomStatic(static)
+ pht[ii] = hud:GetCustomStatic(static):wnd()
+ end
+ fogs[i] = pht
+ end
+ end
+
+ -- Gather breathing fog for the first time if it's not defined
+ if (not enabled) then
+ for i,t in ipairs(fogs) do
+ for ii,st in ipairs(t) do
+ st:SetWndRect(Frect():set(0,0,0,0))
+ end
+ end
+ fog_val = 0
+ fog_cycle = time_global()
+ fog_last_phase = 0
+ return
+ end
+
+ -- Cycles depending on the power of breathing: 0->1->0 0->1->2->4->5->0 0->1->2->3->4->5->0 5->4->3->4->5 4->3->4
+ local power = actor.power
+ local period = 1.0 + (power * power * 1.0) -- current respiratory rate from 30 to 120 cycles per minute
+ local expirt = 0.3
+ local delta = (time_global() - fog_tg)/1000 -- delta in seconds
+ local phase = (time_global() - fog_cycle)/1000 -- phase of the respiratory cycle in seconds.
+ fog_tg = time_global()
+ if phase > period then
+ phase = phase%period
+ fog_cycle = fog_tg-phase*1000
+ end
+ if (fog_last_phase > phase) then
+ fog_last_phase = 0
+ end
+ local blurdelta = delta * -0.7 -- ventilation operation
+ if (fog_last_phase < expirt) and (phase < expirt) then
+ blurdelta = blurdelta + (phase - fog_last_phase)*helm_fog
+ elseif (fog_last_phase < expirt) then
+ blurdelta = blurdelta + (expirt - fog_last_phase)*helm_fog
+ end
+ fog_last_phase = phase
+ fog_val = fog_val + blurdelta
+ if (fog_val > 0.999) then
+ fog_val = 0.999
+ elseif (fog_val < 0) then
+ fog_val = 0
+ end
+ local tm = math.floor(fog_val*3)
+ local tmn = (tm+1)
+ local v = fog_val*3-math.floor(fog_val*3)
+ v = 1-v
+ local v1 = 1-v
+ local n1 = math.ceil(v*10)
+ local n2 = math.ceil(v1*10)
+ for i=1,4 do
+ for ii=1,10 do
+ if (i == tm and ii == n1) then
+ fogs[tm][n1]:SetWndRect(Frect():set(rect.x, rect.y, rect.w, rect.h))
+ fogs[tm][n1]:SetTextureRect(Frect():set(zbias.x1/4, zbias.y1/4, zbias.x2/4, zbias.y2/4))
+ elseif (i == tmn and ii == n2) then
+ fogs[tmn][n2]:SetWndRect(Frect():set(rect.x, rect.y, rect.w, rect.h))
+ fogs[tmn][n2]:SetTextureRect(Frect():set(zbias.x1/4, zbias.y1/4, zbias.x2/4, zbias.y2/4))
+ else
+ fogs[i][ii]:SetWndRect(Frect():set(0,0,0,0))
+ end
+ end
+ end
+end
+
+
+local mask_first_try = true
+function HUD_mask(helm_hud, helm_name, helm_respi)
+ local hud = get_hud()
+ local actor_pos = db.actor:bone_position("bip01_head")
+
+ if (not helm_hud) or (cam_dist > opt.cam_dist) then
+ if IS_R1 then -- Distortion/Mask UI
+ local wchud = hud:GetCustomStatic(curr_hud)
+ if wchud then
+ hud:RemoveCustomStatic(curr_hud)
+ end
+ end
+
+ if (IS_R1 and (not STATIC_MASK)) or STATIC_VINGETTE then -- Vingette
+ local wchud = hud:GetCustomStatic(helm_r1_vingette)
+ if wchud then
+ hud:RemoveCustomStatic(helm_r1_vingette)
+ end
+ end
+ curr_hud = nil
+ mask_first_try = true
+ helm_respi_state = false
+
+ elseif (helm_hud ~= curr_hud) then
+ if IS_R1 then -- Distortion/Mask UI
+ if curr_hud then
+ hud:RemoveCustomStatic(curr_hud)
+ end
+
+ hud:AddCustomStatic(helm_hud)
+ end
+
+ if (IS_R1 and (not STATIC_MASK)) or STATIC_VINGETTE then -- Vingette
+ local wchud = hud:GetCustomStatic(helm_r1_vingette)
+ if (not wchud) then
+ hud:AddCustomStatic(helm_r1_vingette)
+ end
+ end
+
+ if string.find(helm_hud, helm_hud_pre) then
+ if (not mask_first_try) and (helm_con ~= "blue2") and (helm_con ~= "blue1") and (helm_name == helm_curr) then
+ local snd_obj = sound_object("material\\glass\\glass_fall03hl")
+ snd_obj:play(db.actor,0,sound_object.s2d)
+ end
+ if mask_first_try then
+ mask_first_try = false
+ end
+ end
+
+ helm_curr = helm_name
+ curr_hud = helm_hud
+ helm_respi_state = helm_respi
+ end
+end
+
+
+--------------------------------------------------------------
+-- Utilities
+--------------------------------------------------------------
+function play_item_fx(name)
+ if (not opt.enable_animations) then
+ return
+ end
+
+ if (not ini_eff:section_exist(tostring(name) or 'INVALID_ARG')) then
+ printf("~WARNING actor_effects.play_item_fx | item animation [%s] doesn't exist!", name)
+ return
+
+ end
+
+ if (time_global() > time_disabled) and animation_start then
+ local tg = tostring(time_global())
+ item_not_in_use = false
+ item_in_use[tg] = {}
+
+ local n = ini_eff:line_count(name)
+ for i=0,n-1 do
+ local result, id, value = ini_eff:r_line_ex(name,i,"","")
+ id = id and tonumber(id)
+ if id and value then
+ item_in_use[tg][id] = value
+ end
+ end
+ end
+end
+
+function play_continuous_effect(period)
+
+ --if (not opt.enable_animations) then return end
+
+ local tot = 0
+ local one_p = 5600 --3801
+ local num = math.ceil(period/one_p)
+
+ if (time_global() > time_disabled) then
+ local tg = tostring(time_global())
+ item_not_in_use = false
+ item_in_use[tg] = {}
+ item_in_use[tg][0] = "actor_effects.use_weapon(0)"
+ item_in_use[tg][1] = "xr_effects.disable_ui_inventory(db.actor, nil)"
+ item_in_use[tg][2] = "xr_effects.disable_ui_lite_with_imput(db.actor, nil)"
+ item_in_use[tg][550] = "level.add_cam_effector('camera_effects\\\\item_use.anm', 8053, false,'')"
+ tot = 550
+ for i=1,num-1 do
+ tot = tot + one_p
+ item_in_use[tg][tot] = "level.add_cam_effector('camera_effects\\\\item_use.anm', 8053, false,'')"
+ end
+ tot = tot + one_p
+ item_in_use[tg][tot] = "xr_effects.enable_ui_lite(db.actor, nil)"
+ item_in_use[tg][tot + 1399] = "xr_effects.enable_imput(db.actor, nil)"
+ item_in_use[tg][tot + 1999] = "actor_effects.use_weapon(1)"
+ end
+end
+
+local breath_sound = 0
+local gas_play = 0
+function play_sound_breath_mask(actor)
+ local tg = time_global()
+ if (tg > snd_tg) then
+ gas_play = gas_play + 1
+ if (gas_play > 8) then
+ gas_play = 1
+ end
+ breath_sound = sound_object("actor\\gas_breath_" .. tostring((actor.health > 0.2) and math.ceil((1.01 - actor.power)*3 + actor_speed_time/8) or 8) .. "_" .. gas_play)
+ snd_tg = tg + breath_sound:length()*1.25
+ breath_sound:play(actor, 0, sound_object.s2d)
+ breath_sound.volume = (cam_dist > opt.cam_dist) and 0 or (1 - cam_dist/opt.cam_dist) * 0.5
+ end
+end
+
+local run_play = 0
+function play_sound_breath(actor)
+ local tg = time_global()
+ local health = actor.health
+
+ if (tg < snd_tg) or (health < 0) then
+ return
+ end
+
+ if (health > opt.health.level2) then
+ if (actor_speed_time > opt.speed.time_mini) or (actor.power < opt.speed.stamina) or (run_play == 1) then
+ run_play = run_play + 1
+ if (run_play > 2) then
+ run_play = 1
+ end
+ breath_sound = sound_object("actor\\run_" .. math.ceil(3*actor_speed_time/44) .. "_" .. run_play)
+ breath_sound:play(actor, 0, sound_object.s2d)
+ breath_sound.volume = (cam_dist > opt.cam_dist) and 0 or (1 - cam_dist/opt.cam_dist)
+ snd_tg = tg+breath_sound:length()*1.15
+ else
+ run_play = 2
+ end
+ return
+ end
+
+ if (health <= opt.health.level1) then
+ health = 1
+ if (math.random() < 0.1) then
+ health_play = 0
+ else
+ health_play = health_play + 1
+ if (health_play > 4) then
+ health_play = 1
+ end
+ end
+ else
+ health = 2
+ health_play = health_play+1
+ if (health_play > 4) then
+ health_play = 1
+ end
+ end
+
+ snd_tg = tg + (opt.health.injury_snd["_"..health.."_"..health_play] or 4000)
+ breath_sound = sound_object("actor\\health_" .. health .. "_" .. health_play)
+ breath_sound:play(actor, 0, sound_object.s2d)
+ breath_sound.volume = (cam_dist > opt.cam_dist) and 0 or (1 - cam_dist/opt.cam_dist)
+end
+
+
+local shotc = 1
+local shott = 0
+local fov_r = 1
+function shoot_effect(sect)
+ --printf("-SHOOT")
+
+ if shott and (shott < time_global()) then
+ shotc = 1
+ shott = nil
+ end
+
+ local anims = {}
+ 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
+-- local cnt, r = math.modf(s*fov_r)
+-- if r ~=0 then
+-- s = math.max(1, cnt - 1)
+-- end
+ 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,a.e,a.d)
+ for ii=1,a.c do
+ level.add_cam_effector(n,math.random(5000,8000),false,"")
+ end
+ 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
+ shotc = shotc+1
+ shott = time_global()+100
+end
+
+
+function switch_helm()
+ helm_off = not helm_off
+end
+
+function is_respi_on()
+ return helm_respi_state
+end
+
+function is_mask_on()
+ return curr_hud
+end
+
+function is_animations_on()
+ return opt.enable_animations
+end
+
+function set_animations(state)
+ opt.enable_animations = state and true or false
+end
+
+function clear_mask_hud()
+ HUD_mask(false, false, false)
+end
+
+function reset_idle_anim(wpn, empty)
+ if wpn then
+ wpn:switch_state(0)
+ end
+
+ -- TODO: rebind keys
+ can_shoot = true
+ return true
+end
+
+function actor_can_shoot(state)
+ can_shoot = state
+end
+
+function disable_effects_timer(n)
+ time_disabled = time_global() + n
+end
+
+function use_helmet()
+ switch_helm()
+end
+
+function use_weapon(f)
+ local hidden = weapon_hidden
+ weapon_hidden = weapon_hidden + f * 2 - 1
+ if weapon_hidden == 0 then
+ db.actor:restore_weapon()
+ elseif hidden == 0 then
+ db.actor:hide_weapon()
+ end
+end
+
+function toggle_active_slot(f)
+ if (f == 0) then
+ last_slot = db.actor:active_slot()
+ db.actor:activate_slot(0)
+ else
+ db.actor:activate_slot(last_slot)
+ end
+end
+
+function toggle_hud_autohide(state)
+ autohide = state
+ bar_hp_check = true
+ bar_pwr_check = true
+end
+
+
+--------------------------------------------------------------
+-- Callbacks
+--------------------------------------------------------------
+local tg_acon = 0
+local tg_acon_step = 180
+local tg_hud = 50
+local tg_hud_step = 120
+local tg_bleed = 100
+local tg_bleed_step = 400
+local function actor_on_update()
+ local actor = db.actor
+ if (not actor) then
+ return
+ end
+
+ local tg = time_global()
+ cam_dist = actor:bone_position("bip01_head"):distance_to_sqr(device().cam_pos)
+
+ if (tg > tg_bleed) then
+ tg_bleed = tg + tg_bleed_step
+ Update_Bleeding(actor)
+ end
+
+ if (tg > tg_acon) then
+ tg_acon = tg + tg_acon_step
+
+ Update_Breathing(actor)
+ Update_Rad(actor)
+ end
+
+ if (tg > tg_hud) then
+ tg_hud = tg + tg_hud_step
+ Update_Blood(actor)
+ Update_Mask(actor)
+ end
+
+ Update_Fog(actor)
+
+ Update_Impact(actor)
+ Update_ItemSwap(actor)
+ Update_Animations(actor)
+ --Update_Shooting(actor)
+ Update_HealthHUD(actor)
+ Update_StaminaHUD(actor)
+end
+
+local function on_key_release(key)
+ animation_start = true
+ local bind = dik_to_bind(key)
+
+ -- Clean Mask
+ if (bind == key_bindings.kCAM_ZOOM_IN) then
+ Hit_MaskCleaning()
+
+ -- Toggle Torch
+ elseif (bind == key_bindings.kTORCH) then
+ Hit_TorchToggle()
+
+ -- Grenade Quickthrow
+ elseif (bind == key_bindings.kCUSTOM19) then
+ Hit_GrenadeQuickthrow()
+
+ -- Toggle HUD
+ elseif (bind == key_bindings.kCUSTOM6) then
+ local val = not (get_console_cmd(1,"hud_draw"))
+ local toggl = val and "on" or "off"
+ exec_console_cmd("hud_draw " .. toggl)
+
+ -- Toggle item animations
+ elseif (bind == key_bindings.kCAM_ZOOM_OUT) then
+ local old_state = opt.enable_animations and true or false
+ local new_state = not old_state
+
+ ui_options.set("video/player/animations", new_state)
+ opt.enable_animations = new_state
+
+ if new_state then
+ xr_sound.set_sound_play(AC_ID, "pda_tips")
+ else
+ xr_sound.set_sound_play(AC_ID, "pda_alarm")
+ end
+
+ local str = new_state and "st_toggle_animation_on" or "st_toggle_animation_off"
+ actor_menu.set_msg(2, game.translate_string(str))
+
+ -- Screenshot
+ elseif (bind == key_bindings.kSCREENSHOT) then
+ snd_cam:play(db.actor,0,sound_object.s2d)
+
+ -- PDA Map
+ elseif (bind == key_bindings.kCUSTOM20) then
+ local pda_menu = ActorMenu.get_pda_menu()
+ local pda3d = get_console_cmd(1,"g_3d_pda")
+ if not (pda_menu:IsShown()) and db.actor:item_in_slot(8) then
+ if (pda3d) then
+ db.actor:activate_slot(8)
+ else
+ pda_menu:ShowDialog(true)
+ end
+
+ pda_menu:SetActiveSubdialog("eptTasks")
+ elseif (pda_menu:IsShown()) then
+ if (pda3d) then
+ db.actor:activate_slot(0)
+ else
+ pda_menu:HideDialog()
+ end
+ end
+ end
+end
+
+local ruck_last_outfit = -1
+local ruck_last_helmet = -1
+local ruck_last_backpack = -1
+local function actor_item_to_ruck(obj)
+ local id = obj:id()
+ local play_anm = false
+
+ if (id == ruck_last_outfit) then
+ ruck_last_outfit = -1
+ play_anm = true
+ elseif (id == ruck_last_helmet) then
+ ruck_last_helmet = -1
+ play_anm = true
+ --elseif (id == ruck_last_backpack) then
+ --ruck_last_backpack = -1
+ --play_anm = true
+ end
+
+ if play_anm and (not has_alife_info("BAR_ARENA_FIGHT")) then
+ if IsOutfit(obj) then
+ play_item_fx("outfit")
+ elseif IsHeadgear(obj) then
+ play_item_fx("helm")
+ elseif IsItem("backpack", nil, obj) then
+ play_item_fx("outfit")
+ end
+ end
+end
+
+local function actor_item_to_slot(obj)
+ if (not has_alife_info("BAR_ARENA_FIGHT")) then
+ if IsOutfit(obj) then
+ ruck_last_backpack = obj:id()
+ play_item_fx("outfit")
+ elseif IsHeadgear(obj) then
+ ruck_last_backpack = obj:id()
+ play_item_fx("helm")
+ elseif IsItem("backpack", nil, obj) then
+ ruck_last_backpack = obj:id()
+ play_item_fx("outfit")
+ elseif opt.enable_animations then
+ local rand = math.random(1,4)
+ level.add_cam_effector("camera_effects\\switch\\low" .. rand .. ".anm", 23234, false,'', 0, false)
+ end
+ end
+end
+
+local function actor_on_item_use(obj)
+ play_item_fx(obj:section())
+end
+
+local last_wpn_snd_empty = {nil, "$no_sound", 1}
+local tg_snd_empty = 0
+local critical_wpn_con = 0.014
+local delay_snd_empty = 300 -- ms
+local function actor_on_weapon_before_fire(flags)
+ local tg = time_global()
+
+ local obj_wpn = db.actor:active_item()
+ if obj_wpn and IsWeapon(obj_wpn) and (not IsMelee(obj_wpn)) then
+ local con = obj_wpn:condition()
+ if (con <= critical_wpn_con) then
+ local sec = obj_wpn:section()
+
+ -- Cache
+ if (sec ~= last_wpn_snd_empty[1]) then
+ -- Reset
+ last_wpn_snd_empty[1] = sec
+ last_wpn_snd_empty[2] = "$no_sound"
+ last_wpn_snd_empty[3] = 1
+
+ -- Get empty sound
+ local snd = ini_sys:r_string_ex(sec,"snd_empty")
+ if snd and (snd ~= "") then
+ snd = str_explode(snd,",")
+ last_wpn_snd_empty[2] = snd[1]
+ last_wpn_snd_empty[3] = snd[2] or 1
+ end
+ end
+
+ -- Play empty clip sound
+ if (last_wpn_snd_empty[2] ~= "$no_sound") and (tg > tg_snd_empty) then
+ utils_obj.play_sound( last_wpn_snd_empty[2], last_wpn_snd_empty[3] or 1 )
+ tg_snd_empty = tg + delay_snd_empty
+ end
+
+ -- Don't shoot
+ flags.ret_value = false
+ end
+ end
+
+ if (not can_shoot) then
+ flags.ret_value = false
+ end
+end
+
+local function actor_on_first_update()
+ -- Enable mini-map
+ minimap_enabled = ui_options.get("video/hud/show_minimap")
+ local maingameui = ActorMenu.get_maingame()
+ if (maingameui and maingameui.UIZoneMap) then
+ maingameui.UIZoneMap.disabled = not minimap_enabled
+ maingameui.UIMotionIcon:Show(maingameui.UIZoneMap.disabled == false)
+ end
+
+ init_main_settings()
+ --disable_effects_timer(5000)
+ if db.actor then
+ ruck_last_outfit = db.actor:item_in_slot(7) and db.actor:item_in_slot(7):id() or -1
+ ruck_last_helmet = db.actor:item_in_slot(12) and db.actor:item_in_slot(12):id() or -1
+ ruck_last_backpack = db.actor:item_in_slot(13) and db.actor:item_in_slot(13):id() or -1
+
+ if (detector_was_active) then
+ db.actor:show_detector()
+ end
+ end
+
+ --utils_data.print_table(opt)
+
+ --Animation stuff
+ game.only_allow_movekeys(false)
+ game.set_actor_allow_ladder(true)
+ game.stop_all_hud_anms()
+ game.stop_hud_motion()
+
+ mc_anm_time_1 = game.get_motion_length(mc_anm_sec, "anm_hide_hand", hide_hand_speed)
+ mc_anm_time_2 = game.get_motion_length(mc_anm_sec, "anm_wipe", 1)
+ torch_anm_time = game.get_motion_length(torch_anm_sec, "anm_switch", 1)
+end
+
+local function save_state(m_data)
+
+ if (not db.actor) then
+ return
+ end
+
+ m_data.detector_was_active = db.actor:active_detector() and true or false
+end
+
+local function load_state(m_data)
+
+ detector_was_active = m_data.detector_was_active
+end
+
+function on_game_start()
+ init_settings()
+
+ RegisterScriptCallback("on_key_release",on_key_release)
+ RegisterScriptCallback("actor_item_to_slot",actor_item_to_slot)
+ RegisterScriptCallback("actor_item_to_ruck",actor_item_to_ruck)
+ RegisterScriptCallback("actor_on_item_drop",actor_item_to_ruck)
+ RegisterScriptCallback("actor_on_item_use",actor_on_item_use)
+ RegisterScriptCallback("actor_on_weapon_before_fire",actor_on_weapon_before_fire)
+ RegisterScriptCallback("actor_on_weapon_lower",actor_on_weapon_lower)
+ RegisterScriptCallback("actor_on_weapon_raise",actor_on_weapon_raise)
+ RegisterScriptCallback("actor_on_update",actor_on_update)
+ RegisterScriptCallback("actor_on_first_update",actor_on_first_update)
+ RegisterScriptCallback("actor_on_weapon_fired",Update_Shooting)
+ RegisterScriptCallback("burer_on_before_weapon_drop",burer_on_before_weapon_drop)
+ RegisterScriptCallback("on_option_change",init_main_settings)
+ RegisterScriptCallback("save_state",save_state)
+ RegisterScriptCallback("load_state",load_state)
+end
diff --git a/mods/[DEV] Brotherhood/gamedata/scripts/brotherhood_npcs.script b/mods/[DEV] Brotherhood/gamedata/scripts/brotherhood_npcs.script
new file mode 100644
index 00000000..325477f2
--- /dev/null
+++ b/mods/[DEV] Brotherhood/gamedata/scripts/brotherhood_npcs.script
@@ -0,0 +1,474 @@
+---remove spawn zaton_mercenary_1_squad
+
+
+
+
+local HI = has_alife_info
+local GI = give_info
+local DI = disable_info
+function NI(str)
+ return not (has_alife_info(str))
+end
+local spawn_squad = dialogs_brotherhood.spawn_squad
+------- GENERAL Functions --------
+function actor_on_first_update()
+ marlo_stanfield_init()
+ chris_partlow_init()
+ ---flavio_becca_init()
+ ---nr_ecologist_rydzyk_init()
+ ---nr_ecologist_1_init()
+ ---nr_ecologist_2_init()
+ ---nr_ecologist_3_init()
+ vybegallo_init()
+ sasha_tolstoy_init()
+ bellerophon_init()
+ ---erast_fandorin_init()
+ ---ac_pri_medic_monolith_init()
+end
+
+
+
+function on_game_start()
+ RegisterScriptCallback("actor_on_first_update",actor_on_first_update)
+ RegisterScriptCallback("npc_on_net_spawn", npc_on_net_spawn_1)
+ RegisterScriptCallback("npc_on_net_spawn", npc_on_net_spawn_2)
+ RegisterScriptCallback("npc_on_net_spawn", npc_on_net_spawn_3)
+ RegisterScriptCallback("npc_on_net_spawn", npc_on_net_spawn_4)
+ RegisterScriptCallback("npc_on_net_spawn", npc_on_net_spawn_5)
+ RegisterScriptCallback("npc_on_net_spawn", npc_on_net_spawn_6)
+ RegisterScriptCallback("npc_on_net_spawn", npc_on_net_spawn_7)
+end
+
+function ac_pri_medic_monolith_init()
+ if (NI("ac_pri_medic_monolith_init")) then
+ local pos_1 = vector():set( -14.302313804626,0.84455877542496,198.07749938965 )
+ if not (get_story_se_object("ac_pri_medic_monolith_squad")) then
+ local se_squad = spawn_squad("ac_pri_medic_monolith_squad", pos_1, 85652, 2985)
+ end
+ if (get_story_se_object("ac_pri_medic_monolith_squad")) then
+ GI("ac_pri_medic_monolith_init")
+ end
+ end
+end
+
+function marlo_stanfield_init()
+ if HI("bar_deactivate_radar_done") then
+ if (NI("marlo_stanfield_init")) then
+ if not (get_story_se_object("marlo_stanfield")) then
+ local pos = vector():set( -7.0992422103882,23.103616714478,245.94242858887 )
+ local se_obj = alife_create( "marlo_stanfield", pos, 703991, 4556 )
+
+
+ end
+ if (get_story_se_object("marlo_stanfield")) then
+ GI("marlo_stanfield_init")
+ end
+ end
+ end
+end
+
+function chris_partlow_init()
+ if HI("bar_deactivate_radar_done") then
+ if (NI("chris_partlow_init")) then
+ if not (get_story_se_object("chris_partlow")) then
+ local pos = vector():set( -9.5265302658081,23.103614807129,245.18560791016 )
+ local se_obj = alife_create( "chris_partlow", pos, 699550, 4556 )
+
+ end
+ if (get_story_se_object("chris_partlow")) then
+ GI("chris_partlow_init")
+ end
+ end
+ end
+end
+
+function bellerophon_init()
+ if (NI("bellerophon_init")) then
+ if not (get_story_se_object("bellerophon_squad")) then
+ local smart = SIMBOARD.smarts_by_names["gar_smart_terrain_3_5"]
+ local squad = SIMBOARD:create_squad(smart,"bellerophon_squad")
+ end
+ if (get_story_se_object("bellerophon_squad")) then
+ GI("bellerophon_init")
+ end
+ end
+end
+function erast_fandorin_init()
+ if (NI("erast_fandorin_init")) then
+ if not (get_story_se_object("erast_fandorin_squad")) then
+ local smart = SIMBOARD.smarts_by_names["yan_smart_terrain_6_4"]
+ local squad = SIMBOARD:create_squad(smart,"erast_fandorin_squad")
+ end
+ if (get_story_se_object("erast_fandorin_squad")) then
+ GI("erast_fandorin_init")
+ end
+ end
+end
+
+function flavio_becca_init()
+ if (NI("flavio_becca_init")) then
+ if not (get_story_se_object("flavio_becca_squad")) then
+ local smart = SIMBOARD.smarts_by_names["jup_b41"]
+ local squad = SIMBOARD:create_squad(smart,"flavio_becca_squad")
+ end
+ if (get_story_se_object("flavio_becca_squad")) then
+ GI("flavio_becca_init")
+ end
+ end
+end
+
+function nr_ecologist_rydzyk_init()
+ if (NI("nr_ecologist_rydzyk_init")) then
+ if not (get_story_se_object("nr_ecologist_rydzyk_squad")) then
+ local smart = SIMBOARD.smarts_by_names["yan_smart_terrain_6_4"]
+ local squad = SIMBOARD:create_squad(smart,"nr_ecologist_rydzyk_squad")
+ end
+ if (get_story_se_object("nr_ecologist_rydzyk_squad")) then
+ GI("nr_ecologist_rydzyk_init")
+ end
+ end
+end
+
+function nr_ecologist_1_init()
+ if (NI("nr_ecologist_1_init")) then
+ if not (get_story_se_object("nr_ecologist_1_squad")) then
+ local smart = SIMBOARD.smarts_by_names["yan_smart_terrain_6_4"]
+ local squad = SIMBOARD:create_squad(smart,"nr_ecologist_1_squad")
+ end
+ if (get_story_se_object("nr_ecologist_1_squad")) then
+ GI("nr_ecologist_1_init")
+ end
+ end
+end
+
+function nr_ecologist_2_init()
+ if (NI("nr_ecologist_2_init")) then
+ if not (get_story_se_object("nr_ecologist_2_squad")) then
+ local smart = SIMBOARD.smarts_by_names["yan_smart_terrain_6_4"]
+ local squad = SIMBOARD:create_squad(smart,"nr_ecologist_2_squad")
+ end
+ if (get_story_se_object("nr_ecologist_2_squad")) then
+ GI("nr_ecologist_2_init")
+ end
+ end
+end
+
+function nr_ecologist_3_init()
+ if (NI("nr_ecologist_3_init")) then
+ if not (get_story_se_object("nr_ecologist_3_squad")) then
+ local smart = SIMBOARD.smarts_by_names["jup_b41"]
+ local squad = SIMBOARD:create_squad(smart,"nr_ecologist_3_squad")
+ end
+ if (get_story_se_object("nr_ecologist_3_squad")) then
+ GI("nr_ecologist_3_init")
+ end
+ end
+end
+
+function sasha_tolstoy_init()
+ if (NI("sasha_tolstoy_init")) then
+ if not (get_story_se_object("sasha_tolstoy_squad")) then
+ local smart = SIMBOARD.smarts_by_names["mar_smart_terrain_base"]
+ local squad = SIMBOARD:create_squad(smart,"sasha_tolstoy_squad")
+ end
+ if (get_story_se_object("sasha_tolstoy_squad")) then
+ GI("sasha_tolstoy_init")
+ end
+ end
+end
+
+function vybegallo_init()
+ if (NI("vybegallo_init")) then
+ if not (get_story_se_object("vybegallo_squad")) then
+ local smart = SIMBOARD.smarts_by_names["agr_smart_terrain_4_4"]
+ local squad = SIMBOARD:create_squad(smart,"vybegallo_squad")
+ end
+ if (get_story_se_object("vybegallo_squad")) then
+ GI("vybegallo_init")
+ end
+ end
+end
+
+
+function zaton_mercenary_1_init()
+ if (NI("zaton_mercenary_1_init")) then
+ if not (get_story_se_object("zaton_mercenary_1_squad")) then
+ local smart = SIMBOARD.smarts_by_names["zat_b40_smart_terrain"]
+ local squad = SIMBOARD:create_squad(smart,"zaton_mercenary_1_squad")
+ end
+ if (get_story_se_object("zaton_mercenary_1_squad")) then
+ GI("zaton_mercenary_1_init")
+ end
+ end
+end
+
+
+function npc_on_net_spawn_1(npc,se_obj)
+ local chris_partlow = get_story_object("chris_partlow")
+ if chris_partlow and npc:id() == chris_partlow:id() then
+ setup_npc_logic_brotherhood_1()
+ end
+end
+
+function npc_on_net_spawn_2(npc,se_obj)
+ local marlo_stanfield = get_story_object("marlo_stanfield")
+ if marlo_stanfield and npc:id() == marlo_stanfield:id() then
+ setup_npc_logic_brotherhood_2()
+ end
+end
+
+function setup_npc_logic_brotherhood_1()
+
+ local npc = get_story_object("chris_partlow")
+ npc:give_info_portion("npc_not_move")
+
+
+ local ltx_name = "scripts\\brotherhood_npc_control_chris.ltx"
+ local ltx = ini_file(ltx_name)
+ if not (ltx) then
+ log("ERROR: do not have access to scripts\\brotherhood_npc_control_chris.ltx! Make sure you installed properly!")
+ return
+ end
+
+ local id = npc:id()
+ local sim = alife()
+ local se_npc = sim:object(id)
+ local unreg_id = se_npc and se_npc.m_smart_terrain_id
+ if (unreg_id and unreg_id ~= 65535) then
+ local unreg = sim:object(unreg_id)
+ if (unreg) then
+ unreg:unregister_npc(se_npc)
+ end
+ end
+
+ xr_logic.configure_schemes(npc, ltx, ltx_name, modules.stype_stalker, loaded and st.loaded_section_logic or "logic", "")
+
+ local section = loaded and st.loaded_active_section or xr_logic.determine_section_to_activate(npc, ltx, "logic", db.actor)
+ xr_logic.activate_by_section(npc, ltx, section, "", loaded)
+ --printf("setup complete")
+
+end
+
+function setup_npc_logic_brotherhood_2()
+
+ local npc = get_story_object("marlo_stanfield")
+ npc:give_info_portion("npc_not_move")
+
+
+ local ltx_name = "scripts\\brotherhood_npc_control_marlo.ltx"
+ local ltx = ini_file(ltx_name)
+ if not (ltx) then
+ log("ERROR: do not have access to scripts\\brotherhood_npc_control.ltx! Make sure you installed properly!")
+ return
+ end
+
+ local id = npc:id()
+ local sim = alife()
+ local se_npc = sim:object(id)
+ local unreg_id = se_npc and se_npc.m_smart_terrain_id
+ if (unreg_id and unreg_id ~= 65535) then
+ local unreg = sim:object(unreg_id)
+ if (unreg) then
+ unreg:unregister_npc(se_npc)
+ end
+ end
+
+ xr_logic.configure_schemes(npc, ltx, ltx_name, modules.stype_stalker, loaded and st.loaded_section_logic or "logic", "")
+
+ local section = loaded and st.loaded_active_section or xr_logic.determine_section_to_activate(npc, ltx, "logic", db.actor)
+ xr_logic.activate_by_section(npc, ltx, section, "", loaded)
+ --printf("setup complete")
+
+end
+
+function npc_on_net_spawn_3(npc,se_obj)
+ local nr_ambush_1 = get_story_object("nr_ambush_1")
+ if nr_ambush_1 and npc:id() == nr_ambush_1:id() then
+ setup_nr_ambush_logic_brotherhood_1()
+ end
+end
+function npc_on_net_spawn_4(npc,se_obj)
+ local nr_ambush_2 = get_story_object("nr_ambush_2")
+ if nr_ambush_2 and npc:id() == nr_ambush_2:id() then
+ setup_nr_ambush_logic_brotherhood_2()
+ end
+end
+function npc_on_net_spawn_5(npc,se_obj)
+ local nr_ambush_3 = get_story_object("nr_ambush_3")
+ if nr_ambush_3 and npc:id() == nr_ambush_3:id() then
+ setup_nr_ambush_logic_brotherhood_3()
+ end
+end
+function npc_on_net_spawn_6(npc,se_obj)
+ local nr_ambush_4 = get_story_object("nr_ambush_4")
+ if nr_ambush_4 and npc:id() == nr_ambush_4:id() then
+ setup_nr_ambush_logic_brotherhood_4()
+ end
+end
+function npc_on_net_spawn_7(npc,se_obj)
+ local nr_ambush_5 = get_story_object("nr_ambush_5")
+ if nr_ambush_5 and npc:id() == nr_ambush_5:id() then
+ setup_nr_ambush_logic_brotherhood_5()
+ end
+end
+
+
+function setup_nr_ambush_logic_brotherhood_1()
+
+ local npc = get_story_object("nr_ambush_1")
+ npc:give_info_portion("npc_not_move")
+
+
+ local ltx_name = "scripts\\brotherhood\\brotherhood_npc_nr_ambush_logic_1.ltx"
+ local ltx = ini_file(ltx_name)
+ if not (ltx) then
+ log("ERROR: do not have access to scripts\\brotherhood\\brotherhood_npc_nr_ambush_logic_1! Make sure you installed properly!")
+ return
+ end
+
+ local id = npc:id()
+ local sim = alife()
+ local se_npc = sim:object(id)
+ local unreg_id = se_npc and se_npc.m_smart_terrain_id
+ if (unreg_id and unreg_id ~= 65535) then
+ local unreg = sim:object(unreg_id)
+ if (unreg) then
+ unreg:unregister_npc(se_npc)
+ end
+ end
+
+ xr_logic.configure_schemes(npc, ltx, ltx_name, modules.stype_stalker, loaded and st.loaded_section_logic or "logic", "")
+
+ local section = loaded and st.loaded_active_section or xr_logic.determine_section_to_activate(npc, ltx, "logic", db.actor)
+ xr_logic.activate_by_section(npc, ltx, section, "", loaded)
+ --printf("setup complete")
+
+end
+
+function setup_nr_ambush_logic_brotherhood_2()
+
+ local npc = get_story_object("nr_ambush_2")
+ npc:give_info_portion("npc_not_move")
+
+
+ local ltx_name = "scripts\\brotherhood\\brotherhood_npc_nr_ambush_logic_2.ltx"
+ local ltx = ini_file(ltx_name)
+ if not (ltx) then
+ log("ERROR: do not have access to scripts\\brotherhood_npc_nr_ambush_logic.ltx! Make sure you installed properly!")
+ return
+ end
+
+ local id = npc:id()
+ local sim = alife()
+ local se_npc = sim:object(id)
+ local unreg_id = se_npc and se_npc.m_smart_terrain_id
+ if (unreg_id and unreg_id ~= 65535) then
+ local unreg = sim:object(unreg_id)
+ if (unreg) then
+ unreg:unregister_npc(se_npc)
+ end
+ end
+
+ xr_logic.configure_schemes(npc, ltx, ltx_name, modules.stype_stalker, loaded and st.loaded_section_logic or "logic", "")
+
+ local section = loaded and st.loaded_active_section or xr_logic.determine_section_to_activate(npc, ltx, "logic", db.actor)
+ xr_logic.activate_by_section(npc, ltx, section, "", loaded)
+ --printf("setup complete")
+
+end
+
+function setup_nr_ambush_logic_brotherhood_3()
+
+ local npc = get_story_object("nr_ambush_3")
+ npc:give_info_portion("npc_not_move")
+
+
+ local ltx_name = "scripts\\brotherhood\\brotherhood_npc_nr_ambush_logic_3.ltx"
+ local ltx = ini_file(ltx_name)
+ if not (ltx) then
+ log("ERROR: do not have access to scripts\\brotherhood_npc_nr_ambush_logic.ltx! Make sure you installed properly!")
+ return
+ end
+
+ local id = npc:id()
+ local sim = alife()
+ local se_npc = sim:object(id)
+ local unreg_id = se_npc and se_npc.m_smart_terrain_id
+ if (unreg_id and unreg_id ~= 65535) then
+ local unreg = sim:object(unreg_id)
+ if (unreg) then
+ unreg:unregister_npc(se_npc)
+ end
+ end
+
+ xr_logic.configure_schemes(npc, ltx, ltx_name, modules.stype_stalker, loaded and st.loaded_section_logic or "logic", "")
+
+ local section = loaded and st.loaded_active_section or xr_logic.determine_section_to_activate(npc, ltx, "logic", db.actor)
+ xr_logic.activate_by_section(npc, ltx, section, "", loaded)
+ --printf("setup complete")
+
+end
+
+function setup_nr_ambush_logic_brotherhood_4()
+
+ local npc = get_story_object("nr_ambush_4")
+ npc:give_info_portion("npc_not_move")
+
+
+ local ltx_name = "scripts\\brotherhood\\brotherhood_npc_nr_ambush_logic_4.ltx"
+ local ltx = ini_file(ltx_name)
+ if not (ltx) then
+ log("ERROR: do not have access to scripts\\brotherhood_npc_nr_ambush_logic.ltx! Make sure you installed properly!")
+ return
+ end
+
+ local id = npc:id()
+ local sim = alife()
+ local se_npc = sim:object(id)
+ local unreg_id = se_npc and se_npc.m_smart_terrain_id
+ if (unreg_id and unreg_id ~= 65535) then
+ local unreg = sim:object(unreg_id)
+ if (unreg) then
+ unreg:unregister_npc(se_npc)
+ end
+ end
+
+ xr_logic.configure_schemes(npc, ltx, ltx_name, modules.stype_stalker, loaded and st.loaded_section_logic or "logic", "")
+
+ local section = loaded and st.loaded_active_section or xr_logic.determine_section_to_activate(npc, ltx, "logic", db.actor)
+ xr_logic.activate_by_section(npc, ltx, section, "", loaded)
+ --printf("setup complete")
+
+end
+
+function setup_nr_ambush_logic_brotherhood_5()
+
+ local npc = get_story_object("nr_ambush_5")
+ npc:give_info_portion("npc_not_move")
+
+
+ local ltx_name = "scripts\\brotherhood\\brotherhood_npc_nr_ambush_logic_5.ltx"
+ local ltx = ini_file(ltx_name)
+ if not (ltx) then
+ log("ERROR: do not have access to scripts\\brotherhood_npc_nr_ambush_logic.ltx! Make sure you installed properly!")
+ return
+ end
+
+ local id = npc:id()
+ local sim = alife()
+ local se_npc = sim:object(id)
+ local unreg_id = se_npc and se_npc.m_smart_terrain_id
+ if (unreg_id and unreg_id ~= 65535) then
+ local unreg = sim:object(unreg_id)
+ if (unreg) then
+ unreg:unregister_npc(se_npc)
+ end
+ end
+
+ xr_logic.configure_schemes(npc, ltx, ltx_name, modules.stype_stalker, loaded and st.loaded_section_logic or "logic", "")
+
+ local section = loaded and st.loaded_active_section or xr_logic.determine_section_to_activate(npc, ltx, "logic", db.actor)
+ xr_logic.activate_by_section(npc, ltx, section, "", loaded)
+ --printf("setup complete")
+
+end
\ No newline at end of file
diff --git a/mods/[DEV] Brotherhood/gamedata/scripts/brotherhood_timer.script b/mods/[DEV] Brotherhood/gamedata/scripts/brotherhood_timer.script
new file mode 100644
index 00000000..a9c53ad3
--- /dev/null
+++ b/mods/[DEV] Brotherhood/gamedata/scripts/brotherhood_timer.script
@@ -0,0 +1,682 @@
+--- Original Author(s) : xcvb, ComradeCatilina
+--- Edited : NLTP_ASHES
+--- Date : 15/05/2023
+---
+--- Timer script for Brotherhood. Courtesy of xcvb
+
+-- ---------------------------------------------------------------------------------------------------------------------
+-- Constants, global variables and imported functions
+-- ---------------------------------------------------------------------------------------------------------------------
+
+-- Imported functions
+local HI = has_alife_info
+local GI = give_info
+local DI = disable_info
+local NI = function(str) return not (has_alife_info(str)) end
+local ctime_to_t = utils_data.CTime_to_table
+local ctime_from_t = utils_data.CTime_from_table
+
+-- Variables
+local time_to_poof_1
+local time_to_poof_2
+local time_to_poof_3
+local time_to_poof_4
+local time_to_poof_5
+local time_to_poof_6
+local time_to_poof_7
+local time_to_poof_8
+local time_to_poof_9
+local time_to_poof_10
+local time_to_poof_11
+local time_to_poof_12
+local time_to_poof_13
+local time_to_poof_14
+local time_to_poof_15
+local time_to_poof_16
+local time_to_poof_17
+local time_to_poof_18
+local time_to_poof_19
+local time_to_poof_20
+local time_to_poof_21
+local time_to_poof_22
+
+local tmr_1 = 0
+local tmr_2 = 0
+local tmr_3 = 0
+local tmr_4 = 0
+local tmr_5 = 0
+local tmr_6 = 0
+local tmr_7 = 0
+local tmr_8 = 0
+local tmr_9 = 0
+local tmr_10 = 0
+local tmr_11 = 0
+local tmr_12 = 0
+local tmr_13 = 0
+local tmr_14 = 0
+local tmr_15 = 0
+local tmr_16 = 0
+local tmr_17 = 0
+local tmr_18 = 0
+local tmr_19 = 0
+local tmr_20 = 0
+local tmr_21 = 0
+local tmr_22 = 0
+
+-- ---------------------------------------------------------------------------------------------------------------------
+-- General functions
+-- ---------------------------------------------------------------------------------------------------------------------
+
+-- Alyosha Karmov
+-- Help 1
+
+function alyosha_shyogolov_help_random()
+ if not time_to_poof_1 then
+ time_to_poof_1 = ctime_to_t(game.get_game_time())
+ end
+end
+
+function actor_on_update_1()
+ local poof_timer_1 = 86400
+ local tg = time_global()
+ if tg < tmr_1 then return end
+ tmr_1 = tg + 1000
+
+ local cur_time = game.get_game_time()
+ if time_to_poof_1 and cur_time:diffSec(ctime_from_t(time_to_poof_1)) > poof_timer_1 then
+ DI("help_alyosha_shyogolov_random")
+ time_to_poof_1 = nil
+ end
+
+end
+
+-- What a night
+-- Time 2
+
+function create_stash_1()
+ if not time_to_poof_2 then
+ time_to_poof_2 = ctime_to_t(game.get_game_time())
+ end
+end
+
+function actor_on_update_2()
+ local poof_timer_2 = 0.5
+ local tg = time_global()
+ if tg < tmr_2 then return end
+ tmr_2 = tg + 1000
+
+ local cur_time = game.get_game_time()
+ if time_to_poof_2 and cur_time:diffSec(ctime_from_t(time_to_poof_2)) > poof_timer_2 then
+ dialogs_brotherhood.create_stash_and_transfer_items()
+ dialogs_brotherhood.blackout_drink()
+ dialogs_brotherhood.give_what_a_night()
+ this.blackout_drink_time()
+ time_to_poof_2 = nil
+ end
+end
+
+-- Time 3
+
+function blackout_drink_time()
+ if not time_to_poof_3 then
+ time_to_poof_3 = ctime_to_t(game.get_game_time())
+ end
+end
+
+function actor_on_update_3()
+ local poof_timer_3 = 1
+ local tg = time_global()
+ if tg < tmr_3 then return end
+ tmr_3 = tg + 1000
+
+ local cur_time = game.get_game_time()
+ if time_to_poof_3 and cur_time:diffSec(ctime_from_t(time_to_poof_3)) > poof_timer_3 then
+ dialogs_brotherhood.blackout_teleportation()
+ time_to_poof_3 = nil
+ end
+end
+
+-- Time 4 and 5
+-- Calydonian Boar Hunting Season
+
+function butcher_legendary_hunting_season_1()
+ if not time_to_poof_7 then
+ time_to_poof_7 = ctime_to_t(game.get_game_time())
+ end
+end
+
+function actor_on_update_7()
+ local poof_timer_7 = math.random(4500,200000)
+ local tg = time_global()
+ if tg < tmr_7 then return end
+ tmr_7 = tg + 1000
+
+ local cur_time = game.get_game_time()
+ if time_to_poof_7 and cur_time:diffSec(ctime_from_t(time_to_poof_7)) > poof_timer_7 then
+ news_manager.send_tip(db.actor, game.translate_string("st_butcher_legendary_hunting_season_1"), 0, "stalker", 11000, 1)
+ dialogs_brotherhood.give_butcher_legendary_1()
+ time_to_poof_7 = nil
+ end
+end
+
+function dolg_bloodsucker_voronin_1()
+ if not time_to_poof_4 then
+ time_to_poof_4 = ctime_to_t(game.get_game_time())
+ end
+end
+
+function actor_on_update_4()
+ local poof_timer_4 = 86400
+ local tg = time_global()
+ if tg < tmr_4 then return end
+ tmr_4 = tg + 1000
+
+ local cur_time = game.get_game_time()
+ if time_to_poof_4 and cur_time:diffSec(ctime_from_t(time_to_poof_4)) > poof_timer_4 then
+ news_manager.send_tip(db.actor, game.translate_string("st_dolg_voronin_bloodsucker_news_0"), 0, "dolg", 11000, 1)
+ dialogs_brotherhood.give_meet_voronin_quest_1()
+ dialogs_brotherhood.spawn_artyom_bloodsucker_wounded()
+ GI("voronin_bloodsucker_botched_start")
+ time_to_poof_4 = nil
+ end
+end
+
+-- Dolg snitches get stitches
+
+function dolg_bloodsucker_aspirin_1()
+ if not time_to_poof_5 then
+ time_to_poof_5 = ctime_to_t(game.get_game_time())
+ end
+end
+
+function actor_on_update_5()
+ local poof_timer_5 = 86400
+ local tg = time_global()
+ if tg < tmr_5 then return end
+ tmr_5 = tg + 1000
+
+ local cur_time = game.get_game_time()
+ if time_to_poof_5 and cur_time:diffSec(ctime_from_t(time_to_poof_5)) > poof_timer_5 then
+ news_manager.send_tip(db.actor, game.translate_string("st_dolg_aspirin_bloodsucker_news_0"), 0, "dolg", 11000, 1)
+ dialogs_brotherhood.give_meet_aspirin_quest_2()
+ GI("meet_aspirin_snitches_stitches")
+ time_to_poof_5 = nil
+ end
+end
+
+function dolg_bloodsucker_aspirin_2()
+ if not time_to_poof_6 then
+ time_to_poof_6 = ctime_to_t(game.get_game_time())
+ end
+end
+
+-- Dolg Aspirin quest 2
+
+function actor_on_update_6()
+ local poof_timer_6 = 86400
+ local tg = time_global()
+ if tg < tmr_6 then return end
+ tmr_6 = tg + 1000
+
+ local cur_time = game.get_game_time()
+ if time_to_poof_6 and cur_time:diffSec(ctime_from_t(time_to_poof_6)) > poof_timer_6 then
+ news_manager.send_tip(db.actor, game.translate_string("st_dolg_aspirin_bloodsucker_news_1"), 0, "dolg", 11000, 1)
+ dialogs_brotherhood.give_meet_aspirin_quest_2()
+ time_to_poof_6 = nil
+ end
+end
+
+-- Vybegallo Satisfied Man
+
+function vybegallo_help_satisfied_man()
+ if not time_to_poof_8 then
+ time_to_poof_8 = ctime_to_t(game.get_game_time())
+ end
+end
+
+function actor_on_update_8()
+ local poof_timer_8 = 86400*7
+ local tg = time_global()
+ if tg < tmr_8 then return end
+ tmr_8 = tg + 1000
+
+ local cur_time = game.get_game_time()
+ if time_to_poof_8 and cur_time:diffSec(ctime_from_t(time_to_poof_8)) > poof_timer_8 then
+ if NI("vybegallo_dead") then
+ news_manager.send_tip(db.actor, game.translate_string("st_vybegallo_help_satisfied_man_info"), 0, "ecolog", 11000, 1)
+ dialogs_brotherhood.give_meet_vybegallo_quest()
+ GI("vybegallo_request_help_satisfied_man")
+ end
+ time_to_poof_8 = nil
+ end
+end
+
+-- Brotherhood Quest 5
+
+function butcher_brotherhood_help()
+ if not time_to_poof_9 then
+ time_to_poof_9 = ctime_to_t(game.get_game_time())
+ end
+end
+
+function actor_on_update_9()
+ local poof_timer_9 = 86400*3
+ local tg = time_global()
+ if tg < tmr_9 then return end
+ tmr_9 = tg + 1000
+
+ local cur_time = game.get_game_time()
+ if time_to_poof_9 and cur_time:diffSec(ctime_from_t(time_to_poof_9)) > poof_timer_9 then
+ if NI("bellerophon_dead") then
+ news_manager.send_tip(db.actor, game.translate_string("st_butcher_5_help_info"), 0, "stalker", 11000, 1)
+ dialogs_brotherhood.give_rescue_orion_quest()
+ dialogs_brotherhood.relocation_ilya_1()
+ GI("butcher_5_help")
+ elseif HI("bellerophon_dead") then
+ news_manager.send_tip(db.actor, game.translate_string("st_butcher_5_alt_help_info"), 0, "stalker", 11000, 1)
+ dialogs_brotherhood.give_rescue_orion_quest()
+ GI("butcher_5_help")
+ dialogs_brotherhood.spawn_sarpedon()
+ end
+ time_to_poof_9 = nil
+ end
+end
+
+--- Market Share Quests ---
+
+
+
+-- An ominous invitation--
+
+
+function market_share_beginning_1()
+ if not time_to_poof_10 then
+ time_to_poof_10 = ctime_to_t(game.get_game_time())
+ end
+end
+
+function actor_on_update_10()
+ local poof_timer_10 = 56400
+ local tg = time_global()
+ if tg < tmr_10 then return end
+ tmr_10 = tg + 1000
+
+ local cur_time = game.get_game_time()
+ if time_to_poof_10 and cur_time:diffSec(ctime_from_t(time_to_poof_10)) > poof_timer_10 then
+ news_manager.send_tip(db.actor, game.translate_string("st_marlo_chris_invitation_info"), 0, "stalker", 11000, 1)
+ dialogs_brotherhood.give_meet_marlo_chris_quest_1()
+
+ GI("market_share_the_beginning")
+ time_to_poof_10 = nil
+ end
+end
+
+-- The courriers are on their way --
+
+
+function market_share_quest_2()
+ if not time_to_poof_11 then
+ time_to_poof_11 = ctime_to_t(game.get_game_time())
+ end
+end
+
+function actor_on_update_11()
+ local poof_timer_11 = 86400
+ local tg = time_global()
+ if tg < tmr_11 then return end
+ tmr_11 = tg + 1000
+
+ local cur_time = game.get_game_time()
+ if time_to_poof_11 and cur_time:diffSec(ctime_from_t(time_to_poof_11)) > poof_timer_11 then
+ news_manager.send_tip(db.actor, game.translate_string("st_chris_key_interception_info"), 0, "stalker", 11000, 1)
+ dialogs_brotherhood.give_meet_marlo_chris_quest_2()
+
+ GI("market_share_quest_2_init")
+ time_to_poof_11 = nil
+ end
+end
+
+-- The resupply is on their way --
+
+function market_share_quest_3()
+ if not time_to_poof_12 then
+ time_to_poof_12 = ctime_to_t(game.get_game_time())
+ end
+end
+
+function actor_on_update_12()
+ local poof_timer_12 = 86400*3
+ local tg = time_global()
+ if tg < tmr_12 then return end
+ tmr_12 = tg + 1000
+
+ local cur_time = game.get_game_time()
+ if time_to_poof_12 and cur_time:diffSec(ctime_from_t(time_to_poof_12)) > poof_timer_12 then
+ news_manager.send_tip(db.actor, game.translate_string("st_chris_asset_interception_info"), 0, "stalker", 11000, 1)
+ dialogs_brotherhood.give_meet_marlo_chris_quest_3()
+
+ GI("market_share_quest_3_init")
+ time_to_poof_12 = nil
+ end
+end
+
+--- Timer 13 NOT USED ---
+
+function calydonian_boar_reinforcment_init()
+ if not time_to_poof_13 then
+ time_to_poof_13 = ctime_to_t(game.get_game_time())
+ end
+end
+
+function actor_on_update_13()
+ local poof_timer_13 = 10
+ local tg = time_global()
+ if tg < tmr_13 then return end
+ tmr_13 = tg + 1000
+
+ local cur_time = game.get_game_time()
+ if time_to_poof_13 and cur_time:diffSec(ctime_from_t(time_to_poof_13)) > poof_timer_13 then
+
+ GI("calydonian_boar_reinforcment_init")
+ time_to_poof_13 = nil
+ end
+end
+
+
+--- Timer 14 reset Bezsonik timer
+
+function bezsonik_init_random()
+ if not time_to_poof_14 then
+ time_to_poof_14 = ctime_to_t(game.get_game_time())
+ end
+end
+
+function actor_on_update_14()
+ local poof_timer_14 = 80000
+ local tg = time_global()
+ if tg < tmr_14 then return end
+ tmr_14 = tg + 1000
+
+ local cur_time = game.get_game_time()
+ if time_to_poof_14 and cur_time:diffSec(ctime_from_t(time_to_poof_14)) > poof_timer_14 then
+ DI("nr_bezsonik_init_random")
+ time_to_poof_14 = nil
+ end
+
+end
+
+--- Timer 15 reset Butcher Timer
+
+function butcher_troubble_init_random()
+ if not time_to_poof_15 then
+ time_to_poof_15 = ctime_to_t(game.get_game_time())
+ end
+end
+
+function actor_on_update_15()
+ local poof_timer_15 = 80000
+ local tg = time_global()
+ if tg < tmr_15 then return end
+ tmr_15 = tg + 1000
+
+ local cur_time = game.get_game_time()
+ if time_to_poof_15 and cur_time:diffSec(ctime_from_t(time_to_poof_15)) > poof_timer_15 then
+ DI("butcher_troubble_init_random")
+ time_to_poof_15 = nil
+ end
+
+end
+
+--- Timer 16 reset Gutalin Timer
+
+function meet_gutalin_init_random()
+ if not time_to_poof_16 then
+ time_to_poof_16 = ctime_to_t(game.get_game_time())
+ end
+end
+
+function actor_on_update_16()
+ local poof_timer_16 = 80000
+ local tg = time_global()
+ if tg < tmr_16 then return end
+ tmr_16 = tg + 1000
+
+ local cur_time = game.get_game_time()
+ if time_to_poof_16 and cur_time:diffSec(ctime_from_t(time_to_poof_16)) > poof_timer_16 then
+ DI("meet_gutalin_init_random")
+ time_to_poof_16 = nil
+ end
+
+end
+
+--- Timer 17 Trapper Chimera 2 recroding
+
+function trapper_chimera_2_recording()
+ if not time_to_poof_17 then
+ time_to_poof_17 = ctime_to_t(game.get_game_time())
+ end
+end
+
+function actor_on_update_17()
+ local poof_timer_17 = 100
+ local tg = time_global()
+ if tg < tmr_17 then return end
+ tmr_17 = tg + 1000
+
+ local cur_time = game.get_game_time()
+ if time_to_poof_17 and cur_time:diffSec(ctime_from_t(time_to_poof_17)) > poof_timer_17 then
+ GI("trapper_chimera_2_recording_done")
+
+ time_to_poof_17 = nil
+ end
+
+end
+
+--- Timer 18 Calydonian Boar spawns
+
+function butcher_calydonian_init()
+ if not time_to_poof_18 then
+ time_to_poof_18 = ctime_to_t(game.get_game_time())
+ end
+end
+
+function actor_on_update_18()
+
+ local poof_timer_18 = math.random(50000,100000)
+ local tg = time_global()
+ if tg < tmr_18 then return end
+ tmr_18 = tg + 1000
+
+ local cur_time = game.get_game_time()
+ if time_to_poof_18 and cur_time:diffSec(ctime_from_t(time_to_poof_18)) > poof_timer_18 then
+ GI("butcher_calydonian_init")
+ news_manager.send_tip(db.actor, game.translate_string("st_butcher_legendary_hunting_season_1"), 0, "stalker", 11000, 1)
+ news_manager.send_tip(db.actor, game.translate_string("st_butcher_legendary_hunting_season_2"), 5, "stalker", 11000, 1)
+ news_manager.send_tip(db.actor, game.translate_string("st_butcher_legendary_hunting_season_3"), 10, "stalker", 11000, 1)
+ news_manager.send_tip(db.actor, game.translate_string("st_butcher_legendary_hunting_season_4"), 15, "stalker", 11000, 1)
+ time_to_poof_18 = nil
+ end
+
+end
+
+---- reset Controller Ambush random event
+
+function nr_primakov_random()
+ if not time_to_poof_19 then
+ time_to_poof_19 = ctime_to_t(game.get_game_time())
+ end
+end
+
+function actor_on_update_19()
+ local poof_timer_19 = 24000
+ local tg = time_global()
+ if tg < tmr_19 then return end
+ tmr_19 = tg + 1000
+
+ local cur_time = game.get_game_time()
+ if time_to_poof_19 and cur_time:diffSec(ctime_from_t(time_to_poof_19)) > poof_timer_19 then
+ DI("nr_primankov_random")
+ time_to_poof_19 = nil
+ end
+
+end
+
+---- Shlitzer 1 Fail
+
+function bh_shlitzer_fail_1()
+ if not time_to_poof_20 then
+ time_to_poof_20 = ctime_to_t(game.get_game_time())
+ end
+end
+
+function actor_on_update_20()
+ local poof_timer_20 = 518400
+ local tg = time_global()
+ if tg < tmr_20 then return end
+ tmr_20 = tg + 1000
+
+ local cur_time = game.get_game_time()
+ if time_to_poof_20 and cur_time:diffSec(ctime_from_t(time_to_poof_20)) > poof_timer_20 then
+ if NI("bh_badger_smuggling_transfer_done") then
+
+ GI("bh_shlitzer_fail_1")
+ end
+ time_to_poof_20 = nil
+ end
+
+end
+
+--- Baltun random reset
+
+function nr_baltunov_init_random()
+ if not time_to_poof_21 then
+ time_to_poof_21 = ctime_to_t(game.get_game_time())
+ end
+end
+
+function actor_on_update_21()
+ local poof_timer_21 = 24000
+ local tg = time_global()
+ if tg < tmr_21 then return end
+ tmr_21 = tg + 1000
+
+ local cur_time = game.get_game_time()
+ if time_to_poof_21 and cur_time:diffSec(ctime_from_t(time_to_poof_21)) > poof_timer_21 then
+ DI("nr_baltunov_init_random")
+ time_to_poof_21 = nil
+ end
+
+end
+
+--- Murdered Starik random reset
+
+function nr_starik_1_init_random()
+ if not time_to_poof_22 then
+ time_to_poof_22 = ctime_to_t(game.get_game_time())
+ end
+end
+
+function actor_on_update_22()
+ local poof_timer_22 = 24000
+ local tg = time_global()
+ if tg < tmr_22 then return end
+ tmr_22 = tg + 1000
+
+ local cur_time = game.get_game_time()
+ if time_to_poof_22 and cur_time:diffSec(ctime_from_t(time_to_poof_22)) > poof_timer_22 then
+ DI("nr_starik_1_init_random")
+ time_to_poof_22 = nil
+ end
+
+end
+-- ---------------------------------------------------------------------------------------------------------------------
+-- Data persistence
+-- ---------------------------------------------------------------------------------------------------------------------
+
+--- Function used to store information in the save file.
+--- @param m_data table
+--- @return nil
+function save_state(m_data)
+ m_data.time_to_poof_1 = time_to_poof_1
+ m_data.time_to_poof_2 = time_to_poof_2
+ m_data.time_to_poof_3 = time_to_poof_3
+ m_data.time_to_poof_4 = time_to_poof_4
+ m_data.time_to_poof_5 = time_to_poof_5
+ m_data.time_to_poof_6 = time_to_poof_6
+ m_data.time_to_poof_7 = time_to_poof_7
+ m_data.time_to_poof_8 = time_to_poof_8
+ m_data.time_to_poof_9 = time_to_poof_9
+ m_data.time_to_poof_10 = time_to_poof_10
+ m_data.time_to_poof_11 = time_to_poof_11
+ m_data.time_to_poof_12 = time_to_poof_12
+ m_data.time_to_poof_13 = time_to_poof_13
+ m_data.time_to_poof_14 = time_to_poof_14
+ m_data.time_to_poof_15 = time_to_poof_15
+ m_data.time_to_poof_16 = time_to_poof_16
+ m_data.time_to_poof_17 = time_to_poof_17
+ m_data.time_to_poof_18 = time_to_poof_18
+ m_data.time_to_poof_19 = time_to_poof_19
+ m_data.time_to_poof_20 = time_to_poof_20
+ m_data.time_to_poof_21 = time_to_poof_21
+ m_data.time_to_poof_22 = time_to_poof_22
+end
+
+--- Function used to load information stored in the save file.
+--- @param m_data table
+--- @return nil
+function load_state(m_data)
+ time_to_poof_1 = m_data.time_to_poof_1
+ time_to_poof_2 = m_data.time_to_poof_2
+ time_to_poof_3 = m_data.time_to_poof_3
+ time_to_poof_4 = m_data.time_to_poof_4
+ time_to_poof_5 = m_data.time_to_poof_5
+ time_to_poof_6 = m_data.time_to_poof_6
+ time_to_poof_7 = m_data.time_to_poof_7
+ time_to_poof_8 = m_data.time_to_poof_8
+ time_to_poof_9 = m_data.time_to_poof_9
+ time_to_poof_10 = m_data.time_to_poof_10
+ time_to_poof_11 = m_data.time_to_poof_11
+ time_to_poof_12 = m_data.time_to_poof_12
+ time_to_poof_13 = m_data.time_to_poof_13
+ time_to_poof_14 = m_data.time_to_poof_14
+ time_to_poof_15 = m_data.time_to_poof_15
+ time_to_poof_16 = m_data.time_to_poof_16
+ time_to_poof_17 = m_data.time_to_poof_17
+ time_to_poof_18 = m_data.time_to_poof_18
+ time_to_poof_19 = m_data.time_to_poof_19
+ time_to_poof_20 = m_data.time_to_poof_20
+ time_to_poof_21 = m_data.time_to_poof_21
+ time_to_poof_22 = m_data.time_to_poof_22
+end
+
+-- ---------------------------------------------------------------------------------------------------------------------
+-- Callbacks registration
+-- ---------------------------------------------------------------------------------------------------------------------
+
+--- Function used to register callbacks.
+--- @return nil
+function on_game_start()
+ RegisterScriptCallback("save_state", save_state)
+ RegisterScriptCallback("load_state", load_state)
+
+ RegisterScriptCallback("actor_on_update", actor_on_update_1)
+ RegisterScriptCallback("actor_on_update", actor_on_update_2)
+ RegisterScriptCallback("actor_on_update", actor_on_update_3)
+ RegisterScriptCallback("actor_on_update", actor_on_update_4)
+ RegisterScriptCallback("actor_on_update", actor_on_update_5)
+ RegisterScriptCallback("actor_on_update", actor_on_update_6)
+ RegisterScriptCallback("actor_on_update", actor_on_update_7)
+ RegisterScriptCallback("actor_on_update", actor_on_update_8)
+ RegisterScriptCallback("actor_on_update", actor_on_update_9)
+ RegisterScriptCallback("actor_on_update", actor_on_update_10)
+ RegisterScriptCallback("actor_on_update", actor_on_update_11)
+ RegisterScriptCallback("actor_on_update", actor_on_update_12)
+ RegisterScriptCallback("actor_on_update", actor_on_update_13)
+ RegisterScriptCallback("actor_on_update", actor_on_update_14)
+ RegisterScriptCallback("actor_on_update", actor_on_update_15)
+ RegisterScriptCallback("actor_on_update", actor_on_update_16)
+ RegisterScriptCallback("actor_on_update", actor_on_update_17)
+ RegisterScriptCallback("actor_on_update", actor_on_update_18)
+ RegisterScriptCallback("actor_on_update", actor_on_update_19)
+ RegisterScriptCallback("actor_on_update", actor_on_update_20)
+end
\ No newline at end of file
diff --git a/mods/[DEV] Brotherhood/gamedata/scripts/dialogs_brotherhood.script b/mods/[DEV] Brotherhood/gamedata/scripts/dialogs_brotherhood.script
new file mode 100644
index 00000000..99c7c754
--- /dev/null
+++ b/mods/[DEV] Brotherhood/gamedata/scripts/dialogs_brotherhood.script
@@ -0,0 +1,2356 @@
+
+------- GENERAL Functions --------
+local HI = has_alife_info
+local GI = give_info
+local DI = disable_info
+function NI(str)
+ return not (has_alife_info(str))
+end
+function on_game_start()
+ RegisterScriptCallback("actor_on_item_use", use_item_strange_meat_1)
+ RegisterScriptCallback("actor_on_item_use", use_item_strange_meat_1_2)
+ RegisterScriptCallback("actor_on_item_use", use_item_strange_meat_2)
+ RegisterScriptCallback("actor_on_item_use", use_item_strange_meat_2_2)
+ RegisterScriptCallback("actor_on_item_use", use_item_radio_micro_quest)
+
+end
+------- NLTP-Ashes scripts -------
+--- Function used to spawn a simulation squad, at a given point in space.
+--- @param sec string
+--- @param pos vector
+--- @param lvid number
+--- @param gvid number
+--- @param smart cse_alife_smart_zone
+--- @return cse_alife_online_offline_group
+function spawn_squad(sec,pos,lvid,gvid,smart)
+ if not validate_params({sec,pos,lvid,gvid,"spawn_squad"}) then return end
+
+ local squad = alife_create(sec, pos, lvid, gvid)
+ if squad then
+ squad:create_npc(smart, pos, lvid, gvid)
+
+ if smart then
+ SIMBOARD:assign_squad_to_smart(squad, smart.id)
+ else
+ SIMBOARD:assign_squad_to_smart(squad)
+ end
+
+ for k in squad:squad_members() do
+ local se_obj = k.object or k.id and alife_object(k.id)
+ if (se_obj) then
+ SIMBOARD:setup_squad_and_group(se_obj)
+ SendScriptCallback("squad_on_npc_creation",squad,se_obj,smart)
+ end
+ end
+
+
+
+ return squad
+ else
+ printf("![Brotherhood] ERROR | Utils | Failed to create squad (%s)",sec)
+ return
+ end
+end
+
+--- Function used to check if all necessary parameters were correctly passed to a function.
+--- Last element of the table has to be the name of the function calling validate_params.
+--- Use like this : 'if not validate_params({param_1,param_1,"my_function"}) then return end'
+--- @param params table
+--- @return boolean
+function validate_params(params)
+ local index = 1
+ for i,_ in pairs(params) do
+ if i ~= index then
+ printf("![WG] ERROR | Utils | Missing argument no %s for '%s()'!",index,params[#params])
+ return false
+ end
+ index = index + 1
+ end
+ return true
+end
+
+
+
+
+
+function poluchit_po_litsu(actor, npc)
+ npc:force_set_goodwill(-5000, actor)
+end
+
+
+
+function give_task(name)
+ task_manager.get_task_manager():give_task(name)
+end
+
+-------Stories from the Zone --------
+
+------ Brotherhood rewards ------
+function transfer_brotherhood_reward_1(first_speaker, second_speaker)
+ dialogs.relocate_item_section_to_actor(first_speaker, second_speaker, "bottle_metal", 1)
+end
+
+function transfer_brotherhood_reward_2(first_speaker, second_speaker)
+ dialogs.relocate_item_section_to_actor(first_speaker, second_speaker, "cigar2", 1)
+end
+
+
+---- Bellerophon Quests ----
+
+function give_task_bellerophon_chimera_1()
+ dialogs_brotherhood.give_task('give_task_bellerophon_chimera_1')
+end
+
+function relocation_bellerophon_1()
+ local squad = get_story_se_object("bellerophon_squad")
+ local pos = vector():set( 30.001893997192,-11.701859474182,-278.17437744141 )
+ if (pos and squad) then
+ TeleportSquad(squad,pos,79573,2281)
+
+ GI("relocation_bellerophon_1")
+ end
+end
+
+function transfer_stolya_for_bellerophon(first_speaker, second_speaker)
+ dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, "vodka_quality", 1)
+end
+------Butcher Quest 1 (now 3) ------
+
+function give_task_kill_pack_dogs_1()
+ dialogs_brotherhood.give_task('give_task_kill_pack_dogs_1')
+end
+
+function is_has_package_vybegallo()
+ if db.actor:object("quest_package_vybegallo") then
+ return true
+ end
+ return false
+end
+
+function transfer_package_to_vybegallo(first_speaker, second_speaker)
+ dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, "quest_package_vybegallo")
+ dialogs.relocate_money_to_actor(first_speaker, second_speaker, 7500)
+end
+
+
+------Butcher Quest 2 ------
+
+function give_task_kill_pack_boars_1()
+ dialogs_brotherhood.give_task('give_task_kill_pack_boars_1')
+end
+
+function transfer_grenades_boars(first_speaker, second_speaker)
+ dialogs.relocate_item_section_to_actor(first_speaker, second_speaker, "grenade_f1", 2)
+end
+
+------Butcher Quest 3 ------
+
+function give_task_kill_pack_snorks_1()
+ dialogs_brotherhood.give_task('give_task_kill_pack_snorks_1')
+end
+
+function transfer_bandage_snorks(first_speaker, second_speaker)
+ dialogs.relocate_item_section_to_actor(first_speaker, second_speaker, "bandage")
+end
+
+------Butcher Quest 4 ------
+
+function give_task_kill_pack_snorks_2()
+ dialogs_brotherhood.give_task('give_task_kill_pack_snorks_2')
+end
+
+function give_meet_vybegallo_quest()
+ dialogs_brotherhood.give_task('give_meet_vybegallo_quest')
+end
+
+function transfer_bandages_snorks(first_speaker, second_speaker)
+ dialogs.relocate_item_section_to_actor(first_speaker, second_speaker, "bandage", 2)
+end
+
+
+function relocation_ilya_1()
+ local squad = get_story_se_object("bellerophon_squad")
+ local pos = vector():set( 20.758554458618,0.15221303701401,11.817081451416 )
+ if (pos and squad) then
+ TeleportSquad(squad,pos,217755,1026)
+
+ GI("relocation_ilya_1_init")
+ end
+end
+---- Butcher Quest 5 ----
+
+function give_rescue_orion_quest()
+ dialogs_brotherhood.give_task('give_rescue_orion_quest')
+end
+
+function transfer_supplies_agru_controller(first_speaker, second_speaker)
+ dialogs.relocate_item_section_to_actor(first_speaker, second_speaker, "bandage", 2)
+ dialogs.relocate_item_section_to_actor(first_speaker, second_speaker, "ammo_12x70_buck", 2)
+ dialogs.relocate_item_section_to_actor(first_speaker, second_speaker, "medkit_scientic", 1)
+end
+
+function transfer_supplies_agru_controller_2(first_speaker, second_speaker)
+ dialogs.relocate_item_section_to_actor(first_speaker, second_speaker, "drug_psy_blockade", 2)
+end
+
+function xr_effects.spawn_hunter_orion_dead()
+ local pos = vector():set( 112.4231262207,-6.9253225326538,-34.570152282715 )
+ local se_obj = alife_create( "hunter_orion", pos, 9264, 3727 )
+ if (se_obj) then
+ se_obj:kill()
+ end
+ if ( not se_obj ) then
+ printe("!ERROR: unable to spawn hunter_orion" )
+ end
+end
+
+function spawn_sarpedon()
+ local smart_2 = SIMBOARD.smarts_by_names["agr_smart_terrain_4_4"]
+ local squad = SIMBOARD:create_squad(smart_2,"sarpedon_squad")
+end
+
+------ Trapper Quests ------
+
+--- Chimera 1
+
+function give_task_trapper_chimera_1()
+ dialogs_brotherhood.give_task('give_task_trapper_chimera_1')
+end
+
+function is_has_boar_meat_for_bait()
+ local cnt = utils_item.get_amount(db.actor, "mutant_part_boar_chop")
+ if (cnt >= 6) then
+ return true
+ end
+ return false
+end
+
+function give_task_trapper_chimera_2()
+ dialogs_brotherhood.give_task('give_task_trapper_chimera_2')
+end
+
+
+function transfer_boar_chimera_trapper(first_speaker, second_speaker)
+ dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, "meat_boar", 6)
+end
+
+function transfer_chimera_bait_trapper(first_speaker, second_speaker)
+ dialogs.relocate_item_section_to_actor(first_speaker, second_speaker, "quest_chimera_bait_brotherhood")
+end
+
+function transfer_trapper_recording_device(first_speaker, second_speaker)
+ dialogs.relocate_item_section_to_actor(first_speaker, second_speaker, "radio_micro_quest")
+end
+
+function is_has_trapper_bait_no()
+ if db.actor:object("quest_chimera_bait_brotherhood") then
+ return false
+ end
+ return true
+end
+
+function is_has_trapper_bait_yes()
+ if db.actor:object("quest_chimera_bait_brotherhood") then
+ return true
+ end
+ return false
+end
+
+function trapper_chimera_is_dead()
+ local obj = get_story_se_object("trapper_chimera_2")
+
+ if HI("trapper_chimera_2_dead") then
+
+ if obj then
+
+ local commander = alife_object(obj:commander_id())
+
+ if commander and commander:alive() then
+
+ DI("trapper_chimera_2_dead")
+ return false
+ else
+ return true
+ end
+ end
+
+ elseif NI("trapper_chimera_2_dead") then
+
+ return false
+ end
+
+
+end
+
+function trapper_chimera_is_alive()
+ local obj = get_story_se_object("trapper_chimera_2")
+
+ if HI("trapper_chimera_2_dead") then
+
+ if obj then
+
+ local commander = alife_object(obj:commander_id())
+
+ if commander and commander:alive() then
+ DI("trapper_chimera_2_dead")
+ return true
+ else
+ return false
+ end
+ end
+ elseif NI("trapper_chimera_2_dead") then
+
+ return true
+ end
+
+end
+
+function is_has_recording_device()
+ if db.actor:object("radio_micro_quest") then
+ return true
+ end
+ return false
+end
+
+function is_has_recording_device_no()
+ if db.actor:object("radio_micro_quest") then
+ return false
+ end
+ return true
+end
+
+function transfer_trapper_chimera_bounty_2(first_speaker, second_speaker)
+ dialogs.relocate_money_to_actor(first_speaker, second_speaker, 10000)
+end
+
+function transfer_radio_to_trapper(first_speaker, second_speaker)
+ dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, "radio_micro_quest")
+end
+
+
+function reset_trapper_chimera_2()
+ DI("trapper_chimera_3_init_timed")
+ DI("trapper_chimera_2_init_timed")
+ DI("trapper_chimera_2_recording_done")
+ DI("trapper_chimera_record_in_place")
+ DI("trapper_chimera_3_init")
+ DI("trapper_chimera_2_init")
+ DI("trapper_chimera_record_set")
+end
+
+--- Trapper Missing hunters ---
+
+-- Hunter 1 --
+
+function give_task_trapper_missing_hunter_1()
+ dialogs_brotherhood.give_task('give_task_trapper_missing_hunter_1')
+end
+function give_task_trapper_missing_hunter_2()
+ dialogs_brotherhood.give_task('give_task_trapper_missing_hunter_2')
+end
+function give_task_trapper_missing_hunter_3()
+ dialogs_brotherhood.give_task('give_task_trapper_missing_hunter_3')
+end
+
+----- Butcher Legendary ----
+
+function give_butcher_legendary_1()
+ dialogs_brotherhood.give_task('give_butcher_legendary_1')
+end
+
+function pseudo_dynamic_spawn_legendary_1()
+
+
+
+ local pos = db.actor:position()
+
+ local smart_1 = SIMBOARD.smarts_by_names["mar_smart_terrain_7_7"] ---north east - smart 1
+ local smart_2 = SIMBOARD.smarts_by_names["mar_smart_terrain_6_7"] ---north west - smart 2
+ local smart_3 = SIMBOARD.smarts_by_names["mar_smart_terrain_4_7"] ---south - smart 3
+
+ local smrt_1 = SIMBOARD.smarts[smart_1.id]
+ local smrt_2 = SIMBOARD.smarts[smart_2.id]
+ local smrt_3 = SIMBOARD.smarts[smart_3.id]
+
+ local dist_1 = (db.actor:position():distance_to(smart_1.position))
+ local dist_2 = (db.actor:position():distance_to(smart_2.position))
+ local dist_3 = (db.actor:position():distance_to(smart_3.position))
+
+ local distance = 10
+
+ local pos_1 = vector():set( 229.9093170166,0.73001974821091,172.14596557617 ) --- smart 1 south
+ local pos_2 = vector():set( 193.70741271973,0.87180489301682,108.35623168945 ) --- samrt 1 east
+ local pos_3 = vector():set( 71.255294799805,0.83956271409988,102.07247924805 ) --- smart 2 North
+ local pos_4 = vector():set( 59.722770690918,0.56484937667847,145.73992919922 ) --- smart 2 west
+ local pos_5 = vector():set( -42.557529449463,0.49137985706329,118.64920043945 ) --- smart 3 east
+ local pos_6 = vector():set( -34.978141784668,0.53491681814194,164.68092346191 ) --- samrt 3 south
+
+ local dyst_1 = (pos:distance_to(pos_1))
+ local dyst_2 = (pos:distance_to(pos_2))
+ local dyst_3 = (pos:distance_to(pos_3))
+ local dyst_4 = (pos:distance_to(pos_4))
+ local dyst_5 = (pos:distance_to(pos_5))
+ local dyst_6 = (pos:distance_to(pos_6))
+
+
+ if (dist_1 < dist_2) and (dist_1 < dist_3) then --- smart 1
+
+ if (dyst_1 < dyst_2) and (dyst_1 > distance) then --- dyst 1 trigger
+ spawn_legendary_calydonian_boar_1()
+
+ elseif (dyst_1 < dyst_2) and (dyst_1 < distance) then --- dyst 2 trigger
+ spawn_legendary_calydonian_boar_2()
+
+ elseif (dyst_2 < dyst_1) and (dyst_2 > distance) then --- dyst 2 trigger
+ spawn_legendary_calydonian_boar_2()
+
+ elseif (dyst_2 < dyst_1) and (dyst_2 < distance) then --- dyst 1 trigger
+ spawn_legendary_calydonian_boar_1()
+ end
+ elseif (dist_2 < dist_1) and (dist_2 < dist_3) then ---smart 2
+
+ if (dyst_3 < dyst_4) and (dyst_3 > distance) then --- dyst 3 trigger
+ spawn_legendary_calydonian_boar_3()
+
+ elseif (dyst_3 < dyst_4) and (dyst_3 < distance) then --- dyst 4 trigger
+ spawn_legendary_calydonian_boar_4()
+
+ elseif (dyst_4 < dyst_3) and (dyst_4 > distance) then --- dyst 4 trigger
+ spawn_legendary_calydonian_boar_4()
+
+ elseif (dyst_4 < dyst_3) and (dyst_4 < distance) then --- dyst 3 trigger
+ spawn_legendary_calydonian_boar_3()
+ end
+ elseif (dist_3 < dist_1) and (dist_3 < dist_2) then
+
+ if (dyst_5 < dyst_6) and (dyst_5 > distance) then --- dyst 5 trigger
+ spawn_legendary_calydonian_boar_5()
+
+ elseif (dyst_5 < dyst_6) and (dyst_5 < distance) then --- dyst 6 trigger
+ spawn_legendary_calydonian_boar_6()
+
+ elseif (dyst_6 < dyst_5) and (dyst_6 > distance) then --- dyst 6 trigger
+ spawn_legendary_calydonian_boar_6()
+
+ elseif (dyst_6 < dyst_5) and (dyst_6 < distance) then --- dyst 5 trigger
+ spawn_legendary_calydonian_boar_5()
+ end
+
+ end
+
+end
+
+function spawn_legendary_calydonian_boar_1()
+ local pos_1 = vector():set( 229.9093170166,0.73001974821091,172.14596557617 ) --- smart 1 south
+
+ local lvid_1 = 283409
+
+
+ local gvid_1 = 220
+
+ if NI("legendary_boar_calydonian_spawned") then
+ news_manager.send_tip(db.actor, game.translate_string("st_calydonian_boar_spawned_1"), 0, "communication", 11000, 1)
+ local se_squad_1 = spawn_squad("legendary_pack_boars_calydonian", pos_1, lvid_1, gvid_1)
+ local se_squad_2 = spawn_squad("legendary_pack_boars_calydonian_guard", pos_1, lvid_1, gvid_1)
+ GI("legendary_boar_calydonian_spawned")
+
+ return
+ end
+ if HI("legendary_pack_boars_calydonian_guard_dead") and NI("legendary_pack_boars_calydonian_dead") and NI("legendary_boar_reinforcment_1_spawned") then
+ local se_squad_3 = spawn_squad("legendary_pack_boars_reinf_1", pos_1, lvid_1, gvid_1)
+ GI("legendary_boar_reinforcment_1_spawned")
+ end
+
+ if HI("legendary_pack_boars_reinf_1_dead") and NI("legendary_pack_boars_calydonian_dead") and NI("legendary_boar_reinforcment_2_spawned") then
+ local se_squad_4 = spawn_squad("legendary_pack_boars_reinf_2", pos_1, lvid_1, gvid_1)
+ GI("legendary_boar_reinforcment_2_spawned")
+ end
+ if HI("legendary_pack_boars_reinf_2_dead") and NI("legendary_pack_boars_calydonian_dead") and NI("legendary_boar_reinforcment_3_spawned") then
+ local se_squad_5 = spawn_squad("legendary_pack_boars_reinf_3", pos_1, lvid_1, gvid_1)
+ GI("legendary_boar_reinforcment_3_spawned")
+ end
+
+end
+function spawn_legendary_calydonian_boar_2()
+
+ local pos_2 = vector():set( 193.70741271973,0.87180489301682,108.35623168945 ) --- samrt 1 east
+
+ local lvid_2 = 257374
+
+
+ local gvid_2 = 349
+
+ if NI("legendary_boar_calydonian_spawned") then
+ news_manager.send_tip(db.actor, game.translate_string("st_calydonian_boar_spawned_1"), 0, "communication", 11000, 1)
+ local se_squad_1 = spawn_squad("legendary_pack_boars_calydonian", pos_2, lvid_2, gvid_2)
+ local se_squad_2 = spawn_squad("legendary_pack_boars_calydonian_guard", pos_2, lvid_2, gvid_2)
+ GI("legendary_boar_calydonian_spawned")
+
+ return
+ end
+ if HI("legendary_pack_boars_calydonian_guard_dead") and NI("legendary_pack_boars_calydonian_dead") and NI("legendary_boar_reinforcment_1_spawned") then
+ local se_squad_3 = spawn_squad("legendary_pack_boars_reinf_1", pos_2, lvid_2, gvid_2)
+ GI("legendary_boar_reinforcment_1_spawned")
+ end
+
+ if HI("legendary_pack_boars_reinf_1_dead") and NI("legendary_pack_boars_calydonian_dead") and NI("legendary_boar_reinforcment_2_spawned") then
+ local se_squad_4 = spawn_squad("legendary_pack_boars_reinf_2", pos_2, lvid_2, gvid_2)
+ GI("legendary_boar_reinforcment_2_spawned")
+ end
+ if HI("legendary_pack_boars_reinf_2_dead") and NI("legendary_pack_boars_calydonian_dead") and NI("legendary_boar_reinforcment_3_spawned") then
+ local se_squad_5 = spawn_squad("legendary_pack_boars_reinf_3", pos_2, lvid_2, gvid_2)
+ GI("legendary_boar_reinforcment_3_spawned")
+ end
+
+end
+function spawn_legendary_calydonian_boar_3()
+ local pos_3 = vector():set( 71.255294799805,0.83956271409988,102.07247924805 ) --- smart 2 North
+
+ local lvid_3 = 180674
+
+ local gvid_3 = 112
+
+ if NI("legendary_boar_calydonian_spawned") then
+ news_manager.send_tip(db.actor, game.translate_string("st_calydonian_boar_spawned_1"), 0, "communication", 11000, 1)
+ local se_squad_1 = spawn_squad("legendary_pack_boars_calydonian", pos_3, lvid_3, gvid_3)
+ local se_squad_2 = spawn_squad("legendary_pack_boars_calydonian_guard", pos_3, lvid_3, gvid_3)
+ GI("legendary_boar_calydonian_spawned")
+
+ return
+ end
+ if HI("legendary_pack_boars_calydonian_guard_dead") and NI("legendary_pack_boars_calydonian_dead") and NI("legendary_boar_reinforcment_1_spawned") then
+ local se_squad_3 = spawn_squad("legendary_pack_boars_reinf_1", pos_3, lvid_3, gvid_3)
+ GI("legendary_boar_reinforcment_1_spawned")
+ end
+
+ if HI("legendary_pack_boars_reinf_1_dead") and NI("legendary_pack_boars_calydonian_dead") and NI("legendary_boar_reinforcment_2_spawned") then
+ local se_squad_4 = spawn_squad("legendary_pack_boars_reinf_2", pos_3, lvid_3, gvid_3)
+ GI("legendary_boar_reinforcment_2_spawned")
+ end
+ if HI("legendary_pack_boars_reinf_2_dead") and NI("legendary_pack_boars_calydonian_dead") and NI("legendary_boar_reinforcment_3_spawned") then
+ local se_squad_5 = spawn_squad("legendary_pack_boars_reinf_3", pos_3, lvid_3, gvid_3)
+ GI("legendary_boar_reinforcment_3_spawned")
+ end
+end
+function spawn_legendary_calydonian_boar_4()
+
+ local pos_4 = vector():set( 59.722770690918,0.56484937667847,145.73992919922 ) --- smart 2 west
+
+ local lvid_4 = 174270
+
+ local gvid_4 = 112
+ if NI("legendary_boar_calydonian_spawned") then
+ news_manager.send_tip(db.actor, game.translate_string("st_calydonian_boar_spawned_1"), 0, "communication", 11000, 1)
+ local se_squad_1 = spawn_squad("legendary_pack_boars_calydonian", pos_4, lvid_4, gvid_4)
+ local se_squad_2 = spawn_squad("legendary_pack_boars_calydonian_guard", pos_4, lvid_4, gvid_4)
+ GI("legendary_boar_calydonian_spawned")
+
+ return
+ end
+ if HI("legendary_pack_boars_calydonian_guard_dead") and NI("legendary_pack_boars_calydonian_dead") and NI("legendary_boar_reinforcment_1_spawned") then
+ local se_squad_3 = spawn_squad("legendary_pack_boars_reinf_1", pos_4, lvid_4, gvid_4)
+ GI("legendary_boar_reinforcment_1_spawned")
+ end
+
+ if HI("legendary_pack_boars_reinf_1_dead") and NI("legendary_pack_boars_calydonian_dead") and NI("legendary_boar_reinforcment_2_spawned") then
+ local se_squad_4 = spawn_squad("legendary_pack_boars_reinf_2", pos_4, lvid_4, gvid_4)
+ GI("legendary_boar_reinforcment_2_spawned")
+ end
+ if HI("legendary_pack_boars_reinf_2_dead") and NI("legendary_pack_boars_calydonian_dead") and NI("legendary_boar_reinforcment_3_spawned") then
+ local se_squad_5 = spawn_squad("legendary_pack_boars_reinf_3", pos_4, lvid_4, gvid_4)
+ GI("legendary_boar_reinforcment_3_spawned")
+ end
+
+end
+
+function spawn_legendary_calydonian_boar_5()
+ local pos_5 = vector():set( -42.557529449463,0.49137985706329,118.64920043945 ) --- smart 3 east
+ local lvid_5 = 120939
+
+ local gvid_5 = 69
+
+ if NI("legendary_boar_calydonian_spawned") then
+ news_manager.send_tip(db.actor, game.translate_string("st_calydonian_boar_spawned_1"), 0, "communication", 11000, 1)
+ local se_squad_1 = spawn_squad("legendary_pack_boars_calydonian", pos_5, lvid_5, gvid_5)
+ local se_squad_2 = spawn_squad("legendary_pack_boars_calydonian_guard", pos_5, lvid_5, gvid_5)
+ GI("legendary_boar_calydonian_spawned")
+
+ return
+ end
+ if HI("legendary_pack_boars_calydonian_guard_dead") and NI("legendary_pack_boars_calydonian_dead") and NI("legendary_boar_reinforcment_1_spawned") then
+ local se_squad_3 = spawn_squad("legendary_pack_boars_reinf_1", pos_5, lvid_5, gvid_5)
+ GI("legendary_boar_reinforcment_1_spawned")
+ end
+
+ if HI("legendary_pack_boars_reinf_1_dead") and NI("legendary_pack_boars_calydonian_dead") and NI("legendary_boar_reinforcment_2_spawned") then
+ local se_squad_4 = spawn_squad("legendary_pack_boars_reinf_2", pos_5, lvid_5, gvid_5)
+ GI("legendary_boar_reinforcment_2_spawned")
+ end
+ if HI("legendary_pack_boars_reinf_2_dead") and NI("legendary_pack_boars_calydonian_dead") and NI("legendary_boar_reinforcment_3_spawned") then
+ local se_squad_5 = spawn_squad("legendary_pack_boars_reinf_3", pos_5, lvid_5, gvid_5)
+ GI("legendary_boar_reinforcment_3_spawned")
+ end
+
+end
+
+function spawn_legendary_calydonian_boar_6()
+
+ local pos_6 = vector():set( -34.978141784668,0.53491681814194,164.68092346191 ) --- samrt 3 south
+
+ local lvid_6 = 125376
+
+ local gvid_6 = 70
+
+
+ if NI("legendary_boar_calydonian_spawned") then
+ news_manager.send_tip(db.actor, game.translate_string("st_calydonian_boar_spawned_1"), 0, "communication", 11000, 1)
+ local se_squad_1 = spawn_squad("legendary_pack_boars_calydonian", pos_6, lvid_6, gvid_6)
+ local se_squad_2 = spawn_squad("legendary_pack_boars_calydonian_guard", pos_6, lvid_6, gvid_6)
+ GI("legendary_boar_calydonian_spawned")
+
+ return
+ end
+ if HI("legendary_pack_boars_calydonian_guard_dead") and NI("legendary_pack_boars_calydonian_dead") and NI("legendary_boar_reinforcment_1_spawned") then
+ local se_squad_3 = spawn_squad("legendary_pack_boars_reinf_1", pos_6, lvid_6, gvid_6)
+ GI("legendary_boar_reinforcment_1_spawned")
+ end
+
+ if HI("legendary_pack_boars_reinf_1_dead") and NI("legendary_pack_boars_calydonian_dead") and NI("legendary_boar_reinforcment_2_spawned") then
+ local se_squad_4 = spawn_squad("legendary_pack_boars_reinf_2", pos_6, lvid_6, gvid_6)
+ GI("legendary_boar_reinforcment_2_spawned")
+ end
+ if HI("legendary_pack_boars_reinf_2_dead") and NI("legendary_pack_boars_calydonian_dead") and NI("legendary_boar_reinforcment_3_spawned") then
+ local se_squad_5 = spawn_squad("legendary_pack_boars_reinf_3", pos_6, lvid_6, gvid_6)
+ GI("legendary_boar_reinforcment_3_spawned")
+ end
+
+end
+
+function reset_legendary_hunt_2()
+
+ DI("legendary_pack_boars_1_spawned")
+ DI("legendary_pack_boars_2_spawned")
+ DI("legendary_pack_boars_3_spawned")
+ DI("legendary_pack_boars_1_dead")
+ DI("legendary_pack_boars_2_dead")
+ DI("legendary_pack_boars_3_dead")
+ DI("legendary_boar_calydonian_spawned")
+ DI("legendary_pack_boars_calydonian_guard_dead")
+ DI("legendary_boar_reinforcment_1_spawned")
+ DI("legendary_pack_boars_reinf_1_dead")
+ DI("legendary_boar_reinforcment_2_spawned")
+ DI("legendary_pack_boars_reinf_2_dead")
+ DI("legendary_boar_reinforcment_3_spawned")
+ DI("legendary_pack_boars_reinf_3_dead")
+ DI("player_fled_from_calydonian_boar")
+
+end
+
+function xr_effects.release_legendary_hunt_2()
+
+ local squad_1 = get_story_se_object("legendary_pack_boars_1")
+ local squad_2 = get_story_se_object("legendary_pack_boars_2")
+ local squad_3 = get_story_se_object("legendary_pack_boars_3")
+ local squad_4 = get_story_se_object("legendary_pack_boars_calydonian_guard")
+ local squad_5 = get_story_se_object("legendary_pack_boars_reinf_1")
+ local squad_6 = get_story_se_object("legendary_pack_boars_reinf_2")
+ local squad_7 = get_story_se_object("legendary_pack_boars_reinf_3")
+ local squad_8 = get_story_se_object("legendary_pack_boars_calydonian")
+
+ if (squad_1) then
+ alife_release(squad_1)
+ end
+ if (squad_2) then
+ alife_release(squad_2)
+ end
+ if (squad_3) then
+ alife_release(squad_3)
+ end
+ if (squad_4) then
+ alife_release(squad_4)
+ end
+ if (squad_5) then
+ alife_release(squad_5)
+ end
+ if (squad_6) then
+ alife_release(squad_6)
+ end
+ if (squad_7) then
+ alife_release(squad_7)
+ end
+ if (squad_8) then
+ alife_release(squad_8)
+ end
+
+end
+
+function transfer_reward_legendary_boar_1(first_speaker, second_speaker)
+ dialogs.relocate_item_section_to_actor(first_speaker, second_speaker, "wpn_svd_cyclops")
+end
+
+
+
+
+---- Alyosha Shyogolov ----
+function give_alyosha_shyogolov_trouble_1()
+ dialogs_brotherhood.give_task('give_alyosha_shyogolov_trouble_1')
+end
+
+function set_alyosha_shyogolov_as_companion_1(a,b)
+ local squad = get_story_squad("alyosha_shyogolov_squad")
+
+ axr_companions.add_special_squad(squad)
+
+end
+
+function dismiss_alyosha_shyogolov_as_companion_1(a,b)
+ local squad = get_story_squad("alyosha_shyogolov_squad")
+
+ if NI("alyosha_shyogolov_0_done") then
+ axr_companions.dismiss_special_squad(squad)
+ end
+end
+
+function give_alyosha_shyogolov_trouble_2()
+ dialogs_brotherhood.give_task('give_alyosha_shyogolov_trouble_2')
+end
+
+function is_has_bh_mozgotlen_documents()
+ if db.actor:object("bh_mozgotlen_documents") then
+ return true
+ end
+ return false
+end
+
+function transfer_bh_mozgotlen_documents_1(first_speaker, second_speaker)
+ dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, "bh_mozgotlen_documents")
+end
+
+
+function give_alyosha_shyogolov_trouble_3()
+ dialogs_brotherhood.give_task('give_alyosha_shyogolov_trouble_3')
+end
+
+function give_alyosha_shyogolov_trouble_4()
+ dialogs_brotherhood.give_task('give_alyosha_shyogolov_trouble_4')
+end
+
+function give_alyosha_shyogolov_trouble_5()
+ dialogs_brotherhood.give_task('give_alyosha_shyogolov_trouble_5')
+end
+
+--- Quest 3
+
+function relocation_alyosha_1()
+ local squad = get_story_se_object("alyosha_shyogolov_squad")
+ local pos = vector():set( -67.114974975586,3.663382768631,114.72267150879 )
+ if (pos and squad) then
+ TeleportSquad(squad,pos,608040,4599)
+
+ DI("alyosha_shyogolov_1_you_arrived")
+ GI("relocated_alyosha_shyogolov_1")
+ end
+end
+
+function relocation_nr_ecologist_rydzyk_1()
+ local squad = get_story_se_object("nr_ecologist_rydzyk_squad")
+ local pos = vector():set( -216.47917175293,-3.557053565979,79.757942199707 )
+ if (pos and squad) then
+ TeleportSquad(squad,pos,350794,4531)
+
+ GI("nr_ecologist_rydzyk_relocation_1")
+ end
+end
+function relocation_nr_ecologist_1()
+ local squad = get_story_se_object("nr_ecologist_1_squad")
+ local pos = vector():set( -215.28471374512,-3.56827044487,75.60816192627 )
+ if (pos and squad) then
+ TeleportSquad(squad,pos,351965,4531)
+
+ GI("nr_ecologist_1_relocation_1")
+ end
+end
+function relocation_nr_ecologist_2()
+ local squad = get_story_se_object("nr_ecologist_2_squad")
+ local pos = vector():set( -213.26760864258,-3.5684111118317,68.279556274414 )
+ if (pos and squad) then
+ TeleportSquad(squad,pos,355482,4531)
+
+ GI("nr_ecologist_2_relocation_1")
+ end
+end
+--- Quest 4
+
+function alyosha_shyogolov_4_1(speaker, listener)
+ return string.format(game.translate_string("alyosha_shyogolov_4_1"), alife():actor():character_name())
+end
+
+function alyosha_shyogolov_6_18(speaker, listener)
+ return string.format(game.translate_string("alyosha_shyogolov_6_18"), alife():actor():character_name())
+end
+
+
+
+function is_night_alyosha()
+ local hrs = level.get_time_hours()
+ if (hrs >= 22) and (hrs < 24) then
+ return true
+ end
+ return false
+end
+function is_day_alyosha()
+ local hrs = level.get_time_hours()
+ if (hrs >= 0) and (hrs < 22) then
+ return true
+ end
+ return false
+end
+
+
+function relocation_alyosha_2()
+ local squad = get_story_se_object("alyosha_shyogolov_squad")
+ local pos = vector():set( 270.51989746094,27.592041015625,-222.35821533203 )
+ if (pos and squad) then
+ TeleportSquad(squad,pos,1164066,4693)
+
+ DI("relocated_alyosha_shyogolov_1")
+ GI("relocated_alyosha_shyogolov_2")
+ end
+end
+function relocation_alyosha_3()
+ local squad = get_story_se_object("alyosha_shyogolov_squad")
+ local pos = vector():set( 126.01683807373,-7.3208603858948,190.79092407227 )
+ if (pos and squad) then
+ TeleportSquad(squad,pos,1182909,4457)
+
+ DI("relocated_alyosha_shyogolov_2")
+ GI("relocated_alyosha_shyogolov_3")
+ end
+end
+
+function change_faction_erast_1()
+
+
+ local npc = get_story_se_object("erast_fandorin")
+ local convert = level.object_by_id(npc.id)
+ local squad = get_story_se_object("erast_fandorin_squad")
+
+
+ convert:set_character_community("army", 0, 0 )
+ db.actor:set_community_goodwill("ecolog", -2000)
+end
+
+function change_faction_erast_2()
+
+
+ local npc = get_story_se_object("erast_fandorin")
+ local convert = level.object_by_id(npc.id)
+ local squad = get_story_se_object("erast_fandorin_squad")
+
+ convert:set_character_community("ecolog", 0, 0 )
+
+end
+
+
+function relocation_erast_fandorin_1()
+ local squad = get_story_se_object("erast_fandorin_squad")
+ local pos = vector():set( 337.31549072266,26.735898971558,-255.1216583252 )
+ if (pos and squad) then
+ TeleportSquad(squad,pos,1254956,4694)
+
+ GI("erast_fandorin_relocation_1")
+ end
+end
+function relocation_erast_fandorin_2()
+ local squad = get_story_se_object("erast_fandorin_squad")
+ local pos = vector():set( -207.43057250977,-3.7736539840698,71.709953308105 )
+ if (pos and squad) then
+ TeleportSquad(squad,pos,366212,4486)
+ DI("erast_fandorin_relocation_1")
+ GI("erast_fandorin_relocation_2")
+ end
+end
+
+function nr_ambush_release()
+
+ local squad_1 = get_story_se_object("nr_ambush_squad_1")
+ local squad_2 = get_story_se_object("nr_ambush_squad_2")
+ local squad_3 = get_story_se_object("nr_ambush_squad_3")
+ local squad_4 = get_story_se_object("nr_ambush_squad_4")
+ local squad_5 = get_story_se_object("nr_ambush_squad_5")
+ local squad_6 = get_story_se_object("nr_ambush_squad_6")
+ local squad_7 = get_story_se_object("nr_ambush_squad_7")
+ local squad_8 = get_story_se_object("nr_ambush_squad_8")
+ local squad_9 = get_story_se_object("erast_fandorin_squad")
+
+ if (squad_1) then
+ alife_release(squad_1)
+ end
+ if (squad_2) then
+ alife_release(squad_2)
+ end
+ if (squad_3) then
+ alife_release(squad_3)
+ end
+ if (squad_4) then
+ alife_release(squad_4)
+ end
+ if (squad_5) then
+ alife_release(squad_5)
+ end
+ if (squad_6) then
+ alife_release(squad_6)
+ end
+ if (squad_7) then
+ alife_release(squad_7)
+ end
+ if (squad_8) then
+ alife_release(squad_8)
+ end
+ if (squad_9) then
+ if HI("erast_fandorin_dead") then
+ alife_release(squad_9)
+ elseif NI("erast_fandorin_dead") then
+ relocation_erast_fandorin_2()
+ end
+ end
+
+ news_manager.send_tip(db.actor, game.translate_string("Squads should release"), 1, "ecolog", 11000, 1)
+end
+
+
+
+---- Dolg Butcher ----
+function give_meet_aspirin_quest_1()
+ dialogs_brotherhood.give_task('give_meet_aspirin_quest_1')
+end
+
+function give_meet_aspirin_quest_2()
+ dialogs_brotherhood.give_task('give_meet_aspirin_quest_2')
+end
+
+function give_meet_voronin_quest_1()
+ dialogs_brotherhood.give_task('give_meet_voronin_quest_1')
+end
+
+function give_dolg_bloodsucker_village_1()
+ dialogs_brotherhood.give_task('give_dolg_bloodsucker_village_1')
+end
+
+function transfer_dolg_bloodsucker_village_raid_1(first_speaker, second_speaker)
+ dialogs.relocate_item_section_to_actor(first_speaker, second_speaker, "batteries_dead", 2)
+ dialogs.relocate_item_section_to_actor(first_speaker, second_speaker, "device_torch_nv_1")
+ dialogs.relocate_item_section_to_actor(first_speaker, second_speaker, "medkit")
+ dialogs.relocate_item_section_to_actor(first_speaker, second_speaker, "drug_coagulant", 2)
+end
+
+---Dolg Hunter botched ---
+
+function give_dolg_bloodsucker_village_2()
+ dialogs_brotherhood.give_task('give_dolg_bloodsucker_village_2')
+end
+
+function spawn_artyom_bloodsucker_wounded()
+ local smart_2 = SIMBOARD.smarts_by_names["bar_dolg_general"]
+ local squad = SIMBOARD:create_squad(smart_2,"dolg_artyom_bloodsucker_squad")
+end
+
+function xr_effects.spawn_dolg_sergey_bloodsucker_dead()
+ local pos = vector():set( -281.60269165039,-22.027982711792,193.5417175293 )
+ local se_obj = alife_create( "dolg_sergey_bloodsucker", pos, 55874, 2029 )
+ if (se_obj) then
+ se_obj:kill()
+ end
+ if ( not se_obj ) then
+ printe("!ERROR: unable to spawn dolg_sergey_bloodsucker" )
+ end
+end
+
+function xr_effects.spawn_dolg_vadim_bloodsucker_dead()
+ local pos = vector():set( -228.06121826172,-21.856832504272,210.08169555664 )
+ local se_obj = alife_create( "dolg_vadim_bloodsucker", pos, 95993, 2055 )
+ if (se_obj) then
+ se_obj:kill()
+ end
+ if ( not se_obj ) then
+ printe("!ERROR: unable to spawn dolg_vadim_bloodsucker" )
+ end
+end
+
+function xr_effects.spawn_dolg_sasha_bloodsucker_dead()
+ local pos = vector():set( -300.43096923828,-22.203056335449,290.10729980469 )
+ local se_obj = alife_create( "dolg_sasha_bloodsucker", pos, 81237, 2058 )
+ if (se_obj) then
+ se_obj:kill()
+ end
+ if ( not se_obj ) then
+ printe("!ERROR: unable to spawn dolg_sasha_bloodsucker" )
+ end
+end
+
+function transfer_dolg_bloodsucker_village_killer_patches(first_speaker, second_speaker)
+ dialogs.relocate_item_section_to_actor(first_speaker, second_speaker, "killer_patch", 3)
+end
+
+function transfer_dolg_bloodsucker_village_botched_money_1(first_speaker, second_speaker)
+ dialogs.relocate_money_to_actor(first_speaker, second_speaker, 15000)
+end
+
+function transfer_dolg_bloodsucker_village_botched_money_2(first_speaker, second_speaker)
+ dialogs.relocate_money_to_actor(first_speaker, second_speaker, 20000)
+end
+
+-- Dolg Hunter payback --
+
+
+function give_dolg_bloodsucker_village_3()
+ dialogs_brotherhood.give_task('give_dolg_bloodsucker_village_3')
+end
+
+function transfer_morphine_to_artyom(first_speaker, second_speaker)
+ dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, "morphine")
+end
+
+function is_has_moprhine_artyom()
+ if db.actor:object("morphine") then
+ return true
+ end
+ return false
+end
+
+function artyom_bloodsucker_overdose()
+ local npc = get_story_object("dolg_artyom_bloodsucker")
+ if npc then
+ npc:kill(npc)
+ end
+end
+
+function poluchit_po_ebala(actor, npc, p)
+
+ local squad = get_story_squad("dolg_ilya_bloodsucker_squad")
+ local commander = alife_object(squad:commander_id())
+ if squad == nil then
+ printf("There is no squad with id[%s]", tostring(story_id))
+ return
+ end
+
+ squad:set_squad_relation("enemy")
+ commander:force_set_goodwill(-5000, actor)
+ npc:force_set_goodwill(-5000, actor)
+end
+function poluchit_po_ebala_2(actor, npc, p)
+
+ local squad = get_story_squad("dolg_ilya_bloodsucker_2_squad")
+ local commander = alife_object(squad:commander_id())
+ if squad == nil then
+ printf("There is no squad with id[%s]", tostring(story_id))
+ return
+ end
+
+ squad:set_squad_relation("enemy")
+ commander:force_set_goodwill(-5000, actor)
+ npc:force_set_goodwill(-5000, actor)
+end
+
+----Forester ----
+
+function is_has_mutanthammer_actor()
+ if db.actor:object("wpn_saiga12s_mutanthammer") then
+ return true
+ end
+ return false
+end
+
+
+function transfer_mutanthammer_to_forester(first_speaker, second_speaker)
+ dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, "wpn_saiga12s_mutanthammer")
+end
+
+function transfer_mutanthammer_from_forester(first_speaker, second_speaker)
+ dialogs.relocate_item_section_to_actor(first_speaker, second_speaker, "wpn_saiga12s_mutanthammer")
+end
+
+---- Legendary Mutants ----
+
+--- Vlad and Drakul ---
+
+function is_has_bloodsucker_hearts_10()
+ local cnt = utils_item.get_amount(db.actor, "mutant_part_heart_bloodsucker")
+ if (cnt >= 5) then
+ return true
+ end
+ return false
+end
+
+function is_night_vlad_drakul()
+ local hrs = level.get_time_hours()
+ if (hrs >= 21) or (hrs < 1) then
+ return true
+ end
+ return false
+end
+
+function is_day_vlad_drakul()
+ local hrs = level.get_time_hours()
+ if (hrs >= 1) and (hrs < 21) then
+ return true
+ end
+ return false
+end
+
+function vlad_drakul_task_reset()
+ DI("forester_news_legendary_1")
+ DI("forester_news_legendary_2")
+ DI("hunt_vlad_drakul_1_init")
+ DI("legendary_bloodsucker_1_dead")
+
+ DI("forester_news_legendary_3")
+ DI("give_forester_hunt_vlad_drakul_fail")
+
+ DI("forester_legendary_2_done")
+end
+
+function give_forester_hunt_vlad_drakul()
+ dialogs_brotherhood.give_task('give_forester_hunt_vlad_drakul')
+end
+
+function is_has_trenchcoat_forester()
+ if db.actor:object("trenchcoat_green_outfit_brotherhood_forester") then
+ return true
+ end
+ return false
+end
+
+function transfer_trenchcoat_to_forester(first_speaker, second_speaker)
+ dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, "trenchcoat_green_outfit_brotherhood_forester")
+end
+
+function transfer_trenchoat_from_forester(first_speaker, second_speaker)
+ dialogs.relocate_item_section_to_actor(first_speaker, second_speaker, "trenchcoat_green_outfit_brotherhood_forester")
+end
+
+function is_has_trenchcoat_forester_on()
+ if db.actor:item_in_slot(7) ~= nil and db.actor:item_in_slot(7):section() == "trenchcoat_green_outfit_brotherhood_forester" then
+ return true
+ end
+ return false
+end
+
+---- Vybegallo ----
+
+
+--- Quest 1 --
+
+
+function give_vybegallo_pseudogiant()
+ dialogs_brotherhood.give_task('give_vybegallo_pseudogiant')
+end
+
+function is_has_eye_vybegallo()
+ if db.actor:object("mutant_part_pseudogigant_eye") then
+ return true
+ end
+ return false
+end
+
+function transfer_eye_to_vybegallo(first_speaker, second_speaker)
+ dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, "mutant_part_pseudogigant_eye")
+
+end
+
+function is_has_hand_vybegallo()
+ if db.actor:object("mutant_part_pseudogigant_hand") then
+ return true
+ end
+ return false
+end
+
+function transfer_hand_to_vybegallo(first_speaker, second_speaker)
+ dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, "mutant_part_pseudogigant_hand")
+end
+
+function is_has_hide_vybegallo()
+ if db.actor:object("hide_pseudogiant") then
+ return true
+ end
+ return false
+end
+
+function transfer_hide_to_vybegallo(first_speaker, second_speaker)
+ dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, "hide_pseudogigant")
+end
+
+
+function is_has_fracture_vybegallo()
+local cnt = utils_item.get_amount(db.actor, "mutant_part_fracture_hand")
+ if (cnt >= 2) then
+ return true
+ end
+ return false
+end
+
+function transfer_fracture_to_vybegallo(first_speaker, second_speaker)
+ dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, "mutant_part_fracture_hand", 2)
+end
+
+function is_has_bloodsucker_vybegallo()
+ if db.actor:object("mutant_part_heart_bloodsucker") then
+ return true
+ end
+ return false
+end
+
+function transfer_bloodsucker_to_vybegallo(first_speaker, second_speaker)
+ dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, "mutant_part_heart_bloodsucker")
+end
+
+function transfer_reward_from_vybegallo_parts(first_speaker, second_speaker)
+ dialogs.relocate_money_to_actor(first_speaker, second_speaker, 10000)
+end
+
+
+
+
+
+function give_sakharov_order_vybegallo_quest()
+ dialogs_brotherhood.give_task('give_sakharov_order_vybegallo_quest')
+end
+
+function is_has_order_for_vybegallo()
+ if db.actor:object("sakharov_order_vybegallo") then
+ return true
+ end
+ return false
+end
+
+
+function transfer_sakharov_order_vybegallo_to_actor(first_speaker, second_speaker)
+ dialogs.relocate_item_section_to_actor(first_speaker, second_speaker, "sakharov_order_vybegallo")
+end
+
+function transfer_sakharov_order_to_vybegallo(first_speaker, second_speaker)
+ dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, "sakharov_order_vybegallo")
+end
+
+function hiding_vybegallo()
+ local squad = get_story_se_object("vybegallo_squad")
+ local pos = vector():set( 42.025260925293,10.499049186707,16.939895629883 )
+ if (pos and squad) then
+ TeleportSquad(squad,pos,3591,3715)
+
+ GI("vybegallo_hiding")
+ end
+end
+
+function give_vybegallo_satisfied_man()
+ dialogs_brotherhood.give_task('give_vybegallo_satisfied_man')
+end
+function transfer_vybegallo_satisfied_man_prototype(first_speaker, second_speaker)
+ dialogs.relocate_item_section_to_actor(first_speaker, second_speaker, "af_grid_prototype")
+end
+
+---in news_tips_icons Sakharov is written Saharov---
+function sakharov_vybegallo_1_info()
+ news_manager.send_tip(db.actor, game.translate_string("st_sakharov_vybegallo_1_info"), 3, "saharov", 11000, 1)
+end
+
+function xr_effects.spawn_vybegallo_order_mercenary()
+ local pos = vector():set( 348.31338500977,34.241146087646,-398.91174316406 )
+ alife():create('vybegallo_order_mercenary', pos, 1546321, 4138)
+end
+
+function xr_effects.spawn_vybegallo_order_mercenary_2()
+ local pos = vector():set( -33.994609832764,2.2611196041107,37.711166381836 )
+ alife():create('vybegallo_order_mercenary', pos, 112749, 2391)
+end
+
+function is_has_vybegallo_order_mercenary()
+ if db.actor:object("vybegallo_order_mercenary") then
+ return true
+ end
+ return false
+end
+
+function transfer_vybegallo_order_mercenary(first_speaker, second_speaker)
+ dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, "vybegallo_order_mercenary")
+end
+
+function transfer_hush_money_vybegallo(first_speaker, second_speaker)
+ dialogs.relocate_money_to_actor(first_speaker, second_speaker, 5000)
+end
+
+function give_vybegallo_must_die()
+ dialogs_brotherhood.give_task('give_vybegallo_must_die')
+end
+---- Escape ----
+
+---Sidorovich---
+
+function give_sidorovich_railway_assault()
+ dialogs_brotherhood.give_task('give_sidorovich_railway_assault')
+end
+
+function transfer_grenade_railway_assault(first_speaker, second_speaker)
+ dialogs.relocate_item_section_to_actor(first_speaker, second_speaker, "grenade_f1")
+end
+
+function is_has_no_grenade_railway_assault()
+ if db.actor:object("grenade_f1") or db.actor:object("grenade_rgd5") then
+ return false
+ end
+ return true
+end
+
+function is_has_vodka_for_grenade_assault_1()
+ if db.actor:object("bottle_metal") then
+ return true
+ end
+ return false
+end
+function is_has_vodka_for_grenade_assault_2()
+ if db.actor:object("vodka") then
+ return true
+ end
+ return false
+end
+function is_has_vodka_for_grenade_assault_3()
+ if db.actor:object("vodka2") then
+ return true
+ end
+ return false
+end
+
+function is_has_vodka_for_grenade_assault_4()
+ if db.actor:object("vodka_quality") then
+ return true
+ end
+ return false
+end
+
+function transfer_vodka_for_grenade_1(first_speaker, second_speaker)
+ dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, "bottle_metal", 1)
+ xr_effects.inc_faction_goodwill_to_actor(db.actor, nil, {"stalker", 5})
+end
+
+function transfer_vodka_for_grenade_2(first_speaker, second_speaker)
+ dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, "vodka", 1)
+ xr_effects.inc_faction_goodwill_to_actor(db.actor, nil, {"stalker", 10})
+end
+
+function transfer_vodka_for_grenade_3(first_speaker, second_speaker)
+ dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, "vodka2", 1)
+ xr_effects.inc_faction_goodwill_to_actor(db.actor, nil, {"stalker", 15})
+end
+
+function transfer_vodka_for_grenade_4(first_speaker, second_speaker)
+ dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, "vodka_quality", 1)
+ xr_effects.inc_faction_goodwill_to_actor(db.actor, nil, {"stalker", 30})
+end
+
+
+function send_railway_assault_message_1()
+ news_manager.send_tip(db.actor, game.translate_string("st_assault_railway_info_1"), 1, "stalker", 11000, 1)
+ news_manager.send_tip(db.actor, game.translate_string("st_assault_railway_info_2"), 4, "csky", 11000, 1)
+end
+
+function give_sidorovich_railway_assault_2()
+ dialogs_brotherhood.give_task('give_sidorovich_railway_assault_2')
+end
+
+
+-- Fake Artifact--
+
+function transfer_fake_artifact_1(first_speaker, second_speaker)
+ dialogs.relocate_item_section_to_actor(first_speaker, second_speaker, "af_gold_fish_fake_1")
+end
+
+function is_has_fake_artifact_1()
+ if db.actor:object("af_gold_fish_fake_1") then
+ return true
+ end
+ return false
+end
+
+function transfer_fake_artifact_2(first_speaker, second_speaker)
+ dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, "af_gold_fish_fake_1")
+end
+
+function transfer_fake_artifact_3(first_speaker, second_speaker)
+ dialogs.relocate_item_section_to_actor(first_speaker, second_speaker, "af_gold_fish_fake_2_lead_box")
+end
+
+
+function give_sidorovich_fake_artifact_1()
+ dialogs_brotherhood.give_task('give_sidorovich_fake_artifact_1')
+end
+
+function transfer_money_sidorovich_bribe(first_speaker, second_speaker)
+ dialogs.relocate_money_to_actor(first_speaker, second_speaker, 10000)
+end
+
+function give_tambov_debt_1()
+ dialogs_brotherhood.give_task('give_tambov_debt_1')
+end
+
+function xr_effects.tambov_debt_1_info()
+ news_manager.send_tip(db.actor, game.translate_string("st_tambov_debt_1_info"), 3, "default", 11000, 1)
+ news_manager.send_tip(db.actor, game.translate_string("st_tambov_debt_2_info"), 6, "ecolog", 11000, 1)
+end
+
+---- Shlitzer
+
+function give_shlitzer_smuggling_1()
+ dialogs_brotherhood.give_task('give_shlitzer_smuggling_1')
+end
+
+function transfer_money_shlitzer_reward(first_speaker, second_speaker)
+ dialogs.relocate_money_to_actor(first_speaker, second_speaker, 8000)
+end
+
+
+function transfer_shlitzer_smuggling_bag_1(first_speaker, second_speaker)
+ dialogs.relocate_item_section_to_actor(first_speaker, second_speaker, "quest_package_shlitzer")
+
+end
+
+
+function transfer_shlitzer_smuggling_bag_2(first_speaker, second_speaker)
+ dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, "quest_package_shlitzer")
+ dialogs.relocate_money_to_actor(first_speaker, second_speaker, 8000)
+end
+
+function transfer_shlitzer_smuggling_bag_3(first_speaker, second_speaker)
+ dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, "quest_package_shlitzer")
+end
+
+function give_shlitzer_smuggling_2()
+ dialogs_brotherhood.give_task('give_shlitzer_smuggling_2')
+end
+
+function transfer_shlitzer_smuggling_case_1(first_speaker, second_speaker)
+ dialogs.relocate_item_section_to_actor(first_speaker, second_speaker, "quest_package_shlitzer_2")
+
+end
+function transfer_shlitzer_smuggling_case_2(first_speaker, second_speaker)
+ dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, "quest_package_shlitzer_2")
+
+end
+
+function is_has_shlitzer_bag_1()
+ if db.actor:object("quest_package_shlitzer") then
+ return true
+ end
+ return false
+end
+function is_has_shlitzer_case_1()
+ if db.actor:object("quest_package_shlitzer_2") then
+ return true
+ end
+ return false
+end
+
+function change_faction_bh_ironchain()
+
+ local npc = get_story_se_object("bh_ironchain")
+ local convert = level.object_by_id(npc.id)
+
+ convert:set_character_community("bandit", 0, 0 )
+
+ local squad = get_story_squad("bh_ironchain_2_squad")
+ local commander = alife_object(squad:commander_id())
+ if squad == nil then
+ printf("There is no squad with id[%s]", tostring(story_id))
+ return
+ end
+
+ squad:set_squad_relation("enemy")
+ commander:force_set_goodwill(-5000, actor)
+ npc:force_set_goodwill(-5000, actor)
+end
+
+function give_shlitzer_smuggling_3()
+ dialogs_brotherhood.give_task('give_shlitzer_smuggling_3')
+end
+
+function xr_effects.reset_bh_badger_logic()
+ DI("bh_shlitzer_smuggling_done")
+ DI("bh_shlitzer_smuggling_start")
+ DI("bh_shlitzer_smuggling_1")
+ DI("bh_shlitzer_smuggling_2")
+ DI("bh_shlitzer_smuggling_3")
+ DI("bh_shlitzer_smuggling_4")
+ DI("bh_badger_deal_done")
+ news_manager.send_tip(db.actor, game.translate_string("Reset works, don't forget to delete this"), nil, "communication", 6000)
+end
+
+function relocation_pollox_and_castor()
+ local squad = get_story_se_object("csky_assault_esc_5_7_leader")
+ local squad_2 = get_story_se_object("stalker_assault_esc_5_9_leader")
+ local pos_1 = vector():set( 5.9352240562439,0.86977106332779,295.33111572266 )
+ local pos_2 = vector():set( 3.3982691764832,0.87022680044174,295.80453491211 )
+
+ if (pos_1 and squad) then
+ TeleportSquad(squad,pos_1,309330,442)
+
+ end
+ if (pos_2 and squad_2) then
+ TeleportSquad(squad_2,pos_2,306528,446)
+
+ end
+ GI("castor_pollox_relocation_init")
+end
+function bh_smuggling_player_execution()
+
+ local pos_1 = vector():set( -134.43222045898,-30.139472961426,-393.75299072266 ) --- exec 1
+ local pos_2 = vector():set( -137.74774169922,-30.139163970947,-393.99801635742 ) --- exec 2
+
+ local se_squad = spawn_squad("bh_lockdown_execution_squad", pos_1, 120479, 373)
+ local se_squad_2 = spawn_squad("bh_lockdown_execution_squad_2", pos_2, 116478, 373)
+
+
+ local out_position = vector():set( -135.63259887695,-30.247434616089,-399.60668945313 )
+ db.actor:set_actor_position(out_position)
+
+
+end
+
+function give_tambov_debt_2()
+ dialogs_brotherhood.give_task('give_tambov_debt_2')
+end
+function transfer_money_tambov(first_speaker, second_speaker)
+ dialogs.relocate_money_to_actor(first_speaker, second_speaker, 10000)
+end
+
+function tambov_5000_money(first_speaker, second_speaker)
+ return first_speaker:money() >= 5000
+end
+function tambov_5000_money_pay(first_speaker, second_speaker)
+ dialogs.relocate_money_from_actor(first_speaker, second_speaker, 5000)
+end
+function tambov_17500_money(first_speaker, second_speaker)
+ return first_speaker:money() >= 17500
+end
+function tambov_17500_money_pay(first_speaker, second_speaker)
+ dialogs.relocate_money_from_actor(first_speaker, second_speaker, 17500)
+end
+
+
+--- Sakharov and other scientists ---
+function sakharov_fake_artifact_money_pay(first_speaker, second_speaker)
+ dialogs.relocate_money_from_actor(first_speaker, second_speaker, 10000)
+end
+
+function sakharov_fake_artifact_has_money(first_speaker, second_speaker)
+ return first_speaker:money() >= 10000
+end
+
+function is_has_fake_artifact_2()
+ if db.actor:object("af_gold_fish_fake_2_lead_box") then
+ return true
+ end
+ return false
+end
+
+function transfer_fake_artifact_box_1(first_speaker, second_speaker)
+ dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, "af_gold_fish_fake_2_lead_box")
+end
+-----Market Share -----
+function give_meet_marlo_chris_quest_1()
+ dialogs_brotherhood.give_task('give_meet_marlo_chris_quest_1')
+end
+
+function give_meet_marlo_chris_quest_2()
+ dialogs_brotherhood.give_task('give_meet_marlo_chris_quest_2')
+end
+
+function give_meet_marlo_chris_quest_3()
+ dialogs_brotherhood.give_task('give_meet_marlo_chris_quest_3')
+end
+
+function marlo_stanfield_start_dialog_3(speaker, listener)
+ return string.format(game.translate_string("marlo_stanfield_start_dialog_3"), alife():actor():character_name())
+end
+
+function transfer_drinking_marlo_1(first_speaker, second_speaker)
+ dialogs.relocate_money_to_actor(first_speaker, second_speaker, 2000)
+end
+
+function has_drinking_hawaiian_1(first_speaker, second_speaker)
+ return first_speaker:money() >= 2000
+end
+
+function transfer_drinking_hawaiian_1(first_speaker, second_speaker)
+ dialogs.relocate_money_from_actor(first_speaker, second_speaker, 2000)
+end
+
+
+
+function ms_sidorovich_beatup(first_speaker, second_speaker)
+ local actor = dialogs.who_is_actor(first_speaker, second_speaker)
+
+ if (actor.health < 0.1) then
+ local hit_power_ms = 0.01
+ local h = hit()
+ h.direction = VEC_ZERO
+ h.draftsman = actor
+ h.type = hit.shock
+ h:bone("bip01_spine")
+ h.power = hit_power_ms
+ h.impulse = 0.001
+ actor:hit(h)
+
+ elseif (actor.health >= 0.1) and (actor.health < 0.15) then
+ local hit_power_ms = 0.07
+ local h = hit()
+ h.direction = VEC_ZERO
+ h.draftsman = actor
+ h.type = hit.shock
+ h:bone("bip01_spine")
+ h.power = hit_power_ms
+ h.impulse = 0.001
+ actor:hit(h)
+
+ elseif (actor.health >= 0.15) and (actor.health < 0.25) then
+ local hit_power_ms = 0.1
+ local h = hit()
+ h.direction = VEC_ZERO
+ h.draftsman = actor
+ h.type = hit.shock
+ h:bone("bip01_spine")
+ h.power = hit_power_ms
+ h.impulse = 0.001
+ actor:hit(h)
+
+ elseif (actor.health >= 0.25) and (actor.health < 0.5) then
+ local hit_power_ms = 0.2
+ local h = hit()
+ h.direction = VEC_ZERO
+ h.draftsman = actor
+ h.type = hit.shock
+ h:bone("bip01_spine")
+ h.power = hit_power_ms
+ h.impulse = 0.001
+ actor:hit(h)
+
+ elseif (actor.health >= 0.5) and (actor.health < 0.75) then
+ local hit_power_ms = 0.3
+ local h = hit()
+ h.direction = VEC_ZERO
+ h.draftsman = actor
+ h.type = hit.shock
+ h:bone("bip01_spine")
+ h.power = hit_power_ms
+ h.impulse = 0.001
+ actor:hit(h)
+
+ elseif (actor.health >= 0.75) then
+ local hit_power_ms = 0.4
+ local h = hit()
+ h.direction = VEC_ZERO
+ h.draftsman = actor
+ h.type = hit.shock
+ h:bone("bip01_spine")
+ h.power = hit_power_ms
+ h.impulse = 0.001
+ actor:hit(h)
+
+ end
+
+
+
+end
+---Start Up---
+
+function give_marlo_pda()
+ dialogs_brotherhood.give_task('give_marlo_pda')
+end
+
+function is_has_mercenary_pda_marlo()
+ if db.actor:object("itm_pda_mercenary_1") then
+ return true
+ end
+ return false
+end
+
+function transfer_mercenary_pda_to_chris(first_speaker, second_speaker)
+ dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, "itm_pda_mercenary_1")
+end
+
+function give_intercept_courrier_1()
+ dialogs_brotherhood.give_task('give_intercept_courrier_1')
+end
+
+function xr_effects.zaton_mercenary_courrier_deathrattle()
+ news_manager.send_tip(db.actor, game.translate_string("st_zaton_mercenary_courrier_deathrattle_info"), 0, "killer", 11000, 1)
+
+end
+
+function is_has_mercenary_usb_marlo()
+ if db.actor:object("itm_usb_mercenary_1") then
+ return true
+ end
+ return false
+end
+
+function transfer_broken_mercenary_pda_to_actor(first_speaker, second_speaker)
+ dialogs.relocate_item_section_to_actor(first_speaker, second_speaker, "broken_pda")
+end
+
+function transfer_broken_mercenary_pda_from_actor(first_speaker, second_speaker)
+ dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, "broken_pda")
+end
+
+function transfer_new_mercenary_pda_to_actor(first_speaker, second_speaker)
+ dialogs.relocate_item_section_to_actor(first_speaker, second_speaker, "device_pda_1")
+end
+
+function transfer_mercenary_usb_to_chris(first_speaker, second_speaker)
+ dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, "itm_usb_mercenary_1")
+end
+
+function transfer_mercenary_usb_back(first_speaker, second_speaker)
+ dialogs.relocate_item_section_to_actor(first_speaker, second_speaker, "itm_usb_mercenary_1")
+end
+
+function give_intercept_courrier_2()
+ dialogs_brotherhood.give_task('give_intercept_courrier_2')
+end
+
+function give_intercept_delivery_1()
+ dialogs_brotherhood.give_task('give_intercept_delivery_1')
+end
+
+function xr_effects.spawn_reinforcment_mercenary_1()
+ local smart = SIMBOARD.smarts_by_names["jup_b202"]
+ local squad = SIMBOARD:create_squad(smart,"jupiter_mercenary_2_squad")
+ news_manager.send_tip(db.actor, game.translate_string("st_chris_asset_interception_info_2"), 2, "stalker", 11000, 1)
+end
+
+function xr_effects.spawn_mercenary_supplies_1()
+ local pos = vector():set( 157.05603027344,1.2640976905823,218.27989196777 )
+ local se_obj = alife_create("quest_package_mercenary_1", pos, 983812, 4493 )
+ if ( not se_obj ) then
+ printe("!ERROR: unable to spawn quest_package_mercenary_1" )
+ end
+end
+
+function xr_effects.spawn_mercenary_supplies_2()
+ local pos = vector():set( 158.90191650391,1.2653551101685,218.26203918457 )
+ local se_obj = alife_create("quest_package_mercenary_2", pos, 987409, 4493 )
+ if ( not se_obj ) then
+ printe("!ERROR: unable to spawn quest_package_mercenary_2" )
+ end
+end
+
+function xr_effects.spawn_mercenary_supplies_3()
+ local pos = vector():set( 160.69065856934,1.2892243862152,218.36166381836 )
+ local se_obj = alife_create("quest_package_mercenary_3", pos, 991009, 4493 )
+ if ( not se_obj ) then
+ printe("!ERROR: unable to spawn quest_package_mercenary_3" )
+ end
+end
+
+function xr_effects.spawn_mercenary_supplies_4()
+ local pos = vector():set( 157.33737182617,1.2653121948242,215.8713684082 )
+ local se_obj = alife_create("quest_package_mercenary_4", pos, 984999, 4493 )
+ if ( not se_obj ) then
+ printe("!ERROR: unable to spawn quest_package_mercenary_4" )
+ end
+end
+
+function xr_effects.spawn_mercenary_supplies_5()
+ local pos = vector():set( 159.13275146484,1.2654616832733,216.0887298584 )
+ local se_obj = alife_create("quest_package_mercenary_5", pos, 987406, 4493 )
+ if ( not se_obj ) then
+ printe("!ERROR: unable to spawn quest_package_mercenary_5" )
+ end
+end
+
+function xr_effects.spawn_mercenary_supplies_6()
+ local pos = vector():set( 160.92427062988,1.2653577327728,216.09620666504 )
+ local se_obj = alife_create("quest_package_mercenary_6", pos, 991006, 4493 )
+ if ( not se_obj ) then
+ printe("!ERROR: unable to spawn quest_package_mercenary_6" )
+ end
+end
+
+function is_has_chris_mercenary_supply_1()
+ if db.actor:object("quest_package_mercenary_1") then
+ return true
+ end
+ return false
+end
+
+function is_has_chris_mercenary_supply_2()
+ if db.actor:object("quest_package_mercenary_2") then
+ return true
+ end
+ return false
+end
+
+function is_has_chris_mercenary_supply_3()
+ if db.actor:object("quest_package_mercenary_3") then
+ return true
+ end
+ return false
+end
+
+function is_has_chris_mercenary_supply_4()
+ if db.actor:object("quest_package_mercenary_4") then
+ return true
+ end
+ return false
+end
+
+function is_has_chris_mercenary_supply_5()
+ if db.actor:object("quest_package_mercenary_5") then
+ return true
+ end
+ return false
+end
+
+function is_has_chris_mercenary_supply_6()
+ if db.actor:object("quest_package_mercenary_6") then
+ return true
+ end
+ return false
+end
+
+function transfer_chris_mercenary_supply_1(first_speaker, second_speaker)
+ dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, "quest_package_mercenary_1")
+end
+
+function transfer_chris_mercenary_supply_2(first_speaker, second_speaker)
+ dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, "quest_package_mercenary_2")
+end
+function transfer_chris_mercenary_supply_3(first_speaker, second_speaker)
+ dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, "quest_package_mercenary_3")
+end
+function transfer_chris_mercenary_supply_4(first_speaker, second_speaker)
+ dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, "quest_package_mercenary_4")
+end
+function transfer_chris_mercenary_supply_5(first_speaker, second_speaker)
+ dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, "quest_package_mercenary_5")
+end
+function transfer_chris_mercenary_supply_6(first_speaker, second_speaker)
+ dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, "quest_package_mercenary_6")
+end
+--- Owl documents ---
+
+function xr_effects.spawn_ms_owl_documents_1()
+ local pos = vector():set( 447.71743774414,32.602996826172,-455.80853271484 )
+ alife():create('ms_owl_documents_1', pos, 1427937, 4700)
+end
+
+function is_has_ms_owl_documents_1_owl()
+ if db.actor:object("ms_owl_documents_1") then
+ return true
+ end
+ return false
+end
+
+function transfer_ms_owl_documents_1_to_owl(first_speaker, second_speaker)
+ dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, "ms_owl_documents_1")
+end
+
+
+
+
+function give_hostile_takeover_main()
+ dialogs_brotherhood.give_task('give_hostile_takeover_main')
+end
+
+function give_diplomatic_takeover_main()
+ dialogs_brotherhood.give_task('give_diplomatic_takeover_main')
+end
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+--- What a Night ---
+
+
+function give_what_a_night()
+ dialogs_brotherhood.give_task('give_what_a_night')
+end
+
+
+function create_stash_and_transfer_items() --- courtesy of xcvb
+ local se_obj = alife_create("inv_backpack", db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id())
+ if se_obj then
+ local txt = strformat(game.translate_string("st_itm_stash_of_character"), db.actor:character_name())
+ level.map_add_object_spot_ser(se_obj.id, "treasure", txt)
+
+ local m_data = alife_storage_manager.get_state()
+ if not (m_data.player_created_stashes) then
+ m_data.player_created_stashes = {}
+ end
+
+ local bp = db.actor:item_in_slot(13)
+ m_data.player_created_stashes[se_obj.id] = bp:section()
+ alife_release_id(bp:id())
+
+ CreateTimeEvent("transfer_to_bp_e", "transfer_to_bp_a", 0.5, transf_itms, se_obj.id)
+ end
+
+end
+
+function transf_itms(stash_id) --- courtesy of xcvb
+ local stash = level.object_by_id(stash_id)
+ if stash then
+
+ local function itr(_, itm)
+ if not (string.find(itm:section(), "outfit")) then
+ db.actor:transfer_item(itm, stash)
+ end
+ end
+
+ db.actor:iterate_inventory(itr, db.actor)
+ end
+
+ return true
+end
+
+
+
+function blackout_drink()
+
+ xr_effects.disable_ui_only(db.actor, nil)
+ level.add_cam_effector("camera_effects\\surge_02.anm", 10, false, "bind_stalker_ext.anabiotic_callback")
+ level.add_pp_effector("surge_fade.ppe", 11, false)
+
+ _G.mus_vol = get_console_cmd(2,"snd_volume_music")
+ _G.amb_vol = get_console_cmd(2,"snd_volume_eff")
+ exec_console_cmd("snd_volume_music 0")
+ exec_console_cmd("snd_volume_eff 0")
+ level.change_game_time(0,10,0)
+ surge_manager.get_surge_manager().time_forwarded = true
+ psi_storm_manager.get_psi_storm_manager().time_forwarded = true
+ level_weathers.get_weather_manager():forced_weather_change()
+
+end
+
+function blackout_teleportation()
+ local out_position = vector():set( 293.83453369141,0.39302235841751,25.673402786255 )
+ db.actor:set_actor_position(out_position)
+end
+
+function xr_effects.spawn_blackout_knife()
+ local pos = vector():set( 290.24829101563,0.66161745786667,24.540012359619 )
+ alife():create('wpn_knife3', pos, 328476, 189)
+end
+
+function xr_effects.spawn_blackout_shotgun()
+ local pos = vector():set( 297.06683349609,-0.20075908303261,24.5491065979 )
+ alife():create('wpn_bm16', pos, 333148, 189)
+end
+
+function drink_with_me()
+ level.add_cam_effector("camera_effects\\drunk.anm", 10, false, "bind_stalker_ext.anabiotic_callback")
+end
+
+
+function give_zakuski_drinking(first_speaker, second_speaker)
+ dialogs.relocate_item_section_to_actor(first_speaker, second_speaker, "sausage")
+end
+
+function is_has_blackout_backpack()
+
+ if db.actor:item_in_slot(13) ~= nil then
+ return true
+ end
+ return false
+end
+
+
+----- Rush to the North ----
+
+function give_barman_brainscorcher_1(first_speaker, second_speaker)
+ dialogs.relocate_item_section_to_actor(first_speaker, second_speaker, "vodka_quality", 1)
+ xr_effects.inc_faction_goodwill_to_actor(db.actor, nil, {"stalker", 25})
+end
+
+--- Scamlok ---
+
+function spawn_scamlok_1()
+ local smart_2 = SIMBOARD.smarts_by_names["bar_dolg_general"]
+ local squad = SIMBOARD:create_squad(smart_2,"nr_scamlok_squad")
+end
+
+function is_has_scamlok_money_1(first_speaker, second_speaker)
+ return first_speaker:money() >= 10000
+end
+
+function is_has_scamlok_money_2(first_speaker, second_speaker)
+ return first_speaker:money() >= 20000
+end
+
+function pay_scamlok_1(first_speaker, second_speaker)
+ dialogs.relocate_money_from_actor(first_speaker, second_speaker, 10000)
+end
+
+function pay_scamlok_2(first_speaker, second_speaker)
+ dialogs.relocate_money_from_actor(first_speaker, second_speaker, 20000)
+end
+
+function give_barman_scamlok_sad(first_speaker, second_speaker)
+ dialogs.relocate_item_section_to_actor(first_speaker, second_speaker, "vodka", 1)
+end
+
+function scamlok_flees_1()
+ local squad_1 = get_story_se_object("nr_scamlok_squad")
+ if (squad_1) then
+ alife_release(squad_1)
+ end
+end
+
+function give_task_join_scamlok_1()
+ dialogs_brotherhood.give_task('give_task_join_scamlok_1')
+end
+
+function give_task_escort_sorokin_1()
+ dialogs_brotherhood.give_task('give_task_escort_sorokin_1')
+end
+
+
+function give_money_escort_sorokin_1(first_speaker, second_speaker)
+ dialogs.relocate_money_to_actor(first_speaker, second_speaker, 8000)
+end
+
+function give_back_money_escort_sorokin_1(first_speaker, second_speaker)
+ dialogs.relocate_money_from_actor(first_speaker, second_speaker, 8000)
+ xr_effects.inc_faction_goodwill_to_actor(db.actor, nil, {"stalker", 10})
+end
+
+function is_has_sorokin_money_1(first_speaker, second_speaker)
+ return first_speaker:money() >= 8000
+end
+--- Fanatic ---
+
+function give_task_fanat_rookie_training_1()
+ dialogs_brotherhood.give_task('give_task_fanat_rookie_training_1')
+end
+
+function is_has_echo_fanatic_rookie_1()
+ if db.actor:object("detector_simple") then
+ return true
+ end
+ return false
+end
+
+function is_has_vodka_fanatic_rookie_1()
+ if db.actor:object("vodka") then
+ return true
+ end
+ return false
+end
+
+function is_has_container_fanatic_rookie_1()
+ if db.actor:object("lead_box") then
+ return true
+ end
+ return false
+end
+
+function is_has_shotgun_fanatic_rookie_2()
+ local cnt = utils_item.get_amount(db.actor, "ammo_12x70_buck")
+ if (cnt >= 20) then
+ return true
+ end
+ return false
+end
+
+function transfer_rookie_detector_fanatic_1(first_speaker, second_speaker)
+ dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, "detector_simple")
+
+end
+
+function transfer_rookie_ammo_fanatic_2(first_speaker, second_speaker)
+
+ dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, "ammo_12x70_buck", 2)
+
+end
+
+function transfer_rookie_vodka_fanatic_3(first_speaker, second_speaker)
+
+ dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, "vodka")
+
+end
+
+function transfer_rookie_container_fanatic_2(first_speaker, second_speaker)
+ dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, "lead_box")
+
+end
+
+function nr_iliaz_scam_money(first_speaker, second_speaker)
+ return first_speaker:money() >= 1000
+end
+
+function transfer_rookie_scam_fanatic_2(first_speaker, second_speaker)
+ dialogs.relocate_money_from_actor(first_speaker, second_speaker, 1000)
+ dialogs.relocate_item_section_to_actor(first_speaker, second_speaker, "af_cristall_flower_lead_box")
+ xr_effects.inc_faction_goodwill_to_actor(db.actor, nil, {"stalker", -150})
+end
+
+
+----- Strange Meat ------
+function give_task_nr_strange_meat()
+ dialogs_brotherhood.give_task('give_task_nr_strange_meat')
+end
+
+
+function is_has_strange_meat()
+ if db.actor:object("kolbasa_strange") then
+ return true
+ end
+ return false
+end
+
+function is_has_strange_meat_unpacked()
+ if db.actor:object("kolbasa_strange_unpacked") then
+ return true
+ end
+ return false
+end
+
+function is_has_strange_meat_tried()
+ if db.actor:object("kolbasa_strange_tried") then
+ return true
+ end
+ return false
+end
+
+function is_has_strange_meat_tried_unpacked()
+ if db.actor:object("kolbasa_strange_tried_unpacked") then
+ return true
+ end
+ return false
+end
+
+function is_has_yak_bullet()
+ if db.actor:object("bullet_yak") then
+ return true
+ elseif db.actor:object("bullet_yak_identify") then
+ return true
+ end
+ return false
+end
+
+function is_has_yak_bullet_2()
+ if db.actor:object("bullet_yak_identify") then
+ return true
+ end
+ return false
+end
+
+function transfer_yak_bullet_1(first_speaker, second_speaker)
+ dialogs.relocate_item_section_from_actor(first_speaker, second_speaker, "bullet_yak")
+
+end
+
+function transfer_yak_bullet_2(first_speaker, second_speaker)
+ dialogs.relocate_item_section_to_actor(first_speaker, second_speaker, "bullet_yak_identify")
+end
+
+function xr_effects.spawn_yak_dead()
+ local pos = vector():set( -149.38208007813,-23.090442657471,-182.3323059082 )
+ local se_obj = alife_create( "nr_dead_convict_2", pos, 644285, 4444 )
+ if (se_obj) then
+ se_obj:kill()
+ end
+ if ( not se_obj ) then
+ printe("!ERROR: unable to spawn nr_dead_convict_2" )
+ end
+end
+
+function use_item_strange_meat_1(obj, _, cf) --- curtesy of NLTP Ashes
+ if (obj:section() ~= "kolbasa_strange") then return end
+
+ GI("nr_tasted_strange_meat")
+ news_manager.send_tip(db.actor, game.translate_string("st_strange_meat_taste_1"), nil, "communication", 6000)
+
+ alife_create_item("kolbasa_strange_tried", db.actor)
+end
+
+
+function use_item_strange_meat_1_2(obj, _, cf)
+ if (obj:section() ~= "kolbasa_strange_tried") then return end
+
+ news_manager.send_tip(db.actor, game.translate_string("st_strange_meat_taste_2"), nil, "communication", 6000)
+
+end
+
+function use_item_strange_meat_2(obj, _, cf)
+ if (obj:section() ~= "kolbasa_strange_unpacked") then return end
+
+ GI("nr_tasted_strange_meat")
+ news_manager.send_tip(db.actor, game.translate_string("st_strange_meat_taste_1"), nil, "communication", 6000)
+
+ alife_create_item("kolbasa_strange_tried_unpacked", db.actor)
+end
+
+function use_item_strange_meat_2_2(obj, _, cf)
+ if (obj:section() ~= "kolbasa_strange_tried_unpacked") then return end
+
+ news_manager.send_tip(db.actor, game.translate_string("st_strange_meat_taste_2"), nil, "communication", 6000)
+
+end
+
+function use_item_radio_micro_quest(obj, _, cf)
+ if (obj:section() ~= "radio_micro_quest") then return end
+
+ news_manager.send_tip(db.actor, game.translate_string("st_strange_meat_taste_2"), nil, "communication", 6000)
+
+end
+
+
+
+---- Bezsonik ----
+
+function give_task_bezsonik_1()
+ dialogs_brotherhood.give_task('give_task_bezsonik_1')
+end
+function nr_bezsonik_0(speaker, listener)
+ if HI("bezsonik_dogs_sleep") and NI("bezsonik_dogs_reward") then
+ return string.format(game.translate_string("nr_bezsonik_0_1"))
+
+ end
+ if HI("bezsonik_dogs_sleep") and HI("bezsonik_dogs_reward") then
+ return string.format(game.translate_string("nr_bezsonik_0_2"))
+
+ end
+ if HI("bezsonik_dogs_nosleep") then
+ return string.format(game.translate_string("nr_bezsonik_0_3"))
+
+ end
+end
+
+function give_reward_nr_bezsonik_1(first_speaker, second_speaker)
+ if HI("bezsonik_dogs_sleep") and NI("bezsonik_dogs_reward") then
+ dialogs.relocate_money_to_actor(first_speaker, second_speaker, 5000)
+ end
+ if HI("bezsonik_dogs_sleep") and HI("bezsonik_dogs_reward") then
+ dialogs.relocate_money_to_actor(first_speaker, second_speaker, 5000)
+ dialogs.relocate_item_section_to_actor(first_speaker, second_speaker, "vodka2")
+ dialogs.relocate_item_section_to_actor(first_speaker, second_speaker, "kolbasa")
+ end
+ if HI("bezsonik_dogs_nosleep") then
+ dialogs.relocate_money_to_actor(first_speaker, second_speaker, 2000)
+ end
+
+end
+
+------Random events -----
+--- Gutalin
+
+
+function relocation_bh_gutalin()
+ local squad = get_story_se_object("bh_gutalin_squad")
+ local pos = vector():set( -206.23277282715,-19.894157409668,-136.4208984375 )
+ if (pos and squad) then
+ TeleportSquad(squad,pos,46472,453)
+
+ GI("bh_gutalin_relocation_init")
+ end
+end
+
+function give_task_bh_gutalin_1()
+ dialogs_brotherhood.give_task('give_task_bh_gutalin_1')
+end
+
+--- Primakov
+
+function nr_primakov_turn()
+
+ local npc = get_story_se_object("controller_victim_1")
+ local convert = level.object_by_id(npc.id)
+
+ convert:set_character_community("zombied", 0, 0 )
+
+end
+
+function nr_dead_convict_1_turn()
+
+ local npc = get_story_se_object("nr_dead_convict_1")
+ local convert = level.object_by_id(npc.id)
+
+ convert:set_character_community("bandit", 0, 0 )
+
+end
+
+
+function nr_dead_convict_2_turn()
+
+ local npc = get_story_se_object("nr_dead_convict_2")
+ local convert = level.object_by_id(npc.id)
+
+ convert:set_character_community("bandit", 0, 0 )
+
+end
+
+function transfer_sasha_baltun_vodka(first_speaker, second_speaker)
+ dialogs.relocate_item_section_to_actor(first_speaker, second_speaker, "vodka2")
+end
+function relocation_nr_sasha_baltun_murder()
+ local squad = get_story_se_object("nr_sasha_baltunov_squad")
+ local pos = vector():set( 115.9564666748,-0.0015365779399872,49.205066680908 )
+ if (pos and squad) then
+ TeleportSquad(squad,pos,33791,1759)
+
+ GI("nr_baltunov_init_murder")
+
+ end
+end
+
+function nr_sasha_baltun_murder()
+ local squad = get_story_squad("nr_sasha_baltunov_squad")
+ if squad and squad.commander_id then
+ for m in squad:squad_members() do
+ local se_npc = alife_object(m.id)
+ if se_npc and se_npc:alive() then
+ se_npc:kill()
+ GI("nr_baltunov_init_murder_done")
+ end
+ end
+ end
+end
+
+--- Like Rats in a trap
+function give_like_rats_trap_1()
+ dialogs_brotherhood.give_task('give_like_rats_trap_1')
+end
+
+function bh_intimidate_check_1()
+ local rank = db.actor:character_rank()
+ local intimidate_value = ((rank/100) + math.random(1, 50))
+
+ if intimidate_value >= 121 then
+
+ else
+
+ end
+end
+
+function bh_persuade_check_1()
+ local reputation = db.actor:character_reputation()
+ local reputation_value = ((reputation/10) +math.random(1, 50))
+
+ if reputation_value >= 131 then
+
+ else
+
+ end
+
+end
\ No newline at end of file
diff --git a/mods/[DEV] Brotherhood/gamedata/scripts/dialogs_brotherhood_ac.script b/mods/[DEV] Brotherhood/gamedata/scripts/dialogs_brotherhood_ac.script
new file mode 100644
index 00000000..3732fd97
--- /dev/null
+++ b/mods/[DEV] Brotherhood/gamedata/scripts/dialogs_brotherhood_ac.script
@@ -0,0 +1,151 @@
+
+------- GENERAL Functions --------
+local HI = has_alife_info
+local GI = give_info
+local DI = disable_info
+function NI(str)
+ return not (has_alife_info(str))
+end
+
+local spawn_squad = dialogs_brotherhood.spawn_squad
+
+function give_task(name)
+ task_manager.get_task_manager():give_task(name)
+end
+
+--- money conditions and effects
+
+
+function transfer_money_to_actor_4000(first_speaker, second_speaker)
+ dialogs.relocate_money_to_actor(first_speaker, second_speaker, 4000)
+end
+
+--- time conditions and effects
+
+
+function set_time_after_22h()
+ local hrs = level.get_time_hours()
+ local zeit = (22 - hrs)
+ if hrs > 0 and hrs < 22 then
+ level.change_game_time(0,zeit,0)
+ end
+end
+
+function is_it_night_22_3_yes()
+ local hrs = level.get_time_hours()
+ if (hrs >= 22) or (hrs < 3) then
+ return true
+ end
+ return false
+end
+function is_it_night_22_3_no()
+ local hrs = level.get_time_hours()
+ if (hrs >= 22) or (hrs < 3) then
+ return false
+ end
+ return true
+end
+
+-------Stories from the Zone --------
+
+
+function give_task_father_charon_quest_1()
+ dialogs_brotherhood_ac.give_task('give_task_father_charon_quest_1')
+end
+
+function spawn_ac_blue_winter_init()
+ if (NI("ac_blue_winter_init")) then
+ local pos_1 = vector():set( -13.764570236206,0.84513801336288,201.52365112305 )
+ if not (get_story_se_object("ac_blue_winter_squad")) then
+ local se_squad = spawn_squad("ac_blue_winter_squad", pos_1, 85657, 2985)
+ end
+ if (get_story_se_object("ac_blue_winter_squad")) then
+ GI("ac_blue_winter_init")
+ end
+ end
+end
+function spawn_ac_balthazar_init()
+ if (NI("ac_balthazar_init")) then
+ local pos_1 = vector():set( -14.980568885803,0.84502762556076,204.65113830566 )
+ if not (get_story_se_object("ac_balthazar_squad")) then
+ local se_squad = spawn_squad("ac_balthazar_squad", pos_1, 84928, 2985)
+ end
+ if (get_story_se_object("ac_balthazar_squad")) then
+ GI("ac_balthazar_init")
+ end
+ end
+end
+
+function give_task_blue_winter_quest_1()
+ dialogs_brotherhood_ac.give_task('give_task_blue_winter_quest_1')
+end
+
+function set_ac_blue_winter_and_balthazar_as_companion_1(a,b)
+ local squad = get_story_squad("ac_blue_winter_squad")
+ local squad_2 = get_story_squad("ac_balthazar_squad")
+ axr_companions.add_special_squad(squad)
+ axr_companions.add_special_squad(squad_2)
+end
+
+function ac_spawn_pri_a25_guards()
+ local smart = SIMBOARD.smarts_by_names["pri_a25_smart_terrain"]
+ local squad_1 = SIMBOARD:create_squad(smart,"pri_ac_a25_guard_1")
+end
+
+function dismiss_ac_blue_winter_and_balthazar_as_companion_1(a,b)
+ local squad = get_story_squad("ac_blue_winter_squad")
+ local squad_2 = get_story_squad("ac_balthazar_squad")
+ axr_companions.dismiss_special_squad(squad)
+ axr_companions.dismiss_special_squad(squad_2)
+end
+
+
+
+
+function give_task_blue_winter_quest_3()
+ dialogs_brotherhood_ac.give_task('give_task_blue_winter_quest_3')
+end
+
+function ac_task_3_blue_winter_relocation()
+ local squad = get_story_se_object("ac_blue_winter_squad")
+ local pos = vector():set( -131.57495117188,-0.50764739513397,-199.29406738281 )
+ if (pos and squad) then
+ TeleportSquad(squad,pos,67093,4888)
+ GI("relocated_ac_task_3_blue_winter")
+ GI("ac_task_3_active")
+ end
+
+end
+
+function ac_task_3_balthazar_relocation()
+ local squad = get_story_se_object("ac_balthazar_squad")
+ local pos = vector():set( -138.35227966309,-0.25803527235985,-211.60403442383 )
+ if (pos and squad) then
+ TeleportSquad(squad,pos,61814,4888)
+ GI("relocated_ac_task_3_balthazar")
+ GI("ac_task_3_active")
+ end
+
+end
+
+function ac_task_3_melchior_relocation()
+ local squad = get_story_se_object("ac_melchior_squad")
+ local pos = vector():set( -139.3289642334,-0.42204529047012,-204.6999206543 )
+ if (pos and squad) then
+ TeleportSquad(squad,pos,61274,4888)
+ GI("relocated_ac_task_3_melchior")
+ GI("ac_task_3_active")
+ end
+
+end
+
+function ac_task_3_caspar_relocation()
+ local squad = get_story_se_object("ac_caspar_squad")
+ local pos = vector():set( -135.96295166016,-0.37012958526611,-198.35459899902 )
+ if (pos and squad) then
+ TeleportSquad(squad,pos,63912,4888)
+ GI("relocated_ac_task_3_caspar")
+ GI("ac_task_3_active")
+ end
+
+end
\ No newline at end of file
diff --git a/mods/[DEV] Brotherhood/gamedata/scripts/parts_brotherhood_inject.script b/mods/[DEV] Brotherhood/gamedata/scripts/parts_brotherhood_inject.script
new file mode 100644
index 00000000..92902764
--- /dev/null
+++ b/mods/[DEV] Brotherhood/gamedata/scripts/parts_brotherhood_inject.script
@@ -0,0 +1,49 @@
+---Custom parts inject for Brotherhood
+
+cached_r_string_ex = itms_manager.ini_parts.r_string_ex
+cached_parse_list = _G.parse_list
+parts_custom = {}
+parts_custom_ini = {
+ ["nor_parts_list"] = ini_file_ex("items\\settings\\parts_brotherhood.ltx")
+}
+
+itms_manager.ini_parts.r_string_ex = function(self, s, k)
+ --printf("Override [%s] [%s]", s, k)
+ return parts_custom[s] and parts_custom[s][k] or cached_r_string_ex(self, s, k)
+end
+
+_G.parse_list = function(ini, key, val, convert)
+ if parts_custom[key] then
+ --printf("Override [%s] [%s]", key, val)
+ local str = parts_custom[key][val]
+ local t = str and str ~= "" and str_explode(str,",") or {}
+ if (convert and #t > 0) then
+ local l = {}
+ for i=1,#t do
+ l[t[i]] = true
+ end
+ return l
+ end
+ return t
+ end
+ return cached_parse_list(ini, key, val, convert)
+end
+
+function collect_parts(ini, t)
+ local sections = ini:get_sections()
+ parts_custom[t] = {}
+ for _, section in pairs(sections) do
+ --printf("Section: [%s]", section)
+ local _section = ini:collect_section(section)
+ for k, v in pairs(_section) do
+ --printf("Inserted into [%s]: [%s], [%s]", t, k, v)
+ parts_custom[t][k] = v
+ end
+ end
+end
+
+function on_game_start()
+ for section, ini in pairs(parts_custom_ini) do
+ collect_parts(ini, section)
+ end
+end
\ No newline at end of file
diff --git a/mods/[DEV] Brotherhood/gamedata/scripts/task_brotherhood.script b/mods/[DEV] Brotherhood/gamedata/scripts/task_brotherhood.script
new file mode 100644
index 00000000..abbd95d2
--- /dev/null
+++ b/mods/[DEV] Brotherhood/gamedata/scripts/task_brotherhood.script
@@ -0,0 +1,3824 @@
+
+------- GENERAL Functions --------
+local HI = has_alife_info
+local GI = give_info
+local DI = disable_info
+local spawn_squad = dialogs_brotherhood.spawn_squad
+
+
+function NI(str)
+ return not (has_alife_info(str))
+end
+
+function on_game_start()
+ RegisterScriptCallback("actor_on_update",actor_on_update)
+end
+
+
+function actor_on_update()
+ scouting_esc_smart_terrain_7_11_init()
+ trigger_northern_rush_init()
+ help_alyosha_shyogolov_init()
+ ---help_alyosha_shyogolov_2_init()
+
+ nr_bezsonik_init()
+
+ meet_gutalin_init()
+ nr_primankov_init()
+ nr_baltunov_init()
+ bh_starik_1_init()
+ ---bh_like_rats_trap_init()
+ ---nr_execution_yanov_init()
+
+ ---bh_meet_shlitzer()
+
+ ---print_pos()
+ ---test_pos_reach()
+end
+
+function print_pos()
+ local se_obj_1 = get_story_se_object("quest_chimera_bait_brotherhood")
+ local obj_1 = se_obj_1 and level.object_by_id(se_obj_1.id)
+ if (obj_1) then
+ printf("Item Pos %s", obj_1:position())
+ printf("Item Lvid %s", obj_1:level_vertex_id())
+ printf("Item Gvid %s", obj_1:game_vertex_id())
+
+ end
+
+
+end
+
+function test_pos_reach()
+ local pos_1 = vector():set( 51.08812713623,2.2247929573059,158.54913330078 ) --- underground 4 (2 in init) from stairs under
+ local pos_2 = vector():set( 66.219718933105,1.74422955513,153.49101257324 ) --- underground 4 (2 in init) from stairs under
+ local pos_3 = vector():set( 66.016708374023,1.7425618171692,164.57917785645 ) --- underground 4 (2 in init) from stairs under
+ local dist_1 = 9.8
+ local dist_2 = 13
+ local dist_3 = 14
+ local knife = db.actor:item_in_slot(1)
+ local weapon_1 = db.actor:item_in_slot(2)
+ local weapon_2 = db.actor:item_in_slot(3)
+ local weapon_3 = db.actor:item_in_slot(4)
+
+
+ if (db.actor:position():distance_to(pos_1) < dist_1) then
+
+ if knife and knife:get_state() == 0 then
+ news_manager.send_tip(db.actor, game.translate_string("Inside 1 knife"), 1, "ecolog", 11000, 1)
+ elseif weapon_1 and weapon_1:get_state() == 0 then
+ news_manager.send_tip(db.actor, game.translate_string("Inside 1 weapon 1"), 1, "ecolog", 11000, 1)
+ elseif weapon_2 and weapon_2:get_state() == 0 then
+ news_manager.send_tip(db.actor, game.translate_string("Inside 1 weapon 2"), 1, "ecolog", 11000, 1)
+ elseif weapon_3 and weapon_3:get_state() == 0 then
+ news_manager.send_tip(db.actor, game.translate_string("Inside 1 weapon 3"), 1, "ecolog", 11000, 1)
+ else
+ news_manager.send_tip(db.actor, game.translate_string("Inside 1 10"), 1, "ecolog", 11000, 1)
+ end
+
+ end
+ if (db.actor:position():distance_to(pos_2) < dist_2) then
+ if knife and knife:get_state() == 0 then
+ news_manager.send_tip(db.actor, game.translate_string("Inside 2 knife"), 1, "ecolog", 11000, 1)
+ elseif weapon_1 and weapon_1:get_state() == 0 then
+ news_manager.send_tip(db.actor, game.translate_string("Inside 2 weapon 1"), 1, "ecolog", 11000, 1)
+ elseif weapon_2 and weapon_2:get_state() == 0 then
+ news_manager.send_tip(db.actor, game.translate_string("Inside 2 weapon 2"), 1, "ecolog", 11000, 1)
+ elseif weapon_3 and weapon_3:get_state() == 0 then
+ news_manager.send_tip(db.actor, game.translate_string("Inside 2 weapon 3"), 1, "ecolog", 11000, 1)
+ else
+ news_manager.send_tip(db.actor, game.translate_string("Inside 2 10"), 1, "ecolog", 11000, 1)
+ end
+ end
+ if (db.actor:position():distance_to(pos_3) < dist_3) then
+ if knife and knife:get_state() == 0 then
+ news_manager.send_tip(db.actor, game.translate_string("Inside 3 knife"), 1, "ecolog", 11000, 1)
+ elseif weapon_1 and weapon_1:get_state() == 0 then
+ news_manager.send_tip(db.actor, game.translate_string("Inside 3 weapon 1"), 1, "ecolog", 11000, 1)
+ elseif weapon_2 and weapon_2:get_state() == 0 then
+ news_manager.send_tip(db.actor, game.translate_string("Inside 3 weapon 2"), 1, "ecolog", 11000, 1)
+ elseif weapon_3 and weapon_3:get_state() == 0 then
+ news_manager.send_tip(db.actor, game.translate_string("Inside 3 weapon 3"), 1, "ecolog", 11000, 1)
+ else
+ news_manager.send_tip(db.actor, game.translate_string("Inside 3 10"), 1, "ecolog", 11000, 1)
+ end
+ end
+end
+
+
+function bh_icon_test()
+ dynamic_news_helper.send_tip(string.format(game.translate_string("C"), alife():actor():character_name()), "Sidorovich A", 5, 10, "ui_inGame2_sid", nil, "Sidorovich B")
+ ---news_manager.send_tip(db.actor, string.format(game.translate_string("C"), alife():actor():character_name()), 0, "Sidorovich", 11000, "ui_inGame2_sid")
+ ---dynamic_news_helper.send_tip(msg, se, 5, 10, npc_1:character_icon(), nil, "npc")
+end
+
+function test_dynamic_spawn3()
+ local pos_1 = vector():set( -150.18804931641,-7.0104246139526,-30.537698745728 ) --- Andrey Corpse
+ local pos_2 = vector():set( -168.97549438477,-4.5473079681396,-16.890596389771 ) --- Controller
+ local pos_3 = vector():set( -178.7262878418,-6.3177428245544,-35.88325881958 ) --- Snorks
+ local pos_4 = vector():set( -158.80000305176,-4.9637117385864,-49.565902709961 ) --- Snorks
+
+
+ if (db.actor:item_in_slot(9) ~= nil) and (db.actor:item_in_slot(9):section() == "device_flashlight") then
+
+ local torch = db.actor:item_in_slot(9)
+
+ if torch:get_state() == 3 then
+ news_manager.send_tip(db.actor, game.translate_string("ACTIVE"), 1, "ecolog", 11000, 1)
+ local actor_dir = device().cam_dir
+
+ local pos_1_dir = vec_sub(pos_1,db.actor:position())
+ local pos_2_dir = vec_sub(pos_2,db.actor:position())
+ local pos_3_dir = vec_sub(pos_3,db.actor:position())
+ local pos_4_dir = vec_sub(pos_4,db.actor:position())
+ local yaw1 = yaw_degree3d(actor_dir, pos_1_dir)
+ local yaw2 = yaw_degree3d(actor_dir, pos_2_dir)
+ local yaw3 = yaw_degree3d(actor_dir, pos_3_dir)
+ local yaw4 = yaw_degree3d(actor_dir, pos_4_dir)
+ --printf("YAW %s", tostring(yaw))
+ if yaw1 < 35 then
+ news_manager.send_tip(db.actor, game.translate_string("1"), 1, "ecolog", 11000, 1)
+ elseif yaw2 < 35 then
+ news_manager.send_tip(db.actor, game.translate_string("2"), 1, "ecolog", 11000, 1)
+ elseif yaw3 < 35 then
+ news_manager.send_tip(db.actor, game.translate_string("3"), 1, "ecolog", 11000, 1)
+ elseif yaw4 < 35 then
+ news_manager.send_tip(db.actor, game.translate_string("4"), 1, "ecolog", 11000, 1)
+ else
+ news_manager.send_tip(db.actor, game.translate_string("NONE"), 1, "ecolog", 11000, 1)
+ end
+ end
+ end
+end
+function scouting_esc_smart_terrain_7_11_init()
+ if NI("scouting_esc_smart_terrain_7_11_done") then
+ local dist = 110
+ local smart = SIMBOARD.smarts_by_names["esc_smart_terrain_7_11"]
+ if smart and smart.online then
+ local smrt = SIMBOARD.smarts[smart.id]
+ if smrt and (db.actor:position():distance_to(smart.position) < dist) then
+ GI("scouting_esc_smart_terrain_7_11_done")
+
+ end
+ end
+ end
+end
+
+function trigger_northern_rush_init()
+ if NI("trigger_northern_rush_init_done") then
+ if NI("atomic_crusader_start") then
+ if HI("bar_deactivate_radar_done") then
+ GI("northern_rush_dialogs_trigger_done")
+ nr_sorokin_init()
+ GI("trigger_northern_rush_init_done")
+ brotherhood_timer.market_share_beginning_1()
+ end
+ end
+ end
+end
+
+
+
+function nr_sorokin_init()
+ if (NI("nr_sorokin_init")) then
+ if not (get_story_se_object("nr_sorokin_squad")) then
+ local smart = SIMBOARD.smarts_by_names["bar_visitors"]
+ local squad = SIMBOARD:create_squad(smart,"nr_sorokin_squad")
+ end
+ if (get_story_se_object("nr_sorokin_squad")) then
+ GI("nr_sorokin_init")
+ end
+ end
+end
+
+function trigger_greed_and_betrayal_init()
+ local pos_1 = vector():set(129.0233001709,-1.4414930343628,39.330234527588 )
+ local pos_2 = vector():set(122.13143920898,-3.4335956573486,34.101249694824 )
+ local pos_3 = vector():set(130.765625,-4.8255987167358,22.945343017578 )
+ local pos_4 = vector():set(-168.56024169922,-0.0014378130435944,89.404853820801 )
+ if NI("trigger_greed_and betrayal_done") then
+
+
+
+ end
+end
+
+
+function help_alyosha_shyogolov_init()
+ if (NI("help_alyosha_shyogolov_init")) then
+ if level.name() == "l03_agroprom" then
+ if (NI("help_alyosha_shyogolov_random")) then
+ local dist = 200
+ local smart = SIMBOARD.smarts_by_names["agr_smart_terrain_5_3"]
+ if smart and smart.online then
+ local smrt = SIMBOARD.smarts[smart.id]
+ if smrt and (db.actor:position():distance_to(smart.position) > dist) then
+ if (math.random(75) < 25) then
+
+ news_manager.send_tip(db.actor, game.translate_string("st_shyogolov_trouble_1_info"), 2, "ecolog", 11000, 1)
+ dialogs_brotherhood.give_alyosha_shyogolov_trouble_1()
+ news_manager.send_tip(db.actor, game.translate_string("st_shyogolov_trouble_2_info"), 25, "ecolog", 11000, 1)
+ news_manager.send_tip(db.actor, game.translate_string("st_shyogolov_trouble_3_info"), 50, "ecolog", 11000, 1)
+ GI("help_alyosha_shyogolov_init")
+
+ else
+
+
+ GI("help_alyosha_shyogolov_random")
+ brotherhood_timer.alyosha_shyogolov_help_random()
+
+ end
+ end
+ end
+ end
+ end
+ end
+end
+
+function help_alyosha_shyogolov_2_init()
+ local dist = 200
+
+ local smart = SIMBOARD.smarts_by_names["jup_sim_13"]
+ local smart_2 = SIMBOARD.smarts_by_names["jup_a6"]
+
+ local smrt = SIMBOARD.smarts[smart.id]
+ local smrt_2 = SIMBOARD.smarts[smart_2.id]
+
+ if NI("corruption_relocation_init") then
+ if HI("bar_deactivate_radar_done") then
+ dialogs_brotherhood.relocation_nr_ecologist_rydzyk_1()
+ dialogs_brotherhood.relocation_nr_ecologist_1()
+ dialogs_brotherhood.relocation_nr_ecologist_2()
+
+ GI("corruption_relocation_init")
+ end
+ end
+
+
+ if NI("help_alyosha_shyogolov_2_init") then
+ if HI("alyosha_shyogolov_0_done") then
+
+ if smart and smart.online and smart_2 and smart_2.online then
+
+ if smrt and (db.actor:position():distance_to(smart.position) > dist) and smrt_2 and (db.actor:position():distance_to(smart_2.position) > dist) then
+
+ news_manager.send_tip(db.actor, game.translate_string("st_alyosha_making_trouble_1"), 1, "ecolog", 11000, 1)
+ news_manager.send_tip(db.actor, game.translate_string("st_alyosha_making_trouble_2"), 7, "bandit", 11000, 1)
+ news_manager.send_tip(db.actor, game.translate_string("st_alyosha_making_trouble_3"), 12, "ecolog", 11000, 1)
+ news_manager.send_tip(db.actor, game.translate_string("st_alyosha_making_trouble_4"), 16, "bandit", 11000, 1)
+ news_manager.send_tip(db.actor, game.translate_string("st_alyosha_making_trouble_5"), 20, "ecolog", 11000, 1)
+ news_manager.send_tip(db.actor, game.translate_string("st_alyosha_making_trouble_6"), 24, "bandit", 11000, 1)
+ news_manager.send_tip(db.actor, game.translate_string("st_alyosha_making_trouble_7"), 28, "ecolog", 11000, 1)
+ news_manager.send_tip(db.actor, game.translate_string("st_alyosha_making_trouble_8"), 32, "bandit", 11000, 1)
+ news_manager.send_tip(db.actor, game.translate_string("st_alyosha_making_trouble_9"), 36, "ecolog", 11000, 1)
+ news_manager.send_tip(db.actor, game.translate_string("st_alyosha_making_trouble_10"), 38, "bandit", 11000, 1)
+ news_manager.send_tip(db.actor, game.translate_string("st_alyosha_making_trouble_11"), 40, "bandit", 11000, 1)
+
+
+ dialogs_brotherhood.give_alyosha_shyogolov_trouble_3()
+
+ GI("help_alyosha_shyogolov_2_init")
+
+
+ end
+ end
+ end
+ end
+end
+--- Brotherhood 1 and 2 ---
+
+function task_status_functor.give_task_kill_pack_boars_1_status_f(tsk,task_id)
+ if (NI("task_kill_pack_boars_1_init")) then
+ if not (get_story_se_object("pack_boars_1")) then
+ local dist = 110
+ local smart = SIMBOARD.smarts_by_names["gar_smart_terrain_6_6"]
+ if smart and smart.online then
+ xr_effects.clear_smart_terrain(nil,nil,{"gar_smart_terrain_6_6","true"})
+ local smrt = SIMBOARD.smarts[smart.id]
+ if smrt and (db.actor:position():distance_to(smart.position) < dist) then
+
+ local smart = SIMBOARD.smarts_by_names["gar_smart_terrain_6_6"]
+ local squad = SIMBOARD:create_squad(smart,"pack_boars_1")
+
+ GI("task_kill_pack_boars_1_init")
+ return
+ end
+ end
+ end
+ end
+end
+
+function task_status_functor.give_task_kill_pack_snorks_1_status_f(tsk,task_id)
+ if (NI("task_kill_pack_snorks_1_init")) then
+ if not (get_story_se_object("pack_snorks_1")) then
+ local dist = 100
+ local smart = SIMBOARD.smarts_by_names["gar_smart_terrain_1_7"]
+ if smart and smart.online then
+ xr_effects.clear_smart_terrain(nil,nil,{"gar_smart_terrain_1_7","true"})
+ local smrt = SIMBOARD.smarts[smart.id]
+ if smrt and (db.actor:position():distance_to(smart.position) < dist) then
+
+ local smart = SIMBOARD.smarts_by_names["gar_smart_terrain_1_7"]
+ local squad = SIMBOARD:create_squad(smart,"pack_snorks_1")
+
+ GI("task_kill_pack_snorks_1_init")
+ return
+ end
+ end
+ end
+ end
+end
+--- Brotherhood 3 Vybegallo ---
+
+function task_status_functor.give_task_kill_pack_dogs_1_status_f(tsk,task_id)
+ if (NI("task_kill_pack_dogs_1_init")) then
+ if not (get_story_se_object("pack_dogs_1")) then
+ local dist = 100
+ local smart = SIMBOARD.smarts_by_names["mar_smart_terrain_6_4"]
+ if smart and smart.online then
+ xr_effects.clear_smart_terrain(nil,nil,{"mar_smart_terrain_6_4","true"})
+ local smrt = SIMBOARD.smarts[smart.id]
+ if smrt and (db.actor:position():distance_to(smart.position) < dist) then
+
+ local smart = SIMBOARD.smarts_by_names["mar_smart_terrain_6_4"]
+ local squad = SIMBOARD:create_squad(smart,"pack_dogs_1")
+ xr_effects.spawn_vybegallo_bag()
+ xr_effects.spawn_vybegallo_trail_1()
+ xr_effects.spawn_vybegallo_trail_2()
+ xr_effects.spawn_vybegallo_trail_3()
+ xr_effects.spawn_vybegallo_trail_4()
+ GI("task_kill_pack_dogs_1_init")
+ return
+ end
+ end
+ end
+ end
+end
+
+function xr_effects.spawn_vybegallo_bag()
+ local pos = vector():set( 93.233978271484,1.3431987762451,336.99731445313 )
+ local se_obj = alife_create( "quest_package_vybegallo", pos, 194271, 84 )
+ if ( not se_obj ) then
+ printe("!ERROR: unable to spawn quest_package_vybegallo" )
+ end
+end
+
+function xr_effects.spawn_vybegallo_trail_1()
+ local pos = vector():set( 94.755432128906,1.3435776233673,334.9592590332 )
+ local se_obj = alife_create( "conserva", pos, 195061, 84 )
+ if ( not se_obj ) then
+ printe("!ERROR: unable to spawn quest_package_vybegallo_trail_1" )
+ end
+end
+
+function xr_effects.spawn_vybegallo_trail_2()
+ local pos = vector():set( 98.814163208008,1.2621808052063,335.21612548828 )
+ local se_obj = alife_create( "conserva", pos, 197280, 84 )
+ if ( not se_obj ) then
+ printe("!ERROR: unable to spawn quest_package_vybegallo_trail_2" )
+ end
+end
+
+function xr_effects.spawn_vybegallo_trail_3()
+ local pos = vector():set( 102.38217163086,1.2957384586334,338.11456298828 )
+ local se_obj = alife_create( "conserva", pos, 199367, 84 )
+ if ( not se_obj ) then
+ printe("!ERROR: unable to spawn quest_package_vybegallo_trail_3" )
+ end
+end
+
+function xr_effects.spawn_vybegallo_trail_4()
+ local pos = vector():set( 105.27380371094,1.1134397983551,336.060546875 )
+ local se_obj = alife_create( "conserva", pos, 201262, 84 )
+ if ( not se_obj ) then
+ printe("!ERROR: unable to spawn quest_package_vybegallo_trail_4" )
+ end
+end
+
+function task_status_functor.give_alyosha_shyogolov_trouble_1_status_f(tsk,task_id)
+ if (tsk.stage == 0) then
+
+ if (NI("alyosha_shyogolov_trouble_1_init")) then
+
+ if not (get_story_se_object("shyogolov_pack_snorks_1")) then
+
+ local dist = 100
+ local smart = SIMBOARD.smarts_by_names["agr_smart_terrain_5_3"]
+ if smart and smart.online then
+
+ xr_effects.clear_smart_terrain(nil,nil,{"agr_smart_terrain_5_3","true"})
+ local smrt = SIMBOARD.smarts[smart.id]
+ if smrt and (db.actor:position():distance_to(smart.position) < dist) then
+
+ local smart = SIMBOARD.smarts_by_names["agr_smart_terrain_5_3"]
+ local squad = SIMBOARD:create_squad(smart,"shyogolov_pack_snorks_1")
+ tsk.stage = 1
+ GI("alyosha_shyogolov_trouble_1_init")
+ return
+ end
+ end
+ end
+ end
+ end
+ if (tsk.stage == 1) then
+
+ if HI("alyosha_shyogolov_1_go") then
+
+ local dist = 25
+ local smart = SIMBOARD.smarts_by_names["agr_smart_terrain_4_4"]
+ if smart and smart.online then
+
+ local smrt = SIMBOARD.smarts[smart.id]
+ if smrt and (db.actor:position():distance_to(smart.position) < dist) then
+ GI("alyosha_shyogolov_1_you_arrived")
+
+ return
+ end
+ end
+ end
+ end
+end
+
+function task_status_functor.give_alyosha_shyogolov_trouble_2_status_f(tsk,task_id)
+ local smart_1 = SIMBOARD.smarts_by_names["agr_smart_terrain_5_7"]
+ local smrt_1 = SIMBOARD.smarts[smart_1.id]
+ local smart_2 = SIMBOARD.smarts_by_names["agr_smart_terrain_4_6"]
+ local smrt_2 = SIMBOARD.smarts[smart_2.id]
+ local smart_3 = SIMBOARD.smarts_by_names["mar_smart_terrain_7_3"]
+ local smrt_3 = SIMBOARD.smarts[smart_3.id]
+ local dist = 80
+ local npc = get_story_se_object("bh_mozgotlen_squad")
+
+
+
+ if (tsk.stage == 0) then
+ if smrt_1 and (db.actor:position():distance_to(smart_1.position) < dist) then
+ if NI("bh_mozgotlen_squad_1_init") then
+ local squad = SIMBOARD:create_squad(smart_1,"bh_mozgotlen_squad")
+ local squad = SIMBOARD:create_squad(smart_1,"bh_mozgotlen_squad_2")
+ GI("bh_mozgotlen_squad_1_init")
+ end
+ end
+ if smrt_2 and (db.actor:position():distance_to(smart_2.position) < dist) then
+ if NI("bh_mozgotlen_squad_2_init") then
+ local squad = SIMBOARD:create_squad(smart_2,"bh_alyosha_zombie_squad_1")
+ GI("bh_mozgotlen_squad_2_init")
+ end
+ end
+ if smrt_3 and (db.actor:position():distance_to(smart_3.position) < dist) then
+ if NI("bh_mozgotlen_squad_3_init") then
+ local squad = SIMBOARD:create_squad(smart_3,"bh_alyosha_zombie_squad_2")
+ GI("bh_mozgotlen_squad_3_init")
+ end
+ end
+ if npc then
+ local commander = alife_object(npc:commander_id())
+ if NI("bh_mozgotlen_document_spawn") then
+ alife_create_item("bh_mozgotlen_documents", commander)
+ GI("bh_mozgotlen_document_spawn")
+ end
+
+ end
+ end
+end
+
+
+
+function task_status_functor.give_alyosha_shyogolov_trouble_3_status_f(tsk,task_id)
+
+ local smart = SIMBOARD.smarts_by_names["jup_sim_13"]
+ local smrt = SIMBOARD.smarts[smart.id]
+ local dist = 20
+
+ if (tsk.stage == 0) then
+ if smrt and (db.actor:position():distance_to(smart.position) < dist) then
+ if NI("alyosha_making_trouble_shout") then
+ news_manager.send_tip(db.actor, game.translate_string("st_alyosha_making_trouble_13"), 1, "ecolog", 11000, 1)
+ GI("alyosha_making_trouble_shout")
+ end
+ end
+ if NI("relocated_alyosha_shyogolov_1") then
+ dialogs_brotherhood.relocation_alyosha_1()
+ end
+ if HI("alyosha_shyogolov_retreat_1") then
+ tsk.stage = 1
+ end
+ end
+ if (tsk.stage == 1) then
+ if NI("alyosha_shyogolov_bandit_init") then
+ local squad = SIMBOARD:create_squad(smart,"nr_bandits_1_squad")
+ local squad_2 = SIMBOARD:create_squad(smart,"nr_bandits_2_squad")
+ news_manager.send_tip(db.actor, game.translate_string("st_alyosha_making_trouble_12"), 5, "bandit", 11000, 1)
+ GI("alyosha_shyogolov_bandit_init")
+ tsk.stage = 2
+ end
+ end
+ if (tsk.stage == 2) then
+
+ if HI("nr_bandits_1_squad_dead") and HI("nr_bandits_2_squad_dead") then
+
+ GI("nr_bandits_squads_dead_1")
+
+
+ end
+ end
+end
+
+function task_status_functor.give_alyosha_shyogolov_trouble_4_status_f(tsk,task_id)
+
+ local dist = 40
+ local dist_2 = 100
+
+ local smart_1 = SIMBOARD.smarts_by_names["jup_a9"]
+ local smart_2 = SIMBOARD.smarts_by_names["jup_b47"]
+
+
+ local smrt_1 = SIMBOARD.smarts[smart_1.id]
+ local smrt_2 = SIMBOARD.smarts[smart_2.id]
+
+ local spawn_squad = dialogs_brotherhood.spawn_squad
+ if (tsk.stage == 0) then ---- enables conversation with Erast, but needs better detecting if disguised or not
+
+
+ if db.actor:character_community() == "actor_ecolog" then
+
+ GI("nr_erast_enable_corruption_discussion")
+ else
+ DI("nr_erast_enable_corruption_discussion")
+ end
+
+
+ end
+
+ if (tsk.stage == 1) then ---- clear the smarts
+ news_manager.send_tip(db.actor, game.translate_string("Stage1"), 1, "ecolog", 11000, 1)
+ if smart_1 and smart_1.online and smart_2 and smart_2.online then
+ if smrt_1 and (db.actor:position():distance_to(smart_1.position) < dist) then
+ news_manager.send_tip(db.actor, game.translate_string("Stage 1.1"), 1, "ecolog", 11000, 1)
+ xr_effects.clear_smart_terrain(nil,nil,{"jup_a9","true"})
+ xr_effects.clear_smart_terrain(nil,nil,{"jup_b47","true"})
+
+ tsk.stage = 2
+ return
+ end
+ end
+
+ end
+
+ if (tsk.stage == 2) then ---- teleport NPCs
+
+ if smrt_1 and (db.actor:position():distance_to(smart_1.position) < dist) then
+ news_manager.send_tip(db.actor, game.translate_string("Stage 2"), 1, "ecolog", 11000, 1)
+ if NI("relocated_alyosha_shyogolov_2") then
+
+ dialogs_brotherhood.relocation_alyosha_2()
+
+
+ end
+ if HI("teleport_erast") then
+ if NI("erast_fandorin_relocation_1") then
+ dialogs_brotherhood.relocation_erast_fandorin_1()
+ tsk.stage = 3
+ return
+ end
+ end
+ end
+ end
+
+ if (tsk.stage == 3) then ---- spring the ambush
+ if HI("nr_ambush_init") then
+ if NI("spawn_amry_test_1") then
+
+
+ local squad_1 = SIMBOARD:create_squad(smart_2,"nr_ambush_squad_1")
+ local squad_2 = SIMBOARD:create_squad(smart_2,"nr_ambush_squad_3")
+ local squad_3 = SIMBOARD:create_squad(smart_1,"nr_ambush_squad_2")
+
+ local pos_1 = vector():set( 355.57171630859,27.977787017822,-239.86022949219 )
+ local pos_2 = vector():set( 378.29794311523,27.978296279907,-235.07585144043 )
+ local pos_3 = vector():set( 314.48291015625,34.592678070068,-237.58148193359 )
+ local pos_4 = vector():set( 331.10369873047,34.258598327637,-270.34857177734 )
+ local pos_5 = vector():set( 316.77917480469,34.714248657227,-237.42193603516 )
+
+
+ local se_squad_1 = spawn_squad("nr_ambush_squad_4", pos_1, 1281744, 4694)
+ local se_squad_2 = spawn_squad("nr_ambush_squad_5", pos_2, 1314488, 4787)
+ local se_squad_3 = spawn_squad("nr_ambush_squad_6", pos_3, 1221970, 4694)
+ local se_squad_4 = spawn_squad("nr_ambush_squad_7", pos_4, 1245499, 4694)
+ local se_squad_5 = spawn_squad("nr_ambush_squad_8", pos_5, 1225743, 4694)
+
+ dialogs_brotherhood.change_faction_erast_1()
+
+
+ if NI("relocated_alyosha_shyogolov_3") then
+
+ dialogs_brotherhood.relocation_alyosha_3()
+ CreateTimeEvent("nr_blank_1","nr_blank_1", 1, nr_corruption_self_1)
+ end
+
+ GI("spawn_amry_test_1")
+ tsk.stage = 4
+ end
+ end
+ if HI("nr_ambush_coward_init") then ---- if the player tries to run away before finishing the dialogue
+
+ local dist_4 = 3
+ local pos = vector():set( 337.31549072266,26.735898971558,-255.1216583252 )
+
+ if NI("spawn_amry_test_1") then
+
+ if (db.actor:position():distance_to(pos) > dist_4) then
+
+ news_manager.send_tip(db.actor, game.translate_string("nr_corruption_coward_1"), 0, "army", 11000, 1)
+
+ local squad_1 = SIMBOARD:create_squad(smart_2,"nr_ambush_squad_1")
+ local squad_2 = SIMBOARD:create_squad(smart_2,"nr_ambush_squad_3")
+ local squad_3 = SIMBOARD:create_squad(smart_1,"nr_ambush_squad_2")
+
+ local pos_1 = vector():set( 355.57171630859,27.977787017822,-239.86022949219 )
+ local pos_2 = vector():set( 378.29794311523,27.978296279907,-235.07585144043 )
+ local pos_3 = vector():set( 314.48291015625,34.592678070068,-237.58148193359 )
+ local pos_4 = vector():set( 331.10369873047,34.258598327637,-270.34857177734 )
+ local pos_5 = vector():set( 316.77917480469,34.714248657227,-237.42193603516 )
+
+
+ local se_squad_1 = spawn_squad("nr_ambush_squad_4", pos_1, 1281744, 4694)
+ local se_squad_2 = spawn_squad("nr_ambush_squad_5", pos_2, 1314488, 4787)
+ local se_squad_3 = spawn_squad("nr_ambush_squad_6", pos_3, 1221970, 4694)
+ local se_squad_4 = spawn_squad("nr_ambush_squad_7", pos_4, 1245499, 4694)
+ local se_squad_5 = spawn_squad("nr_ambush_squad_8", pos_5, 1225743, 4694)
+
+ dialogs_brotherhood.change_faction_erast_1()
+
+
+ if NI("relocated_alyosha_shyogolov_3") then
+
+ CreateTimeEvent("nr_blank_1","nr_blank_1", 1, nr_corruption_self_1)
+ dialogs_brotherhood.relocation_alyosha_3()
+
+ end
+
+
+ GI("spawn_amry_test_1")
+ tsk.stage = 4
+ end
+ end
+ end
+ end
+
+ if (tsk.stage == 4) then ---- flee and clean the mess
+
+
+
+ if smrt_2 and (db.actor:position():distance_to(smart_2.position) > dist_2) then
+ if NI("nr_ambush_cleaned") then
+ dialogs_brotherhood.nr_ambush_release()
+
+ if NI("nr_corruption_self_init") then
+
+ if HI("erast_fandorin_dead") then
+ news_manager.send_tip(db.actor, string.format(game.translate_string("nr_corruption_army_1"), alife():actor():character_name()), 0, "army", 11000, 1)
+ elseif NI("erast_fandorin_dead") then
+ news_manager.send_tip(db.actor, string.format(game.translate_string("nr_corruption_army_0"), alife():actor():character_name()), 0, "army", 11000, 1)
+ dialogs_brotherhood.relocation_erast_fandorin_2()
+ dialogs_brotherhood.change_faction_erast_2()
+ end
+
+ CreateTimeEvent("nr_blank_2","nr_blank_2", 5, nr_corruption_self_2)
+
+ CreateTimeEvent("nr_blank_3","nr_blank_3", 10, nr_corruption_self_3)
+
+ CreateTimeEvent("nr_blank_4","nr_blank_4", 15, nr_corruption_self_4)
+
+ CreateTimeEvent("nr_blank_5","nr_blank_5", 20, nr_corruption_self_5)
+
+ CreateTimeEvent("nr_blank_6","nr_blank_6", 25, nr_corruption_self_6)
+
+ GI("nr_corruption_self_init")
+ end
+ GI("nr_ambush_cleaned")
+ return
+ end
+ end
+
+ end
+
+end
+
+function nr_corruption_self_1()
+ if NI("nr_corruption_self_1")then
+ actor_menu.set_msg(1, game.translate_string("nr_corruption_self_1"), 4)
+ GI("nr_corruption_self_1")
+ return true
+ end
+end
+function nr_corruption_self_2()
+ if NI("nr_corruption_self_2")then
+ actor_menu.set_msg(1, game.translate_string("nr_corruption_self_2"), 4)
+ GI("nr_corruption_self_2")
+ return true
+ end
+end
+function nr_corruption_self_3()
+ if NI("nr_corruption_self_3")then
+ actor_menu.set_msg(1, game.translate_string("nr_corruption_self_3"), 4)
+ GI("nr_corruption_self_3")
+ return true
+ end
+end
+function nr_corruption_self_4()
+ if NI("nr_corruption_self_4")then
+ actor_menu.set_msg(1, game.translate_string("nr_corruption_self_4"), 4)
+ dialogs_brotherhood.give_alyosha_shyogolov_trouble_5()
+ GI("alyosha_shyogolov_trouble_4_done")
+ GI("nr_corruption_self_4")
+ return true
+ end
+end
+function nr_corruption_self_5()
+ if NI("nr_corruption_self_5")then
+ actor_menu.set_msg(1, game.translate_string("nr_corruption_self_5"), 4)
+ GI("nr_corruption_self_5")
+ return true
+ end
+end
+function nr_corruption_self_6()
+ if NI("nr_corruption_self_6")then
+ actor_menu.set_msg(1, game.translate_string("nr_corruption_self_6"), 4)
+ GI("nr_corruption_self_6")
+ return true
+ end
+end
+
+function task_status_functor.give_alyosha_shyogolov_trouble_5_status_f(tsk,task_id)
+
+ if (gameplay_disguise.is_disguise ~= nil) then
+ if db.actor:character_community() == "actor_ecolog" then
+
+ db.actor:set_community_goodwill("ecolog", 2000)
+ end
+ else
+
+ db.actor:set_community_goodwill("army", 2000)
+
+ end
+
+end
+
+---- Vybegallo ----
+function task_status_functor.give_vybegallo_satisfied_man_status_f(tsk,task_id)
+ if (tsk.stage == 0) then
+ if (NI("task_kill_satisfied_man_init")) then
+ if not (get_story_se_object("satisfied_man")) then
+ local dist = 27
+ local smart = SIMBOARD.smarts_by_names["agr_u_bloodsucker_2"]
+ if smart and smart.online then
+
+ local smrt = SIMBOARD.smarts[smart.id]
+ if smrt and (db.actor:position():distance_to(smart.position) < dist) then
+
+ local smart = SIMBOARD.smarts_by_names["agr_u_bloodsucker_2"]
+ local squad = SIMBOARD:create_squad(smart,"satisfied_man")
+
+ GI("task_kill_satisfied_man_init")
+ return
+ end
+ end
+ end
+ end
+
+
+ end
+end
+
+--- Brotherhood 4 ---
+function task_status_functor.give_task_kill_pack_snorks_2_status_f(tsk,task_id)
+ if (tsk.stage == 0) then
+ if (NI("task_kill_pack_snorks_2_init")) then
+ if not (get_story_se_object("pack_snorks_2")) then
+ local dist = 100
+ local smart = SIMBOARD.smarts_by_names["agr_smart_terrain_7_5"]
+ if smart and smart.online then
+ xr_effects.clear_smart_terrain(nil,nil,{"agr_smart_terrain_7_5","true"})
+ local smrt = SIMBOARD.smarts[smart.id]
+ if smrt and (db.actor:position():distance_to(smart.position) < dist) then
+
+ local smart = SIMBOARD.smarts_by_names["agr_smart_terrain_7_5"]
+ local squad = SIMBOARD:create_squad(smart,"pack_snorks_2")
+ tsk.stage = 1
+ GI("task_kill_pack_snorks_1_init")
+ return
+ end
+ end
+ end
+ end
+ end
+ if (tsk.stage == 1) then
+ if HI("pack_snorks_2_dead") then
+ local dist = 50
+ local smart = SIMBOARD.smarts_by_names["gar_smart_terrain_3_5"]
+ if smart and smart.online then
+ local smrt = SIMBOARD.smarts[smart.id]
+ if smrt and (db.actor:position():distance_to(smart.position) < dist) then
+ GI("butcher_ilya_back_home")
+ end
+ end
+ end
+ end
+end
+
+---- Cordon
+
+
+--- Railway Assault ---
+
+function task_status_functor.give_sidorovich_railway_assault_status_f(tsk,task_id)
+ if (tsk.stage == 0) then
+ if HI("assault_csky_leader_esc_5_7_start_dialog_done") then
+ xr_effects.clear_smart_terrain(nil,nil,{"esc_smart_terrain_4_9","true"})
+ xr_effects.clear_smart_terrain(nil,nil,{"esc_smart_terrain_5_9","true"})
+ if (NI("railway_assault_stalker_init")) then
+
+ if not (get_story_se_object("stalker_assault_esc_5_9")) then
+
+ local smart = SIMBOARD.smarts_by_names["esc_smart_terrain_4_9"]
+ local squad = SIMBOARD:create_squad(smart,"stalker_assault_esc_5_9")
+ local squad_2 = SIMBOARD:create_squad(smart,"stalker_assault_esc_5_9_leader")
+ GI("railway_assault_stalker_init")
+ tsk.stage = 1
+ return
+ end
+ end
+ end
+ end
+ if (tsk.stage == 1) then
+
+ local dist = 75
+ local smart = SIMBOARD.smarts_by_names["esc_smart_terrain_6_8"]
+ if smart and smart.online then
+ local smrt = SIMBOARD.smarts[smart.id]
+ if smrt and (db.actor:position():distance_to(smart.position) < dist) then
+ if (NI("railway_assault_bandit_ref_init")) then
+ if not (get_story_se_object("bandit_reinforcment_esc_6_8")) then
+
+ local smart_2 = SIMBOARD.smarts_by_names["esc_smart_terrain_7_11"]
+ local squad = SIMBOARD:create_squad(smart_2,"bandit_reinforcment_esc_6_8")
+ GI("railway_assault_bandit_ref_init")
+ tsk.stage = 2
+ return
+ end
+ end
+ end
+ end
+ end
+ if (tsk.stage == 2) then
+ if HI("bandit_guards_esc_6_8_dead") and HI("bandit_reinforcment_esc_6_8_dead") then
+ GI("esc_railbridge_taken")
+ end
+ end
+end
+
+
+function task_status_functor.give_sidorovich_railway_assault_2_status_f(tsk,task_id)
+ if (tsk.stage == 0) then
+ local dist = 150
+ local smart = SIMBOARD.smarts_by_names["esc_smart_terrain_7_11"]
+ if smart and smart.online then
+ local smrt = SIMBOARD.smarts[smart.id]
+ if smrt and (db.actor:position():distance_to(smart.position) < dist) then
+ xr_effects.clear_smart_terrain(nil,nil,{"esc_smart_terrain_7_11","true"})
+ if NI("bandit_reinforcment_esc_7_11") then
+ local smart = SIMBOARD.smarts_by_names["esc_smart_terrain_7_11"]
+ local squad = SIMBOARD:create_squad(smart,"bandit_reinforcment_esc_7_11")
+ GI("bandit_reinforcment_esc_7_11")
+ tsk.stage = 1
+ return
+ end
+ end
+ end
+ end
+ if (tsk.stage == 1) then
+ local dist = 50
+ local smart = SIMBOARD.smarts_by_names["esc_smart_terrain_7_11"]
+ if smart and smart.online then
+ local smrt = SIMBOARD.smarts[smart.id]
+ if smrt and (db.actor:position():distance_to(smart.position) < dist) then
+ xr_effects.clear_smart_terrain(nil,nil,{"esc_smart_terrain_4_9","true"})
+ xr_effects.clear_smart_terrain(nil,nil,{"esc_smart_terrain_5_9","true"})
+ tsk.stage = 2
+ return
+ end
+ end
+ end
+ if (tsk.stage == 2) then
+ if NI("railway_assault_stalker_init") then
+ local smart = SIMBOARD.smarts_by_names["esc_smart_terrain_4_9"]
+ local squad = SIMBOARD:create_squad(smart,"stalker_assault_esc_5_9")
+ local squad_2 = SIMBOARD:create_squad(smart,"stalker_assault_esc_5_9_leader")
+ GI("railway_assault_stalker_init")
+ GI("esc_railway_assault_go")
+ dialogs_brotherhood.send_railway_assault_message_1()
+ tsk.stage = 3
+ return
+ end
+ end
+ if (tsk.stage == 3) then
+ if HI("bandit_guards_esc_6_8_dead") and HI("bandit_reinforcment_esc_7_11_dead") then
+ GI("esc_railbridge_taken")
+ end
+ end
+end
+
+--- Shlitzer
+function bh_meet_shlitzer()
+
+
+ if NI("bh_shlitzer_init_done") then
+
+
+ local pos_1 = vector():set( -236.48327636719,-19.751678466797,-131.93586730957 ) --- meet shlitzer
+ local pos_2 = vector():set( -240.43469238281,-20.030139923096,-157.60787963867 ) --- go to house
+ local pos_6 = vector():set( -124.4213104248,-30.051345825195,-373.82867431641 ) --- guard house/Badger spawn
+ local dist_1 = 10
+ local dist_2 = 1
+ local npc = get_story_se_object("bh_shlitzer_squad")
+
+
+
+ if HI("esc_railway_assault_done") then
+
+
+
+ if NI("bh_shlitzer_spawn_done") then
+ local se_squad = spawn_squad("bh_shlitzer_squad", pos_1, 21333, 508)
+
+ GI("bh_shlitzer_spawn_done")
+ end
+
+ if (db.actor:position():distance_to(pos_1) < dist_1) then
+
+ if NI("bh_shlitzer_greeting") then
+ actor_menu.set_msg(1, game.translate_string("bh_shlitzer_greeting"), 10)
+ GI("bh_shlitzer_greeting")
+ end
+ end
+ if npc and (npc.position:distance_to(pos_2) < dist_2) then
+
+ GI("bh_shlitzer_init_done")
+
+ end
+ end
+ end
+end
+
+function task_status_functor.give_shlitzer_smuggling_1_status_f(tsk,task_id)
+
+
+ --- item states
+ --- state 0 = using
+ --- state 1 = putting out
+ --- state 2 = putting in
+ --- state 3 = not using
+
+ local hrs = level.get_time_hours()
+
+
+ local pos_3 = vector():set( -150.56283569336,-30.771974563599,-277.30380249023 ) --- jeep wreackage
+ local pos_4 = vector():set( -168.28816223145,-25.436302185059,-352.47952270508 ) --- guard tower
+ local pos_5 = vector():set( -241.95616149902,-30.707180023193,-353.70162963867 ) --- fence
+ local pos_6 = vector():set( -124.4213104248,-30.051345825195,-373.82867431641 ) --- guard house
+
+ local dist_1 = 6
+ local dist_2 = 2
+ local npc = get_story_se_object("bh_badger_squad")
+ local commander = alife_object(npc:commander_id())
+ if (hrs >= 23) or (hrs < 5) then
+
+ GI("bh_badger_guard_dutz_on")
+
+ else
+
+ DI("bh_badger_guard_dutz_on")
+
+ end
+
+
+
+ if (tsk.stage == 0) then
+
+ if (hrs >= 0) and (hrs < 4) then
+
+ if (db.actor:position():distance_to(pos_3) < dist_1) then
+
+ if (db.actor:item_in_slot(9) ~= nil) and (db.actor:item_in_slot(9):section() == "device_flashlight") then
+
+ local torch = db.actor:item_in_slot(9)
+
+ if torch:get_state() == 3 then
+
+ GI("bh_shlitzer_smuggling_start")
+
+ end
+
+ if HI("bh_shlitzer_smuggling_start") and NI("bh_shlitzer_smuggling_1") and torch:get_state() == 0 then
+
+ news_manager.send_tip(db.actor, game.translate_string("st_bh_shlitzer_smuggling_1"), nil, "communication", 6000)
+
+ CreateTimeEvent("bh_shlitzer_smuggling_init","bh_shlitzer_smuggling_init", 7,bh_shlitzer_smuggling_init_timer)
+ GI("bh_shlitzer_smuggling_1")
+ end
+ if HI("bh_shlitzer_smuggling_1") and NI("bh_shlitzer_smuggling_2") then
+ if torch:get_state() == 3 or torch:get_state() == 2 then
+
+ GI("bh_shlitzer_smuggling_2")
+ end
+ end
+ if HI("bh_shlitzer_smuggling_2") and NI("bh_shlitzer_smuggling_3") and torch:get_state() == 0 then
+ news_manager.send_tip(db.actor, game.translate_string("st_bh_shlitzer_smuggling_2"), nil, "communication", 6000)
+ GI("bh_shlitzer_smuggling_3")
+ end
+ if HI("bh_shlitzer_smuggling_3") and NI("bh_shlitzer_smuggling_4") then
+ if torch:get_state() == 3 or torch:get_state() == 2 then
+
+ GI("bh_shlitzer_smuggling_4")
+ end
+ end
+ if HI("bh_shlitzer_smuggling_4") and NI("bh_shlitzer_smuggling_done") and torch:get_state() == 0 then
+
+ news_manager.send_tip(db.actor, game.translate_string("st_bh_shlitzer_smuggling_3"), nil, "communication", 6000)
+ GI("bh_shlitzer_smuggling_done")
+ tsk.stage = 1
+ return
+ end
+
+ end
+ end
+ end
+ end
+ if (tsk.stage == 1) then
+
+ if (db.actor:position():distance_to(pos_5) < dist_2) and npc and (npc.position:distance_to(pos_5) < dist_2) then
+ if NI("bh_badger_greeting_1") then
+ actor_menu.set_msg(1, game.translate_string("st_bh_badger_start_0"), 10)
+ CreateTimeEvent("bh_badger_greeting_2_init","bh_badger_greeting_2_init", 4,bh_badger_greeting_2_init_timer)
+ CreateTimeEvent("bh_badger_greeting_3_init","bh_badger_greeting_3_init", 8,bh_badger_greeting_3_init_timer)
+ GI("bh_badger_greeting_1")
+ end
+ end
+
+ end
+end
+
+function bh_shlitzer_smuggling_init_timer()
+ if NI("bh_shlitzer_smuggling_done") then
+ DI("bh_shlitzer_smuggling_start")
+ DI("bh_shlitzer_smuggling_1")
+ DI("bh_shlitzer_smuggling_2")
+ DI("bh_shlitzer_smuggling_3")
+ DI("bh_shlitzer_smuggling_4")
+ news_manager.send_tip(db.actor, game.translate_string("st_bh_shlitzer_smuggling_4"), nil, "communication", 6000)
+ return true
+ end
+
+ return true
+end
+
+function bh_badger_greeting_2_init_timer()
+ actor_menu.set_msg(1, game.translate_string("st_bh_badger_start_1"), 10)
+ local se_item = alife_create_item("quest_package_shlitzer", db.actor)
+ return true
+end
+function bh_badger_greeting_3_init_timer()
+ actor_menu.set_msg(1, game.translate_string("st_bh_badger_start_2"), 10)
+ GI("bh_badger_deal_done")
+ return true
+end
+
+function task_status_functor.give_shlitzer_smuggling_2_status_f(tsk,task_id)
+
+ local smart_1 = SIMBOARD.smarts_by_names["esc_smart_terrain_6_6"]
+ local smrt_1 = SIMBOARD.smarts[smart_1.id]
+ local dist_1 = 70
+ local dist_2 = 2
+ local npc = get_story_se_object("bh_ironchain_squad")
+
+ if (tsk.stage == 0) then
+ if smrt_1 and (db.actor:position():distance_to(smart_1.position) < dist_1) then
+ if NI("bh_ironchain_init") then
+
+ xr_effects.clear_smart_terrain(nil,nil,{"esc_smart_terrain_6_6","true"})
+
+
+ local squad = SIMBOARD:create_squad(smart_1,"bh_ironchain_squad")
+ local squad_2 = SIMBOARD:create_squad(smart_1,"bh_ironchain_2_squad")
+
+ GI("bh_ironchain_init")
+ tsk.stage = 1
+ end
+ end
+ end
+ if (tsk.stage == 1) then
+ if HI("bh_ironchain_deal_start") and NI("bh_ironchain_deal_done") then
+ if (npc.position:distance_to(db.actor:position()) > dist_2) then
+ if NI("bh_ironchain_deal_gone_wrong") then
+ GI("bh_ironchain_deal_gone_wrong")
+ actor_menu.set_msg(1, game.translate_string("st_bh_ironchain_deal_gone_wrong"), 10)
+ dialogs_brotherhood.change_faction_bh_ironchain()
+ end
+ end
+ end
+ if HI("bh_ironchain_deal_done") then
+ tsk.stage = 2
+ end
+ end
+ if (tsk.stage == 2) then
+ if NI("bh_ironchain_2_squad_dead") and NI("bh_ironchain_squad_dead") then
+ if smrt_1 and (db.actor:position():distance_to(smart_1.position) > dist_1) then
+ xr_effects.clear_smart_terrain(nil,nil,{"esc_smart_terrain_6_6","true"})
+ end
+
+ end
+ end
+end
+
+function task_status_functor.give_shlitzer_smuggling_3_status_f(tsk,task_id)
+
+ local hrs = level.get_time_hours()
+
+ local pos_2 = vector():set( -240.43469238281,-20.030139923096,-157.60787963867 ) --- go to house
+ local pos_3 = vector():set( -150.56283569336,-30.771974563599,-277.30380249023 ) --- jeep wreackage
+ local pos_4 = vector():set( -168.28816223145,-25.436302185059,-352.47952270508 ) --- guard tower
+ local pos_5 = vector():set( -241.95616149902,-30.707180023193,-353.70162963867 ) --- fence
+ local pos_6 = vector():set( -124.4213104248,-30.051345825195,-373.82867431641 ) --- guard house
+
+ local dist_1 = 6
+ local dist_2 = 2
+ local dist_3 = 30
+
+
+ if (hrs >= 23) or (hrs < 5) then
+
+ GI("bh_badger_guard_dutz_on")
+
+ else
+
+ DI("bh_badger_guard_dutz_on")
+
+ end
+
+ if (tsk.stage == 0) then
+
+ if (hrs >= 0) and (hrs < 4) then
+
+ if (db.actor:position():distance_to(pos_3) < dist_1) then
+
+ if (db.actor:item_in_slot(9) ~= nil) and (db.actor:item_in_slot(9):section() == "device_flashlight") then
+
+ local torch = db.actor:item_in_slot(9)
+
+ if torch:get_state() == 3 then
+
+ GI("bh_shlitzer_smuggling_start")
+
+ end
+
+ if HI("bh_shlitzer_smuggling_start") and NI("bh_shlitzer_smuggling_1") and torch:get_state() == 0 then
+
+ news_manager.send_tip(db.actor, game.translate_string("st_bh_shlitzer_smuggling_1"), nil, "communication", 6000)
+
+ CreateTimeEvent("bh_shlitzer_smuggling_init","bh_shlitzer_smuggling_init", 7,bh_shlitzer_smuggling_init_timer)
+ GI("bh_shlitzer_smuggling_1")
+ end
+ if HI("bh_shlitzer_smuggling_1") and NI("bh_shlitzer_smuggling_2") then
+ if torch:get_state() == 3 or torch:get_state() == 2 then
+
+ GI("bh_shlitzer_smuggling_2")
+ end
+ end
+ if HI("bh_shlitzer_smuggling_2") and NI("bh_shlitzer_smuggling_3") and torch:get_state() == 0 then
+ news_manager.send_tip(db.actor, game.translate_string("st_bh_shlitzer_smuggling_2"), nil, "communication", 6000)
+ GI("bh_shlitzer_smuggling_3")
+ end
+ if HI("bh_shlitzer_smuggling_3") and NI("bh_shlitzer_smuggling_4") then
+ if torch:get_state() == 3 or torch:get_state() == 2 then
+
+ GI("bh_shlitzer_smuggling_4")
+ end
+ end
+ if HI("bh_shlitzer_smuggling_4") and NI("bh_shlitzer_smuggling_done") and torch:get_state() == 0 then
+
+ news_manager.send_tip(db.actor, game.translate_string("st_bh_shlitzer_smuggling_3"), nil, "communication", 6000)
+ GI("bh_shlitzer_smuggling_done")
+ tsk.stage = 1
+ return
+ end
+
+ end
+ end
+ end
+ end
+ if (tsk.stage == 1) then
+ if HI("bh_badger_squad_dead") then
+ if (db.actor:character_community() == "actor_stalker") then
+
+ tsk.stage = 2
+
+ elseif (db.actor:character_community() == "actor_bandit") or (db.actor:character_community() == "actor_renegade") then
+ tsk.stage = 2
+ elseif (db.actor:character_community() == "actor_ecolog") or (db.actor:character_community() == "actor_dolg") or (db.actor:character_community() == "actor_army") then
+ tsk.stage = 2
+ elseif (db.actor:character_community() == "actor_monolith") or (db.actor:character_community() == "actor_freedom") or (db.actor:character_community() == "actor_killer") then
+ tsk.stage = 2
+ else
+ tsk.stage = 2
+ end
+ end
+ end
+ if (tsk.stage == 2) then
+ if HI("bh_badger_squad_dead") and (db.actor:position():distance_to(pos_5) > dist_3) then
+
+ if NI("castor_pollox_relocation_init") then
+ dialogs_brotherhood.relocation_pollox_and_castor()
+ end
+
+ if HI("castor_pollox_relocation_init") and NI("bh_army_lockdown_init") then
+ xr_effects.clear_smart_terrain(nil,nil,{"esc_smart_terrain_2_14","true"})
+ xr_effects.clear_smart_terrain(nil,nil,{"esc_smart_terrain_3_7","true"})
+ xr_effects.clear_smart_terrain(nil,nil,{"esc_smart_terrain_5_2","true"})
+ xr_effects.clear_smart_terrain(nil,nil,{"esc_smart_terrain_9_10","true"})
+ xr_effects.clear_smart_terrain(nil,nil,{"esc_smart_terrain_6_8","true"})
+ GI("bh_army_lockdown_init")
+ end
+ if HI("bh_army_lockdown_init") and NI("bh_army_lockdown_init_2") then
+
+ local squad = SIMBOARD:create_squad("esc_smart_terrain_9_10","bh_lockdown_9_10_squad")
+ local squad_2 = SIMBOARD:create_squad("esc_smart_terrain_5_2","bh_lockdown_5_2_squad")
+ local squad_3 = SIMBOARD:create_squad("esc_smart_terrain_3_7","bh_lockdown_3_7_squad")
+ local squad_4 = SIMBOARD:create_squad("esc_smart_terrain_3_7","bh_lockdown_3_7_squad_2")
+ local squad_5 = SIMBOARD:create_squad("esc_smart_terrain_2_14","bh_lockdown_2_14_squad")
+ local squad_6 = SIMBOARD:create_squad("esc_smart_terrain_6_8","bh_lockdown_6_8_squad")
+ end
+ end
+ end
+
+
+ if (tsk.stage == 3) then
+
+
+ end
+
+ news_manager.send_tip(db.actor, string.format(game.translate_string("st_bh_shlitzer_sidorovich_0"), alife():actor():character_name()), 0, "stalker", 11000, 1)
+ ---send_tip(actor, news_id, timeout, sender, showtime, sender_id)
+end
+--- Dolg Hunter ---
+
+function task_status_functor.give_dolg_bloodsucker_village_2_status_f(tsk,task_id)
+ local npc_1 = get_story_object("dolg_vadim_bloodsucker")
+ local npc_2 = get_story_object("dolg_sasha_bloodsucker")
+ local npc_3 = get_story_object("dolg_sergey_bloodsucker")
+
+ local dist_2 = 30
+
+ local smart_1 = SIMBOARD.smarts_by_names["mil_smart_terrain_4_2"]
+ local smart_2 = SIMBOARD.smarts_by_names["mil_smart_terrain_4_3"]
+ local smart_3 = SIMBOARD.smarts_by_names["mil_smart_terrain_2_10"]
+
+ local smrt_1 = SIMBOARD.smarts[smart_1.id]
+ local smrt_2 = SIMBOARD.smarts[smart_2.id]
+ local smrt_3 = SIMBOARD.smarts[smart_3.id]
+
+ local hrs = level.get_time_hours()
+ if (tsk.stage == 0) then
+ if smart_1 and smart_1.online and smart_2 and smart_2.online and smart_3 and smart_3.online then
+ if smrt_1 and (db.actor:position():distance_to(smart_1.position) < dist_2) then
+
+ if NI("bloodsucker_village_1_spawned") then
+
+ local squad = SIMBOARD:create_squad(smart_1,"pack_bloodsuckers_dolg_1")
+ GI("bloodsucker_village_1_spawned")
+
+ return
+ end
+
+ elseif smrt_2 and (db.actor:position():distance_to(smart_2.position) < dist_2) then
+
+ if NI("bloodsucker_village_2_spawned") then
+
+ local squad = SIMBOARD:create_squad(smart_2,"pack_bloodsuckers_dolg_2")
+ GI("bloodsucker_village_2_spawned")
+
+ return
+ end
+ elseif smrt_3 and (db.actor:position():distance_to(smart_3.position) < dist_2) then
+
+ if NI("bloodsucker_village_3_spawned") then
+
+ local squad = SIMBOARD:create_squad(smart_3,"pack_bloodsuckers_dolg_3")
+ GI("bloodsucker_village_3_spawned")
+
+ return
+ end
+
+ end
+ end
+ if npc_1 and npc_1:object("killer_patch") and npc_2 and npc_2:object("killer_patch") and npc_3 and npc_3:object("killer_patch") then
+
+ if (hrs >= 5) and (hrs < 21) then
+ give_info("bloodsucker_raid_has_killer_patch_fail")
+ news_manager.send_tip(db.actor, game.translate_string("st_freedom_voronin_bloodsucker_news_0"), 0, "freedom", 11000, 1)
+
+ else
+ give_info("bloodsucker_raid_has_killer_patch_done")
+
+ return
+ end
+
+ end
+ end
+end
+
+function task_status_functor.give_dolg_bloodsucker_village_1_status_f(tsk,task_id)
+
+ local dist = 500
+ local dist_2 = 30
+
+ local smart_1 = SIMBOARD.smarts_by_names["mil_smart_terrain_4_2"]
+ local smart_2 = SIMBOARD.smarts_by_names["mil_smart_terrain_4_3"]
+ local smart_3 = SIMBOARD.smarts_by_names["mil_smart_terrain_2_10"]
+
+ local smrt_1 = SIMBOARD.smarts[smart_1.id]
+ local smrt_2 = SIMBOARD.smarts[smart_2.id]
+ local smrt_3 = SIMBOARD.smarts[smart_3.id]
+
+ local hrs = level.get_time_hours()
+
+ if (tsk.stage == 0) then
+ if smart_1 and smart_1.online and smart_2 and smart_2.online and smart_3 and smart_3.online then
+ if smrt_1 and (db.actor:position():distance_to(smart_1.position) < dist) then
+
+ xr_effects.clear_smart_terrain(nil,nil,{"mil_smart_terrain_4_2","true"})
+ xr_effects.clear_smart_terrain(nil,nil,{"mil_smart_terrain_4_3","true"})
+ xr_effects.clear_smart_terrain(nil,nil,{"mil_smart_terrain_2_10","true"})
+ tsk.stage = 1
+ return
+ end
+ end
+ end
+ if (tsk.stage == 1) then
+ if smrt_1 and (db.actor:position():distance_to(smart_1.position) < dist_2) then
+
+ if NI("bloodsucker_village_1_spawned") then
+
+ local squad = SIMBOARD:create_squad(smart_1,"pack_bloodsuckers_dolg_1")
+ GI("bloodsucker_village_1_spawned")
+
+ return
+ end
+
+ elseif smrt_2 and (db.actor:position():distance_to(smart_2.position) < dist_2) then
+
+ if NI("bloodsucker_village_2_spawned") then
+
+ local squad = SIMBOARD:create_squad(smart_2,"pack_bloodsuckers_dolg_2")
+ GI("bloodsucker_village_2_spawned")
+
+ return
+ end
+ elseif smrt_3 and (db.actor:position():distance_to(smart_3.position) < dist_2) then
+
+ if NI("bloodsucker_village_3_spawned") then
+
+ local squad = SIMBOARD:create_squad(smart_3,"pack_bloodsuckers_dolg_3")
+ GI("bloodsucker_village_3_spawned")
+
+ return
+ end
+
+ end
+ if HI("bloodsucker_village_1_spawned") and HI("bloodsucker_village_2_spawned") and HI("bloodsucker_village_3_spawned") then
+
+ tsk.stage = 2
+ return
+ end
+ end
+ if (tsk.stage == 2) then
+ if HI("pack_bloodsuckers_dolg_1_dead") and HI("pack_bloodsuckers_dolg_2_dead") and HI("pack_bloodsuckers_dolg_3_dead") then
+ if (hrs >= 21) or (hrs < 5) then
+ give_info("pack_bloodsuckers_dolg_1_all_dead")
+ return
+ else
+ give_info("give_dolg_bloodsucker_village_1_out_of_time")
+ return
+ end
+ end
+ end
+end
+
+function task_status_functor.give_dolg_bloodsucker_village_3_status_f(tsk,task_id)
+ if (tsk.stage == 0) then
+
+ local dist = 50
+ local smart = SIMBOARD.smarts_by_names["mil_smart_terrain_7_4"]
+ if smart and smart.online then
+ local smrt = SIMBOARD.smarts[smart.id]
+ if smrt and (db.actor:position():distance_to(smart.position) < dist) then
+ if NI("dolg_artyom_bloodsucker_0_done") then
+ if (NI("dolg_ilya_bloodsucker_init")) then
+ if not (get_story_se_object("dolg_ilya_bloodsucker_squad")) then
+
+ local smart_2 = SIMBOARD.smarts_by_names["mil_smart_terrain_8_3"]
+ local squad = SIMBOARD:create_squad(smart_2,"dolg_ilya_bloodsucker_og_squad")
+ local squad_2 = SIMBOARD:create_squad(smart_2,"dolg_ilya_bloodsucker_squad")
+ GI("dolg_ilya_bloodsucker_init")
+ return
+ end
+ end
+ else
+ if (NI("dolg_ilya_bloodsucker_init")) then
+ if not (get_story_se_object("dolg_ilya_bloodsucker_2_squad")) then
+
+ local smart_2 = SIMBOARD.smarts_by_names["mil_smart_terrain_8_3"]
+ local squad = SIMBOARD:create_squad(smart_2,"dolg_ilya_bloodsucker_og_squad")
+ local squad_2 = SIMBOARD:create_squad(smart_2,"dolg_ilya_bloodsucker_2_squad")
+ GI("dolg_ilya_bloodsucker_init")
+ return
+ end
+ end
+ end
+ end
+ end
+ end
+end
+
+----- Bellerophon Quests -----
+
+function task_status_functor.give_task_bellerophon_chimera_1_status_f(tsk,task_id)
+ local dist = 10
+ local dist_2 = 25
+
+ local pos_1 = vector():set(33.515865325928,0.076751172542572,-39.296714782715 )
+ local pos_2 = vector():set(25.73078918457,0.046717882156372,19.807271957397 )
+ local pos_3 = vector():set(-14.096794128418,0.13558429479599,5.6727747917175 )
+ local pos_4 = vector():set(-10.063064575195,0.11458736658096,-24.969347000122 )
+ local pos_5 = vector():set(13.057991981506,0.042427986860275,-55.789348602295 )
+
+ local smart_1 = SIMBOARD.smarts_by_names["yan_smart_terrain_6_4"]
+ local smrt_1 = SIMBOARD.smarts[smart_1.id]
+
+ local hrs = level.get_time_hours()
+
+ if (tsk.stage == 0) then
+ if level.name() == "l08_yantar" then
+
+ if NI("relocation_bellerophon_1") then
+ dialogs_brotherhood.relocation_bellerophon_1()
+ end
+ if HI("bellerophon_7_done") then
+ tsk.stage = 1
+ end
+ end
+ end
+
+
+ if (tsk.stage == 1) then
+
+ if (hrs >= 21) or (hrs < 5) then
+ if (db.actor:position():distance_to(pos_1) < dist) then
+ if NI("bellerophon_chimera_spawn_1") then
+ local se_squad = spawn_squad("bellerophon_chimera_1", pos_4, 62058, 2217)
+
+ GI("bellerophon_chimera_spawn_1")
+ tsk.stage = 2
+ end
+ end
+ if (db.actor:position():distance_to(pos_2) < dist) then
+ if NI("bellerophon_chimera_spawn_1") then
+ local se_squad = spawn_squad("bellerophon_chimera_1", pos_3, 60051, 2193)
+
+ GI("bellerophon_chimera_spawn_1")
+ tsk.stage = 2
+ end
+ end
+ if (db.actor:position():distance_to(pos_5) < dist) then
+ if NI("bellerophon_chimera_spawn_1") then
+ local se_squad = spawn_squad("bellerophon_chimera_1", pos_4, 62058, 2217)
+
+ GI("bellerophon_chimera_spawn_1")
+ tsk.stage = 2
+ end
+ end
+ end
+ end
+ if (tsk.stage == 2) then
+ if HI("bellerophon_chimera_1_dead") then
+ if smrt_1 and (db.actor:position():distance_to(smart_1.position) < dist_2) then
+
+ GI("bellerophon_back_buncker_1")
+ end
+ end
+ end
+end
+
+---- Trapper Quests ----
+
+function task_status_functor.give_task_trapper_chimera_1_status_f(tsk,task_id)
+
+ local se_obj = get_story_se_object("quest_chimera_bait_brotherhood")
+ local obj = se_obj and level.object_by_id(se_obj.id)
+ local dist_1 = 2
+ local dist_2 = 5
+ local dist_3 = 100
+ local smart_1 = SIMBOARD.smarts_by_names["jup_sim_21"]
+ local smrt_1 = SIMBOARD.smarts[smart_1.id]
+ local smart_2 = SIMBOARD.smarts_by_names["jup_b46"]
+ local smrt_2 = SIMBOARD.smarts[smart_2.id]
+ local pos = vector():set( -189.52851867676,3.3515679836273,394.25390625 )
+ local hrs = level.get_time_hours()
+
+ if (tsk.stage == 0) then
+ if (hrs >= 21) or (hrs < 5) then
+ if smrt_1 and (db.actor:position():distance_to(smart_2.position) < dist_3) then
+ xr_effects.clear_smart_terrain(nil,nil,{"jup_b46","true"})
+ xr_effects.clear_smart_terrain(nil,nil,{"jup_sim_21","true"})
+ if (obj) then
+ if (obj:position():distance_to(pos) < dist_2) then
+ if NI("trapper_chimera_1_init") then
+ CreateTimeEvent("nr_trapper_blank_1","nr_trapper_blank_1", 10, nr_trapper_chimera_1_spawn)
+ tsk.stage = 1
+ GI("trapper_chimera_1_init")
+ end
+
+ end
+ end
+ end
+ end
+ if (db.actor:position():distance_to(pos) < dist_1) then
+ if (hrs >= 21) or (hrs < 5) then
+ actor_menu.set_msg(1, game.translate_string("nr_trapper_chimera_1_info"), 1)
+ else
+ actor_menu.set_msg(1, game.translate_string("nr_trapper_chimera_2_info"), 1)
+ end
+ end
+ end
+ if (tsk.stage == 1) then
+ return
+ end
+end
+
+
+function nr_trapper_chimera_1_spawn()
+ local smart_1 = SIMBOARD.smarts_by_names["jup_sim_21"]
+ local smrt_1 = SIMBOARD.smarts[smart_1.id]
+ if NI("trapper_chimera_1_init_timed") then
+ local squad = SIMBOARD:create_squad(smart_1,"trapper_chimera_1")
+ GI("trapper_chimera_1_init_timed")
+ return true
+ end
+
+end
+
+
+function task_status_functor.give_task_trapper_chimera_2_status_f(tsk,task_id)
+
+ local se_obj_1 = get_story_se_object("quest_chimera_bait_brotherhood")
+ local se_obj_2 = get_story_se_object("radio_micro_quest")
+
+ local npc = get_story_se_object("trapper_chimera_2")
+ local squad_1 = get_story_se_object("jup_b205_monster_04_squad")
+
+
+
+
+ local obj_1 = se_obj_1 and level.object_by_id(se_obj_1.id)
+ local obj_2 = se_obj_2 and level.object_by_id(se_obj_2.id)
+
+ local dist_1 = 2
+ local dist_2 = 5
+ local dist_3 = 50
+
+ local pos_1 = vector():set( -381.40188598633,2.6410093307495,2.5957698822021 )
+ local pos_2 = vector():set( -290.74948120117,7.8559045791626,-3.1653161048889 )
+
+ local smart_1 = SIMBOARD.smarts_by_names["jup_b205_smart_terrain_tushkano"]
+ local smrt_1 = SIMBOARD.smarts[smart_1.id]
+
+ local hrs = level.get_time_hours()
+
+
+
+ if (tsk.stage == 0) then
+
+ if (db.actor:position():distance_to(pos_2) < dist_1) then
+ if (hrs >= 21) or (hrs < 5) then
+ actor_menu.set_msg(1, game.translate_string("nr_trapper_chimera_1_info"), 1)
+ else
+ actor_menu.set_msg(1, game.translate_string("nr_trapper_chimera_2_info"), 1)
+ end
+ end
+
+ if (hrs >= 21) or (hrs < 5) then
+
+ if smrt_1 and (db.actor:position():distance_to(smart_1.position) < dist_3) then --- releases the burer
+
+ if (squad_1) then
+ alife_release(squad_1)
+ end
+
+ end
+ if (obj_1) then
+ if (obj_1:position():distance_to(pos_2) < dist_2) then
+
+ if NI("trapper_chimera_2_init") then
+
+
+ CreateTimeEvent("nr_trapper_blank_2","nr_trapper_blank_2", 10, nr_trapper_chimera_2_bait)
+ tsk.stage = 1
+ GI("trapper_chimera_2_init")
+
+ end
+
+ end
+ end
+
+ end
+ end
+
+ if (tsk.stage == 1) then
+
+ if (npc.position:distance_to(pos_2) < dist_2) then
+
+ if NI("trapper_chimera_3_init") then
+
+ alife_release_id(obj_1:id()) --- destroy the bait
+
+ CreateTimeEvent("nr_trapper_blank_3","nr_trapper_blank_3", 45, nr_trapper_chimera_3_bait)
+ tsk.stage = 2
+ GI("trapper_chimera_3_init")
+ end
+ end
+
+ if (db.actor:position():distance_to(pos_1) < dist_1) then
+
+ actor_menu.set_msg(1, game.translate_string("nr_trapper_chimera_1_info"), 1)
+
+ end
+ end
+ if (tsk.stage == 2) then
+
+ if (db.actor:position():distance_to(pos_1) < dist_1) then
+
+ actor_menu.set_msg(1, game.translate_string("nr_trapper_chimera_1_info"), 1)
+
+ end
+ if (obj_2) then
+ if (obj_2:position():distance_to(pos_1) < dist_2) then
+
+ GI("trapper_chimera_record_in_place")
+
+ if NI("trapper_chimera_2_dead") then
+ if (npc.position:distance_to(pos_1) < dist_2) then
+ GI("trapper_chimera_record_set")
+ tsk.stage = 3
+
+
+ end
+ end
+
+ end
+ end
+ end
+ if (tsk.stage == 3) then
+ if HI("trapper_chimera_2_recording_done") then
+ if (obj_2:position():distance_to(pos_1) < dist_2) and (npc.position:distance_to(pos_1) < dist_2) then
+ news_manager.send_tip(db.actor, game.translate_string("st_trapper_chimera_2_recording_done"), 0, "stalker", 11000, 1)
+ GI("trapper_chimera_2_recording_done_success")
+ tsk.stage = 4
+ else
+ news_manager.send_tip(db.actor, game.translate_string("st_trapper_chimera_recover_failed"), 0, "stalker", 11000, 1)
+ tsk.stage = 0
+ dialogs_brotherhood.reset_trapper_chimera_2()
+ alife_release_id(obj_2:id()) --- destroy the recorder
+ end
+ end
+ end
+ if (tsk.stage == 4) then
+
+
+ end
+ if HI("trapper_chimera_10_done") then
+ if npc then
+
+ local commander = alife_object(npc:commander_id())
+
+ if commander and commander:alive() then
+ news_manager.send_tip(db.actor, game.translate_string("st_trapper_chimera_2_chimera_back"), 0, "stalker", 11000, 1)
+ DI("trapper_chimera_10_done")
+ DI("trapper_chimera_2_dead")
+ GI("trapper_chimera_2_back")
+ dialogs_brotherhood.reset_trapper_chimera_2()
+
+ if NI("trapper_chimera_2_recording_done_success") then
+ tsk.stage = 0
+ end
+ end
+ end
+ end
+end
+
+function nr_trapper_chimera_2_bait()
+
+ if NI("trapper_chimera_2_init_timed") then
+
+ GI("trapper_chimera_2_bait_active")
+ GI("trapper_chimera_2_init_timed")
+ return true
+ end
+
+end
+function nr_trapper_chimera_3_bait()
+
+ if NI("trapper_chimera_3_init_timed") then
+
+ DI("trapper_chimera_2_bait_active")
+ GI("trapper_chimera_3_init_timed")
+ return true
+
+ end
+
+end
+
+
+
+
+
+function task_status_functor.give_task_trapper_missing_hunter_1_status_f(tsk,task_id)
+
+ local pos_1 = vector():set( 365.19027709961,-5.8573417663574,362.37469482422 ) --- Lesun corpse
+ local pos_2 = vector():set( 383.57675170898,-5.8499975204468,382.04071044922 ) --- Bloodsucker 1
+ local pos_3 = vector():set( 362.181640625,-4.8819522857666,386.53329467773 ) --- Bloodsucker 2
+
+ local dist_1 = 2
+
+ if (tsk.stage == 0) then
+
+ if NI("trapper_missing_hunter_1_init") then
+
+ local se_squad = spawn_squad("nr_trapper_missing_hunter_1_squad", pos_1, 1296707, 4756)
+ xr_effects.kill_squad(nil,nil,{"nr_trapper_missing_hunter_1_squad"})
+
+ GI("trapper_missing_hunter_1_init")
+
+ tsk.stage = 1
+ end
+ end
+
+ if (tsk.stage == 1) then
+
+ if level.name() == "jupiter" then
+ if (db.actor:position():distance_to(pos_1) < dist_1) then
+
+ if NI("trapper_missing_hunter_1_mutant_init") then
+ local se_squad_2 = spawn_squad("pack_trapper_bloodsucker_1", pos_2, 1322932, 4811)
+ local se_squad_3 = spawn_squad("pack_trapper_bloodsucker_2", pos_3, 1292260, 4756)
+
+ GI("trapper_missing_hunter_1_mutant_init")
+
+ end
+ end
+ end
+ if HI("pack_trapper_bloodsucker_1_dead") and HI("pack_trapper_bloodsucker_2_dead") then
+ GI("give_task_trapper_missing_hunter_1_all")
+
+ end
+
+ end
+
+end
+
+function task_status_functor.give_task_trapper_missing_hunter_2_status_f(tsk,task_id)
+
+ local pos_1 = vector():set( 423.30490112305,9.9538507461548,-86.548324584961 ) --- trigger
+ local pos_2 = vector():set( 414.94821166992,9.8523788452148,-120.08416748047 ) --- Fasan corpse
+ local pos_3 = vector():set( 423.58679199219,9.9551553726196,-72.242469787598 ) --- Burer 1
+ local pos_4 = vector():set( 416.53118896484,9.8503370285034,-110.60095214844 ) --- Pseudogiant
+ local pos_5 = vector():set( 391.01727294922,4.4709033966064,-114.56340026855 ) --- Burer 2
+ local smart_1 = SIMBOARD.smarts_by_names["jup_b208"]
+ local smrt_1 = SIMBOARD.smarts[smart_1.id]
+ local dist_1 = 2
+ local dist_2 = 30
+
+ if (tsk.stage == 0) then
+ if smrt_1 and (db.actor:position():distance_to(smart_1.position) < dist_2) then
+ xr_effects.clear_smart_terrain(nil,nil,{"jup_b208","true"})
+ tsk.stage = 1
+ end
+ end
+ if (tsk.stage == 1) then
+ if level.name() == "jupiter" then
+ if (db.actor:position():distance_to(pos_1) < dist_1) then
+ if NI("trapper_missing_hunter_2_init") then
+
+ local se_squad = spawn_squad("nr_trapper_missing_hunter_2_squad", pos_2, 1371645, 4823)
+ xr_effects.kill_squad(nil,nil,{"nr_trapper_missing_hunter_2_squad"})
+
+ GI("trapper_missing_hunter_2_init")
+
+ tsk.stage = 2
+ end
+ end
+ end
+ end
+
+ if (tsk.stage == 2) then
+ if NI("trapper_missing_hunter_2_mutant_init") then
+ local se_squad_3 = spawn_squad("pack_trapper_burer_1", pos_3, 1384994, 4825)
+ local se_squad_4 = spawn_squad("pack_trapper_gigant_1", pos_4, 1374021, 4823)
+ local se_squad_5 = spawn_squad("pack_trapper_burer_2", pos_5, 1333053, 4677)
+ GI("trapper_missing_hunter_2_mutant_init")
+
+
+ end
+ if HI("pack_trapper_burer_1_dead") and HI("pack_trapper_burer_2_dead") and HI("pack_trapper_gigant_1_dead") then
+ GI("give_task_trapper_missing_hunter_2_mutants_dead")
+ end
+ if (db.actor:position():distance_to(pos_2) < dist_1) then
+
+ GI("give_task_trapper_missing_hunter_2_found")
+
+ end
+
+ if HI("give_task_trapper_missing_hunter_2_mutants_dead") and HI("give_task_trapper_missing_hunter_2_found") then
+ GI("give_task_trapper_missing_hunter_2_all")
+ end
+
+ end
+
+end
+
+function task_status_functor.give_task_trapper_missing_hunter_3_status_f(tsk,task_id)
+
+ local pos_1 = vector():set( -317.50521850586,-3.5592434406281,181.98251342773 ) --- Andrey Corpse
+ local pos_2 = vector():set( -354.77172851563,-0.72435384988785,173.37098693848 ) --- Controller
+ local pos_3 = vector():set( -306.46594238281,-1.8311321735382,171.57833862305 ) --- Snorks
+
+
+ local dist_1 = 2
+
+ if (tsk.stage == 0) then
+ if level.name() == "jupiter" then
+
+ if NI("trapper_missing_hunter_3_init") then
+
+ local se_squad = spawn_squad("nr_trapper_missing_hunter_3_squad", pos_1, 177898, 4527)
+ xr_effects.kill_squad(nil,nil,{"nr_trapper_missing_hunter_3_squad"})
+
+ GI("trapper_missing_hunter_3_init")
+
+ tsk.stage = 1
+ end
+
+ end
+ end
+
+ if (tsk.stage == 1) then
+ if (db.actor:position():distance_to(pos_1) < dist_1) then
+ if NI("trapper_missing_hunter_3_mutant_init") then
+ local se_squad_3 = spawn_squad("pack_trapper_controller_1", pos_2, 116265, 4527)
+ local se_squad_4 = spawn_squad("pack_trapper_snorks_1", pos_3, 196742, 4742)
+
+ GI("trapper_missing_hunter_3_mutant_init")
+
+
+ end
+ end
+ if HI("pack_trapper_controller_1_dead") and HI("pack_trapper_snorks_1_dead") then
+ GI("give_task_trapper_missing_hunter_3_mutants_dead")
+ end
+
+
+ end
+
+end
+---- Legendary Hunt -----
+
+--- Calydonian Boar ---
+
+
+function task_status_functor.give_hunt_legendary_2_status_f(tsk,task_id)
+
+ local dist = 60
+ local dist_2 = 50
+ local dist_3 = 75
+ local dist_4 = 300
+ local dist_5 = 15
+ local smart_1 = SIMBOARD.smarts_by_names["mar_smart_terrain_7_7"]
+ local smart_2 = SIMBOARD.smarts_by_names["mar_smart_terrain_6_7"]
+ local smart_3 = SIMBOARD.smarts_by_names["mar_smart_terrain_4_7"]
+
+ local smrt_1 = SIMBOARD.smarts[smart_1.id]
+ local smrt_2 = SIMBOARD.smarts[smart_2.id]
+ local smrt_3 = SIMBOARD.smarts[smart_3.id]
+
+
+
+ if (tsk.stage == 0) then
+ printe("Control Boar 1")
+
+
+ if smart_1 and smart_1.online and smart_2 and smart_2.online and smart_3 and smart_3.online then
+ printe("Control Boar 2")
+
+
+ if smrt_1 and (db.actor:position():distance_to(smart_1.position) < dist) then
+ if NI("legendary_pack_boars_1_spawned") then
+
+ local squad = SIMBOARD:create_squad(smart_1,"legendary_pack_boars_1")
+ GI("legendary_pack_boars_1_spawned")
+
+ tsk.stage = 1
+ return
+ end
+
+ elseif smrt_2 and (db.actor:position():distance_to(smart_2.position) < dist) then
+
+ if NI("legendary_pack_boars_2_spawned") then
+
+ local squad = SIMBOARD:create_squad(smart_2,"legendary_pack_boars_2")
+ GI("legendary_pack_boars_2_spawned")
+
+ tsk.stage = 2
+ return
+ end
+
+ elseif smrt_3 and (db.actor:position():distance_to(smart_3.position) < dist) then
+
+ if NI("legendary_pack_boars_3_spawned") then
+
+ local squad = SIMBOARD:create_squad(smart_3,"legendary_pack_boars_3")
+ GI("legendary_pack_boars_3_spawned")
+
+ tsk.stage = 3
+ return
+ end
+
+
+ end
+
+ end
+
+ end
+
+ if (tsk.stage == 1) then --- smart_1 already spawned
+
+ if HI("legendary_pack_boars_1_dead") then
+
+ if smrt_2 and (db.actor:position():distance_to(smart_2.position) < dist_2) then
+
+ if NI("legendary_pack_boars_2_spawned") then
+
+ local squad = SIMBOARD:create_squad(smart_2,"legendary_pack_boars_2")
+ GI("legendary_pack_boars_2_spawned")
+
+ tsk.stage = 4
+ return
+ end
+
+ elseif smrt_3 and (db.actor:position():distance_to(smart_3.position) < dist_2) then
+
+ if NI("legendary_pack_boars_3_spawned") then
+
+ local squad = SIMBOARD:create_squad(smart_3,"legendary_pack_boars_3")
+ GI("legendary_pack_boars_3_spawned")
+
+ tsk.stage = 5
+ return
+ end
+
+ end
+
+ elseif (db.actor:position():distance_to(smart_1.position) > dist_4) then
+ news_manager.send_tip(db.actor, game.translate_string("st_calydonian_boar_fleed_1"), 0, "communication", 11000, 1)
+ GI("player_fled_from_calydonian_boar")
+ return
+
+ end
+ end
+
+ if (tsk.stage == 2) then --- smart_2 already spawned
+
+ if HI("legendary_pack_boars_2_dead") then
+
+ if smrt_1 and (db.actor:position():distance_to(smart_1.position) < dist_2) then
+
+ if NI("legendary_pack_boars_2_spawned") then
+
+ local squad = SIMBOARD:create_squad(smart_1,"legendary_pack_boars_1")
+ GI("legendary_pack_boars_1_spawned")
+
+ tsk.stage = 4
+ return
+ end
+
+ elseif smrt_3 and (db.actor:position():distance_to(smart_3.position) < dist_2) then
+
+ if NI("legendary_pack_boars_3_spawned") then
+
+ local squad = SIMBOARD:create_squad(smart_3,"legendary_pack_boars_3")
+ GI("legendary_pack_boars_3_spawned")
+
+ tsk.stage = 6
+ return
+ end
+
+ end
+
+ elseif (db.actor:position():distance_to(smart_1.position) > dist_4) then
+ news_manager.send_tip(db.actor, game.translate_string("st_calydonian_boar_fleed_1"), 0, "communication", 11000, 1)
+ GI("player_fled_from_calydonian_boar")
+ return
+
+ end
+
+ end
+
+ if (tsk.stage == 3) then --- smart_3 already spawned
+
+ if HI("legendary_pack_boars_3_dead") then
+
+ if smrt_2 and (db.actor:position():distance_to(smart_2.position) < dist_2) then
+
+ if NI("legendary_pack_boars_2_spawned") then
+
+ local squad = SIMBOARD:create_squad(smart_2,"legendary_pack_boars_2")
+ GI("legendary_pack_boars_2_spawned")
+
+ tsk.stage = 6
+ return
+ end
+
+ elseif smrt_1 and (db.actor:position():distance_to(smart_1.position) < dist_2) then
+
+ if NI("legendary_pack_boars_1_spawned") then
+
+ local squad = SIMBOARD:create_squad(smart_1,"legendary_pack_boars_1")
+ GI("legendary_pack_boars_1_spawned")
+
+ tsk.stage = 5
+ return
+ end
+
+ end
+
+ elseif (db.actor:position():distance_to(smart_1.position) > dist_4) then
+ news_manager.send_tip(db.actor, game.translate_string("st_calydonian_boar_fleed_1"), 0, "communication", 11000, 1)
+ GI("player_fled_from_calydonian_boar")
+ return
+
+ end
+
+ end
+
+ if (tsk.stage == 4) then --- smart_1 and smart_2 spawned
+
+ if HI("legendary_pack_boars_1_dead") and HI("legendary_pack_boars_2_dead") then
+
+ if smrt_3 and (db.actor:position():distance_to(smart_3.position) < dist_2) then
+
+ if NI("legendary_pack_boars_3_spawned") then
+
+ local squad = SIMBOARD:create_squad(smart_3,"legendary_pack_boars_3")
+ GI("legendary_pack_boars_3_spawned")
+
+ tsk.stage = 7
+ return
+ end
+ end
+
+ elseif (db.actor:position():distance_to(smart_1.position) > dist_4) then
+ news_manager.send_tip(db.actor, game.translate_string("st_calydonian_boar_fleed_1"), 0, "communication", 11000, 1)
+ GI("player_fled_from_calydonian_boar")
+ return
+
+ end
+ end
+
+ if (tsk.stage == 5) then --- smart_1 and smart_3 spawned
+
+ if HI("legendary_pack_boars_1_dead") and HI("legendary_pack_boars_3_dead") then
+
+ if smrt_2 and (db.actor:position():distance_to(smart_2.position) < dist_2) then
+
+ if NI("legendary_pack_boars_2_spawned") then
+
+ local squad = SIMBOARD:create_squad(smart_2,"legendary_pack_boars_2")
+ GI("legendary_pack_boars_2_spawned")
+
+ tsk.stage = 7
+ return
+ end
+ end
+ elseif (db.actor:position():distance_to(smart_1.position) > dist_4) then
+ news_manager.send_tip(db.actor, game.translate_string("st_calydonian_boar_fleed_1"), 0, "communication", 11000, 1)
+ GI("player_fled_from_calydonian_boar")
+ return
+
+ end
+ end
+
+ if (tsk.stage == 6) then --- smart_2 and smart_3 spawned
+
+ if HI("legendary_pack_boars_2_dead") and HI("legendary_pack_boars_3_dead") then
+
+ if smrt_1 and (db.actor:position():distance_to(smart_1.position) < dist_2) then
+
+ if NI("legendary_pack_boars_1_spawned") then
+
+ local squad = SIMBOARD:create_squad(smart_1,"legendary_pack_boars_1")
+ GI("legendary_pack_boars_1_spawned")
+
+ tsk.stage = 7
+ return
+ end
+ end
+ elseif (db.actor:position():distance_to(smart_1.position) > dist_4) then
+ news_manager.send_tip(db.actor, game.translate_string("st_calydonian_boar_fleed_1"), 0, "communication", 11000, 1)
+ GI("player_fled_from_calydonian_boar")
+ return
+
+ end
+ end
+ if (tsk.stage == 7) then --- smart_1 and smart_2 and smart_3 spawned
+
+
+ if HI("legendary_pack_boars_2_dead") and HI("legendary_pack_boars_1_dead") and HI("legendary_pack_boars_3_dead") then
+ if NI("legendary_boar_calydonian_spawned") then
+
+ dialogs_brotherhood.pseudo_dynamic_spawn_legendary_1()
+ tsk.stage = 8
+ return
+ end
+
+ local npc = get_story_se_object("legendary_pack_boars_calydonian")
+ elseif npc and (npc.position:distance_to(db.actor:position()) > dist_3) then
+ news_manager.send_tip(db.actor, game.translate_string("st_calydonian_boar_fleed_1"), 0, "communication", 11000, 1)
+ GI("player_fled_from_calydonian_boar")
+ return
+
+ end
+ end
+
+ if (tsk.stage == 8) then --- when the guard of the Calydonian boar dies spawn reinforcment
+
+ if HI("legendary_pack_boars_calydonian_guard_dead") and NI("legendary_pack_boars_calydonian_dead") then
+
+ if NI("legendary_boar_reinforcment_1_spawned") then
+ dialogs_brotherhood.pseudo_dynamic_spawn_legendary_1()
+ tsk.stage = 9
+ return
+ end
+
+ local npc = get_story_se_object("legendary_pack_boars_calydonian")
+ elseif npc and (npc.position:distance_to(db.actor:position()) > dist_3) then
+ news_manager.send_tip(db.actor, game.translate_string("st_calydonian_boar_fleed_1"), 0, "communication", 11000, 1)
+ GI("player_fled_from_calydonian_boar")
+ return
+
+
+ elseif HI("legendary_pack_boars_calydonian_dead") then
+ tsk.stage = 12
+ news_manager.send_tip(db.actor, game.translate_string("Calydonian Boar is dead"), 0, "stalker", 11000, 1)
+
+ end
+ end
+
+ if (tsk.stage == 9) then --- when the reinforcment_1 of the Calydonian boar dies spawn reinforcment_2
+
+ if HI("legendary_pack_boars_reinf_1_dead") and NI("legendary_pack_boars_calydonian_dead") then
+
+ if NI("legendary_boar_reinforcment_2_spawned") then
+ dialogs_brotherhood.pseudo_dynamic_spawn_legendary_1()
+ tsk.stage = 10
+ return
+ end
+
+ local npc = get_story_se_object("legendary_pack_boars_calydonian")
+ elseif npc and (npc.position:distance_to(db.actor:position()) > dist_3) then
+ news_manager.send_tip(db.actor, game.translate_string("st_calydonian_boar_fleed_1"), 0, "communication", 11000, 1)
+ GI("player_fled_from_calydonian_boar")
+ return
+
+
+ elseif HI("legendary_pack_boars_calydonian_dead") then
+ tsk.stage = 12
+ news_manager.send_tip(db.actor, game.translate_string("Calydonian Boar is dead"), 0, "stalker", 11000, 1)
+
+ end
+ end
+
+ if (tsk.stage == 10) then --- when the reinforcment_2 of the Calydonian boar dies spawn reinforcment_3
+
+ if HI("legendary_pack_boars_reinf_2_dead") and NI("legendary_pack_boars_calydonian_dead") then
+
+ if NI("legendary_boar_reinforcment_3_spawned") then
+ dialogs_brotherhood.pseudo_dynamic_spawn_legendary_1()
+ tsk.stage = 11
+ return
+ end
+
+ local npc = get_story_se_object("legendary_pack_boars_calydonian")
+ elseif npc and (npc.position:distance_to(db.actor:position()) > dist_3) then
+ news_manager.send_tip(db.actor, game.translate_string("st_calydonian_boar_fleed_1"), 0, "communication", 11000, 1)
+ GI("player_fled_from_calydonian_boar")
+ return
+
+
+ elseif HI("legendary_pack_boars_calydonian_dead") then
+ tsk.stage = 12
+ news_manager.send_tip(db.actor, game.translate_string("Calydonian Boar is dead"), 0, "stalker", 11000, 1)
+
+ end
+ end
+
+ if (tsk.stage == 11) then --- when the reinforcment_3 of the Calydonian boar dies no reinforcment
+
+ if HI("legendary_pack_boars_calydonian_dead") then
+ tsk.stage = 12
+ news_manager.send_tip(db.actor, game.translate_string("Calydonian Boar is dead"), 0, "stalker", 11000, 1)
+
+ local npc = get_story_se_object("legendary_pack_boars_calydonian")
+ elseif npc and (npc.position:distance_to(db.actor:position()) > dist_3) then
+ news_manager.send_tip(db.actor, game.translate_string("st_calydonian_boar_fleed_1"), 0, "communication", 11000, 1)
+ GI("player_fled_from_calydonian_boar")
+ return
+
+ end
+
+ end
+
+ if (tsk.stage == 12) then --- when the Calydonian boar dies
+
+ return
+
+ end
+end
+
+
+
+
+
+
+
+function task_status_functor.give_hunt_legendary_1_status_f(tsk,task_id)
+
+ local dist = 70
+ local dist_2 = 15
+ local dist_3 = 30
+ local spawn_squad = dialogs_brotherhood.spawn_squad
+ local smart = SIMBOARD.smarts_by_names["red_smart_terrain_monsters"]
+ local smrt = SIMBOARD.smarts[smart.id]
+ local hrs = level.get_time_hours()
+
+
+
+ local pos_1 = vector():set( 186.6668548584,0.79058438539505,90.37654876709 )
+ local pos_2 = vector():set( 255.88650512695,-0.52286732196808,63.478019714355 )
+ local pos_3 = vector():set( 221.20915222168,1.4110627174377,24.584827423096 )
+ local pos_4 = vector():set( 238.7276763916,2.0450139045715,96.016990661621 )
+
+ if (tsk.stage == 0) then
+
+
+ if (hrs >= 21) or (hrs < 5) then
+
+ if smart and smart.online then
+
+ if smrt and (db.actor:position():distance_to(smart.position) < dist) then
+ if NI("forester_news_legendary_1") then
+
+ news_manager.send_tip(db.actor, game.translate_string("st_forester_legendary_1_info"), 0, "stalker", 11000, 1)
+
+ GI("forester_news_legendary_1")
+ end
+ if smrt and (db.actor:position():distance_to(smart.position) < dist_2) then
+
+ if db.actor:item_in_slot(7) ~= nil and db.actor:item_in_slot(7):section() == "trenchcoat_green_outfit_brotherhood_forester" then
+
+ if (NI("hunt_vlad_drakul_1_init")) then
+
+
+ local se_squad_1 = spawn_squad("legendary_bloodsucker_1", pos_1, 122161, 2775)
+ local se_squad_2 = spawn_squad("legendary_bloodsucker_2", pos_2, 153543, 2842)
+ local se_squad_3 = spawn_squad("legendary_bloodsucker_3", pos_3, 138640, 2829)
+ local se_squad_4 = spawn_squad("legendary_bloodsucker_4", pos_4, 146467, 2850)
+
+ GI("hunt_vlad_drakul_1_init")
+ tsk.stage = 1
+ return
+
+ end
+ end
+ end
+
+ end
+ end
+ end
+ end
+ if (tsk.stage == 1) then
+
+ if HI("legendary_bloodsucker_1_dead") and HI("legendary_bloodsucker_2_dead") and HI("legendary_bloodsucker_3_dead") and HI("legendary_bloodsucker_4_dead") then
+
+ if (hrs >= 21) or (hrs < 5) then
+
+
+
+ if smart and smart.online then
+
+ if smrt and (db.actor:position():distance_to(smart.position) < dist_3) then
+
+ if db.actor:item_in_slot(7) ~= nil and db.actor:item_in_slot(7):section() == "trenchcoat_green_outfit_brotherhood_forester" then
+
+ if (NI("hunt_vlad_drakul_2_init")) then
+
+ if NI("forester_news_legendary_2") then
+
+ news_manager.send_tip(db.actor, game.translate_string("st_forester_legendary_2_info"), 0, "stalker", 11000, 1)
+ GI("forester_news_legendary_2")
+ end
+
+ local se_squad_5 = spawn_squad("legendary_bloodsucker_v", pos_2, 153543, 2842)
+ local se_squad_6 = spawn_squad("legendary_bloodsucker_5", pos_1, 122161, 2775)
+ local se_squad_7 = spawn_squad("legendary_bloodsucker_d", pos_4, 146467, 2850)
+ local se_squad_8 = spawn_squad("legendary_bloodsucker_6", pos_3, 138640, 2829)
+
+ GI("hunt_vlad_drakul_2_init")
+ tsk.stage = 2
+ return
+
+ end
+ end
+
+ elseif smrt and (db.actor:position():distance_to(smart.position) > dist_3) then
+
+ if NI("forester_news_legendary_4") then
+
+ news_manager.send_tip(db.actor, game.translate_string("st_forester_legendary_4_info"), 0, "stalker", 11000, 1)
+ GI("forester_news_legendary_4")
+ end
+ end
+ end
+
+ else
+ if NI("forester_news_legendary_3") then
+ news_manager.send_tip(db.actor, game.translate_string("st_forester_legendary_3_info"), 0, "stalker", 11000, 1)
+ GI("forester_news_legendary_3")
+ end
+ end
+ end
+ end
+ if (tsk.stage == 2) then
+ if HI("legendary_bloodsucker_d_dead") and HI("legendary_bloodsucker_v_dead") then
+ GI("legendary_bloodsucker_vlad_drakul_dead")
+ end
+ end
+end
+
+function task_status_functor.give_rescue_orion_quest_status_f(tsk,task_id)
+
+ local pos_1 = vector():set(26.031335830688,-8.2342977523804,143.26322937012 )
+ local pos_2 = vector():set(16.905651092529,-8.2306518554688,122.2557220459 )
+ local pos_3 = vector():set(14.258852958679,-8.2303371429443,123.04223632813 )
+
+ local pos_5 = vector():set(84.709777832031,-16.126983642578,66.559776306152 )
+
+ local pos_6 = vector():set(87.101875305176,-16.129384994507,64.91136932373 )
+ local pos_7 = vector():set(71.884750366211,-16.126708984375,94.465553283691 )
+ local pos_8 = vector():set(29.322734832764,-8.2383699417114,100.76599121094 )
+ local pos_9 = vector():set(47.349697113037,-8.2361946105957,103.71166992188 )
+ local pos_10 = vector():set(29.101696014404,-8.2312469482422,80.914306640625 )
+
+ local pos_11 = vector():set(18.270523071289,-8.2423601150513,66.437576293945 )
+ local pos_12 = vector():set(45.599113464355,4.2125010490417,12.874862670898 )
+ local pos_13 = vector():set(41.886127471924,3.7325174808502,2.285183429718 )
+ local pos_14 = vector():set(10.946595191956,-8.2365570068359,90.858016967773 )
+ local pos_15 = vector():set(108.85188293457,-11.439143180847,52.803562164307 )
+
+ local pos_16 = vector():set(108.54220581055,-7.7326726913452,38.519180297852)
+ local pos_17 = vector():set(103.87827301025,-7.6534037590027,38.086296081543 )
+ local pos_18 = vector():set(113.21655273438,-7.7315864562988,38.295310974121 )
+
+ local pos_20 = vector():set(79.766120910645,-7.9560108184814,-18.753499984741 )
+
+ local pos_21 = vector():set(112.30296325684,-7.7722730636597,-52.072357177734)
+ local pos_22 = vector():set(138.6630859375,-7.7427062988281,-24.461986541748 )
+ local pos_23 = vector():set(112.4231262207,-6.9253225326538,-34.570152282715 )
+ local pos_24 = vector():set(110.73091888428,-7.9594664573669,5.9682545661926 )
+ local pos_25 = vector():set(108.39345550537,-7.7746415138245,1.4874260425568 )
+
+ local pos_26 = vector():set(116.1070022583,-6.9230275154114,-0.30516818165779 )
+ local pos_27 = vector():set(110.04892730713,-7.7252421379089,13.748426437378 )
+
+ local pos_4 = vector():set(13.428091049194,-8.23570728302,100.07263183594 )
+ local pos_19 = vector():set(8.1462268829346,-8.2311153411865,98.834182739258 )
+
+
+ local spawn_squad = dialogs_brotherhood.spawn_squad
+ local smart = SIMBOARD.smarts_by_names["agr_u_monsters"]
+ local smrt = SIMBOARD.smarts[smart.id]
+
+ local dist_1 = 4
+ local dist_2 = 2
+ local dist_3 = 1
+
+
+ if (tsk.stage == 0) then
+
+ if level.name() == "l03u_agr_underground" then --spawns common mutants if on the Agroprom Underground level
+
+ if (db.actor:position():distance_to(pos_1) < dist_1) then
+ if NI("orion_spawn_2") then
+ local se_squad_2 = spawn_squad("pack_agru_mutants_1", pos_2, 2056, 3673)
+
+ GI("orion_spawn_2")
+ end
+ end
+ if (db.actor:position():distance_to(pos_4) < dist_2) then
+ if NI("orion_spawn_19") then
+ if HI("orion_spawn_2") then
+ local se_squad_19 = spawn_squad("pack_agru_mutants_2", pos_19, 1040, 3622)
+
+ GI("orion_spawn_19")
+ end
+ end
+ end
+ if (db.actor:position():distance_to(pos_7) < dist_2) then
+ if NI("orion_spawn_5") then
+ local se_squad_5 = spawn_squad("pack_agru_mutants_3", pos_5, 6716, 3650)
+
+ GI("orion_spawn_5")
+ end
+ end
+ if (db.actor:position():distance_to(pos_8) < dist_1) then
+ if NI("orion_spawn_9") then
+ local se_squad_9 = spawn_squad("pack_agru_mutants_2", pos_9, 4195, 3629)
+
+ GI("orion_spawn_9")
+ end
+ if NI("orion_spawn_10") then
+ local se_squad_10 = spawn_squad("pack_agru_mutants_2", pos_10, 2714, 3658)
+
+ GI("orion_spawn_10")
+ end
+ end
+ if (db.actor:position():distance_to(pos_11) < dist_1) then
+ if NI("orion_spawn_10") then
+ local se_squad_10 = spawn_squad("pack_agru_mutants_2", pos_10, 2714, 3658)
+
+ GI("orion_spawn_10")
+ end
+ end
+ if (db.actor:position():distance_to(pos_12) < dist_2) then
+ if NI("orion_spawn_13") then
+ local se_squad_13 = spawn_squad("pack_agru_mutants_2", pos_13, 3585, 3716)
+
+ GI("orion_spawn_13")
+ end
+ end
+ if (db.actor:position():distance_to(pos_14) < dist_1) then
+ if NI("orion_spawn_2") then
+ local se_squad_2 = spawn_squad("pack_agru_mutants_1", pos_2, 2056, 3673)
+
+ GI("orion_spawn_2")
+ end
+ end
+ if (db.actor:position():distance_to(pos_15) < dist_2) then
+ if NI("agru_orion_mutants_1_init") then
+ xr_effects.clear_smart_terrain(nil,nil,{"agr_u_monsters","true"})
+ local se_squad_16 = spawn_squad("pack_agru_mutants_1", pos_16, 8598, 3727)
+ GI("agru_orion_mutants_1_init")
+ tsk.stage = 1
+ return
+ end
+ end
+
+ end
+ end
+ if (tsk.stage == 1) then
+ if (NI("give_task_kill_controller_1_init")) then
+ if (db.actor:position():distance_to(pos_27) < dist_2) then --trigger for Burer and Orion spawn
+ if NI("orion_spawn_27") then
+ local se_squad_20 = spawn_squad("pack_agru_burer_1", pos_20, 6338, 3727)
+ local se_squad_21 = spawn_squad("pack_agru_burer_2", pos_21, 9143, 3724)
+ local se_squad_22 = spawn_squad("pack_agru_burer_3", pos_22, 11555, 3727)
+
+ GI("orion_spawn_27")
+ end
+ tsk.stage = 2
+ GI("give_task_kill_controller_1_init")
+ return
+
+
+ end
+ end
+ end
+ if (tsk.stage == 2) then
+ if HI("pack_agru_burer_1_dead") and HI("pack_agru_burer_2_dead") and HI("pack_agru_burer_3_dead")then
+ if (db.actor:position():distance_to(pos_23) < dist_3) then
+ if NI("orion_spawn_24") then
+ local se_squad_24 = spawn_squad("pack_agru_controller_1", pos_24, 8967, 3727)
+ local se_squad_25 = spawn_squad("pack_agru_burer_1", pos_25, 8552, 3727)
+ local se_squad_26 = spawn_squad("pack_agru_burer_1", pos_26, 9760, 3727)
+ GI("orion_spawn_24")
+ end
+ end
+
+ end
+ if HI("brotherhood_agru_controller_dead") then
+ DI("agr_snork_infestion")
+ return
+ end
+
+
+ end
+end
+
+function task_status_functor.give_rpg_missile_in_the_sky_status_f(tsk,task_id)
+ if (tsk.stage == 0) then
+ printe("Control RPG in the sky running")
+ if level.name() == "l01_escape" then
+ printe("Control RPG in the sky on level")
+ if (is_empty(db.heli)) then
+ printe("Control RPG in the sky spawning heli")
+ local pos = vector():set( -25.020586013794,-12.214082717896,-117.88251495361 )
+ local heli_se = alife_create("helicopter",pos,268396,555)
+ tsk.stage = 1
+ else
+ printe("Control RPG in the sky heli already spawned")
+ tsk.stage = 1
+ end
+ end
+ end
+ if (tsk.stage == 1) then
+ printe("Control RPG in the sky task stage 1")
+
+ end
+end
+
+------ Northern Rush -----
+
+---- Fanatic ----
+
+function task_status_functor.give_task_fanat_rookie_training_1_status_f(tsk,task_id)
+
+
+
+ local npc = get_story_se_object("nr_iliaz_squad")
+ local squad_1 = get_story_se_object("nr_iliaz_boar_squad")
+
+
+
+ local dist_1 = 2
+ local dist_2 = 10
+ local dist_3 = 50
+ local dist_4 = 25
+ local dist_5 = 3
+
+ local pos_1 = vector():set( -207.83670043945,-6.3246264457703,-17.561170578003 )
+ local pos_2 = vector():set( -222.81701660156,-9.301365852356,-13.697906494141 )
+ local pos_3 = vector():set( -235.4893951416,-13.486360549927,-14.958400726318 )
+ local pos_4 = vector():set( -223.73385620117,-19.864381790161,-163.76029968262 )
+
+ local smart_1 = SIMBOARD.smarts_by_names["esc_smart_terrain_5_12"]
+ local smrt_1 = SIMBOARD.smarts[smart_1.id]
+ local smart_2 = SIMBOARD.smarts_by_names["esc_smart_terrain_2_12"]
+ local smrt_2 = SIMBOARD.smarts[smart_1.id]
+
+
+
+
+ if (tsk.stage == 0) then
+ if NI("nr_iliaz_squad_init") then
+ local se_squad = spawn_squad("nr_iliaz_squad", pos_4, 31839, 454)
+ GI("nr_iliaz_squad_init")
+ end
+
+ if HI("nr_iliaz_0_done") then
+ tsk.stage = 1
+ end
+
+ end
+ if (tsk.stage == 1) then
+
+ if smrt_1 and (db.actor:position():distance_to(smart_1.position) < dist_3) then ---clears boar smart and spawns the boars
+ if NI("nr_iliaz_boar_squad_init") then
+ xr_effects.clear_smart_terrain(nil,nil,{"esc_smart_terrain_5_12","true"})
+
+
+ GI("nr_iliaz_boar_squad_init")
+ end
+ if HI("nr_iliaz_boar_squad_init") and NI("nr_iliaz_boar_spawn") then
+ local squad = SIMBOARD:create_squad(smart_1,"nr_iliaz_boar_squad")
+ GI("nr_iliaz_boar_spawn")
+ end
+ end
+
+ if HI("nr_iliaz_1_done") then
+ tsk.stage = 2
+ return
+ end
+ end
+ if (tsk.stage == 2) then
+
+
+ if (db.actor:position():distance_to(pos_1) < dist_2) then
+
+ GI("nr_iliaz_arrived_1")
+
+ end
+
+
+ if (npc.position:distance_to(pos_1) < dist_1) then
+
+ GI("nr_ilyaz_point_1")
+ end
+ if (npc.position:distance_to(pos_2) < dist_1) then
+
+ CreateTimeEvent("nr_ilyaz_blank_1","nr_ilyaz_blank_1", 5, nr_ilyaz_1_init)
+ GI("nr_ilyaz_point_2")
+ tsk.stage = 3
+ end
+
+
+ end
+ if (tsk.stage == 3) then
+ if (npc.position:distance_to(pos_2) < dist_1) then
+
+ end
+ if (npc.position:distance_to(pos_1) < dist_5) then
+ tsk.stage = 4
+ GI("nr_ilyaz_artifact_back")
+ end
+
+ end
+ if (tsk.stage == 4) then
+
+ if smrt_2 and (db.actor:position():distance_to(smart_2.position) < dist_4) then
+ GI("nr_iliaz_arrived_2")
+ DI("nr_ilyaz_artfiact_hunt_1")
+ end
+
+ end
+
+end
+
+function nr_ilyaz_1_init()
+
+ if NI("nr_ilyaz_1_init_timed") then
+
+ DI("nr_ilyaz_point_1")
+ GI("nr_ilyaz_1_init_timed")
+ return true
+ end
+
+end
+
+---- Scamlok ----
+function task_status_functor.give_task_join_scamlok_1_status_f(tsk,task_id)
+ if (tsk.stage == 0) then
+
+
+ local dist = 25
+ local smart = SIMBOARD.smarts_by_names["jup_a6"]
+ if smart and smart.online then
+
+ local smrt = SIMBOARD.smarts[smart.id]
+ if smrt and (db.actor:position():distance_to(smart.position) < dist) then
+ GI("nr_fool_you_arrived")
+
+ return
+ end
+ end
+ end
+ if HI("nr_hawaiian_scamlok_0_done") or HI("barkeep_confirm_scam") then
+ GI("give_task_join_scamlok_1_done")
+ end
+
+end
+
+
+function task_status_functor.give_task_escort_sorokin_1_status_f(tsk,task_id)
+ if (tsk.stage == 0) then
+
+
+ local dist = 25
+ local smart = SIMBOARD.smarts_by_names["jup_a6"]
+ if smart and smart.online then
+
+ local smrt = SIMBOARD.smarts[smart.id]
+ if smrt and (db.actor:position():distance_to(smart.position) < dist) then
+ GI("sorokin_1_you_arrived")
+
+ return
+ end
+ end
+ end
+
+end
+
+----- Bezsonik ----
+function nr_bezsonik_init()
+ local dist = 3
+ local dist_2 = 15
+ local hrs = level.get_time_hours()
+ local smart = SIMBOARD.smarts_by_names["mil_smart_terrain_7_12"]
+ local smrt = SIMBOARD.smarts[smart.id]
+ local pos_1 = vector():set( -6.8887801170349,-6.1277666091919,65.943511962891 )
+ local pos_2 = vector():set( -6.7903175354004,-6.0532302856445,44.868602752686 )
+ local pos_3 = vector():set( -6.7579164505005,-6.1126184463501,86.457405090332 )
+ local pos_4 = vector():set( 4.3408036231995,-8.8730173110962,3.7783288955688 )
+
+ if (NI("nr_bezsonik_init")) then
+ if level.name() == "l07_military" then
+ if (hrs >= 20) and (hrs < 24) then
+ if (NI("nr_bezsonik_init_random")) then
+ if (db.actor:position():distance_to(pos_1) < dist) then
+ GI("bezsonik_1")
+
+ end
+ if HI("bezsonik_1") and (db.actor:position():distance_to(pos_2) < dist) then
+
+ if (math.random(50) < 25) then
+ if NI("nr_bezsonik_init") then
+ local squad = SIMBOARD:create_squad(smart,"nr_bezsonik_squad")
+ GI("nr_bezsonik_init")
+ end
+ else
+ brotherhood_timer.bezsonik_init_random()
+ GI("nr_bezsonik_init_random")
+ DI("bezsonik_1")
+ end
+
+ end
+
+ if HI("bezsonik_1") and (db.actor:position():distance_to(pos_3) < dist) then
+
+ DI("bezsonik_1")
+
+ end
+ end
+ end
+ end
+ end
+ if HI("nr_bezsonik_init") then
+ if (db.actor:position():distance_to(pos_4) < dist_2) then
+ if NI("nr_bezsonik_shout") then
+ actor_menu.set_msg(1, game.translate_string("nr_bezsonik_info"), 10)
+ GI("nr_bezsonik_shout")
+ end
+ end
+
+ end
+
+end
+
+function task_status_functor.give_task_bezsonik_1_status_f(tsk,task_id)
+
+ local smart = SIMBOARD.smarts_by_names["mil_smart_terrain_8_3"]
+ local smrt = SIMBOARD.smarts[smart.id]
+ local hrs = level.get_time_hours()
+
+
+ if (tsk.stage == 0) then
+
+
+ local dist = 80
+
+ if smart and smart.online then
+
+
+ if smrt and (db.actor:position():distance_to(smart.position) < dist) then
+ xr_effects.clear_smart_terrain(nil,nil,{"mil_smart_terrain_8_3","true"})
+ tsk.stage = 1
+ return
+ end
+ end
+ end
+ if (tsk.stage == 1) then
+ if NI("bezsonik_dogs_init") then
+ local squad = SIMBOARD:create_squad(smart,"pack_dogs_bezsonik_1")
+ GI("bezsonik_dogs_init")
+ end
+ if HI("pack_dogs_bezsonik_1_dead") then
+ if (hrs >= 20) or (hrs < 3) then
+ GI("bezsonik_dogs_sleep")
+ tsk.stage = 2
+ else
+ GI("bezsonik_dogs_nosleep")
+ tsk.stage = 2
+ end
+ end
+ end
+ if (tsk.stage == 2) then
+
+ return
+ end
+end
+
+
+
+---- Butcher Trouble ----
+
+function butcher_troubble_init()
+ local dist = 3
+ local dist_2 = 5
+ local dist_3 = 2
+
+ local pos_1 = vector():set( -113.33467102051,0.59587639570236,8.8507452011108 )
+ local pos_2 = vector():set( -105.58847045898,0.96052712202072,4.7404828071594 )
+ local pos_3 = vector():set( -98.773048400879,0.71849876642227,-1.2279287576675 )
+ local pos_4 = vector():set( -98.735130310059,0.7244935631752,-3.1979916095734 )
+ local pos_5 = vector():set( -82.451950073242,0.96916776895523,3.7255098819733 )
+ local pos_6 = vector():set( -91.589393615723,0.96841841936111,3.613053560257 )
+ local pos_7 = vector():set( -70.399047851563,0.96921545267105,4.7191781997681 )
+ local pos_8 = vector():set( -107.49711608887,1.0145883560181,14.611536026001 )
+ local pos_9 = vector():set( -142.93444824219,0.62204450368881,9.111102104187 )
+
+ if (NI("butcher_troubble_init")) then
+ if level.name() == "l02_garbage" then
+
+ if (NI("butcher_troubble_init_random")) then
+ if (db.actor:position():distance_to(pos_1) < dist) then --- approach from west
+ GI("butcher_troubble_1")
+
+ end
+ if HI("butcher_troubble_1") and (db.actor:position():distance_to(pos_2) < dist) then
+
+ if (math.random(24) < 25) then
+ if NI("butcher_troubble_init") then
+ local se_squad_1 = spawn_squad("butcher_tug_1_squad", pos_3, 101729, 726)
+ local se_squad_2 = spawn_squad("butcher_tug_2_squad", pos_4, 101727, 726)
+ GI("butcher_troubble_init")
+ end
+ else
+ brotherhood_timer.butcher_troubble_init_random()
+ GI("butcher_troubble_init_random")
+ DI("butcher_troubble_1")
+ end
+
+ end
+
+ if HI("butcher_troubble_1") and (db.actor:position():distance_to(pos_8) < dist_2) then
+
+ DI("butcher_troubble_1")
+
+ end
+ if HI("butcher_troubble_1") and (db.actor:position():distance_to(pos_9) < dist_2) then
+
+ DI("butcher_troubble_1")
+
+ end
+
+ if (db.actor:position():distance_to(pos_5) < dist) then --- approach from east
+ GI("butcher_troubble_2")
+
+ end
+ if HI("butcher_troubble_2") and (db.actor:position():distance_to(pos_6) < dist) then
+
+ if (math.random(24) < 25) then
+ if NI("butcher_troubble_init") then
+ local se_squad_1 = spawn_squad("butcher_tug_1_squad", pos_3, 101729, 726)
+ local se_squad_2 = spawn_squad("butcher_tug_2_squad", pos_4, 101727, 726)
+ GI("butcher_troubble_init")
+ end
+ else
+ brotherhood_timer.butcher_troubble_init_random()
+ GI("butcher_troubble_init_random")
+ DI("butcher_troubble_2")
+ end
+
+ end
+
+ if HI("butcher_troubble_2") and (db.actor:position():distance_to(pos_7) < dist_2) then
+
+ DI("butcher_troubble_2")
+
+ end
+
+ end
+
+ end
+ end
+ if HI("butcher_troubble_init") then
+
+ if NI("butcher_troubble_shout") then
+ actor_menu.set_msg(1, game.translate_string("butcher_troubble_info_1"), 4)
+ GI("butcher_troubble_shout")
+ end
+ if (db.actor:position():distance_to(pos_3) < dist_3) then --- interrupt the conversation
+
+ GI("butcher_troubble_interrupt")
+
+ end
+
+ end
+
+end
+
+
+
+---- Gutalin ----
+ local brotherhood_artifact_table = {
+
+ "af_dragon_eye",
+ "af_ameba_mica",
+ "af_ameba_slime",
+ "af_ameba_slug",
+ "af_baloon",
+ "af_blood",
+ "af_compass",
+ "af_cristall",
+ "af_cristall_flower",
+ "af_drops",
+ "af_dummy_battery",
+ "af_dummy_dummy",
+ "af_dummy_glassbeads",
+ "af_dummy_pellicle",
+ "af_dummy_spring",
+ "af_electra_flash",
+ "af_electra_moonlight",
+ "af_electra_sparkler",
+ "af_eye",
+ "af_fire",
+ "af_fireball",
+ "af_fuzz_kolobok",
+ "af_glass",
+ "af_gold_fish",
+ "af_gravi",
+ "af_ice",
+ "af_medusa",
+ "af_mincer_meat",
+ "af_night_star",
+ "af_oasis_heart",
+ "af_quest_b14_twisted",
+ "af_rusty_kristall",
+ "af_rusty_sea",
+ "af_rusty_thorn",
+ "af_soul",
+ "af_vyvert",
+ "jup_b1_half_artifact",
+ "af_monolith",
+ "af_cocoon",
+ "af_cell",
+ "af_fountain",
+ "af_spaika",
+ "af_signet",
+ "af_repei",
+ "af_bat",
+ "af_sun",
+ "af_ear",
+ "af_chelust",
+ "af_atom",
+ "af_lighthouse",
+ "af_fire_loop",
+ "af_zhelch",
+ "af_sandstone",
+ "af_kislushka",
+ "af_black_angel",
+ "af_grapes",
+ "af_skull_miser",
+ "af_star_phantom",
+ "af_medallion",
+ "af_peas",
+ "af_generator",
+ "af_fonar",
+ "af_tapeworm",
+ "af_moh",
+ "af_serofim",
+ "af_elektron",
+ "af_kogot",
+ "af_ball",
+ "af_black_spray",
+ "af_bracelet",
+ "af_empty",
+ "af_full_empty",
+ "af_itcher",
+ "af_lobster_eyes",
+ "af_pin",
+ "af_ring",
+ "af_sponge",
+ "af_death_lamp",
+ "af_misery_bread_lead_box",
+ "af_medusa_lead_box",
+ "af_cristall_flower_lead_box",
+ "af_night_star_lead_box",
+ "af_vyvert_lead_box",
+ "af_gravi_lead_box",
+ "af_gold_fish_lead_box",
+ "af_cristall_lead_box",
+ "af_fireball_lead_box",
+ "af_dummy_glassbeads_lead_box",
+ "af_eye_lead_box",
+ "af_fire_lead_box",
+ "af_blood_lead_box",
+ "af_mincer_meat_lead_box",
+ "af_soul_lead_box",
+ "af_fuzz_kolobok_lead_box",
+ "af_baloon_lead_box",
+ "af_glass_lead_box",
+ "af_electra_sparkler_lead_box",
+ "af_electra_flash_lead_box",
+ "af_electra_moonlight_lead_box",
+ "af_dummy_battery_lead_box",
+ "af_dummy_dummy_lead_box",
+ "af_ice_lead_box",
+ "af_compass_lead_box",
+ "af_oasis_heart_lead_box",
+ "jup_b1_half_artifact_lead_box",
+ "af_quest_b14_twisted_lead_box",
+ "af_black_spray_lead_box",
+ "af_bracelet_lead_box",
+ "af_death_lamp_lead_box",
+ "af_empty_lead_box",
+ "af_full_empty_lead_box",
+ "af_itcher_lead_box",
+ "af_lobster_eyes_lead_box",
+ "af_pin_lead_box",
+ "af_ring_lead_box",
+ "af_sponge_lead_box",
+ }
+
+
+function meet_gutalin_init()
+ local dist = 3
+ local dist_2 = 12
+ local dist_3 = 20
+ local dist_4 = 1
+
+ local pos_1 = vector():set( 225.18710327148,-0.011421859264374,13.123934745789 )
+ local pos_2 = vector():set( 224.59652709961,-0.01020672917366,17.893041610718 )
+ local pos_3 = vector():set( 223.60771179199,-0.010213196277618,-3.2195067405701 )
+ local pos_4 = vector():set( 239.3835144043,-0.011857271194458,3.8250217437744 )
+ local pos_5 = vector():set( 215.75396728516,-0.0045666992664337,44.321727752686 )
+
+ local pos_6 = vector():set( -206.23277282715,-19.894157409668,-136.4208984375 )
+
+ local npc = get_story_se_object("bh_gutalin_squad")
+
+ local smart = SIMBOARD.smarts_by_names["bar_visitors"]
+ local smrt = SIMBOARD.smarts[smart.id]
+
+
+
+ if NI("meet_gutalin_done") then
+
+ if (NI("meet_gutalin_init")) then --- meeting Gutalin
+
+ if level.name() == "l05_bar" then
+
+ if (NI("meet_gutalin_init_random")) then
+ if (db.actor:position():distance_to(pos_1) < dist) then --- initial point
+ GI("meet_gutalin_init_1")
+
+ end
+ if HI("meet_gutalin_init_1") and (db.actor:position():distance_to(pos_2) < dist) then --- trigger meeting
+
+ if (math.random(100) < 25) then
+ if NI("meet_gutalin_init") then
+
+ local se_squad_1 = spawn_squad("bh_gutalin_squad", pos_5, 54199, 1764)
+ GI("meet_gutalin_init")
+ end
+ else
+ brotherhood_timer.meet_gutalin_init_random()
+ GI("meet_gutalin_init_random")
+ DI("meet_gutalin_init_1")
+ end
+
+ end
+
+ if HI("meet_gutalin_init_1") and (db.actor:position():distance_to(pos_3) < dist) then --- wipe
+
+ DI("meet_gutalin_init_1")
+
+ end
+ if HI("meet_gutalin_init_1") and (db.actor:position():distance_to(pos_4) < dist) then --- wipe
+
+ DI("meet_gutalin_init_1")
+
+ end
+
+ end
+
+ end
+ end
+ if HI("meet_gutalin_init") then
+ if npc then
+ if (npc.position:distance_to(db.actor:position()) < dist_2) then
+
+ if NI("meet_gutalin_shout") then
+ actor_menu.set_msg(1, game.translate_string("meet_gutalin_info_1"), 4)
+ GI("meet_gutalin_shout")
+ end
+
+ end
+ end
+ end
+ if HI("bh_gutalin_start_dialog_done") and NI("bh_gutalin_relocation_init") then --- teleport Gutalin to Cordon
+
+ if smrt and (db.actor:position():distance_to(smart.position) < dist_3) then
+
+ dialogs_brotherhood.relocation_bh_gutalin()
+
+ end
+ end
+
+ if HI("bh_gutalin_relocation_init") and (level.name() == "l01_escape") then
+ if npc then
+ if (npc.position:distance_to(db.actor:position()) < dist_2) and (npc.position:distance_to(pos_6) < dist_4) then
+
+
+
+
+ if NI("meet_gutalin_preaching") then
+ local rand = math.random(1,4)
+
+ if (rand == 1) then
+
+ actor_menu.set_msg(1, game.translate_string("meet_gutalin_info_2"), 8)
+ GI("meet_gutalin_preaching")
+ CreateTimeEvent("bh_gutalin_blank_1","bh_gutalin_blank_1", 14, bh_gutalin_1_init)
+
+ elseif (rand == 2) then
+ actor_menu.set_msg(1, game.translate_string("meet_gutalin_info_3"), 8)
+ GI("meet_gutalin_preaching")
+ CreateTimeEvent("bh_gutalin_blank_1","bh_gutalin_blank_1", 14, bh_gutalin_1_init)
+
+ elseif (rand == 3) then
+ actor_menu.set_msg(1, game.translate_string("meet_gutalin_info_4"), 8)
+ GI("meet_gutalin_preaching")
+ CreateTimeEvent("bh_gutalin_blank_1","bh_gutalin_blank_1", 14, bh_gutalin_1_init)
+
+ elseif (rand == 4) then
+ actor_menu.set_msg(1, game.translate_string("meet_gutalin_info_5"), 8)
+ GI("meet_gutalin_preaching")
+ CreateTimeEvent("bh_gutalin_blank_1","bh_gutalin_blank_1", 14, bh_gutalin_1_init)
+
+
+ end
+ end
+ end
+ end
+ end
+
+ end
+end
+
+function bh_gutalin_1_init()
+
+ DI("meet_gutalin_preaching")
+ return true
+
+end
+
+function task_status_functor.give_task_bh_gutalin_1_status_f(tsk,task_id)
+
+ local npc = get_story_object("bh_gutalin")
+ local squad = get_story_se_object("bh_gutalin_squad")
+ local hrs = level.get_time_hours()
+ local dist_1 = 3
+ local pos_1 = vector():set( -84.095733642578,-6.1258764266968,-19.095394134521 )
+
+
+
+ if (hrs >= 22) then
+ if npc then
+ for i, v in ipairs(brotherhood_artifact_table) do
+
+ if npc:object(v) ~= nil then
+ GI("bh_gutalin_treasure")
+
+ end
+ end
+ end
+ end
+ if squad and (squad.position:distance_to(pos_1) < dist_1) then
+
+ CreateTimeEvent("bh_gutalin_burry_treasure_1","bh_gutalin_burry_treasure_1", 6, bh_gutalin_burry_treasure_1)
+
+ end
+ if HI("bh_gutalin_squad_dead") then
+ GI("meet_gutalin_done")
+
+ end
+
+end
+
+function bh_gutalin_burry_treasure_1()
+ local npc = get_story_object("bh_gutalin")
+
+ for i, v in ipairs(brotherhood_artifact_table) do
+ item = npc:object(v)
+ if item then
+ npc:drop_item(item)
+ end
+ end
+
+ DI("bh_gutalin_treasure")
+ return true
+
+end
+
+
+
+---- random events
+
+--- Controller ambush
+
+function nr_primankov_init()
+
+ local smart = SIMBOARD.smarts_by_names["jup_b203"]
+ local smrt = SIMBOARD.smarts[smart.id]
+
+ local dist_1 = 25
+ local dist_2 = 15
+ local dist_3 = 1
+
+ local pos_1 = vector():set( -190.61285400391,0.75813418626785,-278.00579833984 )
+ local pos_2 = vector():set( -188.34548950195,0.96719044446945,-272.51498413086 )
+ local pos_3 = vector():set( -184.74633789063,0.75744158029556,-284.82553100586 )
+
+ if NI("nr_primankov_init") then
+
+ if level.name() == "jupiter" then
+
+ if NI("market_share_block_random_quest") then
+
+ if smart and smart.online then
+
+ if smrt and (db.actor:position():distance_to(smart.position) < dist_1) then
+
+ if NI("nr_primankov_random") then
+
+ if NI("nr_primakov_spawn_1") then
+
+ if (math.random(75) < 25) then
+
+ xr_effects.clear_smart_terrain(nil,nil,{"jup_b203","true"})
+ local se_squad_1 = spawn_squad("controller_victim_1_squad", pos_3, 403174, 4704)
+ GI("nr_primakov_spawn_1")
+
+
+ else
+
+ brotherhood_timer.nr_primakov_random()
+ GI("nr_primankov_random")
+ end
+ end
+ end
+
+ if HI("nr_primakov_spawn_1") then
+
+ if NI("nr_primakov_ambush") then
+
+ if (db.actor:position():distance_to(pos_1) < dist_3) then --- trigger ambush
+
+ dialogs_brotherhood.nr_primakov_turn()
+ local se_squad_2 = spawn_squad("pack_random_controller_1", pos_2, 397277, 4704)
+ GI("nr_primakov_ambush")
+ GI("nr_primankov_init")
+ end
+ end
+ if NI("nr_primakov_ambush") then --- cry for help
+
+ if NI("nr_primakov_help") then
+
+ local rand = math.random(1,4)
+
+ if (rand == 1) then
+
+ actor_menu.set_msg(1, game.translate_string("nr_primakov_help_1"), 8)
+ GI("nr_primakov_help")
+ CreateTimeEvent("nr_primakov_help","nr_primakov_help", 8, nr_primakov_help_init)
+
+ elseif (rand == 2) then
+ actor_menu.set_msg(1, game.translate_string("nr_primakov_help_2"), 8)
+ GI("nr_primakov_help")
+ CreateTimeEvent("nr_primakov_help","nr_primakov_help", 8, nr_primakov_help_init)
+
+ elseif (rand == 3) then
+ actor_menu.set_msg(1, game.translate_string("nr_primakov_help_3"), 8)
+ GI("nr_primakov_help")
+ CreateTimeEvent("nr_primakov_help","nr_primakov_help", 8, nr_primakov_help_init)
+
+ elseif (rand == 4) then
+ actor_menu.set_msg(1, game.translate_string("nr_primakov_help_4"), 8)
+ GI("nr_primakov_help")
+ CreateTimeEvent("nr_primakov_help","nr_primakov_help", 8, nr_primakov_help_init)
+
+
+ end
+ end
+ end
+
+ end
+
+ end
+ end
+ end
+ end
+ end
+end
+
+function nr_primakov_help_init()
+
+ DI("nr_primakov_help")
+ return true
+
+end
+
+--- Jupiter execution
+
+function nr_execution_yanov_init()
+
+ local smart = SIMBOARD.smarts_by_names["jup_a6"]
+ local smrt = SIMBOARD.smarts[smart.id]
+
+ local dist_1 = 25
+ local dist_2 = 15
+ local dist_3 = 15
+
+ local pos_1 = vector():set( -53.964504241943,3.5118420124054,160.3719329834 ) --- convict 1
+ --local pos_1 = vector():set( -55.452903747559,3.5291602611542,160.1261138916 ) --- convict 1 old pos
+ local pos_2 = vector():set( -58.915637969971,3.6456756591797,159.9506072998 ) --- convict 2
+ local pos_3 = vector():set( -53.715953826904,3.45143699646,167.76420593262 ) --- executioner 1
+ local pos_4 = vector():set( -56.438800811768,3.4529418945313,168.19071960449 ) --- executioner 2
+ local pos_5 = vector():set( -47.242031097412,3.4872958660126,161.45401000977 ) --- executioner 3
+
+ if NI("nr_execution_yanov_init") then
+
+ if level.name() == "jupiter" then
+
+ if NI("nr_execution_yanov_init_spawn") then
+
+ --local se_squad_1 = spawn_squad("nr_dead_convict_1_squad", pos_1, 627190, 4494) --old pos
+ local se_squad_1 = spawn_squad("nr_dead_convict_1_squad", pos_1, 629310, 4494)
+ local se_squad_3 = spawn_squad("nr_executioner_1_squad", pos_3, 629320, 4494)
+ local se_squad_4 = spawn_squad("nr_executioner_2_squad", pos_4, 624937, 4494)
+ local se_squad_5 = spawn_squad("nr_executioner_3_squad", pos_5, 640837, 4494)
+ GI("nr_execution_yanov_init_spawn")
+
+ end
+ if (db.actor:position():distance_to(pos_1) < dist_3) then --- init execution
+ if NI("nr_execution_yanov_1_init") then
+ actor_menu.set_msg(1, game.translate_string("st_nr_execution_0"), 8)
+ CreateTimeEvent("nr_execution_yanov_st_1","nr_execution_yanov_st_1", 4,nr_execution_yanov_dialogue_1)
+ CreateTimeEvent("nr_execution_yanov_st_2","nr_execution_yanov_st_2", 8,nr_execution_yanov_dialogue_2)
+ CreateTimeEvent("nr_execution_yanov_st_3","nr_execution_yanov_st_3", 12,nr_execution_yanov_dialogue_3)
+ CreateTimeEvent("nr_execution_yanov_st_4","nr_execution_yanov_st_4", 14,nr_execution_yanov_dialogue_4)
+ CreateTimeEvent("nr_execution_yanov_st_5","nr_execution_yanov_st_5", 18,nr_execution_yanov_dialogue_5)
+ CreateTimeEvent("nr_execution_yanov_st_6","nr_execution_yanov_st_6", 20,nr_execution_yanov_dialogue_6)
+
+ ---CreateTimeEvent("nr_execution_yanov_1","nr_execution_yanov_1", 20.5, nr_execution_yanov_1_execute)
+
+ GI("nr_execution_yanov_1_init")
+ end
+ end
+
+ end
+ end
+end
+
+function nr_execution_yanov_1_execute()
+ GI("nr_execution_firing_1")
+ -- dialogs_brotherhood.nr_dead_convict_1_turn()
+ return true
+end
+
+
+function nr_execution_yanov_dialogue_1()
+
+ local pos_1 = vector():set( -53.964504241943,3.5118420124054,160.3719329834 ) --- convict 1
+ local dist_3 = 20
+
+ if (db.actor:position():distance_to(pos_1) < dist_3) then
+ actor_menu.set_msg(1, game.translate_string("st_nr_execution_1"), 8)
+ end
+ return true
+end
+function nr_execution_yanov_dialogue_2()
+ local pos_1 = vector():set( -53.964504241943,3.5118420124054,160.3719329834 ) --- convict 1
+ local dist_3 = 20
+ if (db.actor:position():distance_to(pos_1) < dist_3) then
+ actor_menu.set_msg(1, game.translate_string("st_nr_execution_2"), 8)
+ end
+ return true
+end
+function nr_execution_yanov_dialogue_3()
+ local pos_1 = vector():set( -53.964504241943,3.5118420124054,160.3719329834 ) --- convict 1
+ local dist_3 = 20
+ if (db.actor:position():distance_to(pos_1) < dist_3) then
+ actor_menu.set_msg(1, game.translate_string("st_nr_execution_3"), 8)
+ end
+ return true
+end
+function nr_execution_yanov_dialogue_4()
+ local pos_1 = vector():set( -53.964504241943,3.5118420124054,160.3719329834 ) --- convict 1
+ local dist_3 = 20
+ if (db.actor:position():distance_to(pos_1) < dist_3) then
+ actor_menu.set_msg(1, game.translate_string("st_nr_execution_4"), 8)
+ end
+ return true
+end
+function nr_execution_yanov_dialogue_5()
+ local pos_1 = vector():set( -53.964504241943,3.5118420124054,160.3719329834 ) --- convict 1
+ local dist_3 = 20
+ if (db.actor:position():distance_to(pos_1) < dist_3) then
+ actor_menu.set_msg(1, game.translate_string("st_nr_execution_5"), 8)
+ end
+ return true
+end
+function nr_execution_yanov_dialogue_6()
+ local pos_1 = vector():set( -53.964504241943,3.5118420124054,160.3719329834 ) --- convict 1
+ local dist_3 = 20
+ if (db.actor:position():distance_to(pos_1) < dist_3) then
+ actor_menu.set_msg(1, game.translate_string("st_nr_execution_6"), 8)
+ end
+ GI("nr_execution_firing_1")
+ return true
+end
+
+function task_status_functor.give_task_nr_strange_meat_status_f(tsk,task_id)
+
+ --- pos Lyoshik
+ local pos_1 = vector():set( 15.033114433289,-7.2893815040588,20.447532653809 )
+
+ if NI("nr_strange_meat_spawn_init") then --- spawn NPCs
+
+ local se_squad_1 = spawn_squad("nr_lyoshik_squad", pos_1, 305953, 2165)
+
+ GI("nr_strange_meat_spawn_init")
+
+ end
+
+
+end
+
+--- Sasha Baltunov
+
+
+function nr_baltunov_init()
+ local pos_1 = vector():set( 133.56050109863,-4.825080871582,27.625020980835 ) --- trigger
+ local pos_2 = vector():set( 122.6502456665,-4.3441872596741,31.141521453857 ) --- spawn
+ local pos_3 = vector():set( 125.42021179199,-4.3464636802673,28.191061019897 ) --- speech
+ local pos_4 = vector():set( 127.67053985596,-4.8243117332458,23.232620239258 ) ---bar
+ local pos_5 = vector():set( 115.9564666748,-0.0015365779399872,49.205066680908 ) ---murder
+ local dist_1 = 3
+ local dist_2 = 2
+ local dist_3 = 50
+ local npc = get_story_se_object("nr_sasha_baltunov_squad")
+ local smart = SIMBOARD.smarts_by_names["bar_visitors"]
+ local smrt = SIMBOARD.smarts[smart.id]
+
+ if NI("nr_baltunov_init") then
+ if level.name() == "l05_bar" then
+ if (NI("nr_baltunov_init_random")) then
+ if (db.actor:position():distance_to(pos_1) < dist_1) then --- trigger spawn
+ if (math.random(100) < 10) then
+ if NI("nr_baltunov_spawn") then
+
+ local se_squad_1 = spawn_squad("nr_sasha_baltunov_squad", pos_2, 34993, 1740)
+ GI("nr_baltunov_spawn")
+ GI("nr_baltunov_init_random")
+ end
+ else
+ brotherhood_timer.nr_baltunov_init_random()
+ GI("nr_baltunov_init_random")
+
+ end
+
+ end
+ end
+ if npc and (npc.position:distance_to(pos_3) < dist_2) then
+ if NI("nr_baltunov_init_speech") then
+ actor_menu.set_msg(1, game.translate_string("st_nr_sahsa_baltun_round_1"), 8)
+ CreateTimeEvent("nr_baltunov_init_1","nr_baltunov_init_1", 4, nr_baltunov_round_init)
+ GI("nr_baltunov_init_speech")
+
+ end
+ end
+
+ if HI("nr_sasha_baltunov_1_job_init") then
+ if smrt and (db.actor:position():distance_to(smart.position) > dist_3) then
+ if NI("nr_baltunov_init_murder") then
+
+ xr_effects.spawn_nr_sasha_baltun_murder_weapon()
+ dialogs_brotherhood.relocation_nr_sasha_baltun_murder()
+ dialogs_brotherhood.nr_sasha_baltun_murder()
+ end
+ end
+ end
+
+ if HI("nr_baltunov_init_murder") then
+ if (db.actor:position():distance_to(pos_5) < dist_1) then
+ actor_menu.set_msg(1, game.translate_string("st_nr_sahsa_baltun_murder_1"), 8)
+ GI("nr_baltunov_init")
+ end
+ end
+ end
+ end
+end
+
+function nr_baltunov_round_init()
+ actor_menu.set_msg(1, game.translate_string("st_nr_sahsa_baltun_round_2"), 8)
+ GI("nr_sasha_baltunov_1_job_init")
+ return true
+end
+
+function xr_effects.spawn_nr_sasha_baltun_murder_weapon()
+ local pos = vector():set( 116.98554229736,-0.0014335215091705,49.7780418396 )
+ local se_obj = alife_create( "wpn_knife2", pos, 34072, 1759 )
+ if ( not se_obj ) then
+ printe("!ERROR: unable to spawn murder weapon" )
+ end
+end
+
+function bh_starik_1_init()
+
+ if NI("nr_starik_1_init") then
+
+ if level.name() == "k00_marsh" then
+ local pos_1 = vector():set( -41.169841766357,-1.2703860998154,268.60656738281 ) --- bandit 1
+ local pos_2 = vector():set( -43.523834228516,-1.2712132930756,268.31134033203 ) --- badnit 2
+ local pos_3 = vector():set( -42.306156158447,-0.81166511774063,267.18487548828 ) --- Corpse
+ local pos_4 = vector():set( -41.992389678955,1.0363459587097,276.58703613281 ) --- trigger
+
+ local dist_1 = 10
+ local dist_2 = 2
+
+ if (NI("nr_starik_1_init_random")) then
+ if (db.actor:position():distance_to(pos_4) < dist_1) then --- trigger spawn
+ if (math.random(65) < 25) then
+ if NI("nr_starik_1_spawn") then
+
+ local se_squad_1 = spawn_squad("nr_starik_murder_bandit_1_squad", pos_1, 121773, 76)
+ local se_squad_2 = spawn_squad("nr_starik_murder_bandit_2_squad", pos_2, 120618, 76)
+ local se_squad_3 = spawn_squad("nr_starik_murdered_squad", pos_3, 121371, 76)
+ xr_effects.kill_squad(nil,nil,{"nr_starik_murdered_squad"})
+ xr_effects.spawn_nr_starik_murdered_stash()
+ GI("nr_starik_1_spawn")
+ GI("nr_starik_1_init_random")
+ end
+ else
+ brotherhood_timer.nr_starik_1_init_random()
+ GI("nr_starik_1_init_random")
+
+ end
+
+
+
+ end
+ end
+ if HI("nr_starik_1_spawn") then
+ if NI("nr_starik_1_talk_init") then
+ actor_menu.set_msg(1, game.translate_string("st_nr_starik_murder_1"), 8)
+ CreateTimeEvent("nr_starik_1_talk_init_1","nr_starik_1_talk_init_1", 4, nr_starik_1_talk_init_1)
+ CreateTimeEvent("nr_starik_1_talk_init_2","nr_starik_1_talk_init_2", 8, nr_starik_1_talk_init_2)
+ CreateTimeEvent("nr_starik_1_talk_init_3","nr_starik_1_talk_init_3", 12, nr_starik_1_talk_init_3)
+ CreateTimeEvent("nr_starik_1_talk_init_4","nr_starik_1_talk_init_4", 16, nr_starik_1_talk_init_4)
+ GI("nr_starik_1_talk_init")
+ end
+ end
+ if NI("nr_starik_1_interrupted") then
+ if (db.actor:position():distance_to(pos_4) < dist_2) then --- trigger spawn
+ actor_menu.set_msg(1, game.translate_string("st_nr_starik_murder_interrupted"), 8)
+ GI("nr_starik_1_interrupted")
+ GI("nr_starik_1_init")
+ end
+ end
+
+ end
+ end
+end
+function nr_starik_1_talk_init_1()
+ local dist_1 = 10
+ local pos_4 = vector():set( -41.992389678955,1.0363459587097,276.58703613281 ) --- trigger
+ if (db.actor:position():distance_to(pos_4) < dist_1) then --- trigger spawn
+ if NI("nr_starik_1_interrupted") then
+ actor_menu.set_msg(1, game.translate_string("st_nr_starik_murder_2"), 8)
+ end
+ end
+ return true
+end
+function nr_starik_1_talk_init_2()
+ local dist_1 = 10
+ local pos_4 = vector():set( -41.992389678955,1.0363459587097,276.58703613281 ) --- trigger
+ if (db.actor:position():distance_to(pos_4) < dist_1) then --- trigger spawn
+ if NI("nr_starik_1_interrupted") then
+ actor_menu.set_msg(1, game.translate_string("st_nr_starik_murder_3"), 8)
+ end
+ end
+ return true
+end
+function nr_starik_1_talk_init_3()
+ local dist_1 = 10
+ local pos_4 = vector():set( -41.992389678955,1.0363459587097,276.58703613281 ) --- trigger
+ if (db.actor:position():distance_to(pos_4) < dist_1) then --- trigger spawn
+ if NI("nr_starik_1_interrupted") then
+ actor_menu.set_msg(1, game.translate_string("st_nr_starik_murder_4"), 8)
+ end
+ end
+ return true
+end
+function nr_starik_1_talk_init_4()
+ local dist_1 = 10
+ local pos_4 = vector():set( -41.992389678955,1.0363459587097,276.58703613281 ) --- trigger
+ if (db.actor:position():distance_to(pos_4) < dist_1) then --- trigger spawn
+ if NI("nr_starik_1_interrupted") then
+ actor_menu.set_msg(1, game.translate_string("st_nr_starik_murder_5"), 8)
+ end
+ end
+ return true
+end
+
+function xr_effects.spawn_nr_starik_murdered_stash()
+ local pos = vector():set( 350.34912109375,8.1314964294434,-74.197410583496 )
+ local se_obj_1 = alife_create( "wpn_colt1911", pos, 366421, 45 )
+ local se_obj_2 = alife_create( "itm_advancedkit", pos, 366421, 45 )
+ local se_obj_3 = alife_create( "detector_advanced", pos, 366421, 45 )
+ local se_obj_4 = alife_create( "adrenalin", pos, 366421, 45 )
+ if ( not se_obj_1 ) or ( not se_obj_2 ) or ( not se_obj_3 ) or ( not se_obj_4 ) then
+ printe("!ERROR: unable to spawn starik stash" )
+ end
+
+ if se_obj_1 then
+ CreateTimeEvent("comradecatilina", "waiting_for_the_game_object", 0, function(id)
+ local obj = level.object_by_id(id)
+ if obj then
+ obj:set_condition(1 - (math.random(25, 45)/100))
+ return true
+ end
+ end, se_obj_1.id)
+ else
+ printf("!ERROR | Failed to spawn my_section !")
+ end
+end
+
+
+function bh_like_rats_trap_init()
+
+
+ if NI("bh_like_rats_trap_init") then
+
+ local pos_1 = vector():set( -39.03401184082,-0.0018443763256073,43.549373626709 ) --- above ground 1
+ local pos_2 = vector():set( -75.507743835449,1.7313983440399,8.8472261428833 ) --- above ground 2
+ local pos_3 = vector():set( 76.103713989258,3.7150104045868,128.13946533203 ) --- underground 1
+ local pos_4 = vector():set( 35.715763092041,-8.2353734970093,157.6732635498 ) --- underground 2
+
+ local dist_1 = 150
+ local dist_2 = 5
+ local smart = SIMBOARD.smarts_by_names["agr_smart_terrain_4_4"]
+ local smrt = SIMBOARD.smarts[smart.id]
+
+ local knife = db.actor:item_in_slot(1)
+ local weapon_1 = db.actor:item_in_slot(2)
+ local weapon_2 = db.actor:item_in_slot(3)
+ local weapon_3 = db.actor:item_in_slot(4)
+
+ if level.name() == "l03_agroprom" then --- if first meeting Naruchnik
+ news_manager.send_tip(db.actor, game.translate_string("RATS 1"), 0, "stalker", 11000, 1)
+ if smart and smart.online then
+ if smrt and (db.actor:position():distance_to(smart.position) < dist_1) then
+ news_manager.send_tip(db.actor, game.translate_string("RATS 2"), 0, "stalker", 11000, 1)
+ if NI("bh_rat_guards_spawn") then
+ news_manager.send_tip(db.actor, game.translate_string("RATS Spawn"), 0, "stalker", 11000, 1)
+ local squad_1 = SIMBOARD:create_squad(smart,"bh_rat_guards_1_squad")
+ local squad_2 = SIMBOARD:create_squad(smart,"bh_rat_guards_2_squad")
+ GI("bh_rat_guards_spawn")
+ end
+ end
+ end
+ if (db.actor:position():distance_to(pos_1) < dist_2) then
+ if NI("give_like_rats_trap_1_init") then
+ if NI("bh_rats_trap_guards_shout") then
+ actor_menu.set_msg(1, game.translate_string("st_bh_like_rats_in_trap_0"), 8)
+ CreateTimeEvent("bh_rats_trap_guards_shout_1","bh_rats_trap_guards_shout_1", 4, bh_rats_trap_guards_shout_1)
+ end
+ dialogs_brotherhood.give_like_rats_trap_1()
+ GI("give_like_rats_trap_1_init")
+ GI("bh_like_rats_trap_init")
+ end
+ elseif (db.actor:position():distance_to(pos_2) < dist_2) then
+ if NI("give_like_rats_trap_1_init") then
+ if NI("bh_rats_trap_guards_shout") then
+ actor_menu.set_msg(1, game.translate_string("st_bh_like_rats_in_trap_0"), 8)
+ CreateTimeEvent("bh_rats_trap_guards_shout_1","bh_rats_trap_guards_shout_1", 4, bh_rats_trap_guards_shout_1)
+ end
+ dialogs_brotherhood.give_like_rats_trap_1()
+ GI("give_like_rats_trap_1_init")
+ GI("bh_like_rats_trap_init")
+ end
+ end
+
+ end
+ if level.name() == "l03u_agr_underground" then --- if first meeting the bandits
+
+ if (db.actor:position():distance_to(pos_1) < dist_2) then
+ if NI("give_like_rats_trap_1_init") then
+ if NI("bh_rats_trap_bandits_shout") then
+ actor_menu.set_msg(1, game.translate_string("st_bh_like_rats_in_trap_2"), 8)
+ CreateTimeEvent("bh_rats_trap_bandits_shout_1","bh_rats_trap_bandits_shout_1", 4, bh_rats_trap_bandits_shout_1)
+ end
+ dialogs_brotherhood.give_like_rats_trap_1()
+ GI("give_like_rats_trap_1_init")
+ GI("bh_like_rats_trap_init")
+ end
+ elseif (db.actor:position():distance_to(pos_2) < dist_2) then
+ if NI("give_like_rats_trap_1_init") then
+ if NI("bh_rats_trap_bandits_shout") then
+ actor_menu.set_msg(1, game.translate_string("st_bh_like_rats_in_trap_2"), 8)
+ CreateTimeEvent("bh_rats_trap_bandits_shout_1","bh_rats_trap_bandits_shout_1", 4, bh_rats_trap_bandits_shout_1)
+ end
+ dialogs_brotherhood.give_like_rats_trap_1()
+ GI("give_like_rats_trap_1_init")
+ GI("bh_like_rats_trap_init")
+ end
+ end
+ end
+ end
+end
+
+function bh_rats_trap_bandits_shout_1()
+ actor_menu.set_msg(1, game.translate_string("st_bh_like_rats_in_trap_3"), 8)
+ return true
+end
+function bh_rats_trap_guards_shout_1()
+ actor_menu.set_msg(1, game.translate_string("st_bh_like_rats_in_trap_1"), 8)
+ return true
+end
+
+function task_status_functor.give_like_rats_trap_1_status_f(tsk,task_id)
+
+ local pos_1 = vector():set( 76.488876342773,4.210268497467,180.86875915527 ) --- under ground 1 from couloir
+ local pos_2 = vector():set( 38.165634155273,1.7712228298187,158.65428161621 ) --- under ground 2 from stairs
+ local pos_3 = vector():set( 76.103713989258,3.7150104045868,128.13946533203 ) --- underground 3 (1 in init) from electro
+ local pos_4 = vector():set( 35.715763092041,-8.2353734970093,157.6732635498 ) --- underground 4 (2 in init) from stairs under
+
+ local dist_1 = 150
+ local dist_2 = 5
+ local smart = SIMBOARD.smarts_by_names["agr_smart_terrain_4_4"]
+ local smrt = SIMBOARD.smarts[smart.id]
+
+ if (tsk.stage == 0) then
+ if NI("bh_rat_guards_spawn") then
+ local squad_1 = SIMBOARD:create_squad(smart,"bh_rat_guards_1_squad")
+ local squad_2 = SIMBOARD:create_squad(smart,"bh_rat_guards_2_squad")
+ GI("bh_rat_guards_spawn")
+ end
+ if level.name() == "l03u_agr_underground" then --- if first meeting the bandits
+
+ if (db.actor:position():distance_to(pos_1) < dist_2) then
+ if NI("give_like_rats_trap_2_init") then
+ if NI("bh_rats_trap_bandits_shout_2") then
+ actor_menu.set_msg(1, game.translate_string("st_bh_like_rats_in_trap_2"), 8)
+ CreateTimeEvent("bh_rats_trap_bandits_shout_2","bh_rats_trap_bandits_shout_2", 4, bh_rats_trap_bandits_shout_1)
+ end
+
+ GI("give_like_rats_trap_2_init")
+
+ end
+ elseif (db.actor:position():distance_to(pos_2) < dist_2) then
+ if NI("give_like_rats_trap_2_init") then
+ if NI("bh_rats_trap_bandits_shout_2") then
+ actor_menu.set_msg(1, game.translate_string("st_bh_like_rats_in_trap_2"), 8)
+ CreateTimeEvent("bh_rats_trap_bandits_shout_2","bh_rats_trap_bandits_shout_2", 4, bh_rats_trap_bandits_shout_1)
+ end
+
+ GI("give_like_rats_trap_2_init")
+
+ end
+ elseif (db.actor:position():distance_to(pos_3) < dist_2) then
+ if NI("give_like_rats_trap_2_init") then
+ if NI("bh_rats_trap_bandits_shout_2") then
+ actor_menu.set_msg(1, game.translate_string("st_bh_like_rats_in_trap_2"), 8)
+ CreateTimeEvent("bh_rats_trap_bandits_shout_2","bh_rats_trap_bandits_shout_2", 4, bh_rats_trap_bandits_shout_1)
+ end
+
+ GI("give_like_rats_trap_2_init")
+
+ end
+ elseif (db.actor:position():distance_to(pos_4) < dist_2) then
+ if NI("give_like_rats_trap_2_init") then
+ if NI("bh_rats_trap_bandits_shout_2") then
+ actor_menu.set_msg(1, game.translate_string("st_bh_like_rats_in_trap_2"), 8)
+ CreateTimeEvent("bh_rats_trap_bandits_shout_2","bh_rats_trap_bandits_shout_2", 4, bh_rats_trap_bandits_shout_1)
+ end
+
+ GI("give_like_rats_trap_2_init")
+
+ end
+ end
+ end
+
+ end
+
+
+end
\ No newline at end of file
diff --git a/mods/[DEV] Brotherhood/gamedata/scripts/task_brotherhood_ac.script b/mods/[DEV] Brotherhood/gamedata/scripts/task_brotherhood_ac.script
new file mode 100644
index 00000000..8f922fe1
--- /dev/null
+++ b/mods/[DEV] Brotherhood/gamedata/scripts/task_brotherhood_ac.script
@@ -0,0 +1,334 @@
+
+------- GENERAL Functions --------
+local HI = has_alife_info
+local GI = give_info
+local DI = disable_info
+
+local spawn_squad = dialogs_brotherhood.spawn_squad
+
+
+function NI(str)
+ return not (has_alife_info(str))
+end
+
+function on_game_start()
+ RegisterScriptCallback("actor_on_update",actor_on_update)
+ RegisterScriptCallback("actor_on_first_update",actor_on_first_update)
+end
+
+function actor_on_update()
+
+end
+function actor_on_first_update()
+ ---atomic_crusader_start()
+end
+
+function atomic_crusader_start()
+ if NI("atomic_crusader_start") then
+ if get_actor_true_community() == "monolith" then
+ GI("atomic_crusader_start")
+ dialogs_brotherhood_ac.give_task_father_charon_quest_1()
+
+ end
+ end
+end
+
+function task_status_functor.give_task_blue_winter_quest_1_status_f(tsk,task_id)
+
+ local pos_1 = vector():set( -94.356330871582,-0.46535187959671,-53.193744659424 ) --- caspar
+ local pos_2 = vector():set( -96.955108642578,-0.46410083770752,-53.258888244629 ) ---melchior
+ local pos_3 = vector():set( -56.787971496582,2.5227835178375,-96.418365478516 ) --- snorks 1 trigger
+ local pos_4 = vector():set( -50.74377822876,4.2098917961121,-101.90814208984 ) --- snorks 1
+ local pos_5 = vector():set( -75.341384887695,4.2088317871094,-91.308197021484 ) --- snorks 2 trigger
+ local pos_6 = vector():set( -80.527206420898,4.2104706764221,-105.93899536133 ) --- snorks 2
+ local pos_7 = vector():set( -99.864273071289,0.84025031328201,-91.754333496094 ) ---poltergeist trigger
+ local pos_8 = vector():set( -107.9713973999,4.2113361358643,-101.23147583008 ) ---poltergeist spawn
+
+ local npc = get_story_se_object("ac_blue_winter_squad")
+
+ local dist_1 = 7
+ local dist_2 = 3
+
+ local smart = SIMBOARD.smarts_by_names["pri_sim_3"]
+
+ if (tsk.stage == 0) then
+ if HI("ac_blue_winter_1_done") then
+ if level.name() == "pripyat" then
+ xr_effects.clear_smart_terrain(nil,nil,{"pri_a25_smart_terrain","true"})
+ xr_effects.clear_smart_terrain(nil,nil,{"pri_sim_9","true"})
+ xr_effects.clear_smart_terrain(nil,nil,{"pri_b307","true"})
+ xr_effects.clear_smart_terrain(nil,nil,{"pri_sim_3","true"})
+ xr_effects.clear_smart_terrain(nil,nil,{"pri_sim_5","true"})
+ xr_effects.clear_smart_terrain(nil,nil,{"pri_sim_7","true"})
+ xr_effects.clear_smart_terrain(nil,nil,{"pri_a22_smart_terrain","true"})
+ tsk.stage = 1
+ end
+ end
+ end
+ if (tsk.stage == 1) then
+ if NI("ac_melchior_caspar_spawn_init") then
+ local squad_1 = SIMBOARD:create_squad(smart,"ac_caspar_squad")
+ local squad_2 = SIMBOARD:create_squad(smart,"ac_melchior_squad")
+ GI("ac_melchior_caspar_spawn_init")
+ tsk.stage = 2
+ end
+ end
+ if (tsk.stage == 2) then
+ if npc and (npc.position:distance_to(pos_2) < dist_1) then
+ if NI("st_ac_task_1_init") then
+ actor_menu.set_msg(1, game.translate_string("st_ac_task_1_0"), 10)
+ CreateTimeEvent("st_ac_task_1_init_1","st_ac_task_1_init_1", 4,st_ac_task_1_init_1)
+ CreateTimeEvent("st_ac_task_1_init_2","st_ac_task_1_init_2", 8,st_ac_task_1_init_2)
+ CreateTimeEvent("st_ac_task_1_init_3","st_ac_task_1_init_3", 12,st_ac_task_1_init_3)
+ CreateTimeEvent("st_ac_task_1_init_4","st_ac_task_1_init_4", 16,st_ac_task_1_init_4)
+ CreateTimeEvent("st_ac_task_1_init_5","st_ac_task_1_init_5", 20,st_ac_task_1_init_5)
+ CreateTimeEvent("st_ac_task_1_init_6","st_ac_task_1_init_6", 24,st_ac_task_1_init_6)
+ GI("st_ac_task_1_init")
+ tsk.stage = 3
+ end
+ end
+ end
+ if (tsk.stage == 3) then
+ if HI("ac_blue_winter_task_1_stage_3") then
+
+ if (db.actor:position():distance_to(pos_3) < dist_2) then
+ if NI("ac_blue_winter_task_1_spawn_init_1") then
+ local se_squad_3 = spawn_squad("pack_ac_snorks_1", pos_4, 138716, 4947)
+ local se_squad_4 = spawn_squad("ac_pri_a25_poltergeist_1_squad", pos_8, 85234, 4948)
+ GI("ac_blue_winter_task_1_spawn_init_1")
+ end
+
+ end
+ if (db.actor:position():distance_to(pos_5) < dist_2) then
+ if NI("ac_blue_winter_task_1_spawn_init_2") then
+ local se_squad_5 = spawn_squad("pack_ac_snorks_2", pos_6, 109339, 4948)
+ GI("ac_blue_winter_task_1_spawn_init_2")
+ end
+ end
+ if HI("ac_blue_winter_task_1_spawn_init_2") and HI("ac_blue_winter_task_1_spawn_init_1") then
+ tsk.stage = 4
+
+ end
+ end
+ end
+ if (tsk.stage == 4) then
+ if HI("pack_ac_snorks_1_dead") and HI("pack_ac_snorks_2_dead") and HI("ac_pri_a25_poltergeist_1_squad_dead") then
+ GI("ac_task_1_everyone_dead")
+
+ end
+ end
+end
+
+function st_ac_task_1_init_1()
+ actor_menu.set_msg(1, game.translate_string("st_ac_task_1_1"), 10)
+ return true
+end
+function st_ac_task_1_init_2()
+ actor_menu.set_msg(1, game.translate_string("st_ac_task_1_2"), 10)
+ return true
+end
+function st_ac_task_1_init_3()
+ actor_menu.set_msg(1, game.translate_string("st_ac_task_1_3"), 10)
+ return true
+end
+function st_ac_task_1_init_4()
+ actor_menu.set_msg(1,string.format(game.translate_string("st_ac_task_1_4"), alife():actor():character_name()), 10)
+
+ return true
+end
+function st_ac_task_1_init_5()
+ actor_menu.set_msg(1, string.format(game.translate_string("st_ac_task_1_5"), alife():actor():character_name()), 10)
+ GI("ac_blue_winter_task_1_stage_3")
+ return true
+end
+function st_ac_task_1_init_6()
+ actor_menu.set_msg(1, game.translate_string("st_ac_task_1_6"), 10)
+ return true
+end
+
+
+
+
+function task_status_functor.give_task_blue_winter_quest_1_status_f(tsk,task_id)
+
+ local pos_1 = vector():set( 65.763290405273,14.580019950867,-133.64477539063 ) --- trigger
+ local pos_2 = vector():set( 49.821727752686,-0.49124795198441,-177.17810058594 ) --- path 1
+ local pos_3 = vector():set( -7.3301563262939,-0.17000591754913,-182.1794128418 ) --- path 2
+ local pos_4 = vector():set( 141.32060241699,-0.096420645713806,-176.77297973633 ) --- spawn squad
+
+ local pos_5 = vector():set( -100.89275360107,0.4929051399231,-246.49229431152 ) --- destination
+
+ local pos_6 = vector():set( -116.92031860352,-7.8898968696594,-232.40341186523 ) --- trigger assault
+
+ local pos_7 = vector():set( -99.864273071289,0.84025031328201,-91.754333496094 ) ---poltergeist trigger
+ local pos_8 = vector():set( -107.9713973999,4.2113361358643,-101.23147583008 ) ---poltergeist spawn
+
+ local dist_1 = 3
+ local dist_2 = 5
+ local dist_3 = 20
+ local dist_4 = 10
+
+ local npc = get_story_se_object("ac_task_3_stalker_squad")
+
+ local name = alife():actor():character_name()
+ local se = strformat("%s",name)
+
+ local squad = get_story_se_object("ac_blue_winter_squad")
+ local commander_id = squad and squad:commander_id()
+ local commander = commander_id and db.storage[commander_id] and db.storage[commander_id].object
+
+ local squad_2 = get_story_se_object("ac_melchior_squad")
+ local commander_id_2 = squad_2 and squad_2:commander_id()
+ local commander_2 = commander_id_2 and db.storage[commander_id_2] and db.storage[commander_id_2].object
+
+ if (tsk.stage == 0) then
+
+ if NI("ac_task_3_smart_clear") then
+ xr_effects.clear_smart_terrain(nil,nil,{"pri_a28_shop","true"})
+ xr_effects.clear_smart_terrain(nil,nil,{"pri_a28_base","true"})
+ xr_effects.clear_smart_terrain(nil,nil,{"pri_a15","true"})
+ xr_effects.clear_smart_terrain(nil,nil,{"pri_b305_dogs","true"})
+ xr_effects.clear_smart_terrain(nil,nil,{"pri_b35_military","true"})
+ xr_effects.clear_smart_terrain(nil,nil,{"pri_b35_mercs","true"})
+ xr_effects.clear_smart_terrain(nil,nil,{"pri_sim_5","true"})
+ xr_effects.clear_smart_terrain(nil,nil,{"pri_b304_monsters_smart_terrain","true"})
+ GI("ac_task_3_smart_clear")
+ end
+
+
+ if (db.actor:position():distance_to(pos_1) < dist_1) then
+ CreateTimeEvent("ac_task_3_spawn_1","ac_task_3_spawn_1", 5,ac_task_3_spawn_init)
+ tsk.stage = 1
+ end
+ end
+
+ if (tsk.stage == 1) then
+ if HI("ac_task_3_spawn_init") then
+ if NI("ac_task_3_spawn_done") then
+
+ local se_squad = spawn_squad("ac_task_3_stalker_squad", pos_4, 370570, 4922)
+ GI("ac_task_3_spawn_done")
+ tsk.stage = 2
+ end
+ end
+ end
+ if (tsk.stage == 2) then
+ if NI("ac_task_3_sight_1") then
+ if npc and (npc.position:distance_to(pos_2) < dist_4) then
+ local actor_dir = device().cam_dir
+ local npc_dir = vec_sub(npc:position(),db.actor:position())
+ local yaw = yaw_degree3d(actor_dir, npc_dir)
+
+ if yaw < 35 then
+ dynamic_news_helper.send_tip(game.translate_string("st_ac_task_3_0"), se, 0, 10, db.actor:character_icon(), nil, "npc")
+ dynamic_news_helper.send_tip(game.translate_string("st_ac_task_3_1"), commander:character_name(), 5, 10, commander:character_icon(), nil, "npc" )
+ GI("ac_task_3_sight_1")
+ end
+ end
+ end
+
+ if npc and (npc.position:distance_to(pos_2) < dist_2) then
+ GI("ac_task_3_pos_2")
+ tsk.stage = 3
+ end
+ end
+ if (tsk.stage == 3) then
+ if NI("ac_task_3_sight_2") then
+ if npc and (npc.position:distance_to(pos_3) < dist_2) then
+ local actor_dir = device().cam_dir
+ local npc_dir = vec_sub(npc:position(),db.actor:position())
+ local yaw = yaw_degree3d(actor_dir, npc_dir)
+
+ if yaw < 35 then
+ dynamic_news_helper.send_tip(game.translate_string("st_ac_task_3_2"), se, 0, 10, db.actor:character_icon(), nil, "npc")
+ dynamic_news_helper.send_tip(game.translate_string("st_ac_task_3_3"), commander:character_name(), 5, 10, commander:character_icon(), nil, "npc" )
+ dynamic_news_helper.send_tip(game.translate_string("st_ac_task_3_4"), se, 10, 10, db.actor:character_icon(), nil, "npc")
+ dynamic_news_helper.send_tip(game.translate_string("st_ac_task_3_5"), commander:character_name(), 15, 10, commander:character_icon(), nil, "npc" )
+ GI("ac_task_3_sight_2")
+ end
+ end
+ end
+
+ if npc and (npc.position:distance_to(pos_3) < dist_2) then
+ GI("ac_task_3_pos_3")
+ tsk.stage = 4
+ end
+ end
+ if (tsk.stage == 4) then
+ if NI("ac_task_3_sight_3") then
+ if npc and (npc.position:distance_to(pos_5) < dist_2) then
+ local actor_dir = device().cam_dir
+ local npc_dir = vec_sub(npc:position(),db.actor:position())
+ local yaw = yaw_degree3d(actor_dir, npc_dir)
+
+ if yaw < 35 then
+ dynamic_news_helper.send_tip(game.translate_string("st_ac_task_3_6"), commander_2:character_name(), 0, 10, commander_2:character_icon(), nil, "npc" )
+ dynamic_news_helper.send_tip(game.translate_string("st_ac_task_3_7"), commander:character_name(), 5, 10, commander:character_icon(), nil, "npc" )
+ dynamic_news_helper.send_tip(string.format(game.translate_string("st_ac_task_3_8"), alife():actor():character_name()), commander:character_name(), 7, 10, commander:character_icon(), nil, "npc" )
+
+ GI("ac_task_3_sight_3")
+ end
+ end
+ end
+ if npc and (npc.position:distance_to(pos_5) < dist_3) then
+ GI("ac_task_3_pos_5")
+ tsk.stage = 5
+ end
+ end
+ if (tsk.stage == 5) then
+ CreateTimeEvent("ac_task_3_reloc_1","ac_task_3_reloc_1", 15,ac_task_3_reloc_init)
+
+ xr_effects.clear_smart_terrain(nil,nil,{"pri_a21_smart_terrain","true"})
+ xr_effects.clear_smart_terrain(nil,nil,{"pri_sim_8","true"})
+ xr_effects.clear_smart_terrain(nil,nil,{"pri_sim_11","true"})
+ xr_effects.clear_smart_terrain(nil,nil,{"pri_b305_dogs","true"})
+ xr_effects.clear_smart_terrain(nil,nil,{"pri_sim_4","true"})
+ xr_effects.clear_smart_terrain(nil,nil,{"pri_sim_5","true"})
+
+ tsk.stage = 6
+ end
+ if (tsk.stage == 6) then
+ if HI("ac_task_3_reloc_init") then
+ if NI("relocated_ac_task_3_blue_winter") then
+ dialogs_brotherhood_ac.ac_task_3_blue_winter_relocation()
+ end
+ if NI("relocated_ac_task_3_balthazar") then
+ dialogs_brotherhood_ac.ac_task_3_balthazar_relocation()
+ end
+ if NI("relocated_ac_task_3_melchior") then
+ dialogs_brotherhood_ac.ac_task_3_melchior_relocation()
+ end
+ if NI("relocated_ac_task_3_caspar") then
+ dialogs_brotherhood_ac.ac_task_3_caspar_relocation()
+ end
+ end
+ if HI("ac_task_3_convo") then
+ tsk.stage = 7
+ end
+ end
+ if (tsk.stage == 7) then
+ if (db.actor:position():distance_to(pos_6) < dist_1) then
+ if NI("ac_task_3_sight_4") then
+ dynamic_news_helper.send_tip(game.translate_string("st_ac_task_3_9"), se, 0, 10, db.actor:character_icon(), nil, "npc")
+ dynamic_news_helper.send_tip(game.translate_string("st_ac_task_3_10"), commander:character_name(), 5, 10, commander:character_icon(), nil, "npc" )
+
+ CreateTimeEvent("ac_task_3_assault_1","ac_task_3_assault_1", 5,ac_task_3_assault_init)
+ GI("ac_task_3_sight_4")
+ end
+ end
+ end
+end
+
+
+function ac_task_3_spawn_init()
+ GI("ac_task_3_spawn_init")
+ return true
+end
+function ac_task_3_reloc_init()
+ GI("ac_task_3_reloc_init")
+ return true
+end
+function ac_task_3_assault_init()
+ GI("ac_task_3_checkpoint")
+ return true
+end
\ No newline at end of file
diff --git a/mods/[DEV] Brotherhood/gamedata/scripts/xr_brotherhood.script b/mods/[DEV] Brotherhood/gamedata/scripts/xr_brotherhood.script
new file mode 100644
index 00000000..bf0e2c68
--- /dev/null
+++ b/mods/[DEV] Brotherhood/gamedata/scripts/xr_brotherhood.script
@@ -0,0 +1,32 @@
+---Custom conditions for Stories from the Zone
+
+
+function on_game_start()
+ RegisterScriptCallback("actor_on_first_update", actor_on_first_update)
+end
+
+
+
+
+function actor_on_first_update()
+ for i = 1, 65534 do
+ local se_obj = alife_object(i)
+ -- make sure its on agroprom ug level and door name matches
+ local lid = se_obj and game_graph():vertex(se_obj.m_game_vertex_id):level_id()
+ local lname_fits = lid and alife():level_name(lid) and alife():level_name(lid) == "l03u_agr_underground"
+ if lname_fits and se_obj:name() == "kat_physic_object_0013" then
+ local data = utils_stpk.get_physic_data(se_obj)
+ data.custom_data = [[
+[collide]
+ignore_static
+ignore_small_objects
+
+[logic]
+cfg = scripts\brotherhood_agr_u_door_logic.ltx
+]]
+ utils_stpk.set_physic_data(data, se_obj)
+ return
+ end
+ end
+end
+
diff --git a/mods/[DEV] Brotherhood/gamedata/scripts/xr_logic_ex.script b/mods/[DEV] Brotherhood/gamedata/scripts/xr_logic_ex.script
new file mode 100644
index 00000000..cf35f88c
--- /dev/null
+++ b/mods/[DEV] Brotherhood/gamedata/scripts/xr_logic_ex.script
@@ -0,0 +1,1317 @@
+--- Original Author(s) : GhenTuong
+--- Edited : N/A
+--- Date : 15/07/2022
+--- License : Proprietary
+---
+--- Extension script for xr_logic.script.
+
+
+
+--[[----------------------------------------------------------------------------------------------------
+ Conditions
+------------------------------------------------------------------------------------------------------]]
+xr_conditions.dist_to_beh = function(actor,npc,p)
+ local st = npc and db.storage[npc:id()]
+ local dt = st and st.beh and st.beh.desired_target
+ if (dt and (st.active_section == dt.active_section) and dt.position) then
+ return p and p[1] and npc:position():distance_to_sqr(dt.position) < p[1]*p[1]
+ end
+ return false
+end
+
+xr_conditions.reach_beh = function(actor,npc,p)
+ local st = npc and db.storage[npc:id()]
+ local dt = st and st.beh and st.beh.desired_target
+ if (dt and (st.active_section == dt.active_section) and dt.level_vertex_id and (dt.level_vertex_id == npc:level_vertex_id())) then
+ return true
+ end
+ return false
+end
+
+xr_conditions.npc_squad_name = function(actor,npc,p)
+ local squad = get_object_squad(npc)
+ if (p and p[1] and squad and string.find(squad:section_name(),p[1])) then
+ return true
+ end
+ return false
+end
+
+xr_conditions.enemy_squad = function(enemy,npc,p)
+ local squad = get_object_squad(enemy)
+ if (p and p[1] and squad and string.find(squad:section_name(),p[1])) then
+ return true
+ end
+ return false
+end
+
+xr_conditions.check_squad_section = function(actor,squad,p)
+ if (p and p[1] and squad and string.find(squad:section_name(),p[1])) then
+ return true
+ end
+ return false
+end
+xr_effects.squad_self_release = function(actor,squad,p)
+ return squad and squad.id and alife_release(squad)
+end
+
+xr_conditions.check_time_speech = function(actor,npc,p)
+ local st = db.storage[npc:id()]
+ local dt = st and st.beh and st.beh.desired_target
+ if not (dt and dt.speech_delay_until) then
+ return true
+ end
+ if (dt.speech_delay_until < time_global()) then
+ return true
+ end
+ return false
+end
+
+xr_effects.speech = function(actor,npc,p)
+ local se = npc and (type(npc.id) == "function") and alife_object(npc:id())
+ se = se or (npc and (type(npc.id) == "number") and alife_object(npc.id))
+ local name = se and se:character_name()
+ local text = p and p[1] and game.translate_string(p[1])
+ if (name and text) then
+ dynamic_news_helper.send_tip(text,name,nil,15,"ui_npc_duty_girl_msg_image",nil,"npc")
+ if (tonumber(p[2])) then
+ local st = db.storage[npc:id()]
+ local dt = st and st.beh and st.beh.desired_target
+ if (dt) then
+ dt.speech_delay_until = time_global() + tonumber(p[2]) * 1000
+ end
+ end
+ end
+end
+
+
+function get_waypoint(npc,section,pt)
+ local st = npc and db.storage[npc:id()]
+ if (st and st.ini and (section or st.active_section) and pt and tostring(pt)) then
+ local str = st.ini:r_string_ex(section or st.active_section,tostring(pt))
+ if (str) then
+ for s in string.gmatch(str,"pos:(%A+)") do
+ local v = str_explode(s,",")
+ if (tonumber(v[1]) and tonumber(v[2]) and tonumber(v[3])) then
+ return vector():set(tonumber(v[1]),tonumber(v[2]),tonumber(v[3]))
+ end
+ end
+ end
+ end
+end
+
+function set_position(actor,npc,p)
+ local pos = p and p[1] and p[2] and get_waypoint(npc,p[1],p[2])
+ if (pos) then
+ npc:set_npc_position(pos)
+ end
+end
+--[[----------------------------------------------------------------------------------------------------
+ Stalker state
+------------------------------------------------------------------------------------------------------]]
+function state_idle(actor,npc,p)
+ local new_state = p and p[1]
+ local state = npc and state_mgr.get_state(npc)
+ if (new_state and state and (new_state ~= state)) then
+ state_mgr.set_state(npc,new_state)
+ end
+end
+
+
+--[[----------------------------------------------------------------------------------------------------
+ Movement
+------------------------------------------------------------------------------------------------------]]
+local function validate(npc,vid)
+ if (vid and vid < 4294967295 and npc:accessible(vid) and vid ~= npc:level_vertex_id()) then
+ return db.used_level_vertex_ids[vid] == nil or db.used_level_vertex_ids[vid] == npc:id()
+ end
+ return false
+end
+
+local function lmove(npc,vid,st)
+ if (vid == nil or vid >= 4294967295) then
+ return
+ end
+
+ if (db.used_level_vertex_ids[vid] == npc:id()) then
+ npc:set_dest_level_vertex_id(vid)
+ return vid
+ end
+
+ if (st.vid) then
+ db.used_level_vertex_ids[st.vid] = nil
+ end
+
+ if not (npc:accessible(vid)) then
+ local vtemp = VEC_ZERO
+ vid, vtemp = npc:accessible_nearest(vid and level.vertex_position(vid) or npc:position(), vtemp )
+ end
+
+ db.used_level_vertex_ids[vid] = npc:id()
+ st.vid = vid
+
+ npc:set_dest_level_vertex_id(vid)
+ return vid
+end
+
+--[[----------------------------------------------------------------------------------------------------
+ Animpoints
+------------------------------------------------------------------------------------------------------]]
+local campfire_state_tbl = {
+ idle = {director = {"", "_eat_bread", "_eat_kolbasa", "_drink_vodka", "_drink_energy", "_weapon", "_roast_kolbasa", "_roast_kolbasa_bred", "_roast_bred", "_sleep", "_use_pda"}, listener = {"", "_eat_bread", "_eat_kolbasa", "_drink_vodka", "_drink_energy", "_weapon", "_roast_kolbasa", "_roast_kolbasa_bred", "_roast_bred", "_sleep", "_use_pda"}},
+ harmonica = {director = {"_harmonica"}, listener = {"", "_eat_bread", "_eat_kolbasa", "_drink_vodka", "_drink_energy", "_weapon", "_roast_kolbasa", "_roast_kolbasa_bred", "_roast_bred", "_sleep", "_use_pda"}},
+ guitar = {director = {"_guitar"}, listener = {"", "_eat_bread", "_eat_kolbasa", "_drink_vodka", "_drink_energy", "_weapon", "_roast_kolbasa", "_roast_kolbasa_bred", "_roast_bred", "_sleep", "_use_pda"}},
+ story = {director = {"", "_weapon"}, listener = {"", "_eat_bread", "_eat_kolbasa", "_drink_vodka", "_drink_energy", "_weapon", "_roast_kolbasa", "_roast_kolbasa_bred", "_roast_bred", "_sleep", "_use_pda"}},
+}
+
+local state_sit_all = {"animpoint_sit","animpoint_sit_ass","animpoint_sit_knee"}
+
+function xr_effects.animpoint(actor,npc)
+ local st = npc and db.storage[npc:id()]
+ local beh = st and st.beh
+ if not (beh) then
+ return
+ end
+ local dt = beh.desired_target
+
+ if not (dt and (st.active_section == dt.active_section) and (dt.custom_logic == "animpoint")) then
+ local index = next_pt_index(npc)
+ dt = load_animpoint(npc,index)
+ end
+
+ if (dt and dt.wait_delay and (dt.wait_delay < time_global())) then
+ local index = next_pt_index(npc)
+ dt = load_animpoint(npc,index)
+ end
+
+ if not (dt.level_vertex_id) then
+ printf("GhenTuong: animpoint %s | %s",st.active_section,dt.level_vertex_id)
+ return
+ end
+
+ if (st.beh.use_camp and dt.animpoint) then
+ -- Move to camp
+ if (npc:level_vertex_id() ~= dt.level_vertex_id) then
+ npc:set_path_type(game_object.level_path)
+ npc:set_desired_direction()
+ beh.assist_point = utils_obj.send_to_nearest_accessible_vertex(npc,dt.level_vertex_id,"xr_custom.animpoint")
+ set_moving_state(npc)
+ return
+ end
+
+ -- Get camp
+ if not (beh.camp) then
+ beh.camp = sr_camp.get_current_camp(dt.position)
+ end
+ if (beh.camp and not beh.in_camp) then
+ beh.camp:register_npc(npc:id())
+ beh.in_camp = true
+ end
+
+ if not (dt.approved_actions and (#dt.approved_actions > 0)) then
+ local is_in_camp = beh.camp ~= nil
+ local p = {"animpoint_sit_ass","animpoint_sit_knee","animpoint_sit"}
+ dt.description_name = p[math.random(#p)]
+ dt.avail_actions = xr_animpoint_predicates.associations[dt.description_name]
+
+ if (dt.avail_actions) then
+ local lst = {}
+ for k,v in pairs(dt.avail_actions) do
+ if (v.predicate(npc:id(),is_in_camp) == true) then
+ lst[#lst+1] = v
+ end
+ end
+ dt.approved_actions = lst
+
+ for k,v in pairs(dt.approved_actions) do
+ printf("GhenTuong: load_campfire_actions [%s] %s is_in_camp %s %s",npc:name(),dt.active_section,is_in_camp,v and v.name)
+ end
+ else
+ return
+ end
+ end
+
+ local tmp_actions = {}
+ local num = 0
+
+ local camp_action, is_director = beh.camp and beh.camp:get_camp_action(npc:id())
+ if not (camp_action) then
+ printf("GhenTuong: [%s] %s no camp",npc:name(),dt.active_section)
+ return
+ end
+
+ local tbl = nil
+ if (is_director) then
+ tbl = campfire_state_tbl[camp_action].director
+ dt.__dtimer = time_global()
+ else
+ dt.__dtimer = (not dt.__dtimer and time_global() + math.random(10000,15000)) or dt.__dtimer
+ if (dt.current_action and time_global() < dt.__dtimer) then
+ return
+ end
+ tbl = campfire_state_tbl[camp_action].listener
+ end
+
+ local found = false
+ for k,v in pairs(dt.approved_actions) do
+ for i = 1, #tbl do
+ if (dt.description_name .. tbl[i] == v.name) then
+ num = num + 1
+ tmp_actions[num] = v.name
+ found = true
+ end
+ end
+ end
+
+ if not (found) then
+ num = num + 1
+ tmp_actions[num] = dt.description_name
+ end
+
+ dt.current_action = tmp_actions[math.random(num)]
+
+ for k,v in pairs(tmp_actions) do
+ printf("GhenTuong: animpoint load campfire action %s %s",dt.active_section,v)
+ end
+
+ local cur_state = state_mgr.get_state(npc)
+ local new_state = dt.current_action
+ if (cur_state and new_state and (cur_state ~= new_state)) then
+ local anim_pos = dt.animpoint and vector():set(dt.animpoint)
+ local anim_dir = dt.direction and vector():set(dt.direction)
+ state_mgr.set_state(npc,new_state,nil,nil,nil,{animation_position = anim_pos, animation_direction = anim_dir})
+ end
+ return
+ end
+
+ if (dt.animpoint) then
+ local cur_state = state_mgr.get_state(npc)
+ local new_state = nil
+
+ if (dt.delay_animation and string.find(dt.delay_animation,"@random")) then
+ if (dt.random_animation == nil) then
+ local str = str_explode(dt.delay_animation,"@")
+ local state_base = tostring(str[1])
+ state_base = (string.find(state_base,"animpoint_sit_all") and state_sit_all[math.random(#state_sit_all)]) or state_base
+
+ local p = {"guitar","harmonica","roast","weapon"}
+ local function check_state_exception(state_con,state)
+ for k,v in pairs(p) do
+ if (string.find(state,v) and not string.find(state_con,v)) then
+ return false
+ end
+ end
+ return true
+ end
+
+ local state_list = {}
+ local t = xr_animpoint_predicates.associations[state_base]
+ if (t) then
+ for k,v in pairs(t) do
+ if (v.name and check_state_exception(dt.delay_animation,tostring(v.name))) then
+ state_list[#state_list+1] = tostring(v.name)
+ end
+ end
+ end
+
+ if (#state_list == 0) then
+ printf("GhenTuong: xr_logic_ex can not find %s %s",dt.active_section,dt.delay_animation)
+ return
+ end
+ dt.random_animation = state_list[math.random(#state_list)]
+ end
+ new_state = dt.random_animation
+ else
+ new_state = dt.delay_animation
+ end
+
+ if not (cur_state and new_state) then
+ return
+ end
+
+ if ((cur_state == new_state) and (npc:position():distance_to_sqr(dt.animpoint) < 0.8)) then
+ if (dt.delay) then
+ if not (dt.wait_delay) then
+ dt.wait_delay = time_global() + dt.delay
+ end
+ end
+
+ if (dt.sound_idle) then
+ xr_sound.set_sound_play(npc:id(),dt.sound_idle)
+ end
+ return
+ end
+
+ if (npc:level_vertex_id() ~= dt.level_vertex_id) then
+ npc:set_path_type(game_object.level_path)
+ npc:set_desired_direction()
+ beh.assist_point = utils_obj.send_to_nearest_accessible_vertex(npc,dt.level_vertex_id,"xr_custom.animpoint")
+ set_moving_state(npc)
+ return
+ end
+
+ if (cur_state == new_state) then
+ if (dt.delay) then
+ if not (dt.wait_delay) then
+ dt.wait_delay = time_global() + dt.delay
+ end
+ end
+
+ if (dt.sound_idle) then
+ xr_sound.set_sound_play(npc:id(),dt.sound_idle)
+ end
+ return
+ end
+
+ local reach_state = "animpoint_reach_ex"
+
+ if (cur_state ~= new_state) and (cur_state ~= reach_state) then
+ local anim_pos = dt.animpoint and vector():set(dt.animpoint)
+ local anim_dir = dt.direction and vector():set(dt.direction)
+ state_mgr.set_state(npc,reach_state,{turn_end_func = function() return end},nil,{look_dir = anim_dir},{animation_position = anim_pos})
+ end
+
+ if (cur_state == reach_state) and not (st.callback and st.callback.turn_end_func) then
+ local anim_pos = dt.animpoint and vector():set(dt.animpoint)
+ local anim_dir = dt.direction and vector():set(dt.direction)
+ --local look_pos = dt.look_position and vector():set(dt.look_position)
+ state_mgr.set_state(npc,new_state,nil,nil,nil,{animation_position = anim_pos, animation_direction = anim_dir})
+ end
+ return
+ end
+
+ if (npc:level_vertex_id() ~= dt.level_vertex_id) then
+ npc:set_path_type(game_object.level_path)
+ npc:set_desired_direction()
+ beh.assist_point = utils_obj.send_to_nearest_accessible_vertex(npc,dt.level_vertex_id,"xr_custom.animpoint")
+ set_moving_state(npc)
+ return
+ end
+
+ local cur_state = state_mgr.get_state(npc)
+ local new_state = dt.delay_animation
+ if not (cur_state and new_state) then
+ return
+ end
+
+ if (cur_state == new_state) then
+ if (dt.delay) then
+ if not (dt.wait_delay) then
+ dt.wait_delay = time_global() + dt.delay
+ end
+ end
+
+ if (dt.sound_idle) then
+ xr_sound.set_sound_play(npc:id(),dt.sound_idle)
+ end
+ return
+ end
+
+ local look_pos = dt.look_position and vector():set(dt.look_position)
+ state_mgr.set_state(npc,new_state,nil,nil,{look_position = look_pos})
+end
+
+function load_animpoint(npc,index)
+ local st = npc and db.storage[npc:id()]
+ local str = st and st.beh and st.ini and st.active_section and st.ini:r_string_ex(st.active_section,"pt" .. index)
+ if not (str) then
+ return {}
+ end
+
+ local dt = {}
+ dt.active_section = tostring(st.active_section)
+ dt.custom_logic = "animpoint"
+ dt.path_index = tonumber(index)
+
+ for s in string.gmatch(str,"pos:(%A+)") do
+ local p = str_explode(s,",")
+ dt.position = vector():set(tonumber(p[1]),tonumber(p[2]),tonumber(p[3]))
+ dt.level_vertex_id = dt.position and level.vertex_id(vector():set(dt.position.x,dt.position.y+0.5,dt.position.z))
+ end
+
+ if (string.find(str,"animpoint:pos")) then
+ dt.animpoint = dt.position and vector():set(dt.position)
+ else
+ for s in string.gmatch(str,"animpoint:(%A+)") do
+ local p = str_explode(s,",")
+ dt.animpoint = vector():set(tonumber(p[1]),tonumber(p[2]),tonumber(p[3]))
+ end
+ end
+
+ for s in string.gmatch(str,"dir:(%A+)") do
+ local p = str_explode(s,",")
+ dt.direction = tonumber(p[1]) and vector_rotate_y(vector():set(0,0,1),tonumber(p[1])):normalize()
+ end
+
+ local pos = dt.animpoint and vector():set(dt.animpoint) or dt.position and vector():set(dt.position)
+ local dir = dt.direction and vector():set(dt.direction)
+ if (pos and dir) then
+ dt.look_position = vector():set(pos.x + 10*dir.x, pos.y, pos.z + 10*dir.z)
+ end
+
+ if not (dt.direction and dt.look_position) then
+ for s in string.gmatch(str,"look:(%A+)") do
+ local p = str_explode(s,",")
+ dt.look_position = vector():set(tonumber(p[1]),tonumber(p[2]),tonumber(p[3]))
+ end
+ if (pos and dt.look_position) then
+ dt.direction = vector():set(dt.look_position):sub(pos):normalize()
+ end
+ end
+
+ local pt = str_explode(str,"|")
+ pt = pt[1] and str_explode(pt[1],",")
+
+ if (pt) then
+ if (pt[1] and (pt[1] ~= "") and (pt[1] ~= "nil")) then
+ dt.delay = tonumber(pt[1])
+ end
+
+ if (pt[2] and (pt[2] ~= "") and (pt[2] ~= "nil")) then
+ dt.delay_animation = tostring(pt[2])
+ end
+
+ if (pt[3] and (pt[3] ~= "") and (pt[3] ~= "nil")) then
+ dt.sound_idle = tostring(pt[3])
+ end
+ end
+
+ st.beh.desired_target = dt
+ return st.beh.desired_target
+end
+
+function next_pt_index(npc)
+ local st = npc and db.storage[npc:id()]
+ local dt = st and st.beh and st.beh.desired_target
+ local index = (dt and (st.active_section == dt.active_section) and tonumber(dt.path_index) or 0) + 1
+ if (st.ini and st.active_section and st.ini:r_string_ex(st.active_section,"pt" .. index)) then
+ return index
+ end
+ return 1
+end
+
+function set_moving_state(npc)
+ local beh = db.storage[npc:id()] and db.storage[npc:id()].beh
+ if not (beh) then return end
+
+ local t = time_global()
+ if (beh.keep_state_until and t < beh.keep_state_until) then
+ return
+ end
+ beh.keep_state_until = t + 500
+
+ local new_state = beh.run_animation
+ local dist_w = tonumber(xr_logic.pick_section_from_condlist(db.actor, npc, beh.walk_dist) or 5) or 5
+ local dist_j = tonumber(xr_logic.pick_section_from_condlist(db.actor, npc, beh.jog_dist) or 10) or 10
+
+ local pos = vector():set(npc:position())
+ local d = beh.desired_target and beh.desired_target.position and pos:distance_to_sqr(beh.desired_target.position)
+
+ if (beh.assist_point == nil or beh.assist_point == npc:level_vertex_id()) then
+ new_state = beh.wait_animation
+ elseif ((dist_w ~= 0) and d and (d < dist_w*dist_w)) then
+ new_state = beh.walk_animation
+ elseif ((dist_j ~= 0) and d and (d > dist_j*dist_j)) then
+ new_state = beh.jog_animation
+ end
+
+ state_mgr.set_state(npc,new_state,nil,nil,nil,{fast_set = true,animation = true})
+end
+
+
+
+--[[----------------------------------------------------------------------------------------------------
+ Campfire
+------------------------------------------------------------------------------------------------------]]
+local storage_camp = {}
+
+function generate_campfire_point(smart_name,campfire_name)
+ local function itr(obj)
+ local cf = {}
+ local pos = obj:position()
+ local dir = obj:direction()
+ if (pos and dir) then
+
+ end
+
+ if (storage_camp[smart_name] == nil) then
+ storage_camp[smart_name] = {}
+ end
+ storage_camp[smart_name][campfire_name] = cf
+ end
+
+ if (db.campfire_table_by_smart_names[smart_name]) then
+ for _,k in pairs(db.campfire_table_by_smart_names[smart_name]) do
+ if (k.object and (k.object:name() == campfire_name)) then
+ itr(camp)
+ break
+ end
+ end
+ end
+end
+
+function xr_effects.beh_campfire(actor,npc)
+ local st = npc and db.storage[npc:id()]
+ if not (st and st.beh) then
+ return
+ end
+
+ local dt = st and st.beh and st.beh.desired_target
+
+ if not (dt and (st.active_section == dt.active_section) and (dt.custom_logic == "beh_campfire")) then
+ dt = load_beh_campfire(npc,index)
+ end
+
+ if not (dt and dt.smart_name and dt.campfire_name) then
+ return
+ end
+end
+
+function load_beh_campfire(npc,st)
+ local ini = st.ini
+ local section = st.active_scheme
+ if not (ini and section and ini:section_exist(section)) then
+ return
+ end
+
+ local dt = {}
+ dt.active_section = tostring(st.active_section)
+ dt.custom_logic = "beh_campfire"
+ dt.smart_name = ini:r_string_ex(section,"smart")
+ dt.campfire_name = ini:r_string_ex(section,"campfire")
+
+ st.beh.desired_target = dt
+ return st.beh.desired_target
+end
+
+
+--[[----------------------------------------------------------------------------------------------------
+ Mutants
+------------------------------------------------------------------------------------------------------]]
+local mutant_state_move = {
+ ["walk"] = move.walk_fwd,
+ ["run"] = move.run_fwd,
+ ["steal"] = move.steal,
+}
+
+local mutant_state_wait = {
+ ["stand"] = anim.stand_idle,
+ ["lie"] = anim.lie_idle,
+ ["sleep"] = anim.sleep,
+}
+
+function xr_effects.mutant_path(actor,npc,p)
+ local st = npc and db.storage[npc:id()]
+ if not (st and st.beh) then
+ return
+ end
+
+ local dt = st and st.beh and st.beh.desired_target
+
+ if not (dt and (st.active_section == dt.active_section) and (dt.custom_logic == "mutant_path")) then
+ dt = mutant_load_path(npc)
+ end
+
+ if not (dt.level_vertex_id and dt.position) then
+ return
+ end
+
+ if (npc:get_enemy()) then
+ if (npc:clsid() == clsid.bloodsucker_s) then
+ npc:release_stand_sleep_animation()
+ end
+ return
+ end
+
+ xr_logic.mob_capture(npc,true)
+
+ local t = time_global()
+ if (dt.keep_state_until and t < dt.keep_state_until) then
+ return
+ end
+ dt.keep_state_until = t + 1000
+
+ --local squad = get_object_squad(npc)
+ --printf("GhenTuong: mutant_path current_action = %s | assigned_target_id = %s",squad.current_action,squad.assigned_target_id)
+
+ if (npc:level_vertex_id() ~= dt.level_vertex_id) then
+ local state = xr_logic.pick_section_from_condlist(db.actor,npc,dt.move_animation)
+ local new_state = (state and mutant_state_move[state]) or mutant_state_move["walk"]
+ action(npc,move(new_state,dt.level_vertex_id,dt.position),cond(cond.move_end))
+
+ if (npc:clsid() == clsid.bloodsucker_s) then
+ npc:release_stand_sleep_animation()
+ end
+ --printf("GhenTuong: mutant_path %s %s",npc:name(),dt.position:distance_to_sqr(npc:position()))
+ return
+ end
+
+ if (dt.look_position) then
+ local state = xr_logic.pick_section_from_condlist(db.actor,npc,dt.wait_animation)
+ if (state == "bloodsucker_sleep") then
+ local rot_y = vector_angle_diff(npc:direction(),dt.direction)
+ if (rot_y and rot_y < 10) then
+ if not (dt.force_stand_sleep_animation_index) then
+ dt.force_stand_sleep_animation_index = math.random(0,1)
+ end
+ npc:force_stand_sleep_animation(dt.force_stand_sleep_animation_index)
+ return
+ end
+ action(npc,anim(mutant_state_wait["stand"],0),look(look.point,dt.look_position),cond(cond.look_end))
+ return
+ end
+
+ if (npc:clsid() == clsid.bloodsucker_s) then
+ npc:release_stand_sleep_animation()
+ end
+ local new_state = (state and mutant_state_wait[state]) or mutant_state_wait["stand"]
+ action(npc,anim(new_state,0),look(look.point,dt.look_position),cond(cond.look_end))
+ end
+end
+
+function mutant_load_path(npc)
+ local st = npc and db.storage[npc:id()]
+ local str = st and st.beh and st.ini and st.active_section and st.ini:r_string_ex(st.active_section,"pt1")
+ if not (str) then
+ return {}
+ end
+
+ local dt = {}
+ dt.active_section = tostring(st.active_section)
+ dt.custom_logic = "mutant_path"
+
+ dt.move_animation = st.ini:r_string_to_condlist(st.active_section,"move_animation","walk")
+ dt.wait_animation = st.ini:r_string_to_condlist(st.active_section,"wait_animation","stand")
+
+ for s in string.gmatch(str,"smart:(%S+)") do
+ local smart = SIMBOARD.smarts_by_names[s]
+ dt.position = smart and vector():set(smart.position)
+ dt.level_vertex_id = smart and tonumber(smart.m_level_vertex_id)
+ end
+
+ for s in string.gmatch(str,"sound:(%S+)") do
+ dt.sound = tostring(s)
+ end
+
+ for s in string.gmatch(str,"pos:(%A+)") do
+ local p = str_explode(s,",")
+ if (tonumber(p[1]) and tonumber(p[2]) and tonumber(p[3])) then
+ dt.level_vertex_id = level.vertex_id(vector():set(tonumber(p[1]),tonumber(p[2])+0.5,tonumber(p[3])))
+ dt.position = dt.level_vertex_id and vector():set(level.vertex_position(dt.level_vertex_id))
+ end
+ end
+
+ for s in string.gmatch(str,"dir:(%A+)") do
+ local p = str_explode(s,",")
+ if (tonumber(p[1]) and tonumber(p[2]) and tonumber(p[3])) then
+ dt.direction = vector():set(tonumber(p[1]),tonumber(p[2]),tonumber(p[3])):normalize()
+ elseif (tonumber(p[1])) then
+ dt.direction = vector_rotate_y(vector():set(0,0,1),tonumber(p[1])):normalize()
+ end
+ local pos = vector():set(dt.position)
+ local dir = vector():set(dt.direction)
+ dt.look_position = pos and dir and vector():set(pos.x + 10*dir.x, pos.y, pos.z + 10*dir.z)
+ end
+
+ if not (dt.position) then
+ printf("GhenTuong: %s [%s] no dt.position",st.ini_filename,st.active_section)
+ end
+ if not (dt.level_vertex_id) then
+ printf("GhenTuong: %s [%s] no dt.level_vertex_id",st.ini_filename,st.active_section)
+ end
+ if not (dt.look_position) then
+ printf("GhenTuong: %s [%s] no dt.look_position",st.ini_filename,st.active_section)
+ end
+ --[[
+ printf("GhenTuong: mutant_load_path %s ", dt.level_vertex_id)
+ printf("GhenTuong: mutant_load_path %s ", dt.position)
+ printf("GhenTuong: mutant_load_path %s ", dt.look_position)
+ --]]
+ st.beh.desired_target = dt
+ return st.beh.desired_target
+end
+
+function vector_angle_diff(dir1,dir2)
+ if (dir1 and dir2) then
+ local v1 = -math.deg(math.atan2(dir1.x,dir1.z))
+ local v2 = -math.deg(math.atan2(dir2.x,dir2.z))
+ return math.abs(math.min(math.abs(v1-v2),360-math.abs(v1)-math.abs(v2)))
+ end
+end
+
+--[[----------------------------------------------------------------------------------------------------
+ Main
+------------------------------------------------------------------------------------------------------]]
+local storage_set_position = {}
+local storage_logic = {}
+local storage_squad = {}
+
+function squad_on_update(squad)
+ if not (squad and ini_sys:line_exist(squad:section_name(),"logic")) then
+ return
+ end
+ if (axr_companions.companion_squads and axr_companions.companion_squads[squad.id]) then
+ return
+ end
+
+ local ini_name = ini_sys:r_string_ex(squad:section_name(),"logic")
+
+ if not (storage_squad[ini_name] or load_storage_squad(ini_name)) then
+ return
+ end
+ squad_target_update(squad,storage_squad[ini_name])
+
+ if not (storage_logic[ini_name] or load_storage_logic(ini_name)) then
+ return
+ end
+ --printf("GhenTuong: squad_on_update %s",squad:section_name())
+ for k in squad:squad_members() do
+ local st = k and db.storage[k.id]
+ if (st) then
+ local npc = st.object or level.object_by_id(k.id)
+ if (npc and npc:alive()) then
+ npc_logic_update(npc,st,squad,ini_name,storage_logic[ini_name])
+ end
+ end
+ end
+end
+
+function load_storage_squad(ini_name)
+ local ini = ini_file(ini_name)
+ if not (ini) then
+ printf("GhenTuong: xr_logic_ex | load_storage_squad file %s doesn't exist.",ini_name)
+ return false
+ end
+
+ local tbl = {}
+
+ if (ini:section_exist("section@squad")) then
+ local n = ini:line_count("section@squad")
+ local t = 0
+ for k=0,n-1 do
+ local r,i,v = ini:r_line("section@squad",k)
+ if (i and v) then
+ if (string.find(i,"target")) then
+ t = t + 1
+ tbl[t] = {}
+ tbl[t].condlist = ini:r_string_to_condlist("section@squad",i)
+ tbl[t].teleport = string.find(i,"@") and true or false
+ --printf("GhenTuong: xr_logic_ex load_storage_squad | %s = %s",i,v)
+ end
+ end
+ end
+ tbl.target_num = t
+
+ if (ini:line_exist("section@squad","condlist")) then
+ tbl.condlist = ini:r_string_to_condlist("section@squad","condlist")
+ end
+ end
+
+ storage_squad[ini_name] = tbl
+ return true
+end
+
+function load_storage_logic(ini_name)
+ local ini = ini_file(ini_name)
+ if not (ini) then
+ printf("GhenTuong: xr_logic_ex | load_storage_logic file %s doesn't exist.",ini_name)
+ return false
+ end
+
+ local tbl = {}
+
+
+ if (ini:section_exist("section@logic")) then
+ local n = ini:line_count("section@logic")
+ for k=0,n-1 do
+ local result,i,v = ini:r_line("section@logic",k)
+ if (i and (i ~= "") and (i ~= "nil") and ini:section_exist(i) and string.find(i,"logic")) then
+ tbl[i] = {}
+ tbl[i].prior = ini:r_float_ex(i,"prior") or 0
+ tbl[i].logic = ini:r_string_to_condlist(i,"suitable","true")
+ --printf("GhenTuong: xr_logic_ex load_storage_logic | section@logic %s ",i)
+ end
+ end
+ end
+
+ storage_logic[ini_name] = tbl
+ return true
+end
+
+function squad_target_update(squad,tbl)
+ if (tbl.condlist) then
+ xr_logic.pick_section_from_condlist(db.actor,squad,tbl.condlist)
+ end
+
+ local new_target = nil
+ local offline_teleport = false
+
+ if (tbl.target_num) then
+ for i=1,tbl.target_num,1 do
+ local k = tbl[i]
+ local target = k and k.condlist and xr_logic.pick_section_from_condlist(db.actor,squad,k.condlist)
+ if (target and (target ~= "") and (target ~= "nil")) then
+ new_target = target
+ offline_teleport = k.teleport and true
+ break
+ end
+ end
+ end
+
+ if (new_target) then
+ local obj = nil
+
+ if (false) then
+ elseif (new_target == "self") then
+ if (squad.scripted_target ~= squad.id) then
+ squad.scripted_target = tonumber(squad.id)
+ end
+ obj = squad
+ elseif (SIMBOARD.smarts_by_names[new_target]) then
+ if (squad.scripted_target ~= new_target) then
+ squad.scripted_target = new_target
+ end
+ obj = SIMBOARD.smarts_by_names[new_target]
+ else
+ local se_obj = get_story_se_object(new_target)
+ if (se_obj and se_obj.id) then
+ if (squad.scripted_target ~= se_obj.id) then
+ squad.scripted_target = tonumber(se_obj.id)
+ end
+ obj = se_obj
+ end
+ end
+
+ if (offline_teleport and (squad.online ~= true)) then
+ if (obj and not simulation_objects.is_on_the_same_level(squad,obj)) then
+ local pos = obj.position
+ local vid = obj.m_level_vertex_id
+ local gid = obj.m_game_vertex_id
+ if (pos and vid and gid) then
+ TeleportSquad(squad,pos,vid,gid)
+ printf("GhenTuong: squad_target_update teleport [%s] %s %s",squad:name(),new_target,squad.scripted_target)
+ end
+ end
+ end
+
+ --printf("GhenTuong: xr_logic_ex | squad_target_update [%s] %s %s",squad:name(),new_target,squad.scripted_target)
+ end
+end
+
+function npc_logic_update(npc,st,squad,ini_name,tbl)
+ if (npc:has_info("npcx_is_companion")) then
+ --printf("GhenTuong: npc_logic_update squad isn't companion but npc is? [%s]",npc:name())
+ return
+ end
+
+ local npc_id = npc:id()
+
+ -- Keep using current logic if it is still valid.
+ local using = st.section_logic and tbl[st.section_logic]
+ local check = using and (xr_logic.pick_section_from_condlist(db.actor,npc,using.logic) == "true")
+
+ -- Choose new logic
+ local new_logic = check and tostring(st.section_logic) or ""
+ local new_prior = check and tonumber(using.prior) or -1
+
+ -- Case of save/load
+ if not (using) then
+ for i,v in pairs(tbl) do
+ if (v.own_id == npc_id) then
+ check = xr_logic.pick_section_from_condlist(db.actor,npc,v.logic) == "true"
+ new_logic = check and tostring(i) or ""
+ new_prior = check and tonumber(v.prior) or -1
+ --printf("GhenTuong: xr_logic_ex | re-use [%s] %s %s",npc:name(),new_logic,new_prior)
+ break
+ end
+ end
+ end
+
+ for i,v in pairs(tbl) do
+ if ((v.prior > new_prior) and (xr_logic.pick_section_from_condlist(db.actor,npc,v.logic) == "true")) then
+ local k = v.own_id and (v.own_id ~= npc_id) and db.storage[v.own_id]
+ if not (k and k.object and k.object:alive() and k.section_logic and (k.section_logic == i)) then
+ new_logic = tostring(i)
+ new_prior = tonumber(v.prior)
+ end
+ end
+ end
+
+ --printf("GhenTuong: xr_logic_ex | npc_logic_update [%s] %s %s",npc:name(),st.section_logic,st.active_section)
+ if (new_logic and (new_logic ~= st.section_logic) and (new_logic ~= "") and (new_logic ~= "nil") and tbl[new_logic]) then
+ printf("GhenTuong: xr_logic_ex | old logic [%s] %s %s",npc:name(),st.section_logic,st.active_section)
+ tbl[new_logic].own_id = npc_id
+ npc_switch_new_logic(npc,ini_name,new_logic)
+ end
+end
+
+function npc_switch_new_logic(npc,ini_name,new_logic)
+ local ini = ini_file(ini_name)
+ local cls = npc.clsid and npc:clsid()
+ local sty = (IsStalker(nil,cls) and 0) or (IsMonster(nil,cls) and 1) or nil
+ --Active scheme section
+ xr_logic.configure_schemes(npc,ini,ini_name,sty,new_logic,"")
+ local new_section = xr_logic.determine_section_to_activate(npc,ini,new_logic,db.actor)
+ xr_logic.activate_by_section(npc,ini,new_section,"",false)
+
+ printf("GhenTuong: xr_logic_ex | new logic [%s] %s %s %s",npc:name(),ini_name,new_logic,new_section)
+end
+
+function npc_on_net(npc,se_obj)
+ if not (npc:alive()) then
+ return
+ end
+
+ local squad = get_object_squad(npc)
+
+ if (squad and axr_companions.companion_squads and axr_companions.companion_squads[squad.id]) then
+ return
+ end
+
+ if (npc:has_info("npcx_is_companion")) then
+ --printf("GhenTuong: npc_on_net squad isn't companion but npc is? [%s]",npc:name())
+ return
+ end
+
+ if (squad and ini_sys:line_exist(squad:section_name(),"logic")) then
+ local ini_name = ini_sys:r_string_ex(squad:section_name(),"logic")
+
+ if not (storage_squad[ini_name] or load_storage_squad(ini_name)) then
+ return
+ end
+ squad_target_update(squad,storage_squad[ini_name])
+
+ if not (storage_logic[ini_name] or load_storage_logic(ini_name)) then
+ return
+ end
+
+ --Force squad to update target so don't fuck up my scheme setting for npc.
+ local script_target_id = squad:get_script_target()
+ if (script_target_id) then
+ squad:specific_update(script_target_id)
+ else
+ squad:generic_update()
+ end
+
+ local st = db.storage[npc:id()]
+ if (st) then
+ npc_logic_update(npc,st,squad,ini_name,storage_logic[ini_name])
+ end
+ end
+ -- For smart exclusive logic too. Not only my custom squad logic.
+ npc_set_position(npc,se_obj,squad)
+end
+
+function npc_set_position(npc,se_obj,squad)
+ local id = se_obj.id
+ local st = db.storage[id]
+ local ini = st.ini
+ local section_logic = st.section_logic
+ local active_section = st.active_section
+
+ if not (ini and section_logic and active_section and ini:line_exist(section_logic,"net_spawn")) then
+ return
+ end
+
+ if (db.spawned_vertex_by_id[id]) then
+ db.spawned_vertex_by_id[id] = nil
+ end
+ if (db.offline_objects[id] and db.offline_objects[id].level_vertex_id) then
+ db.offline_objects[id].level_vertex_id = nil
+ end
+
+ local target = xr_logic.pick_section_from_condlist(db.actor,npc,ini:r_string_to_condlist(section_logic,"net_spawn","nil"))
+ if not (target and (target ~= "") and (target ~= "nil")) then
+ return
+ end
+
+ local pos = nil
+
+ if (false) then
+ elseif (target == "actor") then
+ pos = db.actor:position()
+ elseif (SIMBOARD.smarts_by_names[target]) then
+ pos = vector():set(SIMBOARD.smarts_by_names[target].position)
+ elseif (ini:line_exist(active_section,target)) then
+ local str = ini:r_string(active_section,target)
+ if (string.find(str,"pos:")) then
+ for s in string.gmatch(str,"pos:(%A+)") do
+ local p = str_explode(s,",")
+ if (tonumber(p[1]) and tonumber(p[1]) and tonumber(p[1])) then
+ pos = vector():set(tonumber(p[1]),tonumber(p[2]),tonumber(p[3]))
+ end
+ end
+ end
+ end
+
+ if (storage_set_position[npc:name()]) then
+ --printf("GhenTuong: npc_set_position skip [%s]",npc:name())
+ return
+ end
+ storage_set_position[npc:name()] = true
+
+ npc:set_npc_position(pos)
+ --printf("GhenTuong: npc_set_position [%s] %s",npc:name(),pos)
+end
+
+function ignore_smart_job(npc)
+ local story_id = npc and (type(npc.id) == "number") and get_story_object_id(npc.id)
+ if (story_id and (string.find(story_id,"esc_2_12_stalker_trader") or string.find(story_id,"red_forester_tech"))) then
+ return false
+ end
+
+ local squad = npc and get_object_squad(npc)
+ if (squad and ini_sys:line_exist(squad:section_name(),"logic")) then
+ return true
+ end
+
+ return false
+end
+
+function monster_on_update(npc,st)
+ if not (st and st.ini and st.active_section and st.ini:line_exist(st.active_section,"target")) then
+ return
+ end
+ if not (db.actor and npc and npc:alive()) then
+ return
+ end
+ if not (st.beh and st.beh.target and (st.beh.active_section == st.active_section)) then
+ st.beh = {}
+ st.beh.active_section = tostring(st.active_section)
+ st.beh.target = st.ini:r_string_to_condlist(st.active_section,"target","nil")
+ end
+ xr_logic.pick_section_from_condlist(db.actor,npc,st.beh.target)
+end
+
+function npc_on_before_hit(npc,shit,bone_id,flags)
+ local st = npc and db.storage[npc:id()]
+ if not (st and st.ini and st.active_section and st.ini:line_exist(st.active_section,"before_hit")) then
+ return
+ end
+ local str = st.ini:r_string_ex(st.active_section,"before_hit")
+ if (str) then
+ if string.find(str,"invulnerable") then
+ if (tonumber(npc.health) < 1) then
+ npc:set_health_ex(1)
+ end
+ flags.ret_value = false
+ return
+ end
+
+ if string.find(str,"@") then
+ local p = str_explode(str,"@")
+ if (p and #p == 2) then
+ local v = _G[tostring(p[1])][tostring(p[2])](npc,shit,bone_id,flags)
+
+ if (tostring(v) and string.find(tostring(v),"invulnerable")) then
+ if (tonumber(npc.health) < 1) then
+ npc:set_health_ex(1)
+ end
+ flags.ret_value = false
+ end
+ end
+ end
+ end
+end
+
+function npc_on_eval_danger(npc,flags)
+ local st = npc and db.storage[npc:id()]
+ if not (st and (st.active_scheme == "beh")) then
+ return
+ end
+
+ local con = st.ini and st.active_section and st.ini:r_string_to_condlist(st.active_section,"danger_ignore")
+ if (con) then
+ if (xr_logic.pick_section_from_condlist(db.actor,npc,con) == "true") then
+ flags.ret_value = false
+ return
+ end
+ end
+end
+
+local storage_smart = {}
+
+function smart_terrain_on_update(smart)
+ if not (smart and smart.ini and smart.ini:section_exist("on_changing_level")) then
+ return
+ end
+
+ if (storage_smart[smart:name()]) then
+ return
+ end
+ storage_smart[smart:name()] = true
+
+ local n = smart.ini:line_count("on_changing_level")
+ for k=0,n-1 do
+ local r,i,v = smart.ini:r_line("on_changing_level",k)
+ if (i and v and string.find(i,"on_info")) then
+ --printf("smart_terrain_on_update %s",smart:name())
+ local con = smart.ini:r_string_to_condlist("on_changing_level",i,"nil")
+ xr_logic.pick_section_from_condlist(db.actor,smart,con)
+ end
+ end
+end
+
+function save_state(m_data)
+ m_data.xr_logic_ex_storage_set_position = storage_set_position
+ m_data.xr_logic_ex_storage_logic = storage_logic
+ m_data.xr_logic_ex_storage_smart = storage_smart
+end
+
+function load_state(m_data)
+ storage_set_position = m_data.xr_logic_ex_storage_set_position or {}
+ storage_logic = m_data.xr_logic_ex_storage_logic or {}
+ storage_smart = m_data.xr_logic_ex_storage_smart or {}
+end
+
+function on_level_changing()
+ storage_set_position = {}
+ storage_logic = {}
+ storage_smart = {}
+end
+
+--[[----------------------------------------------------------------------------------------------------
+ Registers
+------------------------------------------------------------------------------------------------------]]
+function on_game_start()
+ RegisterScriptCallback("save_state",save_state)
+ RegisterScriptCallback("load_state",load_state)
+ RegisterScriptCallback("squad_on_update",squad_on_update)
+ RegisterScriptCallback("on_level_changing",on_level_changing)
+ RegisterScriptCallback("monster_on_update",monster_on_update)
+ RegisterScriptCallback("npc_on_net_spawn",npc_on_net)
+ RegisterScriptCallback("monster_on_net_spawn",npc_on_net)
+ RegisterScriptCallback("npc_on_before_hit",npc_on_before_hit)
+ RegisterScriptCallback("monster_on_before_hit",npc_on_before_hit)
+
+ RegisterScriptCallback("npc_on_eval_danger",npc_on_eval_danger)
+
+ RegisterScriptCallback("smart_terrain_on_update",smart_terrain_on_update)
+end
+--[[----------------------------------------------------------------------------------------------------
+ States
+------------------------------------------------------------------------------------------------------]]
+function add_states()
+ return {
+ animpoint_reach_ex = { weapon = "strapped",
+ movement = nil,
+ mental = nil,
+ bodystate = nil,
+ animstate = nil,
+ animation = nil,
+ direction = CSightParams.eSightTypeAnimationDirection
+ }
+ }
+end
+
+copy_table(state_lib.states, add_states())
+
+--[[----------------------------------------------------------------------------------------------------
+ Overrides
+------------------------------------------------------------------------------------------------------]]
+function xr_combat_ignore.ignore_enemy_by_overrides(obj,enemy,no_check_job)
+ if not (enemy) then
+ return true
+ end
+
+ if (IsStalker(obj)) then
+ if (enemy:section() == "mar_smart_terrain_doc_dog" or enemy:section() == "mar_smart_terrain_base_dog_doctor") then
+ return true
+ end
+ end
+
+ local id = obj:id()
+ local ene_id = enemy:id()
+
+ local st = db.storage[id] and db.storage[id].overrides
+
+ -- This skips enemy_ignore of obj when enemy doesn't have overrides, considered a bug.
+ -- Ex: enemy that doesn't have logic at all, enemy squad on moving to a smart terrain.
+ --if not (st) then
+ -- return false
+ --end
+
+ -- combat_ignore_cond from custom data logic
+ local ignore = st and st.combat_ignore and xr_logic.pick_section_from_condlist(enemy, obj, st.combat_ignore.condlist)
+ if (ignore == "true") then
+ --obj:enable_memory_object(enemy,false)
+ return true
+ end
+
+ -- enemy_ignore_cond override from custom data logic
+ -- if this is true then npc will IGNORE combat with this specific enemy
+ local ene_st = db.storage[ene_id] and db.storage[ene_id].overrides
+ if (ene_st) then
+ ignore = ene_st.enemy_ignore and xr_logic.pick_section_from_condlist(enemy, obj, ene_st.enemy_ignore.condlist)
+ if (ignore == "true") then
+ --obj:enable_memory_object(enemy,false)
+ return true
+ end
+ end
+
+ -- Ignore enemies because of no_combat_job
+ if (no_check_job ~= true) and (st and st.no_combat_job and xr_logic.pick_section_from_condlist(enemy, obj, st.no_combat_job.condlist) == "true") then
+ return true
+ end
+
+ return false
+end
+
+function xr_combat_camper.action_shoot:initialize()
+ action_base.initialize(self)
+ self.st.camper_combat_action = true
+ xr_sound.set_sound_play(self.object:id(),"fight_enemy")
+end
+
+function xr_combat_camper.action_shoot:execute()
+ action_base.execute(self)
+ local new_state = "hide_fire"
+ local st = db.storage[self.object:id()]
+ if (st and st.ini and st.active_section and st.ini:line_exist(st.active_section,"combat_camper_state_fire")) then
+ new_state = st.ini:r_string_ex(st.active_section,"combat_camper_state_fire")
+ end
+ state_mgr.set_state(self.object,new_state,nil,nil,{look_object = self.object:best_enemy()},{fast_set = true})
+ xr_sound.set_sound_play(self.object:id(),"fight")
+end
+
+function xr_combat_camper.action_look_around:reset()
+ self.forget_time = device():time_global() + 30000
+ self.change_dir_time = device():time_global() + 15000
+
+ -- если врага мы ещё не видели вообще, то всё равно повернуться к нему
+ if not self.st.last_seen_pos and self.object:best_enemy() ~= nil then
+ self.st.last_seen_pos = self.object:best_enemy():position()
+ end
+
+ local new_state = "hide"
+ local st = db.storage[self.object:id()]
+ if (st and st.ini and st.active_section and st.ini:line_exist(st.active_section,"combat_camper_state_look")) then
+ new_state = st.ini:r_string_ex(st.active_section,"combat_camper_state_look")
+ end
+ state_mgr.set_state(self.object,new_state,nil,nil,{look_position = self.st.last_seen_pos})
+end
+
+function xr_combat_camper.action_look_around:execute()
+ action_base.execute(self)
+
+ if (self.forget_time < device():time_global()) then
+-- self.object:enable_memory_object( self.object:best_enemy(), false )
+ self.st.last_seen_pos = nil
+ return
+ end
+
+ if (self.change_dir_time < device():time_global()) then
+ self.change_dir_time = device():time_global() + math.random(2000,4000)
+
+ local ang = math.random(0,120) - 60
+ local dir = self.st.last_seen_pos and vector():set(self.st.last_seen_pos):sub(self.object:position()):normalize()
+ dir = dir and vector_rotate_y(dir,ang):normalize()
+ dir = dir and vector():set(dir.x * 10, dir.y * 10, dir.z * 10)
+
+ local new_state = "hide"
+ local st = db.storage[self.object:id()]
+ if (st and st.ini and st.active_section and st.ini:line_exist(st.active_section,"combat_camper_state_look")) then
+ new_state = st.ini:r_string_ex(st.active_section,"combat_camper_state_look")
+ end
+ state_mgr.set_state(self.object,new_state,nil,nil,{look_position = dir and self.object:position():add(dir)},{fast_set = true})
+ end
+end
\ No newline at end of file
diff --git a/mods/[DEV] Brotherhood/meta.ini b/mods/[DEV] Brotherhood/meta.ini
new file mode 100644
index 00000000..563c6fc9
--- /dev/null
+++ b/mods/[DEV] Brotherhood/meta.ini
@@ -0,0 +1,28 @@
+[General]
+gameName=stalkeranomaly
+modid=0
+version=d2024.3.19.0
+newestVersion=
+category="-1,"
+nexusFileStatus=1
+installationFile=Brotherhood_v_0.5.7.6.2.zip
+repository=Nexus
+ignoredVersion=
+comments=
+notes=
+nexusDescription=
+url=
+hasCustomURL=true
+lastNexusQuery=
+lastNexusUpdate=
+nexusLastModified=2024-03-19T12:52:52Z
+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/[DEV] Configuration Files/gamedata/configs/axr_options.ltx b/mods/[DEV] Configuration Files/gamedata/configs/axr_options.ltx
new file mode 100644
index 00000000..d9d454d2
--- /dev/null
+++ b/mods/[DEV] Configuration Files/gamedata/configs/axr_options.ltx
@@ -0,0 +1,71 @@
+[mcm]
+ mcm/key_wrapper/kb_grp_common/cam_1_key = -1
+ mcm/key_wrapper/kb_grp_common/cam_2_key = -1
+ mcm/key_wrapper/kb_grp_common/cam_3_key = -1
+ mcm/key_wrapper/kb_grp_common/custom17_key = -1
+ mcm/key_wrapper/kb_grp_common/custom6_key = -1
+ mcm/key_wrapper/kb_grp_common/pause_key = -1
+ mcm/key_wrapper/kb_grp_common/quick_load_key = -1
+ mcm/key_wrapper/kb_grp_common/quick_save_key = -1
+ mcm/key_wrapper/kb_grp_common/screenshot_key = -1
+ mcm/key_wrapper/kb_grp_companions/custom18_key = -1
+ mcm/key_wrapper/kb_grp_companions/custom1_key = -1
+ mcm/key_wrapper/kb_grp_companions/custom2_key = -1
+ mcm/key_wrapper/kb_grp_companions/custom3_key = -1
+ mcm/key_wrapper/kb_grp_companions/custom4_key = -1
+ mcm/key_wrapper/kb_grp_companions/custom5_key = -1
+ mcm/key_wrapper/kb_grp_inventory/cam_zoom_in_key = -1
+ mcm/key_wrapper/kb_grp_inventory/cam_zoom_out_key = -1
+ mcm/key_wrapper/kb_grp_inventory/custom14_key = -1
+ mcm/key_wrapper/kb_grp_inventory/drop_key = -1
+ mcm/key_wrapper/kb_grp_inventory/inventory_key = -1
+ mcm/key_wrapper/kb_grp_inventory/night_vision_key = -1
+ mcm/key_wrapper/kb_grp_inventory/quick_use_1_key = -1
+ mcm/key_wrapper/kb_grp_inventory/quick_use_2_key = -1
+ mcm/key_wrapper/kb_grp_inventory/quick_use_3_key = -1
+ mcm/key_wrapper/kb_grp_inventory/quick_use_4_key = -1
+ mcm/key_wrapper/kb_grp_inventory/show_detector_key = -1
+ mcm/key_wrapper/kb_grp_inventory/torch_key = -1
+ mcm/key_wrapper/kb_grp_movement/accel_key = 151
+ mcm/key_wrapper/kb_grp_movement/crouch_key = 46
+ mcm/key_wrapper/kb_grp_movement/llookout_key = 16
+ mcm/key_wrapper/kb_grp_movement/rlookout_key = 18
+ mcm/key_wrapper/kb_grp_movement/sprint_toggle_key = 42
+ mcm/key_wrapper/kb_grp_pda/active_jobs_key = -1
+ mcm/key_wrapper/kb_grp_pda/custom10_key = -1
+ mcm/key_wrapper/kb_grp_pda/custom11_key = -1
+ mcm/key_wrapper/kb_grp_pda/custom12_key = -1
+ mcm/key_wrapper/kb_grp_pda/custom16_key = -1
+ mcm/key_wrapper/kb_grp_pda/custom20_key = -1
+ mcm/key_wrapper/kb_grp_pda/custom7_key = -1
+ mcm/key_wrapper/kb_grp_pda/custom8_key = -1
+ mcm/key_wrapper/kb_grp_pda/custom9_key = -1
+ mcm/key_wrapper/kb_grp_pda/scores_key = -1
+ mcm/key_wrapper/kb_grp_weapons/custom13_key = -1
+ mcm/key_wrapper/kb_grp_weapons/custom15_key = -1
+ mcm/key_wrapper/kb_grp_weapons/custom19_key = -1
+ mcm/key_wrapper/kb_grp_weapons/next_slot_key = -1
+ mcm/key_wrapper/kb_grp_weapons/prev_slot_key = -1
+ mcm/key_wrapper/kb_grp_weapons/safemode_key = -1
+ mcm/key_wrapper/kb_grp_weapons/wpn_1_key = -1
+ mcm/key_wrapper/kb_grp_weapons/wpn_2_key = -1
+ mcm/key_wrapper/kb_grp_weapons/wpn_3_key = -1
+ mcm/key_wrapper/kb_grp_weapons/wpn_4_key = -1
+ mcm/key_wrapper/kb_grp_weapons/wpn_5_key = -1
+ mcm/key_wrapper/kb_grp_weapons/wpn_6_key = -1
+ mcm/key_wrapper/kb_grp_weapons/wpn_firemode_next_key = -1
+ mcm/key_wrapper/kb_grp_weapons/wpn_firemode_prev_key = -1
+ mcm/key_wrapper/kb_grp_weapons/wpn_func_key = -1
+ mcm/key_wrapper/kb_grp_weapons/wpn_next_key = -1
+ mcm/key_wrapper/kb_grp_weapons/wpn_reload_key = -1
+ mcm/mcm_log/debug_logging2 = false
+ session_id = 1
+ session_start = 1710908023000
+
+[options]
+ alife/general/excl_dist = 75
+ other/debug_hud = false
+
+[temp]
+ rspec_default = true
+
diff --git a/mods/[REQUIRED] Modpack Data/gamedata/configs/axr_options.ltx b/mods/[REQUIRED] Modpack Data/gamedata/configs/axr_options.ltx
index 625eaa77..db6249b5 100644
--- a/mods/[REQUIRED] Modpack Data/gamedata/configs/axr_options.ltx
+++ b/mods/[REQUIRED] Modpack Data/gamedata/configs/axr_options.ltx
@@ -602,18 +602,18 @@
haru_quick_action_wheel_mcm/misc/slowmo = true
haru_quick_action_wheel_mcm/misc/slowmo_factor = 0.5
haru_quick_action_wheel_mcm/tabs/ammo_enabled = true
- haru_quick_action_wheel_mcm/tabs/ammo_tab = 5
+ haru_quick_action_wheel_mcm/tabs/ammo_tab = 1
haru_quick_action_wheel_mcm/tabs/attachments_enabled = true
- haru_quick_action_wheel_mcm/tabs/attachments_tab = 3
+ haru_quick_action_wheel_mcm/tabs/attachments_tab = 5
haru_quick_action_wheel_mcm/tabs/devices_enabled = true
- haru_quick_action_wheel_mcm/tabs/devices_tab = 2
+ haru_quick_action_wheel_mcm/tabs/devices_tab = 3
haru_quick_action_wheel_mcm/tabs/food_enabled = true
haru_quick_action_wheel_mcm/tabs/food_tab = 4
haru_quick_action_wheel_mcm/tabs/grenades_enabled = true
haru_quick_action_wheel_mcm/tabs/grenades_tab = 6
haru_quick_action_wheel_mcm/tabs/meds_enabled = true
- haru_quick_action_wheel_mcm/tabs/meds_tab = 3
- haru_quick_action_wheel_mcm/tabs/slots_enabled = true
+ haru_quick_action_wheel_mcm/tabs/meds_tab = 2
+ haru_quick_action_wheel_mcm/tabs/slots_enabled = false
haru_quick_action_wheel_mcm/tabs/slots_tab = 8
haru_quick_action_wheel_mcm/tabs/tab_count = 6
hg_companion/move/distance = 1.4
@@ -1224,8 +1224,8 @@
scop/scop_fov = 0.4
scop/scope_fov = 0.4
selfkill/keybind_mcm = 14
- session_id = 294
- session_start = 1710667860000
+ session_id = 332
+ session_start = 1710911434000
sleep_timelapse/alifeOptimize = true
sleep_timelapse/alifeSleepRadius = 75
sleep_timelapse/camUpdateTotalTime = 2500
@@ -1258,12 +1258,12 @@
ssfx_module/inter_grass/shooting_str_mcm = 0.3
ssfx_module/inter_grass/vertical_str_mcm = 1
ssfx_module/shadows/lod_max_mcm = 1
- ssfx_module/shadows/lod_min_mcm = 1
- ssfx_module/shadows/lod_quality_mcm = 1
+ ssfx_module/shadows/lod_min_mcm = 0
+ ssfx_module/shadows/lod_quality_mcm = 1.4
ssfx_module/shadows/volumetric_force_mcm = false
- ssfx_module/shadows/volumetric_int_mcm = 0.4
+ ssfx_module/shadows/volumetric_int_mcm = 1.2
ssfx_module/shadows/volumetric_quality_mcm = 3
- ssfx_module/shadows/volumetric_resolution_mcm = 20
+ ssfx_module/shadows/volumetric_resolution_mcm = 40
ssfx_module/shw_cascades/grass_shw_distance_mcm = 35
ssfx_module/shw_cascades/grass_shw_nondir_maxdistance_mcm = 30
ssfx_module/shw_cascades/grass_shw_quality_mcm = 1
@@ -1298,8 +1298,8 @@
ssfx_module/ssfx_rain_module/ssfx_rain_main/width_mcm = 0.05
ssfx_module/ssfx_wetness/ssfx_gloss/auto_gloss_max_mcm = 1
ssfx_module/ssfx_wetness/ssfx_gloss/auto_gloss_mcm = true
- ssfx_module/ssfx_wetness/ssfx_gloss/max_gloss_mcm = 0.92
- ssfx_module/ssfx_wetness/ssfx_gloss/min_gloss_mcm = 0.6
+ ssfx_module/ssfx_wetness/ssfx_gloss/max_gloss_mcm = 0.64
+ ssfx_module/ssfx_wetness/ssfx_gloss/min_gloss_mcm = 0.2
ssfx_module/ssfx_wetness/ssfx_gloss/specular_color_mcm = 0.6
ssfx_module/ssfx_wetness/ssfx_gloss/specular_int_mcm = 0.5
ssfx_module/ssfx_wetness/ssfx_wet_surf/buildup_speed_mcm = 1.4
@@ -1327,7 +1327,7 @@
ssfx_module/wind/grass_speed_mcm = 9.5
ssfx_module/wind/grass_turbulence_mcm = 1.4
ssfx_module/wind/grass_wave_mcm = 0.4
- ssfx_module/wind/min_speed_mcm = 0.1
+ ssfx_module/wind/min_speed_mcm = 0.15
ssfx_module/wind/trees_bend_mcm = 0.5
ssfx_module/wind/trees_speed_mcm = 11
ssfx_module/wind/trees_trunk_mcm = 0.15
@@ -2629,7 +2629,7 @@
alife/warfare/zombied/target_stronger_priority = 1
alife/warfare/zombied/target_weaker_priority = 0
alife/warfare/zombied/territory_priority = -5
- control/general/aim_toggle = true
+ control/general/aim_toggle = false
control/general/crouch_toggle = true
control/general/disassembly_warning = true
control/general/mouse_sens = 0.071
diff --git a/mods/[REQUIRED] Modpack Data/gamedata/configs/items/settings/mod_new_game_loadouts_bhsro.ltx b/mods/[REQUIRED] Modpack Data/gamedata/configs/items/settings/mod_new_game_loadouts_bhsro.ltx
new file mode 100644
index 00000000..d51d2607
--- /dev/null
+++ b/mods/[REQUIRED] Modpack Data/gamedata/configs/items/settings/mod_new_game_loadouts_bhsro.ltx
@@ -0,0 +1,94 @@
+![stalker_loadout]
+akvatab = true, 1, 2
+splint = true, 3, 2
+bandage = true, 3, 2
+analgin = true, 3, 4
+surginst = true, 3, 2
+
+![bandit_loadout]
+akvatab = true, 1, 2
+splint = true, 3, 2
+bandage = true, 3, 2
+analgin = true, 3, 4
+surginst = true, 3, 2
+
+![ecolog_loadout]
+akvatab = true, 1, 2
+splint = true, 3, 2
+bandage = true, 3, 2
+analgin = true, 3, 4
+surginst = true, 3, 2
+
+![dolg_loadout]
+akvatab = true, 1, 2
+splint = true, 3, 2
+bandage = true, 3, 2
+analgin = true, 3, 4
+surginst = true, 3, 2
+
+![freedom_loadout]
+akvatab = true, 1, 2
+splint = true, 3, 2
+bandage = true, 3, 2
+analgin = true, 3, 4
+surginst = true, 3, 2
+
+![killer_loadout]
+akvatab = true, 1, 2
+splint = true, 3, 2
+bandage = true, 3, 2
+analgin = true, 3, 4
+surginst = true, 3, 2
+
+![army_loadout]
+akvatab = true, 1, 35
+splint = true, 3, 10
+bandage = true, 3, 10
+analgin = true, 3, 10
+bandage_army = true, 3, 4
+surginst = true, 3, 10
+
+![monolith_loadout]
+akvatab = true, 1, 2
+splint = true, 3, 2
+bandage = true, 3, 2
+analgin = true, 3, 4
+surginst = true, 3, 2
+bandage_army = true, 3, 4
+cms = true, 1, 6
+
+![csky_loadout]
+akvatab = true, 1, 2
+splint = true, 3, 2
+bandage = true, 3, 2
+analgin = true, 3, 4
+surginst = true, 3, 2
+
+![renegade_loadout]
+akvatab = true, 1, 2
+splint = true, 3, 2
+bandage = true, 3, 2
+analgin = true, 3, 4
+surginst = true, 3, 2
+
+![greh_loadout]
+akvatab = true, 1, 35
+splint = true, 3, 10
+analgin = true, 3, 10
+surginst = true, 3, 10
+
+![isg_loadout]
+akvatab = true, 1, 35
+splint = true, 3, 10
+bandage = true, 3, 10
+analgin = true, 3, 10
+surginst = true, 3, 10
+bandage_army = true, 3, 4
+cms = true, 1, 6
+
+![zombied_loadout]
+akvatab = true, 1, 2
+splint = true, 3, 2
+bandage = true, 3, 2
+analgin = true, 3, 4
+surginst = true, 3, 2
diff --git a/mods/[REQUIRED] Modpack Data/gamedata/configs/items/settings/mod_new_game_loadouts_drug_charcoal.ltx b/mods/[REQUIRED] Modpack Data/gamedata/configs/items/settings/mod_new_game_loadouts_drug_charcoal.ltx
new file mode 100644
index 00000000..125f0386
--- /dev/null
+++ b/mods/[REQUIRED] Modpack Data/gamedata/configs/items/settings/mod_new_game_loadouts_drug_charcoal.ltx
@@ -0,0 +1,38 @@
+![stalker_loadout]
+drug_charcoal = true, 1, 4
+
+![bandit_loadout]
+drug_charcoal = true, 1, 4
+
+![ecolog_loadout]
+drug_charcoal = true, 1, 4
+
+![dolg_loadout]
+drug_charcoal = true, 1, 4
+
+![freedom_loadout]
+drug_charcoal = true, 1, 4
+
+![killer_loadout]
+drug_charcoal = true, 1, 4
+
+![army_loadout]
+drug_charcoal = true, 1, 4
+
+![monolith_loadout]
+drug_charcoal = true, 1, 4
+
+![csky_loadout]
+drug_charcoal = true, 1, 4
+
+![renegade_loadout]
+drug_charcoal = true, 1, 4
+
+![greh_loadout]
+drug_charcoal = true, 1, 4
+
+![isg_loadout]
+drug_charcoal = true, 1, 4
+
+![zombied_loadout]
+drug_charcoal = true, 1, 4
diff --git a/mods/[REQUIRED] Modpack Data/gamedata/configs/items/settings/new_game_loadouts.ltx b/mods/[REQUIRED] Modpack Data/gamedata/configs/items/settings/new_game_loadouts.ltx
index 2762f52f..1b8de3a3 100644
--- a/mods/[REQUIRED] Modpack Data/gamedata/configs/items/settings/new_game_loadouts.ltx
+++ b/mods/[REQUIRED] Modpack Data/gamedata/configs/items/settings/new_game_loadouts.ltx
@@ -14,9 +14,9 @@
[points]
-total_points_eco_1 = 1200
-total_points_eco_2 = 800
-total_points_eco_3 = 600
+total_points_eco_1 = 50
+total_points_eco_2 = 30
+total_points_eco_3 = 20
[custom]
@@ -28,40 +28,40 @@ device_flashlight = false,1,0
itm_backpack = false,1,0
box_matches = false,1,0
flask = false,1,0
-;wpn_bm16 = true,1,450,1
-;wpn_mp5 = true,1,500,2
-;wpn_sig552 = true,1,650,2
-;wpn_toz34 = true,1,450,2
-;wpn_ump45 = true,1,600,2
-cigarettes_lucky = true,1,100
-cigarettes_russian = true,1,80
-vodka = true,2,60
-bread = true,2,50
-energy_drink = true,2,50
-ration_ru = true,1,200
-beans = true,1,100
-tomato = true,1,60
-kolbasa = true,2,100
-batteries_dead = true,3,50
-detector_radio = true,1,300
-detector_geiger = true,1,250
-lead_box = true,1,200
-grooming = true,1,100
-charcoal = true,1,80
-cooking = true,1,150
-detector_simple = true,1,300,2
-bandage = true,2,50
-stimpack = true,2,100
-stimpack_army = true,2,150
-medkit = true,2,75
-medkit_army = true,1,100
-medkit_scientic = true,1,150,2
-antirad = true,1,125
-drug_anabiotic = true,1,175
-drug_psy_blockade = true,1,140
-grenade_f1 = true,1,170
-ps01 = true,1,150,1
-acog = true,1,150,1
+device_glowstick = false,1,0
+device_glowstick_orange = true,1,2
+device_glowstick_red = true,1,2
+device_glowstick_blue = true,1,2
+cigarettes_lucky = true,1,5
+cigarettes_lucky = true,1,5
+cigarettes_russian = true,1,2
+vodka = true,2,4
+bread = true,2,4
+energy_drink = true,2,4
+ration_ru = true,1,2
+beans = true,1,1
+tomato = true,1,1
+kolbasa = true,2,2
+batteries_dead = true,3,6
+detector_radio = true,1,10
+detector_geiger = true,1,10
+lead_box = true,1,10
+grooming = true,1,10
+charcoal = true,1,5
+cooking = true,1,10
+detector_simple = true,1,12,2
+bandage = true,2,2
+stimpack = true,2,4
+stimpack_army = true,2,5
+medkit = true,2,2
+medkit_army = true,1,4
+medkit_scientic = true,1,5,2
+antirad = true,1,6
+drug_anabiotic = true,1,4
+drug_psy_blockade = true,1,6
+grenade_f1 = true,1,10
+ps01 = true,1,4,1
+acog = true,1,4,1
[stalker_loadout]:shared
helm_resp = false,1,0
@@ -71,14 +71,15 @@ wpn_knife = false,1,0
stalker_patch = false,1,0
bolt = false,1,0
bread = false,1,0
-wpn_toz106 = true,1,150,1
-wpn_toz106_m1 = true,1,220,1
+wpn_toz106 = true,1,6,1
+wpn_toz106_m1 = true,1,6,1
;wpn_ak74_old = true,1,500,1
-wpn_ak74u_n1 = true,1,500,1
-wpn_walther_p99 = true,1,200
-wpn_vz61_scorpion = true,1,400
-wpn_remington700_bas = true,1,600,2
-wpn_mp153_bas = true,1,600,2
+wpn_ak74u_n1 = true,1,15,1
+wpn_walther_p99 = true,1,8
+wpn_vz61_scorpion = true,1,10
+wpn_remington700_bas = true,1,18,2
+wpn_mp153_bas = true,1,15,2
+wpn_m1a1 = true,1,15,2
[bandit_loadout]:shared
helm_cloth_mask = false,1,0
@@ -88,11 +89,11 @@ wpn_knife = false,1,0
bandit_patch = false,1,0
bolt_bullet = false,1,0
vodka = false,1,0
-wpn_ak74_n1 = true,1,550,1
-wpn_mp133_bas = false,1,0
-wpn_vz61_scorpion = true,1,400
-wpn_kar98_mod = true,1,500
-wpn_svd_m1 = true,1,600,1
+wpn_ak74_n1 = true,1,15,1
+wpn_mp133_bas = true,1,15
+wpn_vz61_scorpion = true,1,8
+wpn_kar98_mod = true,1,10
+wpn_svd_m1 = true,1,18,1
[ecolog_loadout]:shared
helm_resp = false,1,0
@@ -102,14 +103,14 @@ wpn_knife = false,1,0
ecolog_patch = false,1,0
bolt = false,1,0
antirad = false,1,0
-wpn_pp2000 = true,1,450,1
-wpn_kiparis = true,1,450,1
-wpn_vz61 = true,1,450,1
-wpn_ak74u_n1 = true,1,500,1
-wpn_kar98_mod = true,1,500
-wpn_vz61_scorpion = true,1,350
-wpn_remington700_bas = true,1,600,2
-wpn_mp153_bas = true,1,600,2
+wpn_pp2000 = true,1,12,1
+wpn_kiparis = true,1,12,1
+wpn_vz61 = true,1,12,1
+wpn_ak74u_n1 = true,1,15,1
+wpn_kar98_mod = true,1,10
+wpn_vz61_scorpion = true,1,8
+wpn_remington700_bas = true,1,15,2
+wpn_mp153_bas = true,1,15,2
[dolg_loadout]:shared
helm_resp = false,1,0
@@ -119,10 +120,10 @@ wpn_knife2 = false,1,0
dolg_patch = false,1,0
bolt_bullet = false,1,0
stimpack = false,1,0
-wpn_ak74u_n1 = true,1,500
-wpn_aks74 = true,1,550,1
-wpn_ak12_bas = true,1,600,1
-wpn_ak74_n = true,1,550,1
+wpn_ak74u_n1 = true,1,15
+wpn_aks74 = true,1,15,1
+wpn_ak12_bas = true,1,18,1
+wpn_ak74_n = true,1,15,1
[freedom_loadout]:shared
helm_resp = false,1,0
@@ -132,10 +133,10 @@ wpn_knife = false,1,0
freedom_patch = false,1,0
bolt_bullet = false,1,0
marijuana = false,1,0
-wpn_g36 = true,1,600,1
-wpn_l85 = true,1,650,1
-wpn_remington700_bas = true,1,600,2
-wpn_mp153_bas = true,1,600,2
+wpn_g36 = true,1,18,1
+wpn_l85 = true,1,18,1
+wpn_remington700_bas = true,1,15,2
+wpn_mp153_bas = true,1,15,2
[killer_loadout]:shared
helm_rp_bala = false,1,0
@@ -145,8 +146,8 @@ wpn_knife = false,1,0
killer_patch = false,1,0
bolt = false,1,0
swiss_knife = false,1,0
-wpn_m4_tac = true,1,650,1
-wpn_ak105 = true,1,650,1
+wpn_m4_tac = true,1,18,1
+wpn_ak105 = true,1,15,1
[army_loadout]:shared
helm_bandana = false,1,0
@@ -156,10 +157,10 @@ wpn_knife2 = false,1,0
army_patch = false,1,0
bolt_bullet = false,1,0
cigarettes_russian = false,1,0
-wpn_ak74u_n1 = true,1,550,1
-wpn_aks74 = true,1,600,1
-wpn_remington700_bas = true,1,600,2
-wpn_m4a1_siber = true,1,550,1
+wpn_ak74u_n1 = true,1,15,1
+wpn_aks74 = true,1,15,1
+wpn_remington700_bas = true,1,15,2
+wpn_m4a1_siber = true,1,18,1
[monolith_loadout]:shared
helm_resp = false,1,0
@@ -169,9 +170,9 @@ wpn_knife2 = false,1,0
monolith_patch = false,1,0
bolt = false,1,0
grenade_gd-05 = false,1,0
-wpn_ak12_custom = true,1,350,1
-wpn_ak12_bas = true,1,600,1
-wpn_ak74_n = true,1,550,1
+wpn_ak12_custom = true,1,18,1
+wpn_ak12_bas = true,1,18,1
+wpn_ak74_n = true,1,18,1
[csky_loadout]:shared
helm_cloth_mask = false,1,0
@@ -181,13 +182,13 @@ wpn_knife = false,1,0
csky_patch = false,1,0
bolt = false,1,0
batteries_dead = false,1,0
-wpn_sks_molot = true,1,350,1
-wpn_toz106 = true,1,150,1
-wpn_vityaz = true,1,400
-wpn_vz61_scorpion = true,1,400
-wpn_remington700_bas = true,1,600,2
-wpn_svd_m1 = true,1,600,1
-wpn_mp153_bas = true,1,600,2
+wpn_sks_molot = true,1,12,1
+wpn_toz106 = true,1,10,1
+wpn_vityaz = true,1,10
+wpn_vz61_scorpion = true,1,10
+wpn_remington700_bas = true,1,15,2
+wpn_svd_m1 = true,1,18,1
+wpn_mp153_bas = true,1,15,2
[renegade_loadout]:shared
helm_cloth_mask = false,1,0
@@ -197,10 +198,10 @@ wpn_knife = false,1,0
renegade_patch = false,1,0
bolt_bullet = false,1,0
vodka = false,1,0
-wpn_mp133 = true,1,550,1
-wpn_svd_m1 = true,1,600,2
-wpn_ak12_bas = true,1,600,1
-wpn_ak74_n = true,1,550,1
+wpn_mp133 = true,1,12,1
+wpn_svd_m1 = true,1,15,2
+wpn_ak12_bas = true,1,18,1
+wpn_ak74_n = true,1,18,1
[greh_loadout]:shared
helm_cloth_mask = false,1,0
@@ -210,7 +211,7 @@ wpn_knife = false,1,0
greh_patch = false,1,0
bolt = false,1,0
hide_pseudodog = false,1,0
-wpn_ak74u_n1 = true,1,500,1
+wpn_ak74u_n1 = true,1,15,1
[isg_loadout]:shared
helm_cloth_mask = false,1,0
@@ -222,9 +223,9 @@ bolt_bullet = false,1,0
cleaning_kit_u = false,1,0
grenade_gd-05 = false,1,0
wpn_ak74u_isg = false,1,0
-wpn_mp5sd = true,1,500,1
-wpn_p90 = true,1,750,1
-wpn_famas3 = true,1,600,1
+wpn_mp5sd = true,1,15,1
+wpn_p90 = true,1,15,1
+wpn_famas3 = true,1,18,1
[zombied_loadout]:shared,stalker_loadout
@@ -243,31 +244,31 @@ wpn_famas3 = true,1,600,1
;; ===========================< Money >=============================
[stalker_money]
-money = 1000
+money = 500
[bandit_money]
-money = 1000
+money = 500
[ecolog_money]
-money = 1600
+money = 500
[dolg_money]
-money = 1400
+money = 500
[freedom_money]
-money = 1400
+money = 1200
[killer_money]
-money = 2000
+money = 1000
[army_money]
money = 1200
[monolith_money]
-money = 1600
+money = 1500
[csky_money]
-money = 1400
+money = 500
[renegade_money]
money = 800
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 ceb8f5bc..0325ec7c 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
@@ -26,6 +26,12 @@
aim_hud_offset_pos_16x9 = -0.046212, 0.026708, -0.0585
aim_hud_offset_rot = 0.0225, 0.008, -0.135888
aim_hud_offset_rot_16x9 = 0.0225, 0.008, -0.135888
+
+![wpn_ak74u_tac_pka_hud]
+ aim_hud_offset_pos = -0.039867, 0.028554, -0.0585
+ aim_hud_offset_pos_16x9 = -0.039867, 0.028554, -0.0585
+ aim_hud_offset_rot = 0.022429, 0.011248, -0.135888
+ aim_hud_offset_rot_16x9 = 0.022429, 0.011248, -0.135888
![wpn_aks74_1p29]
position = -0.026, -0.175, 0
diff --git a/profiles/Default/modlist.txt b/profiles/Default/modlist.txt
index d50dbcc4..15cae85b 100644
--- a/profiles/Default/modlist.txt
+++ b/profiles/Default/modlist.txt
@@ -1,6 +1,7 @@
# This file was automatically generated by Mod Organizer.
-+bhsro_surgerykit
-Unmanaged_separator
+-[DEV] Brotherhood
+-[DEV] Backpack Drops
-[DEV] Weapon Repositions
-[DEV] EGUI Main Menu Replacer
-[DEV] INC - 91 PATCH - HUD - BHS Realistic Overhaul
@@ -31,16 +32,20 @@
+Beefs NVGs - Improved
+Shader Driven Scopes
+Enhanced Shaders and Color Grading
++Aydins Grass Tweaks - SSS Terrain LOD Compatiblity
++Aydin's Grass Tweaks
+Redone Radar and Red Forest
+Redone Limansk and Hospital
+Redone Pripyat and Juipiter
+Redone Collection
+Enhanced Graphical User Interface
++bhsro_surgerykit
+Body Health System Realistic Overhaul
+Groks Body Health System Redux
+Binocular Renaimation
-Last Load and Overrides_separator
+Usable Bar Doors
++Alternate Fake Start
+New Levels - UI Fixes
+New Levels
-Locations and Levels_separator
@@ -52,6 +57,7 @@
+Dismemberment
+Hollywood FX
+Visuals and Effects_separator
++Footsies
+Anomaly Footstep Redone
+Gear Rustle Redone
+Return Menu Music
diff --git a/profiles/Development/modlist.txt b/profiles/Development/modlist.txt
index 68cae380..f3352549 100644
--- a/profiles/Development/modlist.txt
+++ b/profiles/Development/modlist.txt
@@ -1,5 +1,7 @@
--bhsro_surgerykit
+# This file was automatically generated by Mod Organizer.
-Unmanaged_separator
++[DEV] Brotherhood
+-[DEV] Backpack Drops
-[DEV] Weapon Repositions
-[DEV] EGUI Main Menu Replacer
-[DEV] INC - 91 PATCH - HUD - BHS Realistic Overhaul
@@ -14,7 +16,7 @@
-[DEV] Body Health System Realistic Overhaul
-[DEV] Groks Body Health System Redux
-Divergent - Developer Workspace_separator
--[DEV] Configuration Files
++[DEV] Configuration Files
-Dvergent - Developer Addons_separator
-[OPTIONAL] Classic Radio
-[OPTIONAL] PDA Playlist Framework
@@ -30,16 +32,20 @@
-Beefs NVGs - Improved
-Shader Driven Scopes
-Enhanced Shaders and Color Grading
+-Aydins Grass Tweaks - SSS Terrain LOD Compatiblity
+-Aydin's Grass Tweaks
-Redone Radar and Red Forest
-Redone Limansk and Hospital
-Redone Pripyat and Juipiter
-Redone Collection
-Enhanced Graphical User Interface
+-bhsro_surgerykit
-Body Health System Realistic Overhaul
-Groks Body Health System Redux
-Binocular Renaimation
-Last Load and Overrides_separator
-Usable Bar Doors
+-Alternate Fake Start
-New Levels - UI Fixes
-New Levels
-Locations and Levels_separator
@@ -51,6 +57,7 @@
-Dismemberment
-Hollywood FX
-Visuals and Effects_separator
+-Footsies
-Anomaly Footstep Redone
-Gear Rustle Redone
-Return Menu Music